From 055f5e68a3b200a40a9572edd1c5b28a2ae29a9c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 22 Apr 2020 16:29:06 +0200 Subject: [PATCH 01/38] Add infra-keep-probing: yes option. Hosts that are down are probed more frequently. --- doc/example.conf.in | 3 + doc/unbound.conf.5.in | 6 + services/cache/infra.c | 28 +- services/cache/infra.h | 2 + util/config_file.c | 3 + util/config_file.h | 2 + util/configlexer.c | 4279 ++++++++++++++++++++-------------------- util/configlexer.lex | 1 + util/configparser.c | 3023 ++++++++++++++-------------- util/configparser.h | 560 +++--- util/configparser.y | 14 +- 11 files changed, 4001 insertions(+), 3920 deletions(-) diff --git a/doc/example.conf.in b/doc/example.conf.in index a1a687422..2e1db9181 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -188,6 +188,9 @@ server: # minimum wait time for responses, increase if uplink is long. In msec. # infra-cache-min-rtt: 50 + # enable to make server probe down hosts more frequently. + # infra-keep-probing: no + # the number of slabs to use for the Infrastructure cache. # the number of slabs must be a power of 2. # more slabs reduce lock contention, but fragment memory usage. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 37692db5e..e178238e4 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -376,6 +376,12 @@ Lower limit for dynamic retransmit timeout calculation in infrastructure cache. Default is 50 milliseconds. Increase this value if using forwarders needing more time to do recursive name resolution. .TP +.B infra\-keep\-probing: \fI +If enabled the server keeps probing hosts that are down, in the one probe +at a time regime. Default is no. Hosts that are down, eg. they did +not respond during the one probe at a time period, are marked as down and +it may take \fBinfra\-host\-ttl\fR time to get probed again. +.TP .B define\-tag: \fI<"list of tags"> Define the tags that can be used with local\-zone and access\-control. Enclose the list between quotes ("") and put spaces between tags. diff --git a/services/cache/infra.c b/services/cache/infra.c index c2484a9f1..2d16bcd6e 100644 --- a/services/cache/infra.c +++ b/services/cache/infra.c @@ -244,6 +244,7 @@ infra_create(struct config_file* cfg) return NULL; } infra->host_ttl = cfg->host_ttl; + infra->infra_keep_probing = cfg->infra_keep_probing; infra_dp_ratelimit = cfg->ratelimit; infra->domain_rates = slabhash_create(cfg->ratelimit_slabs, INFRA_HOST_STARTSIZE, cfg->ratelimit_size, @@ -297,6 +298,7 @@ infra_adjust(struct infra_cache* infra, struct config_file* cfg) if(!infra) return infra_create(cfg); infra->host_ttl = cfg->host_ttl; + infra->infra_keep_probing = cfg->infra_keep_probing; infra_dp_ratelimit = cfg->ratelimit; infra_ip_ratelimit = cfg->ip_ratelimit; maxmem = cfg->infra_cache_numhosts * (sizeof(struct infra_key)+ @@ -445,6 +447,7 @@ infra_host(struct infra_cache* infra, struct sockaddr_storage* addr, if(e && ((struct infra_data*)e->data)->ttl < timenow) { /* it expired, try to reuse existing entry */ int old = ((struct infra_data*)e->data)->rtt.rto; + time_t tprobe = ((struct infra_data*)e->data)->probedelay; uint8_t tA = ((struct infra_data*)e->data)->timeout_A; uint8_t tAAAA = ((struct infra_data*)e->data)->timeout_AAAA; uint8_t tother = ((struct infra_data*)e->data)->timeout_other; @@ -460,6 +463,7 @@ infra_host(struct infra_cache* infra, struct sockaddr_storage* addr, if(old >= USEFUL_SERVER_TOP_TIMEOUT) { ((struct infra_data*)e->data)->rtt.rto = USEFUL_SERVER_TOP_TIMEOUT; + ((struct infra_data*)e->data)->probedelay = tprobe; ((struct infra_data*)e->data)->timeout_A = tA; ((struct infra_data*)e->data)->timeout_AAAA = tAAAA; ((struct infra_data*)e->data)->timeout_other = tother; @@ -482,7 +486,8 @@ infra_host(struct infra_cache* infra, struct sockaddr_storage* addr, *edns_vs = data->edns_version; *edns_lame_known = data->edns_lame_known; *to = rtt_timeout(&data->rtt); - if(*to >= PROBE_MAXRTO && rtt_notimeout(&data->rtt)*4 <= *to) { + if(*to >= PROBE_MAXRTO && (infra->infra_keep_probing || + rtt_notimeout(&data->rtt)*4 <= *to)) { /* delay other queries, this is the probe query */ if(!wr) { lock_rw_unlock(&e->lock); @@ -566,18 +571,27 @@ infra_rtt_update(struct infra_cache* infra, struct sockaddr_storage* addr, struct lruhash_entry* e = infra_lookup_nottl(infra, addr, addrlen, nm, nmlen, 1); struct infra_data* data; - int needtoinsert = 0; + int needtoinsert = 0, expired = 0; int rto = 1; + time_t oldprobedelay = 0; if(!e) { if(!(e = new_entry(infra, addr, addrlen, nm, nmlen, timenow))) return 0; needtoinsert = 1; } else if(((struct infra_data*)e->data)->ttl < timenow) { + oldprobedelay = ((struct infra_data*)e->data)->probedelay; data_entry_init(infra, e, timenow); + expired = 1; } /* have an entry, update the rtt */ data = (struct infra_data*)e->data; if(roundtrip == -1) { + if(needtoinsert || expired) { + /* timeout on entry that has expired before the timer + * keep old timeout from the function caller */ + data->rtt.rto = orig_rtt; + data->probedelay = oldprobedelay; + } rtt_lost(&data->rtt, orig_rtt); if(qtype == LDNS_RR_TYPE_A) { if(data->timeout_A < TIMEOUT_COUNT_MAX) @@ -681,7 +695,12 @@ infra_get_lame_rtt(struct infra_cache* infra, return 0; host = (struct infra_data*)e->data; *rtt = rtt_unclamped(&host->rtt); - if(host->rtt.rto >= PROBE_MAXRTO && timenow < host->probedelay + if(host->rtt.rto >= PROBE_MAXRTO && timenow >= host->probedelay + && infra->infra_keep_probing) { + /* single probe, keep probing */ + if(*rtt >= USEFUL_SERVER_TOP_TIMEOUT) + *rtt = USEFUL_SERVER_TOP_TIMEOUT-1000; + } else if(host->rtt.rto >= PROBE_MAXRTO && timenow < host->probedelay && rtt_notimeout(&host->rtt)*4 <= host->rtt.rto) { /* single probe for this domain, and we are not probing */ /* unless the query type allows a probe to happen */ @@ -704,7 +723,8 @@ infra_get_lame_rtt(struct infra_cache* infra, /* see if this can be a re-probe of an unresponsive server */ /* minus 1000 because that is outside of the RTTBAND, so * blacklisted servers stay blacklisted if this is chosen */ - if(host->rtt.rto >= USEFUL_SERVER_TOP_TIMEOUT) { + if(host->rtt.rto >= USEFUL_SERVER_TOP_TIMEOUT || + infra->infra_keep_probing) { lock_rw_unlock(&e->lock); *rtt = USEFUL_SERVER_TOP_TIMEOUT-1000; *lame = 0; diff --git a/services/cache/infra.h b/services/cache/infra.h index e33f2a6c0..14f97c4c6 100644 --- a/services/cache/infra.h +++ b/services/cache/infra.h @@ -114,6 +114,8 @@ struct infra_cache { struct slabhash* hosts; /** TTL value for host information, in seconds */ int host_ttl; + /** the hosts that are down are kept probed for recovery */ + int infra_keep_probing; /** hash table with query rates per name: rate_key, rate_data */ struct slabhash* domain_rates; /** ratelimit settings for domains, struct domain_limit_data */ diff --git a/util/config_file.c b/util/config_file.c index 2a809f875..7ae0f384b 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -162,6 +162,7 @@ config_create(void) cfg->infra_cache_slabs = 4; cfg->infra_cache_numhosts = 10000; cfg->infra_cache_min_rtt = 50; + cfg->infra_keep_probing = 0; cfg->delay_close = 0; if(!(cfg->outgoing_avail_ports = (int*)calloc(65536, sizeof(int)))) goto error_exit; @@ -544,6 +545,7 @@ int config_set_option(struct config_file* cfg, const char* opt, IS_NUMBER_OR_ZERO; cfg->infra_cache_min_rtt = atoi(val); RTT_MIN_TIMEOUT=cfg->infra_cache_min_rtt; } + else S_YNO("infra-keep-probing:", infra_keep_probing) else S_NUMBER_OR_ZERO("infra-host-ttl:", host_ttl) else S_POW2("infra-cache-slabs:", infra_cache_slabs) else S_SIZET_NONZERO("infra-cache-numhosts:", infra_cache_numhosts) @@ -940,6 +942,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_DEC(opt, "infra-host-ttl", host_ttl) else O_DEC(opt, "infra-cache-slabs", infra_cache_slabs) else O_DEC(opt, "infra-cache-min-rtt", infra_cache_min_rtt) + else O_YNO(opt, "infra-keep-probing", infra_keep_probing) else O_MEM(opt, "infra-cache-numhosts", infra_cache_numhosts) else O_UNS(opt, "delay-close", delay_close) else O_YNO(opt, "do-ip4", do_ip4) diff --git a/util/config_file.h b/util/config_file.h index cc3fe4ae1..f422bf75a 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -166,6 +166,8 @@ struct config_file { size_t infra_cache_numhosts; /** min value for infra cache rtt */ int infra_cache_min_rtt; + /** keep probing hosts that are down */ + int infra_keep_probing; /** delay close of udp-timeouted ports, if 0 no delayclose. in msec */ int delay_close; diff --git a/util/configlexer.c b/util/configlexer.c index 09fd4b003..279dee6d2 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 312 -#define YY_END_OF_BUFFER 313 +#define YY_NUM_RULES 313 +#define YY_END_OF_BUFFER 314 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,345 +363,347 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3071] = +static const flex_int16_t yy_accept[3084] = { 0, - 1, 1, 294, 294, 298, 298, 302, 302, 306, 306, - 1, 1, 313, 310, 1, 292, 292, 311, 2, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 294, 295, 295, 296, 311, 298, 299, 299, - 300, 311, 305, 302, 303, 303, 304, 311, 306, 307, - 307, 308, 311, 309, 293, 2, 297, 311, 309, 310, - 0, 1, 2, 2, 2, 2, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 1, 1, 295, 295, 299, 299, 303, 303, 307, 307, + 1, 1, 314, 311, 1, 293, 293, 312, 2, 312, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 295, 296, 296, 297, 312, 299, 300, 300, + 301, 312, 306, 303, 304, 304, 305, 312, 307, 308, + 308, 309, 312, 310, 294, 2, 298, 312, 310, 311, + 0, 1, 2, 2, 2, 2, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 294, 0, 298, 0, 305, 0, 302, 306, 0, 309, - 0, 2, 2, 309, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 295, 0, 299, 0, 306, 0, 303, 307, 0, 310, + 0, 2, 2, 310, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 309, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 310, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 115, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 123, 310, 310, 310, - 310, 310, 310, 310, 309, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 116, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 124, 311, 311, 311, + 311, 311, 311, 311, 310, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 99, 310, 310, 310, 310, 310, 310, 8, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 116, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 128, 310, 309, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 100, 311, 311, 311, 311, 311, 311, 8, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 117, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 129, 311, 310, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 287, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 288, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 309, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 57, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 225, 310, 14, 15, 310, - 19, 18, 310, 310, 310, 310, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 310, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 57, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 226, 311, 14, 15, 311, + 19, 18, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 122, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 209, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 3, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 123, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 210, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 3, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 309, 310, 310, 310, 310, 310, 310, 310, 281, 310, - 310, 280, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 301, 310, 310, - 310, 310, 310, 310, 310, 56, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 310, 311, 311, 311, 311, 311, 311, 311, 282, + 311, 311, 281, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 302, 311, + 311, 311, 311, 311, 311, 311, 311, 56, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 60, 310, 255, 310, 310, 310, 310, 310, - 310, 310, 310, 288, 289, 310, 310, 310, 310, 310, - 61, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 119, 310, 310, - 310, 310, 310, 310, 310, 310, 198, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 21, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 60, 311, 256, 311, 311, 311, + 311, 311, 311, 311, 311, 289, 290, 311, 311, 311, + 311, 311, 61, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 120, + 311, 311, 311, 311, 311, 311, 311, 311, 199, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 21, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 147, 310, 310, 301, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 97, 310, 310, 310, 310, 310, 310, 310, 263, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 170, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 146, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 148, 311, + 311, 302, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 98, 311, 311, 311, 311, 311, 311, 311, + 264, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 171, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 147, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 96, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 32, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 33, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 58, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 121, 310, 310, 310, 310, 310, 114, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 97, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 32, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 33, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 58, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 122, 311, 311, 311, 311, 311, 115, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 59, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 228, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 171, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 47, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 59, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 229, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 172, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 47, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 246, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 51, 310, 52, 310, 310, 310, 310, - 310, 100, 310, 101, 310, 310, 310, 310, 98, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 7, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 218, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 247, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 51, 311, 52, + 311, 311, 311, 311, 311, 101, 311, 102, 311, 311, + 311, 311, 99, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 7, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 149, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 229, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 48, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 190, 310, 189, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 16, 17, 310, 310, + 219, 311, 311, 311, 311, 150, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 230, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 48, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 191, 311, 190, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 62, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 197, 310, 310, 310, 310, 310, 310, - 103, 310, 102, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 181, 310, 310, 310, 310, 310, - 310, 310, 310, 129, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 81, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 311, 16, 17, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 62, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 198, 311, + 311, 311, 311, 311, 311, 104, 311, 103, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 182, + 311, 311, 311, 311, 311, 311, 311, 311, 130, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 82, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 85, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 55, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 184, 185, 310, - 310, 310, 257, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 6, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 261, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 86, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 55, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 185, 186, 311, 311, 311, 258, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 6, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 282, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 42, 310, 310, 310, 310, - 44, 310, 310, 310, 310, 310, 310, 310, 310, 45, - 310, 310, 310, 310, 310, 310, 310, 310, 177, 310, - 310, 310, 124, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 202, 310, 178, 310, 310, 310, 215, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 46, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 126, + 311, 311, 311, 262, 311, 311, 311, 311, 311, 311, + 283, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 42, 311, 311, 311, 311, 44, 311, 311, 311, + 311, 311, 311, 311, 311, 45, 311, 311, 311, 311, + 311, 311, 311, 311, 178, 311, 311, 311, 125, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 203, + 311, 179, 311, 311, 311, 216, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 46, 311, 311, 311, 311, - 108, 310, 109, 310, 310, 310, 107, 310, 310, 310, - 310, 310, 310, 310, 310, 144, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 245, 310, 310, - 310, 310, 310, 310, 310, 310, 179, 310, 310, 310, - 310, 310, 182, 310, 188, 310, 310, 310, 310, 310, - 214, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 95, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 120, 310, 310, 310, 310, 310, - 310, 53, 310, 310, 310, 26, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 127, 109, 311, 110, 311, + 311, 311, 108, 311, 311, 311, 311, 311, 311, 311, + 311, 145, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 246, 311, 311, 311, 311, 311, + 311, 311, 311, 180, 311, 311, 311, 311, 311, 183, + 311, 189, 311, 311, 311, 311, 311, 215, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 96, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 121, 311, 311, 311, 311, 311, 311, 53, 311, - 310, 310, 310, 310, 310, 20, 310, 310, 310, 310, - 310, 310, 27, 36, 310, 154, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 70, 72, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 265, 310, 310, 310, 226, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 110, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 143, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 311, 311, 26, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 20, 311, 311, 311, 311, 311, 311, 27, + 36, 311, 155, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 70, 72, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 266, 311, 311, + 311, 227, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 111, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 144, 311, 311, 311, 311, 311, 311, - 310, 310, 276, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 148, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 208, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 285, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 165, 310, 310, - 310, 310, 310, 310, 310, 310, 104, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 160, 310, 172, 310, - 310, 310, 310, 310, 132, 310, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 277, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 149, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 209, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 286, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 166, 311, 311, 311, 311, + 311, 311, 311, 311, 105, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 161, 311, 173, 311, 311, 311, - 91, 310, 310, 310, 310, 200, 310, 310, 310, 310, - 310, 310, 216, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 237, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 125, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 164, - 310, 310, 310, 310, 310, 73, 74, 310, 310, 310, - 310, 310, 54, 310, 310, 310, 310, 310, 80, 173, - 310, 191, 310, 219, 310, 310, 183, 258, 310, 310, - 310, 310, 310, 66, 310, 175, 310, 310, 310, 310, - 310, 9, 310, 310, 310, 94, 310, 310, 310, 310, + 311, 311, 133, 311, 311, 311, 311, 311, 92, 311, + 311, 311, 311, 201, 311, 311, 311, 311, 311, 311, + 217, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 238, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 126, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 165, 311, 311, + 311, 311, 311, 73, 311, 74, 311, 311, 311, 311, + 311, 54, 311, 311, 311, 311, 311, 81, 174, 311, + 192, 311, 220, 311, 311, 184, 259, 311, 311, 311, + 311, 311, 66, 311, 176, 311, 311, 311, 311, 311, - 250, 310, 310, 310, 310, 199, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 163, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 150, 310, 264, 310, - 310, 310, 310, 236, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 210, 310, 310, 310, 310, - 256, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 9, 311, 311, 311, 95, 311, 311, 311, 311, 251, + 311, 311, 311, 311, 200, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 164, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 151, 311, 265, 311, 311, + 311, 311, 237, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 211, 311, 311, 311, 311, 257, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 279, 310, 174, 310, 310, - 310, 310, 310, 310, 310, 65, 67, 310, 310, 310, - 310, 310, 310, 310, 93, 310, 310, 310, 310, 248, - 310, 310, 310, 310, 260, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 204, 34, 28, 30, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 35, - 310, 29, 31, 310, 310, 310, 310, 310, 310, 310, - 310, 90, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 206, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 280, 311, 175, 311, 311, + 311, 311, 311, 311, 311, 65, 67, 311, 311, 311, + 311, 311, 311, 311, 94, 311, 311, 311, 311, 249, + 311, 311, 311, 311, 261, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 205, 34, 28, 30, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 35, + 311, 29, 31, 311, 311, 311, 311, 311, 311, 311, + 311, 91, 311, 311, 311, 311, 311, 311, 311, 311, - 203, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 64, 310, - 310, 127, 310, 111, 310, 310, 310, 310, 310, 310, - 310, 310, 145, 13, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 274, 310, 277, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 12, 310, 310, 22, - 310, 310, 310, 254, 310, 310, 310, 310, 262, 310, - 310, 310, 68, 310, 212, 310, 310, 310, 310, 205, - 310, 310, 63, 310, 310, 310, 310, 23, 310, 43, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 207, + 204, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 64, 311, + 311, 128, 311, 112, 311, 311, 311, 311, 311, 311, + 311, 311, 146, 13, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 275, 311, 278, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 12, 311, 311, + 22, 311, 311, 311, 255, 311, 311, 311, 311, 263, + 311, 311, 311, 68, 311, 213, 311, 311, 311, 311, + 206, 311, 311, 63, 311, 311, 311, 311, 23, 311, - 310, 310, 159, 158, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 207, 201, 310, 217, 310, 310, 266, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 75, 310, 310, - 310, 249, 310, 310, 310, 310, 187, 310, 310, 310, - 310, 211, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 283, 284, 156, 310, 310, 69, 310, 310, 310, - 310, 166, 310, 310, 105, 106, 310, 310, 310, 310, - 151, 310, 153, 310, 192, 310, 310, 310, 310, 157, + 43, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 160, 159, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 208, 202, 311, 218, 311, 311, + 267, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 75, 311, + 311, 311, 311, 250, 311, 311, 311, 311, 188, 311, + 311, 311, 311, 212, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 284, 285, 157, 311, 311, 69, 311, + 311, 311, 311, 167, 311, 311, 106, 107, 311, 311, - 310, 310, 220, 310, 310, 310, 310, 310, 310, 310, - 134, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 227, 310, 310, 310, 310, 310, 310, 310, - 24, 310, 259, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 193, 310, 310, 247, 310, 278, - 310, 186, 310, 310, 310, 310, 49, 310, 310, 310, - 310, 4, 310, 310, 310, 310, 118, 133, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 223, 37, 38, 310, - 310, 310, 310, 310, 310, 310, 267, 310, 310, 310, + 311, 311, 152, 311, 154, 311, 193, 311, 311, 311, + 311, 158, 311, 311, 221, 311, 311, 311, 311, 311, + 311, 311, 135, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 228, 311, 311, 311, 311, 311, + 311, 311, 24, 311, 260, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 79, 194, 311, 311, + 248, 311, 279, 311, 187, 311, 311, 311, 311, 49, + 311, 311, 311, 311, 4, 311, 311, 311, 311, 119, + 134, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 224, - 310, 310, 310, 235, 310, 310, 310, 310, 310, 310, - 310, 196, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 78, 310, 50, 253, 310, 224, 310, 310, 310, - 310, 11, 310, 310, 310, 310, 310, 310, 117, 310, - 310, 310, 310, 194, 82, 310, 40, 310, 310, 310, - 310, 310, 310, 310, 310, 162, 310, 310, 310, 310, - 310, 136, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 234, 310, 310, 310, 310, 130, 310, 310, 112, - 113, 310, 310, 310, 84, 88, 83, 310, 76, 310, - 310, 310, 310, 310, 10, 310, 310, 310, 251, 286, + 37, 38, 311, 311, 311, 311, 311, 311, 311, 268, + 311, 311, 311, 311, 311, 311, 236, 311, 311, 311, + 311, 311, 311, 311, 197, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 78, 311, 50, 254, 311, 225, + 311, 311, 311, 311, 11, 311, 311, 311, 311, 311, + 311, 118, 311, 311, 311, 311, 195, 83, 311, 40, + 311, 311, 311, 311, 311, 311, 311, 311, 163, 311, + 311, 311, 311, 311, 137, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 235, 311, 311, 311, 311, 131, + 311, 311, 113, 114, 311, 311, 311, 85, 89, 84, - 310, 310, 310, 310, 291, 39, 310, 310, 310, 310, - 310, 161, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 89, 87, 310, 77, 275, 310, - 310, 310, 310, 310, 310, 310, 180, 310, 310, 310, - 310, 310, 195, 310, 310, 310, 310, 310, 310, 310, - 310, 152, 71, 310, 310, 310, 310, 310, 268, 310, - 310, 310, 310, 310, 310, 310, 231, 310, 310, 230, - 131, 310, 86, 137, 138, 141, 142, 139, 140, 79, - 310, 252, 310, 310, 310, 310, 155, 310, 310, 310, + 311, 76, 311, 311, 311, 311, 311, 10, 311, 311, + 311, 252, 287, 311, 311, 311, 311, 292, 39, 311, + 311, 311, 311, 311, 162, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 90, 88, 311, + 77, 276, 311, 311, 311, 311, 311, 311, 311, 181, + 311, 311, 311, 311, 311, 196, 311, 311, 311, 311, + 311, 311, 311, 311, 153, 71, 311, 311, 311, 311, + 311, 269, 311, 311, 311, 311, 311, 311, 311, 232, + 311, 311, 231, 132, 311, 87, 138, 139, 142, 143, - 310, 310, 222, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 168, 167, 41, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 92, 310, 221, - 310, 244, 272, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 5, 310, 310, 213, 310, - 310, 273, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 232, 25, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 233, 310, 310, 310, 135, + 140, 141, 80, 311, 253, 311, 311, 311, 311, 156, + 311, 311, 311, 311, 311, 223, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 169, 168, 41, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 93, 311, 222, 311, 245, 273, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 5, 311, + 311, 214, 311, 311, 274, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 233, 25, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 169, 310, - 176, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 269, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 290, 310, - 310, 240, 310, 310, 310, 310, 310, 270, 310, 310, - 310, 310, 310, 310, 271, 310, 310, 310, 238, 310, - 241, 242, 310, 310, 310, 310, 310, 239, 243, 0 + 311, 311, 311, 311, 311, 311, 311, 311, 234, 311, + 311, 311, 136, 311, 311, 311, 311, 311, 311, 311, + 311, 170, 311, 177, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 270, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 291, 311, 311, 241, 311, 311, 311, 311, 311, + 271, 311, 311, 311, 311, 311, 311, 272, 311, 311, + 311, 239, 311, 242, 243, 311, 311, 311, 311, 311, + 240, 244, 0 } ; static const YY_CHAR yy_ec[256] = @@ -744,15 +746,15 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3085] = +static const flex_int16_t yy_base[3098] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 2197, 2057, 81, 5988, 5988, 5988, 96, 52, + 90, 112, 2237, 1788, 81, 6010, 6010, 6010, 96, 52, 106, 63, 107, 111, 70, 128, 130, 133, 57, 88, 76, 135, 141, 117, 148, 145, 160, 164, 185, 177, - 189, 152, 1959, 5988, 5988, 5988, 107, 1846, 5988, 5988, - 5988, 165, 1569, 1315, 5988, 5988, 5988, 211, 1269, 5988, - 5988, 5988, 180, 948, 5988, 217, 5988, 221, 168, 767, + 189, 152, 1748, 6010, 6010, 6010, 107, 1464, 6010, 6010, + 6010, 165, 1434, 1375, 6010, 6010, 6010, 211, 1257, 6010, + 6010, 6010, 180, 948, 6010, 217, 6010, 221, 168, 767, 225, 231, 0, 237, 0, 0, 226, 231, 85, 180, 114, 238, 239, 156, 234, 206, 240, 232, 200, 132, 253, 244, 245, 248, 256, 257, 264, 271, 249, 277, @@ -781,9 +783,9 @@ static const flex_int16_t yy_base[3085] = 701, 702, 704, 714, 715, 716, 724, 737, 727, 738, 728, 734, 742, 743, 707, 750, 746, 744, 753, 754, - 756, 757, 761, 768, 769, 5988, 760, 773, 771, 774, + 756, 757, 761, 768, 769, 6010, 760, 773, 771, 774, 782, 783, 784, 789, 785, 763, 796, 800, 797, 803, - 825, 791, 801, 804, 814, 795, 5988, 815, 807, 849, + 825, 791, 801, 804, 814, 795, 6010, 815, 807, 849, 817, 827, 839, 831, 835, 823, 830, 850, 843, 853, 840, 854, 855, 873, 857, 858, 870, 860, 871, 872, 885, 881, 883, 884, 886, 894, 889, 891, 892, 901, @@ -793,644 +795,648 @@ static const flex_int16_t yy_base[3085] = 945, 953, 943, 954, 941, 955, 958, 963, 960, 964, 966, 974, 969, 970, 972, 975, 976, 978, 982, 983, 984, 986, 988, 992, 989, 999, 990, 997, 1004, 1006, - 5988, 1007, 1009, 1011, 1012, 1013, 1010, 5988, 1014, 1015, + 6010, 1007, 1009, 1011, 1012, 1013, 1010, 6010, 1014, 1015, 1017, 1026, 1016, 1029, 1036, 1024, 1037, 1039, 1040, 1043, 1050, 1027, 1046, 1057, 1052, 1055, 1056, 1053, 1059, 1062, - 1061, 1064, 1065, 1068, 1070, 1088, 5988, 1071, 1077, 1080, + 1061, 1064, 1065, 1068, 1070, 1088, 6010, 1071, 1077, 1080, 1079, 1085, 1082, 1090, 1097, 1100, 1103, 1106, 1116, 1093, 1117, 1111, 1113, 1072, 1118, 1123, 1125, 1126, 1127, 1128, - 1129, 1130, 1132, 1131, 1137, 1139, 5988, 1144, 1154, 1155, + 1129, 1130, 1132, 1131, 1137, 1139, 6010, 1144, 1154, 1155, 1136, 1146, 1156, 1157, 1159, 1160, 1162, 1163, 1165, 1164, 1169, 1179, 1170, 1183, 1180, 1181, 1185, 1186, 1188, 1187, 1189, 1191, 1203, 1196, 1195, 1211, 1206, 1213, 1215, 1222, 1204, 1217, 1218, 1219, 1221, 1224, 1226, 1228, 1230, 1232, - 1239, 1237, 1234, 1235, 1242, 1250, 1243, 1245, 1253, 1246, - 1254, 1257, 1247, 1266, 1267, 1260, 1258, 5988, 1276, 1268, - 1278, 1279, 1280, 1284, 1286, 1282, 1288, 813, 1289, 1290, - 1292, 1294, 1299, 1296, 1297, 1300, 1304, 1307, 1311, 1318, - 1322, 1323, 1324, 1310, 1325, 1333, 1330, 1337, 1338, 1340, - 1348, 1336, 1343, 1346, 1350, 1334, 1352, 1354, 1355, 1357, + 1239, 1237, 1234, 1235, 1242, 1250, 1243, 1245, 1253, 1254, + 1246, 1255, 1258, 1263, 1266, 1267, 1260, 6010, 1276, 1269, + 1277, 1279, 1282, 1285, 1284, 1286, 1290, 813, 1291, 1292, + 1293, 1295, 1298, 1296, 1300, 1301, 1299, 1309, 1306, 1314, + 1321, 1320, 1322, 1324, 1325, 1332, 1328, 1335, 1331, 1336, + 1344, 1337, 1340, 1346, 1354, 1330, 1347, 1352, 1355, 1358, - 1360, 1368, 1369, 1362, 1372, 1379, 1380, 1364, 1382, 1376, - 1383, 1314, 1370, 1387, 1390, 1391, 1398, 1393, 1394, 1399, - 1400, 1401, 1402, 1396, 1407, 1410, 1406, 1412, 1413, 1416, - 1423, 1418, 1417, 1425, 1426, 1428, 1429, 1437, 1430, 1438, - 1439, 1441, 1440, 1448, 1446, 1449, 1450, 1457, 1455, 1459, - 1456, 1465, 1467, 1469, 1471, 1472, 1473, 1475, 1474, 1478, - 1484, 1477, 1483, 1489, 1493, 1490, 1495, 1496, 1499, 1500, - 5988, 1501, 1508, 1503, 1506, 1512, 1513, 1514, 1521, 1517, - 1519, 1516, 1518, 1522, 1544, 5988, 1530, 5988, 5988, 1529, - 5988, 5988, 1527, 1531, 1535, 1548, 1539, 1554, 1547, 1541, + 1360, 1361, 1368, 1369, 1371, 1378, 1373, 1345, 1380, 1383, + 1384, 1385, 1387, 1388, 1389, 1390, 1397, 1392, 1395, 1394, + 1398, 1393, 1399, 1400, 1401, 1420, 1407, 1415, 1417, 1419, + 1422, 1423, 1424, 1425, 1428, 1429, 1430, 1431, 1432, 1449, + 1437, 1439, 1444, 1452, 1451, 1442, 1455, 1459, 1460, 1462, + 1470, 1471, 1454, 1473, 1474, 1463, 1478, 1479, 1481, 1482, + 1484, 1489, 1490, 1492, 1494, 1493, 1496, 1497, 1501, 1502, + 6010, 1504, 1515, 1505, 1512, 1510, 1513, 1517, 1524, 1519, + 1521, 1526, 1520, 1529, 1550, 6010, 1531, 6010, 6010, 1530, + 6010, 6010, 1532, 1533, 1536, 1553, 1542, 1560, 1537, 1540, - 1557, 1550, 1567, 1572, 1528, 1560, 1562, 1568, 1575, 1583, - 1585, 1586, 1588, 1594, 1596, 1597, 1599, 1606, 1607, 1565, - 1589, 1598, 1610, 1612, 1611, 1613, 1617, 1615, 1620, 1616, - 1623, 1618, 1628, 1633, 1625, 1642, 5988, 1639, 1643, 1651, - 1647, 1654, 1646, 1650, 1653, 1627, 1658, 1655, 1659, 1660, - 1662, 1664, 1667, 1670, 1668, 1678, 1671, 5988, 1673, 1675, - 1674, 1680, 1686, 1688, 1687, 1689, 1681, 1693, 1694, 1705, - 1696, 1700, 1701, 1708, 1709, 1710, 5988, 1712, 1719, 1711, - 1722, 1716, 1723, 1724, 1725, 1726, 1729, 1728, 1730, 1731, - 1735, 1742, 1739, 1740, 1741, 1745, 1750, 1753, 1757, 1764, + 1551, 1534, 1573, 1574, 1563, 1556, 1564, 1566, 1580, 1585, + 1587, 1588, 1590, 1595, 1596, 1598, 1599, 1601, 1608, 1609, + 1604, 1610, 1613, 1612, 1614, 1571, 1618, 1615, 1620, 1621, + 1623, 1624, 1625, 1637, 1635, 1627, 1644, 6010, 1645, 1648, + 1652, 1649, 1657, 1653, 1655, 1658, 1660, 1663, 1664, 1665, + 1668, 1667, 1669, 1671, 1675, 1677, 1682, 1678, 6010, 1680, + 1681, 1679, 1686, 1687, 1692, 1693, 1694, 1699, 1700, 1701, + 1711, 1706, 1702, 1704, 1712, 1713, 1715, 6010, 1720, 1728, + 1719, 1725, 1729, 1716, 1731, 1732, 1733, 1734, 1735, 1738, + 1739, 1741, 1752, 1747, 1749, 1744, 1745, 1762, 1755, 1765, - 1755, 1761, 1758, 1765, 1766, 1768, 1769, 1771, 1780, 1782, - 1779, 1783, 1772, 1787, 1795, 1794, 1784, 1785, 1796, 1799, - 1806, 1808, 1809, 1800, 1804, 1816, 1811, 1814, 1815, 1819, - 1822, 1823, 1825, 1826, 1828, 1832, 1830, 1834, 5988, 1836, - 1837, 5988, 1839, 1840, 1862, 1841, 1843, 1848, 1845, 1849, - 1854, 1855, 1866, 1864, 1868, 1885, 1872, 1877, 1875, 1887, - 1876, 1889, 1891, 1895, 1896, 1897, 1904, 1906, 1857, 1912, - 1914, 1899, 1901, 1909, 1928, 1911, 1913, 1917, 1925, 1932, - 1919, 1922, 1926, 1938, 1939, 1944, 1941, 5988, 1952, 1950, - 1949, 1951, 1961, 1960, 1956, 5988, 1962, 1963, 1966, 1973, + 1767, 1764, 1771, 1772, 1773, 1774, 1775, 1776, 1778, 1783, + 1785, 1782, 1793, 1786, 1805, 1807, 1800, 1789, 1790, 1809, + 1791, 1815, 1817, 1818, 1813, 1819, 1826, 1803, 1825, 1822, + 1828, 1830, 1827, 1834, 1835, 1837, 1841, 1839, 1843, 6010, + 1845, 1846, 6010, 1847, 1849, 1871, 1850, 1848, 1853, 1855, + 1856, 1873, 1857, 1864, 1858, 1865, 1889, 1884, 1886, 1885, + 1891, 1893, 1894, 1895, 1897, 1901, 1904, 1913, 1914, 1912, + 1921, 1923, 1903, 1919, 1922, 1941, 1920, 1924, 1930, 1927, + 1933, 1926, 1928, 1937, 1935, 1943, 1946, 1948, 6010, 1956, + 1963, 1953, 1959, 1957, 1971, 1968, 1958, 6010, 1866, 1969, - 1969, 1970, 1974, 1915, 1976, 1977, 1980, 1984, 1985, 1981, - 1983, 2001, 5988, 1986, 5988, 1991, 1988, 1996, 1998, 1999, - 2003, 2004, 2006, 5988, 5988, 2014, 2007, 2020, 2028, 2010, - 5988, 2013, 2031, 2032, 2024, 2026, 2034, 2035, 2037, 2039, - 2038, 2047, 2042, 2049, 2044, 2045, 2046, 5988, 2058, 2048, - 2063, 2065, 2056, 2066, 2073, 2064, 5988, 2074, 2067, 2075, - 2085, 2087, 2082, 2077, 2089, 2093, 2084, 2088, 2090, 2096, - 2098, 2103, 2106, 2104, 2108, 2112, 2120, 5988, 2101, 2105, - 2121, 2118, 2127, 2122, 2124, 2116, 2128, 2129, 2135, 2130, - 2136, 2137, 2139, 2146, 2148, 2144, 2145, 2152, 2143, 2153, + 1974, 1981, 1976, 1979, 1982, 1980, 1983, 1984, 1989, 1986, + 1993, 1988, 1991, 2005, 6010, 1996, 6010, 1992, 2003, 2007, + 2010, 2009, 2013, 2011, 2014, 6010, 6010, 2015, 2021, 2017, + 2031, 2022, 6010, 2029, 2038, 2039, 2033, 2034, 2041, 2042, + 2044, 2046, 2049, 2053, 2050, 2057, 2052, 2055, 2054, 6010, + 2063, 2056, 2069, 2071, 2065, 2073, 2075, 2072, 6010, 2079, + 2082, 2083, 2092, 2088, 2090, 2091, 2093, 2094, 2097, 2100, + 2101, 2102, 2103, 2110, 2112, 2108, 2117, 2118, 2120, 6010, + 2107, 2111, 2130, 2127, 2129, 2126, 2133, 2134, 2136, 2137, + 2138, 1628, 2139, 2144, 2143, 2151, 2153, 2146, 2149, 2159, - 2156, 2161, 2155, 2160, 2163, 2164, 5988, 2165, 2171, 124, - 2166, 2172, 2174, 2176, 2179, 2178, 2175, 2191, 2196, 2192, - 2198, 2194, 2193, 2201, 2203, 2202, 2204, 2205, 2206, 2209, - 5988, 2211, 2213, 2214, 2216, 2218, 2219, 2229, 5988, 2225, - 2230, 2237, 2233, 2238, 2241, 2242, 2246, 2247, 2249, 2250, - 2253, 2251, 2255, 5988, 2260, 2263, 2265, 2257, 2266, 2272, - 2273, 2275, 2278, 2267, 2279, 2280, 2281, 2284, 2283, 2285, - 2287, 2292, 2289, 2294, 2297, 2299, 5988, 2307, 2309, 2303, - 2300, 2310, 2312, 2319, 2316, 2322, 2321, 2325, 2337, 2327, - 2329, 2339, 2330, 2343, 2332, 2353, 2344, 2352, 2354, 2351, + 2148, 2150, 2160, 2169, 2163, 2166, 2168, 2170, 6010, 2171, + 2174, 124, 2177, 2178, 2176, 2179, 2180, 2183, 2185, 2192, + 2200, 2196, 2197, 2198, 2202, 2204, 2206, 2207, 2208, 2210, + 2209, 2212, 6010, 2214, 2215, 2219, 2220, 2226, 2221, 2228, + 6010, 2238, 2225, 2246, 2236, 2234, 2249, 2240, 2250, 2251, + 2253, 2254, 2256, 2255, 2257, 6010, 2263, 2264, 2265, 2267, + 2272, 2271, 2274, 2278, 2279, 2280, 2284, 2282, 2281, 2286, + 2285, 2289, 2290, 2295, 2291, 2292, 2300, 2302, 6010, 2309, + 2305, 2307, 2313, 2314, 2316, 2317, 2324, 2322, 2325, 2327, + 2331, 2342, 2335, 2328, 2344, 2345, 2349, 2334, 2358, 2357, - 2358, 2361, 2362, 2363, 2365, 2367, 2368, 2369, 2370, 2377, - 2384, 2375, 2385, 2386, 2390, 2396, 2392, 5988, 2397, 2398, - 2399, 2405, 2416, 2409, 2407, 2419, 2408, 2411, 2412, 2421, - 2423, 2432, 2427, 2425, 2430, 2434, 2435, 2436, 2438, 2441, - 2442, 2451, 2443, 2453, 2220, 5988, 2376, 2454, 2446, 2448, - 2461, 2455, 2463, 2467, 2464, 2470, 2471, 2473, 2474, 2476, - 2477, 2478, 2480, 2482, 2481, 5988, 2485, 2486, 2490, 2493, - 2498, 2496, 2500, 2506, 2508, 2510, 2502, 2512, 2514, 2513, - 5988, 2522, 2523, 2519, 2531, 2527, 2528, 2529, 2533, 2530, - 5988, 2534, 2535, 2543, 2544, 2539, 5988, 2548, 2541, 2546, + 2359, 2366, 2353, 2368, 2370, 2336, 2360, 2363, 2371, 2376, + 2379, 2377, 2386, 2388, 2384, 2383, 2385, 2396, 2409, 2400, + 6010, 2398, 2404, 2390, 2412, 2416, 2413, 2392, 2418, 2417, + 2420, 2424, 2425, 2426, 2433, 2434, 2428, 2432, 2437, 2438, + 2430, 2441, 2445, 2448, 2450, 2447, 2455, 2456, 6010, 2457, + 2461, 2463, 2464, 2468, 2451, 2475, 2476, 2478, 2465, 2469, + 2480, 2472, 2481, 2485, 2488, 2487, 2489, 2494, 6010, 2495, + 2499, 2497, 2501, 2503, 2509, 2506, 2513, 2519, 2516, 2504, + 2523, 2500, 2524, 6010, 2531, 2532, 2528, 2536, 2534, 2527, + 2538, 2540, 2535, 6010, 2541, 2542, 2550, 2551, 2547, 6010, - 2551, 2553, 2552, 2556, 2549, 2559, 2560, 2568, 2565, 2562, - 2571, 5988, 2572, 2580, 2575, 2577, 2581, 2582, 2583, 2587, - 2592, 2588, 2594, 5988, 2601, 2599, 2604, 2612, 2607, 2609, - 2610, 2613, 2614, 2616, 2617, 5988, 2619, 2620, 2622, 2623, - 2625, 2627, 2630, 2642, 2631, 2634, 2641, 2639, 2644, 2646, - 2647, 2650, 2651, 2648, 2658, 2660, 2662, 2663, 2664, 2668, - 2676, 2678, 2674, 2679, 5988, 2682, 2683, 2684, 2671, 2686, - 2688, 2690, 2691, 2694, 2696, 2701, 2695, 2698, 2708, 2711, - 2699, 2712, 2715, 2716, 2718, 2720, 2721, 2722, 2723, 2730, - 2726, 2728, 2738, 2729, 2733, 2743, 2736, 2744, 2745, 2746, + 2554, 2552, 2556, 2557, 2559, 2560, 2562, 2564, 2558, 2567, + 2570, 2580, 2568, 2577, 6010, 2571, 2587, 2574, 2588, 2593, + 2589, 2594, 2595, 2599, 2596, 2600, 6010, 2608, 2611, 2605, + 2618, 2606, 2619, 2620, 2621, 2622, 2623, 2624, 6010, 2627, + 2629, 2630, 2631, 2633, 2634, 2635, 2642, 2639, 2643, 2646, + 2649, 2650, 2653, 2656, 2659, 2658, 2655, 2667, 2668, 2670, + 2671, 2657, 2674, 2681, 2686, 2688, 2683, 2689, 6010, 2692, + 2693, 2687, 2694, 2695, 2698, 2699, 2700, 2702, 2703, 2705, + 2704, 2707, 2720, 2729, 2715, 2716, 2708, 2721, 2724, 2725, + 2731, 2732, 2736, 2743, 2734, 2738, 2747, 2742, 2745, 2755, - 2747, 2749, 2751, 2752, 2756, 2750, 2758, 2768, 2769, 2771, - 2760, 2772, 2776, 2777, 5988, 2780, 2782, 2778, 2784, 2785, - 2791, 2792, 2794, 2795, 2786, 2800, 2802, 2803, 2808, 2809, - 2811, 2818, 2814, 5988, 2815, 5988, 2816, 2817, 2819, 2829, - 2821, 5988, 2825, 5988, 2832, 2839, 2826, 2830, 5988, 2840, - 2834, 2836, 2847, 2844, 2849, 2850, 2851, 2852, 2857, 2853, - 2855, 2860, 2861, 2863, 2865, 2867, 2871, 2868, 2878, 2880, - 2872, 2881, 2874, 2887, 2889, 2888, 2890, 5988, 2900, 2891, - 2894, 2897, 2901, 2902, 2903, 2905, 2906, 2911, 2912, 2913, - 2914, 2920, 2919, 2929, 2925, 2936, 5988, 2928, 2933, 2935, + 2744, 2746, 2748, 2753, 2756, 2757, 2758, 2759, 2766, 2762, + 2776, 2780, 2777, 2781, 2771, 2783, 2786, 2787, 6010, 2790, + 2791, 2788, 2794, 2795, 2798, 2800, 2807, 2802, 2809, 2810, + 2812, 2819, 2804, 2813, 2818, 2826, 2828, 6010, 2821, 6010, + 2825, 2829, 2832, 2836, 2835, 6010, 2841, 6010, 2842, 2844, + 2837, 2847, 6010, 2848, 2849, 2850, 2856, 2852, 2854, 2858, + 2860, 2862, 2870, 2864, 2861, 2866, 2868, 2882, 2872, 2874, + 2880, 2884, 2888, 2890, 2878, 2895, 2889, 2891, 2897, 2900, + 2903, 6010, 2905, 2906, 2907, 2909, 2912, 2910, 2913, 2915, + 2916, 2917, 2918, 2925, 2922, 2931, 2934, 2938, 2923, 2946, - 2937, 5988, 2939, 2938, 2940, 2946, 2949, 2948, 2950, 2952, - 2956, 2958, 2951, 2961, 2959, 2968, 2969, 5988, 2974, 2975, - 2960, 2978, 2982, 2984, 2986, 2990, 2998, 2994, 2993, 2977, - 2996, 2997, 3000, 3007, 3008, 3004, 3011, 3010, 3013, 3020, - 3016, 3012, 3014, 3022, 3023, 3024, 3027, 3028, 3031, 3026, - 3029, 3036, 3032, 5988, 3044, 3035, 3040, 3047, 3051, 3054, - 3052, 3056, 3058, 3057, 3062, 3061, 3059, 5988, 3063, 5988, - 3060, 3077, 3065, 3082, 3079, 3071, 3084, 3093, 3086, 3088, - 3090, 3096, 3094, 3098, 3097, 3100, 3103, 3102, 3110, 3109, - 3105, 3116, 3117, 3118, 3120, 3121, 5988, 5988, 3122, 3123, + 6010, 2941, 2945, 2947, 2948, 6010, 2951, 2949, 2952, 2957, + 2950, 2959, 2960, 2962, 2967, 2969, 2963, 2976, 2978, 2980, + 2971, 6010, 2961, 2984, 2986, 2988, 2993, 2992, 2995, 2998, + 3006, 3002, 3001, 3003, 3004, 3005, 3009, 3016, 3019, 3015, + 3024, 3008, 3017, 3027, 3028, 3029, 3030, 3032, 3034, 3035, + 3039, 3040, 3042, 3037, 3038, 3041, 3044, 3043, 6010, 3046, + 3055, 3060, 3062, 3056, 3059, 3066, 3067, 3068, 3069, 3072, + 3074, 3076, 6010, 3078, 6010, 3070, 3088, 3081, 3097, 3082, + 3087, 3099, 3101, 3103, 3089, 3104, 3106, 3107, 3112, 3110, + 3113, 3115, 3114, 3131, 3118, 3120, 3121, 3129, 3122, 3130, - 3126, 3124, 3128, 3134, 3130, 3142, 3138, 3144, 3146, 3148, - 3156, 5988, 3149, 3153, 3152, 3159, 3171, 3157, 3161, 3176, - 3172, 3179, 3178, 5988, 3169, 3180, 3187, 3182, 3183, 3191, - 5988, 3188, 5988, 3190, 3193, 3197, 3198, 3200, 3201, 3202, - 3203, 3211, 3221, 3224, 3206, 3223, 3208, 3220, 3225, 3226, - 3233, 3229, 3230, 3231, 5988, 3235, 3236, 3237, 3199, 3240, - 3242, 3243, 3248, 5988, 3250, 3254, 3255, 3257, 3258, 3260, - 3261, 3263, 3264, 3266, 3262, 3267, 3279, 3268, 3272, 3282, - 3284, 3286, 3292, 5988, 3293, 3285, 3301, 3297, 3299, 3300, - 3303, 3304, 3305, 3307, 3308, 3309, 3310, 3316, 3315, 3312, + 3133, 6010, 6010, 3135, 3137, 3138, 3141, 3142, 3143, 3149, + 3144, 3154, 3152, 3158, 3162, 3167, 6010, 3163, 3168, 3165, + 3169, 3178, 3171, 3176, 3188, 3181, 3190, 3185, 6010, 3173, + 3192, 3200, 3195, 3196, 3203, 6010, 3201, 6010, 3198, 3202, + 3204, 3207, 3210, 3211, 3213, 3214, 3219, 3226, 3231, 3222, + 3230, 3232, 3215, 3234, 3236, 3243, 3238, 3239, 3241, 6010, + 3245, 3242, 3246, 3251, 3258, 3261, 3248, 3247, 6010, 3254, + 3265, 3267, 3268, 3271, 3273, 3274, 3275, 3277, 3279, 3276, + 3278, 3287, 3284, 3283, 3293, 3303, 3294, 3305, 6010, 3306, + 3300, 3313, 3315, 3308, 3310, 3316, 3317, 3318, 3321, 3323, - 3313, 3318, 3329, 3331, 3332, 3321, 3339, 3323, 3337, 3342, - 3340, 3343, 3348, 3349, 3352, 3354, 3346, 3368, 3369, 3355, - 3357, 3372, 3359, 3379, 3374, 5988, 3381, 3365, 3386, 3382, - 3384, 3389, 3390, 3398, 3396, 3385, 3393, 3400, 3397, 5988, - 3412, 3402, 3399, 3403, 3404, 3424, 3420, 3421, 3422, 3426, - 3423, 3427, 3430, 3431, 3432, 3435, 3436, 5988, 5988, 3438, - 3439, 3442, 5988, 3445, 3440, 3452, 3448, 3444, 3455, 3459, - 3458, 3457, 3462, 3460, 3468, 5988, 3469, 3477, 3472, 3473, - 3481, 3482, 3479, 3485, 3487, 3488, 3491, 3489, 3494, 3493, - 3495, 3498, 3506, 3509, 3502, 3504, 3512, 5988, 3505, 3507, + 3322, 3324, 3326, 3328, 3325, 3335, 3329, 3342, 3331, 3345, + 3351, 3352, 3332, 3348, 3355, 3356, 3359, 3358, 3362, 3365, + 3369, 3366, 3378, 3379, 3370, 3373, 3382, 3383, 3390, 3385, + 6010, 3395, 3375, 3398, 3396, 3397, 3402, 3403, 3405, 3406, + 3407, 3408, 3409, 3416, 3411, 6010, 3423, 3414, 3413, 3424, + 3430, 3438, 3433, 3434, 3436, 3440, 3437, 3443, 3441, 3446, + 3447, 3450, 3451, 6010, 6010, 3453, 3455, 3456, 6010, 3458, + 3460, 3470, 3473, 3462, 3459, 3285, 3466, 3469, 3476, 3478, + 3482, 6010, 3479, 3491, 3486, 3487, 3496, 3499, 3489, 3492, + 3500, 3501, 3503, 3502, 3505, 3507, 3510, 3511, 3519, 3523, - 3513, 3515, 3517, 3520, 5988, 3523, 3524, 3527, 3530, 3538, - 3540, 3534, 3547, 3531, 3541, 3543, 3548, 3549, 3551, 3560, - 3557, 3556, 3559, 3563, 3566, 5988, 3565, 3567, 3568, 3576, - 5988, 3580, 3587, 3590, 3591, 3573, 3577, 3589, 3598, 5988, - 3593, 3596, 3594, 3595, 3603, 3602, 3610, 3607, 5988, 3609, - 3608, 3611, 5988, 3612, 3613, 3618, 3623, 3625, 3632, 3628, - 3630, 3631, 3629, 5988, 3636, 5988, 3639, 3640, 3643, 5988, - 3646, 3647, 3648, 3650, 3651, 3656, 3657, 3655, 3663, 3664, - 3666, 3667, 3665, 3670, 3674, 3671, 3672, 3676, 3677, 5988, - 3678, 3680, 3687, 3692, 3688, 3695, 3682, 3699, 3700, 5988, + 3515, 3516, 3520, 6010, 3518, 3526, 3527, 3529, 3530, 3537, + 6010, 3534, 3539, 3541, 3533, 3545, 3546, 3551, 3555, 3556, + 3557, 3559, 3558, 3560, 3561, 3570, 3568, 3569, 3566, 3572, + 3575, 6010, 3576, 3582, 3584, 3587, 6010, 3589, 3596, 3597, + 3600, 3592, 3601, 3599, 3608, 6010, 3603, 3605, 3607, 3610, + 3620, 3612, 3622, 3613, 6010, 3617, 3621, 3623, 6010, 3624, + 3630, 3633, 3637, 3626, 3644, 3639, 3642, 3643, 3641, 6010, + 3648, 6010, 3651, 3652, 3655, 6010, 3657, 3658, 3660, 3662, + 3659, 3666, 3667, 3674, 3663, 3675, 3676, 3677, 3678, 3680, + 3687, 3679, 3686, 3688, 3689, 6010, 3690, 3692, 3698, 3699, - 5988, 3702, 5988, 3705, 3706, 3709, 5988, 3711, 3710, 3718, - 3714, 3715, 3717, 3721, 3727, 5988, 3723, 3728, 3732, 3729, - 3734, 3737, 3739, 3740, 3736, 3741, 3744, 5988, 3745, 3742, - 3747, 3743, 3753, 3757, 3759, 3758, 5988, 3766, 3767, 3768, - 3770, 3772, 5988, 3774, 5988, 3776, 3780, 3781, 3782, 3777, - 5988, 3785, 3788, 3791, 3792, 3795, 3797, 3798, 3801, 3804, - 3805, 3813, 3809, 3808, 3811, 5988, 3810, 3812, 3816, 3823, - 3817, 3820, 3833, 3830, 3834, 3828, 3831, 3838, 3841, 3842, - 3844, 3848, 3849, 3850, 5988, 3851, 3856, 3852, 3865, 3861, - 3855, 5988, 3862, 3866, 3872, 5988, 3869, 3875, 3876, 3879, + 3704, 3693, 3701, 3709, 3708, 6010, 6010, 3712, 6010, 3715, + 3716, 3717, 6010, 3719, 3723, 3726, 3724, 3727, 3729, 3736, + 3730, 6010, 3739, 3725, 3742, 3740, 3744, 3747, 3748, 3751, + 3750, 3752, 3753, 3755, 6010, 3756, 3757, 3764, 3754, 3767, + 3770, 3775, 3771, 6010, 3777, 3779, 3783, 3784, 3785, 6010, + 3786, 6010, 3788, 3790, 3793, 3794, 3797, 6010, 3798, 3803, + 3808, 3802, 3804, 3810, 3813, 3814, 3811, 3815, 3826, 3822, + 3821, 3823, 6010, 3824, 3825, 3833, 3836, 3830, 3838, 3846, + 3842, 3848, 3841, 3844, 3854, 3849, 3855, 3862, 3857, 3864, + 3865, 6010, 3867, 3868, 3851, 3881, 3873, 3874, 6010, 3877, - 3880, 3881, 3884, 3883, 3886, 5988, 3890, 3891, 3887, 3888, - 3889, 3896, 5988, 5988, 3904, 5988, 3906, 3892, 3909, 3908, - 3911, 3913, 3917, 3918, 3920, 3914, 3921, 3929, 3928, 3938, - 3945, 3946, 3944, 3935, 3930, 5988, 5988, 3949, 3951, 3953, - 3955, 3956, 3958, 3942, 3965, 3963, 3971, 3974, 3964, 3967, - 5988, 3975, 3976, 3978, 5988, 3980, 3981, 3983, 3984, 3985, - 3989, 3987, 3988, 3992, 3991, 3994, 3998, 3995, 4004, 4000, - 4011, 4001, 4012, 4014, 4015, 4019, 5988, 4016, 4021, 4022, - 4025, 4028, 4030, 4029, 4031, 4032, 5988, 4036, 4035, 4039, - 4044, 4045, 4047, 4037, 4055, 4062, 4056, 4063, 4064, 4058, + 3885, 3887, 6010, 3871, 3878, 3888, 3894, 3891, 3895, 3896, + 3900, 3901, 6010, 3899, 3903, 3902, 3905, 3918, 3908, 6010, + 6010, 3919, 6010, 3920, 3904, 3906, 3924, 3907, 3928, 3930, + 3931, 3934, 3935, 3939, 3936, 3944, 3951, 3952, 3953, 3955, + 3948, 3949, 6010, 6010, 3960, 3961, 3963, 3965, 3966, 3968, + 3970, 3977, 3973, 3974, 3982, 3979, 3989, 6010, 3986, 3985, + 3991, 6010, 3992, 3993, 3996, 3994, 3997, 4000, 3999, 4001, + 4003, 4004, 4007, 4010, 4012, 4011, 4013, 4020, 4022, 4023, + 4024, 4025, 4030, 6010, 4034, 4031, 4033, 4035, 4036, 4038, + 4040, 4044, 4045, 6010, 4047, 4049, 4051, 4046, 4053, 4055, - 4069, 4072, 5988, 4073, 4046, 4074, 4075, 4080, 4082, 4083, - 4085, 4086, 4089, 4090, 4091, 4093, 4098, 4095, 4099, 4100, - 4101, 5988, 4106, 4113, 4103, 4116, 4107, 4117, 4118, 4126, - 4129, 4119, 4124, 4130, 4132, 5988, 4133, 4134, 4135, 4136, - 4144, 4137, 4141, 4145, 4147, 5988, 4152, 4148, 4154, 4155, - 4158, 4159, 4163, 4164, 4166, 4170, 4178, 5988, 4167, 4180, - 4182, 4174, 4171, 4173, 4183, 4186, 5988, 4190, 4192, 4191, - 4207, 4193, 4208, 4200, 4204, 4203, 4210, 4213, 4211, 4215, - 4217, 4218, 4219, 4231, 4235, 4230, 5988, 4221, 5988, 4236, - 4237, 4246, 4242, 4232, 5988, 4239, 4244, 4248, 4249, 4250, + 4063, 4070, 4071, 4075, 4065, 4072, 4076, 4078, 4082, 4079, + 6010, 4083, 4086, 4089, 4091, 4093, 4095, 4096, 4098, 4099, + 4101, 4104, 4102, 4111, 4113, 4108, 4105, 4116, 4118, 6010, + 4120, 4124, 4121, 4127, 4128, 4129, 4131, 4132, 4139, 4136, + 4141, 4142, 4144, 6010, 4145, 4147, 4149, 4150, 4152, 4153, + 4157, 4158, 4159, 6010, 4167, 4160, 4168, 4163, 4169, 4171, + 4176, 4178, 4181, 4182, 4183, 6010, 4185, 4188, 4191, 4192, + 4194, 4195, 4199, 4198, 6010, 4200, 4206, 4208, 4215, 4210, + 4218, 4214, 4220, 4213, 4221, 4226, 4227, 4228, 4230, 4232, + 4233, 4246, 4248, 4245, 6010, 4235, 6010, 4243, 4250, 4259, - 5988, 4253, 4256, 4258, 4257, 5988, 4263, 4262, 4261, 4268, - 4271, 4274, 5988, 4277, 4279, 4278, 4290, 4291, 4287, 4288, - 4292, 4289, 4294, 4295, 4296, 4304, 4299, 4300, 5988, 4303, - 4306, 4311, 4312, 4315, 4316, 4318, 4320, 4321, 5988, 4323, - 4325, 4326, 4327, 4329, 4330, 4332, 4344, 4342, 4331, 5988, - 4335, 4347, 4359, 4354, 4355, 5988, 5988, 4356, 4339, 4358, - 4343, 4363, 5988, 4367, 4366, 4365, 4373, 4374, 5988, 5988, - 4376, 5988, 4368, 5988, 4378, 4379, 5988, 5988, 4380, 4381, - 4382, 4384, 4391, 5988, 4394, 5988, 4402, 4397, 4388, 4399, - 4400, 5988, 4401, 4403, 4409, 5988, 4410, 4412, 4411, 4413, + 4256, 4244, 6010, 4254, 4258, 4261, 4262, 4263, 6010, 4267, + 4268, 4271, 4269, 6010, 4273, 4275, 4278, 4282, 4288, 4289, + 6010, 4292, 4293, 4295, 4303, 4305, 4302, 4304, 4306, 4308, + 4309, 4310, 4311, 4319, 4314, 4316, 6010, 4322, 4324, 4331, + 4332, 4325, 4315, 4336, 4339, 4333, 6010, 4342, 4341, 4343, + 4344, 4345, 4348, 4350, 4357, 4353, 4352, 6010, 4356, 4360, + 4373, 4354, 4283, 6010, 4366, 6010, 4364, 4376, 4371, 4369, + 4379, 6010, 4381, 4388, 4384, 4387, 4383, 6010, 6010, 4390, + 6010, 4391, 6010, 4393, 4394, 6010, 6010, 4397, 4398, 4399, + 4400, 4412, 6010, 4414, 6010, 4421, 4416, 4403, 4401, 4420, - 5988, 4417, 4422, 4414, 4418, 5988, 4423, 4427, 4430, 4431, - 4432, 4434, 4438, 4437, 4442, 4443, 4445, 4444, 4447, 4454, - 4458, 4460, 4462, 4463, 4448, 4465, 4467, 4471, 4469, 4473, - 4474, 4476, 4478, 4479, 4483, 4487, 4480, 4484, 4488, 4489, - 4490, 4497, 4493, 4499, 4504, 4500, 4505, 4506, 4507, 4508, - 4511, 4514, 4512, 4518, 4522, 5988, 4516, 4517, 4523, 4524, - 4528, 4530, 4536, 4544, 4548, 4549, 5988, 4551, 5988, 4553, - 4538, 4529, 4545, 5988, 4555, 4558, 4557, 4560, 4559, 4561, - 4563, 4562, 4566, 4567, 4569, 5988, 4572, 4573, 4574, 4578, - 5988, 4587, 4589, 4586, 4590, 4591, 4592, 4593, 4594, 4597, + 6010, 4408, 4406, 4429, 6010, 4422, 4432, 4430, 4434, 6010, + 4436, 4437, 4433, 4438, 6010, 4441, 4444, 4445, 4439, 4446, + 4453, 4459, 4451, 4454, 4460, 4462, 4463, 4464, 4471, 4474, + 4476, 4478, 4479, 4466, 4480, 4481, 4486, 4488, 4489, 4490, + 4492, 4494, 4495, 4497, 4499, 4502, 4503, 4504, 4505, 4506, + 4507, 4509, 4516, 4519, 4521, 4520, 4522, 4524, 4523, 4525, + 4527, 4531, 4533, 4534, 6010, 4532, 4535, 4538, 4541, 4545, + 4551, 4553, 4555, 4563, 4564, 6010, 4566, 6010, 4568, 4552, + 4560, 4572, 6010, 4573, 4574, 4575, 4576, 4577, 4578, 4579, + 4580, 4583, 4584, 4587, 6010, 4590, 4582, 4585, 4606, 6010, - 4599, 4601, 4603, 4615, 4605, 4606, 4610, 4614, 4616, 4617, - 4620, 4622, 4627, 4628, 4632, 5988, 4633, 5988, 4634, 4635, - 4638, 4639, 4640, 4641, 4644, 5988, 5988, 4642, 4646, 4648, - 4651, 4653, 4656, 4660, 5988, 4657, 4665, 4668, 4670, 5988, - 4658, 4674, 4675, 4677, 5988, 4678, 4679, 4680, 4682, 4685, - 4687, 4691, 4689, 4692, 4693, 4700, 5988, 5988, 5988, 5988, - 4701, 4697, 4707, 4703, 4709, 4711, 4712, 4714, 4710, 5988, - 4718, 5988, 5988, 4723, 4724, 4726, 4727, 4730, 4715, 4733, - 4731, 5988, 4735, 4736, 4743, 4737, 4745, 4747, 4749, 4753, - 4751, 4754, 4761, 4757, 4759, 4763, 4765, 4767, 4774, 5988, + 4599, 4610, 4595, 4603, 4607, 4611, 4612, 4615, 4616, 4617, + 4619, 4623, 4631, 4620, 4624, 4627, 4628, 4629, 4635, 4637, + 4640, 4641, 4648, 4649, 4653, 6010, 4644, 6010, 4650, 4654, + 4656, 4658, 4660, 4661, 4664, 6010, 6010, 4662, 4666, 4671, + 4672, 4667, 4675, 4676, 6010, 4677, 4684, 4690, 4686, 6010, + 4679, 4691, 4693, 4696, 6010, 4697, 4698, 4700, 4702, 4703, + 4706, 4710, 4708, 4712, 4714, 4719, 6010, 6010, 6010, 6010, + 4720, 4716, 4724, 4727, 4729, 4725, 4730, 4732, 4733, 6010, + 4736, 6010, 6010, 4741, 4744, 4737, 4745, 4747, 4743, 4752, + 4756, 6010, 4753, 4754, 4758, 4757, 4766, 4770, 4760, 4771, - 5988, 4764, 4776, 4768, 4785, 4781, 4782, 4789, 4788, 4790, - 4791, 4793, 4794, 4780, 4803, 4804, 4805, 4799, 5988, 4807, - 4806, 5988, 4813, 5988, 4814, 4815, 4816, 4817, 4818, 4822, - 4823, 4826, 5988, 5988, 4821, 4828, 4832, 4837, 4833, 4829, - 4839, 4842, 4843, 5988, 4844, 5988, 4845, 4846, 4856, 4847, - 4863, 4864, 4866, 4868, 4853, 4869, 5988, 4870, 4871, 5988, - 4873, 4875, 4876, 5988, 4880, 4878, 4883, 4886, 5988, 4888, - 4890, 4892, 5988, 4899, 5988, 4893, 4895, 4902, 4907, 5988, - 4903, 4904, 5988, 4909, 4911, 4912, 4916, 5988, 4917, 5988, - 4918, 4920, 4921, 4925, 4926, 4928, 4930, 4931, 4932, 4939, + 4773, 4774, 4781, 4777, 4778, 4780, 4783, 4785, 4787, 6010, + 6010, 4789, 4794, 4796, 4804, 4800, 4801, 4813, 4808, 4809, + 4810, 4811, 4815, 4797, 4822, 4827, 4820, 4817, 6010, 4828, + 4831, 6010, 4824, 6010, 4830, 4832, 4838, 4839, 4840, 4841, + 4842, 4844, 6010, 6010, 4845, 4846, 4848, 4855, 4851, 4857, + 4859, 4847, 4861, 4863, 6010, 4865, 6010, 4869, 4870, 4872, + 4873, 4881, 4883, 4884, 4886, 4879, 4888, 6010, 4890, 4891, + 6010, 4892, 4894, 4895, 6010, 4900, 4897, 4903, 4906, 6010, + 4912, 4909, 4914, 6010, 4917, 6010, 4907, 4918, 4920, 4930, + 6010, 4921, 4925, 6010, 4934, 4936, 4928, 4937, 6010, 4922, - 4937, 4940, 5988, 5988, 4948, 4934, 4945, 4950, 4952, 4959, - 4951, 4956, 4955, 5988, 5988, 4961, 5988, 4963, 4964, 5988, - 4962, 4969, 4968, 4973, 4974, 4975, 4977, 4980, 4982, 4990, - 4983, 4981, 4994, 5004, 4988, 5006, 5008, 5010, 5012, 5014, - 5016, 4984, 4999, 5017, 5018, 5020, 5021, 5988, 5023, 5025, - 5024, 5988, 5030, 5026, 5035, 5031, 5988, 5038, 5039, 5044, - 5045, 5988, 5046, 5050, 5047, 5052, 5055, 5063, 5056, 5058, - 5068, 5988, 5988, 5988, 5060, 5074, 5988, 5076, 5066, 5059, - 5071, 5988, 5077, 5078, 5988, 5988, 5079, 5082, 5081, 5093, - 5988, 5083, 5988, 5085, 5988, 5092, 5094, 5102, 5096, 5988, + 6010, 4938, 4943, 4944, 4947, 4939, 4949, 4951, 4952, 4953, + 4961, 4957, 4959, 6010, 6010, 4966, 4962, 4968, 4969, 4971, + 4978, 4973, 4975, 4981, 6010, 6010, 4982, 6010, 4976, 4983, + 6010, 4974, 4990, 4991, 4992, 4994, 4995, 4996, 5001, 5002, + 5003, 5004, 5005, 5011, 5023, 5007, 5021, 5027, 5029, 5031, + 5033, 5025, 5035, 5036, 5013, 5037, 5038, 5042, 6010, 5044, + 5048, 5049, 5045, 6010, 5051, 5053, 5055, 5059, 6010, 5066, + 5061, 5067, 5068, 6010, 5057, 5072, 5069, 5074, 5078, 5085, + 5081, 5080, 5082, 6010, 6010, 6010, 5087, 5091, 6010, 5096, + 5088, 5097, 5098, 6010, 5099, 5100, 6010, 6010, 5101, 5104, - 5107, 5109, 5988, 5115, 5117, 5119, 5111, 5088, 5121, 5122, - 5988, 5129, 5125, 5126, 5133, 5124, 5128, 5134, 5135, 5143, - 5136, 5145, 5988, 5146, 5147, 5151, 5154, 5138, 5148, 5158, - 5988, 5160, 5988, 5162, 5164, 5165, 5167, 5166, 5168, 5171, - 5180, 5170, 5173, 5174, 5988, 5184, 5189, 5988, 5181, 5988, - 5191, 5988, 5192, 5194, 5195, 5198, 5988, 5200, 5186, 5197, - 5204, 5988, 5212, 5201, 5205, 5217, 5988, 5988, 5207, 5225, - 5209, 5218, 5222, 5229, 5226, 5231, 5232, 5233, 5234, 5241, - 5236, 5237, 5238, 5245, 5248, 5252, 5988, 5988, 5988, 5247, - 5256, 5263, 5261, 5262, 5270, 5266, 5988, 5267, 5268, 5269, + 5103, 5111, 6010, 5106, 6010, 5107, 6010, 5109, 5110, 5119, + 5121, 6010, 5124, 5131, 6010, 5134, 5137, 5139, 5140, 5125, + 5127, 5142, 6010, 5150, 5143, 5151, 5153, 5141, 5154, 5155, + 5158, 5163, 5161, 5165, 6010, 5162, 5167, 5168, 5169, 5171, + 5174, 5177, 6010, 5179, 6010, 5180, 5181, 5183, 5182, 5184, + 5185, 5188, 5198, 5192, 5202, 5195, 6010, 6010, 5206, 5208, + 6010, 5199, 6010, 5210, 6010, 5211, 5212, 5213, 5216, 6010, + 5223, 5215, 5217, 5219, 6010, 5224, 5230, 5226, 5232, 6010, + 6010, 5233, 5242, 5234, 5237, 5247, 5249, 5241, 5251, 5243, + 5255, 5252, 5262, 5257, 5263, 5258, 5266, 5268, 5273, 6010, - 5277, 5274, 5279, 5988, 5275, 5280, 5281, 5282, 5286, 5283, - 5290, 5988, 5294, 5297, 5300, 5289, 5304, 5308, 5311, 5313, - 5314, 5988, 5316, 5988, 5988, 5301, 5988, 5317, 5318, 5321, - 5322, 5988, 5325, 5327, 5326, 5328, 5330, 5332, 5988, 5342, - 5333, 5335, 5344, 5988, 5988, 5348, 5988, 5351, 5352, 5345, - 5361, 5356, 5358, 5363, 5360, 5988, 5364, 5367, 5369, 5370, - 5371, 5988, 5372, 5373, 5375, 5376, 5379, 5378, 5381, 5383, - 5385, 5988, 5386, 5388, 5406, 5402, 5988, 5389, 5401, 5988, - 5988, 5411, 5413, 5334, 5988, 5988, 5988, 5416, 5988, 5418, - 5422, 5426, 5430, 5421, 5988, 5432, 5429, 5434, 5988, 5988, + 6010, 6010, 5267, 5260, 5283, 5282, 5284, 5291, 5286, 6010, + 5288, 5289, 5290, 5298, 5295, 5297, 6010, 5299, 5300, 5301, + 5302, 5306, 5303, 5307, 6010, 5320, 5324, 5325, 5314, 5327, + 5334, 5336, 5338, 5339, 6010, 5341, 6010, 6010, 5310, 6010, + 5321, 5331, 5342, 5345, 6010, 5348, 5349, 5350, 5308, 5352, + 5355, 6010, 5362, 5357, 5359, 5360, 6010, 6010, 5367, 6010, + 5369, 5371, 5358, 5379, 5374, 5375, 5381, 5382, 6010, 5384, + 5385, 5388, 5389, 5390, 6010, 5391, 5392, 5394, 5395, 5398, + 5397, 5400, 5402, 5403, 6010, 5407, 5406, 5425, 5422, 6010, + 5409, 5420, 6010, 6010, 5431, 5435, 5424, 6010, 6010, 6010, - 5433, 5435, 5436, 5438, 5988, 5988, 5439, 5442, 5440, 5443, - 5445, 5988, 5450, 5454, 5456, 5459, 5462, 5451, 5465, 5467, - 5475, 5477, 5472, 5473, 5478, 5480, 5481, 5482, 5484, 5493, - 5489, 5491, 5503, 5500, 5988, 5988, 5507, 5988, 5988, 5509, - 5511, 5513, 5515, 5517, 5519, 5521, 5988, 5522, 5524, 5525, - 5393, 5526, 5988, 5528, 5530, 5527, 5532, 5492, 5535, 5533, - 5538, 5988, 5988, 5539, 5540, 5541, 5549, 5544, 5988, 5551, - 5558, 5555, 5556, 5553, 5559, 5560, 5988, 5564, 5565, 5988, - 5988, 5563, 5988, 5988, 5988, 5988, 5988, 5988, 5988, 5988, - 5568, 5988, 5566, 5581, 5583, 5585, 5988, 5573, 5586, 5494, + 5437, 6010, 5439, 5443, 5447, 5451, 5442, 6010, 5453, 5432, + 5454, 6010, 6010, 5455, 5456, 5457, 5459, 6010, 6010, 5460, + 5463, 5461, 5464, 5466, 6010, 5469, 5471, 5477, 5483, 5489, + 5479, 5467, 5484, 5492, 5501, 5474, 5490, 5497, 5498, 5502, + 5500, 5509, 5510, 5506, 5514, 5516, 5517, 6010, 6010, 5521, + 6010, 6010, 5524, 5526, 5528, 5530, 5532, 5534, 5536, 6010, + 5537, 5539, 5540, 5541, 5542, 6010, 5544, 5548, 5543, 5551, + 5545, 5554, 5550, 5560, 6010, 6010, 5552, 5566, 5556, 5567, + 5561, 6010, 5571, 5578, 5573, 5575, 5576, 5581, 5577, 6010, + 5583, 5585, 6010, 6010, 5586, 6010, 6010, 6010, 6010, 6010, - 5587, 5575, 5988, 5588, 5590, 5592, 5098, 5591, 5593, 5599, - 5598, 5600, 5603, 5602, 5605, 5604, 5609, 5608, 5610, 5623, - 5988, 5988, 5988, 5622, 5614, 5616, 5624, 5626, 5631, 5638, - 5640, 5635, 5641, 5642, 5643, 5644, 5646, 5647, 5656, 5651, - 5652, 5653, 5655, 5660, 5657, 5663, 5667, 5988, 5668, 5988, - 5669, 5988, 5988, 5674, 5676, 5670, 5679, 5686, 5690, 5681, - 5688, 5685, 5689, 5692, 5697, 5988, 5693, 5699, 5988, 5702, - 5703, 5988, 5700, 5705, 5706, 5708, 5709, 5711, 5712, 5713, - 5724, 5988, 5988, 5715, 5726, 5727, 5729, 5731, 5738, 5733, - 5737, 5740, 5743, 5739, 5747, 5988, 5750, 5751, 5753, 5988, + 6010, 6010, 6010, 5588, 6010, 5584, 5603, 5605, 5607, 6010, + 5590, 5600, 5592, 5598, 5608, 6010, 5610, 5410, 5611, 5612, + 5615, 5619, 5621, 5617, 5623, 5624, 5625, 5627, 5626, 5631, + 5628, 5632, 5639, 6010, 6010, 6010, 5637, 5638, 5646, 5647, + 5654, 5659, 5662, 5664, 5629, 5655, 5665, 5666, 5667, 5657, + 5669, 5676, 5673, 5674, 5678, 5677, 5680, 5681, 5685, 5689, + 6010, 5690, 6010, 5691, 6010, 6010, 5693, 5694, 5698, 5699, + 5707, 5708, 5700, 5703, 5710, 5712, 5720, 5722, 6010, 5711, + 5713, 6010, 5723, 5724, 6010, 5715, 5725, 5726, 5727, 5731, + 5734, 5736, 5738, 5747, 6010, 6010, 5739, 5742, 5748, 5750, + + 5751, 5758, 5754, 5757, 5761, 5763, 5764, 5771, 6010, 5770, + 5772, 5774, 6010, 5775, 5776, 5778, 5780, 5781, 5788, 5784, + 5789, 6010, 5786, 6010, 5791, 5792, 5793, 5794, 5796, 5797, + 5805, 5807, 5808, 6010, 5809, 5816, 5811, 5818, 5822, 5820, + 5824, 5814, 5827, 5829, 5836, 5840, 5837, 5841, 5828, 5845, + 5832, 6010, 5843, 5846, 6010, 5849, 5852, 5853, 5855, 5858, + 6010, 5861, 5856, 5862, 5863, 5867, 5869, 6010, 5871, 5878, + 5873, 6010, 5879, 6010, 6010, 5882, 5883, 5885, 5889, 5891, + 6010, 6010, 6010, 5918, 5925, 5932, 5939, 5946, 88, 5953, + 5960, 5967, 5974, 5981, 5988, 5995, 6002 - 5755, 5754, 5757, 5760, 5761, 5768, 5763, 5765, 5988, 5766, - 5988, 5770, 5772, 5771, 5774, 5775, 5777, 5785, 5783, 5787, - 5988, 5789, 5791, 5795, 5796, 5798, 5801, 5802, 5803, 5805, - 5807, 5808, 5817, 5811, 5813, 5819, 5821, 5823, 5988, 5825, - 5827, 5988, 5828, 5829, 5830, 5831, 5835, 5988, 5840, 5832, - 5837, 5843, 5848, 5845, 5988, 5854, 5858, 5855, 5988, 5859, - 5988, 5988, 5860, 5861, 5863, 5867, 5869, 5988, 5988, 5988, - 5896, 5903, 5910, 5917, 5924, 88, 5931, 5938, 5945, 5952, - 5959, 5966, 5973, 5980 } ; -static const flex_int16_t yy_def[3085] = +static const flex_int16_t yy_def[3098] = { 0, - 3070, 1, 3071, 3071, 3072, 3072, 3073, 3073, 3074, 3074, - 3075, 3075, 3070, 3076, 3070, 3070, 3070, 3070, 3077, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3078, 3070, 3070, 3070, 3078, 3079, 3070, 3070, - 3070, 3079, 3080, 3070, 3070, 3070, 3070, 3080, 3081, 3070, - 3070, 3070, 3081, 3082, 3070, 3083, 3070, 3082, 3082, 3076, - 3076, 3070, 3084, 3077, 3084, 3077, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3083, 1, 3084, 3084, 3085, 3085, 3086, 3086, 3087, 3087, + 3088, 3088, 3083, 3089, 3083, 3083, 3083, 3083, 3090, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3091, 3083, 3083, 3083, 3091, 3092, 3083, 3083, + 3083, 3092, 3093, 3083, 3083, 3083, 3083, 3093, 3094, 3083, + 3083, 3083, 3094, 3095, 3083, 3096, 3083, 3095, 3095, 3089, + 3089, 3083, 3097, 3090, 3097, 3090, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3078, 3078, 3079, 3079, 3080, 3080, 3070, 3081, 3081, 3082, - 3082, 3083, 3083, 3082, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3091, 3091, 3092, 3092, 3093, 3093, 3083, 3094, 3094, 3095, + 3095, 3096, 3096, 3095, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3082, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3095, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3082, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3095, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3082, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3095, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3082, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, 3070, 3076, - 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3095, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3083, 3083, 3089, + 3083, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3082, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3095, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3083, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3083, 3083, 3089, 3089, 3089, + 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3082, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3095, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3083, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3083, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3083, 3089, 3089, + 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, + 3083, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3083, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3089, 3083, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3083, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3083, 3083, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, + 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3083, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, + 3089, 3083, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, - 3070, 3076, 3070, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3083, 3083, 3089, 3083, 3089, + 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3083, + 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3070, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3083, + 3083, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3083, 3083, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, + 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3083, 3089, 3089, 3089, - 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3070, - 3076, 3070, 3076, 3070, 3076, 3076, 3070, 3070, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, + 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, + 3089, 3089, 3089, 3083, 3089, 3083, 3089, 3089, 3089, 3089, + 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3083, 3083, 3089, + 3083, 3089, 3083, 3089, 3089, 3083, 3083, 3089, 3089, 3089, + 3089, 3089, 3083, 3089, 3083, 3089, 3089, 3089, 3089, 3089, - 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3083, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3083, 3089, 3089, + 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3083, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3070, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3083, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3083, 3083, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3083, 3083, 3083, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, + 3089, 3083, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3083, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3083, 3083, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3083, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, + 3083, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3089, 3083, 3089, 3083, 3089, 3089, 3089, 3089, + 3083, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3083, 3089, - 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3070, 3076, 3070, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3070, 3070, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, - 3070, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3070, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3083, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3083, 3089, 3083, 3089, 3089, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3083, 3083, 3083, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3083, 3089, 3089, 3083, 3083, 3089, 3089, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, 3076, 3070, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, + 3089, 3089, 3083, 3089, 3083, 3089, 3083, 3089, 3089, 3089, + 3089, 3083, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3083, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3083, 3089, 3089, + 3083, 3089, 3083, 3089, 3083, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3083, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3070, 3070, 3076, 3070, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3070, 3070, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, - 3070, 3076, 3076, 3076, 3070, 3070, 3070, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3070, 3070, + 3083, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3083, 3083, 3089, 3083, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3083, 3089, 3089, 3089, 3089, 3083, 3083, 3089, 3083, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3083, 3083, 3089, 3089, 3089, 3083, 3083, 3083, - 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3070, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, - 3070, 3076, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, + 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, + 3089, 3083, 3083, 3089, 3089, 3089, 3089, 3083, 3083, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3083, 3089, + 3083, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3083, 3089, 3089, 3089, 3089, + 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3083, 3083, 3089, 3083, 3083, 3083, 3083, 3083, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, - 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3070, + 3083, 3083, 3083, 3089, 3083, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3083, 3083, 3083, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3083, 3089, 3083, 3089, 3083, 3083, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3083, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3083, 3089, 3089, 3089, 3089, + + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3083, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3083, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, + 3089, 3083, 3089, 3083, 3083, 3089, 3089, 3089, 3089, 3089, + 3083, 3083, 0, 3083, 3083, 3083, 3083, 3083, 3083, 3083, + 3083, 3083, 3083, 3083, 3083, 3083, 3083 - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3070, 3076, - 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 0, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070 } ; -static const flex_int16_t yy_nxt[6029] = +static const flex_int16_t yy_nxt[6051] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, 14, 14, 18, 20, 21, 22, 23, 24, 25, 26, @@ -1523,7 +1529,7 @@ static const flex_int16_t yy_nxt[6029] = 455, 458, 71, 466, 71, 460, 456, 464, 71, 71, 71, 459, 467, 71, 71, 468, 71, 71, 461, 469, 71, 462, 483, 463, 479, 470, 71, 71, 71, 471, - 71, 484, 481, 733, 486, 480, 71, 472, 71, 473, + 71, 484, 481, 734, 486, 480, 71, 472, 71, 473, 71, 474, 482, 71, 71, 494, 496, 485, 151, 495, 498, 497, 71, 71, 475, 500, 71, 476, 501, 477, 504, 478, 71, 71, 487, 488, 71, 71, 71, 499, @@ -1570,534 +1576,536 @@ static const flex_int16_t yy_nxt[6029] = 71, 71, 71, 695, 71, 71, 696, 71, 694, 71, 699, 71, 698, 71, 700, 71, 704, 71, 71, 703, 71, 697, 71, 707, 705, 71, 71, 709, 71, 71, - 71, 710, 702, 71, 701, 706, 71, 71, 716, 712, - 71, 71, 711, 71, 713, 708, 718, 715, 714, 71, - 71, 71, 149, 723, 719, 720, 722, 721, 717, 71, - 724, 71, 71, 71, 725, 71, 726, 71, 728, 71, + 717, 710, 702, 71, 701, 706, 71, 71, 71, 712, + 149, 71, 711, 71, 713, 708, 71, 714, 715, 71, + 71, 720, 71, 724, 721, 716, 718, 719, 723, 71, + 71, 725, 71, 726, 722, 71, 727, 71, 71, 71, - 729, 71, 71, 71, 730, 71, 737, 71, 735, 71, - 71, 731, 71, 71, 743, 734, 147, 71, 727, 732, - 71, 738, 741, 71, 71, 736, 740, 71, 739, 742, - 744, 71, 746, 747, 745, 71, 71, 71, 71, 748, - 752, 750, 749, 71, 754, 783, 71, 71, 753, 71, - 71, 71, 751, 71, 755, 757, 71, 764, 756, 71, - 758, 71, 759, 71, 761, 71, 765, 71, 71, 760, - 71, 769, 767, 71, 766, 71, 773, 71, 762, 763, - 770, 71, 71, 71, 771, 71, 776, 774, 768, 71, - 775, 777, 71, 71, 778, 71, 71, 780, 782, 772, + 729, 730, 731, 71, 71, 71, 71, 738, 71, 71, + 736, 71, 71, 71, 71, 732, 744, 735, 728, 71, + 739, 733, 71, 742, 743, 745, 737, 71, 740, 741, + 746, 747, 748, 71, 71, 71, 749, 71, 71, 753, + 750, 71, 755, 71, 71, 71, 754, 756, 71, 71, + 71, 758, 752, 71, 757, 751, 759, 71, 71, 71, + 71, 765, 766, 760, 762, 71, 761, 71, 71, 767, + 768, 71, 770, 71, 71, 774, 147, 772, 763, 764, + 771, 71, 71, 780, 71, 777, 71, 779, 769, 776, + 778, 71, 773, 71, 775, 781, 71, 71, 71, 783, - 71, 784, 779, 71, 71, 788, 71, 71, 781, 71, - 789, 71, 71, 71, 71, 71, 790, 797, 785, 71, - 71, 795, 786, 71, 787, 71, 71, 791, 792, 71, - 71, 71, 793, 798, 794, 796, 71, 799, 71, 71, - 802, 71, 71, 71, 811, 800, 804, 809, 801, 803, - 71, 71, 71, 71, 71, 812, 805, 806, 807, 71, - 808, 71, 71, 71, 810, 814, 816, 815, 71, 71, - 71, 813, 71, 821, 823, 817, 819, 820, 71, 822, - 71, 818, 71, 824, 71, 71, 71, 151, 71, 826, - 71, 71, 831, 827, 832, 829, 71, 71, 825, 828, + 71, 71, 71, 71, 789, 71, 71, 71, 71, 790, + 71, 71, 71, 71, 71, 782, 784, 791, 785, 786, + 71, 787, 792, 788, 794, 796, 793, 798, 71, 797, + 71, 795, 71, 71, 799, 71, 71, 71, 71, 803, + 800, 71, 71, 71, 71, 71, 812, 146, 810, 801, + 71, 802, 71, 805, 804, 71, 806, 71, 811, 807, + 808, 809, 71, 815, 71, 71, 813, 71, 71, 814, + 817, 816, 71, 71, 819, 71, 71, 144, 822, 821, + 818, 820, 823, 71, 71, 826, 71, 71, 824, 825, + 829, 71, 71, 827, 151, 71, 828, 71, 833, 832, - 830, 833, 71, 71, 834, 835, 71, 839, 71, 71, - 840, 842, 71, 71, 71, 845, 71, 836, 841, 71, - 837, 71, 843, 847, 838, 71, 71, 71, 851, 71, - 71, 71, 71, 844, 71, 71, 846, 848, 852, 853, - 71, 71, 71, 71, 71, 850, 883, 854, 71, 865, - 866, 849, 71, 869, 71, 856, 855, 71, 863, 864, - 71, 71, 857, 71, 867, 868, 858, 71, 870, 859, - 71, 871, 872, 71, 875, 71, 860, 861, 71, 862, - 71, 71, 146, 874, 873, 71, 876, 877, 71, 878, - 898, 887, 879, 885, 884, 888, 71, 880, 71, 71, + 830, 834, 71, 71, 831, 71, 71, 71, 840, 71, + 71, 841, 836, 843, 71, 71, 835, 71, 71, 842, + 837, 838, 846, 71, 844, 71, 71, 839, 71, 848, + 71, 852, 71, 71, 71, 849, 845, 71, 847, 71, + 853, 854, 71, 71, 71, 71, 71, 71, 851, 71, + 71, 850, 867, 71, 866, 71, 870, 855, 856, 864, + 865, 872, 857, 71, 71, 868, 71, 875, 858, 71, + 869, 873, 859, 71, 871, 860, 71, 71, 874, 71, + 876, 884, 861, 862, 71, 863, 71, 71, 877, 878, + 885, 879, 905, 71, 880, 886, 888, 889, 71, 881, - 890, 71, 71, 881, 882, 889, 886, 71, 892, 71, - 71, 71, 71, 894, 893, 900, 891, 895, 896, 71, - 71, 899, 897, 71, 71, 71, 71, 904, 71, 71, - 71, 71, 903, 71, 907, 911, 71, 913, 71, 924, - 71, 71, 906, 901, 902, 905, 71, 908, 909, 914, - 917, 912, 71, 910, 915, 71, 71, 916, 918, 71, - 71, 920, 921, 71, 71, 919, 71, 71, 71, 922, - 925, 71, 71, 71, 923, 71, 926, 71, 928, 931, - 71, 71, 929, 71, 71, 934, 71, 71, 71, 933, - 927, 71, 932, 71, 71, 936, 930, 937, 939, 71, + 71, 71, 891, 71, 887, 882, 883, 890, 71, 71, + 894, 71, 71, 893, 71, 896, 895, 71, 892, 897, + 898, 71, 71, 71, 899, 71, 71, 71, 71, 900, + 902, 71, 906, 71, 71, 909, 71, 71, 71, 915, + 71, 71, 901, 907, 913, 903, 904, 908, 71, 911, + 71, 916, 1176, 914, 910, 919, 917, 71, 71, 920, + 912, 71, 71, 918, 922, 71, 71, 921, 71, 923, + 71, 71, 926, 71, 924, 927, 71, 71, 71, 925, + 71, 71, 71, 933, 71, 928, 930, 931, 71, 936, + 71, 71, 71, 71, 71, 71, 929, 934, 935, 71, - 71, 71, 71, 935, 941, 942, 71, 71, 940, 71, - 949, 938, 947, 71, 71, 945, 943, 948, 71, 944, - 946, 71, 71, 71, 71, 71, 954, 956, 950, 71, - 952, 957, 71, 951, 955, 71, 71, 71, 71, 71, - 959, 71, 71, 71, 71, 958, 953, 967, 71, 970, - 960, 965, 71, 71, 71, 71, 961, 962, 71, 964, - 963, 971, 968, 71, 966, 972, 71, 969, 71, 975, - 71, 71, 974, 973, 71, 977, 978, 71, 71, 71, - 976, 71, 71, 980, 71, 71, 982, 987, 979, 988, - 990, 981, 71, 71, 992, 71, 71, 71, 71, 983, + 71, 932, 938, 939, 941, 71, 71, 71, 943, 942, + 937, 944, 71, 71, 71, 71, 940, 71, 949, 71, + 951, 945, 947, 950, 71, 71, 71, 948, 71, 71, + 952, 956, 71, 71, 954, 958, 953, 946, 71, 957, + 959, 71, 71, 961, 71, 71, 71, 71, 71, 963, + 955, 71, 71, 960, 71, 969, 967, 71, 71, 972, + 71, 142, 71, 962, 964, 71, 966, 965, 71, 973, + 970, 968, 976, 971, 974, 71, 975, 71, 71, 980, + 71, 977, 978, 979, 71, 71, 71, 71, 71, 71, + 989, 71, 990, 982, 984, 71, 71, 981, 71, 71, - 71, 985, 993, 984, 986, 991, 989, 71, 71, 71, - 996, 994, 71, 71, 998, 1001, 995, 71, 997, 71, - 1000, 71, 71, 1005, 71, 1002, 1007, 71, 71, 71, - 1004, 1003, 71, 999, 1010, 151, 71, 1009, 71, 71, - 1013, 71, 1012, 71, 1006, 71, 1008, 71, 1016, 71, - 71, 1011, 71, 71, 71, 1028, 71, 1031, 71, 144, - 1029, 71, 71, 1014, 1019, 1015, 1017, 71, 71, 1054, - 71, 1033, 1020, 1018, 1021, 71, 1030, 71, 1022, 71, - 1023, 71, 1036, 1034, 1024, 71, 1025, 1032, 71, 71, - 71, 1026, 1038, 1035, 1041, 1037, 1027, 1039, 71, 1040, + 992, 71, 71, 71, 71, 983, 71, 985, 987, 991, + 986, 988, 994, 71, 995, 998, 71, 996, 71, 993, + 71, 997, 71, 999, 1003, 1001, 71, 1000, 71, 1002, + 71, 71, 71, 1007, 1004, 71, 1008, 1009, 71, 71, + 71, 71, 1012, 151, 1005, 1006, 1011, 71, 71, 1015, + 71, 1014, 71, 1010, 71, 1013, 71, 1018, 71, 71, + 71, 71, 71, 71, 1030, 1031, 71, 1033, 71, 71, + 71, 71, 1016, 1021, 1017, 1019, 1038, 71, 71, 71, + 1022, 1032, 1020, 1023, 71, 1036, 71, 1024, 1089, 1025, + 1035, 1037, 1039, 1026, 1034, 1027, 1040, 71, 71, 71, - 71, 1046, 71, 1043, 71, 1044, 1042, 1047, 71, 71, - 71, 1052, 71, 1053, 71, 1045, 1051, 71, 1048, 71, - 1055, 1056, 71, 1050, 71, 71, 71, 71, 71, 1049, - 71, 1068, 71, 1058, 1057, 71, 1067, 1072, 71, 71, - 1059, 71, 1060, 1073, 1069, 71, 1071, 1061, 1093, 1062, - 1070, 71, 71, 1074, 71, 1063, 1077, 71, 1078, 1079, - 1064, 1065, 71, 71, 71, 71, 1080, 1066, 1083, 71, - 1075, 1076, 142, 71, 71, 71, 71, 1082, 1084, 71, - 1089, 1081, 71, 71, 1086, 1087, 71, 71, 1085, 71, - 71, 1090, 1092, 71, 71, 1088, 71, 71, 71, 71, + 1028, 1041, 71, 1043, 71, 1029, 71, 71, 71, 1046, + 71, 1042, 1049, 1045, 71, 1044, 71, 71, 1048, 1047, + 1054, 1055, 1050, 1053, 1056, 71, 71, 71, 1052, 1057, + 1058, 1051, 71, 71, 71, 71, 71, 71, 1059, 71, + 71, 71, 1070, 71, 1074, 1069, 71, 1073, 71, 1075, + 71, 1060, 1072, 1061, 71, 1062, 71, 1071, 1079, 71, + 1063, 71, 1064, 1081, 1076, 1080, 71, 1077, 1065, 71, + 71, 71, 71, 1066, 1067, 1078, 71, 1084, 1086, 1082, + 1068, 71, 71, 1085, 71, 1083, 1087, 71, 1092, 71, + 1088, 1090, 71, 71, 71, 71, 71, 71, 1093, 71, - 1099, 71, 1091, 1094, 71, 1096, 1097, 1098, 1101, 71, - 1095, 71, 71, 1100, 71, 1102, 71, 71, 1103, 71, - 71, 1104, 1109, 71, 1110, 1106, 71, 71, 1105, 1112, - 1107, 1108, 1111, 71, 1113, 1114, 1115, 71, 1117, 71, - 1121, 71, 1116, 1118, 71, 71, 1119, 71, 71, 1120, - 71, 71, 71, 1122, 1128, 71, 1130, 71, 71, 71, - 71, 71, 71, 1132, 1124, 1126, 1127, 1123, 1125, 71, - 71, 71, 1131, 1133, 1134, 1129, 71, 71, 71, 71, - 71, 1136, 1135, 1137, 1139, 1138, 71, 71, 71, 1141, - 71, 1140, 1145, 1142, 1144, 71, 1143, 71, 71, 1146, + 1095, 71, 71, 1091, 71, 71, 71, 1102, 1100, 71, + 1097, 1094, 1104, 1096, 1099, 1101, 71, 1098, 71, 1106, + 71, 1103, 71, 71, 71, 1105, 71, 71, 71, 1112, + 71, 1116, 1113, 1114, 71, 71, 1107, 1109, 1117, 1108, + 1110, 1111, 71, 1115, 71, 1120, 71, 71, 1118, 1124, + 1121, 71, 71, 1122, 71, 71, 1123, 71, 1119, 71, + 1131, 1125, 71, 71, 1133, 71, 71, 71, 71, 71, + 71, 1127, 1129, 1135, 1126, 1128, 71, 1130, 71, 1137, + 1134, 1136, 71, 1132, 71, 71, 71, 1139, 71, 1140, + 1138, 1142, 71, 1143, 1141, 71, 71, 1144, 1145, 1148, - 71, 71, 71, 71, 1147, 1149, 71, 1150, 1148, 71, - 1156, 71, 1154, 1157, 71, 1151, 71, 71, 71, 71, - 1152, 71, 1158, 1153, 1155, 71, 1159, 1161, 1164, 71, - 1160, 71, 1162, 71, 71, 71, 1165, 71, 1163, 1166, - 71, 71, 71, 71, 1167, 1171, 1168, 1169, 71, 71, - 71, 1172, 71, 1177, 1173, 1178, 71, 71, 71, 71, - 1170, 71, 1175, 1180, 1181, 71, 71, 1174, 71, 71, - 1185, 1176, 1179, 71, 71, 1182, 71, 71, 71, 71, - 1183, 1184, 1187, 1191, 71, 71, 1186, 71, 71, 71, - 1197, 71, 71, 1192, 1195, 1188, 3070, 1190, 1199, 1194, + 1149, 71, 1147, 71, 71, 71, 71, 71, 1153, 1152, + 71, 1146, 1150, 71, 71, 71, 71, 1159, 1157, 1160, + 71, 71, 1151, 71, 71, 71, 1161, 1164, 1154, 1158, + 71, 71, 1155, 71, 1156, 1162, 1163, 1167, 1165, 71, + 71, 1169, 71, 71, 1166, 1168, 71, 71, 1170, 71, + 71, 71, 71, 1174, 1175, 1171, 71, 71, 1180, 71, + 1181, 71, 71, 71, 71, 1172, 71, 1183, 1173, 1178, + 1177, 1184, 71, 71, 1182, 1179, 71, 1186, 1188, 71, + 1185, 71, 71, 71, 71, 1187, 1194, 71, 1190, 71, + 71, 71, 71, 71, 1189, 1200, 71, 1198, 71, 1202, - 1193, 1196, 1189, 1200, 71, 71, 71, 71, 1198, 71, - 1201, 71, 1203, 1202, 71, 71, 71, 71, 71, 71, - 1204, 1206, 71, 1212, 71, 1209, 71, 71, 1205, 71, - 1207, 71, 71, 71, 1210, 1337, 1208, 1216, 71, 1222, - 1213, 1211, 71, 71, 1215, 1214, 71, 1218, 1223, 1224, - 71, 71, 1217, 1225, 71, 71, 1219, 1227, 1220, 71, - 71, 1221, 71, 71, 71, 1226, 71, 1231, 71, 1230, - 71, 1233, 1236, 71, 1228, 1234, 71, 1229, 71, 71, - 71, 1237, 1232, 1238, 1240, 71, 71, 1235, 71, 1241, - 1239, 71, 71, 71, 71, 1242, 71, 71, 71, 1245, + 1191, 1197, 1199, 1193, 1195, 71, 1196, 1203, 1192, 71, + 71, 71, 1205, 71, 1204, 71, 1206, 71, 1201, 71, + 71, 71, 71, 71, 1209, 71, 1215, 71, 71, 1207, + 1212, 1208, 71, 71, 71, 1210, 3083, 1213, 71, 71, + 1211, 71, 1216, 1226, 1214, 1219, 1221, 71, 1218, 71, + 1217, 71, 1225, 71, 1220, 1222, 1228, 1223, 1227, 71, + 1224, 1229, 71, 71, 71, 1230, 71, 71, 71, 71, + 71, 1234, 1231, 1233, 1236, 1239, 71, 71, 71, 1237, + 71, 1232, 1240, 1241, 71, 71, 1235, 71, 1244, 1238, + 1243, 71, 71, 71, 71, 71, 1245, 71, 71, 71, - 71, 1248, 71, 1243, 1246, 71, 1244, 71, 1247, 1249, - 71, 1253, 71, 71, 1258, 1250, 71, 1254, 1252, 1251, - 71, 1257, 71, 71, 1260, 71, 1264, 1255, 1262, 71, - 1256, 1265, 71, 1261, 71, 71, 1259, 1263, 71, 1269, - 71, 3070, 71, 71, 1279, 71, 1278, 1268, 1266, 1267, - 71, 1277, 71, 1276, 1281, 1270, 71, 71, 1271, 1272, - 1282, 1280, 1283, 1273, 71, 71, 71, 71, 1285, 1274, - 1284, 71, 1287, 1275, 71, 71, 71, 1288, 71, 1289, - 71, 71, 71, 71, 1297, 1286, 1294, 1292, 71, 71, - 71, 1298, 1338, 1299, 1291, 1290, 1295, 71, 71, 71, + 1242, 1251, 71, 71, 71, 71, 1246, 1247, 71, 1249, + 1250, 1252, 1248, 71, 1256, 71, 1261, 1253, 71, 1257, + 71, 1255, 71, 1254, 1260, 1258, 71, 71, 1263, 71, + 71, 1268, 1262, 1259, 1266, 71, 1269, 71, 71, 3083, + 71, 71, 1267, 1265, 71, 1273, 1264, 71, 71, 71, + 1281, 1282, 1271, 1272, 1270, 71, 1285, 71, 71, 1283, + 1274, 1280, 71, 1275, 1276, 1286, 71, 1284, 1277, 1294, + 71, 71, 71, 71, 1278, 1287, 71, 1288, 1279, 71, + 1289, 71, 1291, 71, 71, 1296, 1292, 1290, 1293, 71, + 71, 1295, 71, 1301, 1298, 1302, 71, 71, 71, 71, - 1293, 1296, 1300, 71, 1306, 71, 1307, 1308, 1301, 71, - 71, 71, 71, 1302, 1310, 1303, 1309, 1304, 71, 1305, - 71, 71, 71, 1314, 71, 71, 1311, 1313, 1315, 71, - 1312, 1316, 71, 1320, 71, 1319, 71, 1318, 71, 1324, - 71, 1325, 1317, 71, 1321, 71, 1326, 71, 71, 71, - 1323, 71, 1328, 1322, 71, 71, 71, 1327, 1330, 71, - 1333, 71, 1329, 1334, 71, 1336, 71, 71, 71, 1331, - 1341, 1335, 1339, 1342, 71, 1344, 71, 71, 1340, 1332, - 71, 1345, 1346, 71, 71, 1349, 71, 71, 1343, 71, - 71, 71, 1351, 71, 71, 71, 1353, 1355, 71, 71, + 1304, 71, 1303, 71, 1297, 71, 1299, 1305, 1300, 71, + 1310, 71, 1306, 71, 1307, 1314, 1308, 71, 1309, 1311, + 1312, 1316, 71, 1318, 1313, 71, 71, 1321, 1319, 71, + 71, 71, 1315, 71, 1317, 1320, 1322, 71, 71, 71, + 1328, 71, 1324, 71, 1323, 71, 71, 71, 1329, 1330, + 71, 71, 1334, 1327, 71, 1332, 1325, 1326, 71, 1331, + 71, 71, 1338, 71, 71, 1333, 1337, 1340, 71, 71, + 71, 1341, 1335, 1342, 71, 1339, 71, 71, 71, 1343, + 1346, 71, 71, 1336, 1347, 71, 1345, 1348, 71, 71, + 1349, 71, 1353, 71, 71, 1344, 1350, 1355, 71, 1351, - 3070, 1357, 1354, 71, 1347, 1348, 71, 1350, 1359, 71, - 1352, 71, 1356, 71, 1358, 71, 1361, 1362, 1363, 71, - 1360, 71, 1365, 71, 1364, 71, 71, 71, 1366, 1371, - 1372, 1368, 71, 1367, 1369, 71, 71, 1373, 1374, 1370, - 71, 71, 71, 71, 71, 1378, 71, 71, 71, 1375, - 1382, 1383, 71, 1377, 71, 1385, 71, 71, 1384, 71, - 1376, 71, 71, 1379, 71, 71, 71, 1380, 1386, 71, - 1392, 1381, 71, 71, 1387, 71, 1389, 1397, 71, 1388, - 1390, 71, 1393, 1391, 71, 71, 1396, 1401, 71, 1399, - 71, 1395, 1402, 71, 71, 71, 71, 1394, 1398, 1404, + 71, 71, 71, 1352, 1359, 1354, 1357, 71, 71, 1358, + 71, 1361, 71, 71, 71, 1363, 71, 71, 1356, 71, + 1373, 1365, 71, 3083, 1367, 1360, 71, 1362, 1364, 71, + 1366, 1368, 71, 1369, 1370, 1371, 71, 71, 1375, 1376, + 71, 71, 1372, 1378, 71, 71, 1377, 71, 71, 71, + 1374, 71, 1382, 71, 71, 71, 1379, 1386, 1387, 1380, + 71, 1389, 1381, 71, 71, 71, 1388, 71, 1383, 71, + 71, 71, 71, 71, 1384, 71, 1396, 71, 1385, 1390, + 71, 71, 1393, 71, 71, 1391, 1394, 71, 1400, 1392, + 71, 1395, 1401, 71, 1405, 1403, 1398, 1397, 1399, 1406, - 71, 71, 1405, 1412, 1400, 71, 1403, 71, 1414, 1406, - 1410, 1407, 71, 1411, 71, 1408, 1415, 71, 1409, 1417, - 71, 1413, 71, 71, 1418, 71, 71, 71, 1416, 71, - 71, 1422, 71, 71, 1424, 71, 71, 1429, 71, 1419, - 71, 1421, 1430, 71, 71, 1423, 1426, 71, 1420, 1433, - 1425, 1427, 71, 1428, 71, 71, 1434, 71, 1431, 71, - 71, 71, 1432, 71, 71, 1440, 1435, 1437, 1436, 1442, - 1441, 71, 1438, 71, 1445, 71, 71, 71, 1439, 1443, - 1444, 71, 1447, 1450, 71, 1451, 1449, 71, 1452, 71, - 1446, 71, 71, 1453, 1454, 71, 71, 71, 1448, 71, + 71, 71, 71, 1404, 1402, 1407, 71, 71, 71, 71, + 1408, 1416, 71, 71, 1409, 1418, 1410, 1414, 71, 71, + 1415, 71, 1411, 1412, 71, 1421, 1413, 1417, 1419, 1420, + 1422, 71, 71, 71, 71, 71, 71, 71, 1423, 1426, + 71, 1428, 71, 71, 71, 1433, 71, 71, 71, 1437, + 1434, 1425, 71, 1427, 1430, 71, 71, 1429, 1424, 71, + 1431, 1432, 71, 71, 1438, 1435, 71, 1436, 71, 71, + 71, 71, 71, 1440, 1444, 1439, 1446, 1441, 1442, 1445, + 71, 71, 1449, 71, 71, 1443, 1447, 71, 1454, 1448, + 1451, 1452, 1453, 1455, 71, 1456, 71, 1457, 1450, 71, - 1455, 71, 1457, 71, 71, 1461, 1456, 71, 71, 71, - 1460, 71, 71, 1458, 71, 1467, 1459, 1463, 1469, 1464, - 1468, 71, 1465, 1470, 71, 71, 1472, 1462, 71, 71, - 1466, 71, 1471, 71, 71, 71, 71, 1480, 1476, 71, - 1475, 71, 71, 71, 1481, 1483, 71, 1473, 1474, 71, - 1486, 71, 1485, 1477, 1479, 1478, 71, 71, 71, 71, - 71, 1484, 71, 71, 71, 71, 1494, 1482, 1487, 71, - 1497, 71, 1495, 71, 1491, 1496, 1488, 1489, 1490, 1493, - 1498, 71, 71, 1492, 71, 71, 1501, 1499, 1500, 71, - 71, 71, 1504, 71, 1502, 71, 1505, 71, 71, 71, + 71, 71, 71, 1458, 1459, 71, 71, 71, 71, 1461, + 1460, 71, 71, 71, 1466, 71, 71, 71, 71, 1465, + 71, 71, 1463, 1469, 1468, 1462, 1464, 1472, 71, 71, + 1477, 1470, 1473, 71, 71, 1467, 1474, 71, 71, 1471, + 1478, 1475, 71, 1481, 71, 71, 1480, 71, 1476, 71, + 1485, 71, 1486, 1479, 1488, 71, 71, 71, 71, 71, + 71, 71, 1491, 1482, 1490, 1483, 71, 1484, 71, 71, + 71, 71, 71, 1499, 1489, 71, 1492, 1487, 1493, 71, + 1494, 3083, 1500, 1496, 71, 1495, 1498, 1501, 1502, 71, + 71, 1497, 1503, 71, 71, 1504, 71, 1506, 1505, 71, - 1508, 1514, 1503, 1512, 71, 71, 1509, 71, 71, 1506, - 1513, 1507, 1516, 71, 1511, 71, 71, 1510, 1517, 1518, - 1519, 71, 71, 1515, 71, 1523, 1524, 71, 71, 71, - 71, 71, 71, 1528, 71, 1527, 1529, 1531, 71, 71, - 1521, 1520, 71, 71, 1522, 71, 1525, 71, 1532, 71, - 1526, 1533, 71, 71, 1530, 1534, 1536, 71, 1538, 1535, - 71, 1539, 71, 71, 71, 71, 71, 1537, 71, 1543, - 71, 1545, 1540, 71, 71, 1546, 71, 1550, 71, 1544, - 71, 71, 1542, 1541, 71, 71, 1547, 71, 1548, 1553, - 1555, 71, 1551, 71, 71, 1558, 1554, 1556, 1552, 1549, + 71, 71, 1509, 71, 71, 1507, 1510, 71, 71, 1513, + 1517, 71, 1508, 71, 1519, 71, 1514, 71, 1518, 1511, + 71, 1512, 71, 71, 1516, 71, 71, 1515, 1522, 1523, + 1520, 71, 71, 1528, 71, 1521, 1524, 1525, 71, 71, + 1529, 71, 71, 1534, 1526, 71, 1533, 1532, 71, 71, + 71, 1527, 1530, 1536, 71, 71, 1538, 71, 1537, 1531, + 71, 71, 71, 71, 1541, 71, 1539, 71, 1535, 71, + 1544, 71, 1543, 71, 71, 71, 1540, 71, 1548, 71, + 1545, 71, 1542, 71, 1550, 71, 1551, 71, 1546, 1549, + 1547, 71, 1552, 71, 1553, 71, 1555, 71, 1558, 1556, - 71, 71, 71, 71, 71, 1557, 1561, 71, 1563, 1559, - 71, 1560, 1564, 71, 71, 71, 71, 1571, 71, 71, - 1562, 1566, 1565, 1572, 71, 71, 71, 71, 1569, 1567, - 1568, 1576, 71, 71, 1575, 1578, 1580, 1579, 71, 1573, - 1570, 71, 71, 1582, 1574, 1584, 71, 1577, 71, 71, - 71, 71, 71, 71, 1589, 1583, 1586, 1587, 1581, 71, - 1590, 71, 71, 71, 71, 71, 1601, 1585, 1594, 71, - 1595, 71, 71, 71, 71, 1588, 1591, 1598, 1593, 1592, - 1599, 71, 71, 1596, 1597, 1603, 1602, 71, 71, 1609, - 71, 71, 1600, 1606, 1608, 71, 1605, 71, 1607, 71, + 1560, 71, 71, 71, 71, 1557, 1554, 1561, 71, 1563, + 71, 1562, 1559, 71, 1566, 1565, 71, 1569, 71, 71, + 71, 1568, 71, 71, 1564, 71, 71, 1576, 71, 71, + 71, 71, 1567, 1577, 1571, 71, 71, 1570, 71, 1574, + 1580, 1572, 1573, 1581, 71, 1585, 1583, 71, 1575, 1578, + 1579, 71, 1584, 1587, 71, 1582, 1586, 1589, 71, 71, + 71, 71, 71, 71, 71, 71, 1594, 1591, 1588, 1592, + 71, 1595, 71, 71, 71, 71, 71, 1596, 1599, 1590, + 71, 1600, 71, 1610, 71, 1606, 1593, 1608, 1598, 71, + 1597, 71, 1603, 71, 1601, 1604, 1602, 71, 1607, 71, - 1611, 1604, 1610, 71, 1612, 1613, 71, 71, 1616, 71, - 71, 71, 1614, 71, 1620, 1621, 1619, 71, 1623, 1615, - 71, 71, 1622, 71, 71, 71, 71, 71, 1617, 71, - 1618, 1625, 1626, 71, 1627, 71, 71, 71, 1635, 71, - 71, 71, 71, 1628, 71, 71, 1624, 1629, 71, 71, - 1631, 1632, 1633, 71, 1634, 1630, 1640, 71, 1642, 1636, - 71, 1643, 1637, 1638, 71, 71, 1639, 71, 1641, 71, - 71, 71, 71, 71, 71, 71, 71, 1658, 71, 1644, - 1648, 1645, 1650, 1651, 71, 1649, 1652, 1647, 1653, 1646, - 71, 1654, 71, 1657, 1659, 71, 1655, 71, 1656, 71, + 1614, 71, 1611, 1609, 1613, 71, 71, 1605, 71, 1616, + 1615, 71, 1617, 1618, 71, 71, 71, 71, 71, 71, + 1619, 71, 71, 1625, 1612, 1624, 1626, 1620, 71, 71, + 71, 1628, 71, 1627, 1621, 1630, 1622, 71, 1623, 1631, + 71, 71, 71, 71, 1629, 71, 1632, 71, 71, 1640, + 71, 71, 71, 71, 71, 71, 71, 71, 1646, 71, + 1633, 1636, 1637, 1634, 1638, 1635, 1639, 1642, 71, 71, + 1641, 1644, 71, 71, 1643, 71, 1649, 1645, 1648, 71, + 71, 71, 71, 71, 1650, 71, 1651, 71, 1647, 71, + 1654, 71, 1656, 1664, 71, 71, 1657, 1655, 1653, 1658, - 1662, 71, 1661, 71, 1660, 1663, 71, 71, 1666, 71, - 71, 71, 1664, 71, 1667, 71, 71, 1675, 71, 1670, - 1665, 1676, 71, 71, 1674, 1672, 1668, 1669, 1673, 71, - 71, 71, 1671, 71, 71, 71, 71, 71, 1677, 71, - 1685, 71, 1678, 71, 1689, 1680, 1682, 71, 1679, 1681, - 1687, 71, 1688, 1686, 1684, 71, 1693, 71, 1690, 71, - 1683, 71, 71, 1697, 1691, 71, 71, 1692, 1698, 71, - 71, 3070, 71, 1705, 71, 1694, 1699, 1702, 1703, 1696, - 1695, 1700, 71, 1706, 71, 71, 1708, 1701, 1704, 71, - 1707, 71, 71, 71, 1712, 71, 71, 1709, 1716, 1714, + 71, 71, 71, 1652, 1663, 1659, 1660, 1666, 1662, 1665, + 71, 1661, 71, 1669, 71, 1668, 71, 71, 1667, 71, + 71, 1671, 1672, 71, 1673, 71, 71, 71, 71, 1670, + 1682, 71, 1676, 71, 71, 71, 1680, 1678, 1681, 1674, + 1679, 1675, 71, 71, 71, 1677, 71, 1684, 71, 1686, + 71, 71, 1691, 1683, 71, 71, 71, 71, 1688, 1687, + 1685, 1694, 71, 1695, 1693, 71, 1697, 71, 1690, 1698, + 1692, 71, 1699, 1689, 1703, 71, 71, 1696, 71, 1704, + 71, 71, 71, 1700, 71, 1709, 71, 1708, 1711, 71, + 1705, 71, 1701, 1702, 71, 1712, 1706, 1714, 71, 1713, - 71, 71, 1710, 71, 71, 1715, 71, 1711, 1713, 1717, - 71, 71, 71, 71, 71, 71, 71, 1743, 1720, 71, - 1721, 71, 1718, 1726, 71, 1719, 1722, 1723, 1728, 1724, - 1725, 1729, 1730, 71, 71, 1731, 71, 71, 71, 71, - 1736, 1732, 71, 71, 71, 1727, 71, 1740, 71, 71, - 71, 1733, 1735, 71, 1742, 71, 71, 1734, 1744, 1738, - 1745, 71, 1739, 71, 1737, 1746, 1749, 71, 71, 1741, - 71, 71, 1753, 71, 71, 71, 71, 71, 1748, 71, - 71, 71, 1751, 1755, 1747, 71, 1760, 1750, 1754, 1756, - 1752, 1757, 71, 1761, 1758, 71, 1764, 71, 71, 71, + 1707, 71, 1710, 71, 1715, 71, 1716, 1718, 71, 71, + 1722, 71, 1720, 71, 71, 71, 71, 71, 1721, 1717, + 71, 1719, 1723, 71, 71, 1726, 71, 71, 71, 1727, + 1724, 1732, 71, 1734, 1725, 71, 1728, 1729, 1735, 71, + 1730, 1731, 1737, 71, 71, 71, 1739, 71, 1736, 71, + 1742, 71, 71, 1733, 71, 71, 71, 1746, 71, 71, + 71, 71, 1741, 1748, 71, 1738, 1740, 71, 1744, 1749, + 1752, 71, 1745, 1743, 71, 1747, 1750, 1755, 71, 1751, + 71, 71, 1754, 1753, 71, 1759, 71, 71, 71, 71, + 71, 71, 71, 1757, 1766, 1761, 71, 71, 71, 1756, - 1759, 1763, 1765, 1762, 1766, 71, 71, 1768, 1769, 1770, - 71, 1767, 71, 71, 71, 1772, 71, 71, 71, 1773, - 71, 71, 71, 71, 1771, 71, 71, 1778, 71, 71, - 1782, 71, 1779, 1790, 71, 1783, 71, 1774, 1776, 1777, - 1775, 1780, 71, 1781, 71, 71, 1791, 1786, 1784, 1788, - 71, 1785, 71, 71, 1787, 71, 71, 1792, 1796, 71, - 1789, 71, 71, 1799, 1800, 71, 1801, 71, 71, 1793, - 71, 1794, 71, 1795, 3070, 1797, 1808, 1798, 71, 1802, - 1803, 71, 71, 1804, 1807, 71, 1809, 71, 1811, 1805, - 1810, 1806, 71, 1813, 71, 71, 1812, 71, 71, 71, + 71, 1760, 1762, 1758, 1763, 1861, 71, 71, 1764, 1767, + 1771, 1765, 1769, 71, 1768, 1770, 71, 1772, 71, 71, + 1775, 71, 1774, 71, 1773, 1778, 71, 1776, 71, 71, + 71, 71, 1779, 1777, 71, 71, 71, 71, 71, 71, + 1784, 71, 71, 1788, 71, 71, 1785, 3083, 71, 1794, + 1780, 1786, 1782, 1781, 1783, 71, 1787, 1789, 71, 1797, + 1792, 71, 1791, 1796, 71, 71, 1798, 1793, 71, 71, + 1790, 71, 71, 1795, 1802, 71, 1805, 1806, 71, 71, + 1799, 1807, 71, 71, 1800, 1803, 71, 1804, 71, 1801, + 1809, 71, 71, 1810, 1813, 71, 71, 1815, 71, 1808, - 1815, 1816, 71, 71, 1817, 1818, 71, 1825, 3070, 71, - 71, 71, 71, 71, 1830, 71, 71, 71, 1823, 1827, - 1814, 1819, 1820, 1821, 1828, 71, 1824, 1831, 1822, 1829, - 1826, 1833, 1832, 71, 71, 71, 71, 71, 1837, 71, - 71, 1839, 1834, 71, 71, 71, 1842, 1843, 71, 71, - 1845, 71, 71, 71, 1835, 71, 1836, 71, 71, 1850, - 1851, 71, 1838, 1840, 1847, 71, 1841, 1848, 71, 1844, - 71, 71, 71, 71, 1849, 71, 1857, 1846, 1852, 1854, - 1855, 71, 71, 1853, 1861, 71, 71, 1860, 1864, 1865, - 71, 1866, 71, 1863, 71, 71, 1856, 1859, 71, 1858, + 1814, 1816, 1817, 71, 1811, 1819, 1818, 1812, 71, 71, + 71, 71, 1824, 1821, 1822, 71, 71, 1823, 71, 71, + 71, 71, 71, 1832, 71, 3083, 71, 71, 1837, 71, + 1834, 1825, 1826, 1827, 1820, 1835, 71, 71, 1828, 1830, + 1829, 1836, 1831, 71, 1833, 1840, 71, 71, 1838, 71, + 71, 71, 1844, 71, 71, 1841, 71, 1846, 1839, 71, + 71, 1849, 1850, 71, 71, 1852, 71, 1842, 71, 71, + 1843, 71, 71, 71, 1847, 71, 1845, 1857, 1854, 71, + 1855, 1848, 71, 71, 1851, 1858, 71, 1860, 1862, 71, + 1864, 71, 71, 1853, 1856, 71, 1859, 1867, 1868, 71, - 71, 71, 71, 1867, 71, 1862, 71, 71, 71, 1868, - 1872, 71, 1875, 1876, 1871, 71, 1877, 71, 71, 71, - 71, 1869, 71, 1870, 1873, 71, 71, 1885, 71, 1880, - 71, 1884, 1879, 71, 1874, 1878, 71, 71, 1882, 3070, - 71, 1889, 1883, 71, 71, 1881, 1890, 71, 1887, 1886, - 1892, 71, 1891, 71, 71, 1888, 71, 1893, 1894, 1896, - 71, 71, 71, 1895, 71, 1897, 1900, 1903, 1898, 71, - 71, 1906, 71, 71, 1905, 1899, 71, 1907, 71, 71, - 71, 71, 1901, 1908, 1902, 1904, 71, 1909, 1913, 71, - 71, 1910, 1914, 71, 1915, 1920, 1911, 1917, 1918, 1916, + 71, 1873, 71, 1871, 71, 71, 1872, 1870, 1863, 71, + 1874, 1866, 71, 71, 71, 71, 71, 1865, 71, 1869, + 71, 1879, 1875, 71, 71, 1882, 1883, 1878, 71, 71, + 1884, 71, 71, 71, 1876, 1877, 71, 1887, 1880, 71, + 71, 1892, 71, 71, 1886, 1891, 71, 71, 1885, 1881, + 71, 1889, 71, 1888, 71, 1898, 1896, 1899, 71, 71, + 1897, 1890, 1893, 1900, 71, 1894, 1895, 1903, 71, 71, + 71, 71, 71, 71, 71, 1901, 1907, 1910, 1913, 71, + 1902, 71, 71, 71, 1905, 71, 1914, 1912, 71, 71, + 1904, 1906, 1915, 1908, 1909, 71, 1911, 71, 1916, 1920, - 71, 1912, 71, 71, 71, 1922, 71, 71, 71, 71, - 1927, 71, 1919, 1924, 1921, 71, 71, 1929, 1923, 1925, - 71, 71, 71, 71, 71, 71, 71, 1935, 1934, 1933, - 1936, 71, 1930, 1926, 1931, 1937, 71, 1928, 71, 1939, - 1932, 71, 71, 71, 71, 71, 3070, 1940, 1941, 71, - 1942, 1943, 71, 71, 1944, 1945, 71, 1947, 1938, 71, - 71, 71, 1951, 71, 71, 1946, 1950, 1955, 71, 71, - 71, 1948, 1949, 1952, 1953, 1954, 71, 71, 71, 71, - 71, 1962, 1960, 71, 71, 71, 1957, 71, 1961, 71, - 71, 71, 1967, 71, 1964, 71, 1956, 1958, 3070, 1959, + 71, 1921, 71, 1922, 1924, 71, 1917, 1925, 1923, 71, + 71, 1918, 71, 71, 71, 1929, 71, 1919, 71, 1927, + 71, 71, 1931, 71, 1928, 71, 71, 1934, 1930, 1936, + 71, 1926, 1932, 71, 71, 71, 71, 71, 1937, 71, + 1941, 1940, 1938, 71, 1942, 1943, 71, 1935, 1933, 1944, + 71, 1946, 71, 1939, 71, 71, 71, 71, 1947, 1945, + 1948, 71, 1949, 1950, 71, 71, 1951, 1952, 71, 1954, + 71, 71, 71, 71, 1958, 71, 71, 1953, 1957, 71, + 71, 1959, 1955, 1956, 1960, 1961, 1962, 71, 71, 71, + 71, 71, 71, 71, 1969, 1967, 1963, 1964, 1968, 71, - 71, 71, 1963, 1968, 1966, 71, 1971, 1965, 71, 1970, - 1972, 1969, 71, 71, 1977, 71, 1974, 1975, 71, 71, - 1973, 1978, 71, 71, 71, 1983, 1976, 71, 71, 1985, - 71, 71, 1986, 1987, 71, 1979, 71, 1982, 1980, 1981, - 71, 71, 71, 1989, 1984, 71, 1991, 71, 1988, 71, - 71, 1992, 71, 71, 71, 71, 71, 71, 71, 2003, - 71, 1990, 1994, 1999, 1995, 1996, 71, 2002, 1993, 1998, - 71, 71, 71, 2006, 2004, 1997, 2000, 2007, 2001, 71, - 71, 71, 2010, 71, 2009, 71, 2005, 71, 2012, 71, - 71, 2008, 2013, 71, 71, 71, 2014, 2018, 71, 2011, + 71, 71, 71, 71, 1974, 71, 71, 1965, 1971, 1966, + 1970, 71, 71, 1978, 71, 1975, 1973, 71, 1980, 1972, + 1977, 71, 71, 1976, 1984, 71, 1979, 1982, 71, 71, + 71, 1985, 71, 1990, 1983, 1981, 71, 71, 71, 71, + 71, 1992, 71, 71, 1993, 1986, 1987, 1988, 1994, 71, + 1989, 1995, 71, 71, 1991, 71, 1998, 71, 1997, 1996, + 71, 71, 1999, 71, 71, 71, 71, 71, 71, 71, + 71, 3083, 2001, 2002, 2007, 2004, 2011, 71, 2000, 2003, + 71, 2006, 2010, 71, 71, 2012, 2014, 2008, 71, 2009, + 71, 2005, 71, 2015, 2018, 2017, 71, 71, 71, 71, - 2020, 71, 2016, 2022, 71, 71, 2017, 2015, 71, 2019, - 71, 71, 2025, 2024, 71, 2021, 2026, 71, 71, 2027, - 2030, 71, 71, 71, 71, 71, 71, 2031, 2036, 71, - 71, 2023, 2033, 71, 2032, 2028, 71, 2037, 2029, 2035, - 2040, 71, 2034, 71, 71, 2038, 71, 71, 2041, 2042, - 2046, 71, 2044, 2039, 71, 71, 2048, 71, 2049, 2043, - 2045, 71, 71, 71, 71, 71, 2047, 2051, 71, 71, - 2050, 2055, 2057, 2053, 71, 71, 2054, 2058, 71, 71, - 2060, 2052, 71, 2059, 2062, 71, 2056, 2061, 71, 71, - 2063, 2067, 71, 71, 71, 2064, 71, 71, 2066, 71, + 2013, 71, 2020, 71, 2016, 2021, 71, 71, 2022, 2026, + 71, 71, 2024, 2028, 2019, 71, 71, 71, 2025, 2023, + 2030, 71, 2032, 71, 71, 2033, 71, 71, 71, 2027, + 2029, 2034, 2035, 2038, 71, 71, 71, 71, 71, 71, + 2039, 2031, 2036, 71, 2041, 2044, 71, 2040, 2037, 71, + 2045, 71, 2043, 2048, 71, 71, 2042, 71, 2046, 71, + 2049, 71, 71, 2050, 71, 2052, 2054, 71, 71, 2056, + 71, 2047, 2051, 2053, 2055, 71, 2057, 71, 71, 2058, + 71, 71, 2059, 2063, 71, 2064, 71, 71, 2065, 2061, + 71, 71, 2062, 2066, 71, 2067, 2060, 2072, 71, 2068, - 71, 71, 71, 71, 71, 71, 2076, 2077, 2065, 71, - 2071, 2068, 2069, 2070, 2072, 2073, 2074, 71, 2078, 71, - 2075, 71, 71, 2079, 71, 2081, 71, 71, 2082, 2087, - 71, 71, 2089, 71, 71, 2086, 2080, 2083, 2091, 2084, - 2088, 71, 71, 71, 3070, 2094, 2090, 2092, 71, 2085, - 2095, 71, 2096, 2097, 2093, 71, 2099, 71, 71, 71, - 2098, 2101, 71, 2100, 71, 2102, 71, 2106, 71, 71, - 2107, 71, 2110, 2109, 2115, 2105, 71, 71, 71, 2103, - 71, 2111, 2114, 2108, 71, 2112, 2113, 71, 71, 71, - 2104, 71, 2116, 71, 71, 2118, 71, 71, 71, 2120, + 71, 71, 2069, 2070, 71, 2071, 2075, 71, 71, 71, + 2074, 2073, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 2076, 2084, 2081, 2078, 2077, 2079, 2082, 2080, + 2086, 71, 71, 71, 2091, 2083, 2085, 71, 2087, 2089, + 2090, 71, 2095, 71, 71, 2093, 2097, 71, 71, 71, + 2094, 2088, 71, 2096, 2100, 2092, 2099, 71, 2102, 2104, + 2105, 71, 71, 2103, 71, 71, 71, 2098, 71, 2107, + 2101, 2106, 2109, 71, 71, 2110, 71, 2114, 71, 71, + 2115, 71, 2108, 71, 2118, 2113, 71, 71, 2120, 2111, + 71, 2119, 71, 2116, 2121, 71, 2123, 2122, 71, 71, - 71, 71, 71, 2123, 71, 71, 2129, 71, 71, 2117, - 2127, 71, 2122, 71, 71, 2130, 2125, 71, 2119, 2121, - 2124, 2126, 2132, 2131, 71, 71, 2128, 71, 71, 71, - 2136, 2139, 71, 2135, 71, 71, 2134, 2140, 71, 2133, - 2137, 71, 71, 71, 71, 71, 2138, 2150, 71, 71, - 71, 2155, 71, 2141, 2142, 2151, 2147, 71, 71, 71, - 71, 2143, 2145, 2146, 2149, 2144, 2148, 2156, 71, 71, - 2152, 71, 2153, 2154, 2157, 71, 71, 71, 2160, 2166, - 2161, 2163, 71, 2162, 2158, 71, 71, 71, 71, 2159, - 2164, 2165, 2169, 71, 2170, 71, 71, 2172, 71, 71, + 2112, 2117, 71, 2124, 71, 71, 71, 71, 2126, 71, + 71, 2128, 71, 71, 71, 2131, 71, 71, 2125, 2137, + 71, 2135, 2130, 71, 71, 71, 71, 2138, 2133, 2140, + 2127, 2132, 2129, 71, 2134, 71, 71, 71, 71, 2136, + 2139, 2144, 2147, 71, 71, 2142, 71, 71, 71, 71, + 2145, 71, 2141, 71, 2143, 2148, 2146, 71, 71, 71, + 71, 2158, 71, 2149, 71, 2150, 71, 2159, 71, 2155, + 2153, 2151, 2160, 2152, 2154, 2157, 71, 2163, 71, 2156, + 2161, 2162, 2164, 71, 71, 71, 2165, 2166, 71, 71, + 2169, 71, 71, 2167, 2172, 71, 71, 2173, 2168, 71, - 2168, 2174, 71, 71, 71, 2177, 71, 2167, 71, 2176, - 2178, 71, 71, 71, 71, 2171, 71, 2173, 2175, 71, - 71, 2180, 2179, 3070, 2183, 2184, 71, 2181, 2186, 71, - 71, 71, 71, 2182, 2189, 2185, 2188, 71, 2187, 71, - 2190, 2192, 71, 71, 2196, 71, 71, 71, 71, 71, - 71, 2193, 2194, 2200, 71, 2191, 2201, 71, 71, 2203, - 71, 71, 2195, 2199, 2206, 71, 2197, 71, 71, 2202, - 2198, 71, 71, 2204, 2208, 2205, 71, 71, 2213, 71, - 71, 2207, 2209, 71, 71, 2215, 71, 71, 2214, 2210, - 2211, 71, 2219, 71, 2216, 71, 71, 2223, 2220, 71, + 2170, 2174, 71, 2171, 71, 2178, 71, 2179, 71, 71, + 2181, 71, 71, 2183, 71, 71, 2177, 71, 71, 2175, + 2185, 71, 2176, 2186, 71, 2187, 71, 2189, 2180, 71, + 2182, 71, 2184, 71, 71, 2188, 2193, 71, 2192, 2195, + 71, 71, 71, 2190, 71, 71, 2199, 2198, 2197, 71, + 2191, 2201, 71, 2194, 71, 71, 2205, 71, 71, 2196, + 71, 2200, 71, 71, 2210, 71, 71, 2209, 2202, 2203, + 71, 71, 71, 71, 2204, 2212, 71, 2208, 2206, 2215, + 71, 71, 71, 2207, 71, 2211, 2213, 2214, 2217, 71, + 2218, 71, 2222, 2216, 71, 71, 71, 2224, 71, 2225, - 2221, 2225, 2212, 71, 71, 71, 71, 2224, 2227, 2217, - 2228, 2218, 2222, 71, 2230, 2232, 71, 71, 2233, 2229, - 71, 71, 2234, 71, 71, 2226, 71, 2231, 71, 2237, - 71, 71, 71, 2238, 71, 3070, 2236, 2239, 2243, 2240, - 2241, 2235, 2244, 71, 71, 71, 2242, 2245, 71, 71, - 71, 2248, 71, 2249, 2246, 71, 2250, 71, 2247, 71, - 2256, 71, 71, 71, 2251, 2252, 71, 2253, 2254, 71, - 71, 71, 2258, 2255, 71, 71, 71, 2257, 2259, 2263, - 2264, 71, 2262, 2267, 71, 2260, 2261, 71, 2268, 2269, - 71, 71, 71, 2266, 2265, 2270, 2271, 2272, 2273, 2274, + 2219, 71, 2220, 2223, 71, 71, 2229, 71, 71, 2230, + 2228, 71, 71, 71, 2226, 2221, 2227, 2234, 2236, 71, + 2232, 71, 2239, 71, 2237, 2241, 71, 71, 71, 2233, + 2231, 71, 2242, 71, 71, 3083, 2238, 2235, 2243, 71, + 71, 71, 2246, 71, 2240, 71, 71, 2245, 71, 2247, + 2248, 2244, 2249, 2252, 2250, 2253, 71, 71, 71, 71, + 2251, 71, 2254, 71, 2257, 2256, 2258, 71, 2255, 71, + 2259, 71, 71, 2265, 71, 71, 71, 2261, 2260, 2262, + 71, 71, 71, 2263, 71, 2267, 71, 2264, 71, 2272, + 2266, 71, 2268, 2273, 2271, 71, 71, 2269, 2316, 2270, - 71, 71, 71, 71, 71, 71, 2276, 71, 71, 71, - 2280, 2281, 71, 71, 2277, 2275, 71, 71, 2283, 71, - 2284, 2278, 2285, 2286, 71, 71, 2282, 2279, 71, 71, - 2287, 71, 2291, 71, 71, 2290, 71, 2288, 71, 71, - 71, 2293, 71, 71, 71, 71, 2297, 2292, 71, 2289, - 2299, 2300, 71, 2309, 2296, 71, 71, 71, 2294, 2295, - 71, 2301, 2302, 2298, 2303, 2304, 2305, 71, 71, 71, - 2307, 71, 71, 2314, 2310, 2306, 71, 2312, 71, 71, - 71, 71, 2311, 2308, 2313, 2316, 71, 71, 2318, 71, - 2315, 71, 71, 71, 71, 71, 2317, 71, 2322, 2319, + 2276, 71, 71, 2277, 2278, 71, 71, 2275, 71, 2279, + 2281, 2274, 2282, 2280, 2283, 71, 71, 71, 71, 71, + 2285, 71, 71, 71, 71, 2289, 2290, 71, 71, 71, + 3083, 2284, 71, 2286, 2292, 71, 2287, 71, 71, 2293, + 2294, 2291, 2288, 2295, 71, 71, 71, 2297, 2298, 71, + 2296, 2300, 71, 2299, 71, 71, 71, 71, 71, 2301, + 2302, 71, 2306, 71, 2309, 71, 71, 71, 2308, 71, + 71, 2305, 2310, 71, 2303, 2315, 2304, 71, 2313, 71, + 2314, 2307, 71, 2311, 71, 2312, 71, 2320, 2317, 71, + 2319, 2318, 71, 2322, 71, 2324, 71, 71, 2323, 2326, - 2324, 71, 2325, 2326, 71, 2320, 2327, 71, 2321, 2328, - 71, 2329, 71, 71, 71, 71, 71, 2330, 2332, 2337, - 2323, 2335, 71, 71, 71, 71, 71, 71, 2334, 2340, - 71, 71, 2336, 2333, 2331, 71, 71, 2344, 2341, 2345, - 71, 2339, 2338, 71, 71, 71, 2342, 71, 2346, 2343, - 71, 71, 2349, 2350, 2348, 71, 71, 71, 71, 3070, - 71, 71, 2347, 2354, 2351, 2356, 2357, 71, 2353, 2352, - 2358, 71, 2359, 71, 2360, 71, 71, 2355, 71, 2362, - 71, 2364, 71, 2363, 71, 2365, 71, 71, 2361, 71, - 2370, 71, 71, 71, 2366, 2372, 71, 71, 2367, 2373, + 71, 71, 2328, 71, 71, 2327, 71, 71, 2321, 2325, + 71, 71, 71, 71, 71, 2332, 71, 2334, 2335, 71, + 2330, 71, 2329, 2331, 2336, 71, 2337, 71, 2338, 71, + 2339, 2344, 2340, 71, 71, 71, 2341, 2333, 2342, 2347, + 2343, 2345, 71, 71, 2346, 71, 71, 71, 2350, 71, + 71, 71, 71, 2351, 71, 2354, 2355, 71, 71, 71, + 3083, 2348, 2349, 2356, 71, 2352, 71, 71, 2358, 2353, + 2357, 2359, 71, 71, 2360, 71, 71, 71, 2361, 71, + 2364, 2362, 2366, 2367, 71, 2363, 2368, 71, 2369, 71, + 2370, 71, 71, 71, 71, 2374, 2365, 2372, 2373, 71, - 71, 71, 71, 71, 2374, 2369, 71, 2368, 2376, 2375, - 71, 2371, 71, 71, 2377, 2379, 2382, 71, 71, 71, - 71, 71, 2383, 2378, 71, 71, 2380, 71, 2389, 71, - 71, 71, 2381, 2386, 2390, 71, 71, 71, 2388, 2385, - 2396, 71, 71, 71, 2384, 2387, 2391, 2393, 2398, 71, - 2392, 71, 2394, 2406, 2399, 2397, 2400, 71, 71, 2395, - 2401, 71, 71, 2402, 71, 2403, 71, 2404, 71, 2405, - 71, 71, 71, 71, 71, 71, 71, 2407, 2414, 71, - 71, 2412, 71, 2418, 2419, 71, 71, 71, 2408, 2409, - 2422, 71, 2410, 2411, 2413, 2415, 2421, 2416, 2417, 71, + 2375, 71, 71, 71, 2371, 71, 2380, 71, 71, 2382, + 71, 2383, 71, 2376, 2377, 71, 71, 71, 71, 71, + 71, 2379, 71, 2378, 2386, 2389, 2384, 2381, 2385, 71, + 2387, 2392, 71, 71, 71, 71, 71, 71, 71, 2388, + 71, 2399, 2390, 2393, 71, 71, 71, 71, 71, 2391, + 2396, 71, 2398, 2400, 71, 2395, 3083, 2406, 71, 2394, + 2397, 2401, 2402, 2403, 71, 71, 71, 2410, 71, 2408, + 2404, 2409, 2407, 71, 2405, 2411, 71, 71, 2412, 71, + 2413, 71, 2414, 2415, 2416, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 2424, 71, 71, 71, 71, 2422, - 71, 2424, 71, 71, 71, 71, 71, 71, 2420, 2423, - 71, 2427, 71, 2433, 71, 2434, 71, 2425, 71, 71, - 2428, 2426, 2435, 71, 2429, 2430, 2431, 71, 71, 71, - 71, 2432, 2439, 71, 2437, 71, 2436, 2443, 2442, 2444, - 71, 71, 2438, 2445, 2446, 71, 71, 71, 71, 2440, - 2441, 71, 71, 71, 71, 71, 2448, 71, 2452, 71, - 2457, 71, 2456, 2450, 71, 2447, 71, 2449, 2460, 71, - 71, 71, 2451, 71, 2453, 2455, 2454, 2461, 71, 2458, - 2464, 71, 2463, 71, 2459, 2462, 2466, 71, 71, 2469, - 71, 71, 71, 71, 2473, 71, 2465, 2472, 71, 2475, + 71, 2428, 2429, 71, 2417, 2419, 2418, 2431, 71, 2421, + 2420, 2423, 71, 2425, 2426, 2427, 71, 2430, 2432, 71, + 71, 2433, 2434, 71, 71, 71, 2435, 2437, 71, 71, + 71, 2443, 71, 71, 2436, 2444, 71, 71, 2445, 2438, + 71, 71, 71, 2439, 71, 2441, 2440, 2450, 71, 2442, + 71, 2446, 2447, 71, 71, 2449, 2454, 71, 2453, 2448, + 2455, 71, 71, 71, 2456, 2457, 71, 71, 2451, 71, + 2452, 71, 2459, 71, 71, 71, 2458, 71, 2463, 71, + 71, 2461, 2467, 2468, 71, 71, 2460, 2471, 71, 71, + 71, 2462, 71, 2472, 2464, 2466, 2465, 71, 2470, 71, - 71, 2471, 71, 2470, 71, 71, 71, 2467, 2468, 2476, - 71, 2477, 2480, 71, 71, 2481, 71, 2474, 2479, 2483, - 71, 2478, 71, 71, 71, 71, 2488, 71, 71, 2484, - 2490, 71, 2482, 2486, 2487, 2485, 71, 71, 2489, 71, - 71, 2491, 2492, 71, 71, 2494, 71, 2496, 71, 71, - 71, 2495, 2498, 2493, 2500, 2497, 71, 2503, 71, 2504, - 71, 2501, 71, 2499, 71, 2502, 71, 71, 2509, 2505, - 71, 2506, 71, 2511, 71, 2510, 71, 71, 71, 2514, - 71, 71, 2507, 2513, 2518, 2508, 2515, 71, 2517, 71, - 2516, 2512, 2519, 71, 71, 71, 2523, 2520, 71, 2521, + 2469, 2474, 2475, 71, 71, 2473, 71, 2477, 2480, 71, + 71, 71, 2476, 71, 2484, 71, 71, 2483, 2486, 71, + 2482, 71, 2481, 71, 2478, 71, 2479, 71, 2487, 71, + 2488, 2491, 71, 71, 2492, 2485, 2494, 71, 71, 2490, + 71, 2489, 71, 71, 2499, 71, 71, 2497, 2501, 71, + 71, 2493, 2498, 2495, 71, 2496, 71, 71, 71, 2502, + 71, 2500, 2503, 2505, 2504, 71, 71, 71, 2506, 71, + 71, 71, 2511, 71, 2508, 2507, 2512, 2509, 2514, 71, + 2516, 2510, 2515, 71, 71, 2513, 71, 71, 2520, 2517, + 71, 71, 2522, 71, 71, 2521, 71, 2525, 71, 2526, - 2522, 71, 71, 71, 71, 2524, 71, 71, 2525, 3070, - 2530, 2531, 71, 2526, 2529, 2528, 71, 71, 71, 71, - 71, 2527, 2535, 2532, 2533, 2534, 71, 71, 71, 71, - 71, 71, 2537, 2538, 71, 71, 71, 2543, 2536, 71, - 2541, 71, 71, 2540, 2542, 71, 71, 2539, 2544, 2548, - 71, 2550, 71, 2545, 2552, 71, 71, 71, 71, 71, - 71, 2546, 3070, 2556, 2547, 2549, 71, 2551, 2557, 71, - 2559, 2560, 2554, 2561, 2563, 2553, 71, 71, 2555, 71, - 2562, 71, 71, 71, 71, 2558, 71, 2564, 71, 71, - 2567, 71, 2565, 71, 2570, 2572, 71, 2566, 2573, 71, + 71, 2524, 71, 3083, 2518, 2519, 2528, 71, 2523, 71, + 71, 2530, 2529, 71, 71, 2527, 2531, 71, 2532, 2533, + 2534, 71, 71, 71, 71, 2535, 71, 2536, 71, 2541, + 71, 2540, 2537, 71, 2542, 71, 2539, 71, 2543, 2538, + 71, 71, 2544, 71, 71, 71, 2545, 2546, 2548, 2547, + 2549, 71, 71, 71, 71, 71, 2554, 71, 71, 71, + 71, 71, 2552, 2553, 71, 2551, 2555, 2559, 71, 2550, + 71, 2560, 71, 2564, 71, 2563, 71, 2556, 71, 2557, + 2558, 2562, 71, 71, 2569, 71, 71, 2568, 2571, 2561, + 2572, 2573, 71, 2566, 71, 2565, 71, 71, 2574, 71, - 2574, 71, 2568, 71, 2569, 71, 71, 2575, 71, 2571, - 2576, 2577, 71, 2579, 2581, 71, 71, 71, 2584, 2582, - 71, 2585, 71, 2586, 71, 71, 2578, 2580, 2587, 71, - 71, 71, 2591, 71, 71, 2592, 2583, 2593, 71, 71, - 2595, 71, 2588, 71, 71, 71, 2599, 71, 2589, 2600, - 71, 2590, 71, 71, 2594, 2602, 2596, 2601, 71, 2598, - 2603, 71, 2597, 71, 71, 71, 2608, 2611, 71, 71, - 2604, 2607, 71, 2610, 71, 71, 71, 71, 2605, 2612, - 2614, 71, 71, 2606, 2613, 2616, 71, 71, 71, 2609, - 71, 2619, 2623, 71, 71, 71, 71, 71, 2617, 2618, + 2575, 71, 2567, 71, 71, 71, 2576, 71, 71, 2579, + 71, 2570, 2577, 71, 2582, 2584, 71, 2578, 2585, 71, + 71, 2580, 71, 2581, 2586, 71, 2587, 71, 2583, 2589, + 71, 71, 2588, 71, 71, 71, 2591, 2593, 71, 2596, + 2590, 71, 2594, 71, 2599, 2592, 2597, 71, 2598, 71, + 71, 71, 71, 2601, 2595, 2603, 71, 71, 2604, 2605, + 71, 2607, 71, 2600, 71, 71, 71, 2606, 2611, 2612, + 71, 2602, 71, 2614, 71, 71, 2613, 2608, 2615, 71, + 2610, 71, 71, 2609, 71, 2620, 71, 71, 71, 71, + 2619, 71, 2622, 2623, 71, 71, 71, 2625, 2616, 2626, - 2615, 71, 2639, 71, 2622, 2620, 2625, 71, 2621, 2624, - 2627, 2630, 71, 2628, 2626, 2629, 2631, 71, 2633, 71, - 2632, 71, 2634, 71, 2635, 71, 2636, 71, 2637, 71, - 71, 71, 2640, 71, 71, 2645, 71, 71, 71, 71, - 2642, 2646, 2648, 71, 71, 2638, 2649, 2650, 71, 2651, - 2652, 71, 71, 2643, 2644, 2647, 2641, 71, 71, 71, - 71, 2653, 2657, 71, 2658, 71, 2654, 2655, 71, 71, - 2661, 71, 71, 71, 2659, 2662, 71, 2656, 2666, 71, - 2664, 71, 2663, 2660, 71, 2665, 2667, 71, 2668, 71, - 71, 71, 71, 2669, 71, 71, 71, 2670, 71, 2672, + 2624, 2617, 2618, 71, 71, 71, 2628, 71, 71, 71, + 2631, 2621, 2627, 2635, 71, 71, 71, 71, 71, 2637, + 71, 2629, 2630, 2634, 71, 2632, 71, 2638, 2633, 2636, + 2642, 2639, 2641, 2645, 71, 2643, 71, 2640, 71, 2644, + 71, 2646, 71, 2647, 71, 2648, 71, 2649, 71, 71, + 71, 71, 2653, 2651, 2650, 71, 2657, 71, 71, 2654, + 2658, 71, 71, 2661, 71, 2659, 71, 2663, 71, 2652, + 71, 2655, 71, 2662, 71, 2656, 2660, 2664, 2665, 71, + 71, 71, 71, 2666, 2670, 71, 2671, 71, 2669, 2667, + 2668, 71, 2674, 71, 71, 71, 2672, 2675, 71, 2678, - 2677, 71, 2671, 2673, 2675, 71, 71, 71, 2678, 71, - 2680, 71, 2681, 2932, 2676, 71, 2682, 2674, 2683, 2679, - 71, 2691, 71, 2685, 71, 2684, 2686, 2687, 71, 2688, - 71, 2689, 71, 2690, 71, 71, 2694, 71, 71, 71, - 2693, 71, 71, 2695, 2696, 2697, 71, 71, 71, 71, - 2702, 71, 2700, 2692, 3070, 2698, 71, 2704, 71, 71, - 71, 71, 2699, 2705, 71, 2706, 2701, 71, 2708, 2707, - 2709, 71, 2712, 71, 2703, 71, 2710, 71, 71, 71, - 71, 71, 2715, 71, 71, 2722, 71, 71, 2713, 2716, - 2714, 2711, 2719, 71, 71, 2717, 2724, 71, 2720, 71, + 71, 71, 2677, 2680, 71, 2679, 2673, 2676, 2681, 71, + 71, 71, 71, 71, 71, 2682, 71, 71, 2690, 71, + 71, 2685, 71, 71, 71, 2686, 2688, 2693, 2694, 2684, + 3083, 2691, 71, 2695, 71, 2683, 2689, 71, 71, 2687, + 71, 2692, 2697, 2696, 71, 2698, 2700, 71, 2699, 2701, + 71, 2702, 71, 71, 71, 71, 71, 2707, 2704, 2705, + 2706, 2708, 2703, 71, 71, 2710, 71, 71, 71, 2709, + 2715, 71, 2711, 2713, 71, 71, 71, 2717, 71, 2718, + 71, 71, 71, 2721, 71, 2719, 2720, 71, 2712, 2714, + 71, 2725, 71, 71, 71, 71, 71, 71, 71, 2716, - 2718, 2725, 71, 2727, 71, 71, 2723, 71, 71, 2721, - 71, 71, 2732, 71, 71, 2726, 2731, 71, 71, 2733, - 71, 2728, 71, 2729, 2730, 71, 2736, 2742, 2737, 2739, - 71, 71, 2741, 2734, 2744, 71, 2735, 2738, 71, 71, - 2740, 2745, 71, 2747, 71, 71, 71, 71, 2752, 71, - 71, 71, 3070, 2743, 71, 2750, 2749, 2756, 71, 2746, - 71, 71, 2754, 2748, 2757, 71, 2758, 2751, 2753, 71, - 2761, 2755, 2759, 2762, 71, 71, 71, 2764, 2763, 71, - 71, 71, 71, 71, 2769, 2766, 2767, 71, 71, 2760, - 71, 2772, 71, 71, 71, 71, 71, 2765, 2777, 71, + 2728, 71, 2723, 2722, 2729, 71, 2726, 2727, 71, 2732, + 2724, 71, 71, 2730, 2735, 71, 2733, 2731, 2737, 71, + 2738, 71, 2740, 71, 71, 71, 71, 2736, 71, 71, + 71, 2734, 71, 2739, 2744, 2745, 71, 71, 2749, 71, + 2741, 2742, 2743, 71, 2752, 71, 71, 71, 2746, 2754, + 71, 2748, 2755, 2747, 71, 71, 71, 2750, 2751, 2757, + 71, 2758, 71, 2760, 71, 71, 2753, 2762, 71, 2765, + 71, 71, 2756, 71, 2759, 71, 71, 2763, 2769, 71, + 71, 71, 3083, 2761, 2770, 2764, 71, 2771, 2767, 2766, + 2774, 2768, 2772, 2773, 2775, 71, 71, 71, 2777, 71, - 2773, 2768, 71, 71, 2770, 2771, 2780, 71, 2776, 2781, - 71, 2774, 2779, 71, 71, 2778, 2783, 71, 2782, 2775, - 2785, 71, 2784, 2786, 71, 2787, 71, 71, 2789, 71, - 71, 71, 2788, 2790, 71, 71, 2794, 2795, 71, 71, - 71, 71, 2799, 71, 2800, 71, 71, 71, 71, 2801, - 2798, 2837, 2791, 2792, 2796, 71, 2793, 71, 71, 2797, - 2805, 71, 2804, 2806, 71, 71, 2802, 2803, 2809, 71, - 2807, 71, 2808, 71, 71, 2812, 71, 71, 2813, 2811, - 71, 2810, 71, 71, 71, 71, 71, 2816, 71, 71, - 2818, 71, 71, 2819, 71, 2817, 71, 2814, 71, 71, + 2776, 71, 71, 71, 71, 2782, 2779, 2780, 71, 2785, + 71, 71, 71, 71, 71, 71, 71, 2778, 2790, 71, + 71, 71, 2781, 71, 2786, 2783, 2784, 71, 2789, 2792, + 2811, 2787, 2793, 71, 71, 2791, 2794, 71, 71, 2788, + 71, 2796, 2803, 2795, 71, 2797, 2798, 71, 2799, 71, + 2800, 71, 71, 2802, 71, 71, 2804, 2801, 71, 2807, + 2808, 71, 71, 71, 2812, 71, 2805, 2813, 71, 2814, + 71, 71, 71, 71, 3083, 71, 2809, 2806, 2817, 2818, + 71, 2819, 71, 2810, 71, 2821, 2822, 71, 71, 2820, + 2815, 2816, 71, 2825, 71, 71, 2824, 71, 71, 2823, - 2815, 71, 71, 2828, 2829, 2820, 71, 2824, 2821, 2822, - 2823, 2825, 2826, 2831, 71, 71, 3070, 2827, 2894, 71, - 2832, 2830, 2833, 2835, 71, 2836, 71, 2834, 2838, 71, - 2839, 71, 2840, 2841, 71, 71, 2842, 2843, 2846, 71, - 2844, 2845, 71, 71, 2847, 71, 71, 71, 71, 71, - 2853, 71, 71, 71, 2852, 71, 71, 2856, 71, 3070, - 2848, 2849, 2855, 71, 71, 2857, 2850, 71, 2851, 71, - 2861, 2862, 71, 2858, 2863, 71, 2860, 2854, 71, 2864, - 71, 2859, 2868, 2865, 2870, 71, 71, 2869, 71, 2866, - 71, 71, 2867, 71, 71, 71, 2877, 71, 2874, 2875, + 2826, 71, 71, 71, 71, 71, 2829, 71, 71, 2831, + 71, 71, 2832, 71, 2830, 71, 71, 2827, 2828, 71, + 71, 2841, 71, 71, 2833, 2842, 2837, 2834, 2835, 2836, + 2838, 2839, 2844, 71, 2943, 71, 2840, 71, 71, 2843, + 2845, 2850, 2846, 2848, 71, 71, 2847, 2849, 71, 2851, + 71, 2852, 71, 2853, 2854, 71, 71, 2855, 2856, 2859, + 71, 2857, 2858, 2861, 71, 2860, 71, 71, 71, 71, + 71, 2866, 71, 71, 71, 2865, 71, 71, 2869, 71, + 71, 2862, 71, 2868, 71, 2878, 2870, 71, 2863, 2864, + 71, 2874, 71, 2873, 2871, 2875, 71, 71, 2867, 2881, - 2878, 2872, 71, 2880, 71, 71, 71, 71, 2879, 3070, - 2871, 2926, 2873, 71, 2876, 2881, 71, 2900, 2882, 2883, - 71, 2884, 71, 2885, 71, 2886, 71, 2887, 71, 2888, - 71, 2889, 71, 2890, 71, 71, 2892, 71, 71, 71, - 71, 71, 2897, 71, 2891, 71, 71, 2893, 71, 2901, - 2903, 71, 71, 71, 71, 2898, 2905, 71, 2899, 2895, - 2896, 2902, 71, 2907, 71, 2910, 71, 2909, 71, 71, - 2904, 71, 71, 71, 2912, 2908, 71, 71, 71, 71, - 2906, 71, 2911, 2916, 2919, 2913, 71, 2917, 71, 2915, - 2914, 2918, 2920, 2921, 71, 2922, 71, 2923, 71, 71, + 2872, 2876, 71, 71, 2882, 71, 2879, 2877, 2883, 2880, + 71, 71, 2884, 71, 71, 71, 2887, 2891, 2885, 71, + 2888, 2890, 71, 71, 3083, 2892, 2893, 71, 2894, 71, + 71, 2886, 2889, 2896, 71, 2895, 2897, 71, 2898, 71, + 2899, 71, 2900, 71, 2901, 71, 2902, 71, 2903, 71, + 71, 2905, 71, 71, 71, 71, 71, 71, 71, 2904, + 2910, 71, 2906, 71, 71, 71, 2907, 71, 2914, 71, + 2913, 2911, 2916, 71, 71, 2908, 2909, 2912, 2915, 71, + 71, 2920, 2918, 2917, 71, 2923, 71, 2922, 71, 71, + 71, 71, 2921, 2925, 71, 2919, 71, 71, 71, 71, - 71, 71, 2928, 71, 71, 71, 71, 2934, 2925, 2924, - 2931, 71, 71, 71, 2930, 71, 71, 71, 71, 2933, - 2927, 71, 71, 71, 2929, 2935, 2941, 71, 2948, 71, - 2936, 2937, 2938, 2940, 2942, 71, 71, 71, 2950, 71, - 2939, 2945, 2943, 2944, 71, 2951, 2949, 2947, 71, 2946, - 2952, 71, 2953, 71, 71, 71, 71, 71, 2956, 71, - 71, 2957, 2958, 2961, 71, 71, 71, 2954, 71, 71, - 71, 2964, 2966, 71, 2955, 2960, 71, 2963, 2962, 2969, - 71, 71, 71, 71, 2959, 2967, 2972, 71, 2965, 71, - 2973, 2974, 71, 2976, 71, 2968, 2970, 2977, 71, 71, + 2924, 71, 2929, 71, 2932, 71, 2928, 2930, 2926, 2939, + 2933, 71, 2927, 71, 2931, 2934, 71, 2935, 71, 2936, + 71, 71, 2938, 71, 71, 71, 2937, 2945, 71, 2944, + 71, 2940, 71, 2947, 71, 2941, 71, 71, 71, 71, + 71, 71, 71, 2946, 71, 71, 2942, 2948, 2954, 2949, + 71, 71, 71, 2951, 2950, 2953, 2955, 2958, 2961, 71, + 71, 2967, 2956, 2952, 2959, 2957, 2963, 71, 71, 2962, + 71, 2960, 71, 2964, 2965, 71, 2966, 71, 71, 71, + 71, 2969, 71, 2974, 2970, 2971, 71, 71, 2968, 71, + 71, 71, 2979, 71, 71, 2972, 2977, 2973, 71, 2976, - 2971, 71, 71, 71, 2982, 71, 71, 2981, 2978, 2983, - 71, 2975, 71, 71, 2979, 71, 71, 2980, 71, 71, - 2987, 71, 71, 2989, 71, 71, 71, 2984, 71, 2986, - 2994, 2995, 2985, 2988, 2991, 2992, 2996, 71, 2990, 71, - 71, 3000, 71, 2993, 71, 3002, 71, 3003, 2997, 3001, - 71, 71, 71, 71, 3008, 3004, 71, 2998, 3005, 2999, - 71, 3006, 3009, 71, 71, 3011, 71, 71, 71, 3010, - 71, 3007, 3012, 71, 71, 3017, 71, 3014, 71, 71, - 3020, 71, 3021, 71, 71, 71, 3013, 71, 71, 3024, - 71, 3019, 3015, 3016, 3022, 3018, 71, 3023, 71, 3028, + 2975, 2982, 71, 71, 71, 2985, 71, 71, 2986, 2980, + 2978, 71, 71, 71, 2989, 2990, 71, 2981, 2983, 2987, + 71, 71, 2984, 71, 71, 71, 71, 2991, 71, 2992, + 2994, 2988, 2995, 71, 2996, 71, 71, 71, 71, 71, + 71, 3000, 2993, 3002, 71, 2997, 2998, 71, 3001, 71, + 2999, 71, 71, 3004, 3007, 71, 3008, 3005, 3003, 3009, + 71, 71, 3013, 71, 71, 3015, 3006, 71, 3016, 3014, + 71, 71, 3010, 3011, 71, 3017, 71, 71, 3021, 3018, + 3012, 3019, 3022, 71, 71, 71, 3024, 71, 71, 71, + 3023, 71, 3025, 71, 71, 3030, 3020, 71, 3027, 71, - 71, 3029, 71, 3027, 71, 3032, 3025, 3026, 71, 71, - 3034, 71, 3035, 3030, 71, 71, 71, 3039, 71, 3036, - 71, 71, 3037, 3041, 71, 3040, 71, 3033, 3031, 3042, - 71, 3043, 71, 3044, 71, 3038, 71, 3048, 71, 3046, - 71, 71, 71, 71, 71, 71, 3050, 3051, 71, 3054, - 71, 3045, 3055, 71, 3070, 3047, 71, 3058, 71, 3049, - 3059, 71, 3052, 3053, 3056, 3060, 3061, 71, 71, 3057, - 3062, 71, 71, 71, 71, 3063, 71, 3064, 3065, 3068, - 71, 3069, 71, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3066, 3070, 3067, 43, 43, 43, 43, + 3033, 71, 71, 3034, 71, 71, 71, 71, 3026, 71, + 71, 3037, 3028, 3029, 3035, 3032, 3031, 3036, 71, 3041, + 71, 71, 71, 3040, 71, 3042, 3038, 71, 3039, 71, + 3045, 71, 3047, 71, 3043, 71, 3048, 71, 3049, 3052, + 71, 71, 71, 3046, 3050, 71, 3051, 3053, 3044, 71, + 71, 3054, 3055, 71, 71, 3061, 71, 3056, 71, 71, + 3058, 3057, 71, 3059, 3060, 71, 71, 3063, 71, 71, + 3064, 71, 3067, 3068, 71, 71, 71, 3071, 3062, 3072, + 71, 3083, 71, 3074, 71, 3065, 71, 3066, 3069, 3073, + 3075, 71, 71, 3076, 3070, 71, 71, 3077, 71, 3083, - 43, 43, 43, 48, 48, 48, 48, 48, 48, 48, - 53, 53, 53, 53, 53, 53, 53, 59, 59, 59, - 59, 59, 59, 59, 64, 64, 64, 64, 64, 64, - 64, 74, 74, 3070, 74, 74, 74, 74, 141, 141, - 3070, 3070, 3070, 141, 141, 143, 143, 3070, 3070, 143, - 3070, 143, 145, 3070, 3070, 3070, 3070, 3070, 145, 148, - 148, 3070, 3070, 3070, 148, 148, 150, 3070, 3070, 3070, - 3070, 3070, 150, 152, 152, 3070, 152, 152, 152, 152, - 75, 75, 3070, 75, 75, 75, 75, 13, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, + 3078, 3081, 71, 3082, 71, 3083, 3083, 3083, 3083, 3083, + 3083, 3083, 3083, 3083, 3083, 3079, 3083, 3080, 43, 43, + 43, 43, 43, 43, 43, 48, 48, 48, 48, 48, + 48, 48, 53, 53, 53, 53, 53, 53, 53, 59, + 59, 59, 59, 59, 59, 59, 64, 64, 64, 64, + 64, 64, 64, 74, 74, 3083, 74, 74, 74, 74, + 141, 141, 3083, 3083, 3083, 141, 141, 143, 143, 3083, + 3083, 143, 3083, 143, 145, 3083, 3083, 3083, 3083, 3083, + 145, 148, 148, 3083, 3083, 3083, 148, 148, 150, 3083, + 3083, 3083, 3083, 3083, 150, 152, 152, 3083, 152, 152, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070 + 152, 152, 75, 75, 3083, 75, 75, 75, 75, 13, + 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, + 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, + 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, + 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083 } ; -static const flex_int16_t yy_chk[6029] = +static const flex_int16_t yy_chk[6051] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2107,13 +2115,13 @@ static const flex_int16_t yy_chk[6029] = 5, 3, 6, 20, 4, 20, 20, 5, 20, 6, 7, 7, 7, 7, 20, 7, 8, 8, 8, 8, 29, 8, 7, 9, 9, 9, 22, 22, 8, 10, - 10, 10, 15, 25, 9, 29, 15, 25, 3076, 31, + 10, 10, 15, 25, 9, 29, 15, 25, 3089, 31, 10, 11, 11, 11, 11, 11, 11, 19, 79, 19, 19, 30, 19, 11, 31, 79, 30, 25, 19, 19, 47, 47, 11, 12, 12, 12, 12, 12, 12, 21, 23, 23, 21, 21, 24, 12, 21, 81, 23, 24, - 34, 21, 23, 24, 12, 23, 24, 1010, 24, 24, + 34, 21, 23, 24, 12, 23, 24, 1012, 24, 24, 21, 26, 26, 27, 27, 90, 28, 81, 32, 32, 28, 34, 27, 28, 33, 33, 26, 32, 36, 33, 28, 35, 28, 32, 90, 42, 35, 32, 52, 84, @@ -2236,532 +2244,534 @@ static const flex_int16_t yy_chk[6029] = 522, 521, 524, 526, 526, 528, 528, 529, 529, 530, 532, 533, 534, 532, 535, 530, 533, 536, 531, 537, 536, 538, 535, 539, 537, 540, 541, 543, 544, 540, - 542, 534, 541, 544, 542, 545, 547, 546, 548, 550, - 553, 547, 539, 546, 538, 543, 549, 551, 551, 549, - 552, 557, 548, 556, 549, 545, 553, 550, 549, 554, - 555, 560, 59, 559, 554, 555, 557, 556, 552, 559, - 560, 561, 562, 563, 561, 566, 562, 564, 563, 565, + 542, 534, 541, 544, 542, 545, 547, 546, 548, 551, + 551, 547, 539, 546, 538, 543, 549, 550, 552, 549, + 59, 553, 548, 557, 549, 545, 554, 549, 549, 555, + 556, 554, 560, 559, 555, 550, 552, 553, 557, 559, + 561, 560, 562, 561, 556, 563, 562, 565, 564, 566, - 564, 567, 569, 570, 565, 571, 572, 572, 570, 574, - 575, 566, 573, 576, 578, 569, 54, 577, 562, 567, - 578, 573, 576, 584, 579, 571, 575, 612, 574, 577, - 579, 580, 581, 581, 580, 581, 582, 583, 585, 582, - 586, 584, 583, 587, 588, 612, 586, 596, 587, 592, - 588, 589, 585, 590, 589, 591, 593, 595, 590, 594, - 591, 591, 592, 595, 594, 597, 596, 598, 599, 593, - 600, 600, 598, 601, 597, 604, 603, 608, 594, 594, - 601, 602, 603, 613, 602, 605, 606, 604, 599, 610, - 605, 606, 606, 607, 607, 609, 611, 609, 611, 602, + 563, 564, 565, 567, 569, 570, 571, 572, 572, 574, + 570, 573, 577, 575, 576, 566, 578, 569, 562, 579, + 573, 567, 578, 576, 577, 579, 571, 580, 574, 575, + 580, 581, 581, 582, 581, 583, 582, 584, 585, 586, + 583, 587, 588, 596, 589, 586, 587, 589, 588, 590, + 592, 591, 585, 593, 590, 584, 591, 591, 608, 594, + 597, 595, 596, 592, 594, 598, 593, 595, 599, 597, + 598, 600, 600, 601, 602, 603, 54, 602, 594, 594, + 601, 603, 604, 608, 605, 606, 607, 607, 599, 605, + 606, 606, 602, 609, 604, 609, 610, 611, 612, 611, - 614, 613, 608, 615, 616, 617, 618, 619, 610, 624, - 618, 617, 620, 621, 622, 623, 619, 626, 614, 627, - 625, 624, 615, 626, 616, 628, 629, 620, 621, 630, - 633, 632, 622, 627, 623, 625, 631, 628, 634, 635, - 631, 636, 637, 639, 639, 629, 633, 637, 630, 632, - 638, 640, 641, 643, 642, 640, 634, 635, 635, 645, - 636, 644, 646, 647, 638, 642, 644, 643, 649, 651, - 648, 641, 650, 649, 651, 645, 647, 648, 652, 650, - 653, 646, 654, 652, 655, 656, 657, 659, 658, 654, - 662, 660, 659, 655, 660, 657, 663, 661, 653, 656, + 613, 614, 615, 616, 617, 618, 622, 620, 619, 618, + 617, 621, 623, 624, 625, 610, 612, 619, 613, 614, + 627, 615, 620, 616, 622, 624, 621, 626, 628, 625, + 629, 623, 630, 626, 627, 631, 632, 633, 634, 631, + 628, 635, 636, 637, 638, 639, 639, 53, 637, 629, + 641, 630, 642, 633, 632, 646, 634, 643, 638, 635, + 635, 636, 640, 642, 645, 644, 640, 653, 647, 641, + 644, 643, 648, 649, 646, 650, 656, 48, 649, 648, + 645, 647, 650, 651, 652, 653, 654, 655, 651, 652, + 656, 657, 658, 654, 659, 660, 655, 661, 660, 659, - 658, 661, 664, 666, 662, 663, 665, 667, 667, 668, - 668, 669, 669, 670, 672, 673, 674, 664, 668, 675, - 665, 673, 670, 675, 666, 676, 677, 678, 679, 682, - 680, 683, 681, 672, 679, 684, 674, 676, 680, 681, - 693, 705, 690, 687, 694, 678, 705, 682, 695, 693, - 694, 677, 697, 697, 700, 684, 683, 685, 687, 690, - 699, 696, 685, 702, 695, 696, 685, 698, 698, 685, - 701, 699, 700, 706, 703, 707, 685, 685, 720, 685, - 703, 708, 53, 702, 701, 704, 704, 704, 709, 704, - 720, 709, 704, 707, 706, 710, 710, 704, 711, 712, + 657, 661, 662, 663, 658, 664, 666, 665, 667, 667, + 668, 668, 663, 669, 669, 670, 662, 672, 674, 668, + 664, 665, 673, 676, 670, 675, 677, 666, 673, 675, + 678, 679, 680, 683, 681, 676, 672, 679, 674, 682, + 680, 681, 684, 690, 687, 693, 694, 702, 678, 695, + 699, 677, 694, 700, 693, 697, 697, 682, 683, 687, + 690, 699, 684, 685, 701, 695, 696, 702, 685, 706, + 696, 700, 685, 698, 698, 685, 705, 707, 701, 708, + 703, 705, 685, 685, 726, 685, 703, 704, 704, 704, + 706, 704, 726, 709, 704, 707, 709, 710, 710, 704, - 712, 713, 721, 704, 704, 711, 708, 714, 714, 715, - 716, 722, 717, 716, 715, 722, 713, 717, 718, 718, - 719, 721, 719, 723, 725, 724, 726, 726, 728, 730, - 727, 732, 725, 729, 729, 733, 731, 735, 735, 746, - 746, 733, 728, 723, 724, 727, 734, 730, 731, 736, - 739, 734, 738, 732, 736, 736, 739, 738, 740, 743, - 741, 742, 743, 744, 740, 741, 745, 742, 748, 744, - 747, 747, 749, 750, 745, 751, 748, 752, 750, 753, - 753, 755, 751, 754, 757, 756, 759, 761, 760, 755, - 749, 756, 754, 762, 767, 759, 752, 760, 762, 763, + 711, 712, 712, 713, 708, 704, 704, 711, 714, 715, + 715, 716, 717, 714, 718, 717, 716, 721, 713, 718, + 719, 719, 720, 722, 720, 724, 723, 725, 728, 721, + 723, 727, 727, 729, 730, 730, 731, 732, 733, 736, + 736, 992, 722, 728, 734, 724, 725, 729, 735, 732, + 734, 737, 992, 735, 731, 740, 737, 737, 739, 741, + 733, 740, 742, 739, 743, 741, 744, 742, 745, 744, + 743, 746, 747, 747, 745, 748, 748, 749, 750, 746, + 752, 751, 753, 754, 754, 749, 751, 752, 755, 757, + 756, 758, 762, 760, 761, 757, 750, 755, 756, 763, - 765, 764, 766, 757, 764, 765, 768, 769, 763, 771, - 771, 761, 770, 772, 773, 768, 766, 770, 770, 767, - 769, 774, 775, 776, 780, 778, 776, 778, 772, 782, - 774, 779, 779, 773, 776, 781, 783, 784, 785, 786, - 781, 788, 787, 789, 790, 780, 775, 789, 791, 792, - 782, 787, 793, 794, 795, 792, 783, 784, 796, 786, - 785, 793, 790, 797, 788, 794, 798, 791, 801, 797, - 799, 803, 796, 795, 802, 799, 800, 800, 804, 805, - 798, 806, 807, 802, 808, 813, 804, 809, 801, 810, - 812, 803, 811, 809, 814, 810, 812, 817, 818, 805, + 764, 753, 760, 761, 763, 765, 766, 767, 765, 764, + 758, 766, 768, 769, 770, 773, 762, 774, 771, 772, + 772, 767, 769, 771, 771, 775, 776, 770, 777, 784, + 773, 777, 781, 779, 775, 779, 774, 768, 782, 777, + 780, 780, 783, 782, 785, 786, 787, 788, 789, 784, + 776, 790, 791, 781, 792, 790, 788, 796, 797, 793, + 794, 43, 795, 783, 785, 793, 787, 786, 799, 794, + 791, 789, 797, 792, 795, 798, 796, 802, 800, 801, + 801, 798, 799, 800, 803, 804, 805, 806, 807, 808, + 810, 809, 811, 803, 805, 812, 810, 802, 811, 814, - 814, 807, 815, 806, 808, 813, 811, 816, 815, 819, - 818, 816, 820, 824, 819, 822, 817, 825, 818, 821, - 821, 822, 823, 826, 827, 823, 828, 828, 829, 826, - 825, 824, 830, 820, 831, 831, 832, 830, 833, 834, - 834, 835, 833, 837, 827, 836, 829, 838, 837, 840, - 841, 832, 843, 844, 846, 846, 847, 849, 849, 48, - 847, 848, 850, 835, 841, 836, 838, 851, 852, 869, - 869, 851, 843, 840, 844, 845, 848, 854, 845, 853, - 845, 855, 854, 852, 845, 857, 845, 850, 859, 861, - 858, 845, 856, 853, 858, 855, 845, 856, 856, 857, + 813, 14, 818, 819, 821, 804, 813, 806, 808, 812, + 807, 809, 815, 817, 816, 819, 828, 817, 815, 814, + 816, 818, 820, 819, 823, 821, 825, 820, 822, 822, + 823, 824, 826, 827, 824, 830, 828, 829, 829, 827, + 833, 831, 832, 832, 825, 826, 831, 834, 835, 835, + 836, 834, 838, 830, 837, 833, 839, 838, 841, 842, + 844, 848, 845, 847, 847, 848, 849, 850, 850, 851, + 853, 855, 836, 842, 837, 839, 855, 854, 856, 899, + 844, 849, 841, 845, 846, 853, 852, 846, 899, 846, + 852, 854, 856, 846, 851, 846, 857, 858, 860, 859, - 860, 861, 862, 859, 863, 860, 858, 862, 864, 865, - 866, 867, 872, 868, 873, 860, 866, 867, 863, 868, - 870, 871, 874, 865, 876, 870, 877, 871, 904, 864, - 878, 877, 881, 873, 872, 882, 876, 881, 879, 883, - 874, 875, 875, 882, 878, 880, 880, 875, 904, 875, - 879, 884, 885, 883, 887, 875, 886, 886, 887, 889, - 875, 875, 891, 890, 892, 889, 890, 875, 893, 895, - 884, 885, 43, 894, 893, 897, 898, 892, 894, 899, - 900, 891, 901, 902, 897, 898, 900, 903, 895, 905, - 906, 901, 903, 907, 910, 899, 911, 908, 909, 914, + 846, 857, 857, 859, 861, 846, 862, 863, 864, 861, + 865, 858, 863, 860, 866, 859, 873, 867, 862, 861, + 868, 869, 864, 867, 870, 870, 868, 869, 866, 871, + 872, 865, 874, 877, 871, 875, 872, 878, 873, 882, + 880, 883, 878, 879, 882, 877, 881, 881, 885, 883, + 884, 874, 880, 875, 876, 876, 886, 879, 887, 887, + 876, 888, 876, 890, 884, 888, 892, 885, 876, 890, + 894, 897, 893, 876, 876, 886, 891, 893, 895, 891, + 876, 896, 900, 894, 895, 892, 896, 901, 902, 903, + 897, 900, 904, 906, 902, 905, 907, 908, 903, 910, - 910, 917, 902, 905, 916, 907, 908, 909, 912, 918, - 906, 919, 920, 911, 912, 914, 921, 922, 916, 923, - 927, 917, 922, 930, 923, 919, 932, 926, 918, 927, - 920, 921, 926, 928, 928, 929, 930, 935, 933, 936, - 935, 929, 932, 933, 933, 934, 934, 937, 938, 934, - 939, 941, 940, 936, 942, 943, 944, 945, 946, 947, - 942, 950, 944, 946, 938, 940, 941, 937, 939, 953, - 14, 949, 945, 947, 949, 943, 951, 956, 952, 954, - 959, 951, 950, 952, 954, 953, 955, 958, 960, 956, - 964, 955, 961, 958, 960, 963, 959, 967, 961, 962, + 905, 912, 909, 901, 913, 918, 911, 912, 910, 916, + 907, 904, 914, 906, 909, 911, 919, 908, 914, 918, + 920, 913, 922, 921, 924, 916, 923, 925, 928, 924, + 930, 930, 925, 928, 929, 932, 919, 921, 931, 920, + 922, 923, 934, 929, 931, 935, 937, 938, 932, 937, + 935, 935, 936, 936, 939, 940, 936, 941, 934, 942, + 944, 938, 943, 945, 946, 947, 944, 949, 948, 952, + 946, 940, 942, 948, 939, 941, 951, 943, 955, 951, + 947, 949, 953, 945, 954, 958, 956, 953, 957, 954, + 952, 956, 960, 957, 955, 961, 962, 958, 960, 963, - 962, 968, 965, 969, 963, 965, 966, 966, 964, 970, - 972, 971, 970, 973, 979, 967, 972, 974, 980, 973, - 968, 975, 974, 969, 971, 976, 975, 977, 981, 986, - 976, 982, 979, 977, 981, 984, 982, 985, 980, 983, - 983, 987, 988, 990, 984, 988, 985, 986, 989, 991, - 992, 989, 993, 994, 990, 995, 999, 996, 997, 994, - 987, 995, 992, 997, 998, 998, 1000, 991, 1003, 1001, - 1002, 993, 996, 1004, 1002, 999, 1005, 1006, 1008, 1011, - 1000, 1001, 1004, 1009, 1009, 1012, 1003, 1013, 1017, 1014, - 1016, 1016, 1015, 1011, 1014, 1005, 13, 1008, 1018, 1013, + 964, 964, 962, 965, 966, 963, 967, 968, 968, 967, + 969, 961, 965, 970, 971, 972, 973, 974, 972, 975, + 981, 976, 966, 974, 982, 975, 976, 979, 969, 973, + 977, 978, 970, 979, 971, 977, 978, 983, 981, 986, + 984, 985, 985, 983, 982, 984, 987, 988, 986, 989, + 990, 991, 993, 990, 991, 987, 995, 994, 996, 998, + 997, 1001, 999, 1002, 996, 988, 997, 999, 989, 994, + 993, 1000, 1000, 1003, 998, 995, 1005, 1002, 1004, 1006, + 1001, 1007, 1004, 1008, 1010, 1003, 1011, 1011, 1006, 1015, + 1013, 1014, 1016, 1017, 1005, 1018, 1018, 1016, 1019, 1020, - 1012, 1015, 1006, 1019, 1018, 1020, 1023, 1022, 1017, 1019, - 1020, 1021, 1022, 1021, 1024, 1026, 1025, 1027, 1028, 1029, - 1023, 1025, 1030, 1032, 1032, 1028, 1033, 1034, 1024, 1035, - 1026, 1036, 1037, 1145, 1029, 1145, 1027, 1036, 1040, 1040, - 1033, 1030, 1038, 1041, 1035, 1034, 1043, 1038, 1041, 1042, - 1042, 1044, 1037, 1043, 1045, 1046, 1038, 1045, 1038, 1047, - 1048, 1038, 1049, 1050, 1052, 1044, 1051, 1049, 1053, 1048, - 1058, 1051, 1055, 1055, 1046, 1052, 1056, 1047, 1057, 1059, - 1064, 1056, 1050, 1057, 1059, 1060, 1061, 1053, 1062, 1060, - 1058, 1063, 1065, 1066, 1067, 1061, 1069, 1068, 1070, 1064, + 1007, 1015, 1017, 1010, 1013, 1020, 1014, 1021, 1008, 1022, + 1023, 1024, 1023, 1021, 1022, 1025, 1024, 1026, 1019, 1027, + 1028, 1029, 1031, 1030, 1027, 1032, 1034, 1034, 1035, 1025, + 1030, 1026, 1036, 1037, 1039, 1028, 13, 1031, 1043, 1038, + 1029, 1040, 1035, 1043, 1032, 1038, 1040, 1046, 1037, 1045, + 1036, 1042, 1042, 1048, 1039, 1040, 1045, 1040, 1044, 1044, + 1040, 1046, 1047, 1049, 1050, 1047, 1051, 1052, 1054, 1053, + 1055, 1051, 1048, 1050, 1053, 1057, 1057, 1058, 1059, 1054, + 1060, 1049, 1058, 1059, 1062, 1061, 1052, 1063, 1062, 1055, + 1061, 1064, 1065, 1066, 1069, 1068, 1063, 1067, 1071, 1070, - 1071, 1067, 1073, 1062, 1065, 1072, 1063, 1074, 1066, 1068, - 1075, 1072, 1076, 1081, 1078, 1069, 1080, 1073, 1071, 1070, - 1078, 1076, 1079, 1082, 1080, 1083, 1084, 1074, 1082, 1085, - 1075, 1084, 1084, 1081, 1087, 1086, 1079, 1083, 1088, 1088, - 1090, 0, 1091, 1093, 1093, 1095, 1092, 1087, 1085, 1086, - 1089, 1091, 1092, 1090, 1095, 1089, 1094, 1097, 1089, 1089, - 1096, 1094, 1097, 1089, 1100, 1098, 1096, 1099, 1099, 1089, - 1098, 1101, 1101, 1089, 1102, 1103, 1104, 1102, 1105, 1102, - 1106, 1107, 1108, 1109, 1110, 1100, 1107, 1105, 1112, 1147, - 1110, 1111, 1147, 1112, 1104, 1103, 1108, 1111, 1113, 1114, + 1060, 1069, 1072, 1073, 1075, 1076, 1064, 1065, 1074, 1067, + 1068, 1070, 1066, 1077, 1074, 1078, 1080, 1071, 1081, 1075, + 1082, 1073, 1080, 1072, 1078, 1076, 1083, 1084, 1082, 1085, + 1086, 1087, 1081, 1077, 1085, 1088, 1087, 1087, 1089, 0, + 1090, 1094, 1086, 1084, 1091, 1091, 1083, 1098, 1093, 1106, + 1094, 1095, 1089, 1090, 1088, 1092, 1098, 1095, 1096, 1096, + 1092, 1093, 1097, 1092, 1092, 1099, 1103, 1097, 1092, 1106, + 1100, 1099, 1101, 1107, 1092, 1100, 1108, 1101, 1092, 1102, + 1102, 1104, 1104, 1105, 1109, 1108, 1105, 1103, 1105, 1110, + 1112, 1107, 1111, 1113, 1110, 1114, 1116, 1115, 1117, 1113, - 1106, 1109, 1113, 1115, 1115, 1117, 1116, 1116, 1114, 1116, - 1119, 1120, 1121, 1114, 1119, 1114, 1117, 1114, 1122, 1114, - 1125, 1127, 1124, 1123, 1128, 1129, 1120, 1122, 1123, 1123, - 1121, 1124, 1126, 1128, 1130, 1127, 1131, 1126, 1134, 1132, - 1133, 1133, 1125, 1135, 1129, 1132, 1134, 1136, 1137, 1138, - 1131, 1139, 1136, 1130, 1140, 1141, 1143, 1135, 1138, 1149, - 1141, 1150, 1137, 1142, 1142, 1144, 1144, 1148, 1152, 1139, - 1150, 1143, 1148, 1151, 1151, 1153, 1153, 1155, 1149, 1140, - 1154, 1154, 1155, 1156, 1157, 1158, 1158, 1159, 1152, 1160, - 1161, 1162, 1160, 1163, 1165, 1164, 1162, 1164, 1167, 1168, + 1116, 1114, 1115, 1124, 1109, 1128, 1111, 1117, 1112, 1118, + 1118, 1122, 1117, 1120, 1117, 1122, 1117, 1123, 1117, 1119, + 1119, 1124, 1119, 1126, 1120, 1125, 1127, 1128, 1126, 1126, + 1130, 1129, 1123, 1131, 1125, 1127, 1129, 1132, 1133, 1134, + 1135, 1137, 1131, 1141, 1130, 1138, 1135, 1136, 1136, 1137, + 1139, 1140, 1141, 1134, 1142, 1139, 1132, 1133, 1143, 1138, + 1146, 1144, 1145, 1145, 1155, 1140, 1144, 1147, 1147, 1148, + 1150, 1148, 1142, 1150, 1151, 1146, 1152, 1153, 1159, 1151, + 1154, 1154, 1160, 1143, 1155, 1162, 1153, 1156, 1156, 1157, + 1157, 1158, 1161, 1161, 1163, 1152, 1158, 1163, 1164, 1159, - 0, 1167, 1163, 1169, 1156, 1157, 1170, 1159, 1169, 1172, - 1161, 1171, 1165, 1173, 1168, 1177, 1171, 1172, 1173, 1174, - 1170, 1175, 1175, 1176, 1174, 1178, 1180, 1179, 1176, 1182, - 1183, 1178, 1184, 1177, 1179, 1182, 1183, 1184, 1185, 1180, - 1186, 1187, 1188, 1190, 1185, 1189, 1189, 1192, 1193, 1186, - 1194, 1195, 1196, 1188, 1199, 1198, 1194, 1195, 1196, 1200, - 1187, 1198, 1205, 1190, 1201, 1203, 1202, 1192, 1199, 1204, - 1204, 1193, 1206, 1207, 1199, 1210, 1201, 1209, 1209, 1200, - 1202, 1208, 1205, 1203, 1211, 1213, 1208, 1214, 1215, 1211, - 1216, 1207, 1214, 1214, 1217, 1218, 1219, 1206, 1210, 1216, + 1166, 1165, 1167, 1160, 1167, 1162, 1165, 1168, 1170, 1166, + 1172, 1170, 1171, 1182, 1173, 1172, 1174, 1180, 1164, 1176, + 1182, 1174, 1175, 0, 1176, 1168, 1177, 1171, 1173, 1179, + 1175, 1177, 1178, 1178, 1179, 1180, 1181, 1183, 1185, 1186, + 1190, 1187, 1181, 1188, 1185, 1186, 1187, 1189, 1193, 1188, + 1183, 1191, 1192, 1192, 1195, 1196, 1189, 1197, 1198, 1190, + 1199, 1201, 1191, 1197, 1198, 1202, 1199, 1201, 1193, 1203, + 1204, 1209, 1205, 1206, 1195, 1207, 1207, 1208, 1196, 1202, + 1210, 1213, 1204, 1211, 1216, 1202, 1205, 1218, 1211, 1203, + 1214, 1206, 1212, 1212, 1217, 1214, 1209, 1208, 1210, 1217, - 1220, 1222, 1217, 1222, 1213, 1221, 1215, 1223, 1225, 1218, - 1221, 1219, 1226, 1221, 1225, 1220, 1226, 1227, 1220, 1228, - 1229, 1223, 1230, 1231, 1228, 1228, 1232, 1233, 1227, 1234, - 1235, 1232, 1237, 1238, 1234, 1239, 1240, 1240, 1241, 1229, - 1242, 1231, 1241, 1243, 1245, 1233, 1237, 1246, 1230, 1244, - 1235, 1238, 1248, 1239, 1247, 1244, 1245, 1249, 1242, 1250, - 1251, 1254, 1243, 1252, 1253, 1251, 1246, 1248, 1247, 1253, - 1252, 1255, 1249, 1256, 1256, 1257, 1258, 1259, 1250, 1254, - 1255, 1260, 1258, 1261, 1269, 1262, 1260, 1263, 1263, 1261, - 1257, 1262, 1264, 1264, 1266, 1266, 1267, 1268, 1259, 1270, + 1217, 1219, 1221, 1216, 1213, 1218, 1220, 1222, 1223, 1225, + 1219, 1225, 1224, 1226, 1220, 1228, 1221, 1224, 1230, 1232, + 1224, 1228, 1222, 1223, 1229, 1231, 1223, 1226, 1229, 1230, + 1231, 1231, 1233, 1234, 1235, 1236, 1237, 1238, 1232, 1235, + 1240, 1237, 1241, 1242, 1243, 1243, 1244, 1245, 1246, 1247, + 1244, 1234, 1248, 1236, 1240, 1247, 1249, 1238, 1233, 1250, + 1241, 1242, 1251, 1252, 1248, 1245, 1253, 1246, 1257, 1254, + 1262, 1256, 1255, 1250, 1254, 1249, 1256, 1251, 1252, 1255, + 1258, 1259, 1259, 1260, 1261, 1253, 1257, 1263, 1264, 1258, + 1261, 1262, 1263, 1265, 1264, 1266, 1267, 1267, 1260, 1265, - 1267, 1271, 1269, 1272, 1273, 1273, 1268, 1274, 1277, 1275, - 1272, 1278, 1281, 1270, 1276, 1279, 1271, 1275, 1280, 1276, - 1279, 1279, 1277, 1280, 1280, 1282, 1282, 1274, 1283, 1284, - 1278, 1285, 1281, 1286, 1287, 1288, 1289, 1290, 1286, 1291, - 1285, 1292, 1294, 1290, 1291, 1293, 1295, 1283, 1284, 1297, - 1296, 1293, 1295, 1287, 1289, 1288, 1296, 1298, 1299, 1300, - 1301, 1294, 1302, 1306, 1303, 1304, 1304, 1292, 1297, 1305, - 1307, 1307, 1305, 1311, 1301, 1306, 1298, 1299, 1300, 1303, - 1308, 1308, 1309, 1302, 1310, 1312, 1311, 1309, 1310, 1313, - 1314, 1318, 1314, 1316, 1312, 1317, 1314, 1319, 1320, 1325, + 1272, 1266, 1268, 1268, 1270, 1270, 1271, 1273, 1274, 1272, + 1271, 1275, 1276, 1277, 1277, 1278, 1279, 1281, 1280, 1276, + 1282, 1287, 1274, 1280, 1279, 1273, 1275, 1283, 1285, 1286, + 1286, 1281, 1283, 1283, 1288, 1278, 1284, 1289, 1290, 1282, + 1287, 1284, 1284, 1290, 1291, 1292, 1289, 1295, 1285, 1293, + 1294, 1296, 1295, 1288, 1297, 1298, 1294, 1301, 1299, 1302, + 1297, 1303, 1300, 1291, 1299, 1292, 1304, 1293, 1300, 1305, + 1306, 1307, 1308, 1308, 1298, 1310, 1301, 1296, 1302, 1309, + 1303, 0, 1309, 1305, 1315, 1304, 1307, 1310, 1311, 1311, + 1313, 1306, 1312, 1312, 1314, 1313, 1316, 1315, 1314, 1317, - 1317, 1323, 1313, 1321, 1321, 1322, 1318, 1323, 1324, 1314, - 1322, 1316, 1325, 1326, 1320, 1327, 1328, 1319, 1326, 1327, - 1328, 1329, 1330, 1324, 1331, 1332, 1333, 1333, 1335, 1337, - 1338, 1332, 1339, 1339, 1341, 1338, 1340, 1343, 1343, 1347, - 1330, 1329, 1340, 1348, 1331, 1345, 1335, 1351, 1345, 1352, - 1337, 1346, 1346, 1350, 1341, 1347, 1350, 1354, 1352, 1348, - 1353, 1353, 1355, 1356, 1357, 1358, 1360, 1351, 1361, 1357, - 1359, 1359, 1354, 1362, 1363, 1360, 1364, 1364, 1365, 1358, - 1366, 1368, 1356, 1355, 1367, 1371, 1361, 1373, 1362, 1367, - 1369, 1369, 1365, 1370, 1372, 1372, 1368, 1370, 1366, 1363, + 1318, 1322, 1318, 1320, 1321, 1316, 1318, 1323, 1324, 1321, + 1325, 1325, 1317, 1326, 1327, 1328, 1322, 1333, 1326, 1318, + 1327, 1320, 1329, 1330, 1324, 1331, 1334, 1323, 1330, 1331, + 1328, 1335, 1332, 1336, 1339, 1329, 1332, 1333, 1341, 1336, + 1337, 1337, 1342, 1344, 1334, 1343, 1343, 1342, 1345, 1344, + 1351, 1335, 1339, 1347, 1347, 1349, 1350, 1350, 1349, 1341, + 1352, 1354, 1355, 1356, 1354, 1358, 1351, 1359, 1345, 1357, + 1357, 1360, 1356, 1361, 1365, 1362, 1352, 1364, 1361, 1366, + 1358, 1367, 1355, 1363, 1363, 1369, 1364, 1370, 1359, 1362, + 1360, 1375, 1365, 1371, 1366, 1368, 1368, 1372, 1371, 1369, - 1374, 1376, 1375, 1377, 1380, 1371, 1375, 1381, 1377, 1373, - 1382, 1374, 1379, 1379, 1383, 1384, 1385, 1385, 1386, 1387, - 1376, 1381, 1380, 1386, 1388, 1389, 1390, 1391, 1383, 1382, - 1382, 1390, 1393, 1392, 1389, 1392, 1394, 1393, 1395, 1387, - 1384, 1398, 1394, 1396, 1388, 1399, 1399, 1391, 1400, 1396, - 1401, 1404, 1403, 1405, 1405, 1398, 1401, 1403, 1395, 1406, - 1406, 1408, 1407, 1409, 1413, 1410, 1415, 1400, 1410, 1411, - 1411, 1412, 1415, 1421, 1414, 1404, 1407, 1414, 1409, 1408, - 1414, 1416, 1417, 1412, 1413, 1417, 1416, 1419, 1420, 1423, - 1430, 1422, 1414, 1420, 1422, 1423, 1419, 1424, 1421, 1425, + 1373, 1373, 1377, 1374, 1378, 1370, 1367, 1374, 1376, 1376, + 1379, 1375, 1372, 1380, 1379, 1378, 1381, 1383, 1383, 1384, + 1385, 1381, 1386, 1388, 1377, 1387, 1389, 1389, 1390, 1391, + 1392, 1393, 1380, 1390, 1385, 1395, 1399, 1384, 1394, 1387, + 1393, 1386, 1386, 1394, 1396, 1398, 1396, 1397, 1388, 1391, + 1392, 1398, 1397, 1400, 1402, 1395, 1399, 1403, 1403, 1400, + 1404, 1405, 1408, 1411, 1407, 1409, 1409, 1405, 1402, 1407, + 1410, 1410, 1412, 1413, 1423, 1414, 1417, 1411, 1414, 1404, + 1415, 1415, 1416, 1423, 1421, 1419, 1408, 1421, 1413, 1418, + 1412, 1419, 1418, 1420, 1416, 1418, 1417, 1424, 1420, 1425, - 1425, 1417, 1424, 1426, 1426, 1427, 1429, 1428, 1430, 1431, - 1432, 1427, 1428, 1433, 1434, 1435, 1433, 1436, 1437, 1429, - 1434, 1435, 1436, 1438, 1437, 1442, 1439, 1443, 1431, 1441, - 1432, 1439, 1440, 1440, 1441, 1444, 1445, 1446, 1449, 1450, - 1447, 1448, 1451, 1442, 1449, 1453, 1438, 1443, 1456, 1452, - 1445, 1446, 1447, 1457, 1448, 1444, 1455, 1455, 1457, 1450, - 1458, 1458, 1451, 1452, 1459, 1461, 1453, 1460, 1456, 1462, - 1464, 1463, 1467, 1471, 1466, 1465, 1469, 1473, 1473, 1459, - 1463, 1460, 1465, 1466, 1476, 1464, 1466, 1462, 1467, 1461, - 1472, 1469, 1475, 1472, 1474, 1474, 1469, 1477, 1471, 1479, + 1427, 1426, 1424, 1421, 1426, 1428, 1427, 1418, 1429, 1429, + 1428, 1430, 1430, 1431, 1433, 1432, 1434, 1435, 1436, 1431, + 1432, 1442, 1437, 1438, 1425, 1437, 1439, 1433, 1440, 1438, + 1443, 1441, 1439, 1440, 1434, 1443, 1435, 1441, 1436, 1444, + 1444, 1445, 1446, 1447, 1442, 1448, 1445, 1449, 1450, 1453, + 1454, 1455, 1451, 1452, 1456, 1453, 1458, 1457, 1460, 1460, + 1446, 1449, 1450, 1447, 1451, 1448, 1452, 1455, 1461, 1464, + 1454, 1457, 1465, 1462, 1456, 1463, 1463, 1458, 1462, 1466, + 1467, 1468, 1469, 1476, 1464, 1470, 1465, 1471, 1461, 1472, + 1468, 1474, 1470, 1478, 1478, 1480, 1471, 1469, 1467, 1471, - 1477, 1480, 1476, 1481, 1475, 1478, 1478, 1483, 1481, 1482, - 1485, 1484, 1479, 1486, 1482, 1488, 1487, 1489, 1491, 1485, - 1480, 1490, 1490, 1489, 1488, 1487, 1483, 1484, 1487, 1492, - 1493, 1494, 1486, 1495, 1496, 1499, 1500, 1502, 1491, 1501, - 1501, 1503, 1492, 1505, 1505, 1494, 1496, 1504, 1493, 1495, - 1503, 1507, 1504, 1502, 1500, 1506, 1507, 1508, 1505, 1509, - 1499, 1510, 1513, 1511, 1506, 1515, 1514, 1506, 1511, 1511, - 1518, 0, 1516, 1519, 1519, 1508, 1513, 1516, 1517, 1510, - 1509, 1514, 1525, 1520, 1517, 1521, 1522, 1515, 1518, 1520, - 1521, 1523, 1522, 1526, 1527, 1528, 1529, 1523, 1530, 1529, + 1481, 1477, 1485, 1466, 1477, 1472, 1474, 1480, 1476, 1479, + 1479, 1474, 1482, 1483, 1483, 1482, 1484, 1486, 1481, 1487, + 1488, 1485, 1486, 1490, 1487, 1489, 1491, 1493, 1492, 1484, + 1495, 1495, 1490, 1496, 1497, 1499, 1493, 1492, 1494, 1488, + 1492, 1489, 1498, 1500, 1494, 1491, 1501, 1497, 1504, 1499, + 1505, 1506, 1506, 1496, 1507, 1508, 1509, 1511, 1501, 1500, + 1498, 1509, 1510, 1510, 1508, 1513, 1511, 1512, 1505, 1511, + 1507, 1514, 1512, 1504, 1516, 1515, 1518, 1510, 1520, 1516, + 1516, 1519, 1521, 1513, 1523, 1522, 1530, 1521, 1524, 1524, + 1518, 1522, 1514, 1515, 1526, 1525, 1519, 1527, 1528, 1526, - 1527, 1532, 1525, 1534, 1530, 1529, 1535, 1526, 1528, 1532, - 1536, 1537, 1559, 1538, 1539, 1540, 1541, 1559, 1536, 1545, - 1537, 1547, 1534, 1542, 1542, 1535, 1538, 1539, 1543, 1540, - 1541, 1544, 1545, 1548, 1543, 1546, 1546, 1544, 1549, 1550, - 1551, 1547, 1552, 1553, 1554, 1542, 1551, 1556, 1556, 1557, - 1558, 1548, 1550, 1560, 1558, 1561, 1562, 1549, 1560, 1553, - 1561, 1563, 1554, 1565, 1552, 1562, 1566, 1566, 1567, 1557, - 1568, 1569, 1570, 1570, 1571, 1575, 1572, 1573, 1565, 1574, - 1576, 1578, 1568, 1572, 1563, 1579, 1577, 1567, 1571, 1573, - 1569, 1574, 1577, 1578, 1575, 1580, 1581, 1581, 1586, 1582, + 1520, 1525, 1523, 1527, 1528, 1531, 1530, 1532, 1533, 1534, + 1535, 1539, 1534, 1532, 1537, 1540, 1535, 1541, 1534, 1531, + 1542, 1533, 1537, 1543, 1544, 1541, 1545, 1546, 1553, 1542, + 1539, 1547, 1547, 1548, 1540, 1550, 1543, 1544, 1549, 1548, + 1545, 1546, 1551, 1551, 1549, 1552, 1553, 1554, 1550, 1555, + 1556, 1557, 1558, 1547, 1559, 1562, 1556, 1561, 1561, 1563, + 1568, 1567, 1555, 1563, 1564, 1552, 1554, 1570, 1558, 1564, + 1567, 1565, 1559, 1557, 1566, 1562, 1565, 1571, 1571, 1566, + 1572, 1573, 1570, 1568, 1574, 1575, 1575, 1576, 1577, 1580, + 1578, 1581, 1579, 1573, 1582, 1577, 1584, 1583, 1676, 1572, - 1576, 1580, 1582, 1579, 1583, 1583, 1585, 1586, 1587, 1588, - 1588, 1585, 1589, 1590, 1587, 1590, 1591, 1592, 1593, 1591, - 1594, 1595, 1596, 1597, 1589, 1600, 1601, 1596, 1599, 1598, - 1600, 1602, 1597, 1606, 1606, 1601, 1608, 1592, 1594, 1595, - 1593, 1598, 1603, 1599, 1604, 1605, 1607, 1603, 1601, 1604, - 1609, 1602, 1607, 1611, 1603, 1610, 1612, 1608, 1612, 1617, - 1605, 1613, 1614, 1614, 1615, 1615, 1616, 1616, 1620, 1609, - 1621, 1610, 1623, 1611, 0, 1613, 1623, 1613, 1628, 1617, - 1618, 1618, 1619, 1619, 1622, 1622, 1624, 1625, 1627, 1620, - 1625, 1621, 1624, 1629, 1627, 1630, 1628, 1631, 1636, 1629, + 1582, 1576, 1578, 1574, 1579, 1676, 1585, 1587, 1580, 1583, + 1587, 1581, 1585, 1591, 1584, 1586, 1586, 1588, 1588, 1590, + 1592, 1594, 1591, 1595, 1590, 1595, 1592, 1593, 1593, 1596, + 1597, 1598, 1596, 1594, 1599, 1601, 1600, 1602, 1605, 1603, + 1601, 1604, 1607, 1605, 1609, 1613, 1602, 0, 1606, 1609, + 1597, 1603, 1599, 1598, 1600, 1608, 1604, 1606, 1610, 1612, + 1608, 1614, 1607, 1611, 1611, 1612, 1613, 1608, 1615, 1616, + 1606, 1618, 1617, 1610, 1617, 1619, 1619, 1620, 1620, 1622, + 1614, 1621, 1621, 1625, 1615, 1618, 1626, 1618, 1633, 1616, + 1623, 1623, 1624, 1624, 1627, 1627, 1628, 1629, 1630, 1622, - 1631, 1632, 1632, 1633, 1633, 1634, 1637, 1638, 0, 1635, - 1639, 1634, 1643, 1638, 1643, 1642, 1644, 1645, 1636, 1641, - 1630, 1635, 1635, 1635, 1641, 1641, 1637, 1644, 1635, 1642, - 1639, 1646, 1645, 1647, 1648, 1649, 1651, 1646, 1650, 1650, - 1652, 1652, 1647, 1653, 1654, 1655, 1655, 1656, 1656, 1657, - 1660, 1660, 1661, 1665, 1648, 1662, 1649, 1668, 1664, 1666, - 1667, 1667, 1651, 1653, 1662, 1666, 1654, 1664, 1669, 1657, - 1672, 1671, 1670, 1674, 1665, 1673, 1673, 1661, 1668, 1670, - 1671, 1675, 1677, 1669, 1678, 1679, 1680, 1677, 1681, 1682, - 1678, 1683, 1683, 1680, 1681, 1682, 1672, 1675, 1684, 1674, + 1628, 1630, 1632, 1629, 1625, 1634, 1633, 1626, 1632, 1635, + 1636, 1634, 1639, 1636, 1637, 1637, 1638, 1638, 1639, 1640, + 1641, 1642, 1643, 1644, 1645, 0, 1649, 1648, 1649, 1644, + 1647, 1640, 1640, 1640, 1635, 1647, 1647, 1650, 1640, 1642, + 1641, 1648, 1643, 1651, 1645, 1652, 1653, 1654, 1650, 1655, + 1657, 1652, 1656, 1656, 1659, 1653, 1658, 1658, 1651, 1660, + 1661, 1661, 1662, 1662, 1663, 1666, 1666, 1654, 1667, 1668, + 1655, 1670, 1675, 1671, 1659, 1674, 1657, 1672, 1668, 1677, + 1670, 1660, 1678, 1672, 1663, 1673, 1673, 1675, 1677, 1679, + 1679, 1680, 1683, 1667, 1671, 1681, 1674, 1683, 1684, 1685, - 1685, 1686, 1688, 1684, 1687, 1679, 1690, 1689, 1691, 1685, - 1689, 1692, 1692, 1693, 1688, 1695, 1694, 1696, 1699, 1693, - 1700, 1686, 1694, 1687, 1690, 1697, 1701, 1702, 1702, 1697, - 1703, 1701, 1696, 1704, 1691, 1695, 1706, 1707, 1699, 0, - 1708, 1707, 1700, 1709, 1714, 1697, 1708, 1712, 1704, 1703, - 1710, 1710, 1709, 1711, 1715, 1706, 1716, 1711, 1712, 1713, - 1713, 1717, 1718, 1712, 1719, 1714, 1717, 1720, 1715, 1722, - 1721, 1723, 1723, 1720, 1722, 1716, 1724, 1724, 1727, 1725, - 1728, 1729, 1718, 1725, 1719, 1721, 1736, 1727, 1730, 1730, - 1737, 1728, 1732, 1732, 1733, 1737, 1728, 1734, 1735, 1733, + 1686, 1689, 1689, 1687, 1684, 1690, 1688, 1686, 1678, 1687, + 1690, 1681, 1688, 1691, 1692, 1694, 1693, 1680, 1695, 1685, + 1696, 1695, 1691, 1697, 1698, 1698, 1699, 1694, 1701, 1702, + 1700, 1705, 1699, 1703, 1692, 1693, 1700, 1703, 1696, 1706, + 1707, 1708, 1708, 1709, 1702, 1707, 1715, 1712, 1701, 1697, + 1710, 1705, 1713, 1703, 1714, 1715, 1713, 1716, 1716, 1717, + 1714, 1706, 1709, 1717, 1718, 1710, 1712, 1719, 1719, 1720, + 1721, 1723, 1722, 1724, 1725, 1718, 1723, 1726, 1729, 1729, + 1718, 1727, 1728, 1726, 1721, 1730, 1730, 1728, 1731, 1733, + 1720, 1722, 1731, 1724, 1725, 1734, 1727, 1735, 1733, 1736, - 1733, 1729, 1738, 1734, 1735, 1739, 1741, 1743, 1744, 1742, - 1745, 1739, 1736, 1742, 1738, 1746, 1745, 1747, 1741, 1743, - 1748, 1751, 1750, 1747, 1752, 1754, 1755, 1755, 1754, 1752, - 1756, 1756, 1748, 1744, 1750, 1757, 1757, 1746, 1758, 1759, - 1751, 1760, 1763, 1761, 1762, 1759, 0, 1760, 1761, 1765, - 1762, 1763, 1767, 1768, 1765, 1767, 1769, 1769, 1758, 1771, - 1772, 1773, 1774, 1774, 1775, 1768, 1773, 1778, 1778, 1776, - 1777, 1771, 1772, 1775, 1776, 1777, 1779, 1780, 1783, 1781, - 1782, 1785, 1783, 1784, 1786, 1787, 1780, 1785, 1784, 1788, - 1789, 1791, 1791, 1792, 1787, 1797, 1779, 1781, 0, 1782, + 1736, 1738, 1738, 1739, 1740, 1742, 1734, 1741, 1739, 1739, + 1740, 1734, 1744, 1741, 1743, 1745, 1747, 1735, 1748, 1743, + 1749, 1745, 1748, 1750, 1744, 1752, 1754, 1751, 1747, 1753, + 1756, 1742, 1749, 1751, 1757, 1753, 1758, 1760, 1754, 1764, + 1760, 1758, 1756, 1761, 1761, 1762, 1762, 1752, 1750, 1763, + 1763, 1765, 1766, 1757, 1769, 1767, 1768, 1765, 1766, 1764, + 1767, 1771, 1768, 1769, 1773, 1774, 1771, 1773, 1775, 1775, + 1777, 1778, 1781, 1779, 1780, 1780, 1785, 1774, 1779, 1782, + 1783, 1781, 1777, 1778, 1782, 1783, 1784, 1784, 1786, 1787, + 1788, 1789, 1792, 1790, 1791, 1789, 1785, 1786, 1790, 1793, - 1793, 1795, 1786, 1791, 1789, 1794, 1794, 1788, 1796, 1793, - 1795, 1792, 1798, 1799, 1802, 1802, 1797, 1798, 1804, 1805, - 1796, 1804, 1806, 1809, 1808, 1810, 1799, 1811, 1812, 1812, - 1813, 1810, 1813, 1814, 1814, 1805, 1817, 1809, 1806, 1808, - 1815, 1818, 1820, 1817, 1811, 1819, 1819, 1821, 1815, 1825, - 1822, 1820, 1823, 1824, 1826, 1830, 1832, 1827, 1829, 1831, - 1831, 1818, 1822, 1827, 1823, 1824, 1833, 1830, 1821, 1826, - 1834, 1836, 1835, 1834, 1832, 1825, 1827, 1835, 1829, 1838, - 1839, 1840, 1839, 1841, 1838, 1842, 1833, 1844, 1841, 1846, - 1850, 1836, 1842, 1847, 1848, 1849, 1844, 1849, 1852, 1840, + 1791, 1794, 1795, 1797, 1797, 1798, 1802, 1787, 1793, 1788, + 1792, 1799, 1800, 1800, 1803, 1797, 1795, 1801, 1802, 1794, + 1799, 1805, 1804, 1798, 1808, 1808, 1801, 1804, 1810, 1811, + 1812, 1810, 1814, 1816, 1805, 1803, 1815, 1817, 1824, 1816, + 1818, 1818, 1819, 1821, 1819, 1811, 1812, 1814, 1820, 1820, + 1815, 1821, 1823, 1826, 1817, 1825, 1825, 1827, 1824, 1823, + 1828, 1829, 1826, 1831, 1830, 1832, 1833, 1839, 1834, 1836, + 1837, 0, 1828, 1829, 1834, 1831, 1838, 1838, 1827, 1830, + 1840, 1833, 1837, 1841, 1843, 1839, 1841, 1834, 1842, 1836, + 1845, 1832, 1846, 1842, 1846, 1845, 1847, 1848, 1849, 1851, - 1852, 1853, 1847, 1854, 1854, 1855, 1848, 1846, 1856, 1850, - 1857, 1858, 1857, 1856, 1859, 1853, 1858, 1860, 1861, 1859, - 1862, 1864, 1863, 1867, 1865, 1868, 1862, 1863, 1869, 1869, - 1871, 1855, 1865, 1872, 1864, 1860, 1870, 1870, 1861, 1868, - 1873, 1876, 1867, 1874, 1877, 1871, 1873, 1875, 1874, 1875, - 1878, 1878, 1877, 1872, 1879, 1880, 1880, 1881, 1881, 1876, - 1877, 1882, 1883, 1884, 1886, 1888, 1879, 1883, 1891, 1887, - 1882, 1887, 1889, 1886, 1890, 1893, 1886, 1889, 1889, 1894, - 1891, 1884, 1897, 1890, 1894, 1895, 1888, 1893, 1898, 1899, - 1895, 1900, 1900, 1901, 1902, 1897, 1904, 1903, 1899, 1905, + 1840, 1853, 1848, 1854, 1843, 1849, 1855, 1856, 1851, 1856, + 1857, 1859, 1854, 1859, 1847, 1862, 1860, 1863, 1855, 1853, + 1861, 1861, 1863, 1864, 1867, 1864, 1865, 1866, 1868, 1857, + 1860, 1865, 1866, 1869, 1871, 1870, 1872, 1874, 1875, 1869, + 1870, 1862, 1867, 1878, 1872, 1876, 1876, 1871, 1868, 1877, + 1877, 1879, 1875, 1880, 1883, 1881, 1874, 1884, 1878, 1880, + 1881, 1882, 1886, 1882, 1895, 1884, 1885, 1885, 1887, 1887, + 1889, 1879, 1883, 1884, 1886, 1888, 1888, 1890, 1891, 1889, + 1893, 1894, 1890, 1894, 1904, 1895, 1897, 1898, 1896, 1893, + 1900, 1905, 1893, 1896, 1896, 1897, 1891, 1904, 1901, 1898, - 1909, 1910, 1911, 1907, 1908, 1918, 1910, 1911, 1898, 1912, - 1904, 1901, 1902, 1903, 1905, 1907, 1908, 1915, 1912, 1917, - 1909, 1920, 1919, 1915, 1921, 1917, 1922, 1926, 1918, 1923, - 1923, 1924, 1925, 1925, 1927, 1922, 1915, 1919, 1927, 1920, - 1924, 1929, 1928, 1935, 0, 1930, 1926, 1928, 1934, 1921, - 1930, 1930, 1931, 1932, 1929, 1944, 1934, 1933, 1931, 1932, - 1933, 1938, 1938, 1935, 1939, 1939, 1940, 1941, 1941, 1942, - 1942, 1943, 1945, 1944, 1950, 1940, 1946, 1949, 1945, 1939, - 1950, 1946, 1949, 1943, 1947, 1947, 1948, 1948, 1952, 1953, - 1939, 1954, 1952, 1956, 1957, 1954, 1958, 1959, 1960, 1957, + 1902, 1906, 1900, 1901, 1908, 1902, 1907, 1907, 1909, 1910, + 1906, 1905, 1914, 1911, 1912, 1916, 1915, 1925, 1917, 1926, + 1928, 1919, 1908, 1917, 1914, 1910, 1909, 1911, 1915, 1912, + 1919, 1918, 1922, 1924, 1926, 1916, 1918, 1927, 1922, 1924, + 1925, 1929, 1930, 1930, 1931, 1928, 1932, 1932, 1933, 1935, + 1929, 1922, 1934, 1931, 1935, 1927, 1934, 1936, 1937, 1938, + 1939, 1941, 1942, 1937, 1937, 1938, 1939, 1933, 1940, 1941, + 1936, 1940, 1945, 1945, 1946, 1946, 1947, 1948, 1948, 1949, + 1949, 1950, 1942, 1951, 1952, 1947, 1953, 1954, 1954, 1946, + 1952, 1953, 1956, 1950, 1955, 1955, 1957, 1956, 1960, 1959, - 1962, 1963, 1961, 1960, 1965, 1964, 1966, 1966, 1968, 1953, - 1964, 1967, 1959, 1970, 1972, 1967, 1962, 1969, 1956, 1958, - 1961, 1963, 1969, 1968, 1971, 1973, 1965, 1974, 1975, 1978, - 1973, 1976, 1976, 1972, 1979, 1980, 1971, 1978, 1981, 1970, - 1974, 1982, 1984, 1983, 1985, 1986, 1975, 1989, 1989, 1988, - 1994, 1994, 1990, 1979, 1980, 1990, 1985, 1991, 1992, 2005, - 1993, 1981, 1983, 1984, 1988, 1982, 1986, 1995, 1995, 1997, - 1991, 2000, 1992, 1993, 1996, 1996, 1998, 1999, 1999, 2005, - 2000, 2001, 2001, 2000, 1997, 2002, 2004, 2006, 2007, 1998, - 2002, 2004, 2008, 2008, 2009, 2009, 2010, 2011, 2011, 2012, + 1946, 1951, 1957, 1959, 1961, 1963, 1964, 1966, 1961, 1965, + 1967, 1964, 1969, 1968, 1970, 1967, 1971, 1972, 1960, 1973, + 1973, 1971, 1966, 1974, 1976, 1975, 1977, 1974, 1969, 1976, + 1963, 1968, 1965, 1978, 1970, 1979, 1980, 1981, 1982, 1972, + 1975, 1980, 1983, 1983, 1986, 1978, 1987, 1985, 1988, 1989, + 1981, 1990, 1977, 1991, 1979, 1985, 1982, 1992, 1993, 1998, + 1995, 1996, 1996, 1986, 1997, 1987, 1999, 1997, 2000, 1992, + 1990, 1988, 1998, 1989, 1991, 1995, 2001, 2001, 2005, 1993, + 1999, 2000, 2002, 2002, 2003, 2006, 2003, 2004, 2004, 2007, + 2007, 2008, 2010, 2005, 2009, 2009, 2012, 2010, 2006, 2013, - 2007, 2013, 2013, 2014, 2015, 2016, 2016, 2006, 2018, 2015, - 2017, 2017, 2019, 2020, 2021, 2010, 2025, 2012, 2014, 2023, - 2027, 2019, 2018, 0, 2023, 2024, 2024, 2020, 2026, 2026, - 2028, 2029, 2032, 2021, 2029, 2025, 2028, 2033, 2027, 2030, - 2030, 2031, 2031, 2034, 2035, 2035, 2037, 2038, 2039, 2040, - 2042, 2032, 2033, 2040, 2043, 2030, 2041, 2041, 2044, 2043, - 2045, 2048, 2034, 2039, 2047, 2047, 2037, 2049, 2050, 2042, - 2038, 2051, 2052, 2044, 2049, 2045, 2053, 2054, 2054, 2055, - 2059, 2048, 2050, 2056, 2063, 2056, 2064, 2062, 2055, 2051, - 2052, 2057, 2059, 2060, 2057, 2061, 2065, 2063, 2060, 2066, + 2008, 2012, 2014, 2008, 2015, 2016, 2016, 2017, 2017, 2018, + 2019, 2019, 2020, 2021, 2021, 2023, 2015, 2022, 2027, 2013, + 2023, 2026, 2014, 2024, 2024, 2025, 2025, 2027, 2018, 2028, + 2020, 2029, 2022, 2031, 2033, 2026, 2032, 2032, 2031, 2034, + 2034, 2035, 2036, 2028, 2037, 2038, 2038, 2037, 2036, 2040, + 2029, 2039, 2039, 2033, 2041, 2042, 2043, 2043, 2045, 2035, + 2046, 2038, 2047, 2048, 2049, 2049, 2050, 2048, 2040, 2041, + 2051, 2052, 2053, 2056, 2042, 2051, 2058, 2047, 2045, 2055, + 2055, 2057, 2059, 2046, 2060, 2050, 2052, 2053, 2057, 2061, + 2058, 2062, 2062, 2056, 2063, 2064, 2065, 2064, 2067, 2065, - 2061, 2065, 2053, 2068, 2070, 2069, 2072, 2064, 2068, 2057, - 2069, 2057, 2062, 2074, 2071, 2073, 2076, 2075, 2074, 2070, - 2071, 2073, 2075, 2077, 2079, 2066, 2078, 2072, 2080, 2078, - 2081, 2082, 2083, 2079, 2088, 0, 2077, 2080, 2084, 2081, - 2082, 2076, 2085, 2086, 2084, 2094, 2083, 2086, 2085, 2090, - 2091, 2091, 2096, 2092, 2088, 2093, 2093, 2097, 2090, 2092, - 2098, 2098, 2099, 2100, 2093, 2094, 2102, 2094, 2096, 2103, - 2105, 2104, 2100, 2097, 2109, 2108, 2107, 2099, 2102, 2107, - 2108, 2110, 2105, 2111, 2111, 2103, 2104, 2112, 2112, 2114, - 2114, 2116, 2115, 2110, 2109, 2115, 2116, 2117, 2118, 2119, + 2059, 2068, 2060, 2063, 2069, 2070, 2068, 2071, 2072, 2069, + 2067, 2074, 2073, 2076, 2065, 2061, 2065, 2073, 2076, 2077, + 2071, 2078, 2079, 2080, 2077, 2081, 2084, 2082, 2079, 2072, + 2070, 2081, 2082, 2083, 2085, 0, 2078, 2074, 2083, 2086, + 2087, 2088, 2086, 2089, 2080, 2090, 2091, 2085, 2096, 2087, + 2088, 2084, 2089, 2092, 2090, 2093, 2098, 2102, 2094, 2092, + 2091, 2093, 2094, 2099, 2099, 2098, 2100, 2104, 2096, 2101, + 2101, 2105, 2100, 2106, 2106, 2107, 2108, 2102, 2101, 2102, + 2110, 2111, 2113, 2104, 2112, 2108, 2115, 2105, 2116, 2115, + 2107, 2117, 2110, 2116, 2113, 2118, 2163, 2111, 2163, 2112, - 2119, 2120, 2122, 2117, 2118, 2121, 2121, 2123, 2124, 2125, - 2125, 2126, 2127, 2128, 2122, 2120, 2130, 2126, 2128, 2131, - 2130, 2123, 2131, 2132, 2132, 2133, 2127, 2124, 2134, 2135, - 2133, 2136, 2137, 2137, 2138, 2136, 2140, 2134, 2141, 2142, - 2143, 2140, 2144, 2145, 2149, 2146, 2144, 2138, 2151, 2135, - 2146, 2147, 2159, 2159, 2143, 2148, 2161, 2147, 2141, 2142, - 2152, 2148, 2149, 2145, 2151, 2152, 2153, 2154, 2155, 2158, - 2155, 2160, 2153, 2165, 2160, 2154, 2162, 2162, 2166, 2165, - 2164, 2173, 2161, 2158, 2164, 2167, 2167, 2168, 2171, 2171, - 2166, 2175, 2176, 2179, 2180, 2181, 2168, 2182, 2179, 2173, + 2119, 2119, 2120, 2120, 2122, 2122, 2123, 2118, 2124, 2123, + 2125, 2117, 2126, 2124, 2127, 2127, 2125, 2128, 2126, 2129, + 2129, 2130, 2131, 2132, 2133, 2133, 2134, 2135, 2143, 2136, + 0, 2128, 2134, 2130, 2136, 2138, 2131, 2139, 2142, 2138, + 2139, 2135, 2132, 2140, 2140, 2141, 2146, 2142, 2143, 2144, + 2141, 2145, 2145, 2144, 2149, 2148, 2150, 2151, 2152, 2146, + 2148, 2153, 2152, 2154, 2155, 2157, 2156, 2162, 2154, 2159, + 2155, 2151, 2156, 2160, 2149, 2162, 2150, 2167, 2160, 2165, + 2161, 2153, 2170, 2157, 2169, 2159, 2161, 2169, 2165, 2168, + 2168, 2167, 2171, 2171, 2173, 2174, 2177, 2175, 2173, 2176, - 2181, 2189, 2182, 2183, 2183, 2175, 2185, 2185, 2176, 2187, - 2188, 2188, 2190, 2191, 2193, 2187, 2194, 2189, 2191, 2198, - 2180, 2195, 2195, 2197, 2199, 2198, 2200, 2204, 2194, 2202, - 2202, 2205, 2197, 2193, 2190, 2203, 2207, 2207, 2203, 2208, - 2208, 2200, 2199, 2209, 2210, 2211, 2204, 2212, 2209, 2205, - 2214, 2213, 2212, 2213, 2211, 2215, 2216, 2218, 2217, 0, - 2219, 2225, 2210, 2217, 2214, 2219, 2220, 2220, 2216, 2215, - 2221, 2221, 2222, 2222, 2223, 2223, 2224, 2218, 2226, 2225, - 2227, 2227, 2229, 2226, 2228, 2228, 2230, 2231, 2224, 2232, - 2233, 2233, 2234, 2237, 2229, 2235, 2235, 2238, 2230, 2236, + 2176, 2174, 2180, 2180, 2182, 2177, 2184, 2185, 2170, 2175, + 2188, 2189, 2190, 2191, 2199, 2188, 2198, 2190, 2191, 2203, + 2184, 2202, 2182, 2185, 2192, 2192, 2194, 2194, 2196, 2197, + 2197, 2203, 2198, 2200, 2196, 2206, 2199, 2189, 2200, 2207, + 2202, 2204, 2204, 2208, 2206, 2207, 2213, 2209, 2211, 2211, + 2212, 2214, 2219, 2212, 2216, 2216, 2217, 2217, 2218, 2220, + 0, 2208, 2209, 2218, 2223, 2213, 2221, 2224, 2220, 2214, + 2219, 2221, 2222, 2225, 2222, 2226, 2227, 2228, 2223, 2234, + 2226, 2224, 2228, 2229, 2229, 2225, 2230, 2230, 2231, 2231, + 2232, 2232, 2233, 2235, 2236, 2236, 2227, 2234, 2235, 2237, - 2236, 2239, 2240, 2241, 2237, 2232, 2243, 2231, 2239, 2238, - 2242, 2234, 2244, 2246, 2240, 2242, 2245, 2245, 2247, 2248, - 2249, 2250, 2246, 2241, 2251, 2253, 2243, 2252, 2252, 2257, - 2258, 2254, 2244, 2249, 2253, 2255, 2259, 2260, 2251, 2248, - 2260, 2261, 2272, 2262, 2247, 2250, 2254, 2257, 2262, 2263, - 2255, 2271, 2258, 2272, 2263, 2261, 2264, 2264, 2273, 2259, - 2265, 2265, 2266, 2266, 2268, 2268, 2270, 2270, 2275, 2271, - 2277, 2276, 2279, 2278, 2280, 2282, 2281, 2273, 2281, 2283, - 2284, 2279, 2285, 2285, 2287, 2287, 2288, 2289, 2275, 2276, - 2290, 2290, 2277, 2278, 2280, 2282, 2289, 2283, 2284, 2294, + 2237, 2238, 2239, 2240, 2233, 2241, 2242, 2242, 2243, 2244, + 2244, 2245, 2245, 2238, 2239, 2246, 2247, 2248, 2249, 2250, + 2251, 2241, 2252, 2240, 2248, 2251, 2246, 2243, 2247, 2253, + 2249, 2254, 2254, 2256, 2255, 2257, 2259, 2258, 2260, 2250, + 2261, 2261, 2252, 2255, 2262, 2266, 2263, 2264, 2267, 2253, + 2258, 2268, 2260, 2262, 2269, 2257, 0, 2269, 2270, 2256, + 2259, 2263, 2264, 2266, 2271, 2280, 2272, 2273, 2273, 2271, + 2267, 2272, 2270, 2281, 2268, 2274, 2274, 2275, 2275, 2277, + 2277, 2279, 2279, 2280, 2281, 2282, 2284, 2285, 2286, 2287, + 2288, 2289, 2290, 2291, 2290, 2297, 2292, 2293, 2298, 2288, - 2292, 2293, 2293, 2295, 2296, 2297, 2298, 2299, 2288, 2292, - 2300, 2296, 2301, 2302, 2302, 2303, 2303, 2294, 2305, 2306, - 2297, 2295, 2304, 2307, 2298, 2299, 2300, 2308, 2304, 2309, - 2310, 2301, 2308, 2311, 2306, 2312, 2305, 2312, 2311, 2313, - 2313, 2314, 2307, 2314, 2315, 2315, 2317, 2319, 2320, 2309, - 2310, 2321, 2322, 2323, 2324, 2328, 2319, 2325, 2323, 2329, - 2330, 2330, 2329, 2321, 2331, 2317, 2332, 2320, 2333, 2333, - 2336, 2341, 2322, 2334, 2324, 2328, 2325, 2334, 2337, 2331, - 2338, 2338, 2337, 2339, 2332, 2336, 2341, 2342, 2343, 2344, - 2344, 2346, 2347, 2348, 2349, 2349, 2339, 2348, 2350, 2351, + 2294, 2294, 2296, 2296, 2282, 2285, 2284, 2298, 2303, 2287, + 2286, 2289, 2301, 2291, 2292, 2293, 2304, 2297, 2299, 2299, + 2305, 2301, 2302, 2302, 2306, 2307, 2303, 2305, 2308, 2309, + 2310, 2311, 2311, 2314, 2304, 2312, 2312, 2315, 2313, 2306, + 2316, 2317, 2318, 2307, 2313, 2309, 2308, 2318, 2319, 2310, + 2320, 2314, 2315, 2321, 2322, 2317, 2322, 2327, 2321, 2316, + 2323, 2323, 2324, 2329, 2324, 2325, 2325, 2330, 2319, 2331, + 2320, 2332, 2329, 2333, 2334, 2338, 2327, 2335, 2333, 2339, + 2342, 2331, 2339, 2340, 2340, 2341, 2330, 2343, 2343, 2344, + 2346, 2332, 2351, 2344, 2334, 2338, 2335, 2347, 2342, 2349, - 2351, 2347, 2353, 2346, 2352, 2354, 2355, 2342, 2343, 2352, - 2362, 2353, 2356, 2356, 2361, 2361, 2364, 2350, 2355, 2363, - 2363, 2354, 2365, 2369, 2366, 2367, 2368, 2368, 2379, 2364, - 2371, 2371, 2362, 2366, 2367, 2365, 2374, 2375, 2369, 2376, - 2377, 2374, 2375, 2378, 2381, 2377, 2380, 2379, 2383, 2384, - 2386, 2378, 2381, 2376, 2384, 2380, 2385, 2387, 2387, 2388, - 2388, 2385, 2389, 2383, 2391, 2386, 2390, 2392, 2393, 2389, - 2394, 2390, 2395, 2395, 2393, 2394, 2396, 2402, 2397, 2398, - 2398, 2404, 2391, 2397, 2404, 2392, 2399, 2399, 2403, 2403, - 2402, 2396, 2405, 2414, 2406, 2407, 2408, 2405, 2405, 2406, + 2341, 2347, 2348, 2348, 2352, 2346, 2353, 2351, 2354, 2354, + 2356, 2357, 2349, 2358, 2359, 2359, 2360, 2358, 2361, 2361, + 2357, 2363, 2356, 2362, 2352, 2364, 2353, 2365, 2362, 2372, + 2363, 2366, 2366, 2371, 2371, 2360, 2373, 2373, 2376, 2365, + 2374, 2364, 2375, 2377, 2378, 2378, 2379, 2376, 2381, 2381, + 2386, 2372, 2377, 2374, 2384, 2375, 2389, 2385, 2387, 2384, + 2388, 2379, 2385, 2387, 2386, 2390, 2393, 2394, 2388, 2391, + 2396, 2395, 2394, 2399, 2390, 2389, 2395, 2391, 2397, 2397, + 2399, 2393, 2398, 2398, 2400, 2396, 2401, 2402, 2403, 2400, + 2404, 2405, 2405, 2406, 2403, 2404, 2407, 2408, 2408, 2409, - 2407, 2409, 2408, 2410, 2411, 2409, 2412, 2413, 2410, 0, - 2415, 2416, 2418, 2411, 2414, 2413, 2415, 2416, 2417, 2421, - 2420, 2412, 2421, 2417, 2418, 2420, 2423, 2425, 2426, 2427, - 2428, 2429, 2425, 2426, 2435, 2430, 2431, 2431, 2423, 2432, - 2429, 2436, 2440, 2428, 2430, 2437, 2439, 2427, 2432, 2438, - 2438, 2440, 2441, 2435, 2442, 2442, 2443, 2445, 2447, 2448, - 2450, 2436, 0, 2448, 2437, 2439, 2455, 2441, 2449, 2449, - 2451, 2452, 2445, 2453, 2455, 2443, 2451, 2452, 2447, 2453, - 2454, 2454, 2456, 2458, 2459, 2450, 2461, 2456, 2462, 2463, - 2461, 2466, 2458, 2465, 2465, 2467, 2467, 2459, 2468, 2468, + 2409, 2407, 2412, 0, 2401, 2402, 2413, 2413, 2406, 2414, + 2424, 2415, 2414, 2416, 2417, 2412, 2415, 2415, 2416, 2417, + 2418, 2419, 2420, 2421, 2422, 2419, 2418, 2420, 2423, 2425, + 2428, 2424, 2421, 2427, 2426, 2425, 2423, 2433, 2427, 2422, + 2426, 2430, 2428, 2435, 2431, 2436, 2430, 2431, 2435, 2433, + 2436, 2437, 2438, 2439, 2440, 2441, 2441, 2442, 2445, 2446, + 2452, 2447, 2439, 2440, 2449, 2438, 2442, 2448, 2448, 2437, + 2450, 2449, 2451, 2453, 2453, 2452, 2454, 2445, 2456, 2446, + 2447, 2451, 2458, 2459, 2460, 2460, 2461, 2459, 2462, 2450, + 2463, 2464, 2466, 2456, 2462, 2454, 2463, 2464, 2465, 2465, - 2470, 2470, 2462, 2471, 2463, 2472, 2476, 2471, 2477, 2466, - 2472, 2474, 2474, 2477, 2479, 2478, 2481, 2482, 2482, 2479, - 2479, 2484, 2484, 2485, 2485, 2486, 2476, 2478, 2486, 2487, - 2489, 2491, 2492, 2492, 2493, 2493, 2481, 2494, 2494, 2495, - 2496, 2496, 2487, 2497, 2498, 2499, 2500, 2506, 2489, 2501, - 2501, 2491, 2500, 2502, 2495, 2505, 2497, 2502, 2507, 2499, - 2505, 2505, 2498, 2508, 2511, 2509, 2510, 2513, 2513, 2512, - 2506, 2509, 2510, 2512, 2516, 2521, 2518, 2519, 2507, 2516, - 2519, 2523, 2522, 2508, 2518, 2522, 2524, 2525, 2526, 2511, - 2527, 2524, 2528, 2528, 2532, 2529, 2531, 2542, 2523, 2523, + 2466, 2467, 2458, 2469, 2470, 2472, 2467, 2473, 2474, 2472, + 2477, 2461, 2469, 2476, 2476, 2478, 2478, 2470, 2479, 2479, + 2487, 2473, 2482, 2474, 2481, 2481, 2482, 2483, 2477, 2485, + 2485, 2488, 2483, 2489, 2492, 2500, 2488, 2490, 2493, 2493, + 2487, 2497, 2490, 2490, 2497, 2489, 2495, 2495, 2496, 2496, + 2498, 2502, 2506, 2500, 2492, 2503, 2503, 2504, 2504, 2505, + 2505, 2507, 2507, 2498, 2508, 2509, 2510, 2506, 2511, 2512, + 2512, 2502, 2513, 2516, 2511, 2517, 2513, 2508, 2516, 2516, + 2510, 2518, 2519, 2509, 2520, 2521, 2522, 2532, 2523, 2529, + 2520, 2521, 2523, 2524, 2524, 2527, 2530, 2529, 2517, 2530, - 2521, 2535, 2542, 2530, 2527, 2525, 2530, 2533, 2526, 2529, - 2531, 2534, 2543, 2532, 2530, 2533, 2534, 2534, 2536, 2536, - 2535, 2537, 2537, 2538, 2538, 2539, 2539, 2540, 2540, 2541, - 2544, 2545, 2543, 2546, 2547, 2549, 2549, 2551, 2550, 2554, - 2545, 2550, 2553, 2553, 2556, 2541, 2554, 2555, 2555, 2556, - 2558, 2558, 2559, 2546, 2547, 2551, 2544, 2560, 2561, 2563, - 2565, 2559, 2564, 2564, 2565, 2566, 2560, 2561, 2567, 2569, - 2568, 2570, 2580, 2575, 2566, 2568, 2568, 2563, 2575, 2579, - 2570, 2571, 2569, 2567, 2581, 2571, 2576, 2576, 2578, 2578, - 2583, 2584, 2587, 2579, 2589, 2588, 2592, 2580, 2594, 2583, + 2527, 2518, 2519, 2533, 2534, 2535, 2533, 2536, 2537, 2538, + 2535, 2522, 2532, 2539, 2539, 2540, 2541, 2542, 2543, 2541, + 2546, 2534, 2534, 2538, 2544, 2536, 2555, 2541, 2537, 2540, + 2545, 2542, 2544, 2547, 2547, 2545, 2545, 2543, 2552, 2546, + 2548, 2548, 2549, 2549, 2550, 2550, 2551, 2551, 2553, 2554, + 2556, 2557, 2555, 2553, 2552, 2558, 2560, 2560, 2563, 2556, + 2561, 2561, 2562, 2565, 2565, 2562, 2566, 2567, 2567, 2554, + 2575, 2557, 2568, 2566, 2571, 2558, 2563, 2568, 2570, 2570, + 2572, 2573, 2577, 2571, 2576, 2576, 2577, 2578, 2575, 2572, + 2573, 2579, 2580, 2582, 2581, 2583, 2578, 2580, 2580, 2583, - 2590, 2608, 2581, 2584, 2588, 2596, 2590, 2597, 2592, 2599, - 2596, 2907, 2597, 2907, 2589, 2598, 2598, 2587, 2599, 2594, - 2601, 2608, 2602, 2602, 2607, 2601, 2602, 2604, 2604, 2605, - 2605, 2606, 2606, 2607, 2609, 2610, 2612, 2616, 2613, 2614, - 2610, 2617, 2612, 2613, 2614, 2615, 2615, 2618, 2619, 2621, - 2620, 2628, 2618, 2609, 0, 2616, 2620, 2622, 2622, 2624, - 2625, 2629, 2617, 2624, 2626, 2625, 2619, 2627, 2627, 2626, - 2628, 2630, 2632, 2632, 2621, 2634, 2629, 2635, 2636, 2638, - 2637, 2639, 2636, 2642, 2640, 2643, 2643, 2644, 2634, 2637, - 2635, 2630, 2640, 2641, 2649, 2638, 2646, 2646, 2641, 2659, + 2587, 2591, 2582, 2588, 2588, 2587, 2579, 2581, 2590, 2590, + 2592, 2593, 2595, 2596, 2599, 2591, 2601, 2600, 2602, 2604, + 2606, 2595, 2608, 2609, 2602, 2596, 2600, 2608, 2609, 2593, + 0, 2604, 2610, 2610, 2611, 2592, 2601, 2613, 2620, 2599, + 2621, 2606, 2613, 2611, 2614, 2614, 2616, 2616, 2614, 2617, + 2617, 2618, 2618, 2619, 2628, 2622, 2625, 2624, 2620, 2621, + 2622, 2625, 2619, 2624, 2626, 2627, 2627, 2629, 2630, 2626, + 2632, 2631, 2628, 2630, 2633, 2636, 2632, 2634, 2634, 2636, + 2637, 2638, 2639, 2639, 2640, 2637, 2638, 2641, 2629, 2631, + 2642, 2644, 2644, 2646, 2647, 2649, 2648, 2650, 2651, 2633, - 2639, 2647, 2647, 2651, 2651, 2653, 2644, 2654, 2655, 2642, - 2660, 2656, 2658, 2658, 2664, 2649, 2656, 2661, 2665, 2659, - 2669, 2653, 2671, 2654, 2655, 2663, 2663, 2671, 2664, 2666, - 2666, 2672, 2670, 2660, 2673, 2673, 2661, 2665, 2670, 2675, - 2669, 2674, 2674, 2676, 2676, 2677, 2678, 2679, 2680, 2681, - 2682, 2683, 0, 2672, 2680, 2678, 2677, 2684, 2684, 2675, - 2690, 2685, 2682, 2676, 2685, 2686, 2686, 2679, 2681, 2691, - 2692, 2683, 2690, 2693, 2693, 2694, 2692, 2695, 2694, 2696, - 2698, 2699, 2700, 2695, 2701, 2698, 2699, 2702, 2705, 2691, - 2701, 2703, 2703, 2706, 2707, 2708, 2710, 2696, 2709, 2709, + 2648, 2652, 2641, 2640, 2649, 2654, 2646, 2647, 2656, 2652, + 2642, 2653, 2662, 2650, 2655, 2655, 2653, 2651, 2659, 2659, + 2660, 2660, 2664, 2664, 2666, 2667, 2668, 2656, 2672, 2669, + 2673, 2654, 2674, 2662, 2669, 2671, 2671, 2676, 2676, 2678, + 2666, 2667, 2668, 2677, 2679, 2679, 2682, 2684, 2672, 2683, + 2685, 2674, 2684, 2673, 2688, 2683, 2690, 2677, 2678, 2686, + 2686, 2687, 2687, 2689, 2689, 2692, 2682, 2690, 2691, 2693, + 2694, 2696, 2685, 2704, 2688, 2693, 2695, 2691, 2697, 2697, + 2703, 2698, 0, 2689, 2698, 2692, 2699, 2699, 2695, 2694, + 2705, 2696, 2703, 2704, 2706, 2706, 2705, 2707, 2708, 2709, - 2705, 2700, 2716, 2711, 2702, 2702, 2713, 2713, 2708, 2714, - 2714, 2706, 2711, 2715, 2726, 2710, 2716, 2717, 2715, 2707, - 2718, 2718, 2717, 2719, 2719, 2720, 2720, 2721, 2723, 2723, - 2728, 2729, 2721, 2726, 2730, 2731, 2731, 2733, 2733, 2735, - 2734, 2736, 2737, 2737, 2738, 2738, 2741, 2784, 2742, 2740, - 2736, 2784, 2728, 2729, 2734, 2740, 2730, 2743, 2750, 2735, - 2746, 2746, 2743, 2748, 2748, 2749, 2741, 2742, 2751, 2752, - 2749, 2753, 2750, 2755, 2751, 2754, 2754, 2757, 2755, 2753, - 2758, 2752, 2759, 2760, 2761, 2763, 2764, 2759, 2765, 2766, - 2761, 2768, 2767, 2763, 2769, 2760, 2770, 2757, 2771, 2773, + 2707, 2711, 2712, 2713, 2708, 2714, 2711, 2712, 2715, 2716, + 2716, 2714, 2718, 2719, 2720, 2721, 2723, 2709, 2722, 2722, + 2724, 2749, 2713, 2739, 2718, 2715, 2715, 2729, 2721, 2724, + 2749, 2719, 2726, 2726, 2741, 2723, 2727, 2727, 2728, 2720, + 2730, 2729, 2739, 2728, 2742, 2730, 2731, 2731, 2732, 2732, + 2733, 2733, 2734, 2736, 2736, 2743, 2741, 2734, 2744, 2744, + 2746, 2746, 2747, 2748, 2750, 2750, 2742, 2751, 2751, 2753, + 2754, 2763, 2755, 2756, 0, 2753, 2747, 2743, 2756, 2759, + 2759, 2761, 2761, 2748, 2762, 2763, 2764, 2765, 2766, 2762, + 2754, 2755, 2764, 2767, 2767, 2768, 2766, 2770, 2771, 2765, - 2758, 2774, 2778, 2771, 2773, 2764, 2851, 2768, 2765, 2766, - 2767, 2769, 2769, 2775, 2779, 2776, 0, 2770, 2851, 2775, - 2776, 2774, 2778, 2782, 2782, 2783, 2783, 2779, 2788, 2788, - 2790, 2790, 2791, 2791, 2794, 2791, 2792, 2792, 2794, 2792, - 2793, 2793, 2797, 2793, 2796, 2796, 2801, 2798, 2802, 2803, - 2804, 2804, 2807, 2809, 2803, 2808, 2810, 2809, 2811, 0, - 2797, 2798, 2808, 2813, 2818, 2810, 2801, 2814, 2802, 2815, - 2815, 2816, 2816, 2811, 2817, 2817, 2814, 2807, 2819, 2818, - 2820, 2813, 2821, 2819, 2822, 2823, 2824, 2821, 2821, 2820, - 2822, 2825, 2820, 2826, 2827, 2828, 2829, 2829, 2826, 2827, + 2768, 2772, 2773, 2774, 2776, 2777, 2772, 2778, 2779, 2774, + 2781, 2780, 2776, 2782, 2773, 2783, 2784, 2770, 2771, 2787, + 2786, 2784, 2791, 2918, 2777, 2786, 2781, 2778, 2779, 2780, + 2782, 2782, 2788, 2792, 2918, 2789, 2783, 2797, 2788, 2787, + 2789, 2797, 2791, 2795, 2795, 2810, 2792, 2796, 2796, 2801, + 2801, 2803, 2803, 2804, 2804, 2807, 2804, 2805, 2805, 2807, + 2805, 2806, 2806, 2810, 2806, 2809, 2809, 2811, 2814, 2815, + 2816, 2817, 2817, 2820, 2822, 2816, 2821, 2823, 2822, 2824, + 2832, 2811, 2826, 2821, 2827, 2832, 2823, 2836, 2814, 2815, + 2828, 2828, 2831, 2827, 2824, 2829, 2829, 2833, 2820, 2834, - 2830, 2824, 2831, 2832, 2832, 2858, 2830, 2900, 2831, 0, - 2823, 2900, 2825, 2834, 2828, 2833, 2833, 2858, 2834, 2837, - 2837, 2840, 2840, 2841, 2841, 2842, 2842, 2843, 2843, 2844, - 2844, 2845, 2845, 2846, 2846, 2848, 2849, 2849, 2850, 2852, - 2856, 2854, 2855, 2855, 2848, 2857, 2860, 2850, 2859, 2859, - 2861, 2861, 2864, 2865, 2866, 2856, 2865, 2868, 2857, 2852, - 2854, 2860, 2867, 2867, 2870, 2871, 2874, 2870, 2872, 2873, - 2864, 2871, 2875, 2876, 2873, 2868, 2882, 2878, 2879, 2893, - 2866, 2891, 2872, 2878, 2891, 2874, 2898, 2879, 2902, 2876, - 2875, 2882, 2893, 2894, 2894, 2895, 2895, 2896, 2896, 2899, + 2826, 2830, 2830, 2837, 2834, 2834, 2833, 2831, 2835, 2833, + 2838, 2839, 2836, 2841, 2835, 2840, 2839, 2843, 2837, 2844, + 2840, 2842, 2842, 2843, 0, 2844, 2845, 2845, 2846, 2846, + 2847, 2838, 2841, 2850, 2850, 2847, 2853, 2853, 2854, 2854, + 2855, 2855, 2856, 2856, 2857, 2857, 2858, 2858, 2859, 2859, + 2861, 2862, 2862, 2863, 2864, 2865, 2869, 2867, 2871, 2861, + 2868, 2868, 2863, 2873, 2870, 2877, 2864, 2872, 2872, 2879, + 2871, 2869, 2874, 2874, 2881, 2865, 2867, 2870, 2873, 2878, + 2880, 2880, 2878, 2877, 2883, 2884, 2885, 2883, 2886, 2887, + 2889, 2884, 2881, 2886, 2888, 2879, 2891, 2906, 2892, 2895, - 2901, 2904, 2902, 2905, 2908, 2906, 2909, 2909, 2899, 2898, - 2906, 2911, 2910, 2912, 2905, 2914, 2913, 2916, 2915, 2908, - 2901, 2918, 2917, 2919, 2904, 2910, 2916, 2925, 2926, 2926, - 2911, 2912, 2913, 2915, 2917, 2924, 2920, 2927, 2928, 2928, - 2914, 2920, 2918, 2919, 2929, 2929, 2927, 2925, 2932, 2924, - 2930, 2930, 2931, 2931, 2933, 2934, 2935, 2936, 2934, 2937, - 2938, 2935, 2936, 2939, 2940, 2941, 2942, 2932, 2943, 2939, - 2945, 2942, 2944, 2944, 2933, 2938, 2946, 2941, 2940, 2947, - 2947, 2949, 2951, 2956, 2937, 2945, 2954, 2954, 2943, 2955, - 2955, 2956, 2957, 2958, 2960, 2946, 2949, 2959, 2962, 2958, + 2885, 2904, 2891, 2911, 2904, 2913, 2889, 2892, 2887, 2913, + 2906, 2914, 2888, 2912, 2895, 2907, 2907, 2908, 2908, 2909, + 2909, 2915, 2912, 2917, 2919, 2920, 2911, 2920, 2921, 2919, + 2924, 2914, 2922, 2922, 2923, 2915, 2925, 2926, 2927, 2929, + 2928, 2931, 2945, 2921, 2930, 2932, 2917, 2923, 2929, 2924, + 2937, 2938, 2933, 2926, 2925, 2928, 2930, 2933, 2939, 2939, + 2940, 2945, 2931, 2927, 2937, 2932, 2941, 2941, 2946, 2940, + 2950, 2938, 2942, 2942, 2943, 2943, 2944, 2944, 2947, 2948, + 2949, 2947, 2951, 2952, 2948, 2949, 2953, 2954, 2946, 2952, + 2956, 2955, 2957, 2957, 2958, 2950, 2955, 2951, 2959, 2954, - 2951, 2961, 2963, 2959, 2964, 2964, 2967, 2963, 2960, 2965, - 2965, 2957, 2968, 2973, 2961, 2970, 2971, 2962, 2974, 2975, - 2971, 2976, 2977, 2974, 2978, 2979, 2980, 2967, 2984, 2970, - 2979, 2980, 2968, 2973, 2976, 2977, 2981, 2981, 2975, 2985, - 2986, 2987, 2987, 2978, 2988, 2989, 2990, 2990, 2984, 2988, - 2991, 2989, 2994, 2992, 2995, 2991, 2993, 2985, 2992, 2986, - 2995, 2993, 2997, 2997, 2998, 2999, 2999, 3002, 3001, 2998, - 3003, 2994, 3001, 3004, 3005, 3006, 3007, 3003, 3008, 3010, - 3010, 3006, 3012, 3012, 3014, 3013, 3002, 3015, 3016, 3014, - 3017, 3008, 3004, 3005, 3013, 3007, 3019, 3013, 3018, 3018, + 2953, 2960, 2960, 2962, 2964, 2967, 2967, 2968, 2968, 2958, + 2956, 2969, 2970, 2973, 2971, 2972, 2974, 2959, 2962, 2969, + 2971, 2972, 2964, 2975, 2980, 2976, 2981, 2973, 2986, 2974, + 2976, 2970, 2977, 2977, 2978, 2978, 2983, 2984, 2987, 2988, + 2989, 2984, 2975, 2987, 2990, 2980, 2981, 2991, 2986, 2992, + 2983, 2993, 2997, 2989, 2992, 2998, 2993, 2990, 2988, 2994, + 2994, 2999, 3000, 3000, 3001, 3002, 2991, 3003, 3003, 3001, + 3004, 3002, 2997, 2998, 3005, 3004, 3006, 3007, 3008, 3005, + 2999, 3006, 3010, 3010, 3008, 3011, 3012, 3012, 3014, 3015, + 3011, 3016, 3014, 3017, 3018, 3019, 3007, 3020, 3016, 3023, - 3020, 3019, 3022, 3017, 3023, 3023, 3015, 3016, 3024, 3025, - 3025, 3026, 3026, 3020, 3027, 3028, 3029, 3030, 3030, 3027, - 3031, 3032, 3028, 3032, 3034, 3031, 3035, 3024, 3022, 3033, - 3033, 3034, 3036, 3035, 3037, 3029, 3038, 3040, 3040, 3037, - 3041, 3043, 3044, 3045, 3046, 3050, 3043, 3044, 3047, 3047, - 3051, 3036, 3049, 3049, 0, 3038, 3052, 3052, 3054, 3041, - 3053, 3053, 3045, 3046, 3050, 3054, 3056, 3056, 3058, 3051, - 3057, 3057, 3060, 3063, 3064, 3058, 3065, 3060, 3063, 3066, - 3066, 3067, 3067, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3064, 0, 3065, 3071, 3071, 3071, 3071, + 3023, 3019, 3021, 3025, 3025, 3026, 3027, 3028, 3015, 3029, + 3030, 3027, 3017, 3018, 3026, 3021, 3020, 3026, 3031, 3031, + 3032, 3033, 3035, 3030, 3037, 3032, 3028, 3042, 3029, 3036, + 3036, 3038, 3038, 3040, 3033, 3039, 3039, 3041, 3040, 3043, + 3043, 3049, 3044, 3037, 3041, 3051, 3042, 3044, 3035, 3045, + 3047, 3045, 3046, 3046, 3048, 3053, 3053, 3047, 3050, 3054, + 3049, 3048, 3056, 3050, 3051, 3057, 3058, 3056, 3059, 3063, + 3057, 3060, 3060, 3062, 3062, 3064, 3065, 3065, 3054, 3066, + 3066, 0, 3067, 3069, 3069, 3058, 3071, 3059, 3063, 3067, + 3070, 3070, 3073, 3071, 3064, 3076, 3077, 3073, 3078, 0, - 3071, 3071, 3071, 3072, 3072, 3072, 3072, 3072, 3072, 3072, - 3073, 3073, 3073, 3073, 3073, 3073, 3073, 3074, 3074, 3074, - 3074, 3074, 3074, 3074, 3075, 3075, 3075, 3075, 3075, 3075, - 3075, 3077, 3077, 0, 3077, 3077, 3077, 3077, 3078, 3078, - 0, 0, 0, 3078, 3078, 3079, 3079, 0, 0, 3079, - 0, 3079, 3080, 0, 0, 0, 0, 0, 3080, 3081, - 3081, 0, 0, 0, 3081, 3081, 3082, 0, 0, 0, - 0, 0, 3082, 3083, 3083, 0, 3083, 3083, 3083, 3083, - 3084, 3084, 0, 3084, 3084, 3084, 3084, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, + 3076, 3079, 3079, 3080, 3080, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3077, 0, 3078, 3084, 3084, + 3084, 3084, 3084, 3084, 3084, 3085, 3085, 3085, 3085, 3085, + 3085, 3085, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3087, + 3087, 3087, 3087, 3087, 3087, 3087, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3090, 3090, 0, 3090, 3090, 3090, 3090, + 3091, 3091, 0, 0, 0, 3091, 3091, 3092, 3092, 0, + 0, 3092, 0, 3092, 3093, 0, 0, 0, 0, 0, + 3093, 3094, 3094, 0, 0, 0, 3094, 3094, 3095, 0, + 0, 0, 0, 0, 3095, 3096, 3096, 0, 3096, 3096, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070 + 3096, 3096, 3097, 3097, 0, 3097, 3097, 3097, 3097, 3083, + 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, + 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, + 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, + 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083 } ; static yy_state_type yy_last_accepting_state; @@ -2960,7 +2970,7 @@ static void config_end_include(void) } #endif -#line 2961 "" +#line 2971 "" #define YY_NO_INPUT 1 #line 184 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -2969,9 +2979,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 2970 "" +#line 2980 "" -#line 2972 "" +#line 2982 "" #define INITIAL 0 #define quotedstring 1 @@ -3193,7 +3203,7 @@ YY_DECL { #line 204 "./util/configlexer.lex" -#line 3194 "" +#line 3204 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3226,13 +3236,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 >= 3071 ) + if ( yy_current_state >= 3084 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 5988 ); + while ( yy_base[yy_current_state] != 6010 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -3652,137 +3662,137 @@ YY_RULE_SETUP case 79: YY_RULE_SETUP #line 286 "./util/configlexer.lex" -{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } +{ YDVAR(1, VAR_INFRA_KEEP_PROBING) } YY_BREAK case 80: YY_RULE_SETUP #line 287 "./util/configlexer.lex" -{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } +{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } YY_BREAK case 81: YY_RULE_SETUP #line 288 "./util/configlexer.lex" -{ YDVAR(1, VAR_DELAY_CLOSE) } +{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } YY_BREAK case 82: YY_RULE_SETUP #line 289 "./util/configlexer.lex" -{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } +{ YDVAR(1, VAR_DELAY_CLOSE) } YY_BREAK case 83: YY_RULE_SETUP #line 290 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } +{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } YY_BREAK case 84: YY_RULE_SETUP #line 291 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } +{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } YY_BREAK case 85: YY_RULE_SETUP #line 292 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_GLUE) } +{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } YY_BREAK case 86: YY_RULE_SETUP #line 293 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } +{ YDVAR(1, VAR_HARDEN_GLUE) } YY_BREAK case 87: YY_RULE_SETUP #line 294 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } +{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } YY_BREAK case 88: YY_RULE_SETUP #line 295 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } +{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } YY_BREAK case 89: YY_RULE_SETUP #line 296 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } +{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } YY_BREAK case 90: YY_RULE_SETUP #line 297 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } +{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } YY_BREAK case 91: YY_RULE_SETUP #line 298 "./util/configlexer.lex" -{ YDVAR(1, VAR_CAPS_WHITELIST) } +{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } YY_BREAK case 92: YY_RULE_SETUP #line 299 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } +{ YDVAR(1, VAR_CAPS_WHITELIST) } YY_BREAK case 93: YY_RULE_SETUP #line 300 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_ADDRESS) } +{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } YY_BREAK case 94: YY_RULE_SETUP #line 301 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_DOMAIN) } +{ YDVAR(1, VAR_PRIVATE_ADDRESS) } YY_BREAK case 95: YY_RULE_SETUP #line 302 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH_KEY) } +{ YDVAR(1, VAR_PRIVATE_DOMAIN) } YY_BREAK case 96: YY_RULE_SETUP #line 303 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH) } +{ YDVAR(1, VAR_PREFETCH_KEY) } YY_BREAK case 97: YY_RULE_SETUP #line 304 "./util/configlexer.lex" -{ YDVAR(1, VAR_DENY_ANY) } +{ YDVAR(1, VAR_PREFETCH) } YY_BREAK case 98: YY_RULE_SETUP #line 305 "./util/configlexer.lex" -{ YDVAR(0, VAR_STUB_ZONE) } +{ YDVAR(1, VAR_DENY_ANY) } YY_BREAK case 99: YY_RULE_SETUP #line 306 "./util/configlexer.lex" -{ YDVAR(1, VAR_NAME) } +{ YDVAR(0, VAR_STUB_ZONE) } YY_BREAK case 100: YY_RULE_SETUP #line 307 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_ADDR) } +{ YDVAR(1, VAR_NAME) } YY_BREAK case 101: YY_RULE_SETUP #line 308 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_HOST) } +{ YDVAR(1, VAR_STUB_ADDR) } YY_BREAK case 102: YY_RULE_SETUP #line 309 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_PRIME) } +{ YDVAR(1, VAR_STUB_HOST) } YY_BREAK case 103: YY_RULE_SETUP #line 310 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_FIRST) } +{ YDVAR(1, VAR_STUB_PRIME) } YY_BREAK case 104: YY_RULE_SETUP #line 311 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_NO_CACHE) } +{ YDVAR(1, VAR_STUB_FIRST) } YY_BREAK case 105: YY_RULE_SETUP #line 312 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } +{ YDVAR(1, VAR_STUB_NO_CACHE) } YY_BREAK case 106: YY_RULE_SETUP @@ -3792,32 +3802,32 @@ YY_RULE_SETUP case 107: YY_RULE_SETUP #line 314 "./util/configlexer.lex" -{ YDVAR(0, VAR_FORWARD_ZONE) } +{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } YY_BREAK case 108: YY_RULE_SETUP #line 315 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_ADDR) } +{ YDVAR(0, VAR_FORWARD_ZONE) } YY_BREAK case 109: YY_RULE_SETUP #line 316 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_HOST) } +{ YDVAR(1, VAR_FORWARD_ADDR) } YY_BREAK case 110: YY_RULE_SETUP #line 317 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_FIRST) } +{ YDVAR(1, VAR_FORWARD_HOST) } YY_BREAK case 111: YY_RULE_SETUP #line 318 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_NO_CACHE) } +{ YDVAR(1, VAR_FORWARD_FIRST) } YY_BREAK case 112: YY_RULE_SETUP #line 319 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } +{ YDVAR(1, VAR_FORWARD_NO_CACHE) } YY_BREAK case 113: YY_RULE_SETUP @@ -3827,731 +3837,731 @@ YY_RULE_SETUP case 114: YY_RULE_SETUP #line 321 "./util/configlexer.lex" -{ YDVAR(0, VAR_AUTH_ZONE) } +{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } YY_BREAK case 115: YY_RULE_SETUP #line 322 "./util/configlexer.lex" -{ YDVAR(0, VAR_RPZ) } +{ YDVAR(0, VAR_AUTH_ZONE) } YY_BREAK case 116: YY_RULE_SETUP #line 323 "./util/configlexer.lex" -{ YDVAR(1, VAR_TAGS) } +{ YDVAR(0, VAR_RPZ) } YY_BREAK case 117: YY_RULE_SETUP #line 324 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } +{ YDVAR(1, VAR_TAGS) } YY_BREAK case 118: YY_RULE_SETUP #line 325 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } +{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } YY_BREAK case 119: YY_RULE_SETUP #line 326 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG) } +{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } YY_BREAK case 120: YY_RULE_SETUP #line 327 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG_NAME) } +{ YDVAR(1, VAR_RPZ_LOG) } YY_BREAK case 121: YY_RULE_SETUP #line 328 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEFILE) } +{ YDVAR(1, VAR_RPZ_LOG_NAME) } YY_BREAK case 122: YY_RULE_SETUP #line 329 "./util/configlexer.lex" -{ YDVAR(1, VAR_MASTER) } +{ YDVAR(1, VAR_ZONEFILE) } YY_BREAK case 123: YY_RULE_SETUP #line 330 "./util/configlexer.lex" -{ YDVAR(1, VAR_URL) } +{ YDVAR(1, VAR_MASTER) } YY_BREAK case 124: YY_RULE_SETUP #line 331 "./util/configlexer.lex" -{ YDVAR(1, VAR_ALLOW_NOTIFY) } +{ YDVAR(1, VAR_URL) } YY_BREAK case 125: YY_RULE_SETUP #line 332 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_DOWNSTREAM) } +{ YDVAR(1, VAR_ALLOW_NOTIFY) } YY_BREAK case 126: YY_RULE_SETUP #line 333 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_UPSTREAM) } +{ YDVAR(1, VAR_FOR_DOWNSTREAM) } YY_BREAK case 127: YY_RULE_SETUP #line 334 "./util/configlexer.lex" -{ YDVAR(1, VAR_FALLBACK_ENABLED) } +{ YDVAR(1, VAR_FOR_UPSTREAM) } YY_BREAK case 128: YY_RULE_SETUP #line 335 "./util/configlexer.lex" -{ YDVAR(0, VAR_VIEW) } +{ YDVAR(1, VAR_FALLBACK_ENABLED) } YY_BREAK case 129: YY_RULE_SETUP #line 336 "./util/configlexer.lex" -{ YDVAR(1, VAR_VIEW_FIRST) } +{ YDVAR(0, VAR_VIEW) } YY_BREAK case 130: YY_RULE_SETUP #line 337 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } +{ YDVAR(1, VAR_VIEW_FIRST) } YY_BREAK case 131: YY_RULE_SETUP #line 338 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } +{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } YY_BREAK case 132: YY_RULE_SETUP #line 339 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL) } +{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } YY_BREAK case 133: YY_RULE_SETUP #line 340 "./util/configlexer.lex" -{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } +{ YDVAR(2, VAR_ACCESS_CONTROL) } YY_BREAK case 134: YY_RULE_SETUP #line 341 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } +{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } YY_BREAK case 135: YY_RULE_SETUP #line 342 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } YY_BREAK case 136: YY_RULE_SETUP #line 343 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } YY_BREAK case 137: YY_RULE_SETUP #line 344 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } YY_BREAK case 138: YY_RULE_SETUP #line 345 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } YY_BREAK case 139: YY_RULE_SETUP #line 346 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } YY_BREAK case 140: YY_RULE_SETUP #line 347 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } YY_BREAK case 141: YY_RULE_SETUP #line 348 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } YY_BREAK case 142: YY_RULE_SETUP #line 349 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } YY_BREAK case 143: YY_RULE_SETUP #line 350 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_IDENTITY) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } YY_BREAK case 144: YY_RULE_SETUP #line 351 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_VERSION) } +{ YDVAR(1, VAR_HIDE_IDENTITY) } YY_BREAK case 145: YY_RULE_SETUP #line 352 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } +{ YDVAR(1, VAR_HIDE_VERSION) } YY_BREAK case 146: YY_RULE_SETUP #line 353 "./util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } +{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } YY_BREAK case 147: YY_RULE_SETUP #line 354 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } +{ YDVAR(1, VAR_IDENTITY) } YY_BREAK case 148: YY_RULE_SETUP #line 355 "./util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } +{ YDVAR(1, VAR_VERSION) } YY_BREAK case 149: YY_RULE_SETUP #line 356 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } +{ YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 150: YY_RULE_SETUP #line 357 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 151: YY_RULE_SETUP #line 358 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 152: YY_RULE_SETUP #line 359 "./util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 153: YY_RULE_SETUP #line 360 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 154: YY_RULE_SETUP #line 361 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 155: YY_RULE_SETUP #line 362 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } +{ YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 156: YY_RULE_SETUP #line 363 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } +{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } YY_BREAK case 157: YY_RULE_SETUP #line 364 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } +{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } YY_BREAK case 158: YY_RULE_SETUP #line 365 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 159: YY_RULE_SETUP #line 366 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 160: YY_RULE_SETUP #line 367 "./util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 161: YY_RULE_SETUP #line 368 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } +{ YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 162: YY_RULE_SETUP #line 369 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 163: YY_RULE_SETUP #line 370 "./util/configlexer.lex" -{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 164: YY_RULE_SETUP #line 371 "./util/configlexer.lex" -{ YDVAR(1, VAR_IGNORE_CD_FLAG) } +{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } YY_BREAK case 165: YY_RULE_SETUP #line 372 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED) } +{ YDVAR(1, VAR_IGNORE_CD_FLAG) } YY_BREAK case 166: YY_RULE_SETUP #line 373 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED) } YY_BREAK case 167: YY_RULE_SETUP #line 374 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } YY_BREAK case 168: YY_RULE_SETUP #line 375 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } YY_BREAK case 169: YY_RULE_SETUP #line 376 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } +{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } YY_BREAK case 170: YY_RULE_SETUP #line 377 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_DSA) } +{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } YY_BREAK case 171: YY_RULE_SETUP #line 378 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_SHA1) } +{ YDVAR(1, VAR_FAKE_DSA) } YY_BREAK case 172: YY_RULE_SETUP #line 379 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_FAKE_SHA1) } YY_BREAK case 173: YY_RULE_SETUP #line 380 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 174: YY_RULE_SETUP #line 381 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 175: YY_RULE_SETUP #line 382 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 176: YY_RULE_SETUP #line 383 "./util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 177: YY_RULE_SETUP -#line 385 "./util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +#line 384 "./util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 178: YY_RULE_SETUP #line 386 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 179: YY_RULE_SETUP #line 387 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 180: YY_RULE_SETUP #line 388 "./util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 181: YY_RULE_SETUP #line 389 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 182: YY_RULE_SETUP #line 390 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 183: YY_RULE_SETUP #line 391 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 184: YY_RULE_SETUP #line 392 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 185: YY_RULE_SETUP #line 393 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_REPLIES) } +{ YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 186: YY_RULE_SETUP #line 394 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } +{ YDVAR(1, VAR_LOG_REPLIES) } YY_BREAK case 187: YY_RULE_SETUP #line 395 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } +{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } YY_BREAK case 188: YY_RULE_SETUP #line 396 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_SERVFAIL) } +{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } YY_BREAK case 189: YY_RULE_SETUP #line 397 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_SERVFAIL) } YY_BREAK case 190: YY_RULE_SETUP #line 398 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 191: YY_RULE_SETUP #line 399 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 192: YY_RULE_SETUP #line 400 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 193: YY_RULE_SETUP #line 401 "./util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 194: YY_RULE_SETUP #line 402 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 195: YY_RULE_SETUP #line 403 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 196: YY_RULE_SETUP #line 404 "./util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 197: YY_RULE_SETUP #line 405 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 198: YY_RULE_SETUP #line 406 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } +{ YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 199: YY_RULE_SETUP #line 407 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 200: YY_RULE_SETUP #line 408 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 201: YY_RULE_SETUP #line 409 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 202: YY_RULE_SETUP #line 410 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 203: YY_RULE_SETUP #line 411 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 204: YY_RULE_SETUP #line 412 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 205: YY_RULE_SETUP #line 413 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 206: YY_RULE_SETUP #line 414 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 207: YY_RULE_SETUP #line 415 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 208: YY_RULE_SETUP #line 416 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 209: YY_RULE_SETUP #line 417 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 210: YY_RULE_SETUP #line 418 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 211: YY_RULE_SETUP #line 419 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 212: YY_RULE_SETUP #line 420 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 213: YY_RULE_SETUP #line 421 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 214: YY_RULE_SETUP #line 422 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 215: YY_RULE_SETUP #line 423 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 216: YY_RULE_SETUP #line 424 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 217: YY_RULE_SETUP #line 425 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 218: YY_RULE_SETUP #line 426 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 219: YY_RULE_SETUP #line 427 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 220: YY_RULE_SETUP #line 428 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 221: YY_RULE_SETUP #line 429 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 222: YY_RULE_SETUP #line 430 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 223: YY_RULE_SETUP #line 431 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 224: YY_RULE_SETUP #line 432 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 225: YY_RULE_SETUP #line 433 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 226: YY_RULE_SETUP #line 434 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 227: YY_RULE_SETUP #line 435 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 228: YY_RULE_SETUP #line 436 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 229: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 230: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 231: YY_RULE_SETUP #line 439 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 232: YY_RULE_SETUP #line 440 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 233: YY_RULE_SETUP -#line 442 "./util/configlexer.lex" +#line 441 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 234: YY_RULE_SETUP -#line 444 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 443 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 235: YY_RULE_SETUP #line 445 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 236: YY_RULE_SETUP #line 446 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 237: YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 238: YY_RULE_SETUP #line 448 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 239: YY_RULE_SETUP -#line 450 "./util/configlexer.lex" +#line 449 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 240: YY_RULE_SETUP -#line 452 "./util/configlexer.lex" +#line 451 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 241: YY_RULE_SETUP -#line 454 "./util/configlexer.lex" +#line 453 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 242: YY_RULE_SETUP -#line 456 "./util/configlexer.lex" +#line 455 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 243: YY_RULE_SETUP -#line 458 "./util/configlexer.lex" +#line 457 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 244: YY_RULE_SETUP -#line 460 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 459 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 245: YY_RULE_SETUP #line 461 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 246: YY_RULE_SETUP #line 462 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 247: YY_RULE_SETUP #line 463 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 248: YY_RULE_SETUP #line 464 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 249: YY_RULE_SETUP #line 465 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 250: YY_RULE_SETUP #line 466 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 251: YY_RULE_SETUP #line 467 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 252: YY_RULE_SETUP #line 468 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 253: YY_RULE_SETUP #line 469 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 254: YY_RULE_SETUP #line 470 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 255: YY_RULE_SETUP #line 471 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 256: YY_RULE_SETUP #line 472 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 257: YY_RULE_SETUP #line 473 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 258: YY_RULE_SETUP @@ -4566,200 +4576,205 @@ YY_RULE_SETUP case 260: YY_RULE_SETUP #line 476 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 261: YY_RULE_SETUP #line 477 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 262: YY_RULE_SETUP #line 478 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 263: YY_RULE_SETUP #line 479 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 264: YY_RULE_SETUP #line 480 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 265: YY_RULE_SETUP #line 481 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 266: YY_RULE_SETUP #line 482 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 267: YY_RULE_SETUP #line 483 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 268: YY_RULE_SETUP #line 484 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 269: YY_RULE_SETUP #line 485 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 270: YY_RULE_SETUP #line 486 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 271: YY_RULE_SETUP -#line 488 "./util/configlexer.lex" +#line 487 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 272: YY_RULE_SETUP -#line 490 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 489 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 273: YY_RULE_SETUP #line 491 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 274: YY_RULE_SETUP #line 492 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 275: YY_RULE_SETUP #line 493 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 276: YY_RULE_SETUP #line 494 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 277: YY_RULE_SETUP #line 495 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 278: YY_RULE_SETUP #line 496 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 279: YY_RULE_SETUP #line 497 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 280: YY_RULE_SETUP #line 498 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 281: YY_RULE_SETUP #line 499 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 282: YY_RULE_SETUP #line 500 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 283: YY_RULE_SETUP #line 501 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 284: YY_RULE_SETUP #line 502 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 285: YY_RULE_SETUP #line 503 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 286: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 287: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 288: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 289: YY_RULE_SETUP #line 507 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 290: YY_RULE_SETUP #line 508 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 291: YY_RULE_SETUP #line 509 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 292: -/* rule 292 can match eol */ YY_RULE_SETUP #line 510 "./util/configlexer.lex" +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } + YY_BREAK +case 293: +/* rule 293 can match eol */ +YY_RULE_SETUP +#line 511 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 293: +case 294: YY_RULE_SETUP -#line 513 "./util/configlexer.lex" +#line 514 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 514 "./util/configlexer.lex" +#line 515 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 294: -YY_RULE_SETUP -#line 519 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 295: -/* rule 295 can match eol */ YY_RULE_SETUP #line 520 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 296: +/* rule 296 can match eol */ +YY_RULE_SETUP +#line 521 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 296: +case 297: YY_RULE_SETUP -#line 522 "./util/configlexer.lex" +#line 523 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4772,34 +4787,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 297: +case 298: YY_RULE_SETUP -#line 534 "./util/configlexer.lex" +#line 535 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 535 "./util/configlexer.lex" +#line 536 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 298: -YY_RULE_SETUP -#line 540 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 299: -/* rule 299 can match eol */ YY_RULE_SETUP #line 541 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 300: +/* rule 300 can match eol */ +YY_RULE_SETUP +#line 542 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 300: +case 301: YY_RULE_SETUP -#line 543 "./util/configlexer.lex" +#line 544 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4812,38 +4827,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 301: +case 302: YY_RULE_SETUP -#line 555 "./util/configlexer.lex" +#line 556 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 557 "./util/configlexer.lex" +#line 558 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 302: -YY_RULE_SETUP -#line 561 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 303: -/* rule 303 can match eol */ YY_RULE_SETUP #line 562 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 304: +/* rule 304 can match eol */ YY_RULE_SETUP #line 563 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 305: YY_RULE_SETUP #line 564 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 306: +YY_RULE_SETUP +#line 565 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext); @@ -4851,27 +4866,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 569 "./util/configlexer.lex" +#line 570 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 306: -YY_RULE_SETUP -#line 573 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 307: -/* rule 307 can match eol */ YY_RULE_SETUP #line 574 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 308: +/* rule 308 can match eol */ +YY_RULE_SETUP +#line 575 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 308: +case 309: YY_RULE_SETUP -#line 576 "./util/configlexer.lex" +#line 577 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -4881,7 +4896,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 582 "./util/configlexer.lex" +#line 583 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -4893,33 +4908,33 @@ case YY_STATE_EOF(val): } } YY_BREAK -case 309: +case 310: YY_RULE_SETUP -#line 593 "./util/configlexer.lex" +#line 594 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 310: +case 311: YY_RULE_SETUP -#line 597 "./util/configlexer.lex" +#line 598 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 311: +case 312: YY_RULE_SETUP -#line 601 "./util/configlexer.lex" +#line 602 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 312: +case 313: YY_RULE_SETUP -#line 605 "./util/configlexer.lex" +#line 606 "./util/configlexer.lex" ECHO; YY_BREAK -#line 4920 "" +#line 4935 "" case YY_END_OF_BUFFER: { @@ -5214,7 +5229,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 >= 3071 ) + if ( yy_current_state >= 3084 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5242,11 +5257,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 >= 3071 ) + if ( yy_current_state >= 3084 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3070); + yy_is_jam = (yy_current_state == 3083); return yy_is_jam ? 0 : yy_current_state; } @@ -5885,6 +5900,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 605 "./util/configlexer.lex" +#line 606 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index d60eb147a..a2f7333e0 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -283,6 +283,7 @@ infra-cache-slabs{COLON} { YDVAR(1, VAR_INFRA_CACHE_SLABS) } infra-cache-numhosts{COLON} { YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } infra-cache-lame-size{COLON} { YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } infra-cache-min-rtt{COLON} { YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } +infra-keep-probing{COLON} { YDVAR(1, VAR_INFRA_KEEP_PROBING) } num-queries-per-thread{COLON} { YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } jostle-timeout{COLON} { YDVAR(1, VAR_JOSTLE_TIMEOUT) } delay-close{COLON} { YDVAR(1, VAR_DELAY_CLOSE) } diff --git a/util/configparser.c b/util/configparser.c index 66f34071a..940e46e30 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -280,145 +280,146 @@ extern int yydebug; VAR_UNBLOCK_LAN_ZONES = 401, VAR_INSECURE_LAN_ZONES = 402, VAR_INFRA_CACHE_MIN_RTT = 403, - VAR_DNS64_PREFIX = 404, - VAR_DNS64_SYNTHALL = 405, - VAR_DNS64_IGNORE_AAAA = 406, - VAR_DNSTAP = 407, - VAR_DNSTAP_ENABLE = 408, - VAR_DNSTAP_SOCKET_PATH = 409, - VAR_DNSTAP_IP = 410, - VAR_DNSTAP_TLS = 411, - VAR_DNSTAP_TLS_SERVER_NAME = 412, - VAR_DNSTAP_TLS_CERT_BUNDLE = 413, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 414, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 415, - VAR_DNSTAP_SEND_IDENTITY = 416, - VAR_DNSTAP_SEND_VERSION = 417, - VAR_DNSTAP_IDENTITY = 418, - VAR_DNSTAP_VERSION = 419, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 420, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 421, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 422, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 423, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 424, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 425, - VAR_RESPONSE_IP_TAG = 426, - VAR_RESPONSE_IP = 427, - VAR_RESPONSE_IP_DATA = 428, - VAR_HARDEN_ALGO_DOWNGRADE = 429, - VAR_IP_TRANSPARENT = 430, - VAR_IP_DSCP = 431, - VAR_DISABLE_DNSSEC_LAME_CHECK = 432, - VAR_IP_RATELIMIT = 433, - VAR_IP_RATELIMIT_SLABS = 434, - VAR_IP_RATELIMIT_SIZE = 435, - VAR_RATELIMIT = 436, - VAR_RATELIMIT_SLABS = 437, - VAR_RATELIMIT_SIZE = 438, - VAR_RATELIMIT_FOR_DOMAIN = 439, - VAR_RATELIMIT_BELOW_DOMAIN = 440, - VAR_IP_RATELIMIT_FACTOR = 441, - VAR_RATELIMIT_FACTOR = 442, - VAR_SEND_CLIENT_SUBNET = 443, - VAR_CLIENT_SUBNET_ZONE = 444, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 445, - VAR_CLIENT_SUBNET_OPCODE = 446, - VAR_MAX_CLIENT_SUBNET_IPV4 = 447, - VAR_MAX_CLIENT_SUBNET_IPV6 = 448, - VAR_MIN_CLIENT_SUBNET_IPV4 = 449, - VAR_MIN_CLIENT_SUBNET_IPV6 = 450, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 451, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 452, - VAR_CAPS_WHITELIST = 453, - VAR_CACHE_MAX_NEGATIVE_TTL = 454, - VAR_PERMIT_SMALL_HOLDDOWN = 455, - VAR_QNAME_MINIMISATION = 456, - VAR_QNAME_MINIMISATION_STRICT = 457, - VAR_IP_FREEBIND = 458, - VAR_DEFINE_TAG = 459, - VAR_LOCAL_ZONE_TAG = 460, - VAR_ACCESS_CONTROL_TAG = 461, - VAR_LOCAL_ZONE_OVERRIDE = 462, - VAR_ACCESS_CONTROL_TAG_ACTION = 463, - VAR_ACCESS_CONTROL_TAG_DATA = 464, - VAR_VIEW = 465, - VAR_ACCESS_CONTROL_VIEW = 466, - VAR_VIEW_FIRST = 467, - VAR_SERVE_EXPIRED = 468, - VAR_SERVE_EXPIRED_TTL = 469, - VAR_SERVE_EXPIRED_TTL_RESET = 470, - VAR_SERVE_EXPIRED_REPLY_TTL = 471, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472, - VAR_FAKE_DSA = 473, - VAR_FAKE_SHA1 = 474, - VAR_LOG_IDENTITY = 475, - VAR_HIDE_TRUSTANCHOR = 476, - VAR_TRUST_ANCHOR_SIGNALING = 477, - VAR_AGGRESSIVE_NSEC = 478, - VAR_USE_SYSTEMD = 479, - VAR_SHM_ENABLE = 480, - VAR_SHM_KEY = 481, - VAR_ROOT_KEY_SENTINEL = 482, - VAR_DNSCRYPT = 483, - VAR_DNSCRYPT_ENABLE = 484, - VAR_DNSCRYPT_PORT = 485, - VAR_DNSCRYPT_PROVIDER = 486, - VAR_DNSCRYPT_SECRET_KEY = 487, - VAR_DNSCRYPT_PROVIDER_CERT = 488, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493, - VAR_IPSECMOD_ENABLED = 494, - VAR_IPSECMOD_HOOK = 495, - VAR_IPSECMOD_IGNORE_BOGUS = 496, - VAR_IPSECMOD_MAX_TTL = 497, - VAR_IPSECMOD_WHITELIST = 498, - VAR_IPSECMOD_STRICT = 499, - VAR_CACHEDB = 500, - VAR_CACHEDB_BACKEND = 501, - VAR_CACHEDB_SECRETSEED = 502, - VAR_CACHEDB_REDISHOST = 503, - VAR_CACHEDB_REDISPORT = 504, - VAR_CACHEDB_REDISTIMEOUT = 505, - VAR_CACHEDB_REDISEXPIRERECORDS = 506, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 507, - VAR_FOR_UPSTREAM = 508, - VAR_AUTH_ZONE = 509, - VAR_ZONEFILE = 510, - VAR_MASTER = 511, - VAR_URL = 512, - VAR_FOR_DOWNSTREAM = 513, - VAR_FALLBACK_ENABLED = 514, - VAR_TLS_ADDITIONAL_PORT = 515, - VAR_LOW_RTT = 516, - VAR_LOW_RTT_PERMIL = 517, - VAR_FAST_SERVER_PERMIL = 518, - VAR_FAST_SERVER_NUM = 519, - VAR_ALLOW_NOTIFY = 520, - VAR_TLS_WIN_CERT = 521, - VAR_TCP_CONNECTION_LIMIT = 522, - VAR_FORWARD_NO_CACHE = 523, - VAR_STUB_NO_CACHE = 524, - VAR_LOG_SERVFAIL = 525, - VAR_DENY_ANY = 526, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 527, - VAR_LOG_TAG_QUERYREPLY = 528, - VAR_STREAM_WAIT_SIZE = 529, - VAR_TLS_CIPHERS = 530, - VAR_TLS_CIPHERSUITES = 531, - VAR_TLS_USE_SNI = 532, - VAR_IPSET = 533, - VAR_IPSET_NAME_V4 = 534, - VAR_IPSET_NAME_V6 = 535, - VAR_TLS_SESSION_TICKET_KEYS = 536, - VAR_RPZ = 537, - VAR_TAGS = 538, - VAR_RPZ_ACTION_OVERRIDE = 539, - VAR_RPZ_CNAME_OVERRIDE = 540, - VAR_RPZ_LOG = 541, - VAR_RPZ_LOG_NAME = 542 + VAR_INFRA_KEEP_PROBING = 404, + VAR_DNS64_PREFIX = 405, + VAR_DNS64_SYNTHALL = 406, + VAR_DNS64_IGNORE_AAAA = 407, + VAR_DNSTAP = 408, + VAR_DNSTAP_ENABLE = 409, + VAR_DNSTAP_SOCKET_PATH = 410, + VAR_DNSTAP_IP = 411, + VAR_DNSTAP_TLS = 412, + VAR_DNSTAP_TLS_SERVER_NAME = 413, + VAR_DNSTAP_TLS_CERT_BUNDLE = 414, + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 415, + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 416, + VAR_DNSTAP_SEND_IDENTITY = 417, + VAR_DNSTAP_SEND_VERSION = 418, + VAR_DNSTAP_IDENTITY = 419, + VAR_DNSTAP_VERSION = 420, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 421, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 422, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 423, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 424, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 425, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 426, + VAR_RESPONSE_IP_TAG = 427, + VAR_RESPONSE_IP = 428, + VAR_RESPONSE_IP_DATA = 429, + VAR_HARDEN_ALGO_DOWNGRADE = 430, + VAR_IP_TRANSPARENT = 431, + VAR_IP_DSCP = 432, + VAR_DISABLE_DNSSEC_LAME_CHECK = 433, + VAR_IP_RATELIMIT = 434, + VAR_IP_RATELIMIT_SLABS = 435, + VAR_IP_RATELIMIT_SIZE = 436, + VAR_RATELIMIT = 437, + VAR_RATELIMIT_SLABS = 438, + VAR_RATELIMIT_SIZE = 439, + VAR_RATELIMIT_FOR_DOMAIN = 440, + VAR_RATELIMIT_BELOW_DOMAIN = 441, + VAR_IP_RATELIMIT_FACTOR = 442, + VAR_RATELIMIT_FACTOR = 443, + VAR_SEND_CLIENT_SUBNET = 444, + VAR_CLIENT_SUBNET_ZONE = 445, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 446, + VAR_CLIENT_SUBNET_OPCODE = 447, + VAR_MAX_CLIENT_SUBNET_IPV4 = 448, + VAR_MAX_CLIENT_SUBNET_IPV6 = 449, + VAR_MIN_CLIENT_SUBNET_IPV4 = 450, + VAR_MIN_CLIENT_SUBNET_IPV6 = 451, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 452, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 453, + VAR_CAPS_WHITELIST = 454, + VAR_CACHE_MAX_NEGATIVE_TTL = 455, + VAR_PERMIT_SMALL_HOLDDOWN = 456, + VAR_QNAME_MINIMISATION = 457, + VAR_QNAME_MINIMISATION_STRICT = 458, + VAR_IP_FREEBIND = 459, + VAR_DEFINE_TAG = 460, + VAR_LOCAL_ZONE_TAG = 461, + VAR_ACCESS_CONTROL_TAG = 462, + VAR_LOCAL_ZONE_OVERRIDE = 463, + VAR_ACCESS_CONTROL_TAG_ACTION = 464, + VAR_ACCESS_CONTROL_TAG_DATA = 465, + VAR_VIEW = 466, + VAR_ACCESS_CONTROL_VIEW = 467, + VAR_VIEW_FIRST = 468, + VAR_SERVE_EXPIRED = 469, + VAR_SERVE_EXPIRED_TTL = 470, + VAR_SERVE_EXPIRED_TTL_RESET = 471, + VAR_SERVE_EXPIRED_REPLY_TTL = 472, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 473, + VAR_FAKE_DSA = 474, + VAR_FAKE_SHA1 = 475, + VAR_LOG_IDENTITY = 476, + VAR_HIDE_TRUSTANCHOR = 477, + VAR_TRUST_ANCHOR_SIGNALING = 478, + VAR_AGGRESSIVE_NSEC = 479, + VAR_USE_SYSTEMD = 480, + VAR_SHM_ENABLE = 481, + VAR_SHM_KEY = 482, + VAR_ROOT_KEY_SENTINEL = 483, + VAR_DNSCRYPT = 484, + VAR_DNSCRYPT_ENABLE = 485, + VAR_DNSCRYPT_PORT = 486, + VAR_DNSCRYPT_PROVIDER = 487, + VAR_DNSCRYPT_SECRET_KEY = 488, + VAR_DNSCRYPT_PROVIDER_CERT = 489, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 490, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 491, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 492, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 493, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 494, + VAR_IPSECMOD_ENABLED = 495, + VAR_IPSECMOD_HOOK = 496, + VAR_IPSECMOD_IGNORE_BOGUS = 497, + VAR_IPSECMOD_MAX_TTL = 498, + VAR_IPSECMOD_WHITELIST = 499, + VAR_IPSECMOD_STRICT = 500, + VAR_CACHEDB = 501, + VAR_CACHEDB_BACKEND = 502, + VAR_CACHEDB_SECRETSEED = 503, + VAR_CACHEDB_REDISHOST = 504, + VAR_CACHEDB_REDISPORT = 505, + VAR_CACHEDB_REDISTIMEOUT = 506, + VAR_CACHEDB_REDISEXPIRERECORDS = 507, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 508, + VAR_FOR_UPSTREAM = 509, + VAR_AUTH_ZONE = 510, + VAR_ZONEFILE = 511, + VAR_MASTER = 512, + VAR_URL = 513, + VAR_FOR_DOWNSTREAM = 514, + VAR_FALLBACK_ENABLED = 515, + VAR_TLS_ADDITIONAL_PORT = 516, + VAR_LOW_RTT = 517, + VAR_LOW_RTT_PERMIL = 518, + VAR_FAST_SERVER_PERMIL = 519, + VAR_FAST_SERVER_NUM = 520, + VAR_ALLOW_NOTIFY = 521, + VAR_TLS_WIN_CERT = 522, + VAR_TCP_CONNECTION_LIMIT = 523, + VAR_FORWARD_NO_CACHE = 524, + VAR_STUB_NO_CACHE = 525, + VAR_LOG_SERVFAIL = 526, + VAR_DENY_ANY = 527, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 528, + VAR_LOG_TAG_QUERYREPLY = 529, + VAR_STREAM_WAIT_SIZE = 530, + VAR_TLS_CIPHERS = 531, + VAR_TLS_CIPHERSUITES = 532, + VAR_TLS_USE_SNI = 533, + VAR_IPSET = 534, + VAR_IPSET_NAME_V4 = 535, + VAR_IPSET_NAME_V6 = 536, + VAR_TLS_SESSION_TICKET_KEYS = 537, + VAR_RPZ = 538, + VAR_TAGS = 539, + VAR_RPZ_ACTION_OVERRIDE = 540, + VAR_RPZ_CNAME_OVERRIDE = 541, + VAR_RPZ_LOG = 542, + VAR_RPZ_LOG_NAME = 543 }; #endif /* Tokens. */ @@ -568,145 +569,146 @@ extern int yydebug; #define VAR_UNBLOCK_LAN_ZONES 401 #define VAR_INSECURE_LAN_ZONES 402 #define VAR_INFRA_CACHE_MIN_RTT 403 -#define VAR_DNS64_PREFIX 404 -#define VAR_DNS64_SYNTHALL 405 -#define VAR_DNS64_IGNORE_AAAA 406 -#define VAR_DNSTAP 407 -#define VAR_DNSTAP_ENABLE 408 -#define VAR_DNSTAP_SOCKET_PATH 409 -#define VAR_DNSTAP_IP 410 -#define VAR_DNSTAP_TLS 411 -#define VAR_DNSTAP_TLS_SERVER_NAME 412 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 413 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 414 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 415 -#define VAR_DNSTAP_SEND_IDENTITY 416 -#define VAR_DNSTAP_SEND_VERSION 417 -#define VAR_DNSTAP_IDENTITY 418 -#define VAR_DNSTAP_VERSION 419 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 420 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 421 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 422 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 423 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 424 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 425 -#define VAR_RESPONSE_IP_TAG 426 -#define VAR_RESPONSE_IP 427 -#define VAR_RESPONSE_IP_DATA 428 -#define VAR_HARDEN_ALGO_DOWNGRADE 429 -#define VAR_IP_TRANSPARENT 430 -#define VAR_IP_DSCP 431 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 432 -#define VAR_IP_RATELIMIT 433 -#define VAR_IP_RATELIMIT_SLABS 434 -#define VAR_IP_RATELIMIT_SIZE 435 -#define VAR_RATELIMIT 436 -#define VAR_RATELIMIT_SLABS 437 -#define VAR_RATELIMIT_SIZE 438 -#define VAR_RATELIMIT_FOR_DOMAIN 439 -#define VAR_RATELIMIT_BELOW_DOMAIN 440 -#define VAR_IP_RATELIMIT_FACTOR 441 -#define VAR_RATELIMIT_FACTOR 442 -#define VAR_SEND_CLIENT_SUBNET 443 -#define VAR_CLIENT_SUBNET_ZONE 444 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 445 -#define VAR_CLIENT_SUBNET_OPCODE 446 -#define VAR_MAX_CLIENT_SUBNET_IPV4 447 -#define VAR_MAX_CLIENT_SUBNET_IPV6 448 -#define VAR_MIN_CLIENT_SUBNET_IPV4 449 -#define VAR_MIN_CLIENT_SUBNET_IPV6 450 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 451 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 452 -#define VAR_CAPS_WHITELIST 453 -#define VAR_CACHE_MAX_NEGATIVE_TTL 454 -#define VAR_PERMIT_SMALL_HOLDDOWN 455 -#define VAR_QNAME_MINIMISATION 456 -#define VAR_QNAME_MINIMISATION_STRICT 457 -#define VAR_IP_FREEBIND 458 -#define VAR_DEFINE_TAG 459 -#define VAR_LOCAL_ZONE_TAG 460 -#define VAR_ACCESS_CONTROL_TAG 461 -#define VAR_LOCAL_ZONE_OVERRIDE 462 -#define VAR_ACCESS_CONTROL_TAG_ACTION 463 -#define VAR_ACCESS_CONTROL_TAG_DATA 464 -#define VAR_VIEW 465 -#define VAR_ACCESS_CONTROL_VIEW 466 -#define VAR_VIEW_FIRST 467 -#define VAR_SERVE_EXPIRED 468 -#define VAR_SERVE_EXPIRED_TTL 469 -#define VAR_SERVE_EXPIRED_TTL_RESET 470 -#define VAR_SERVE_EXPIRED_REPLY_TTL 471 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472 -#define VAR_FAKE_DSA 473 -#define VAR_FAKE_SHA1 474 -#define VAR_LOG_IDENTITY 475 -#define VAR_HIDE_TRUSTANCHOR 476 -#define VAR_TRUST_ANCHOR_SIGNALING 477 -#define VAR_AGGRESSIVE_NSEC 478 -#define VAR_USE_SYSTEMD 479 -#define VAR_SHM_ENABLE 480 -#define VAR_SHM_KEY 481 -#define VAR_ROOT_KEY_SENTINEL 482 -#define VAR_DNSCRYPT 483 -#define VAR_DNSCRYPT_ENABLE 484 -#define VAR_DNSCRYPT_PORT 485 -#define VAR_DNSCRYPT_PROVIDER 486 -#define VAR_DNSCRYPT_SECRET_KEY 487 -#define VAR_DNSCRYPT_PROVIDER_CERT 488 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493 -#define VAR_IPSECMOD_ENABLED 494 -#define VAR_IPSECMOD_HOOK 495 -#define VAR_IPSECMOD_IGNORE_BOGUS 496 -#define VAR_IPSECMOD_MAX_TTL 497 -#define VAR_IPSECMOD_WHITELIST 498 -#define VAR_IPSECMOD_STRICT 499 -#define VAR_CACHEDB 500 -#define VAR_CACHEDB_BACKEND 501 -#define VAR_CACHEDB_SECRETSEED 502 -#define VAR_CACHEDB_REDISHOST 503 -#define VAR_CACHEDB_REDISPORT 504 -#define VAR_CACHEDB_REDISTIMEOUT 505 -#define VAR_CACHEDB_REDISEXPIRERECORDS 506 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 507 -#define VAR_FOR_UPSTREAM 508 -#define VAR_AUTH_ZONE 509 -#define VAR_ZONEFILE 510 -#define VAR_MASTER 511 -#define VAR_URL 512 -#define VAR_FOR_DOWNSTREAM 513 -#define VAR_FALLBACK_ENABLED 514 -#define VAR_TLS_ADDITIONAL_PORT 515 -#define VAR_LOW_RTT 516 -#define VAR_LOW_RTT_PERMIL 517 -#define VAR_FAST_SERVER_PERMIL 518 -#define VAR_FAST_SERVER_NUM 519 -#define VAR_ALLOW_NOTIFY 520 -#define VAR_TLS_WIN_CERT 521 -#define VAR_TCP_CONNECTION_LIMIT 522 -#define VAR_FORWARD_NO_CACHE 523 -#define VAR_STUB_NO_CACHE 524 -#define VAR_LOG_SERVFAIL 525 -#define VAR_DENY_ANY 526 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 527 -#define VAR_LOG_TAG_QUERYREPLY 528 -#define VAR_STREAM_WAIT_SIZE 529 -#define VAR_TLS_CIPHERS 530 -#define VAR_TLS_CIPHERSUITES 531 -#define VAR_TLS_USE_SNI 532 -#define VAR_IPSET 533 -#define VAR_IPSET_NAME_V4 534 -#define VAR_IPSET_NAME_V6 535 -#define VAR_TLS_SESSION_TICKET_KEYS 536 -#define VAR_RPZ 537 -#define VAR_TAGS 538 -#define VAR_RPZ_ACTION_OVERRIDE 539 -#define VAR_RPZ_CNAME_OVERRIDE 540 -#define VAR_RPZ_LOG 541 -#define VAR_RPZ_LOG_NAME 542 +#define VAR_INFRA_KEEP_PROBING 404 +#define VAR_DNS64_PREFIX 405 +#define VAR_DNS64_SYNTHALL 406 +#define VAR_DNS64_IGNORE_AAAA 407 +#define VAR_DNSTAP 408 +#define VAR_DNSTAP_ENABLE 409 +#define VAR_DNSTAP_SOCKET_PATH 410 +#define VAR_DNSTAP_IP 411 +#define VAR_DNSTAP_TLS 412 +#define VAR_DNSTAP_TLS_SERVER_NAME 413 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 414 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 415 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 416 +#define VAR_DNSTAP_SEND_IDENTITY 417 +#define VAR_DNSTAP_SEND_VERSION 418 +#define VAR_DNSTAP_IDENTITY 419 +#define VAR_DNSTAP_VERSION 420 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 421 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 422 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 423 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 424 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 425 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 426 +#define VAR_RESPONSE_IP_TAG 427 +#define VAR_RESPONSE_IP 428 +#define VAR_RESPONSE_IP_DATA 429 +#define VAR_HARDEN_ALGO_DOWNGRADE 430 +#define VAR_IP_TRANSPARENT 431 +#define VAR_IP_DSCP 432 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 433 +#define VAR_IP_RATELIMIT 434 +#define VAR_IP_RATELIMIT_SLABS 435 +#define VAR_IP_RATELIMIT_SIZE 436 +#define VAR_RATELIMIT 437 +#define VAR_RATELIMIT_SLABS 438 +#define VAR_RATELIMIT_SIZE 439 +#define VAR_RATELIMIT_FOR_DOMAIN 440 +#define VAR_RATELIMIT_BELOW_DOMAIN 441 +#define VAR_IP_RATELIMIT_FACTOR 442 +#define VAR_RATELIMIT_FACTOR 443 +#define VAR_SEND_CLIENT_SUBNET 444 +#define VAR_CLIENT_SUBNET_ZONE 445 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 446 +#define VAR_CLIENT_SUBNET_OPCODE 447 +#define VAR_MAX_CLIENT_SUBNET_IPV4 448 +#define VAR_MAX_CLIENT_SUBNET_IPV6 449 +#define VAR_MIN_CLIENT_SUBNET_IPV4 450 +#define VAR_MIN_CLIENT_SUBNET_IPV6 451 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 452 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 453 +#define VAR_CAPS_WHITELIST 454 +#define VAR_CACHE_MAX_NEGATIVE_TTL 455 +#define VAR_PERMIT_SMALL_HOLDDOWN 456 +#define VAR_QNAME_MINIMISATION 457 +#define VAR_QNAME_MINIMISATION_STRICT 458 +#define VAR_IP_FREEBIND 459 +#define VAR_DEFINE_TAG 460 +#define VAR_LOCAL_ZONE_TAG 461 +#define VAR_ACCESS_CONTROL_TAG 462 +#define VAR_LOCAL_ZONE_OVERRIDE 463 +#define VAR_ACCESS_CONTROL_TAG_ACTION 464 +#define VAR_ACCESS_CONTROL_TAG_DATA 465 +#define VAR_VIEW 466 +#define VAR_ACCESS_CONTROL_VIEW 467 +#define VAR_VIEW_FIRST 468 +#define VAR_SERVE_EXPIRED 469 +#define VAR_SERVE_EXPIRED_TTL 470 +#define VAR_SERVE_EXPIRED_TTL_RESET 471 +#define VAR_SERVE_EXPIRED_REPLY_TTL 472 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 473 +#define VAR_FAKE_DSA 474 +#define VAR_FAKE_SHA1 475 +#define VAR_LOG_IDENTITY 476 +#define VAR_HIDE_TRUSTANCHOR 477 +#define VAR_TRUST_ANCHOR_SIGNALING 478 +#define VAR_AGGRESSIVE_NSEC 479 +#define VAR_USE_SYSTEMD 480 +#define VAR_SHM_ENABLE 481 +#define VAR_SHM_KEY 482 +#define VAR_ROOT_KEY_SENTINEL 483 +#define VAR_DNSCRYPT 484 +#define VAR_DNSCRYPT_ENABLE 485 +#define VAR_DNSCRYPT_PORT 486 +#define VAR_DNSCRYPT_PROVIDER 487 +#define VAR_DNSCRYPT_SECRET_KEY 488 +#define VAR_DNSCRYPT_PROVIDER_CERT 489 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 490 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 491 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 492 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 493 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 494 +#define VAR_IPSECMOD_ENABLED 495 +#define VAR_IPSECMOD_HOOK 496 +#define VAR_IPSECMOD_IGNORE_BOGUS 497 +#define VAR_IPSECMOD_MAX_TTL 498 +#define VAR_IPSECMOD_WHITELIST 499 +#define VAR_IPSECMOD_STRICT 500 +#define VAR_CACHEDB 501 +#define VAR_CACHEDB_BACKEND 502 +#define VAR_CACHEDB_SECRETSEED 503 +#define VAR_CACHEDB_REDISHOST 504 +#define VAR_CACHEDB_REDISPORT 505 +#define VAR_CACHEDB_REDISTIMEOUT 506 +#define VAR_CACHEDB_REDISEXPIRERECORDS 507 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 508 +#define VAR_FOR_UPSTREAM 509 +#define VAR_AUTH_ZONE 510 +#define VAR_ZONEFILE 511 +#define VAR_MASTER 512 +#define VAR_URL 513 +#define VAR_FOR_DOWNSTREAM 514 +#define VAR_FALLBACK_ENABLED 515 +#define VAR_TLS_ADDITIONAL_PORT 516 +#define VAR_LOW_RTT 517 +#define VAR_LOW_RTT_PERMIL 518 +#define VAR_FAST_SERVER_PERMIL 519 +#define VAR_FAST_SERVER_NUM 520 +#define VAR_ALLOW_NOTIFY 521 +#define VAR_TLS_WIN_CERT 522 +#define VAR_TCP_CONNECTION_LIMIT 523 +#define VAR_FORWARD_NO_CACHE 524 +#define VAR_STUB_NO_CACHE 525 +#define VAR_LOG_SERVFAIL 526 +#define VAR_DENY_ANY 527 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 528 +#define VAR_LOG_TAG_QUERYREPLY 529 +#define VAR_STREAM_WAIT_SIZE 530 +#define VAR_TLS_CIPHERS 531 +#define VAR_TLS_CIPHERSUITES 532 +#define VAR_TLS_USE_SNI 533 +#define VAR_IPSET 534 +#define VAR_IPSET_NAME_V4 535 +#define VAR_IPSET_NAME_V6 536 +#define VAR_TLS_SESSION_TICKET_KEYS 537 +#define VAR_RPZ 538 +#define VAR_TAGS 539 +#define VAR_RPZ_ACTION_OVERRIDE 540 +#define VAR_RPZ_CNAME_OVERRIDE 541 +#define VAR_RPZ_LOG 542 +#define VAR_RPZ_LOG_NAME 543 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -716,7 +718,7 @@ union YYSTYPE char* str; -#line 720 "util/configparser.c" +#line 722 "util/configparser.c" }; typedef union YYSTYPE YYSTYPE; @@ -966,19 +968,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 609 +#define YYLAST 611 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 288 +#define YYNTOKENS 289 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 311 +#define YYNNTS 312 /* YYNRULES -- Number of rules. */ -#define YYNRULES 600 +#define YYNRULES 602 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 893 +#define YYNSTATES 896 #define YYUNDEFTOK 2 -#define YYMAXUTOK 542 +#define YYMAXUTOK 543 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ @@ -1043,7 +1045,7 @@ static const yytype_uint16 yytranslate[] = 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 + 285, 286, 287, 288 }; #if YYDEBUG @@ -1064,53 +1066,53 @@ static const yytype_uint16 yyrline[] = 235, 235, 235, 236, 236, 236, 237, 237, 237, 237, 238, 239, 239, 239, 240, 240, 240, 241, 241, 242, 242, 243, 243, 243, 244, 244, 245, 245, 245, 246, - 247, 247, 248, 248, 249, 250, 250, 251, 251, 252, - 252, 253, 254, 254, 255, 255, 256, 256, 257, 257, - 258, 258, 259, 259, 259, 260, 260, 261, 261, 262, - 262, 263, 263, 264, 264, 265, 265, 266, 266, 266, - 267, 267, 267, 268, 268, 268, 269, 269, 270, 271, - 271, 272, 272, 273, 273, 274, 274, 275, 275, 275, - 276, 276, 276, 277, 277, 277, 278, 278, 279, 279, - 280, 280, 281, 283, 295, 296, 297, 297, 297, 297, - 297, 298, 298, 300, 312, 313, 314, 314, 314, 314, - 315, 315, 317, 331, 332, 333, 333, 333, 333, 334, - 334, 334, 336, 353, 354, 355, 355, 355, 355, 356, - 356, 356, 357, 360, 379, 396, 404, 414, 422, 439, - 440, 441, 441, 441, 441, 441, 442, 442, 442, 443, - 443, 445, 454, 463, 474, 483, 492, 501, 512, 521, - 533, 547, 562, 573, 590, 607, 624, 641, 656, 671, - 684, 699, 708, 717, 726, 735, 744, 753, 762, 771, - 780, 789, 798, 807, 816, 825, 838, 847, 860, 869, - 878, 887, 894, 901, 910, 917, 926, 934, 941, 948, - 956, 965, 974, 983, 997, 1006, 1015, 1024, 1033, 1042, - 1051, 1058, 1065, 1091, 1099, 1106, 1113, 1120, 1127, 1135, - 1143, 1151, 1158, 1169, 1180, 1187, 1196, 1205, 1214, 1221, - 1228, 1236, 1244, 1254, 1264, 1274, 1288, 1296, 1309, 1320, - 1328, 1341, 1350, 1359, 1368, 1378, 1388, 1396, 1409, 1418, - 1426, 1435, 1443, 1456, 1465, 1472, 1482, 1492, 1502, 1512, - 1522, 1532, 1542, 1552, 1559, 1566, 1573, 1582, 1591, 1600, - 1609, 1616, 1626, 1646, 1653, 1671, 1684, 1697, 1706, 1715, - 1724, 1733, 1743, 1753, 1764, 1773, 1782, 1791, 1800, 1809, - 1818, 1831, 1844, 1853, 1860, 1869, 1878, 1887, 1896, 1904, - 1917, 1925, 1966, 1973, 1988, 1998, 2008, 2015, 2022, 2029, - 2038, 2046, 2060, 2081, 2102, 2114, 2126, 2138, 2147, 2168, - 2178, 2187, 2195, 2203, 2216, 2229, 2244, 2259, 2268, 2277, - 2283, 2292, 2301, 2311, 2321, 2334, 2347, 2359, 2373, 2385, - 2399, 2409, 2416, 2423, 2432, 2441, 2451, 2461, 2471, 2478, - 2485, 2494, 2503, 2513, 2523, 2530, 2537, 2544, 2552, 2562, - 2572, 2582, 2592, 2631, 2641, 2649, 2657, 2672, 2681, 2686, - 2687, 2688, 2688, 2688, 2689, 2689, 2689, 2690, 2690, 2692, - 2702, 2711, 2718, 2725, 2732, 2739, 2746, 2753, 2758, 2759, - 2760, 2760, 2761, 2761, 2761, 2762, 2763, 2763, 2764, 2764, - 2765, 2765, 2766, 2767, 2768, 2769, 2770, 2771, 2773, 2782, - 2789, 2796, 2805, 2812, 2819, 2826, 2833, 2842, 2851, 2858, - 2865, 2875, 2885, 2895, 2905, 2915, 2925, 2930, 2931, 2932, - 2934, 2940, 2950, 2957, 2966, 2974, 2979, 2980, 2982, 2982, - 2982, 2983, 2983, 2984, 2985, 2986, 2987, 2988, 2990, 3000, - 3009, 3016, 3025, 3032, 3041, 3049, 3062, 3070, 3083, 3088, - 3089, 3090, 3090, 3091, 3091, 3091, 3092, 3094, 3106, 3118, - 3130, 3145, 3158, 3171, 3182, 3187, 3188, 3189, 3189, 3191, - 3206 + 246, 247, 247, 248, 248, 249, 250, 250, 251, 251, + 252, 252, 253, 254, 254, 255, 255, 256, 256, 257, + 257, 258, 258, 259, 259, 259, 260, 260, 261, 261, + 262, 262, 263, 263, 264, 264, 265, 265, 266, 266, + 266, 267, 267, 267, 268, 268, 268, 269, 269, 270, + 271, 271, 272, 272, 273, 273, 274, 274, 275, 275, + 275, 276, 276, 276, 277, 277, 277, 278, 278, 279, + 279, 280, 280, 281, 283, 295, 296, 297, 297, 297, + 297, 297, 298, 298, 300, 312, 313, 314, 314, 314, + 314, 315, 315, 317, 331, 332, 333, 333, 333, 333, + 334, 334, 334, 336, 353, 354, 355, 355, 355, 355, + 356, 356, 356, 357, 360, 379, 396, 404, 414, 422, + 439, 440, 441, 441, 441, 441, 441, 442, 442, 442, + 443, 443, 445, 454, 463, 474, 483, 492, 501, 512, + 521, 533, 547, 562, 573, 590, 607, 624, 641, 656, + 671, 684, 699, 708, 717, 726, 735, 744, 753, 762, + 771, 780, 789, 798, 807, 816, 825, 838, 847, 860, + 869, 878, 887, 894, 901, 910, 917, 926, 934, 941, + 948, 956, 965, 974, 983, 997, 1006, 1015, 1024, 1033, + 1042, 1051, 1058, 1065, 1091, 1099, 1106, 1113, 1120, 1127, + 1135, 1143, 1151, 1158, 1169, 1180, 1187, 1196, 1205, 1214, + 1221, 1228, 1236, 1244, 1254, 1264, 1274, 1288, 1296, 1309, + 1320, 1328, 1341, 1350, 1359, 1368, 1378, 1388, 1396, 1409, + 1418, 1426, 1435, 1443, 1456, 1465, 1475, 1482, 1492, 1502, + 1512, 1522, 1532, 1542, 1552, 1562, 1569, 1576, 1583, 1592, + 1601, 1610, 1619, 1626, 1636, 1656, 1663, 1681, 1694, 1707, + 1716, 1725, 1734, 1743, 1753, 1763, 1774, 1783, 1792, 1801, + 1810, 1819, 1828, 1841, 1854, 1863, 1870, 1879, 1888, 1897, + 1906, 1914, 1927, 1935, 1976, 1983, 1998, 2008, 2018, 2025, + 2032, 2039, 2048, 2056, 2070, 2091, 2112, 2124, 2136, 2148, + 2157, 2178, 2188, 2197, 2205, 2213, 2226, 2239, 2254, 2269, + 2278, 2287, 2293, 2302, 2311, 2321, 2331, 2344, 2357, 2369, + 2383, 2395, 2409, 2419, 2426, 2433, 2442, 2451, 2461, 2471, + 2481, 2488, 2495, 2504, 2513, 2523, 2533, 2540, 2547, 2554, + 2562, 2572, 2582, 2592, 2602, 2641, 2651, 2659, 2667, 2682, + 2691, 2696, 2697, 2698, 2698, 2698, 2699, 2699, 2699, 2700, + 2700, 2702, 2712, 2721, 2728, 2735, 2742, 2749, 2756, 2763, + 2768, 2769, 2770, 2770, 2771, 2771, 2771, 2772, 2773, 2773, + 2774, 2774, 2775, 2775, 2776, 2777, 2778, 2779, 2780, 2781, + 2783, 2792, 2799, 2806, 2815, 2822, 2829, 2836, 2843, 2852, + 2861, 2868, 2875, 2885, 2895, 2905, 2915, 2925, 2935, 2940, + 2941, 2942, 2944, 2950, 2960, 2967, 2976, 2984, 2989, 2990, + 2992, 2992, 2992, 2993, 2993, 2994, 2995, 2996, 2997, 2998, + 3000, 3010, 3019, 3026, 3035, 3042, 3051, 3059, 3072, 3080, + 3093, 3098, 3099, 3100, 3100, 3101, 3101, 3101, 3102, 3104, + 3116, 3128, 3140, 3155, 3168, 3181, 3192, 3197, 3198, 3199, + 3199, 3201, 3216 }; #endif @@ -1166,13 +1168,13 @@ static const char *const yytname[] = "VAR_FORWARD_SSL_UPSTREAM", "VAR_TLS_CERT_BUNDLE", "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_DNS64_IGNORE_AAAA", "VAR_DNSTAP", "VAR_DNSTAP_ENABLE", - "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_IP", "VAR_DNSTAP_TLS", - "VAR_DNSTAP_TLS_SERVER_NAME", "VAR_DNSTAP_TLS_CERT_BUNDLE", - "VAR_DNSTAP_TLS_CLIENT_KEY_FILE", "VAR_DNSTAP_TLS_CLIENT_CERT_FILE", - "VAR_DNSTAP_SEND_IDENTITY", "VAR_DNSTAP_SEND_VERSION", - "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION", + "VAR_INFRA_CACHE_MIN_RTT", "VAR_INFRA_KEEP_PROBING", "VAR_DNS64_PREFIX", + "VAR_DNS64_SYNTHALL", "VAR_DNS64_IGNORE_AAAA", "VAR_DNSTAP", + "VAR_DNSTAP_ENABLE", "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_IP", + "VAR_DNSTAP_TLS", "VAR_DNSTAP_TLS_SERVER_NAME", + "VAR_DNSTAP_TLS_CERT_BUNDLE", "VAR_DNSTAP_TLS_CLIENT_KEY_FILE", + "VAR_DNSTAP_TLS_CLIENT_CERT_FILE", "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", @@ -1274,25 +1276,25 @@ static const char *const yytname[] = "server_infra_host_ttl", "server_infra_lame_ttl", "server_infra_cache_numhosts", "server_infra_cache_lame_size", "server_infra_cache_slabs", "server_infra_cache_min_rtt", - "server_target_fetch_policy", "server_harden_short_bufsize", - "server_harden_large_queries", "server_harden_glue", - "server_harden_dnssec_stripped", "server_harden_below_nxdomain", - "server_harden_referral_path", "server_harden_algo_downgrade", - "server_use_caps_for_id", "server_caps_whitelist", - "server_private_address", "server_private_domain", "server_prefetch", - "server_prefetch_key", "server_deny_any", - "server_unwanted_reply_threshold", "server_do_not_query_address", - "server_do_not_query_localhost", "server_access_control", - "server_module_conf", "server_val_override_date", - "server_val_sig_skew_min", "server_val_sig_skew_max", - "server_cache_max_ttl", "server_cache_max_negative_ttl", - "server_cache_min_ttl", "server_bogus_ttl", - "server_val_clean_additional", "server_val_permissive_mode", - "server_aggressive_nsec", "server_ignore_cd_flag", - "server_serve_expired", "server_serve_expired_ttl", - "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl", - "server_serve_expired_client_timeout", "server_fake_dsa", - "server_fake_sha1", "server_val_log_level", + "server_infra_keep_probing", "server_target_fetch_policy", + "server_harden_short_bufsize", "server_harden_large_queries", + "server_harden_glue", "server_harden_dnssec_stripped", + "server_harden_below_nxdomain", "server_harden_referral_path", + "server_harden_algo_downgrade", "server_use_caps_for_id", + "server_caps_whitelist", "server_private_address", + "server_private_domain", "server_prefetch", "server_prefetch_key", + "server_deny_any", "server_unwanted_reply_threshold", + "server_do_not_query_address", "server_do_not_query_localhost", + "server_access_control", "server_module_conf", + "server_val_override_date", "server_val_sig_skew_min", + "server_val_sig_skew_max", "server_cache_max_ttl", + "server_cache_max_negative_ttl", "server_cache_min_ttl", + "server_bogus_ttl", "server_val_clean_additional", + "server_val_permissive_mode", "server_aggressive_nsec", + "server_ignore_cd_flag", "server_serve_expired", + "server_serve_expired_ttl", "server_serve_expired_ttl_reset", + "server_serve_expired_reply_ttl", "server_serve_expired_client_timeout", + "server_fake_dsa", "server_fake_sha1", "server_val_log_level", "server_val_nsec3_keysize_iterations", "server_add_holddown", "server_del_holddown", "server_keep_missing", "server_permit_small_holddown", "server_key_cache_size", @@ -1386,14 +1388,14 @@ static const yytype_uint16 yytoknum[] = 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542 + 535, 536, 537, 538, 539, 540, 541, 542, 543 }; # endif -#define YYPACT_NINF -272 +#define YYPACT_NINF -273 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-272))) + (!!((Yystate) == (-273))) #define YYTABLE_NINF -1 @@ -1404,96 +1406,96 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -272, 0, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, 271, -42, - -37, -41, -7, -43, -30, -136, -106, -177, -172, -271, + -273, 0, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, 272, -42, + -37, -41, -7, -43, -30, -137, -106, -178, -173, -272, 2, 3, 4, 25, 26, 28, 31, 32, 33, 34, 36, 37, 38, 39, 40, 52, 53, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 87, 88, 91, 93, 94, 95, 96, 97, 98, 99, 100, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 123, 124, 125, 126, 127, 128, 129, 130, + 119, 120, 121, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 162, + 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 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, 201, 205, 206, - 207, 208, 209, 210, 211, 213, 214, 215, 216, 219, - 220, 222, 223, 224, 225, 226, 227, 228, 229, 237, - 243, 245, 246, 247, 249, 250, 251, 252, 253, 254, + 193, 194, 195, 196, 197, 198, 199, 200, 202, 206, + 207, 208, 209, 210, 211, 212, 214, 215, 216, 217, + 220, 221, 223, 224, 225, 226, 227, 228, 229, 230, + 238, 244, 246, 247, 248, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 269, 270, 305, 306, 307, 308, 312, - 313, 314, 356, 357, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, 358, - 359, 360, 361, 362, 363, 364, -272, -272, -272, -272, - -272, -272, -272, -272, 368, 372, 373, 398, 399, 400, - -272, -272, -272, -272, -272, -272, -272, 402, 413, 414, - 415, 416, 417, 418, -272, -272, -272, -272, -272, -272, - -272, -272, 419, 420, 421, 422, 423, 424, 425, 426, - -272, -272, -272, -272, -272, -272, -272, -272, -272, 427, - 428, 429, 430, 431, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, 471, 473, 489, 490, 491, - 492, 493, 494, -272, -272, -272, -272, -272, -272, -272, - -272, -272, 495, 496, 497, 498, 499, 506, 507, 508, - 509, 510, 511, 512, 514, 515, 516, 517, 518, 519, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, 520, - -272, -272, 523, 526, 529, 530, 539, 540, 541, 543, - 544, 545, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, 546, 547, 548, 549, 550, 551, -272, - -272, -272, -272, -272, -272, -272, 552, 553, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, 554, 555, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, 556, 557, - 558, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, 559, 560, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, 561, 562, 563, 564, 565, 566, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, 567, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, 568, - -272, -272, 569, 570, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, 571, 572, 573, -272, -272, -272, -272, -272, - -272, -272, -272 + 265, 266, 267, 268, 270, 271, 306, 307, 308, 309, + 313, 314, 315, 357, 358, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, 359, 360, 361, 362, 363, 364, 365, -273, -273, + -273, -273, -273, -273, -273, -273, 369, 373, 374, 399, + 400, 401, -273, -273, -273, -273, -273, -273, -273, 403, + 415, 416, 417, 418, 419, 420, -273, -273, -273, -273, + -273, -273, -273, -273, 421, 422, 423, 424, 425, 426, + 427, 428, -273, -273, -273, -273, -273, -273, -273, -273, + -273, 429, 430, 431, 432, 433, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, 473, 475, 491, + 492, 493, 494, 495, 496, -273, -273, -273, -273, -273, + -273, -273, -273, -273, 497, 498, 499, 500, 501, 508, + 509, 510, 511, 512, 513, 514, 516, 517, 518, 519, + 520, 521, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, 522, -273, -273, 525, 528, 531, 532, 541, 542, + 543, 545, 546, 547, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, 548, 549, 550, 551, 552, + 553, -273, -273, -273, -273, -273, -273, -273, 554, 555, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, 556, 557, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, 558, 559, 560, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, 561, 562, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, 563, 564, 565, 566, 567, + 568, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, 569, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, 570, -273, -273, 571, 572, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, 573, 574, 575, -273, -273, + -273, -273, -273, -273, -273, -273 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1501,9 +1503,9 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 1, 16, 213, 223, 488, 546, 507, 232, - 555, 578, 242, 594, 258, 3, 18, 215, 225, 234, - 244, 260, 490, 509, 548, 557, 580, 596, 4, 5, + 2, 0, 1, 16, 214, 224, 490, 548, 509, 233, + 557, 580, 243, 596, 259, 3, 18, 216, 226, 235, + 245, 261, 492, 511, 550, 559, 582, 598, 4, 5, 6, 10, 14, 15, 8, 9, 7, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1524,147 +1526,147 @@ static const yytype_uint16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 19, 20, 83, 86, 95, - 183, 184, 21, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 34, 74, 22, 87, 88, 45, 67, - 82, 23, 24, 27, 28, 25, 26, 29, 30, 31, - 32, 33, 118, 195, 119, 121, 122, 123, 197, 202, - 198, 209, 210, 211, 212, 179, 84, 73, 99, 116, - 117, 207, 204, 120, 35, 36, 37, 38, 39, 75, - 89, 90, 105, 61, 71, 62, 187, 188, 100, 55, - 56, 186, 57, 58, 109, 113, 127, 136, 162, 139, - 208, 110, 68, 40, 41, 42, 97, 128, 129, 130, - 43, 44, 46, 47, 49, 50, 48, 134, 51, 52, - 53, 59, 78, 114, 92, 135, 85, 158, 93, 94, - 111, 112, 205, 98, 54, 76, 79, 60, 63, 101, - 102, 77, 159, 103, 64, 65, 66, 196, 115, 172, - 173, 174, 175, 176, 177, 185, 104, 72, 106, 107, - 108, 160, 69, 70, 91, 80, 81, 96, 124, 125, - 206, 126, 131, 132, 133, 163, 164, 166, 168, 169, - 167, 170, 180, 137, 138, 142, 143, 140, 141, 144, - 145, 147, 146, 199, 201, 200, 161, 171, 189, 191, - 190, 192, 193, 194, 165, 178, 181, 182, 203, 0, - 0, 0, 0, 0, 0, 0, 214, 216, 217, 218, - 220, 221, 222, 219, 0, 0, 0, 0, 0, 0, - 224, 226, 227, 228, 229, 230, 231, 0, 0, 0, - 0, 0, 0, 0, 233, 235, 236, 239, 240, 237, - 241, 238, 0, 0, 0, 0, 0, 0, 0, 0, - 243, 245, 246, 247, 248, 252, 249, 250, 251, 0, - 0, 0, 0, 0, 263, 267, 268, 269, 270, 259, - 261, 262, 264, 265, 266, 0, 0, 0, 0, 0, - 0, 0, 0, 489, 491, 493, 492, 498, 494, 495, - 496, 497, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 17, 19, 20, 83, 86, + 95, 184, 185, 21, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 34, 74, 22, 87, 88, 45, + 67, 82, 23, 24, 27, 28, 25, 26, 29, 30, + 31, 32, 33, 118, 196, 119, 121, 122, 123, 198, + 203, 199, 210, 211, 212, 213, 180, 84, 73, 99, + 116, 117, 208, 205, 120, 35, 36, 37, 38, 39, + 75, 89, 90, 105, 61, 71, 62, 188, 189, 100, + 55, 56, 187, 57, 58, 109, 113, 127, 136, 163, + 139, 209, 110, 68, 40, 41, 42, 97, 128, 129, + 130, 43, 44, 46, 47, 49, 50, 48, 134, 140, + 51, 52, 53, 59, 78, 114, 92, 135, 85, 159, + 93, 94, 111, 112, 206, 98, 54, 76, 79, 60, + 63, 101, 102, 77, 160, 103, 64, 65, 66, 197, + 115, 173, 174, 175, 176, 177, 178, 186, 104, 72, + 106, 107, 108, 161, 69, 70, 91, 80, 81, 96, + 124, 125, 207, 126, 131, 132, 133, 164, 165, 167, + 169, 170, 168, 171, 181, 137, 138, 143, 144, 141, + 142, 145, 146, 148, 147, 200, 202, 201, 162, 172, + 190, 192, 191, 193, 194, 195, 166, 179, 182, 183, + 204, 0, 0, 0, 0, 0, 0, 0, 215, 217, + 218, 219, 221, 222, 223, 220, 0, 0, 0, 0, + 0, 0, 225, 227, 228, 229, 230, 231, 232, 0, + 0, 0, 0, 0, 0, 0, 234, 236, 237, 240, + 241, 238, 242, 239, 0, 0, 0, 0, 0, 0, + 0, 0, 244, 246, 247, 248, 249, 253, 250, 251, + 252, 0, 0, 0, 0, 0, 264, 268, 269, 270, + 271, 260, 262, 263, 265, 266, 267, 0, 0, 0, + 0, 0, 0, 0, 0, 491, 493, 495, 494, 500, + 496, 497, 498, 499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 508, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 525, 526, 527, 0, - 547, 549, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 556, 558, 559, 560, 562, 563, 561, 564, - 565, 566, 567, 0, 0, 0, 0, 0, 0, 579, - 581, 582, 583, 584, 585, 586, 0, 0, 595, 597, - 598, 272, 271, 278, 291, 289, 301, 297, 298, 302, - 299, 300, 303, 304, 305, 306, 307, 330, 331, 332, - 333, 334, 359, 360, 361, 366, 367, 294, 368, 369, - 372, 370, 371, 374, 375, 376, 390, 345, 346, 348, - 349, 377, 393, 339, 341, 394, 400, 401, 402, 295, - 358, 418, 419, 340, 413, 323, 290, 335, 391, 397, - 378, 0, 0, 422, 296, 273, 322, 382, 274, 292, - 293, 336, 337, 420, 380, 384, 385, 275, 423, 362, - 389, 324, 344, 395, 396, 399, 412, 338, 416, 414, - 415, 350, 357, 386, 387, 351, 352, 379, 404, 325, - 326, 329, 308, 310, 311, 312, 313, 314, 424, 425, - 427, 363, 364, 365, 373, 428, 429, 430, 0, 0, - 0, 381, 353, 355, 551, 439, 443, 441, 440, 444, - 442, 0, 0, 447, 448, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 383, 398, 417, 452, 453, - 354, 431, 0, 0, 0, 0, 0, 0, 405, 406, - 407, 408, 409, 410, 411, 552, 347, 342, 403, 321, - 276, 277, 343, 454, 456, 455, 457, 458, 459, 309, - 316, 449, 451, 450, 315, 0, 328, 388, 426, 327, - 356, 317, 318, 320, 319, 460, 461, 462, 466, 465, - 463, 464, 467, 468, 469, 470, 472, 471, 481, 0, - 485, 486, 0, 0, 487, 473, 479, 474, 475, 476, - 478, 480, 477, 253, 254, 255, 256, 257, 499, 501, - 500, 503, 504, 505, 506, 502, 528, 529, 530, 531, - 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 550, 568, 569, 570, 573, 571, - 572, 574, 575, 576, 577, 587, 588, 589, 590, 591, - 592, 599, 600, 392, 421, 438, 553, 554, 445, 446, - 432, 433, 0, 0, 0, 437, 593, 482, 483, 484, - 436, 434, 435 + 0, 0, 510, 512, 513, 514, 515, 516, 517, 518, + 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, + 529, 0, 549, 551, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 558, 560, 561, 562, 564, 565, + 563, 566, 567, 568, 569, 0, 0, 0, 0, 0, + 0, 581, 583, 584, 585, 586, 587, 588, 0, 0, + 597, 599, 600, 273, 272, 279, 292, 290, 302, 298, + 299, 303, 300, 301, 304, 305, 306, 307, 308, 331, + 332, 333, 334, 335, 360, 361, 362, 367, 368, 295, + 369, 370, 373, 371, 372, 376, 377, 378, 392, 346, + 347, 349, 350, 379, 395, 340, 342, 396, 402, 403, + 404, 296, 359, 420, 421, 341, 415, 324, 291, 336, + 393, 399, 380, 0, 0, 424, 297, 274, 323, 384, + 275, 293, 294, 337, 338, 422, 382, 386, 387, 276, + 425, 363, 391, 325, 345, 397, 398, 401, 414, 339, + 418, 416, 417, 351, 358, 388, 389, 352, 353, 381, + 406, 326, 327, 330, 309, 311, 312, 313, 314, 315, + 426, 427, 429, 364, 365, 366, 374, 375, 430, 431, + 432, 0, 0, 0, 383, 354, 356, 553, 441, 445, + 443, 442, 446, 444, 0, 0, 449, 450, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 385, 400, + 419, 454, 455, 355, 433, 0, 0, 0, 0, 0, + 0, 407, 408, 409, 410, 411, 412, 413, 554, 348, + 343, 405, 322, 277, 278, 344, 456, 458, 457, 459, + 460, 461, 310, 317, 451, 453, 452, 316, 0, 329, + 390, 428, 328, 357, 318, 319, 321, 320, 462, 463, + 464, 468, 467, 465, 466, 469, 470, 471, 472, 474, + 473, 483, 0, 487, 488, 0, 0, 489, 475, 481, + 476, 477, 478, 480, 482, 479, 254, 255, 256, 257, + 258, 501, 503, 502, 505, 506, 507, 508, 504, 530, + 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, + 541, 542, 543, 544, 545, 546, 547, 552, 570, 571, + 572, 575, 573, 574, 576, 577, 578, 579, 589, 590, + 591, 592, 593, 594, 601, 602, 394, 423, 440, 555, + 556, 447, 448, 434, 435, 0, 0, 0, 439, 595, + 484, 485, 486, 438, 436, 437 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -23, 248, - 574, 575, 576, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272 + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -23, + 249, 576, 577, 578, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 15, 16, 28, 234, 17, 29, 436, 18, - 30, 450, 19, 31, 464, 20, 32, 480, 494, 495, - 496, 497, 498, 21, 33, 499, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 437, 438, 439, 440, 441, - 442, 443, 451, 452, 453, 454, 455, 456, 481, 482, - 483, 484, 485, 486, 487, 488, 465, 466, 467, 468, - 469, 470, 471, 22, 34, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 23, 35, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 24, 36, 560, 561, 424, - 425, 426, 427, 25, 37, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 581, 582, 26, 38, 589, 590, - 591, 592, 593, 594, 595, 428, 27, 39, 598, 599, - 600 + -1, 1, 15, 16, 28, 235, 17, 29, 438, 18, + 30, 452, 19, 31, 466, 20, 32, 482, 496, 497, + 498, 499, 500, 21, 33, 501, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 439, 440, 441, 442, + 443, 444, 445, 453, 454, 455, 456, 457, 458, 483, + 484, 485, 486, 487, 488, 489, 490, 467, 468, 469, + 470, 471, 472, 473, 22, 34, 515, 516, 517, 518, + 519, 520, 521, 522, 523, 23, 35, 542, 543, 544, + 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, + 555, 556, 557, 558, 559, 560, 24, 36, 562, 563, + 426, 427, 428, 429, 25, 37, 574, 575, 576, 577, + 578, 579, 580, 581, 582, 583, 584, 26, 38, 591, + 592, 593, 594, 595, 596, 597, 430, 27, 39, 600, + 601, 602 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1672,142 +1674,144 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint16 yytable[] = { - 2, 472, 429, 457, 430, 431, 559, 444, 596, 597, - 500, 3, 601, 602, 603, 445, 446, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 604, 605, 472, 606, 458, - 459, 607, 608, 609, 610, 4, 611, 612, 613, 614, - 615, 5, 562, 563, 564, 565, 566, 567, 568, 569, - 570, 571, 616, 617, 460, 432, 505, 506, 507, 508, - 509, 510, 511, 512, 583, 584, 585, 586, 587, 588, - 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, - 628, 629, 630, 631, 632, 6, 433, 633, 634, 434, - 447, 635, 448, 636, 637, 638, 639, 640, 641, 642, - 643, 7, 644, 645, 646, 647, 648, 649, 650, 651, - 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, - 662, 461, 462, 663, 664, 665, 666, 667, 668, 669, - 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 8, 682, 683, 684, 685, 686, 687, 688, - 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, - 699, 463, 700, 701, 702, 703, 704, 705, 706, 707, - 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, - 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, - 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, - 9, 738, 474, 475, 476, 739, 740, 741, 742, 743, - 744, 745, 479, 746, 747, 748, 749, 435, 10, 750, - 751, 449, 752, 753, 754, 755, 756, 757, 758, 759, - 489, 490, 491, 492, 493, 11, 473, 760, 474, 475, - 476, 477, 478, 761, 12, 762, 763, 764, 479, 765, - 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, - 776, 777, 778, 779, 780, 781, 782, 783, 13, 784, - 785, 501, 14, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 786, 787, 788, 789, 72, - 73, 74, 790, 791, 792, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 793, 794, 795, 796, - 797, 798, 799, 800, 801, 116, 117, 118, 802, 119, - 120, 121, 803, 804, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 805, 806, - 807, 146, 808, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 809, 810, 811, 812, 813, 814, 815, - 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, - 826, 827, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 828, 196, 829, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 830, - 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, - 212, 213, 214, 215, 216, 217, 841, 842, 843, 844, - 845, 846, 847, 218, 848, 849, 850, 851, 852, 853, - 854, 219, 220, 855, 221, 222, 856, 223, 224, 857, - 858, 225, 226, 227, 228, 229, 230, 231, 232, 859, - 860, 861, 233, 862, 863, 864, 865, 866, 867, 868, - 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, - 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, - 889, 890, 891, 892, 0, 0, 0, 0, 0, 0, + 2, 474, 431, 459, 432, 433, 561, 446, 598, 599, + 502, 3, 603, 604, 605, 447, 448, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 541, 606, 607, 474, 608, 460, + 461, 609, 610, 611, 612, 4, 613, 614, 615, 616, + 617, 5, 564, 565, 566, 567, 568, 569, 570, 571, + 572, 573, 618, 619, 462, 434, 507, 508, 509, 510, + 511, 512, 513, 514, 585, 586, 587, 588, 589, 590, + 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, + 630, 631, 632, 633, 634, 6, 435, 635, 636, 436, + 449, 637, 450, 638, 639, 640, 641, 642, 643, 644, + 645, 7, 646, 647, 648, 649, 650, 651, 652, 653, + 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, + 664, 665, 463, 464, 666, 667, 668, 669, 670, 671, + 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, + 682, 683, 684, 8, 685, 686, 687, 688, 689, 690, + 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, + 701, 702, 465, 703, 704, 705, 706, 707, 708, 709, + 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, + 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, + 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, + 740, 9, 741, 476, 477, 478, 742, 743, 744, 745, + 746, 747, 748, 481, 749, 750, 751, 752, 437, 10, + 753, 754, 451, 755, 756, 757, 758, 759, 760, 761, + 762, 491, 492, 493, 494, 495, 11, 475, 763, 476, + 477, 478, 479, 480, 764, 12, 765, 766, 767, 481, + 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, + 778, 779, 780, 781, 782, 783, 784, 785, 786, 13, + 787, 788, 503, 14, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 789, 790, 791, 792, + 72, 73, 74, 793, 794, 795, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 796, 797, 798, + 799, 800, 801, 802, 803, 804, 116, 117, 118, 805, + 119, 120, 121, 806, 807, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 808, + 809, 810, 146, 811, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 812, 813, 814, 815, 816, + 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, + 827, 828, 829, 830, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 831, 197, 832, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 833, 834, 835, 836, 837, 838, 839, 840, 841, + 842, 843, 213, 214, 215, 216, 217, 218, 844, 845, + 846, 847, 848, 849, 850, 219, 851, 852, 853, 854, + 855, 856, 857, 220, 221, 858, 222, 223, 859, 224, + 225, 860, 861, 226, 227, 228, 229, 230, 231, 232, + 233, 862, 863, 864, 234, 865, 866, 867, 868, 869, + 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, + 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, + 890, 891, 892, 893, 894, 895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 502, 503, 504 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 504, + 505, 506 }; static const yytype_int16 yycheck[] = { - 0, 44, 44, 44, 46, 47, 112, 44, 279, 280, - 33, 11, 10, 10, 10, 52, 53, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 10, 10, 44, 10, 80, + 0, 44, 44, 44, 46, 47, 112, 44, 280, 281, + 33, 11, 10, 10, 10, 52, 53, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 10, 10, 44, 10, 80, 81, 10, 10, 10, 10, 45, 10, 10, 10, 10, - 10, 51, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 10, 10, 105, 107, 96, 97, 98, 99, - 100, 101, 102, 103, 246, 247, 248, 249, 250, 251, + 10, 51, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 10, 10, 105, 107, 96, 97, 98, 99, + 100, 101, 102, 103, 247, 248, 249, 250, 251, 252, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 95, 138, 10, 10, 141, 137, 10, 139, 10, 10, 10, 10, 10, 10, 10, 10, 111, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 172, 173, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 173, 174, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 152, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 153, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 212, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 213, 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, - 210, 10, 255, 256, 257, 10, 10, 10, 10, 10, - 10, 10, 265, 10, 10, 10, 10, 269, 228, 10, - 10, 268, 10, 10, 10, 10, 10, 10, 10, 10, - 283, 284, 285, 286, 287, 245, 253, 10, 255, 256, - 257, 258, 259, 10, 254, 10, 10, 10, 265, 10, + 10, 211, 10, 256, 257, 258, 10, 10, 10, 10, + 10, 10, 10, 266, 10, 10, 10, 10, 270, 229, + 10, 10, 269, 10, 10, 10, 10, 10, 10, 10, + 10, 284, 285, 286, 287, 288, 246, 254, 10, 256, + 257, 258, 259, 260, 10, 255, 10, 10, 10, 266, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 278, 10, - 10, 33, 282, 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, 40, 41, 42, 43, 10, 10, 10, 10, 48, - 49, 50, 10, 10, 10, 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, 91, 92, 93, 94, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 104, 105, 106, 10, 108, - 109, 110, 10, 10, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 10, 10, - 10, 140, 10, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 279, + 10, 10, 33, 283, 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, 40, 41, 42, 43, 10, 10, 10, 10, + 48, 49, 50, 10, 10, 10, 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, 91, 92, 93, 94, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 104, 105, 106, 10, + 108, 109, 110, 10, 10, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 10, + 10, 10, 140, 10, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 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, 10, 211, 10, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 239, 240, 241, 242, 243, 244, 10, 10, 10, 10, - 10, 10, 10, 252, 10, 10, 10, 10, 10, 10, - 10, 260, 261, 10, 263, 264, 10, 266, 267, 10, - 10, 270, 271, 272, 273, 274, 275, 276, 277, 10, - 10, 10, 281, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 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, 10, 212, 10, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 240, 241, 242, 243, 244, 245, 10, 10, + 10, 10, 10, 10, 10, 253, 10, 10, 10, 10, + 10, 10, 10, 261, 262, 10, 264, 265, 10, 267, + 268, 10, 10, 271, 272, 273, 274, 275, 276, 277, + 278, 10, 10, 10, 282, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, -1, -1, -1, -1, -1, -1, + 10, 10, 10, 10, 10, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 33, 33, 33 + -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, + 33, 33 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 289, 0, 11, 45, 51, 95, 111, 152, 210, - 228, 245, 254, 278, 282, 290, 291, 294, 297, 300, - 303, 311, 531, 542, 563, 571, 584, 594, 292, 295, - 298, 301, 304, 312, 532, 543, 564, 572, 585, 595, + 0, 290, 0, 11, 45, 51, 95, 111, 153, 211, + 229, 246, 255, 279, 283, 291, 292, 295, 298, 301, + 304, 312, 533, 544, 565, 573, 586, 596, 293, 296, + 299, 302, 305, 313, 534, 545, 566, 574, 587, 597, 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, 40, 41, @@ -1819,15 +1823,15 @@ static const yytype_uint16 yystos[] = 109, 110, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 140, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 171, 172, 173, + 145, 146, 147, 148, 149, 150, 151, 152, 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, 211, 213, 214, 215, + 204, 205, 206, 207, 208, 209, 210, 212, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 239, 240, 241, 242, 243, 244, 252, 260, - 261, 263, 264, 266, 267, 270, 271, 272, 273, 274, - 275, 276, 277, 281, 293, 314, 315, 316, 317, 318, + 226, 227, 228, 240, 241, 242, 243, 244, 245, 253, + 261, 262, 264, 265, 267, 268, 271, 272, 273, 274, + 275, 276, 277, 278, 282, 294, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, @@ -1846,25 +1850,25 @@ static const yytype_uint16 yystos[] = 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 567, 568, 569, 570, 593, 44, - 46, 47, 107, 138, 141, 269, 296, 503, 504, 505, - 506, 507, 508, 509, 44, 52, 53, 137, 139, 268, - 299, 510, 511, 512, 513, 514, 515, 44, 80, 81, - 105, 172, 173, 212, 302, 524, 525, 526, 527, 528, - 529, 530, 44, 253, 255, 256, 257, 258, 259, 265, - 305, 516, 517, 518, 519, 520, 521, 522, 523, 283, - 284, 285, 286, 287, 306, 307, 308, 309, 310, 313, - 516, 517, 518, 519, 520, 96, 97, 98, 99, 100, - 101, 102, 103, 533, 534, 535, 536, 537, 538, 539, - 540, 541, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 112, - 565, 566, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 573, 574, 575, 576, 577, 578, 579, 580, - 581, 582, 583, 246, 247, 248, 249, 250, 251, 586, - 587, 588, 589, 590, 591, 592, 279, 280, 596, 597, - 598, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 499, 500, 501, 502, 503, 504, 569, 570, 571, 572, + 595, 44, 46, 47, 107, 138, 141, 270, 297, 505, + 506, 507, 508, 509, 510, 511, 44, 52, 53, 137, + 139, 269, 300, 512, 513, 514, 515, 516, 517, 44, + 80, 81, 105, 173, 174, 213, 303, 526, 527, 528, + 529, 530, 531, 532, 44, 254, 256, 257, 258, 259, + 260, 266, 306, 518, 519, 520, 521, 522, 523, 524, + 525, 284, 285, 286, 287, 288, 307, 308, 309, 310, + 311, 314, 518, 519, 520, 521, 522, 96, 97, 98, + 99, 100, 101, 102, 103, 535, 536, 537, 538, 539, + 540, 541, 542, 543, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, + 564, 112, 567, 568, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 575, 576, 577, 578, 579, 580, + 581, 582, 583, 584, 585, 247, 248, 249, 250, 251, + 252, 588, 589, 590, 591, 592, 593, 594, 280, 281, + 598, 599, 600, 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, @@ -1893,40 +1897,40 @@ 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 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 288, 289, 289, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 291, 292, 292, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 294, 295, 295, 296, 296, 296, 296, - 296, 296, 296, 297, 298, 298, 299, 299, 299, 299, - 299, 299, 300, 301, 301, 302, 302, 302, 302, 302, - 302, 302, 303, 304, 304, 305, 305, 305, 305, 305, - 305, 305, 305, 306, 307, 308, 309, 310, 311, 312, - 312, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 0, 289, 290, 290, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 292, 293, 293, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 295, 296, 296, 297, 297, 297, + 297, 297, 297, 297, 298, 299, 299, 300, 300, 300, + 300, 300, 300, 301, 302, 302, 303, 303, 303, 303, + 303, 303, 303, 304, 305, 305, 306, 306, 306, 306, + 306, 306, 306, 306, 307, 308, 309, 310, 311, 312, + 313, 313, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, @@ -1948,18 +1952,18 @@ static const yytype_uint16 yyr1[] = 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, - 532, 533, 533, 533, 533, 533, 533, 533, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 543, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 545, 546, + 533, 534, 534, 535, 535, 535, 535, 535, 535, 535, + 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 545, 545, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 557, 558, 559, 560, 561, 562, 563, 564, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 572, 573, 573, - 573, 573, 573, 573, 573, 573, 573, 573, 574, 575, + 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, + 566, 567, 568, 569, 570, 571, 572, 573, 574, 574, + 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, - 585, 586, 586, 586, 586, 586, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 595, 596, 596, 597, - 598 + 586, 587, 587, 588, 588, 588, 588, 588, 588, 589, + 590, 591, 592, 593, 594, 595, 596, 597, 597, 598, + 598, 599, 600 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1986,13 +1990,13 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, + 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -2004,28 +2008,28 @@ static const yytype_uint8 yyr2[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, - 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, + 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 3, 4, 4, 4, 3, + 3, 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 3, 3, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, + 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, + 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, - 2, 2, 2, 3, 3, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 3, 1, 2, 0, 1, 1, 2, - 2 + 0, 1, 2, 2, 2, 3, 3, 1, 2, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 3, 1, 2, 0, 1, + 1, 2, 2 }; @@ -2714,10 +2718,10 @@ yyreduce: { OUTYY(("\nP(server:)\n")); } -#line 2718 "util/configparser.c" +#line 2722 "util/configparser.c" break; - case 213: + case 214: #line 284 "./util/configparser.y" { struct config_stub* s; @@ -2729,10 +2733,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2733 "util/configparser.c" +#line 2737 "util/configparser.c" break; - case 223: + case 224: #line 301 "./util/configparser.y" { struct config_stub* s; @@ -2744,10 +2748,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2748 "util/configparser.c" +#line 2752 "util/configparser.c" break; - case 232: + case 233: #line 318 "./util/configparser.y" { struct config_view* s; @@ -2761,10 +2765,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2765 "util/configparser.c" +#line 2769 "util/configparser.c" break; - case 242: + case 243: #line 337 "./util/configparser.y" { struct config_auth* s; @@ -2781,10 +2785,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2785 "util/configparser.c" +#line 2789 "util/configparser.c" break; - case 253: + case 254: #line 361 "./util/configparser.y" { uint8_t* bitlist; @@ -2802,10 +2806,10 @@ yyreduce: } } -#line 2806 "util/configparser.c" +#line 2810 "util/configparser.c" break; - case 254: + case 255: #line 380 "./util/configparser.y" { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); @@ -2821,20 +2825,20 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2825 "util/configparser.c" +#line 2829 "util/configparser.c" break; - case 255: + case 256: #line 397 "./util/configparser.y" { OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_cname); cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); } -#line 2835 "util/configparser.c" +#line 2839 "util/configparser.c" break; - case 256: + case 257: #line 405 "./util/configparser.y" { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); @@ -2843,20 +2847,20 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2847 "util/configparser.c" +#line 2851 "util/configparser.c" break; - case 257: + case 258: #line 415 "./util/configparser.y" { OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_log_name); cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); } -#line 2857 "util/configparser.c" +#line 2861 "util/configparser.c" break; - case 258: + case 259: #line 423 "./util/configparser.y" { struct config_auth* s; @@ -2873,10 +2877,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2877 "util/configparser.c" +#line 2881 "util/configparser.c" break; - case 271: + case 272: #line 446 "./util/configparser.y" { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); @@ -2885,10 +2889,10 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2889 "util/configparser.c" +#line 2893 "util/configparser.c" break; - case 272: + case 273: #line 455 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); @@ -2897,10 +2901,10 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2901 "util/configparser.c" +#line 2905 "util/configparser.c" break; - case 273: + case 274: #line 464 "./util/configparser.y" { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); @@ -2911,10 +2915,10 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2915 "util/configparser.c" +#line 2919 "util/configparser.c" break; - case 274: + case 275: #line 475 "./util/configparser.y" { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); @@ -2923,10 +2927,10 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2927 "util/configparser.c" +#line 2931 "util/configparser.c" break; - case 275: + case 276: #line 484 "./util/configparser.y" { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); @@ -2935,10 +2939,10 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2939 "util/configparser.c" +#line 2943 "util/configparser.c" break; - case 276: + case 277: #line 493 "./util/configparser.y" { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); @@ -2947,10 +2951,10 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2951 "util/configparser.c" +#line 2955 "util/configparser.c" break; - case 277: + case 278: #line 502 "./util/configparser.y" { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); @@ -2961,10 +2965,10 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2965 "util/configparser.c" +#line 2969 "util/configparser.c" break; - case 278: + case 279: #line 513 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); @@ -2973,10 +2977,10 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2977 "util/configparser.c" +#line 2981 "util/configparser.c" break; - case 279: + case 280: #line 522 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -2988,10 +2992,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 2992 "util/configparser.c" +#line 2996 "util/configparser.c" break; - case 280: + case 281: #line 534 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3004,10 +3008,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3008 "util/configparser.c" +#line 3012 "util/configparser.c" break; - case 281: + case 282: #line 548 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3022,10 +3026,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3026 "util/configparser.c" +#line 3030 "util/configparser.c" break; - case 282: + case 283: #line 563 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3036,10 +3040,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3040 "util/configparser.c" +#line 3044 "util/configparser.c" break; - case 283: + case 284: #line 574 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3056,10 +3060,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3060 "util/configparser.c" +#line 3064 "util/configparser.c" break; - case 284: + case 285: #line 591 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3076,10 +3080,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3080 "util/configparser.c" +#line 3084 "util/configparser.c" break; - case 285: + case 286: #line 608 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3096,10 +3100,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3100 "util/configparser.c" +#line 3104 "util/configparser.c" break; - case 286: + case 287: #line 625 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3116,10 +3120,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3120 "util/configparser.c" +#line 3124 "util/configparser.c" break; - case 287: + case 288: #line 642 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3134,10 +3138,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3138 "util/configparser.c" +#line 3142 "util/configparser.c" break; - case 288: + case 289: #line 657 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3152,10 +3156,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3156 "util/configparser.c" +#line 3160 "util/configparser.c" break; - case 289: + case 290: #line 672 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); @@ -3168,10 +3172,10 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3172 "util/configparser.c" +#line 3176 "util/configparser.c" break; - case 290: + case 291: #line 685 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); @@ -3186,10 +3190,10 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3190 "util/configparser.c" +#line 3194 "util/configparser.c" break; - case 291: + case 292: #line 700 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); @@ -3198,10 +3202,10 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3202 "util/configparser.c" +#line 3206 "util/configparser.c" break; - case 292: + case 293: #line 709 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); @@ -3210,10 +3214,10 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3214 "util/configparser.c" +#line 3218 "util/configparser.c" break; - case 293: + case 294: #line 718 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); @@ -3222,10 +3226,10 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3226 "util/configparser.c" +#line 3230 "util/configparser.c" break; - case 294: + case 295: #line 727 "./util/configparser.y" { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); @@ -3234,10 +3238,10 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3238 "util/configparser.c" +#line 3242 "util/configparser.c" break; - case 295: + case 296: #line 736 "./util/configparser.y" { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); @@ -3246,10 +3250,10 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3250 "util/configparser.c" +#line 3254 "util/configparser.c" break; - case 296: + case 297: #line 745 "./util/configparser.y" { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); @@ -3258,10 +3262,10 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3262 "util/configparser.c" +#line 3266 "util/configparser.c" break; - case 297: + case 298: #line 754 "./util/configparser.y" { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); @@ -3270,10 +3274,10 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3274 "util/configparser.c" +#line 3278 "util/configparser.c" break; - case 298: + case 299: #line 763 "./util/configparser.y" { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); @@ -3282,10 +3286,10 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3286 "util/configparser.c" +#line 3290 "util/configparser.c" break; - case 299: + case 300: #line 772 "./util/configparser.y" { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); @@ -3294,10 +3298,10 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3298 "util/configparser.c" +#line 3302 "util/configparser.c" break; - case 300: + case 301: #line 781 "./util/configparser.y" { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); @@ -3306,10 +3310,10 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3310 "util/configparser.c" +#line 3314 "util/configparser.c" break; - case 301: + case 302: #line 790 "./util/configparser.y" { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); @@ -3318,10 +3322,10 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3322 "util/configparser.c" +#line 3326 "util/configparser.c" break; - case 302: + case 303: #line 799 "./util/configparser.y" { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); @@ -3330,10 +3334,10 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3334 "util/configparser.c" +#line 3338 "util/configparser.c" break; - case 303: + case 304: #line 808 "./util/configparser.y" { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); @@ -3342,10 +3346,10 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3346 "util/configparser.c" +#line 3350 "util/configparser.c" break; - case 304: + case 305: #line 817 "./util/configparser.y" { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); @@ -3354,10 +3358,10 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3358 "util/configparser.c" +#line 3362 "util/configparser.c" break; - case 305: + case 306: #line 826 "./util/configparser.y" { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); @@ -3370,10 +3374,10 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3374 "util/configparser.c" +#line 3378 "util/configparser.c" break; - case 306: + case 307: #line 839 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); @@ -3382,10 +3386,10 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3386 "util/configparser.c" +#line 3390 "util/configparser.c" break; - case 307: + case 308: #line 848 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); @@ -3398,10 +3402,10 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3402 "util/configparser.c" +#line 3406 "util/configparser.c" break; - case 308: + case 309: #line 861 "./util/configparser.y" { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); @@ -3410,10 +3414,10 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3414 "util/configparser.c" +#line 3418 "util/configparser.c" break; - case 309: + case 310: #line 870 "./util/configparser.y" { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); @@ -3422,10 +3426,10 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3426 "util/configparser.c" +#line 3430 "util/configparser.c" break; - case 310: + case 311: #line 879 "./util/configparser.y" { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); @@ -3434,30 +3438,30 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3438 "util/configparser.c" +#line 3442 "util/configparser.c" break; - case 311: + case 312: #line 888 "./util/configparser.y" { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 3448 "util/configparser.c" +#line 3452 "util/configparser.c" break; - case 312: + case 313: #line 895 "./util/configparser.y" { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 3458 "util/configparser.c" +#line 3462 "util/configparser.c" break; - case 313: + case 314: #line 902 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); @@ -3466,20 +3470,20 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3470 "util/configparser.c" +#line 3474 "util/configparser.c" break; - case 314: + case 315: #line 911 "./util/configparser.y" { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 3480 "util/configparser.c" +#line 3484 "util/configparser.c" break; - case 315: + case 316: #line 918 "./util/configparser.y" { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); @@ -3488,10 +3492,10 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3492 "util/configparser.c" +#line 3496 "util/configparser.c" break; - case 316: + case 317: #line 927 "./util/configparser.y" { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); @@ -3499,30 +3503,30 @@ yyreduce: (yyvsp[0].str))) yyerror("out of memory"); } -#line 3503 "util/configparser.c" +#line 3507 "util/configparser.c" break; - case 317: + case 318: #line 935 "./util/configparser.y" { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 3513 "util/configparser.c" +#line 3517 "util/configparser.c" break; - case 318: + case 319: #line 942 "./util/configparser.y" { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 3523 "util/configparser.c" +#line 3527 "util/configparser.c" break; - case 319: + case 320: #line 949 "./util/configparser.y" { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); @@ -3530,10 +3534,10 @@ yyreduce: (yyvsp[0].str))) yyerror("out of memory"); } -#line 3534 "util/configparser.c" +#line 3538 "util/configparser.c" break; - case 320: + case 321: #line 957 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); @@ -3542,10 +3546,10 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3546 "util/configparser.c" +#line 3550 "util/configparser.c" break; - case 321: + case 322: #line 966 "./util/configparser.y" { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); @@ -3554,10 +3558,10 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3558 "util/configparser.c" +#line 3562 "util/configparser.c" break; - case 322: + case 323: #line 975 "./util/configparser.y" { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); @@ -3566,10 +3570,10 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3570 "util/configparser.c" +#line 3574 "util/configparser.c" break; - case 323: + case 324: #line 984 "./util/configparser.y" { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); @@ -3583,10 +3587,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3587 "util/configparser.c" +#line 3591 "util/configparser.c" break; - case 324: + case 325: #line 998 "./util/configparser.y" { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); @@ -3595,10 +3599,10 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3599 "util/configparser.c" +#line 3603 "util/configparser.c" break; - case 325: + case 326: #line 1007 "./util/configparser.y" { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); @@ -3607,10 +3611,10 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3611 "util/configparser.c" +#line 3615 "util/configparser.c" break; - case 326: + case 327: #line 1016 "./util/configparser.y" { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); @@ -3619,10 +3623,10 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3623 "util/configparser.c" +#line 3627 "util/configparser.c" break; - case 327: + case 328: #line 1025 "./util/configparser.y" { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); @@ -3631,10 +3635,10 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3635 "util/configparser.c" +#line 3639 "util/configparser.c" break; - case 328: + case 329: #line 1034 "./util/configparser.y" { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); @@ -3643,10 +3647,10 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3647 "util/configparser.c" +#line 3651 "util/configparser.c" break; - case 329: + case 330: #line 1043 "./util/configparser.y" { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); @@ -3655,30 +3659,30 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3659 "util/configparser.c" +#line 3663 "util/configparser.c" break; - case 330: + case 331: #line 1052 "./util/configparser.y" { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 3669 "util/configparser.c" +#line 3673 "util/configparser.c" break; - case 331: + case 332: #line 1059 "./util/configparser.y" { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 3679 "util/configparser.c" +#line 3683 "util/configparser.c" break; - case 332: + case 333: #line 1066 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); @@ -3704,10 +3708,10 @@ yyreduce: } } } -#line 3708 "util/configparser.c" +#line 3712 "util/configparser.c" break; - case 333: + case 334: #line 1092 "./util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); @@ -3715,50 +3719,50 @@ yyreduce: cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 3719 "util/configparser.c" +#line 3723 "util/configparser.c" break; - case 334: + case 335: #line 1100 "./util/configparser.y" { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 3729 "util/configparser.c" +#line 3733 "util/configparser.c" break; - case 335: + case 336: #line 1107 "./util/configparser.y" { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3739 "util/configparser.c" +#line 3743 "util/configparser.c" break; - case 336: + case 337: #line 1114 "./util/configparser.y" { 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 3749 "util/configparser.c" +#line 3753 "util/configparser.c" break; - case 337: + case 338: #line 1121 "./util/configparser.y" { 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 3759 "util/configparser.c" +#line 3763 "util/configparser.c" break; - case 338: + case 339: #line 1128 "./util/configparser.y" { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); @@ -3766,10 +3770,10 @@ yyreduce: auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3770 "util/configparser.c" +#line 3774 "util/configparser.c" break; - case 339: + case 340: #line 1136 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); @@ -3777,10 +3781,10 @@ yyreduce: trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3781 "util/configparser.c" +#line 3785 "util/configparser.c" break; - case 340: + case 341: #line 1144 "./util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); @@ -3788,20 +3792,20 @@ yyreduce: trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3792 "util/configparser.c" +#line 3796 "util/configparser.c" break; - case 341: + case 342: #line 1152 "./util/configparser.y" { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3802 "util/configparser.c" +#line 3806 "util/configparser.c" break; - case 342: + case 343: #line 1159 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); @@ -3812,10 +3816,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3816 "util/configparser.c" +#line 3820 "util/configparser.c" break; - case 343: + case 344: #line 1170 "./util/configparser.y" { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); @@ -3826,20 +3830,20 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3830 "util/configparser.c" +#line 3834 "util/configparser.c" break; - case 344: + case 345: #line 1181 "./util/configparser.y" { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3840 "util/configparser.c" +#line 3844 "util/configparser.c" break; - case 345: + case 346: #line 1188 "./util/configparser.y" { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); @@ -3848,10 +3852,10 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3852 "util/configparser.c" +#line 3856 "util/configparser.c" break; - case 346: + case 347: #line 1197 "./util/configparser.y" { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); @@ -3860,10 +3864,10 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3864 "util/configparser.c" +#line 3868 "util/configparser.c" break; - case 347: + case 348: #line 1206 "./util/configparser.y" { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); @@ -3872,30 +3876,30 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3876 "util/configparser.c" +#line 3880 "util/configparser.c" break; - case 348: + case 349: #line 1215 "./util/configparser.y" { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 3886 "util/configparser.c" +#line 3890 "util/configparser.c" break; - case 349: + case 350: #line 1222 "./util/configparser.y" { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 3896 "util/configparser.c" +#line 3900 "util/configparser.c" break; - case 350: + case 351: #line 1229 "./util/configparser.y" { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); @@ -3903,10 +3907,10 @@ yyreduce: yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 3907 "util/configparser.c" +#line 3911 "util/configparser.c" break; - case 351: + case 352: #line 1237 "./util/configparser.y" { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); @@ -3914,10 +3918,10 @@ yyreduce: yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 3918 "util/configparser.c" +#line 3922 "util/configparser.c" break; - case 352: + case 353: #line 1245 "./util/configparser.y" { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); @@ -3927,10 +3931,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3931 "util/configparser.c" +#line 3935 "util/configparser.c" break; - case 353: + case 354: #line 1255 "./util/configparser.y" { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); @@ -3940,10 +3944,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3944 "util/configparser.c" +#line 3948 "util/configparser.c" break; - case 354: + case 355: #line 1265 "./util/configparser.y" { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); @@ -3953,10 +3957,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3957 "util/configparser.c" +#line 3961 "util/configparser.c" break; - case 355: + case 356: #line 1275 "./util/configparser.y" { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); @@ -3970,10 +3974,10 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3974 "util/configparser.c" +#line 3978 "util/configparser.c" break; - case 356: + case 357: #line 1289 "./util/configparser.y" { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); @@ -3981,10 +3985,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3985 "util/configparser.c" +#line 3989 "util/configparser.c" break; - case 357: + case 358: #line 1297 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); @@ -3997,10 +4001,10 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4001 "util/configparser.c" +#line 4005 "util/configparser.c" break; - case 358: + case 359: #line 1310 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); @@ -4011,10 +4015,10 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4015 "util/configparser.c" +#line 4019 "util/configparser.c" break; - case 359: + case 360: #line 1321 "./util/configparser.y" { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); @@ -4022,10 +4026,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4026 "util/configparser.c" +#line 4030 "util/configparser.c" break; - case 360: + case 361: #line 1329 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -4038,10 +4042,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4042 "util/configparser.c" +#line 4046 "util/configparser.c" break; - case 361: + case 362: #line 1342 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); @@ -4050,10 +4054,10 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4054 "util/configparser.c" +#line 4058 "util/configparser.c" break; - case 362: + case 363: #line 1351 "./util/configparser.y" { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); @@ -4062,10 +4066,10 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4066 "util/configparser.c" +#line 4070 "util/configparser.c" break; - case 363: + case 364: #line 1360 "./util/configparser.y" { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); @@ -4074,10 +4078,10 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4078 "util/configparser.c" +#line 4082 "util/configparser.c" break; - case 364: + case 365: #line 1369 "./util/configparser.y" { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); @@ -4087,10 +4091,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4091 "util/configparser.c" +#line 4095 "util/configparser.c" break; - case 365: + case 366: #line 1379 "./util/configparser.y" { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); @@ -4100,10 +4104,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4104 "util/configparser.c" +#line 4108 "util/configparser.c" break; - case 366: + case 367: #line 1389 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); @@ -4111,10 +4115,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4115 "util/configparser.c" +#line 4119 "util/configparser.c" break; - case 367: + case 368: #line 1397 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -4127,10 +4131,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4131 "util/configparser.c" +#line 4135 "util/configparser.c" break; - case 368: + case 369: #line 1410 "./util/configparser.y" { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); @@ -4139,10 +4143,10 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4143 "util/configparser.c" +#line 4147 "util/configparser.c" break; - case 369: + case 370: #line 1419 "./util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); @@ -4150,10 +4154,10 @@ yyreduce: "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4154 "util/configparser.c" +#line 4158 "util/configparser.c" break; - case 370: + case 371: #line 1427 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); @@ -4162,10 +4166,10 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4166 "util/configparser.c" +#line 4170 "util/configparser.c" break; - case 371: + case 372: #line 1436 "./util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); @@ -4173,10 +4177,10 @@ yyreduce: "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4177 "util/configparser.c" +#line 4181 "util/configparser.c" break; - case 372: + case 373: #line 1444 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -4189,10 +4193,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4193 "util/configparser.c" +#line 4197 "util/configparser.c" break; - case 373: + case 374: #line 1457 "./util/configparser.y" { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); @@ -4201,21 +4205,34 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4205 "util/configparser.c" +#line 4209 "util/configparser.c" break; - case 374: + case 375: #line 1466 "./util/configparser.y" + { + OUTYY(("P(server_infra_keep_probing:%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->infra_keep_probing = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 4222 "util/configparser.c" + break; + + case 376: +#line 1476 "./util/configparser.y" { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 4215 "util/configparser.c" +#line 4232 "util/configparser.c" break; - case 375: -#line 1473 "./util/configparser.y" + case 377: +#line 1483 "./util/configparser.y" { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4224,11 +4241,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4228 "util/configparser.c" +#line 4245 "util/configparser.c" break; - case 376: -#line 1483 "./util/configparser.y" + case 378: +#line 1493 "./util/configparser.y" { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4237,11 +4254,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4241 "util/configparser.c" +#line 4258 "util/configparser.c" break; - case 377: -#line 1493 "./util/configparser.y" + case 379: +#line 1503 "./util/configparser.y" { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4250,11 +4267,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4254 "util/configparser.c" +#line 4271 "util/configparser.c" break; - case 378: -#line 1503 "./util/configparser.y" + case 380: +#line 1513 "./util/configparser.y" { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4263,11 +4280,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4267 "util/configparser.c" +#line 4284 "util/configparser.c" break; - case 379: -#line 1513 "./util/configparser.y" + case 381: +#line 1523 "./util/configparser.y" { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4276,11 +4293,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4280 "util/configparser.c" +#line 4297 "util/configparser.c" break; - case 380: -#line 1523 "./util/configparser.y" + case 382: +#line 1533 "./util/configparser.y" { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4289,11 +4306,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4293 "util/configparser.c" +#line 4310 "util/configparser.c" break; - case 381: -#line 1533 "./util/configparser.y" + case 383: +#line 1543 "./util/configparser.y" { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4302,11 +4319,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4306 "util/configparser.c" +#line 4323 "util/configparser.c" break; - case 382: -#line 1543 "./util/configparser.y" + case 384: +#line 1553 "./util/configparser.y" { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4315,41 +4332,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4319 "util/configparser.c" +#line 4336 "util/configparser.c" break; - case 383: -#line 1553 "./util/configparser.y" + case 385: +#line 1563 "./util/configparser.y" { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4329 "util/configparser.c" +#line 4346 "util/configparser.c" break; - case 384: -#line 1560 "./util/configparser.y" + case 386: +#line 1570 "./util/configparser.y" { OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4339 "util/configparser.c" +#line 4356 "util/configparser.c" break; - case 385: -#line 1567 "./util/configparser.y" + case 387: +#line 1577 "./util/configparser.y" { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4349 "util/configparser.c" +#line 4366 "util/configparser.c" break; - case 386: -#line 1574 "./util/configparser.y" + case 388: +#line 1584 "./util/configparser.y" { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4357,11 +4374,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4361 "util/configparser.c" +#line 4378 "util/configparser.c" break; - case 387: -#line 1583 "./util/configparser.y" + case 389: +#line 1593 "./util/configparser.y" { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4369,11 +4386,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4373 "util/configparser.c" +#line 4390 "util/configparser.c" break; - case 388: -#line 1592 "./util/configparser.y" + case 390: +#line 1602 "./util/configparser.y" { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4381,11 +4398,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4385 "util/configparser.c" +#line 4402 "util/configparser.c" break; - case 389: -#line 1601 "./util/configparser.y" + case 391: +#line 1611 "./util/configparser.y" { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4393,21 +4410,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4397 "util/configparser.c" +#line 4414 "util/configparser.c" break; - case 390: -#line 1610 "./util/configparser.y" + case 392: +#line 1620 "./util/configparser.y" { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4407 "util/configparser.c" +#line 4424 "util/configparser.c" break; - case 391: -#line 1617 "./util/configparser.y" + case 393: +#line 1627 "./util/configparser.y" { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4416,11 +4433,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4420 "util/configparser.c" +#line 4437 "util/configparser.c" break; - case 392: -#line 1627 "./util/configparser.y" + case 394: +#line 1637 "./util/configparser.y" { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && @@ -4439,21 +4456,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4443 "util/configparser.c" +#line 4460 "util/configparser.c" break; - case 393: -#line 1647 "./util/configparser.y" + case 395: +#line 1657 "./util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 4453 "util/configparser.c" +#line 4470 "util/configparser.c" break; - case 394: -#line 1654 "./util/configparser.y" + case 396: +#line 1664 "./util/configparser.y" { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4470,11 +4487,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4474 "util/configparser.c" +#line 4491 "util/configparser.c" break; - case 395: -#line 1672 "./util/configparser.y" + case 397: +#line 1682 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4486,11 +4503,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4490 "util/configparser.c" +#line 4507 "util/configparser.c" break; - case 396: -#line 1685 "./util/configparser.y" + case 398: +#line 1695 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4502,11 +4519,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4506 "util/configparser.c" +#line 4523 "util/configparser.c" break; - case 397: -#line 1698 "./util/configparser.y" + case 399: +#line 1708 "./util/configparser.y" { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4514,11 +4531,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4518 "util/configparser.c" +#line 4535 "util/configparser.c" break; - case 398: -#line 1707 "./util/configparser.y" + case 400: +#line 1717 "./util/configparser.y" { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4526,11 +4543,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4530 "util/configparser.c" +#line 4547 "util/configparser.c" break; - case 399: -#line 1716 "./util/configparser.y" + case 401: +#line 1726 "./util/configparser.y" { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4538,11 +4555,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4542 "util/configparser.c" +#line 4559 "util/configparser.c" break; - case 400: -#line 1725 "./util/configparser.y" + case 402: +#line 1735 "./util/configparser.y" { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4550,11 +4567,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4554 "util/configparser.c" +#line 4571 "util/configparser.c" break; - case 401: -#line 1734 "./util/configparser.y" + case 403: +#line 1744 "./util/configparser.y" { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4563,11 +4580,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4567 "util/configparser.c" +#line 4584 "util/configparser.c" break; - case 402: -#line 1744 "./util/configparser.y" + case 404: +#line 1754 "./util/configparser.y" { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4576,11 +4593,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4580 "util/configparser.c" +#line 4597 "util/configparser.c" break; - case 403: -#line 1754 "./util/configparser.y" + case 405: +#line 1764 "./util/configparser.y" { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4590,11 +4607,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4594 "util/configparser.c" +#line 4611 "util/configparser.c" break; - case 404: -#line 1765 "./util/configparser.y" + case 406: +#line 1775 "./util/configparser.y" { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4602,11 +4619,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4606 "util/configparser.c" +#line 4623 "util/configparser.c" break; - case 405: -#line 1774 "./util/configparser.y" + case 407: +#line 1784 "./util/configparser.y" { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4614,11 +4631,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4618 "util/configparser.c" +#line 4635 "util/configparser.c" break; - case 406: -#line 1783 "./util/configparser.y" + case 408: +#line 1793 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4626,11 +4643,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4630 "util/configparser.c" +#line 4647 "util/configparser.c" break; - case 407: -#line 1792 "./util/configparser.y" + case 409: +#line 1802 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4638,11 +4655,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4642 "util/configparser.c" +#line 4659 "util/configparser.c" break; - case 408: -#line 1801 "./util/configparser.y" + case 410: +#line 1811 "./util/configparser.y" { OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4650,11 +4667,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4654 "util/configparser.c" +#line 4671 "util/configparser.c" break; - case 409: -#line 1810 "./util/configparser.y" + case 411: +#line 1820 "./util/configparser.y" { OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4662,11 +4679,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4666 "util/configparser.c" +#line 4683 "util/configparser.c" break; - case 410: -#line 1819 "./util/configparser.y" + case 412: +#line 1829 "./util/configparser.y" { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4678,11 +4695,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4682 "util/configparser.c" +#line 4699 "util/configparser.c" break; - case 411: -#line 1832 "./util/configparser.y" + case 413: +#line 1842 "./util/configparser.y" { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4694,11 +4711,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4698 "util/configparser.c" +#line 4715 "util/configparser.c" break; - case 412: -#line 1845 "./util/configparser.y" + case 414: +#line 1855 "./util/configparser.y" { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4706,21 +4723,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4710 "util/configparser.c" +#line 4727 "util/configparser.c" break; - case 413: -#line 1854 "./util/configparser.y" + case 415: +#line 1864 "./util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 4720 "util/configparser.c" +#line 4737 "util/configparser.c" break; - case 414: -#line 1861 "./util/configparser.y" + case 416: +#line 1871 "./util/configparser.y" { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4728,11 +4745,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4732 "util/configparser.c" +#line 4749 "util/configparser.c" break; - case 415: -#line 1870 "./util/configparser.y" + case 417: +#line 1880 "./util/configparser.y" { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4740,11 +4757,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4744 "util/configparser.c" +#line 4761 "util/configparser.c" break; - case 416: -#line 1879 "./util/configparser.y" + case 418: +#line 1889 "./util/configparser.y" { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4752,11 +4769,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4756 "util/configparser.c" +#line 4773 "util/configparser.c" break; - case 417: -#line 1888 "./util/configparser.y" + case 419: +#line 1898 "./util/configparser.y" { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4765,22 +4782,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4769 "util/configparser.c" +#line 4786 "util/configparser.c" break; - case 418: -#line 1897 "./util/configparser.y" + case 420: +#line 1907 "./util/configparser.y" { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4780 "util/configparser.c" +#line 4797 "util/configparser.c" break; - case 419: -#line 1905 "./util/configparser.y" + case 421: +#line 1915 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4792,22 +4809,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4796 "util/configparser.c" +#line 4813 "util/configparser.c" break; - case 420: -#line 1918 "./util/configparser.y" + case 422: +#line 1928 "./util/configparser.y" { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4807 "util/configparser.c" +#line 4824 "util/configparser.c" break; - case 421: -#line 1926 "./util/configparser.y" + case 423: +#line 1936 "./util/configparser.y" { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -4847,21 +4864,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 4851 "util/configparser.c" +#line 4868 "util/configparser.c" break; - case 422: -#line 1967 "./util/configparser.y" + case 424: +#line 1977 "./util/configparser.y" { OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 4861 "util/configparser.c" +#line 4878 "util/configparser.c" break; - case 423: -#line 1974 "./util/configparser.y" + case 425: +#line 1984 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -4875,11 +4892,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 4879 "util/configparser.c" +#line 4896 "util/configparser.c" break; - case 424: -#line 1989 "./util/configparser.y" + case 426: +#line 1999 "./util/configparser.y" { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4888,11 +4905,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4892 "util/configparser.c" +#line 4909 "util/configparser.c" break; - case 425: -#line 1999 "./util/configparser.y" + case 427: +#line 2009 "./util/configparser.y" { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4901,41 +4918,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4905 "util/configparser.c" +#line 4922 "util/configparser.c" break; - case 426: -#line 2009 "./util/configparser.y" + case 428: +#line 2019 "./util/configparser.y" { OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4915 "util/configparser.c" +#line 4932 "util/configparser.c" break; - case 427: -#line 2016 "./util/configparser.y" + case 429: +#line 2026 "./util/configparser.y" { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4925 "util/configparser.c" +#line 4942 "util/configparser.c" break; - case 428: -#line 2023 "./util/configparser.y" + case 430: +#line 2033 "./util/configparser.y" { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 4935 "util/configparser.c" +#line 4952 "util/configparser.c" break; - case 429: -#line 2030 "./util/configparser.y" + case 431: +#line 2040 "./util/configparser.y" { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4943,22 +4960,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4947 "util/configparser.c" +#line 4964 "util/configparser.c" break; - case 430: -#line 2039 "./util/configparser.y" + case 432: +#line 2049 "./util/configparser.y" { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 4958 "util/configparser.c" +#line 4975 "util/configparser.c" break; - case 431: -#line 2047 "./util/configparser.y" + case 433: +#line 2057 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -4971,11 +4988,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4975 "util/configparser.c" +#line 4992 "util/configparser.c" break; - case 432: -#line 2061 "./util/configparser.y" + case 434: +#line 2071 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4995,11 +5012,11 @@ yyreduce: } } } -#line 4999 "util/configparser.c" +#line 5016 "util/configparser.c" break; - case 433: -#line 2082 "./util/configparser.y" + case 435: +#line 2092 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5019,11 +5036,11 @@ yyreduce: } } } -#line 5023 "util/configparser.c" +#line 5040 "util/configparser.c" break; - case 434: -#line 2103 "./util/configparser.y" + case 436: +#line 2113 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, @@ -5034,11 +5051,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5038 "util/configparser.c" +#line 5055 "util/configparser.c" break; - case 435: -#line 2115 "./util/configparser.y" + case 437: +#line 2125 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, @@ -5049,11 +5066,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5053 "util/configparser.c" +#line 5070 "util/configparser.c" break; - case 436: -#line 2127 "./util/configparser.y" + case 438: +#line 2137 "./util/configparser.y" { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, @@ -5064,11 +5081,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5068 "util/configparser.c" +#line 5085 "util/configparser.c" break; - case 437: -#line 2139 "./util/configparser.y" + case 439: +#line 2149 "./util/configparser.y" { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, @@ -5076,11 +5093,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5080 "util/configparser.c" +#line 5097 "util/configparser.c" break; - case 438: -#line 2148 "./util/configparser.y" + case 440: +#line 2158 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5100,11 +5117,11 @@ yyreduce: } } } -#line 5104 "util/configparser.c" +#line 5121 "util/configparser.c" break; - case 439: -#line 2169 "./util/configparser.y" + case 441: +#line 2179 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5112,11 +5129,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5116 "util/configparser.c" +#line 5133 "util/configparser.c" break; - case 440: -#line 2179 "./util/configparser.y" + case 442: +#line 2189 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5124,33 +5141,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5128 "util/configparser.c" +#line 5145 "util/configparser.c" break; - case 441: -#line 2188 "./util/configparser.y" + case 443: +#line 2198 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5139 "util/configparser.c" +#line 5156 "util/configparser.c" break; - case 442: -#line 2196 "./util/configparser.y" + case 444: +#line 2206 "./util/configparser.y" { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5150 "util/configparser.c" +#line 5167 "util/configparser.c" break; - case 443: -#line 2204 "./util/configparser.y" + case 445: +#line 2214 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5162,11 +5179,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5166 "util/configparser.c" +#line 5183 "util/configparser.c" break; - case 444: -#line 2217 "./util/configparser.y" + case 446: +#line 2227 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5178,11 +5195,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5182 "util/configparser.c" +#line 5199 "util/configparser.c" break; - case 445: -#line 2230 "./util/configparser.y" + case 447: +#line 2240 "./util/configparser.y" { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -5196,11 +5213,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5200 "util/configparser.c" +#line 5217 "util/configparser.c" break; - case 446: -#line 2245 "./util/configparser.y" + case 448: +#line 2255 "./util/configparser.y" { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -5214,11 +5231,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5218 "util/configparser.c" +#line 5235 "util/configparser.c" break; - case 447: -#line 2260 "./util/configparser.y" + case 449: +#line 2270 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5226,11 +5243,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5230 "util/configparser.c" +#line 5247 "util/configparser.c" break; - case 448: -#line 2269 "./util/configparser.y" + case 450: +#line 2279 "./util/configparser.y" { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5238,20 +5255,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5242 "util/configparser.c" +#line 5259 "util/configparser.c" break; - case 449: -#line 2278 "./util/configparser.y" + case 451: +#line 2288 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5251 "util/configparser.c" +#line 5268 "util/configparser.c" break; - case 450: -#line 2284 "./util/configparser.y" + case 452: +#line 2294 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5259,11 +5276,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5263 "util/configparser.c" +#line 5280 "util/configparser.c" break; - case 451: -#line 2293 "./util/configparser.y" + case 453: +#line 2303 "./util/configparser.y" { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5271,11 +5288,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5275 "util/configparser.c" +#line 5292 "util/configparser.c" break; - case 452: -#line 2302 "./util/configparser.y" + case 454: +#line 2312 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5284,11 +5301,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5288 "util/configparser.c" +#line 5305 "util/configparser.c" break; - case 453: -#line 2312 "./util/configparser.y" + case 455: +#line 2322 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5297,11 +5314,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5301 "util/configparser.c" +#line 5318 "util/configparser.c" break; - case 454: -#line 2322 "./util/configparser.y" + case 456: +#line 2332 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5313,11 +5330,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5317 "util/configparser.c" +#line 5334 "util/configparser.c" break; - case 455: -#line 2335 "./util/configparser.y" + case 457: +#line 2345 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5329,11 +5346,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5333 "util/configparser.c" +#line 5350 "util/configparser.c" break; - case 456: -#line 2348 "./util/configparser.y" + case 458: +#line 2358 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5344,11 +5361,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5348 "util/configparser.c" +#line 5365 "util/configparser.c" break; - case 457: -#line 2360 "./util/configparser.y" + case 459: +#line 2370 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5361,11 +5378,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5365 "util/configparser.c" +#line 5382 "util/configparser.c" break; - case 458: -#line 2374 "./util/configparser.y" + case 460: +#line 2384 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5376,11 +5393,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5380 "util/configparser.c" +#line 5397 "util/configparser.c" break; - case 459: -#line 2386 "./util/configparser.y" + case 461: +#line 2396 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5393,11 +5410,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5397 "util/configparser.c" +#line 5414 "util/configparser.c" break; - case 460: -#line 2400 "./util/configparser.y" + case 462: +#line 2410 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5406,31 +5423,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5410 "util/configparser.c" +#line 5427 "util/configparser.c" break; - case 461: -#line 2410 "./util/configparser.y" + case 463: +#line 2420 "./util/configparser.y" { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5420 "util/configparser.c" +#line 5437 "util/configparser.c" break; - case 462: -#line 2417 "./util/configparser.y" + case 464: +#line 2427 "./util/configparser.y" { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5430 "util/configparser.c" +#line 5447 "util/configparser.c" break; - case 463: -#line 2424 "./util/configparser.y" + case 465: +#line 2434 "./util/configparser.y" { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5438,11 +5455,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5442 "util/configparser.c" +#line 5459 "util/configparser.c" break; - case 464: -#line 2433 "./util/configparser.y" + case 466: +#line 2443 "./util/configparser.y" { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5450,11 +5467,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5454 "util/configparser.c" +#line 5471 "util/configparser.c" break; - case 465: -#line 2442 "./util/configparser.y" + case 467: +#line 2452 "./util/configparser.y" { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5463,11 +5480,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5467 "util/configparser.c" +#line 5484 "util/configparser.c" break; - case 466: -#line 2452 "./util/configparser.y" + case 468: +#line 2462 "./util/configparser.y" { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5476,11 +5493,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5480 "util/configparser.c" +#line 5497 "util/configparser.c" break; - case 467: -#line 2462 "./util/configparser.y" + case 469: +#line 2472 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5489,31 +5506,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5493 "util/configparser.c" +#line 5510 "util/configparser.c" break; - case 468: -#line 2472 "./util/configparser.y" + case 470: +#line 2482 "./util/configparser.y" { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5503 "util/configparser.c" +#line 5520 "util/configparser.c" break; - case 469: -#line 2479 "./util/configparser.y" + case 471: +#line 2489 "./util/configparser.y" { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5513 "util/configparser.c" +#line 5530 "util/configparser.c" break; - case 470: -#line 2486 "./util/configparser.y" + case 472: +#line 2496 "./util/configparser.y" { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5521,11 +5538,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5525 "util/configparser.c" +#line 5542 "util/configparser.c" break; - case 471: -#line 2495 "./util/configparser.y" + case 473: +#line 2505 "./util/configparser.y" { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5533,11 +5550,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5537 "util/configparser.c" +#line 5554 "util/configparser.c" break; - case 472: -#line 2504 "./util/configparser.y" + case 474: +#line 2514 "./util/configparser.y" { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5546,11 +5563,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5550 "util/configparser.c" +#line 5567 "util/configparser.c" break; - case 473: -#line 2514 "./util/configparser.y" + case 475: +#line 2524 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5559,52 +5576,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5563 "util/configparser.c" +#line 5580 "util/configparser.c" break; - case 474: -#line 2524 "./util/configparser.y" + case 476: +#line 2534 "./util/configparser.y" { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 5573 "util/configparser.c" +#line 5590 "util/configparser.c" break; - case 475: -#line 2531 "./util/configparser.y" + case 477: +#line 2541 "./util/configparser.y" { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5583 "util/configparser.c" +#line 5600 "util/configparser.c" break; - case 476: -#line 2538 "./util/configparser.y" + case 478: +#line 2548 "./util/configparser.y" { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5593 "util/configparser.c" +#line 5610 "util/configparser.c" break; - case 477: -#line 2545 "./util/configparser.y" + case 479: +#line 2555 "./util/configparser.y" { OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5604 "util/configparser.c" +#line 5621 "util/configparser.c" break; - case 478: -#line 2553 "./util/configparser.y" + case 480: +#line 2563 "./util/configparser.y" { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5613,11 +5630,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5617 "util/configparser.c" +#line 5634 "util/configparser.c" break; - case 479: -#line 2563 "./util/configparser.y" + case 481: +#line 2573 "./util/configparser.y" { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5626,11 +5643,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5630 "util/configparser.c" +#line 5647 "util/configparser.c" break; - case 480: -#line 2573 "./util/configparser.y" + case 482: +#line 2583 "./util/configparser.y" { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5639,11 +5656,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5643 "util/configparser.c" +#line 5660 "util/configparser.c" break; - case 481: -#line 2583 "./util/configparser.y" + case 483: +#line 2593 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5652,11 +5669,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5656 "util/configparser.c" +#line 5673 "util/configparser.c" break; - case 482: -#line 2593 "./util/configparser.y" + case 484: +#line 2603 "./util/configparser.y" { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -5694,11 +5711,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5698 "util/configparser.c" +#line 5715 "util/configparser.c" break; - case 483: -#line 2632 "./util/configparser.y" + case 485: +#line 2642 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5707,33 +5724,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5711 "util/configparser.c" +#line 5728 "util/configparser.c" break; - case 484: -#line 2642 "./util/configparser.y" + case 486: +#line 2652 "./util/configparser.y" { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 5722 "util/configparser.c" +#line 5739 "util/configparser.c" break; - case 485: -#line 2650 "./util/configparser.y" + case 487: +#line 2660 "./util/configparser.y" { OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { fatal_exit("out of memory adding local-data"); } } -#line 5733 "util/configparser.c" +#line 5750 "util/configparser.c" break; - case 486: -#line 2658 "./util/configparser.y" + case 488: +#line 2668 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5747,11 +5764,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5751 "util/configparser.c" +#line 5768 "util/configparser.c" break; - case 487: -#line 2673 "./util/configparser.y" + case 489: +#line 2683 "./util/configparser.y" { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5759,19 +5776,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5763 "util/configparser.c" +#line 5780 "util/configparser.c" break; - case 488: -#line 2682 "./util/configparser.y" + case 490: +#line 2692 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 5771 "util/configparser.c" +#line 5788 "util/configparser.c" break; - case 499: -#line 2693 "./util/configparser.y" + case 501: +#line 2703 "./util/configparser.y" { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5780,11 +5797,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5784 "util/configparser.c" +#line 5801 "util/configparser.c" break; - case 500: -#line 2703 "./util/configparser.y" + case 502: +#line 2713 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5792,79 +5809,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5796 "util/configparser.c" +#line 5813 "util/configparser.c" break; - case 501: -#line 2712 "./util/configparser.y" + case 503: +#line 2722 "./util/configparser.y" { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5806 "util/configparser.c" +#line 5823 "util/configparser.c" break; - case 502: -#line 2719 "./util/configparser.y" + case 504: +#line 2729 "./util/configparser.y" { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5816 "util/configparser.c" +#line 5833 "util/configparser.c" break; - case 503: -#line 2726 "./util/configparser.y" + case 505: +#line 2736 "./util/configparser.y" { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 5826 "util/configparser.c" +#line 5843 "util/configparser.c" break; - case 504: -#line 2733 "./util/configparser.y" + case 506: +#line 2743 "./util/configparser.y" { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 5836 "util/configparser.c" +#line 5853 "util/configparser.c" break; - case 505: -#line 2740 "./util/configparser.y" + case 507: +#line 2750 "./util/configparser.y" { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 5846 "util/configparser.c" +#line 5863 "util/configparser.c" break; - case 506: -#line 2747 "./util/configparser.y" + case 508: +#line 2757 "./util/configparser.y" { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 5856 "util/configparser.c" +#line 5873 "util/configparser.c" break; - case 507: -#line 2754 "./util/configparser.y" + case 509: +#line 2764 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 5864 "util/configparser.c" +#line 5881 "util/configparser.c" break; - case 528: -#line 2774 "./util/configparser.y" + case 530: +#line 2784 "./util/configparser.y" { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5872,31 +5889,31 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5876 "util/configparser.c" +#line 5893 "util/configparser.c" break; - case 529: -#line 2783 "./util/configparser.y" + case 531: +#line 2793 "./util/configparser.y" { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 5886 "util/configparser.c" +#line 5903 "util/configparser.c" break; - case 530: -#line 2790 "./util/configparser.y" + case 532: +#line 2800 "./util/configparser.y" { OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_ip); cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); } -#line 5896 "util/configparser.c" +#line 5913 "util/configparser.c" break; - case 531: -#line 2797 "./util/configparser.y" + case 533: +#line 2807 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5904,51 +5921,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5908 "util/configparser.c" +#line 5925 "util/configparser.c" break; - case 532: -#line 2806 "./util/configparser.y" + case 534: +#line 2816 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_server_name); cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); } -#line 5918 "util/configparser.c" +#line 5935 "util/configparser.c" break; - case 533: -#line 2813 "./util/configparser.y" + case 535: +#line 2823 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_cert_bundle); cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); } -#line 5928 "util/configparser.c" +#line 5945 "util/configparser.c" break; - case 534: -#line 2820 "./util/configparser.y" + case 536: +#line 2830 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_key_file); cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); } -#line 5938 "util/configparser.c" +#line 5955 "util/configparser.c" break; - case 535: -#line 2827 "./util/configparser.y" + case 537: +#line 2837 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_cert_file); cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); } -#line 5948 "util/configparser.c" +#line 5965 "util/configparser.c" break; - case 536: -#line 2834 "./util/configparser.y" + case 538: +#line 2844 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5956,11 +5973,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5960 "util/configparser.c" +#line 5977 "util/configparser.c" break; - case 537: -#line 2843 "./util/configparser.y" + case 539: +#line 2853 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5968,31 +5985,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5972 "util/configparser.c" +#line 5989 "util/configparser.c" break; - case 538: -#line 2852 "./util/configparser.y" + case 540: +#line 2862 "./util/configparser.y" { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 5982 "util/configparser.c" +#line 5999 "util/configparser.c" break; - case 539: -#line 2859 "./util/configparser.y" + case 541: +#line 2869 "./util/configparser.y" { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 5992 "util/configparser.c" +#line 6009 "util/configparser.c" break; - case 540: -#line 2866 "./util/configparser.y" + case 542: +#line 2876 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6001,11 +6018,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6005 "util/configparser.c" +#line 6022 "util/configparser.c" break; - case 541: -#line 2876 "./util/configparser.y" + case 543: +#line 2886 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6014,11 +6031,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6018 "util/configparser.c" +#line 6035 "util/configparser.c" break; - case 542: -#line 2886 "./util/configparser.y" + case 544: +#line 2896 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6027,11 +6044,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6031 "util/configparser.c" +#line 6048 "util/configparser.c" break; - case 543: -#line 2896 "./util/configparser.y" + case 545: +#line 2906 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6040,11 +6057,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6044 "util/configparser.c" +#line 6061 "util/configparser.c" break; - case 544: -#line 2906 "./util/configparser.y" + case 546: +#line 2916 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6053,11 +6070,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6057 "util/configparser.c" +#line 6074 "util/configparser.c" break; - case 545: -#line 2916 "./util/configparser.y" + case 547: +#line 2926 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6066,29 +6083,29 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6070 "util/configparser.c" +#line 6087 "util/configparser.c" break; - case 546: -#line 2926 "./util/configparser.y" + case 548: +#line 2936 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 6078 "util/configparser.c" +#line 6095 "util/configparser.c" break; - case 550: -#line 2935 "./util/configparser.y" + case 552: +#line 2945 "./util/configparser.y" { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6088 "util/configparser.c" +#line 6105 "util/configparser.c" break; - case 551: -#line 2941 "./util/configparser.y" + case 553: +#line 2951 "./util/configparser.y" { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6097,21 +6114,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6101 "util/configparser.c" +#line 6118 "util/configparser.c" break; - case 552: -#line 2951 "./util/configparser.y" + case 554: +#line 2961 "./util/configparser.y" { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 6111 "util/configparser.c" +#line 6128 "util/configparser.c" break; - case 553: -#line 2958 "./util/configparser.y" + case 555: +#line 2968 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6119,30 +6136,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6123 "util/configparser.c" +#line 6140 "util/configparser.c" break; - case 554: -#line 2967 "./util/configparser.y" + case 556: +#line 2977 "./util/configparser.y" { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6134 "util/configparser.c" +#line 6151 "util/configparser.c" break; - case 555: -#line 2975 "./util/configparser.y" + case 557: +#line 2985 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6142 "util/configparser.c" +#line 6159 "util/configparser.c" break; - case 568: -#line 2991 "./util/configparser.y" + case 570: +#line 3001 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6150,11 +6167,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6154 "util/configparser.c" +#line 6171 "util/configparser.c" break; - case 569: -#line 3001 "./util/configparser.y" + case 571: +#line 3011 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6162,21 +6179,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6166 "util/configparser.c" +#line 6183 "util/configparser.c" break; - case 570: -#line 3010 "./util/configparser.y" + case 572: +#line 3020 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 6176 "util/configparser.c" +#line 6193 "util/configparser.c" break; - case 571: -#line 3017 "./util/configparser.y" + case 573: +#line 3027 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) @@ -6184,21 +6201,21 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 6188 "util/configparser.c" +#line 6205 "util/configparser.c" break; - case 572: -#line 3026 "./util/configparser.y" + case 574: +#line 3036 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 6198 "util/configparser.c" +#line 6215 "util/configparser.c" break; - case 573: -#line 3033 "./util/configparser.y" + case 575: +#line 3043 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) @@ -6206,22 +6223,22 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 6210 "util/configparser.c" +#line 6227 "util/configparser.c" break; - case 574: -#line 3042 "./util/configparser.y" + case 576: +#line 3052 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6221 "util/configparser.c" +#line 6238 "util/configparser.c" break; - case 575: -#line 3050 "./util/configparser.y" + case 577: +#line 3060 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6233,22 +6250,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6237 "util/configparser.c" +#line 6254 "util/configparser.c" break; - case 576: -#line 3063 "./util/configparser.y" + case 578: +#line 3073 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6248 "util/configparser.c" +#line 6265 "util/configparser.c" break; - case 577: -#line 3071 "./util/configparser.y" + case 579: +#line 3081 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6260,19 +6277,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6264 "util/configparser.c" +#line 6281 "util/configparser.c" break; - case 578: -#line 3084 "./util/configparser.y" + case 580: +#line 3094 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 6272 "util/configparser.c" +#line 6289 "util/configparser.c" break; - case 587: -#line 3095 "./util/configparser.y" + case 589: +#line 3105 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6283,11 +6300,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6287 "util/configparser.c" +#line 6304 "util/configparser.c" break; - case 588: -#line 3107 "./util/configparser.y" + case 590: +#line 3117 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6298,11 +6315,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6302 "util/configparser.c" +#line 6319 "util/configparser.c" break; - case 589: -#line 3119 "./util/configparser.y" + case 591: +#line 3129 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6313,11 +6330,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6317 "util/configparser.c" +#line 6334 "util/configparser.c" break; - case 590: -#line 3131 "./util/configparser.y" + case 592: +#line 3141 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6331,11 +6348,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6335 "util/configparser.c" +#line 6352 "util/configparser.c" break; - case 591: -#line 3146 "./util/configparser.y" + case 593: +#line 3156 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6347,11 +6364,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6351 "util/configparser.c" +#line 6368 "util/configparser.c" break; - case 592: -#line 3159 "./util/configparser.y" + case 594: +#line 3169 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -6363,11 +6380,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6367 "util/configparser.c" +#line 6384 "util/configparser.c" break; - case 593: -#line 3172 "./util/configparser.y" + case 595: +#line 3182 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6377,19 +6394,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6381 "util/configparser.c" +#line 6398 "util/configparser.c" break; - case 594: -#line 3183 "./util/configparser.y" + case 596: +#line 3193 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 6389 "util/configparser.c" +#line 6406 "util/configparser.c" break; - case 599: -#line 3192 "./util/configparser.y" + case 601: +#line 3202 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6403,11 +6420,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6407 "util/configparser.c" +#line 6424 "util/configparser.c" break; - case 600: -#line 3207 "./util/configparser.y" + case 602: +#line 3217 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6421,11 +6438,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6425 "util/configparser.c" +#line 6442 "util/configparser.c" break; -#line 6429 "util/configparser.c" +#line 6446 "util/configparser.c" default: break; } @@ -6657,7 +6674,7 @@ yyreturn: #endif return yyresult; } -#line 3221 "./util/configparser.y" +#line 3231 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 184810a2a..571c76c4e 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -195,145 +195,146 @@ extern int yydebug; VAR_UNBLOCK_LAN_ZONES = 401, VAR_INSECURE_LAN_ZONES = 402, VAR_INFRA_CACHE_MIN_RTT = 403, - VAR_DNS64_PREFIX = 404, - VAR_DNS64_SYNTHALL = 405, - VAR_DNS64_IGNORE_AAAA = 406, - VAR_DNSTAP = 407, - VAR_DNSTAP_ENABLE = 408, - VAR_DNSTAP_SOCKET_PATH = 409, - VAR_DNSTAP_IP = 410, - VAR_DNSTAP_TLS = 411, - VAR_DNSTAP_TLS_SERVER_NAME = 412, - VAR_DNSTAP_TLS_CERT_BUNDLE = 413, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 414, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 415, - VAR_DNSTAP_SEND_IDENTITY = 416, - VAR_DNSTAP_SEND_VERSION = 417, - VAR_DNSTAP_IDENTITY = 418, - VAR_DNSTAP_VERSION = 419, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 420, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 421, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 422, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 423, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 424, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 425, - VAR_RESPONSE_IP_TAG = 426, - VAR_RESPONSE_IP = 427, - VAR_RESPONSE_IP_DATA = 428, - VAR_HARDEN_ALGO_DOWNGRADE = 429, - VAR_IP_TRANSPARENT = 430, - VAR_IP_DSCP = 431, - VAR_DISABLE_DNSSEC_LAME_CHECK = 432, - VAR_IP_RATELIMIT = 433, - VAR_IP_RATELIMIT_SLABS = 434, - VAR_IP_RATELIMIT_SIZE = 435, - VAR_RATELIMIT = 436, - VAR_RATELIMIT_SLABS = 437, - VAR_RATELIMIT_SIZE = 438, - VAR_RATELIMIT_FOR_DOMAIN = 439, - VAR_RATELIMIT_BELOW_DOMAIN = 440, - VAR_IP_RATELIMIT_FACTOR = 441, - VAR_RATELIMIT_FACTOR = 442, - VAR_SEND_CLIENT_SUBNET = 443, - VAR_CLIENT_SUBNET_ZONE = 444, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 445, - VAR_CLIENT_SUBNET_OPCODE = 446, - VAR_MAX_CLIENT_SUBNET_IPV4 = 447, - VAR_MAX_CLIENT_SUBNET_IPV6 = 448, - VAR_MIN_CLIENT_SUBNET_IPV4 = 449, - VAR_MIN_CLIENT_SUBNET_IPV6 = 450, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 451, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 452, - VAR_CAPS_WHITELIST = 453, - VAR_CACHE_MAX_NEGATIVE_TTL = 454, - VAR_PERMIT_SMALL_HOLDDOWN = 455, - VAR_QNAME_MINIMISATION = 456, - VAR_QNAME_MINIMISATION_STRICT = 457, - VAR_IP_FREEBIND = 458, - VAR_DEFINE_TAG = 459, - VAR_LOCAL_ZONE_TAG = 460, - VAR_ACCESS_CONTROL_TAG = 461, - VAR_LOCAL_ZONE_OVERRIDE = 462, - VAR_ACCESS_CONTROL_TAG_ACTION = 463, - VAR_ACCESS_CONTROL_TAG_DATA = 464, - VAR_VIEW = 465, - VAR_ACCESS_CONTROL_VIEW = 466, - VAR_VIEW_FIRST = 467, - VAR_SERVE_EXPIRED = 468, - VAR_SERVE_EXPIRED_TTL = 469, - VAR_SERVE_EXPIRED_TTL_RESET = 470, - VAR_SERVE_EXPIRED_REPLY_TTL = 471, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472, - VAR_FAKE_DSA = 473, - VAR_FAKE_SHA1 = 474, - VAR_LOG_IDENTITY = 475, - VAR_HIDE_TRUSTANCHOR = 476, - VAR_TRUST_ANCHOR_SIGNALING = 477, - VAR_AGGRESSIVE_NSEC = 478, - VAR_USE_SYSTEMD = 479, - VAR_SHM_ENABLE = 480, - VAR_SHM_KEY = 481, - VAR_ROOT_KEY_SENTINEL = 482, - VAR_DNSCRYPT = 483, - VAR_DNSCRYPT_ENABLE = 484, - VAR_DNSCRYPT_PORT = 485, - VAR_DNSCRYPT_PROVIDER = 486, - VAR_DNSCRYPT_SECRET_KEY = 487, - VAR_DNSCRYPT_PROVIDER_CERT = 488, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493, - VAR_IPSECMOD_ENABLED = 494, - VAR_IPSECMOD_HOOK = 495, - VAR_IPSECMOD_IGNORE_BOGUS = 496, - VAR_IPSECMOD_MAX_TTL = 497, - VAR_IPSECMOD_WHITELIST = 498, - VAR_IPSECMOD_STRICT = 499, - VAR_CACHEDB = 500, - VAR_CACHEDB_BACKEND = 501, - VAR_CACHEDB_SECRETSEED = 502, - VAR_CACHEDB_REDISHOST = 503, - VAR_CACHEDB_REDISPORT = 504, - VAR_CACHEDB_REDISTIMEOUT = 505, - VAR_CACHEDB_REDISEXPIRERECORDS = 506, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 507, - VAR_FOR_UPSTREAM = 508, - VAR_AUTH_ZONE = 509, - VAR_ZONEFILE = 510, - VAR_MASTER = 511, - VAR_URL = 512, - VAR_FOR_DOWNSTREAM = 513, - VAR_FALLBACK_ENABLED = 514, - VAR_TLS_ADDITIONAL_PORT = 515, - VAR_LOW_RTT = 516, - VAR_LOW_RTT_PERMIL = 517, - VAR_FAST_SERVER_PERMIL = 518, - VAR_FAST_SERVER_NUM = 519, - VAR_ALLOW_NOTIFY = 520, - VAR_TLS_WIN_CERT = 521, - VAR_TCP_CONNECTION_LIMIT = 522, - VAR_FORWARD_NO_CACHE = 523, - VAR_STUB_NO_CACHE = 524, - VAR_LOG_SERVFAIL = 525, - VAR_DENY_ANY = 526, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 527, - VAR_LOG_TAG_QUERYREPLY = 528, - VAR_STREAM_WAIT_SIZE = 529, - VAR_TLS_CIPHERS = 530, - VAR_TLS_CIPHERSUITES = 531, - VAR_TLS_USE_SNI = 532, - VAR_IPSET = 533, - VAR_IPSET_NAME_V4 = 534, - VAR_IPSET_NAME_V6 = 535, - VAR_TLS_SESSION_TICKET_KEYS = 536, - VAR_RPZ = 537, - VAR_TAGS = 538, - VAR_RPZ_ACTION_OVERRIDE = 539, - VAR_RPZ_CNAME_OVERRIDE = 540, - VAR_RPZ_LOG = 541, - VAR_RPZ_LOG_NAME = 542 + VAR_INFRA_KEEP_PROBING = 404, + VAR_DNS64_PREFIX = 405, + VAR_DNS64_SYNTHALL = 406, + VAR_DNS64_IGNORE_AAAA = 407, + VAR_DNSTAP = 408, + VAR_DNSTAP_ENABLE = 409, + VAR_DNSTAP_SOCKET_PATH = 410, + VAR_DNSTAP_IP = 411, + VAR_DNSTAP_TLS = 412, + VAR_DNSTAP_TLS_SERVER_NAME = 413, + VAR_DNSTAP_TLS_CERT_BUNDLE = 414, + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 415, + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 416, + VAR_DNSTAP_SEND_IDENTITY = 417, + VAR_DNSTAP_SEND_VERSION = 418, + VAR_DNSTAP_IDENTITY = 419, + VAR_DNSTAP_VERSION = 420, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 421, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 422, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 423, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 424, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 425, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 426, + VAR_RESPONSE_IP_TAG = 427, + VAR_RESPONSE_IP = 428, + VAR_RESPONSE_IP_DATA = 429, + VAR_HARDEN_ALGO_DOWNGRADE = 430, + VAR_IP_TRANSPARENT = 431, + VAR_IP_DSCP = 432, + VAR_DISABLE_DNSSEC_LAME_CHECK = 433, + VAR_IP_RATELIMIT = 434, + VAR_IP_RATELIMIT_SLABS = 435, + VAR_IP_RATELIMIT_SIZE = 436, + VAR_RATELIMIT = 437, + VAR_RATELIMIT_SLABS = 438, + VAR_RATELIMIT_SIZE = 439, + VAR_RATELIMIT_FOR_DOMAIN = 440, + VAR_RATELIMIT_BELOW_DOMAIN = 441, + VAR_IP_RATELIMIT_FACTOR = 442, + VAR_RATELIMIT_FACTOR = 443, + VAR_SEND_CLIENT_SUBNET = 444, + VAR_CLIENT_SUBNET_ZONE = 445, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 446, + VAR_CLIENT_SUBNET_OPCODE = 447, + VAR_MAX_CLIENT_SUBNET_IPV4 = 448, + VAR_MAX_CLIENT_SUBNET_IPV6 = 449, + VAR_MIN_CLIENT_SUBNET_IPV4 = 450, + VAR_MIN_CLIENT_SUBNET_IPV6 = 451, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 452, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 453, + VAR_CAPS_WHITELIST = 454, + VAR_CACHE_MAX_NEGATIVE_TTL = 455, + VAR_PERMIT_SMALL_HOLDDOWN = 456, + VAR_QNAME_MINIMISATION = 457, + VAR_QNAME_MINIMISATION_STRICT = 458, + VAR_IP_FREEBIND = 459, + VAR_DEFINE_TAG = 460, + VAR_LOCAL_ZONE_TAG = 461, + VAR_ACCESS_CONTROL_TAG = 462, + VAR_LOCAL_ZONE_OVERRIDE = 463, + VAR_ACCESS_CONTROL_TAG_ACTION = 464, + VAR_ACCESS_CONTROL_TAG_DATA = 465, + VAR_VIEW = 466, + VAR_ACCESS_CONTROL_VIEW = 467, + VAR_VIEW_FIRST = 468, + VAR_SERVE_EXPIRED = 469, + VAR_SERVE_EXPIRED_TTL = 470, + VAR_SERVE_EXPIRED_TTL_RESET = 471, + VAR_SERVE_EXPIRED_REPLY_TTL = 472, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 473, + VAR_FAKE_DSA = 474, + VAR_FAKE_SHA1 = 475, + VAR_LOG_IDENTITY = 476, + VAR_HIDE_TRUSTANCHOR = 477, + VAR_TRUST_ANCHOR_SIGNALING = 478, + VAR_AGGRESSIVE_NSEC = 479, + VAR_USE_SYSTEMD = 480, + VAR_SHM_ENABLE = 481, + VAR_SHM_KEY = 482, + VAR_ROOT_KEY_SENTINEL = 483, + VAR_DNSCRYPT = 484, + VAR_DNSCRYPT_ENABLE = 485, + VAR_DNSCRYPT_PORT = 486, + VAR_DNSCRYPT_PROVIDER = 487, + VAR_DNSCRYPT_SECRET_KEY = 488, + VAR_DNSCRYPT_PROVIDER_CERT = 489, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 490, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 491, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 492, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 493, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 494, + VAR_IPSECMOD_ENABLED = 495, + VAR_IPSECMOD_HOOK = 496, + VAR_IPSECMOD_IGNORE_BOGUS = 497, + VAR_IPSECMOD_MAX_TTL = 498, + VAR_IPSECMOD_WHITELIST = 499, + VAR_IPSECMOD_STRICT = 500, + VAR_CACHEDB = 501, + VAR_CACHEDB_BACKEND = 502, + VAR_CACHEDB_SECRETSEED = 503, + VAR_CACHEDB_REDISHOST = 504, + VAR_CACHEDB_REDISPORT = 505, + VAR_CACHEDB_REDISTIMEOUT = 506, + VAR_CACHEDB_REDISEXPIRERECORDS = 507, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 508, + VAR_FOR_UPSTREAM = 509, + VAR_AUTH_ZONE = 510, + VAR_ZONEFILE = 511, + VAR_MASTER = 512, + VAR_URL = 513, + VAR_FOR_DOWNSTREAM = 514, + VAR_FALLBACK_ENABLED = 515, + VAR_TLS_ADDITIONAL_PORT = 516, + VAR_LOW_RTT = 517, + VAR_LOW_RTT_PERMIL = 518, + VAR_FAST_SERVER_PERMIL = 519, + VAR_FAST_SERVER_NUM = 520, + VAR_ALLOW_NOTIFY = 521, + VAR_TLS_WIN_CERT = 522, + VAR_TCP_CONNECTION_LIMIT = 523, + VAR_FORWARD_NO_CACHE = 524, + VAR_STUB_NO_CACHE = 525, + VAR_LOG_SERVFAIL = 526, + VAR_DENY_ANY = 527, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 528, + VAR_LOG_TAG_QUERYREPLY = 529, + VAR_STREAM_WAIT_SIZE = 530, + VAR_TLS_CIPHERS = 531, + VAR_TLS_CIPHERSUITES = 532, + VAR_TLS_USE_SNI = 533, + VAR_IPSET = 534, + VAR_IPSET_NAME_V4 = 535, + VAR_IPSET_NAME_V6 = 536, + VAR_TLS_SESSION_TICKET_KEYS = 537, + VAR_RPZ = 538, + VAR_TAGS = 539, + VAR_RPZ_ACTION_OVERRIDE = 540, + VAR_RPZ_CNAME_OVERRIDE = 541, + VAR_RPZ_LOG = 542, + VAR_RPZ_LOG_NAME = 543 }; #endif /* Tokens. */ @@ -483,145 +484,146 @@ extern int yydebug; #define VAR_UNBLOCK_LAN_ZONES 401 #define VAR_INSECURE_LAN_ZONES 402 #define VAR_INFRA_CACHE_MIN_RTT 403 -#define VAR_DNS64_PREFIX 404 -#define VAR_DNS64_SYNTHALL 405 -#define VAR_DNS64_IGNORE_AAAA 406 -#define VAR_DNSTAP 407 -#define VAR_DNSTAP_ENABLE 408 -#define VAR_DNSTAP_SOCKET_PATH 409 -#define VAR_DNSTAP_IP 410 -#define VAR_DNSTAP_TLS 411 -#define VAR_DNSTAP_TLS_SERVER_NAME 412 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 413 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 414 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 415 -#define VAR_DNSTAP_SEND_IDENTITY 416 -#define VAR_DNSTAP_SEND_VERSION 417 -#define VAR_DNSTAP_IDENTITY 418 -#define VAR_DNSTAP_VERSION 419 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 420 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 421 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 422 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 423 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 424 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 425 -#define VAR_RESPONSE_IP_TAG 426 -#define VAR_RESPONSE_IP 427 -#define VAR_RESPONSE_IP_DATA 428 -#define VAR_HARDEN_ALGO_DOWNGRADE 429 -#define VAR_IP_TRANSPARENT 430 -#define VAR_IP_DSCP 431 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 432 -#define VAR_IP_RATELIMIT 433 -#define VAR_IP_RATELIMIT_SLABS 434 -#define VAR_IP_RATELIMIT_SIZE 435 -#define VAR_RATELIMIT 436 -#define VAR_RATELIMIT_SLABS 437 -#define VAR_RATELIMIT_SIZE 438 -#define VAR_RATELIMIT_FOR_DOMAIN 439 -#define VAR_RATELIMIT_BELOW_DOMAIN 440 -#define VAR_IP_RATELIMIT_FACTOR 441 -#define VAR_RATELIMIT_FACTOR 442 -#define VAR_SEND_CLIENT_SUBNET 443 -#define VAR_CLIENT_SUBNET_ZONE 444 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 445 -#define VAR_CLIENT_SUBNET_OPCODE 446 -#define VAR_MAX_CLIENT_SUBNET_IPV4 447 -#define VAR_MAX_CLIENT_SUBNET_IPV6 448 -#define VAR_MIN_CLIENT_SUBNET_IPV4 449 -#define VAR_MIN_CLIENT_SUBNET_IPV6 450 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 451 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 452 -#define VAR_CAPS_WHITELIST 453 -#define VAR_CACHE_MAX_NEGATIVE_TTL 454 -#define VAR_PERMIT_SMALL_HOLDDOWN 455 -#define VAR_QNAME_MINIMISATION 456 -#define VAR_QNAME_MINIMISATION_STRICT 457 -#define VAR_IP_FREEBIND 458 -#define VAR_DEFINE_TAG 459 -#define VAR_LOCAL_ZONE_TAG 460 -#define VAR_ACCESS_CONTROL_TAG 461 -#define VAR_LOCAL_ZONE_OVERRIDE 462 -#define VAR_ACCESS_CONTROL_TAG_ACTION 463 -#define VAR_ACCESS_CONTROL_TAG_DATA 464 -#define VAR_VIEW 465 -#define VAR_ACCESS_CONTROL_VIEW 466 -#define VAR_VIEW_FIRST 467 -#define VAR_SERVE_EXPIRED 468 -#define VAR_SERVE_EXPIRED_TTL 469 -#define VAR_SERVE_EXPIRED_TTL_RESET 470 -#define VAR_SERVE_EXPIRED_REPLY_TTL 471 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472 -#define VAR_FAKE_DSA 473 -#define VAR_FAKE_SHA1 474 -#define VAR_LOG_IDENTITY 475 -#define VAR_HIDE_TRUSTANCHOR 476 -#define VAR_TRUST_ANCHOR_SIGNALING 477 -#define VAR_AGGRESSIVE_NSEC 478 -#define VAR_USE_SYSTEMD 479 -#define VAR_SHM_ENABLE 480 -#define VAR_SHM_KEY 481 -#define VAR_ROOT_KEY_SENTINEL 482 -#define VAR_DNSCRYPT 483 -#define VAR_DNSCRYPT_ENABLE 484 -#define VAR_DNSCRYPT_PORT 485 -#define VAR_DNSCRYPT_PROVIDER 486 -#define VAR_DNSCRYPT_SECRET_KEY 487 -#define VAR_DNSCRYPT_PROVIDER_CERT 488 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493 -#define VAR_IPSECMOD_ENABLED 494 -#define VAR_IPSECMOD_HOOK 495 -#define VAR_IPSECMOD_IGNORE_BOGUS 496 -#define VAR_IPSECMOD_MAX_TTL 497 -#define VAR_IPSECMOD_WHITELIST 498 -#define VAR_IPSECMOD_STRICT 499 -#define VAR_CACHEDB 500 -#define VAR_CACHEDB_BACKEND 501 -#define VAR_CACHEDB_SECRETSEED 502 -#define VAR_CACHEDB_REDISHOST 503 -#define VAR_CACHEDB_REDISPORT 504 -#define VAR_CACHEDB_REDISTIMEOUT 505 -#define VAR_CACHEDB_REDISEXPIRERECORDS 506 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 507 -#define VAR_FOR_UPSTREAM 508 -#define VAR_AUTH_ZONE 509 -#define VAR_ZONEFILE 510 -#define VAR_MASTER 511 -#define VAR_URL 512 -#define VAR_FOR_DOWNSTREAM 513 -#define VAR_FALLBACK_ENABLED 514 -#define VAR_TLS_ADDITIONAL_PORT 515 -#define VAR_LOW_RTT 516 -#define VAR_LOW_RTT_PERMIL 517 -#define VAR_FAST_SERVER_PERMIL 518 -#define VAR_FAST_SERVER_NUM 519 -#define VAR_ALLOW_NOTIFY 520 -#define VAR_TLS_WIN_CERT 521 -#define VAR_TCP_CONNECTION_LIMIT 522 -#define VAR_FORWARD_NO_CACHE 523 -#define VAR_STUB_NO_CACHE 524 -#define VAR_LOG_SERVFAIL 525 -#define VAR_DENY_ANY 526 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 527 -#define VAR_LOG_TAG_QUERYREPLY 528 -#define VAR_STREAM_WAIT_SIZE 529 -#define VAR_TLS_CIPHERS 530 -#define VAR_TLS_CIPHERSUITES 531 -#define VAR_TLS_USE_SNI 532 -#define VAR_IPSET 533 -#define VAR_IPSET_NAME_V4 534 -#define VAR_IPSET_NAME_V6 535 -#define VAR_TLS_SESSION_TICKET_KEYS 536 -#define VAR_RPZ 537 -#define VAR_TAGS 538 -#define VAR_RPZ_ACTION_OVERRIDE 539 -#define VAR_RPZ_CNAME_OVERRIDE 540 -#define VAR_RPZ_LOG 541 -#define VAR_RPZ_LOG_NAME 542 +#define VAR_INFRA_KEEP_PROBING 404 +#define VAR_DNS64_PREFIX 405 +#define VAR_DNS64_SYNTHALL 406 +#define VAR_DNS64_IGNORE_AAAA 407 +#define VAR_DNSTAP 408 +#define VAR_DNSTAP_ENABLE 409 +#define VAR_DNSTAP_SOCKET_PATH 410 +#define VAR_DNSTAP_IP 411 +#define VAR_DNSTAP_TLS 412 +#define VAR_DNSTAP_TLS_SERVER_NAME 413 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 414 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 415 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 416 +#define VAR_DNSTAP_SEND_IDENTITY 417 +#define VAR_DNSTAP_SEND_VERSION 418 +#define VAR_DNSTAP_IDENTITY 419 +#define VAR_DNSTAP_VERSION 420 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 421 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 422 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 423 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 424 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 425 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 426 +#define VAR_RESPONSE_IP_TAG 427 +#define VAR_RESPONSE_IP 428 +#define VAR_RESPONSE_IP_DATA 429 +#define VAR_HARDEN_ALGO_DOWNGRADE 430 +#define VAR_IP_TRANSPARENT 431 +#define VAR_IP_DSCP 432 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 433 +#define VAR_IP_RATELIMIT 434 +#define VAR_IP_RATELIMIT_SLABS 435 +#define VAR_IP_RATELIMIT_SIZE 436 +#define VAR_RATELIMIT 437 +#define VAR_RATELIMIT_SLABS 438 +#define VAR_RATELIMIT_SIZE 439 +#define VAR_RATELIMIT_FOR_DOMAIN 440 +#define VAR_RATELIMIT_BELOW_DOMAIN 441 +#define VAR_IP_RATELIMIT_FACTOR 442 +#define VAR_RATELIMIT_FACTOR 443 +#define VAR_SEND_CLIENT_SUBNET 444 +#define VAR_CLIENT_SUBNET_ZONE 445 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 446 +#define VAR_CLIENT_SUBNET_OPCODE 447 +#define VAR_MAX_CLIENT_SUBNET_IPV4 448 +#define VAR_MAX_CLIENT_SUBNET_IPV6 449 +#define VAR_MIN_CLIENT_SUBNET_IPV4 450 +#define VAR_MIN_CLIENT_SUBNET_IPV6 451 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 452 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 453 +#define VAR_CAPS_WHITELIST 454 +#define VAR_CACHE_MAX_NEGATIVE_TTL 455 +#define VAR_PERMIT_SMALL_HOLDDOWN 456 +#define VAR_QNAME_MINIMISATION 457 +#define VAR_QNAME_MINIMISATION_STRICT 458 +#define VAR_IP_FREEBIND 459 +#define VAR_DEFINE_TAG 460 +#define VAR_LOCAL_ZONE_TAG 461 +#define VAR_ACCESS_CONTROL_TAG 462 +#define VAR_LOCAL_ZONE_OVERRIDE 463 +#define VAR_ACCESS_CONTROL_TAG_ACTION 464 +#define VAR_ACCESS_CONTROL_TAG_DATA 465 +#define VAR_VIEW 466 +#define VAR_ACCESS_CONTROL_VIEW 467 +#define VAR_VIEW_FIRST 468 +#define VAR_SERVE_EXPIRED 469 +#define VAR_SERVE_EXPIRED_TTL 470 +#define VAR_SERVE_EXPIRED_TTL_RESET 471 +#define VAR_SERVE_EXPIRED_REPLY_TTL 472 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 473 +#define VAR_FAKE_DSA 474 +#define VAR_FAKE_SHA1 475 +#define VAR_LOG_IDENTITY 476 +#define VAR_HIDE_TRUSTANCHOR 477 +#define VAR_TRUST_ANCHOR_SIGNALING 478 +#define VAR_AGGRESSIVE_NSEC 479 +#define VAR_USE_SYSTEMD 480 +#define VAR_SHM_ENABLE 481 +#define VAR_SHM_KEY 482 +#define VAR_ROOT_KEY_SENTINEL 483 +#define VAR_DNSCRYPT 484 +#define VAR_DNSCRYPT_ENABLE 485 +#define VAR_DNSCRYPT_PORT 486 +#define VAR_DNSCRYPT_PROVIDER 487 +#define VAR_DNSCRYPT_SECRET_KEY 488 +#define VAR_DNSCRYPT_PROVIDER_CERT 489 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 490 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 491 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 492 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 493 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 494 +#define VAR_IPSECMOD_ENABLED 495 +#define VAR_IPSECMOD_HOOK 496 +#define VAR_IPSECMOD_IGNORE_BOGUS 497 +#define VAR_IPSECMOD_MAX_TTL 498 +#define VAR_IPSECMOD_WHITELIST 499 +#define VAR_IPSECMOD_STRICT 500 +#define VAR_CACHEDB 501 +#define VAR_CACHEDB_BACKEND 502 +#define VAR_CACHEDB_SECRETSEED 503 +#define VAR_CACHEDB_REDISHOST 504 +#define VAR_CACHEDB_REDISPORT 505 +#define VAR_CACHEDB_REDISTIMEOUT 506 +#define VAR_CACHEDB_REDISEXPIRERECORDS 507 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 508 +#define VAR_FOR_UPSTREAM 509 +#define VAR_AUTH_ZONE 510 +#define VAR_ZONEFILE 511 +#define VAR_MASTER 512 +#define VAR_URL 513 +#define VAR_FOR_DOWNSTREAM 514 +#define VAR_FALLBACK_ENABLED 515 +#define VAR_TLS_ADDITIONAL_PORT 516 +#define VAR_LOW_RTT 517 +#define VAR_LOW_RTT_PERMIL 518 +#define VAR_FAST_SERVER_PERMIL 519 +#define VAR_FAST_SERVER_NUM 520 +#define VAR_ALLOW_NOTIFY 521 +#define VAR_TLS_WIN_CERT 522 +#define VAR_TCP_CONNECTION_LIMIT 523 +#define VAR_FORWARD_NO_CACHE 524 +#define VAR_STUB_NO_CACHE 525 +#define VAR_LOG_SERVFAIL 526 +#define VAR_DENY_ANY 527 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 528 +#define VAR_LOG_TAG_QUERYREPLY 529 +#define VAR_STREAM_WAIT_SIZE 530 +#define VAR_TLS_CIPHERS 531 +#define VAR_TLS_CIPHERSUITES 532 +#define VAR_TLS_USE_SNI 533 +#define VAR_IPSET 534 +#define VAR_IPSET_NAME_V4 535 +#define VAR_IPSET_NAME_V6 536 +#define VAR_TLS_SESSION_TICKET_KEYS 537 +#define VAR_RPZ 538 +#define VAR_TAGS 539 +#define VAR_RPZ_ACTION_OVERRIDE 540 +#define VAR_RPZ_CNAME_OVERRIDE 541 +#define VAR_RPZ_LOG 542 +#define VAR_RPZ_LOG_NAME 543 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -631,7 +633,7 @@ union YYSTYPE char* str; -#line 635 "util/configparser.h" +#line 637 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index c72a89135..feb798a3e 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -114,7 +114,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_STUB_FIRST VAR_MINIMAL_RESPONSES VAR_RRSET_ROUNDROBIN %token VAR_MAX_UDP_SIZE VAR_DELAY_CLOSE %token VAR_UNBLOCK_LAN_ZONES VAR_INSECURE_LAN_ZONES -%token VAR_INFRA_CACHE_MIN_RTT +%token VAR_INFRA_CACHE_MIN_RTT VAR_INFRA_KEEP_PROBING %token VAR_DNS64_PREFIX VAR_DNS64_SYNTHALL VAR_DNS64_IGNORE_AAAA %token VAR_DNSTAP VAR_DNSTAP_ENABLE VAR_DNSTAP_SOCKET_PATH VAR_DNSTAP_IP %token VAR_DNSTAP_TLS VAR_DNSTAP_TLS_SERVER_NAME VAR_DNSTAP_TLS_CERT_BUNDLE @@ -243,7 +243,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_dns64_prefix | server_dns64_synthall | server_dns64_ignore_aaaa | server_infra_cache_min_rtt | server_harden_algo_downgrade | server_ip_transparent | server_ip_ratelimit | server_ratelimit | - server_ip_dscp | + server_ip_dscp | server_infra_keep_probing | server_ip_ratelimit_slabs | server_ratelimit_slabs | server_ip_ratelimit_size | server_ratelimit_size | server_ratelimit_for_domain | @@ -1462,6 +1462,16 @@ server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG free($2); } ; +server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG + { + OUTYY(("P(server_infra_keep_probing:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->infra_keep_probing = + (strcmp($2, "yes")==0); + free($2); + } + ; server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG { OUTYY(("P(server_target_fetch_policy:%s)\n", $2)); From ea7c5ac392968656acc082c60ea3085a4082c328 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 30 Sep 2020 14:55:35 +0200 Subject: [PATCH 02/38] - Fix double loopexit for unbound-dnstap-socket after sigterm. --- dnstap/unbound-dnstap-socket.c | 4 +++- doc/Changelog | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/dnstap/unbound-dnstap-socket.c b/dnstap/unbound-dnstap-socket.c index 5a540f337..3ebe2b4e4 100644 --- a/dnstap/unbound-dnstap-socket.c +++ b/dnstap/unbound-dnstap-socket.c @@ -1167,8 +1167,10 @@ int sig_quit = 0; static RETSIGTYPE main_sigh(int sig) { verbose(VERB_ALGO, "exit on signal %d\n", sig); - if(sig_base) + if(sig_base) { ub_event_base_loopexit(sig_base); + sig_base = NULL; + } sig_quit = 1; } diff --git a/doc/Changelog b/doc/Changelog index aba2a9ae2..7672435d4 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,7 @@ alloc check debug output. - Easier kill of unbound-dnstap-socket tool in test. - Fix memory leak of edns tags at libunbound context delete. + - Fix double loopexit for unbound-dnstap-socket after sigterm. 29 September 2020: Ralph - DNS Flag Day 2020: change edns-buffer-size default to 1232. From 52b04806f4236c37acd10179ab465a54adc7e86a Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 1 Oct 2020 09:11:22 +0200 Subject: [PATCH 03/38] - Current repo is version 1.12.0 for release. Tag for 1.12.0rc1. --- configure | 50 +++++++++++++++++++------------------------------- configure.ac | 6 +++--- doc/Changelog | 3 +++ 3 files changed, 25 insertions(+), 34 deletions(-) diff --git a/configure b/configure index 680722769..c819b7bf1 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for unbound 1.11.1. +# Generated by GNU Autoconf 2.69 for unbound 1.12.0. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='unbound' PACKAGE_TARNAME='unbound' -PACKAGE_VERSION='1.11.1' -PACKAGE_STRING='unbound 1.11.1' +PACKAGE_VERSION='1.12.0' +PACKAGE_STRING='unbound 1.12.0' PACKAGE_BUGREPORT='unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues' PACKAGE_URL='' @@ -808,7 +808,6 @@ infodir docdir oldincludedir includedir -runstatedir localstatedir sharedstatedir sysconfdir @@ -958,7 +957,6 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1211,15 +1209,6 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1357,7 +1346,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir + libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1470,7 +1459,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures unbound 1.11.1 to adapt to many kinds of systems. +\`configure' configures unbound 1.12.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1510,7 +1499,6 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1536,7 +1524,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of unbound 1.11.1:";; + short | recursive ) echo "Configuration of unbound 1.12.0:";; esac cat <<\_ACEOF @@ -1764,7 +1752,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -unbound configure 1.11.1 +unbound configure 1.12.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2473,7 +2461,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by unbound $as_me 1.11.1, which was +It was created by unbound $as_me 1.12.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2823,9 +2811,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu UNBOUND_VERSION_MAJOR=1 -UNBOUND_VERSION_MINOR=11 +UNBOUND_VERSION_MINOR=12 -UNBOUND_VERSION_MICRO=1 +UNBOUND_VERSION_MICRO=0 LIBUNBOUND_CURRENT=9 @@ -2906,7 +2894,7 @@ LIBUNBOUND_AGE=1 # 1.10.0 had 9:7:1 # 1.10.1 had 9:8:1 # 1.11.0 had 9:9:1 -# 1.11.1 had 9:10:1 +# 1.12.0 had 9:10:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -15705,7 +15693,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15751,7 +15739,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15775,7 +15763,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15820,7 +15808,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15844,7 +15832,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -21714,7 +21702,7 @@ _ACEOF -version=1.11.1 +version=1.12.0 date=`date +'%b %e, %Y'` @@ -22233,7 +22221,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by unbound $as_me 1.11.1, which was +This file was extended by unbound $as_me 1.12.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22299,7 +22287,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -unbound config.status 1.11.1 +unbound config.status 1.12.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 8ccfafe6c..7d9879294 100644 --- a/configure.ac +++ b/configure.ac @@ -10,8 +10,8 @@ sinclude(dnscrypt/dnscrypt.m4) # must be numbers. ac_defun because of later processing m4_define([VERSION_MAJOR],[1]) -m4_define([VERSION_MINOR],[11]) -m4_define([VERSION_MICRO],[1]) +m4_define([VERSION_MINOR],[12]) +m4_define([VERSION_MICRO],[0]) AC_INIT(unbound, m4_defn([VERSION_MAJOR]).m4_defn([VERSION_MINOR]).m4_defn([VERSION_MICRO]), unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues, unbound) AC_SUBST(UNBOUND_VERSION_MAJOR, [VERSION_MAJOR]) AC_SUBST(UNBOUND_VERSION_MINOR, [VERSION_MINOR]) @@ -95,7 +95,7 @@ LIBUNBOUND_AGE=1 # 1.10.0 had 9:7:1 # 1.10.1 had 9:8:1 # 1.11.0 had 9:9:1 -# 1.11.1 had 9:10:1 +# 1.12.0 had 9:10:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary diff --git a/doc/Changelog b/doc/Changelog index 7672435d4..87f796398 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +1 October 2020: Wouter + - Current repo is version 1.12.0 for release. Tag for 1.12.0rc1. + 30 September 2020: Wouter - Fix doh tests when not compiled in. - Add dohclient test executable to gitignore. From ca497815b82587d5e7db7ddb83e9c30fa68585f8 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 8 Oct 2020 09:09:55 +0200 Subject: [PATCH 04/38] - Tag for 1.12.0 release. - Current repo is version 1.12.1 in development. --- configure | 25 +++++++++++++------------ configure.ac | 5 +++-- doc/Changelog | 4 ++++ 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/configure b/configure index c819b7bf1..9a96bb232 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for unbound 1.12.0. +# Generated by GNU Autoconf 2.69 for unbound 1.12.1. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='unbound' PACKAGE_TARNAME='unbound' -PACKAGE_VERSION='1.12.0' -PACKAGE_STRING='unbound 1.12.0' +PACKAGE_VERSION='1.12.1' +PACKAGE_STRING='unbound 1.12.1' PACKAGE_BUGREPORT='unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues' PACKAGE_URL='' @@ -1459,7 +1459,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures unbound 1.12.0 to adapt to many kinds of systems. +\`configure' configures unbound 1.12.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1524,7 +1524,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of unbound 1.12.0:";; + short | recursive ) echo "Configuration of unbound 1.12.1:";; esac cat <<\_ACEOF @@ -1752,7 +1752,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -unbound configure 1.12.0 +unbound configure 1.12.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2461,7 +2461,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by unbound $as_me 1.12.0, which was +It was created by unbound $as_me 1.12.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2813,11 +2813,11 @@ UNBOUND_VERSION_MAJOR=1 UNBOUND_VERSION_MINOR=12 -UNBOUND_VERSION_MICRO=0 +UNBOUND_VERSION_MICRO=1 LIBUNBOUND_CURRENT=9 -LIBUNBOUND_REVISION=10 +LIBUNBOUND_REVISION=11 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -2895,6 +2895,7 @@ LIBUNBOUND_AGE=1 # 1.10.1 had 9:8:1 # 1.11.0 had 9:9:1 # 1.12.0 had 9:10:1 +# 1.12.1 had 9:11:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -21702,7 +21703,7 @@ _ACEOF -version=1.12.0 +version=1.12.1 date=`date +'%b %e, %Y'` @@ -22221,7 +22222,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by unbound $as_me 1.12.0, which was +This file was extended by unbound $as_me 1.12.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22287,7 +22288,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -unbound config.status 1.12.0 +unbound config.status 1.12.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 7d9879294..2bd44353d 100644 --- a/configure.ac +++ b/configure.ac @@ -11,14 +11,14 @@ sinclude(dnscrypt/dnscrypt.m4) # must be numbers. ac_defun because of later processing m4_define([VERSION_MAJOR],[1]) m4_define([VERSION_MINOR],[12]) -m4_define([VERSION_MICRO],[0]) +m4_define([VERSION_MICRO],[1]) AC_INIT(unbound, m4_defn([VERSION_MAJOR]).m4_defn([VERSION_MINOR]).m4_defn([VERSION_MICRO]), unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues, unbound) AC_SUBST(UNBOUND_VERSION_MAJOR, [VERSION_MAJOR]) AC_SUBST(UNBOUND_VERSION_MINOR, [VERSION_MINOR]) AC_SUBST(UNBOUND_VERSION_MICRO, [VERSION_MICRO]) LIBUNBOUND_CURRENT=9 -LIBUNBOUND_REVISION=10 +LIBUNBOUND_REVISION=11 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -96,6 +96,7 @@ LIBUNBOUND_AGE=1 # 1.10.1 had 9:8:1 # 1.11.0 had 9:9:1 # 1.12.0 had 9:10:1 +# 1.12.1 had 9:11:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary diff --git a/doc/Changelog b/doc/Changelog index 87f796398..96f160f99 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +8 October 2020: Wouter + - Tag for 1.12.0 release. + - Current repo is version 1.12.1 in development. + 1 October 2020: Wouter - Current repo is version 1.12.0 for release. Tag for 1.12.0rc1. From a87f05be7b36c7c45eca249dfd9d998e31770a34 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 8 Oct 2020 09:11:54 +0200 Subject: [PATCH 05/38] - Fix #319: potential memory leak on config failure, in rpz config. --- doc/Changelog | 1 + services/rpz.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 96f160f99..c59352cfd 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 8 October 2020: Wouter - Tag for 1.12.0 release. - Current repo is version 1.12.1 in development. + - Fix #319: potential memory leak on config failure, in rpz config. 1 October 2020: Wouter - Current repo is version 1.12.0 for release. Tag for 1.12.0rc1. diff --git a/services/rpz.c b/services/rpz.c index ba5dd186d..13304652c 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -440,6 +440,8 @@ err: respip_set_delete(r->respip_set); if(r->taglist) free(r->taglist); + if(r->region) + regional_destroy(r->region); free(r); } return NULL; From 795a33c6e54aac7c7c0217da37d20faaf78898ef Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 9 Oct 2020 08:57:23 +0200 Subject: [PATCH 06/38] - Fix dnstap socket and the chroot not applied properly to the dnstap socket path. --- dnstap/dnstap.c | 10 ++++------ dnstap/dtstream.c | 8 ++++++-- doc/Changelog | 4 ++++ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/dnstap/dnstap.c b/dnstap/dnstap.c index 0c8c6c4d4..b8a321670 100644 --- a/dnstap/dnstap.c +++ b/dnstap/dnstap.c @@ -134,15 +134,13 @@ dt_create(struct config_file* cfg) if(cfg->dnstap && cfg->dnstap_socket_path && cfg->dnstap_socket_path[0] && (cfg->dnstap_ip==NULL || cfg->dnstap_ip[0]==0)) { - char* p = fname_after_chroot(cfg->dnstap_socket_path, cfg, 1); - if(!p) { - log_err("malloc failure"); - return NULL; - } + char* p = cfg->dnstap_socket_path; + if(cfg->chrootdir && cfg->chrootdir[0] && strncmp(p, + cfg->chrootdir, strlen(cfg->chrootdir)) == 0) + p += strlen(cfg->chrootdir); verbose(VERB_OPS, "attempting to connect to dnstap socket %s", p); check_socket_file(p); - free(p); } env = (struct dt_env *) calloc(1, sizeof(struct dt_env)); diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index b0918c52c..f1ace3c34 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -341,15 +341,19 @@ int dt_io_thread_apply_cfg(struct dt_io_thread* dtio, struct config_file *cfg) dtio->is_bidirectional = cfg->dnstap_bidirectional; if(dtio->upstream_is_unix) { + char* nm; if(!cfg->dnstap_socket_path || cfg->dnstap_socket_path[0]==0) { log_err("dnstap setup: no dnstap-socket-path for " "socket connect"); return 0; } + nm = cfg->dnstap_socket_path; + if(cfg->chrootdir && cfg->chrootdir[0] && strncmp(nm, + cfg->chrootdir, strlen(cfg->chrootdir)) == 0) + nm += strlen(cfg->chrootdir); free(dtio->socket_path); - dtio->socket_path = fname_after_chroot(cfg->dnstap_socket_path, - cfg, 1); + dtio->socket_path = strdup(nm); if(!dtio->socket_path) { log_err("dnstap setup: malloc failure"); return 0; diff --git a/doc/Changelog b/doc/Changelog index c59352cfd..035d040a9 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +9 October 2020: Wouter + - Fix dnstap socket and the chroot not applied properly to the dnstap + socket path. + 8 October 2020: Wouter - Tag for 1.12.0 release. - Current repo is version 1.12.1 in development. From fca884a7e639c34b9e29de41aa9fe9d8ba45708d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 9 Oct 2020 14:31:55 +0200 Subject: [PATCH 07/38] - Fix warning in libnss compile, nss_buf2dsa is not used without DSA. --- doc/Changelog | 1 + validator/val_secalgo.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 035d040a9..e98876fca 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 9 October 2020: Wouter - Fix dnstap socket and the chroot not applied properly to the dnstap socket path. + - Fix warning in libnss compile, nss_buf2dsa is not used without DSA. 8 October 2020: Wouter - Tag for 1.12.0 release. diff --git a/validator/val_secalgo.c b/validator/val_secalgo.c index 65bca8b69..15cccf017 100644 --- a/validator/val_secalgo.c +++ b/validator/val_secalgo.c @@ -990,6 +990,7 @@ static SECKEYPublicKey* nss_buf2ecdsa(unsigned char* key, size_t len, int algo) return pk; } +#if defined(USE_DSA) && defined(USE_SHA1) static SECKEYPublicKey* nss_buf2dsa(unsigned char* key, size_t len) { SECKEYPublicKey* pk; @@ -1050,6 +1051,7 @@ static SECKEYPublicKey* nss_buf2dsa(unsigned char* key, size_t len) } return pk; } +#endif /* USE_DSA && USE_SHA1 */ static SECKEYPublicKey* nss_buf2rsa(unsigned char* key, size_t len) { From e6c560e5c9d7c1f332dadf47ddf3861f3289cbc9 Mon Sep 17 00:00:00 2001 From: James Renken Date: Mon, 12 Oct 2020 22:06:20 -0700 Subject: [PATCH 08/38] Add modern X.509v3 extensions to unbound-control TLS certificates --- smallapp/unbound-control-setup.sh.in | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/smallapp/unbound-control-setup.sh.in b/smallapp/unbound-control-setup.sh.in index 3e506e84e..6b5e0dbbf 100644 --- a/smallapp/unbound-control-setup.sh.in +++ b/smallapp/unbound-control-setup.sh.in @@ -124,8 +124,14 @@ default_bits=$BITS default_md=$HASH prompt=no distinguished_name=req_distinguished_name +x509_extensions=v3_ca [req_distinguished_name] commonName=$SERVERNAME +[v3_ca] +subjectKeyIdentifier=hash +authorityKeyIdentifier=keyid:always,issuer:always +basicConstraints=critical,CA:TRUE,pathlen:0 +subjectAltName=DNS:$SERVERNAME EOF [ -f server.cnf ] || fatal "cannot create openssl configuration" @@ -156,8 +162,12 @@ default_bits=$BITS default_md=$HASH prompt=no distinguished_name=req_distinguished_name +req_extensions=v3_req [req_distinguished_name] commonName=$CLIENTNAME +[v3_req] +basicConstraints=critical,CA:FALSE +subjectAltName=DNS:$CLIENTNAME EOF [ -f client.cnf ] || fatal "cannot create openssl configuration" From 79a8db1ee184ca9e6fa1e265c1970f7074c0bea1 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 13 Oct 2020 08:28:59 +0200 Subject: [PATCH 09/38] - Fix #323: unbound testsuite fails on mock build in systemd-nspawn if systemd support is build. --- doc/Changelog | 4 ++++ testcode/do-tests.sh | 3 +++ testcode/run_vm.sh | 2 ++ testcode/testbound.c | 4 ++++ 4 files changed, 13 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index e98876fca..f8cec1158 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +13 October 2020: Wouter + - Fix #323: unbound testsuite fails on mock build in systemd-nspawn + if systemd support is build. + 9 October 2020: Wouter - Fix dnstap socket and the chroot not applied properly to the dnstap socket path. diff --git a/testcode/do-tests.sh b/testcode/do-tests.sh index 5439f0f28..effb7c16a 100755 --- a/testcode/do-tests.sh +++ b/testcode/do-tests.sh @@ -29,6 +29,9 @@ else HAVE_MINGW=no fi +# stop tests from notifying systemd, if that is compiled in. +export -n NOTIFY_SOCKET + cd testdata; sh ../testcode/mini_tdir.sh clean rm -f .perfstats.txt diff --git a/testcode/run_vm.sh b/testcode/run_vm.sh index 5f599e144..363a32b52 100644 --- a/testcode/run_vm.sh +++ b/testcode/run_vm.sh @@ -40,6 +40,8 @@ cleanup() { exit 0 } trap cleanup INT +# stop tests from notifying systemd, if that is compiled in. +export -n NOTIFY_SOCKET for t in $RUNLIST do diff --git a/testcode/testbound.c b/testcode/testbound.c index 602dffaff..3f3e106b0 100644 --- a/testcode/testbound.c +++ b/testcode/testbound.c @@ -362,6 +362,10 @@ main(int argc, char* argv[]) /* we do not want the test to depend on the timezone */ (void)putenv("TZ=UTC"); memset(pass_argv, 0, sizeof(pass_argv)); +#ifdef HAVE_SYSTEMD + /* we do not want the test to use systemd daemon startup notification*/ + (void)unsetenv("NOTIFY_SOCKET"); +#endif /* HAVE_SYSTEMD */ log_init(NULL, 0, NULL); /* determine commandline options for the daemon */ From 72032a95bb254c6c1b16ddcdf50352152141b524 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 14 Oct 2020 10:06:28 +0200 Subject: [PATCH 10/38] - Fix for python reply callback to see mesh state reply_list member, it only removes it briefly for the commpoint call so that it does not drop it and attempt to modify the reply list during reply. --- doc/Changelog | 5 +++++ services/mesh.c | 29 +++++++++++++---------------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index f8cec1158..97959cf26 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +14 October 2020: Wouter + - Fix for python reply callback to see mesh state reply_list member, + it only removes it briefly for the commpoint call so that it does + not drop it and attempt to modify the reply list during reply. + 13 October 2020: Wouter - Fix #323: unbound testsuite fails on mock build in systemd-nspawn if systemd support is build. diff --git a/services/mesh.c b/services/mesh.c index 52ff97e4a..8f746ea8e 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1196,6 +1196,12 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, /* Copy the client's EDNS for later restore, to make sure the edns * compare is with the correct edns options. */ struct edns_data edns_bak = r->edns; + /* briefly set the replylist to null in case the + * meshsendreply calls tcpreqinfo sendreply that + * comm_point_drops because of size, and then the + * null stops the mesh state remove and thus + * reply_list modification and accounting */ + struct mesh_reply* rlist = m->reply_list; /* examine security status */ if(m->s.env->need_to_validate && (!(r->qflags&BIT_CD) || m->s.env->cfg->ignore_cd) && rep && @@ -1236,7 +1242,9 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, sldns_buffer_write_at(r_buffer, 0, &r->qid, sizeof(uint16_t)); sldns_buffer_write_at(r_buffer, 12, r->qname, m->s.qinfo.qname_len); + m->reply_list = NULL; comm_point_send_reply(&r->query_reply); + m->reply_list = rlist; } else if(rcode) { m->s.qinfo.qname = r->qname; m->s.qinfo.local_alias = r->local_alias; @@ -1251,7 +1259,9 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, } error_encode(r_buffer, rcode, &m->s.qinfo, r->qid, r->qflags, &r->edns); + m->reply_list = NULL; comm_point_send_reply(&r->query_reply); + m->reply_list = rlist; } else { size_t udp_size = r->edns.udp_size; r->edns.edns_version = EDNS_ADVERTISED_VERSION; @@ -1277,7 +1287,9 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, &m->s.qinfo, r->qid, r->qflags, &r->edns); } r->edns = edns_bak; + m->reply_list = NULL; comm_point_send_reply(&r->query_reply); + m->reply_list = rlist; } /* account */ log_assert(m->s.env->mesh->num_reply_addrs > 0); @@ -1365,20 +1377,12 @@ void mesh_query_done(struct mesh_state* mstate) mstate->reply_list = reply_list; } else { struct sldns_buffer* r_buffer = r->query_reply.c->buffer; - struct mesh_reply* rlist = mstate->reply_list; if(r->query_reply.c->tcp_req_info) { r_buffer = r->query_reply.c->tcp_req_info->spool_buffer; prev_buffer = NULL; } - /* briefly set the replylist to null in case the - * meshsendreply calls tcpreqinfo sendreply that - * comm_point_drops because of size, and then the - * null stops the mesh state remove and thus - * reply_list modification and accounting */ - mstate->reply_list = NULL; mesh_send_reply(mstate, mstate->s.return_rcode, rep, r, r_buffer, prev, prev_buffer); - mstate->reply_list = rlist; if(r->query_reply.c->tcp_req_info) { tcp_req_info_remove_mesh_state(r->query_reply.c->tcp_req_info, mstate); r_buffer = NULL; @@ -1894,7 +1898,7 @@ mesh_serve_expired_callback(void* arg) { struct mesh_state* mstate = (struct mesh_state*) arg; struct module_qstate* qstate = &mstate->s; - struct mesh_reply* r, *rlist; + struct mesh_reply* r; struct mesh_area* mesh = qstate->env->mesh; struct dns_msg* msg; struct mesh_cb* c; @@ -1999,15 +2003,8 @@ mesh_serve_expired_callback(void* arg) r_buffer = r->query_reply.c->buffer; if(r->query_reply.c->tcp_req_info) r_buffer = r->query_reply.c->tcp_req_info->spool_buffer; - /* briefly set the replylist to null in case the meshsendreply - * calls tcpreqinfo sendreply that comm_point_drops because - * of size, and then the null stops the mesh state remove and - * thus reply_list modification and accounting */ - rlist = mstate->reply_list; - mstate->reply_list = NULL; mesh_send_reply(mstate, LDNS_RCODE_NOERROR, msg->rep, r, r_buffer, prev, prev_buffer); - mstate->reply_list = rlist; if(r->query_reply.c->tcp_req_info) tcp_req_info_remove_mesh_state(r->query_reply.c->tcp_req_info, mstate); prev = r; From a9e13f3590f2e6bdba50eb8a3825d2c8e2362778 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 14 Oct 2020 14:01:47 +0200 Subject: [PATCH 11/38] - Fix that if there are on reply callbacks, those are called per reply and a new message created if that was modified by the call. --- doc/Changelog | 2 ++ services/mesh.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 97959cf26..4d35a747e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,8 @@ - Fix for python reply callback to see mesh state reply_list member, it only removes it briefly for the commpoint call so that it does not drop it and attempt to modify the reply list during reply. + - Fix that if there are on reply callbacks, those are called per + reply and a new message created if that was modified by the call. 13 October 2020: Wouter - Fix #323: unbound testsuite fails on mock build in systemd-nspawn diff --git a/services/mesh.c b/services/mesh.c index 8f746ea8e..c22ef43fa 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1235,7 +1235,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, prev->edns.bits == r->edns.bits && prev->edns.udp_size == r->edns.udp_size && edns_opt_list_compare(prev->edns.opt_list, r->edns.opt_list) - == 0) { + == 0 && !env->inplace_cb_lists[inplace_cb_reply]) { /* if the previous reply is identical to this one, fix ID */ if(prev_buffer != r_buffer) sldns_buffer_copy(r_buffer, prev_buffer); From f0c19be06f7148edaf14f159ea3e671075f45e99 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 14 Oct 2020 14:03:04 +0200 Subject: [PATCH 12/38] - Fix that if there are on reply callbacks, those are called per reply and a new message created if that was modified by the call. --- services/mesh.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/mesh.c b/services/mesh.c index c22ef43fa..810865933 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1235,7 +1235,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, prev->edns.bits == r->edns.bits && prev->edns.udp_size == r->edns.udp_size && edns_opt_list_compare(prev->edns.opt_list, r->edns.opt_list) - == 0 && !env->inplace_cb_lists[inplace_cb_reply]) { + == 0 && !m->s.env->inplace_cb_lists[inplace_cb_reply]) { /* if the previous reply is identical to this one, fix ID */ if(prev_buffer != r_buffer) sldns_buffer_copy(r_buffer, prev_buffer); From 890c8deb0fdc05cbf03c1c15ffa8698ece07d655 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 14 Oct 2020 14:20:16 +0200 Subject: [PATCH 13/38] - Free up auth zone parse region after use for lookup of host --- doc/Changelog | 1 + services/authzone.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 4d35a747e..c7076fd62 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ not drop it and attempt to modify the reply list during reply. - Fix that if there are on reply callbacks, those are called per reply and a new message created if that was modified by the call. + - Free up auth zone parse region after use for lookup of host 13 October 2020: Wouter - Fix #323: unbound testsuite fails on mock build in systemd-nspawn diff --git a/services/authzone.c b/services/authzone.c index a26d1003a..15be5d60c 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -5387,6 +5387,7 @@ void auth_xfer_transfer_lookup_callback(void* arg, int rcode, sldns_buffer* buf, verbose(VERB_ALGO, "auth zone %s host %s type %s transfer lookup has no answer", zname, xfr->task_transfer->lookup_target->host, (xfr->task_transfer->lookup_aaaa?"AAAA":"A")); } } + regional_free_all(temp); } else { if(verbosity >= VERB_ALGO) { char zname[255+1]; @@ -6444,6 +6445,7 @@ void auth_xfer_probe_lookup_callback(void* arg, int rcode, sldns_buffer* buf, verbose(VERB_ALGO, "auth zone %s host %s type %s probe lookup has no address", zname, xfr->task_probe->lookup_target->host, (xfr->task_probe->lookup_aaaa?"AAAA":"A")); } } + regional_free_all(temp); } else { if(verbosity >= VERB_ALGO) { char zname[255+1]; From b1a50720e5675f86e9ffa9042453a5d686366ba0 Mon Sep 17 00:00:00 2001 From: netblue30 Date: Wed, 14 Oct 2020 11:32:14 -0400 Subject: [PATCH 14/38] DoH: implement content-lenght header field --- services/listen_dnsport.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 3a98c2642..796d62a37 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -2177,9 +2177,10 @@ int http2_submit_dns_response(struct http2_session* h2_session) int ret; nghttp2_data_provider data_prd; char status[4]; - nghttp2_nv headers[2]; + nghttp2_nv headers[3]; struct http2_stream* h2_stream = h2_session->c->h2_stream; size_t rlen; + char rlen_str[6]; // big enough to hold a uint16_t number if(h2_stream->rbuffer) { log_err("http2 submit response error: rbuffer already " @@ -2198,6 +2199,13 @@ int http2_submit_dns_response(struct http2_session* h2_session) } rlen = sldns_buffer_remaining(h2_session->c->buffer); + int rv = snprintf(rlen_str, sizeof(rlen_str), "%u", rlen); + if (rv <= 0 || rv >= sizeof(rlen_str)) { + verbose(VERB_QUERY, "http2: submit response error: " + "data buffer too large"); + return 0; + } + lock_basic_lock(&http2_response_buffer_count_lock); if(http2_response_buffer_count + rlen > http2_response_buffer_max) { lock_basic_unlock(&http2_response_buffer_count_lock); @@ -2228,13 +2236,11 @@ int http2_submit_dns_response(struct http2_session* h2_session) headers[1].valuelen = 23; headers[1].flags = NGHTTP2_NV_FLAG_NONE; - /*TODO be nice and add the content-length header headers[2].name = (uint8_t*)"content-length"; headers[2].namelen = 14; - headers[2].value = - headers[2].valuelen = + headers[2].value = rlen_str; + headers[2].valuelen = strlen(rlen_str); headers[2].flags = NGHTTP2_NV_FLAG_NONE; - */ sldns_buffer_write(h2_stream->rbuffer, sldns_buffer_current(h2_session->c->buffer), @@ -2244,7 +2250,7 @@ int http2_submit_dns_response(struct http2_session* h2_session) data_prd.source.ptr = h2_session; data_prd.read_callback = http2_submit_response_read_callback; ret = nghttp2_submit_response(h2_session->session, h2_stream->stream_id, - headers, 2, &data_prd); + headers, 3, &data_prd); if(ret) { verbose(VERB_QUERY, "http2: set_stream_user_data failed, " "error: %s", nghttp2_strerror(ret)); From edc8f363a72951ad86112b07f64ce0a8f0495723 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 15 Oct 2020 08:22:42 +0200 Subject: [PATCH 15/38] Changelog note for #326 and changes: - DoH content length, simplify code, remove declaration after statement and fix cast warning. --- doc/Changelog | 6 ++++++ services/listen_dnsport.c | 11 +++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index c7076fd62..2d8c69e37 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,9 @@ +15 October 2020: Wouter + - Merge PR #326 from netblue30: DoH: implement content-length + header field + - DoH content length, simplify code, remove declaration after + statement and fix cast warning. + 14 October 2020: Wouter - Fix for python reply callback to see mesh state reply_list member, it only removes it briefly for the commpoint call so that it does diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 796d62a37..1cdb32a9c 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -2180,7 +2180,7 @@ int http2_submit_dns_response(struct http2_session* h2_session) nghttp2_nv headers[3]; struct http2_stream* h2_stream = h2_session->c->h2_stream; size_t rlen; - char rlen_str[6]; // big enough to hold a uint16_t number + char rlen_str[32]; if(h2_stream->rbuffer) { log_err("http2 submit response error: rbuffer already " @@ -2199,12 +2199,7 @@ int http2_submit_dns_response(struct http2_session* h2_session) } rlen = sldns_buffer_remaining(h2_session->c->buffer); - int rv = snprintf(rlen_str, sizeof(rlen_str), "%u", rlen); - if (rv <= 0 || rv >= sizeof(rlen_str)) { - verbose(VERB_QUERY, "http2: submit response error: " - "data buffer too large"); - return 0; - } + snprintf(rlen_str, sizeof(rlen_str), "%u", rlen); lock_basic_lock(&http2_response_buffer_count_lock); if(http2_response_buffer_count + rlen > http2_response_buffer_max) { @@ -2238,7 +2233,7 @@ int http2_submit_dns_response(struct http2_session* h2_session) headers[2].name = (uint8_t*)"content-length"; headers[2].namelen = 14; - headers[2].value = rlen_str; + headers[2].value = (uint8_t*)rlen_str; headers[2].valuelen = strlen(rlen_str); headers[2].flags = NGHTTP2_NV_FLAG_NONE; From d55084ea9e9089174ab9b4bc218f884d2095b50f Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Thu, 15 Oct 2020 15:53:16 +0200 Subject: [PATCH 16/38] - Fix that if there are reply callbacks for the given rcode, those are called per reply and a new message created if that was modified by the call. - Pass the comm_reply information to the inplace_cb_reply* functions during the mesh state and update the documentation on that. --- doc/Changelog | 7 ++++++ pythonmod/doc/examples/example6.rst | 7 ------ pythonmod/doc/modules/functions.rst | 5 +++- pythonmod/examples/inplace_callbacks.py | 30 +++-------------------- services/mesh.c | 32 +++++++++++++++---------- util/data/msgreply.h | 2 +- 6 files changed, 34 insertions(+), 49 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 2d8c69e37..c97b24ec0 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,10 @@ +15 October 2020: George + - Fix that if there are reply callbacks for the given rcode, those + are called per reply and a new message created if that was modified + by the call. + - Pass the comm_reply information to the inplace_cb_reply* functions + during the mesh state and update the documentation on that. + 15 October 2020: Wouter - Merge PR #326 from netblue30: DoH: implement content-length header field diff --git a/pythonmod/doc/examples/example6.rst b/pythonmod/doc/examples/example6.rst index d294fb8be..fd6caf74d 100644 --- a/pythonmod/doc/examples/example6.rst +++ b/pythonmod/doc/examples/example6.rst @@ -60,7 +60,6 @@ The callback function's prototype is the following: :param **kwargs: Dictionary that may contain parameters added in a future release. Current parameters: ``repinfo``: Reply information for a communication point (comm_reply). - It is None when the callback happens in the mesh states. :return: True on success, False on failure. @@ -105,8 +104,6 @@ The callback function's prototype is the following: :param **kwargs: Dictionary that may contain parameters added in a future release. Current parameters: ``repinfo``: Reply information for a communication point (comm_reply). - It is None when the callback happens in the mesh - states(modules). :return: True on success, False on failure. @@ -154,8 +151,6 @@ The callback function's prototype is the following: :param **kwargs: Dictionary that may contain parameters added in a future release. Current parameters: ``repinfo``: Reply information for a communication point (comm_reply). - It is None when the callback happens in the mesh - states(modules). :return: True on success, False on failure. @@ -201,8 +196,6 @@ The callback function's prototype is the following: :param **kwargs: Dictionary that may contain parameters added in a future release. Current parameters: ``repinfo``: Reply information for a communication point (comm_reply). - It is None when the callback happens in the mesh - states(modules). :return: True on success, False on failure. diff --git a/pythonmod/doc/modules/functions.rst b/pythonmod/doc/modules/functions.rst index 43c66eb38..6ded3bf7a 100644 --- a/pythonmod/doc/modules/functions.rst +++ b/pythonmod/doc/modules/functions.rst @@ -89,7 +89,7 @@ EDNS options Inplace callbacks ----------------- -.. function:: inplace_cb_reply(qinfo, qstate, rep, rcode, edns, opt_list_out, region) +.. function:: inplace_cb_reply(qinfo, qstate, rep, rcode, edns, opt_list_out, region, \*\*kwargs) Function prototype for callback functions used in `register_inplace_cb_reply`_, `register_inplace_cb_reply_cache`_, @@ -102,6 +102,9 @@ Inplace callbacks :param edns: :class:`edns_data` :param opt_list_out: :class:`edns_option`. EDNS option list to append options to. :param region: :class:`regional` + :param \*\*kwargs: Dictionary that may contain parameters added in a future + release. Current parameters: + ``repinfo``: :class:`comm_reply`. Reply information for a communication point. .. function:: inplace_cb_query(qinfo, flags, qstate, addr, zone, region) diff --git a/pythonmod/examples/inplace_callbacks.py b/pythonmod/examples/inplace_callbacks.py index 768c2d013..de375b4e1 100644 --- a/pythonmod/examples/inplace_callbacks.py +++ b/pythonmod/examples/inplace_callbacks.py @@ -43,7 +43,7 @@ # This query returns SERVFAIL as the txt record of bogus.nlnetlabs.nl is # intentionally bogus. The reply will contain an empty EDNS option # with option code 65003. -# Unbound will also log the source address(es) of the client(s) that made +# Unbound will also log the source address of the client that made # the request. # (unbound needs to be validating for this example to work) @@ -91,8 +91,6 @@ def inplace_reply_callback(qinfo, qstate, rep, rcode, edns, opt_list_out, :param **kwargs: Dictionary that may contain parameters added in a future release. Current parameters: ``repinfo``: Reply information for a communication point (comm_reply). - It is None when the callback happens in the mesh - states(modules). :return: True on success, False on failure. @@ -121,8 +119,6 @@ def inplace_cache_callback(qinfo, qstate, rep, rcode, edns, opt_list_out, :param **kwargs: Dictionary that may contain parameters added in a future release. Current parameters: ``repinfo``: Reply information for a communication point (comm_reply). - It is None when the callback happens in the mesh - states(modules). :return: True on success, False on failure. @@ -173,8 +169,6 @@ def inplace_local_callback(qinfo, qstate, rep, rcode, edns, opt_list_out, :param **kwargs: Dictionary that may contain parameters added in a future release. Current parameters: ``repinfo``: Reply information for a communication point (comm_reply). - It is None when the callback happens in the mesh - states(modules). :return: True on success, False on failure. @@ -205,13 +199,11 @@ def inplace_servfail_callback(qinfo, qstate, rep, rcode, edns, opt_list_out, :param **kwargs: Dictionary that may contain parameters added in a future release. Current parameters: ``repinfo``: Reply information for a communication point (comm_reply). - It is None when the callback happens in the mesh - states(modules). :return: True on success, False on failure. For demonstration purposes we want to reply with an empty EDNS code '65003' - and log the IP address(es) of the client(s). + and log the IP address of the client. """ log_info("python: called back while servfail.") @@ -219,30 +211,14 @@ def inplace_servfail_callback(qinfo, qstate, rep, rcode, edns, opt_list_out, b = bytearray.fromhex("") edns_opt_list_append(opt_list_out, 65003, b, region) - # Log the client(s) IP address(es) + # Log the client's IP address comm_reply = kwargs['repinfo'] if comm_reply: - # If it is not None this callback was called before the query reached - # the mesh states(modules). There is only one client associated with - # this query. addr = comm_reply.addr port = comm_reply.port addr_family = comm_reply.family log_info("python: Client IP: {}({}), port: {}" "".format(addr, addr_family, port)) - else: - # If it is not None this callback was called while the query is in the - # mesh states(modules). In this case they may be multiple clients - # waiting for this query. - # The following code is the same as with the resip.py example. - rl = qstate.mesh_info.reply_list - while (rl): - if rl.query_reply: - q = rl.query_reply - log_info("python: Client IP: {}({}), port: {}" - "".format(q.addr, q.family, q.port)) - rl = rl.next - return True diff --git a/services/mesh.c b/services/mesh.c index 810865933..cd9050936 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1224,18 +1224,24 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, r->h2_stream->mesh_state = NULL; } /* send the reply */ - /* We don't reuse the encoded answer if either the previous or current - * response has a local alias. We could compare the alias records - * and still reuse the previous answer if they are the same, but that - * would be complicated and error prone for the relatively minor case. - * So we err on the side of safety. */ - if(prev && prev_buffer && prev->qflags == r->qflags && + /* We don't reuse the encoded answer if: + * - either the previous or current response has a local alias. We could + * compare the alias records and still reuse the previous answer if they + * are the same, but that would be complicated and error prone for the + * relatively minor case. So we err on the side of safety. + * - there are registered callback functions for the given rcode, as these + * need to be called for each reply. */ + if(((rcode != LDNS_RCODE_SERVFAIL && + !m->s.env->inplace_cb_lists[inplace_cb_reply]) || + (rcode == LDNS_RCODE_SERVFAIL && + !m->s.env->inplace_cb_lists[inplace_cb_reply_servfail])) && + prev && prev_buffer && prev->qflags == r->qflags && !prev->local_alias && !r->local_alias && - prev->edns.edns_present == r->edns.edns_present && - prev->edns.bits == r->edns.bits && + prev->edns.edns_present == r->edns.edns_present && + prev->edns.bits == r->edns.bits && prev->edns.udp_size == r->edns.udp_size && edns_opt_list_compare(prev->edns.opt_list, r->edns.opt_list) - == 0 && !m->s.env->inplace_cb_lists[inplace_cb_reply]) { + == 0) { /* if the previous reply is identical to this one, fix ID */ if(prev_buffer != r_buffer) sldns_buffer_copy(r_buffer, prev_buffer); @@ -1250,11 +1256,11 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, m->s.qinfo.local_alias = r->local_alias; if(rcode == LDNS_RCODE_SERVFAIL) { if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s, - rep, rcode, &r->edns, NULL, m->s.region)) + rep, rcode, &r->edns, &r->query_reply, m->s.region)) r->edns.opt_list = NULL; } else { if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, rcode, - &r->edns, NULL, m->s.region)) + &r->edns, &r->query_reply, m->s.region)) r->edns.opt_list = NULL; } error_encode(r_buffer, rcode, &m->s.qinfo, r->qid, @@ -1271,7 +1277,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, m->s.qinfo.qname = r->qname; m->s.qinfo.local_alias = r->local_alias; if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, - LDNS_RCODE_NOERROR, &r->edns, NULL, m->s.region) || + LDNS_RCODE_NOERROR, &r->edns, &r->query_reply, m->s.region) || !apply_edns_options(&r->edns, &edns_bak, m->s.env->cfg, r->query_reply.c, m->s.region) || @@ -1281,7 +1287,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, secure)) { if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s, - rep, LDNS_RCODE_SERVFAIL, &r->edns, NULL, m->s.region)) + rep, LDNS_RCODE_SERVFAIL, &r->edns, &r->query_reply, m->s.region)) r->edns.opt_list = NULL; error_encode(r_buffer, LDNS_RCODE_SERVFAIL, &m->s.qinfo, r->qid, r->qflags, &r->edns); diff --git a/util/data/msgreply.h b/util/data/msgreply.h index 8d75f9b12..385780268 100644 --- a/util/data/msgreply.h +++ b/util/data/msgreply.h @@ -552,7 +552,7 @@ struct edns_option* edns_opt_list_find(struct edns_option* list, uint16_t code); * @param rep: Reply info. Could be NULL. * @param rcode: return code. * @param edns: edns data of the reply. - * @param repinfo: comm_reply. NULL. + * @param repinfo: comm_reply. Reply information for a communication point. * @param region: region to store data. * @return false on failure (a callback function returned an error). */ From 1d11f470df7691488ac348b3420f0f891f173674 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Fri, 16 Oct 2020 17:12:08 +0200 Subject: [PATCH 17/38] - local-zone regional allocations outside of chunk to prevent large chunk per small local-zone allocations. --- services/localzone.c | 2 +- util/regional.c | 28 ++++++++++++++++++++++++---- util/regional.h | 10 ++++++++++ 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/services/localzone.c b/services/localzone.c index 6aaf0c055..cad460663 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -157,7 +157,7 @@ local_zone_create(uint8_t* nm, size_t len, int labs, z->namelen = len; z->namelabs = labs; lock_rw_init(&z->lock); - z->region = regional_create_custom(sizeof(struct regional)); + z->region = regional_create_nochunk(sizeof(struct regional)); if(!z->region) { free(z); return NULL; diff --git a/util/regional.c b/util/regional.c index ff36d0e21..01a042b61 100644 --- a/util/regional.c +++ b/util/regional.c @@ -80,18 +80,38 @@ regional_init(struct regional* r) r->total_large = 0; } -struct regional* -regional_create_custom(size_t size) +/** + * Create a new region, with custom first block and large-object sizes. + * @param size: length of first block. + * @param large_object_size: outside of chunk allocation threshold. + * @return: newly allocated regional. + */ +static struct regional* +regional_create_custom_large_object(size_t size, size_t large_object_size) { struct regional* r = (struct regional*)malloc(size); size = ALIGN_UP(size, ALIGNMENT); log_assert(sizeof(struct regional) <= size); if(!r) return NULL; r->first_size = size; + r->large_object_size = large_object_size; regional_init(r); return r; } +struct regional* +regional_create_custom(size_t size) +{ + return regional_create_custom_large_object(size, + REGIONAL_LARGE_OBJECT_SIZE); +} + +struct regional* +regional_create_nochunk(size_t size) +{ + return regional_create_custom_large_object(size, 0); +} + void regional_free_all(struct regional *r) { @@ -134,7 +154,7 @@ regional_alloc(struct regional *r, size_t size) malloc and ALIGN_UP */ a = ALIGN_UP(size, ALIGNMENT); /* large objects */ - if(a > REGIONAL_LARGE_OBJECT_SIZE) { + if(a > r->large_object_size) { s = malloc(ALIGNMENT + size); if(!s) return NULL; r->total_large += ALIGNMENT+size; @@ -219,7 +239,7 @@ regional_log_stats(struct regional *r) /* some basic assertions put here (non time critical code) */ log_assert(ALIGNMENT >= sizeof(char*)); log_assert(REGIONAL_CHUNK_SIZE > ALIGNMENT); - log_assert(REGIONAL_CHUNK_SIZE-ALIGNMENT > REGIONAL_LARGE_OBJECT_SIZE); + log_assert(REGIONAL_CHUNK_SIZE-ALIGNMENT > r->large_object_size); log_assert(REGIONAL_CHUNK_SIZE >= sizeof(struct regional)); /* debug print */ log_info("regional %u chunks, %u large", diff --git a/util/regional.h b/util/regional.h index e8b2cb8d0..eeb7de7b5 100644 --- a/util/regional.h +++ b/util/regional.h @@ -74,6 +74,8 @@ struct regional size_t available; /** current chunk data position. */ char* data; + /** threshold for outside of chunk allocations */ + size_t large_object_size; }; /** @@ -88,6 +90,14 @@ struct regional* regional_create(void); * @return: newly allocated regional. */ struct regional* regional_create_custom(size_t size); + +/** + * Create a new region, with custom settings, that will allocate everything + * outside the region chunk. + * @param size: length of first block. + * @return: newly allocated regional. + */ +struct regional* regional_create_nochunk(size_t size); /** * Free all memory associated with regional. Only keeps the first block with From f81d0ac0474cc8904e1240a512b935c8e466f81b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 16 Oct 2020 17:26:58 +0200 Subject: [PATCH 18/38] - Fix that the out of order TCP processing does not limit the number of outstanding queries over a connection. --- doc/Changelog | 4 ++++ services/listen_dnsport.c | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index c97b24ec0..3f291bed6 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +16 October 2020: Wouter + - Fix that the out of order TCP processing does not limit the + number of outstanding queries over a connection. + 15 October 2020: George - Fix that if there are reply callbacks for the given rcode, those are called per reply and a new message created if that was modified diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 1cdb32a9c..ad73fad01 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -82,7 +82,7 @@ #define TCP_BACKLOG 256 /** number of simultaneous requests a client can have */ -#define TCP_MAX_REQ_SIMULTANEOUS 32 +/* #define TCP_MAX_REQ_SIMULTANEOUS 32 */ #ifndef THREADS_DISABLED /** lock on the counter of stream buffer memory */ @@ -1804,7 +1804,7 @@ tcp_req_info_setup_listen(struct tcp_req_info* req) if(!req->cp->tcp_is_reading) wr = 1; - if(req->num_open_req + req->num_done_req < TCP_MAX_REQ_SIMULTANEOUS && + if(/*req->num_open_req + req->num_done_req < TCP_MAX_REQ_SIMULTANEOUS &&*/ !req->read_is_closed) rd = 1; From 46607e7c0c54f58fed15ae8643ecdd1252de9cae Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 19 Oct 2020 09:06:33 +0200 Subject: [PATCH 19/38] - Fix that http settings have colon in set_option, for http-endpoint, http-max-streams, http-query-buffer-size, http-response-buffer-size, and http-nodelay. --- doc/Changelog | 5 +++++ util/config_file.c | 10 +++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 3f291bed6..8a8e7ffe1 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +19 October 2020: Wouter + - Fix that http settings have colon in set_option, for + http-endpoint, http-max-streams, http-query-buffer-size, + http-response-buffer-size, and http-nodelay. + 16 October 2020: Wouter - Fix that the out of order TCP processing does not limit the number of outstanding queries over a connection. diff --git a/util/config_file.c b/util/config_file.c index b789c3359..25cba18b7 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -522,11 +522,11 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_STR("tls-ciphersuites:", tls_ciphersuites) else S_YNO("tls-use-sni:", tls_use_sni) else S_NUMBER_NONZERO("https-port:", https_port) - else S_STR("http-endpoint", http_endpoint) - else S_NUMBER_NONZERO("http-max-streams", http_max_streams) - else S_MEMSIZE("http-query-buffer-size", http_query_buffer_size) - else S_MEMSIZE("http-response-buffer-size", http_response_buffer_size) - else S_YNO("http-nodelay", http_nodelay) + else S_STR("http-endpoint:", http_endpoint) + else S_NUMBER_NONZERO("http-max-streams:", http_max_streams) + else S_MEMSIZE("http-query-buffer-size:", http_query_buffer_size) + else S_MEMSIZE("http-response-buffer-size:", http_response_buffer_size) + else S_YNO("http-nodelay:", http_nodelay) else S_YNO("interface-automatic:", if_automatic) else S_YNO("use-systemd:", use_systemd) else S_YNO("do-daemonize:", do_daemonize) From ba074c8bef105b968164060440c21b8c2c614794 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 19 Oct 2020 10:14:40 +0200 Subject: [PATCH 20/38] - Fix memory leak of https port string when reading config. --- doc/Changelog | 1 + util/configparser.c | 2007 +++++++++++++++++++++---------------------- util/configparser.h | 4 +- util/configparser.y | 1 + 4 files changed, 963 insertions(+), 1050 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 8a8e7ffe1..49dab107c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Fix that http settings have colon in set_option, for http-endpoint, http-max-streams, http-query-buffer-size, http-response-buffer-size, and http-nodelay. + - Fix memory leak of https port string when reading config. 16 October 2020: Wouter - Fix that the out of order TCP processing does not limit the diff --git a/util/configparser.c b/util/configparser.c index ba5054eb4..50788a0c5 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.5.1. */ +/* A Bison parser, made by GNU Bison 3.4.1. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -48,7 +48,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.5.1" +#define YYBISON_VERSION "3.4.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -97,15 +97,6 @@ extern struct config_parser_state* cfg_parser; #line 99 "util/configparser.c" -# ifndef YY_CAST -# ifdef __cplusplus -# define YY_CAST(Type, Val) static_cast (Val) -# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) -# else -# define YY_CAST(Type, Val) ((Type) (Val)) -# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) -# endif -# endif # ifndef YY_NULLPTR # if defined __cplusplus # if 201103L <= __cplusplus @@ -749,7 +740,7 @@ union YYSTYPE char* str; -#line 753 "util/configparser.c" +#line 744 "util/configparser.c" }; typedef union YYSTYPE YYSTYPE; @@ -770,83 +761,36 @@ int yyparse (void); # undef short #endif -/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure - and (if available) are included - so that the code can choose integer types of a good width. */ - -#ifndef __PTRDIFF_MAX__ -# include /* INFRINGES ON USER NAME SPACE */ -# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_STDINT_H -# endif +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; #endif -/* Narrow types that promote to a signed type and that can represent a - signed or unsigned integer of at least N bits. In tables they can - save space and decrease cache pressure. Promoting to a signed type - helps avoid bugs in integer arithmetic. */ - -#ifdef __INT_LEAST8_MAX__ -typedef __INT_LEAST8_TYPE__ yytype_int8; -#elif defined YY_STDINT_H -typedef int_least8_t yytype_int8; +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; #else typedef signed char yytype_int8; #endif -#ifdef __INT_LEAST16_MAX__ -typedef __INT_LEAST16_TYPE__ yytype_int16; -#elif defined YY_STDINT_H -typedef int_least16_t yytype_int16; +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; #else typedef short yytype_int16; #endif -#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ -typedef __UINT_LEAST8_TYPE__ yytype_uint8; -#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ - && UINT_LEAST8_MAX <= INT_MAX) -typedef uint_least8_t yytype_uint8; -#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX -typedef unsigned char yytype_uint8; -#else -typedef short yytype_uint8; -#endif - -#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ -typedef __UINT_LEAST16_TYPE__ yytype_uint16; -#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ - && UINT_LEAST16_MAX <= INT_MAX) -typedef uint_least16_t yytype_uint16; -#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX -typedef unsigned short yytype_uint16; -#else -typedef int yytype_uint16; -#endif - -#ifndef YYPTRDIFF_T -# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ -# define YYPTRDIFF_T __PTRDIFF_TYPE__ -# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ -# elif defined PTRDIFF_MAX -# ifndef ptrdiff_t -# include /* INFRINGES ON USER NAME SPACE */ -# endif -# define YYPTRDIFF_T ptrdiff_t -# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX -# else -# define YYPTRDIFF_T long -# define YYPTRDIFF_MAXIMUM LONG_MAX -# endif -#endif - #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# elif ! defined YYSIZE_T # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -854,19 +798,7 @@ typedef int yytype_uint16; # endif #endif -#define YYSIZE_MAXIMUM \ - YY_CAST (YYPTRDIFF_T, \ - (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ - ? YYPTRDIFF_MAXIMUM \ - : YY_CAST (YYSIZE_T, -1))) - -#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) - -/* Stored state numbers (used for stacks). */ -typedef yytype_int16 yy_state_t; - -/* State numbers in computations. */ -typedef int yy_state_fast_t; +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS @@ -880,20 +812,22 @@ typedef int yy_state_fast_t; # endif #endif -#ifndef YY_ATTRIBUTE_PURE -# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#ifndef YY_ATTRIBUTE +# if (defined __GNUC__ \ + && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ + || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C +# define YY_ATTRIBUTE(Spec) __attribute__(Spec) # else -# define YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE(Spec) /* empty */ # endif #endif +#ifndef YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +#endif + #ifndef YY_ATTRIBUTE_UNUSED -# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) -# else -# define YY_ATTRIBUTE_UNUSED -# endif +# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) #endif /* Suppress unused-variable warnings by "using" E. */ @@ -905,11 +839,11 @@ typedef int yy_state_fast_t; #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value @@ -922,18 +856,6 @@ typedef int yy_state_fast_t; # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif -#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ -# define YY_IGNORE_USELESS_CAST_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") -# define YY_IGNORE_USELESS_CAST_END \ - _Pragma ("GCC diagnostic pop") -#endif -#ifndef YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_END -#endif - #define YY_ASSERT(E) ((void) (0 && (E))) @@ -1012,17 +934,17 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ /* A type that is properly aligned for any stack member. */ union yyalloc { - yy_state_t yyss_alloc; + yytype_int16 yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ - ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 @@ -1035,11 +957,11 @@ union yyalloc # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ - YYPTRDIFF_T yynewbytes; \ + YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / YYSIZEOF (*yyptr); \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (0) @@ -1051,12 +973,12 @@ union yyalloc # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ - YYPTRDIFF_T yyi; \ + YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ @@ -1082,15 +1004,14 @@ union yyalloc #define YYUNDEFTOK 2 #define YYMAXUTOK 554 - /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ - (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex. */ -static const yytype_int16 yytranslate[] = +static const yytype_uint16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1152,7 +1073,7 @@ static const yytype_int16 yytranslate[] = #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_int16 yyrline[] = +static const yytype_uint16 yyrline[] = { 0, 184, 184, 184, 185, 185, 186, 186, 187, 187, 187, 188, 188, 189, 189, 190, 190, 191, 193, 199, @@ -1187,36 +1108,36 @@ static const yytype_int16 yyrline[] = 685, 698, 713, 722, 731, 740, 749, 758, 767, 776, 785, 794, 803, 812, 821, 830, 839, 852, 861, 874, 883, 892, 901, 908, 915, 924, 931, 940, 948, 955, - 962, 970, 979, 986, 1002, 1010, 1018, 1026, 1034, 1043, - 1052, 1066, 1075, 1084, 1093, 1102, 1111, 1120, 1127, 1134, - 1160, 1168, 1175, 1182, 1189, 1196, 1204, 1212, 1220, 1227, - 1238, 1249, 1256, 1265, 1274, 1283, 1290, 1297, 1305, 1313, - 1323, 1333, 1343, 1357, 1365, 1378, 1389, 1397, 1410, 1419, - 1428, 1437, 1447, 1457, 1465, 1478, 1487, 1495, 1504, 1512, - 1525, 1534, 1541, 1551, 1561, 1571, 1581, 1591, 1601, 1611, - 1621, 1628, 1635, 1642, 1651, 1660, 1669, 1678, 1685, 1695, - 1715, 1722, 1740, 1753, 1766, 1775, 1784, 1793, 1802, 1812, - 1822, 1833, 1842, 1851, 1860, 1869, 1878, 1887, 1900, 1913, - 1922, 1929, 1938, 1947, 1956, 1965, 1973, 1986, 1994, 2035, - 2042, 2057, 2067, 2077, 2084, 2091, 2098, 2107, 2115, 2129, - 2150, 2171, 2183, 2195, 2207, 2216, 2237, 2247, 2256, 2264, - 2272, 2285, 2298, 2313, 2328, 2337, 2346, 2352, 2361, 2370, - 2380, 2390, 2403, 2416, 2428, 2442, 2454, 2468, 2483, 2494, - 2504, 2511, 2518, 2527, 2536, 2546, 2556, 2566, 2573, 2580, - 2589, 2598, 2608, 2618, 2625, 2632, 2639, 2647, 2657, 2667, - 2677, 2687, 2726, 2736, 2744, 2752, 2767, 2776, 2781, 2782, - 2783, 2783, 2783, 2784, 2784, 2784, 2785, 2785, 2787, 2797, - 2806, 2813, 2820, 2827, 2834, 2841, 2848, 2853, 2854, 2855, - 2855, 2855, 2856, 2856, 2856, 2857, 2858, 2858, 2859, 2859, - 2860, 2860, 2861, 2862, 2863, 2864, 2865, 2866, 2868, 2877, - 2887, 2894, 2901, 2910, 2917, 2924, 2931, 2938, 2947, 2956, - 2963, 2970, 2980, 2990, 3000, 3010, 3020, 3030, 3035, 3036, - 3037, 3039, 3045, 3050, 3051, 3052, 3054, 3060, 3070, 3077, - 3086, 3094, 3099, 3100, 3102, 3102, 3102, 3103, 3103, 3104, - 3105, 3106, 3107, 3108, 3110, 3120, 3129, 3136, 3145, 3152, - 3161, 3169, 3182, 3190, 3203, 3208, 3209, 3210, 3210, 3211, - 3211, 3211, 3212, 3214, 3226, 3238, 3250, 3265, 3278, 3291, - 3302, 3307, 3308, 3309, 3309, 3311, 3326 + 962, 970, 979, 987, 1003, 1011, 1019, 1027, 1035, 1044, + 1053, 1067, 1076, 1085, 1094, 1103, 1112, 1121, 1128, 1135, + 1161, 1169, 1176, 1183, 1190, 1197, 1205, 1213, 1221, 1228, + 1239, 1250, 1257, 1266, 1275, 1284, 1291, 1298, 1306, 1314, + 1324, 1334, 1344, 1358, 1366, 1379, 1390, 1398, 1411, 1420, + 1429, 1438, 1448, 1458, 1466, 1479, 1488, 1496, 1505, 1513, + 1526, 1535, 1542, 1552, 1562, 1572, 1582, 1592, 1602, 1612, + 1622, 1629, 1636, 1643, 1652, 1661, 1670, 1679, 1686, 1696, + 1716, 1723, 1741, 1754, 1767, 1776, 1785, 1794, 1803, 1813, + 1823, 1834, 1843, 1852, 1861, 1870, 1879, 1888, 1901, 1914, + 1923, 1930, 1939, 1948, 1957, 1966, 1974, 1987, 1995, 2036, + 2043, 2058, 2068, 2078, 2085, 2092, 2099, 2108, 2116, 2130, + 2151, 2172, 2184, 2196, 2208, 2217, 2238, 2248, 2257, 2265, + 2273, 2286, 2299, 2314, 2329, 2338, 2347, 2353, 2362, 2371, + 2381, 2391, 2404, 2417, 2429, 2443, 2455, 2469, 2484, 2495, + 2505, 2512, 2519, 2528, 2537, 2547, 2557, 2567, 2574, 2581, + 2590, 2599, 2609, 2619, 2626, 2633, 2640, 2648, 2658, 2668, + 2678, 2688, 2727, 2737, 2745, 2753, 2768, 2777, 2782, 2783, + 2784, 2784, 2784, 2785, 2785, 2785, 2786, 2786, 2788, 2798, + 2807, 2814, 2821, 2828, 2835, 2842, 2849, 2854, 2855, 2856, + 2856, 2856, 2857, 2857, 2857, 2858, 2859, 2859, 2860, 2860, + 2861, 2861, 2862, 2863, 2864, 2865, 2866, 2867, 2869, 2878, + 2888, 2895, 2902, 2911, 2918, 2925, 2932, 2939, 2948, 2957, + 2964, 2971, 2981, 2991, 3001, 3011, 3021, 3031, 3036, 3037, + 3038, 3040, 3046, 3051, 3052, 3053, 3055, 3061, 3071, 3078, + 3087, 3095, 3100, 3101, 3103, 3103, 3103, 3104, 3104, 3105, + 3106, 3107, 3108, 3109, 3111, 3121, 3130, 3137, 3146, 3153, + 3162, 3170, 3183, 3191, 3204, 3209, 3210, 3211, 3211, 3212, + 3212, 3212, 3213, 3215, 3227, 3239, 3251, 3266, 3279, 3292, + 3303, 3308, 3309, 3310, 3310, 3312, 3327 }; #endif @@ -1472,7 +1393,7 @@ static const char *const yytname[] = # ifdef YYPRINT /* YYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ -static const yytype_int16 yytoknum[] = +static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, @@ -1507,14 +1428,14 @@ static const yytype_int16 yytoknum[] = }; # endif -#define YYPACT_NINF (-288) +#define YYPACT_NINF -288 -#define yypact_value_is_default(Yyn) \ - ((Yyn) == YYPACT_NINF) +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-288))) -#define YYTABLE_NINF (-1) +#define YYTABLE_NINF -1 -#define yytable_value_is_error(Yyn) \ +#define yytable_value_is_error(Yytable_value) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing @@ -1619,7 +1540,7 @@ static const yytype_int16 yypact[] = /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ -static const yytype_int16 yydefact[] = +static const yytype_uint16 yydefact[] = { 2, 0, 1, 18, 19, 224, 234, 507, 567, 526, 243, 581, 604, 253, 620, 269, 572, 3, 17, 21, @@ -1795,7 +1716,7 @@ static const yytype_int16 yydefgoto[] = /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_int16 yytable[] = +static const yytype_uint16 yytable[] = { 2, 493, 478, 450, 582, 451, 452, 465, 622, 623, 585, 3, 4, 627, 628, 466, 467, 609, 610, 611, @@ -1933,7 +1854,7 @@ static const yytype_int16 yycheck[] = /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ -static const yytype_int16 yystos[] = +static const yytype_uint16 yystos[] = { 0, 301, 0, 11, 12, 46, 52, 96, 112, 159, 218, 236, 253, 262, 286, 290, 296, 302, 303, 304, @@ -2031,7 +1952,7 @@ static const yytype_int16 yystos[] = }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_int16 yyr1[] = +static const yytype_uint16 yyr1[] = { 0, 300, 301, 301, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 303, 304, @@ -2099,7 +2020,7 @@ static const yytype_int16 yyr1[] = }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_int8 yyr2[] = +static const yytype_uint8 yyr2[] = { 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, @@ -2249,9 +2170,7 @@ yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) if (yytype < YYNTOKENS) YYPRINT (yyo, yytoknum[yytype], *yyvaluep); # endif - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YYUSE (yytype); - YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -2275,7 +2194,7 @@ yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) `------------------------------------------------------------------*/ static void -yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -2298,19 +2217,19 @@ do { \ `------------------------------------------------*/ static void -yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule) +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) { - int yylno = yyrline[yyrule]; + unsigned long yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, - yystos[+yyssp[yyi + 1 - yynrhs]], + yystos[yyssp[yyi + 1 - yynrhs]], &yyvsp[(yyi + 1) - (yynrhs)] ); YYFPRINTF (stderr, "\n"); @@ -2355,13 +2274,13 @@ int yydebug; # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H -# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S))) +# define yystrlen strlen # else /* Return the length of YYSTR. */ -static YYPTRDIFF_T +static YYSIZE_T yystrlen (const char *yystr) { - YYPTRDIFF_T yylen; + YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; @@ -2397,12 +2316,12 @@ yystpcpy (char *yydest, const char *yysrc) backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ -static YYPTRDIFF_T +static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { - YYPTRDIFF_T yyn = 0; + YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) @@ -2433,10 +2352,10 @@ yytnamerr (char *yyres, const char *yystr) do_not_strip_quotes: ; } - if (yyres) - return yystpcpy (yyres, yystr) - yyres; - else + if (! yyres) return yystrlen (yystr); + + return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); } # endif @@ -2449,19 +2368,19 @@ yytnamerr (char *yyres, const char *yystr) *YYMSG_ALLOC to the required number of bytes. Return 2 if the required number of bytes is too large to store. */ static int -yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, - yy_state_t *yyssp, int yytoken) +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) { + YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); + YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat: reported tokens (one for the "unexpected", - one per "expected"). */ + /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Actual size of YYARG. */ + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ int yycount = 0; - /* Cumulated lengths of YYARG. */ - YYPTRDIFF_T yysize = 0; /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then @@ -2488,9 +2407,7 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, */ if (yytoken != YYEMPTY) { - int yyn = yypact[+*yyssp]; - YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - yysize = yysize0; + int yyn = yypact[*yyssp]; yyarg[yycount++] = yytname[yytoken]; if (!yypact_value_is_default (yyn)) { @@ -2515,8 +2432,7 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, } yyarg[yycount++] = yytname[yyx]; { - YYPTRDIFF_T yysize1 - = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) yysize = yysize1; else @@ -2543,9 +2459,7 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, } { - /* Don't count the "%s"s in the final size, but reserve room for - the terminator. */ - YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1; + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) yysize = yysize1; else @@ -2575,8 +2489,8 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, } else { - ++yyp; - ++yyformat; + yyp++; + yyformat++; } } return 0; @@ -2619,7 +2533,7 @@ int yynerrs; int yyparse (void) { - yy_state_fast_t yystate; + int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; @@ -2631,16 +2545,16 @@ yyparse (void) to reallocate them elsewhere. */ /* The state stack. */ - yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss; - yy_state_t *yyssp; + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; - YYPTRDIFF_T yystacksize; + YYSIZE_T yystacksize; int yyn; int yyresult; @@ -2654,7 +2568,7 @@ yyparse (void) /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; - YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) @@ -2686,14 +2600,12 @@ yynewstate: /*--------------------------------------------------------------------. -| yysetstate -- set current state (the top of the stack) to yystate. | +| yynewstate -- set current state (the top of the stack) to yystate. | `--------------------------------------------------------------------*/ yysetstate: YYDPRINTF ((stderr, "Entering state %d\n", yystate)); YY_ASSERT (0 <= yystate && yystate < YYNSTATES); - YY_IGNORE_USELESS_CAST_BEGIN - *yyssp = YY_CAST (yy_state_t, yystate); - YY_IGNORE_USELESS_CAST_END + *yyssp = (yytype_int16) yystate; if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE @@ -2701,23 +2613,23 @@ yysetstate: #else { /* Get the current used size of the three stacks, in elements. */ - YYPTRDIFF_T yysize = yyssp - yyss + 1; + YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); # if defined yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ - yy_state_t *yyss1 = yyss; YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * YYSIZEOF (*yyssp), - &yyvs1, yysize * YYSIZEOF (*yyvsp), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; @@ -2731,10 +2643,9 @@ yysetstate: yystacksize = YYMAXDEPTH; { - yy_state_t *yyss1 = yyss; + yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = - YY_CAST (union yyalloc *, - YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); @@ -2748,10 +2659,8 @@ yysetstate: yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - YY_IGNORE_USELESS_CAST_BEGIN - YYDPRINTF ((stderr, "Stack size increased to %ld\n", - YY_CAST (long, yystacksize))); - YY_IGNORE_USELESS_CAST_END + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; @@ -2817,13 +2726,14 @@ yybackup: /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END - - /* Discard the shifted token. */ - yychar = YYEMPTY; goto yynewstate; @@ -2860,23 +2770,23 @@ yyreduce: { case 18: #line 194 "./util/configparser.y" - { + { OUTYY(("\nP(force-toplevel)\n")); } -#line 2867 "util/configparser.c" +#line 2777 "util/configparser.c" break; case 19: #line 200 "./util/configparser.y" - { + { OUTYY(("\nP(server:)\n")); } -#line 2875 "util/configparser.c" +#line 2785 "util/configparser.c" break; case 224: #line 298 "./util/configparser.y" - { + { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -2886,12 +2796,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2890 "util/configparser.c" +#line 2800 "util/configparser.c" break; case 234: #line 315 "./util/configparser.y" - { + { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -2901,12 +2811,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2905 "util/configparser.c" +#line 2815 "util/configparser.c" break; case 243: #line 332 "./util/configparser.y" - { + { struct config_view* s; OUTYY(("\nP(view:)\n")); s = (struct config_view*)calloc(1, sizeof(struct config_view)); @@ -2918,12 +2828,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2922 "util/configparser.c" +#line 2832 "util/configparser.c" break; case 253: #line 351 "./util/configparser.y" - { + { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -2938,12 +2848,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2942 "util/configparser.c" +#line 2852 "util/configparser.c" break; case 264: #line 375 "./util/configparser.y" - { + { uint8_t* bitlist; size_t len = 0; OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str))); @@ -2959,12 +2869,12 @@ yyreduce: } } -#line 2963 "util/configparser.c" +#line 2873 "util/configparser.c" break; case 265: #line 394 "./util/configparser.y" - { + { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 && strcmp((yyvsp[0].str), "passthru")!=0 && strcmp((yyvsp[0].str), "drop")!=0 && @@ -2978,44 +2888,44 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2982 "util/configparser.c" +#line 2892 "util/configparser.c" break; case 266: #line 411 "./util/configparser.y" - { + { OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_cname); cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); } -#line 2992 "util/configparser.c" +#line 2902 "util/configparser.c" break; case 267: #line 419 "./util/configparser.y" - { + { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3004 "util/configparser.c" +#line 2914 "util/configparser.c" break; case 268: #line 429 "./util/configparser.y" - { + { OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_log_name); cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); } -#line 3014 "util/configparser.c" +#line 2924 "util/configparser.c" break; case 269: #line 437 "./util/configparser.y" - { + { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -3030,36 +2940,36 @@ yyreduce: } else yyerror("out of memory"); } -#line 3034 "util/configparser.c" +#line 2944 "util/configparser.c" break; case 282: #line 460 "./util/configparser.y" - { + { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3046 "util/configparser.c" +#line 2956 "util/configparser.c" break; case 283: #line 469 "./util/configparser.y" - { + { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3058 "util/configparser.c" +#line 2968 "util/configparser.c" break; case 284: #line 478 "./util/configparser.y" - { + { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) cfg_parser->cfg->stat_interval = 0; @@ -3068,48 +2978,48 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3072 "util/configparser.c" +#line 2982 "util/configparser.c" break; case 285: #line 489 "./util/configparser.y" - { + { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3084 "util/configparser.c" +#line 2994 "util/configparser.c" break; case 286: #line 498 "./util/configparser.y" - { + { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3096 "util/configparser.c" +#line 3006 "util/configparser.c" break; case 287: #line 507 "./util/configparser.y" - { + { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3108 "util/configparser.c" +#line 3018 "util/configparser.c" break; case 288: #line 516 "./util/configparser.y" - { + { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) cfg_parser->cfg->shm_key = 0; @@ -3118,24 +3028,24 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3122 "util/configparser.c" +#line 3032 "util/configparser.c" break; case 289: #line 527 "./util/configparser.y" - { + { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3134 "util/configparser.c" +#line 3044 "util/configparser.c" break; case 290: #line 536 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[0].str))) @@ -3145,12 +3055,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3149 "util/configparser.c" +#line 3059 "util/configparser.c" break; case 291: #line 548 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone, @@ -3161,12 +3071,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3165 "util/configparser.c" +#line 3075 "util/configparser.c" break; case 292: #line 562 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3179,12 +3089,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3183 "util/configparser.c" +#line 3093 "util/configparser.c" break; case 293: #line 577 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); OUTYY(("P(Deprecated option, ignoring)\n")); @@ -3193,12 +3103,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3197 "util/configparser.c" +#line 3107 "util/configparser.c" break; case 294: #line 588 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3213,12 +3123,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3217 "util/configparser.c" +#line 3127 "util/configparser.c" break; case 295: #line 605 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3233,12 +3143,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3237 "util/configparser.c" +#line 3147 "util/configparser.c" break; case 296: #line 622 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3253,12 +3163,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3257 "util/configparser.c" +#line 3167 "util/configparser.c" break; case 297: #line 639 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3273,12 +3183,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3277 "util/configparser.c" +#line 3187 "util/configparser.c" break; case 298: #line 656 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3291,12 +3201,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3295 "util/configparser.c" +#line 3205 "util/configparser.c" break; case 299: #line 671 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3309,12 +3219,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3313 "util/configparser.c" +#line 3223 "util/configparser.c" break; case 300: #line 686 "./util/configparser.y" - { + { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) cfg_parser->cfg->ifs = calloc(1, sizeof(char*)); @@ -3325,12 +3235,12 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3329 "util/configparser.c" +#line 3239 "util/configparser.c" break; case 301: #line 699 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*)); @@ -3343,180 +3253,180 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3347 "util/configparser.c" +#line 3257 "util/configparser.c" break; case 302: #line 714 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3359 "util/configparser.c" +#line 3269 "util/configparser.c" break; case 303: #line 723 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, cfg_parser->cfg->outgoing_avail_ports, 65536)) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3371 "util/configparser.c" +#line 3281 "util/configparser.c" break; case 304: #line 732 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, cfg_parser->cfg->outgoing_avail_ports, 65536)) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3383 "util/configparser.c" +#line 3293 "util/configparser.c" break; case 305: #line 741 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3395 "util/configparser.c" +#line 3305 "util/configparser.c" break; case 306: #line 750 "./util/configparser.y" - { + { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3407 "util/configparser.c" +#line 3317 "util/configparser.c" break; case 307: #line 759 "./util/configparser.y" - { + { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3419 "util/configparser.c" +#line 3329 "util/configparser.c" break; case 308: #line 768 "./util/configparser.y" - { + { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3431 "util/configparser.c" +#line 3341 "util/configparser.c" break; case 309: #line 777 "./util/configparser.y" - { + { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3443 "util/configparser.c" +#line 3353 "util/configparser.c" break; case 310: #line 786 "./util/configparser.y" - { + { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3455 "util/configparser.c" +#line 3365 "util/configparser.c" break; case 311: #line 795 "./util/configparser.y" - { + { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3467 "util/configparser.c" +#line 3377 "util/configparser.c" break; case 312: #line 804 "./util/configparser.y" - { + { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3479 "util/configparser.c" +#line 3389 "util/configparser.c" break; case 313: #line 813 "./util/configparser.y" - { + { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3491 "util/configparser.c" +#line 3401 "util/configparser.c" break; case 314: #line 822 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3503 "util/configparser.c" +#line 3413 "util/configparser.c" break; case 315: #line 831 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3515 "util/configparser.c" +#line 3425 "util/configparser.c" break; case 316: #line 840 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); @@ -3527,24 +3437,24 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3531 "util/configparser.c" +#line 3441 "util/configparser.c" break; case 317: #line 853 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3543 "util/configparser.c" +#line 3453 "util/configparser.c" break; case 318: #line 862 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); @@ -3555,167 +3465,168 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3559 "util/configparser.c" +#line 3469 "util/configparser.c" break; case 319: #line 875 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3571 "util/configparser.c" +#line 3481 "util/configparser.c" break; case 320: #line 884 "./util/configparser.y" - { + { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3583 "util/configparser.c" +#line 3493 "util/configparser.c" break; case 321: #line 893 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3595 "util/configparser.c" +#line 3505 "util/configparser.c" break; case 322: #line 902 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 3605 "util/configparser.c" +#line 3515 "util/configparser.c" break; case 323: #line 909 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 3615 "util/configparser.c" +#line 3525 "util/configparser.c" break; case 324: #line 916 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3627 "util/configparser.c" +#line 3537 "util/configparser.c" break; case 325: #line 925 "./util/configparser.y" - { + { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 3637 "util/configparser.c" +#line 3547 "util/configparser.c" break; case 326: #line 932 "./util/configparser.y" - { + { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3649 "util/configparser.c" +#line 3559 "util/configparser.c" break; case 327: #line 941 "./util/configparser.y" - { + { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3660 "util/configparser.c" +#line 3570 "util/configparser.c" break; case 328: #line 949 "./util/configparser.y" - { + { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 3670 "util/configparser.c" +#line 3580 "util/configparser.c" break; case 329: #line 956 "./util/configparser.y" - { + { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 3680 "util/configparser.c" +#line 3590 "util/configparser.c" break; case 330: #line 963 "./util/configparser.y" - { + { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3691 "util/configparser.c" +#line 3601 "util/configparser.c" break; case 331: #line 971 "./util/configparser.y" - { + { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3703 "util/configparser.c" +#line 3613 "util/configparser.c" break; case 332: #line 980 "./util/configparser.y" - { + { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } -#line 3714 "util/configparser.c" +#line 3625 "util/configparser.c" break; case 333: -#line 987 "./util/configparser.y" - { +#line 988 "./util/configparser.y" + { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_endpoint); if((yyvsp[0].str) && (yyvsp[0].str)[0] != '/') { @@ -3730,84 +3641,84 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 3734 "util/configparser.c" +#line 3645 "util/configparser.c" break; case 334: -#line 1003 "./util/configparser.y" - { +#line 1004 "./util/configparser.y" + { OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3746 "util/configparser.c" +#line 3657 "util/configparser.c" break; case 335: -#line 1011 "./util/configparser.y" - { +#line 1012 "./util/configparser.y" + { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->http_query_buffer_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3758 "util/configparser.c" +#line 3669 "util/configparser.c" break; case 336: -#line 1019 "./util/configparser.y" - { +#line 1020 "./util/configparser.y" + { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->http_response_buffer_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3770 "util/configparser.c" +#line 3681 "util/configparser.c" break; case 337: -#line 1027 "./util/configparser.y" - { +#line 1028 "./util/configparser.y" + { OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3782 "util/configparser.c" +#line 3693 "util/configparser.c" break; case 338: -#line 1035 "./util/configparser.y" - { +#line 1036 "./util/configparser.y" + { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3794 "util/configparser.c" +#line 3705 "util/configparser.c" break; case 339: -#line 1044 "./util/configparser.y" - { +#line 1045 "./util/configparser.y" + { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3806 "util/configparser.c" +#line 3717 "util/configparser.c" break; case 340: -#line 1053 "./util/configparser.y" - { +#line 1054 "./util/configparser.y" + { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -3819,104 +3730,104 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3823 "util/configparser.c" +#line 3734 "util/configparser.c" break; case 341: -#line 1067 "./util/configparser.y" - { +#line 1068 "./util/configparser.y" + { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3835 "util/configparser.c" +#line 3746 "util/configparser.c" break; case 342: -#line 1076 "./util/configparser.y" - { +#line 1077 "./util/configparser.y" + { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3847 "util/configparser.c" +#line 3758 "util/configparser.c" break; case 343: -#line 1085 "./util/configparser.y" - { +#line 1086 "./util/configparser.y" + { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3859 "util/configparser.c" +#line 3770 "util/configparser.c" break; case 344: -#line 1094 "./util/configparser.y" - { +#line 1095 "./util/configparser.y" + { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3871 "util/configparser.c" +#line 3782 "util/configparser.c" break; case 345: -#line 1103 "./util/configparser.y" - { +#line 1104 "./util/configparser.y" + { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3883 "util/configparser.c" +#line 3794 "util/configparser.c" break; case 346: -#line 1112 "./util/configparser.y" - { +#line 1113 "./util/configparser.y" + { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3895 "util/configparser.c" +#line 3806 "util/configparser.c" break; case 347: -#line 1121 "./util/configparser.y" - { +#line 1122 "./util/configparser.y" + { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 3905 "util/configparser.c" +#line 3816 "util/configparser.c" break; case 348: -#line 1128 "./util/configparser.y" - { +#line 1129 "./util/configparser.y" + { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 3915 "util/configparser.c" +#line 3826 "util/configparser.c" break; case 349: -#line 1135 "./util/configparser.y" - { +#line 1136 "./util/configparser.y" + { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); cfg_parser->cfg->directory = (yyvsp[0].str); @@ -3940,106 +3851,106 @@ yyreduce: } } } -#line 3944 "util/configparser.c" +#line 3855 "util/configparser.c" break; case 350: -#line 1161 "./util/configparser.y" - { +#line 1162 "./util/configparser.y" + { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->logfile); cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 3955 "util/configparser.c" +#line 3866 "util/configparser.c" break; case 351: -#line 1169 "./util/configparser.y" - { +#line 1170 "./util/configparser.y" + { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 3965 "util/configparser.c" +#line 3876 "util/configparser.c" break; case 352: -#line 1176 "./util/configparser.y" - { +#line 1177 "./util/configparser.y" + { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3975 "util/configparser.c" +#line 3886 "util/configparser.c" break; case 353: -#line 1183 "./util/configparser.y" - { +#line 1184 "./util/configparser.y" + { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 3985 "util/configparser.c" +#line 3896 "util/configparser.c" break; case 354: -#line 1190 "./util/configparser.y" - { +#line 1191 "./util/configparser.y" + { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 3995 "util/configparser.c" +#line 3906 "util/configparser.c" break; case 355: -#line 1197 "./util/configparser.y" - { +#line 1198 "./util/configparser.y" + { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4006 "util/configparser.c" +#line 3917 "util/configparser.c" break; case 356: -#line 1205 "./util/configparser.y" - { +#line 1206 "./util/configparser.y" + { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4017 "util/configparser.c" +#line 3928 "util/configparser.c" break; case 357: -#line 1213 "./util/configparser.y" - { +#line 1214 "./util/configparser.y" + { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4028 "util/configparser.c" +#line 3939 "util/configparser.c" break; case 358: -#line 1221 "./util/configparser.y" - { +#line 1222 "./util/configparser.y" + { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4038 "util/configparser.c" +#line 3949 "util/configparser.c" break; case 359: -#line 1228 "./util/configparser.y" - { +#line 1229 "./util/configparser.y" + { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4048,12 +3959,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4052 "util/configparser.c" +#line 3963 "util/configparser.c" break; case 360: -#line 1239 "./util/configparser.y" - { +#line 1240 "./util/configparser.y" + { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4062,99 +3973,99 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4066 "util/configparser.c" +#line 3977 "util/configparser.c" break; case 361: -#line 1250 "./util/configparser.y" - { +#line 1251 "./util/configparser.y" + { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4076 "util/configparser.c" +#line 3987 "util/configparser.c" break; case 362: -#line 1257 "./util/configparser.y" - { +#line 1258 "./util/configparser.y" + { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4088 "util/configparser.c" +#line 3999 "util/configparser.c" break; case 363: -#line 1266 "./util/configparser.y" - { +#line 1267 "./util/configparser.y" + { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4100 "util/configparser.c" +#line 4011 "util/configparser.c" break; case 364: -#line 1275 "./util/configparser.y" - { +#line 1276 "./util/configparser.y" + { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4112 "util/configparser.c" +#line 4023 "util/configparser.c" break; case 365: -#line 1284 "./util/configparser.y" - { +#line 1285 "./util/configparser.y" + { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 4122 "util/configparser.c" +#line 4033 "util/configparser.c" break; case 366: -#line 1291 "./util/configparser.y" - { +#line 1292 "./util/configparser.y" + { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 4132 "util/configparser.c" +#line 4043 "util/configparser.c" break; case 367: -#line 1298 "./util/configparser.y" - { +#line 1299 "./util/configparser.y" + { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4143 "util/configparser.c" +#line 4054 "util/configparser.c" break; case 368: -#line 1306 "./util/configparser.y" - { +#line 1307 "./util/configparser.y" + { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4154 "util/configparser.c" +#line 4065 "util/configparser.c" break; case 369: -#line 1314 "./util/configparser.y" +#line 1315 "./util/configparser.y" { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4163,11 +4074,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4167 "util/configparser.c" +#line 4078 "util/configparser.c" break; case 370: -#line 1324 "./util/configparser.y" +#line 1325 "./util/configparser.y" { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4176,11 +4087,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4180 "util/configparser.c" +#line 4091 "util/configparser.c" break; case 371: -#line 1334 "./util/configparser.y" +#line 1335 "./util/configparser.y" { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4189,12 +4100,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4193 "util/configparser.c" +#line 4104 "util/configparser.c" break; case 372: -#line 1344 "./util/configparser.y" - { +#line 1345 "./util/configparser.y" + { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); @@ -4206,23 +4117,23 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4210 "util/configparser.c" +#line 4121 "util/configparser.c" break; case 373: -#line 1358 "./util/configparser.y" - { +#line 1359 "./util/configparser.y" + { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4221 "util/configparser.c" +#line 4132 "util/configparser.c" break; case 374: -#line 1366 "./util/configparser.y" - { +#line 1367 "./util/configparser.y" + { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4233,12 +4144,12 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4237 "util/configparser.c" +#line 4148 "util/configparser.c" break; case 375: -#line 1379 "./util/configparser.y" - { +#line 1380 "./util/configparser.y" + { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4247,23 +4158,23 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4251 "util/configparser.c" +#line 4162 "util/configparser.c" break; case 376: -#line 1390 "./util/configparser.y" - { +#line 1391 "./util/configparser.y" + { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4262 "util/configparser.c" +#line 4173 "util/configparser.c" break; case 377: -#line 1398 "./util/configparser.y" - { +#line 1399 "./util/configparser.y" + { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4274,48 +4185,48 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4278 "util/configparser.c" +#line 4189 "util/configparser.c" break; case 378: -#line 1411 "./util/configparser.y" - { +#line 1412 "./util/configparser.y" + { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4290 "util/configparser.c" +#line 4201 "util/configparser.c" break; case 379: -#line 1420 "./util/configparser.y" - { +#line 1421 "./util/configparser.y" + { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4302 "util/configparser.c" +#line 4213 "util/configparser.c" break; case 380: -#line 1429 "./util/configparser.y" - { +#line 1430 "./util/configparser.y" + { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4314 "util/configparser.c" +#line 4225 "util/configparser.c" break; case 381: -#line 1438 "./util/configparser.y" - { +#line 1439 "./util/configparser.y" + { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4323,12 +4234,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4327 "util/configparser.c" +#line 4238 "util/configparser.c" break; case 382: -#line 1448 "./util/configparser.y" - { +#line 1449 "./util/configparser.y" + { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4336,23 +4247,23 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4340 "util/configparser.c" +#line 4251 "util/configparser.c" break; case 383: -#line 1458 "./util/configparser.y" - { +#line 1459 "./util/configparser.y" + { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4351 "util/configparser.c" +#line 4262 "util/configparser.c" break; case 384: -#line 1466 "./util/configparser.y" - { +#line 1467 "./util/configparser.y" + { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4363,58 +4274,58 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4367 "util/configparser.c" +#line 4278 "util/configparser.c" break; case 385: -#line 1479 "./util/configparser.y" - { +#line 1480 "./util/configparser.y" + { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4379 "util/configparser.c" +#line 4290 "util/configparser.c" break; case 386: -#line 1488 "./util/configparser.y" - { +#line 1489 "./util/configparser.y" + { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4390 "util/configparser.c" +#line 4301 "util/configparser.c" break; case 387: -#line 1496 "./util/configparser.y" - { +#line 1497 "./util/configparser.y" + { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4402 "util/configparser.c" +#line 4313 "util/configparser.c" break; case 388: -#line 1505 "./util/configparser.y" - { +#line 1506 "./util/configparser.y" + { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4413 "util/configparser.c" +#line 4324 "util/configparser.c" break; case 389: -#line 1513 "./util/configparser.y" - { +#line 1514 "./util/configparser.y" + { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4425,34 +4336,34 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4429 "util/configparser.c" +#line 4340 "util/configparser.c" break; case 390: -#line 1526 "./util/configparser.y" - { +#line 1527 "./util/configparser.y" + { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4441 "util/configparser.c" +#line 4352 "util/configparser.c" break; case 391: -#line 1535 "./util/configparser.y" - { +#line 1536 "./util/configparser.y" + { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 4451 "util/configparser.c" +#line 4362 "util/configparser.c" break; case 392: -#line 1542 "./util/configparser.y" - { +#line 1543 "./util/configparser.y" + { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4460,12 +4371,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4464 "util/configparser.c" +#line 4375 "util/configparser.c" break; case 393: -#line 1552 "./util/configparser.y" - { +#line 1553 "./util/configparser.y" + { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4473,12 +4384,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4477 "util/configparser.c" +#line 4388 "util/configparser.c" break; case 394: -#line 1562 "./util/configparser.y" - { +#line 1563 "./util/configparser.y" + { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4486,12 +4397,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4490 "util/configparser.c" +#line 4401 "util/configparser.c" break; case 395: -#line 1572 "./util/configparser.y" - { +#line 1573 "./util/configparser.y" + { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4499,12 +4410,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4503 "util/configparser.c" +#line 4414 "util/configparser.c" break; case 396: -#line 1582 "./util/configparser.y" - { +#line 1583 "./util/configparser.y" + { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4512,12 +4423,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4516 "util/configparser.c" +#line 4427 "util/configparser.c" break; case 397: -#line 1592 "./util/configparser.y" - { +#line 1593 "./util/configparser.y" + { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4525,12 +4436,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4529 "util/configparser.c" +#line 4440 "util/configparser.c" break; case 398: -#line 1602 "./util/configparser.y" - { +#line 1603 "./util/configparser.y" + { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4538,12 +4449,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4542 "util/configparser.c" +#line 4453 "util/configparser.c" break; case 399: -#line 1612 "./util/configparser.y" - { +#line 1613 "./util/configparser.y" + { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4551,100 +4462,100 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4555 "util/configparser.c" +#line 4466 "util/configparser.c" break; case 400: -#line 1622 "./util/configparser.y" - { +#line 1623 "./util/configparser.y" + { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4565 "util/configparser.c" +#line 4476 "util/configparser.c" break; case 401: -#line 1629 "./util/configparser.y" - { +#line 1630 "./util/configparser.y" + { OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4575 "util/configparser.c" +#line 4486 "util/configparser.c" break; case 402: -#line 1636 "./util/configparser.y" - { +#line 1637 "./util/configparser.y" + { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4585 "util/configparser.c" +#line 4496 "util/configparser.c" break; case 403: -#line 1643 "./util/configparser.y" - { +#line 1644 "./util/configparser.y" + { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4597 "util/configparser.c" +#line 4508 "util/configparser.c" break; case 404: -#line 1652 "./util/configparser.y" - { +#line 1653 "./util/configparser.y" + { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4609 "util/configparser.c" +#line 4520 "util/configparser.c" break; case 405: -#line 1661 "./util/configparser.y" - { +#line 1662 "./util/configparser.y" + { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4621 "util/configparser.c" +#line 4532 "util/configparser.c" break; case 406: -#line 1670 "./util/configparser.y" - { +#line 1671 "./util/configparser.y" + { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4633 "util/configparser.c" +#line 4544 "util/configparser.c" break; case 407: -#line 1679 "./util/configparser.y" - { +#line 1680 "./util/configparser.y" + { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4643 "util/configparser.c" +#line 4554 "util/configparser.c" break; case 408: -#line 1686 "./util/configparser.y" - { +#line 1687 "./util/configparser.y" + { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4652,12 +4563,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4656 "util/configparser.c" +#line 4567 "util/configparser.c" break; case 409: -#line 1696 "./util/configparser.y" - { +#line 1697 "./util/configparser.y" + { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "deny_non_local")!=0 && @@ -4675,22 +4586,22 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4679 "util/configparser.c" +#line 4590 "util/configparser.c" break; case 410: -#line 1716 "./util/configparser.y" - { +#line 1717 "./util/configparser.y" + { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 4689 "util/configparser.c" +#line 4600 "util/configparser.c" break; case 411: -#line 1723 "./util/configparser.y" - { +#line 1724 "./util/configparser.y" + { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { cfg_parser->cfg->val_date_override = 0; @@ -4706,12 +4617,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4710 "util/configparser.c" +#line 4621 "util/configparser.c" break; case 412: -#line 1741 "./util/configparser.y" - { +#line 1742 "./util/configparser.y" + { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { cfg_parser->cfg->val_sig_skew_min = 0; @@ -4722,12 +4633,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4726 "util/configparser.c" +#line 4637 "util/configparser.c" break; case 413: -#line 1754 "./util/configparser.y" - { +#line 1755 "./util/configparser.y" + { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { cfg_parser->cfg->val_sig_skew_max = 0; @@ -4738,60 +4649,60 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4742 "util/configparser.c" +#line 4653 "util/configparser.c" break; case 414: -#line 1767 "./util/configparser.y" - { +#line 1768 "./util/configparser.y" + { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4754 "util/configparser.c" +#line 4665 "util/configparser.c" break; case 415: -#line 1776 "./util/configparser.y" - { +#line 1777 "./util/configparser.y" + { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4766 "util/configparser.c" +#line 4677 "util/configparser.c" break; case 416: -#line 1785 "./util/configparser.y" - { +#line 1786 "./util/configparser.y" + { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4778 "util/configparser.c" +#line 4689 "util/configparser.c" break; case 417: -#line 1794 "./util/configparser.y" - { +#line 1795 "./util/configparser.y" + { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4790 "util/configparser.c" +#line 4701 "util/configparser.c" break; case 418: -#line 1803 "./util/configparser.y" - { +#line 1804 "./util/configparser.y" + { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4799,12 +4710,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4803 "util/configparser.c" +#line 4714 "util/configparser.c" break; case 419: -#line 1813 "./util/configparser.y" - { +#line 1814 "./util/configparser.y" + { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4812,12 +4723,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4816 "util/configparser.c" +#line 4727 "util/configparser.c" break; case 420: -#line 1823 "./util/configparser.y" - { +#line 1824 "./util/configparser.y" + { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4826,84 +4737,84 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4830 "util/configparser.c" +#line 4741 "util/configparser.c" break; case 421: -#line 1834 "./util/configparser.y" - { +#line 1835 "./util/configparser.y" + { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4842 "util/configparser.c" +#line 4753 "util/configparser.c" break; case 422: -#line 1843 "./util/configparser.y" - { +#line 1844 "./util/configparser.y" + { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4854 "util/configparser.c" +#line 4765 "util/configparser.c" break; case 423: -#line 1852 "./util/configparser.y" - { +#line 1853 "./util/configparser.y" + { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4866 "util/configparser.c" +#line 4777 "util/configparser.c" break; case 424: -#line 1861 "./util/configparser.y" - { +#line 1862 "./util/configparser.y" + { OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4878 "util/configparser.c" +#line 4789 "util/configparser.c" break; case 425: -#line 1870 "./util/configparser.y" - { +#line 1871 "./util/configparser.y" + { OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4890 "util/configparser.c" +#line 4801 "util/configparser.c" break; case 426: -#line 1879 "./util/configparser.y" - { +#line 1880 "./util/configparser.y" + { OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4902 "util/configparser.c" +#line 4813 "util/configparser.c" break; case 427: -#line 1888 "./util/configparser.y" - { +#line 1889 "./util/configparser.y" + { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4914,12 +4825,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4918 "util/configparser.c" +#line 4829 "util/configparser.c" break; case 428: -#line 1901 "./util/configparser.y" - { +#line 1902 "./util/configparser.y" + { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4930,70 +4841,70 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4934 "util/configparser.c" +#line 4845 "util/configparser.c" break; case 429: -#line 1914 "./util/configparser.y" - { +#line 1915 "./util/configparser.y" + { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4946 "util/configparser.c" +#line 4857 "util/configparser.c" break; case 430: -#line 1923 "./util/configparser.y" - { +#line 1924 "./util/configparser.y" + { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 4956 "util/configparser.c" +#line 4867 "util/configparser.c" break; case 431: -#line 1930 "./util/configparser.y" - { +#line 1931 "./util/configparser.y" + { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4968 "util/configparser.c" +#line 4879 "util/configparser.c" break; case 432: -#line 1939 "./util/configparser.y" - { +#line 1940 "./util/configparser.y" + { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4980 "util/configparser.c" +#line 4891 "util/configparser.c" break; case 433: -#line 1948 "./util/configparser.y" - { +#line 1949 "./util/configparser.y" + { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4992 "util/configparser.c" +#line 4903 "util/configparser.c" break; case 434: -#line 1957 "./util/configparser.y" - { +#line 1958 "./util/configparser.y" + { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5001,23 +4912,23 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5005 "util/configparser.c" +#line 4916 "util/configparser.c" break; case 435: -#line 1966 "./util/configparser.y" - { +#line 1967 "./util/configparser.y" + { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5016 "util/configparser.c" +#line 4927 "util/configparser.c" break; case 436: -#line 1974 "./util/configparser.y" - { +#line 1975 "./util/configparser.y" + { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -5028,23 +4939,23 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5032 "util/configparser.c" +#line 4943 "util/configparser.c" break; case 437: -#line 1987 "./util/configparser.y" - { +#line 1988 "./util/configparser.y" + { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5043 "util/configparser.c" +#line 4954 "util/configparser.c" break; case 438: -#line 1995 "./util/configparser.y" - { +#line 1996 "./util/configparser.y" + { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && @@ -5083,22 +4994,22 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5087 "util/configparser.c" +#line 4998 "util/configparser.c" break; case 439: -#line 2036 "./util/configparser.y" - { +#line 2037 "./util/configparser.y" + { OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 5097 "util/configparser.c" +#line 5008 "util/configparser.c" break; case 440: -#line 2043 "./util/configparser.y" - { +#line 2044 "./util/configparser.y" + { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); ptr = cfg_ptr_reverse((yyvsp[0].str)); @@ -5111,12 +5022,12 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5115 "util/configparser.c" +#line 5026 "util/configparser.c" break; case 441: -#line 2058 "./util/configparser.y" - { +#line 2059 "./util/configparser.y" + { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5124,12 +5035,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5128 "util/configparser.c" +#line 5039 "util/configparser.c" break; case 442: -#line 2068 "./util/configparser.y" - { +#line 2069 "./util/configparser.y" + { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5137,65 +5048,65 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5141 "util/configparser.c" +#line 5052 "util/configparser.c" break; case 443: -#line 2078 "./util/configparser.y" - { +#line 2079 "./util/configparser.y" + { OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5151 "util/configparser.c" +#line 5062 "util/configparser.c" break; case 444: -#line 2085 "./util/configparser.y" - { +#line 2086 "./util/configparser.y" + { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5161 "util/configparser.c" +#line 5072 "util/configparser.c" break; case 445: -#line 2092 "./util/configparser.y" - { +#line 2093 "./util/configparser.y" + { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 5171 "util/configparser.c" +#line 5082 "util/configparser.c" break; case 446: -#line 2099 "./util/configparser.y" - { +#line 2100 "./util/configparser.y" + { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5183 "util/configparser.c" +#line 5094 "util/configparser.c" break; case 447: -#line 2108 "./util/configparser.y" - { +#line 2109 "./util/configparser.y" + { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 5194 "util/configparser.c" +#line 5105 "util/configparser.c" break; case 448: -#line 2116 "./util/configparser.y" - { +#line 2117 "./util/configparser.y" + { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); while((p=strsep(&s, " \t\n")) != NULL) { @@ -5207,12 +5118,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5211 "util/configparser.c" +#line 5122 "util/configparser.c" break; case 449: -#line 2130 "./util/configparser.y" - { +#line 2131 "./util/configparser.y" + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5231,12 +5142,12 @@ yyreduce: } } } -#line 5235 "util/configparser.c" +#line 5146 "util/configparser.c" break; case 450: -#line 2151 "./util/configparser.y" - { +#line 2152 "./util/configparser.y" + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5255,12 +5166,12 @@ yyreduce: } } } -#line 5259 "util/configparser.c" +#line 5170 "util/configparser.c" break; case 451: -#line 2172 "./util/configparser.y" - { +#line 2173 "./util/configparser.y" + { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5270,12 +5181,12 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5274 "util/configparser.c" +#line 5185 "util/configparser.c" break; case 452: -#line 2184 "./util/configparser.y" - { +#line 2185 "./util/configparser.y" + { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5285,12 +5196,12 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5289 "util/configparser.c" +#line 5200 "util/configparser.c" break; case 453: -#line 2196 "./util/configparser.y" - { +#line 2197 "./util/configparser.y" + { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5300,24 +5211,24 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5304 "util/configparser.c" +#line 5215 "util/configparser.c" break; case 454: -#line 2208 "./util/configparser.y" - { +#line 2209 "./util/configparser.y" + { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, (yyvsp[-1].str), (yyvsp[0].str))) { yyerror("out of memory"); } } -#line 5316 "util/configparser.c" +#line 5227 "util/configparser.c" break; case 455: -#line 2217 "./util/configparser.y" - { +#line 2218 "./util/configparser.y" + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5336,58 +5247,58 @@ yyreduce: } } } -#line 5340 "util/configparser.c" +#line 5251 "util/configparser.c" break; case 456: -#line 2238 "./util/configparser.y" - { +#line 2239 "./util/configparser.y" + { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5352 "util/configparser.c" +#line 5263 "util/configparser.c" break; case 457: -#line 2248 "./util/configparser.y" - { +#line 2249 "./util/configparser.y" + { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5364 "util/configparser.c" +#line 5275 "util/configparser.c" break; case 458: -#line 2257 "./util/configparser.y" - { +#line 2258 "./util/configparser.y" + { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5375 "util/configparser.c" +#line 5286 "util/configparser.c" break; case 459: -#line 2265 "./util/configparser.y" - { +#line 2266 "./util/configparser.y" + { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5386 "util/configparser.c" +#line 5297 "util/configparser.c" break; case 460: -#line 2273 "./util/configparser.y" - { +#line 2274 "./util/configparser.y" + { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -5398,12 +5309,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5402 "util/configparser.c" +#line 5313 "util/configparser.c" break; case 461: -#line 2286 "./util/configparser.y" - { +#line 2287 "./util/configparser.y" + { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -5414,12 +5325,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5418 "util/configparser.c" +#line 5329 "util/configparser.c" break; case 462: -#line 2299 "./util/configparser.y" - { +#line 2300 "./util/configparser.y" + { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { yyerror("number expected"); @@ -5432,12 +5343,12 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5436 "util/configparser.c" +#line 5347 "util/configparser.c" break; case 463: -#line 2314 "./util/configparser.y" - { +#line 2315 "./util/configparser.y" + { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { yyerror("number expected"); @@ -5450,69 +5361,69 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5454 "util/configparser.c" +#line 5365 "util/configparser.c" break; case 464: -#line 2329 "./util/configparser.y" - { +#line 2330 "./util/configparser.y" + { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5466 "util/configparser.c" +#line 5377 "util/configparser.c" break; case 465: -#line 2338 "./util/configparser.y" - { +#line 2339 "./util/configparser.y" + { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5478 "util/configparser.c" +#line 5389 "util/configparser.c" break; case 466: -#line 2347 "./util/configparser.y" - { +#line 2348 "./util/configparser.y" + { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5487 "util/configparser.c" +#line 5398 "util/configparser.c" break; case 467: -#line 2353 "./util/configparser.y" - { +#line 2354 "./util/configparser.y" + { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) yyerror("number expected"); else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5499 "util/configparser.c" +#line 5410 "util/configparser.c" break; case 468: -#line 2362 "./util/configparser.y" - { +#line 2363 "./util/configparser.y" + { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5511 "util/configparser.c" +#line 5422 "util/configparser.c" break; case 469: -#line 2371 "./util/configparser.y" - { +#line 2372 "./util/configparser.y" + { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5520,12 +5431,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5524 "util/configparser.c" +#line 5435 "util/configparser.c" break; case 470: -#line 2381 "./util/configparser.y" - { +#line 2382 "./util/configparser.y" + { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5533,12 +5444,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5537 "util/configparser.c" +#line 5448 "util/configparser.c" break; case 471: -#line 2391 "./util/configparser.y" - { +#line 2392 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5549,12 +5460,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5553 "util/configparser.c" +#line 5464 "util/configparser.c" break; case 472: -#line 2404 "./util/configparser.y" - { +#line 2405 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5565,12 +5476,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5569 "util/configparser.c" +#line 5480 "util/configparser.c" break; case 473: -#line 2417 "./util/configparser.y" - { +#line 2418 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ipsecmod_hook); @@ -5580,12 +5491,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5584 "util/configparser.c" +#line 5495 "util/configparser.c" break; case 474: -#line 2429 "./util/configparser.y" - { +#line 2430 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5597,12 +5508,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5601 "util/configparser.c" +#line 5512 "util/configparser.c" break; case 475: -#line 2443 "./util/configparser.y" - { +#line 2444 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str))) @@ -5612,12 +5523,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5616 "util/configparser.c" +#line 5527 "util/configparser.c" break; case 476: -#line 2455 "./util/configparser.y" - { +#line 2456 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5629,12 +5540,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5633 "util/configparser.c" +#line 5544 "util/configparser.c" break; case 477: -#line 2469 "./util/configparser.y" - { +#line 2470 "./util/configparser.y" + { int tag_data; OUTYY(("P(server_edns_client_tag:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); tag_data = atoi((yyvsp[0].str)); @@ -5647,12 +5558,12 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-tag"); } -#line 5651 "util/configparser.c" +#line 5562 "util/configparser.c" break; case 478: -#line 2484 "./util/configparser.y" - { +#line 2485 "./util/configparser.y" + { OUTYY(("P(edns_client_tag_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("option code expected"); @@ -5661,12 +5572,12 @@ yyreduce: else cfg_parser->cfg->edns_client_tag_opcode = atoi((yyvsp[0].str)); } -#line 5665 "util/configparser.c" +#line 5576 "util/configparser.c" break; case 479: -#line 2495 "./util/configparser.y" - { +#line 2496 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) yyerror("stub name override, there must be one name " @@ -5674,56 +5585,56 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5678 "util/configparser.c" +#line 5589 "util/configparser.c" break; case 480: -#line 2505 "./util/configparser.y" - { +#line 2506 "./util/configparser.y" + { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5688 "util/configparser.c" +#line 5599 "util/configparser.c" break; case 481: -#line 2512 "./util/configparser.y" - { +#line 2513 "./util/configparser.y" + { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5698 "util/configparser.c" +#line 5609 "util/configparser.c" break; case 482: -#line 2519 "./util/configparser.y" - { +#line 2520 "./util/configparser.y" + { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5710 "util/configparser.c" +#line 5621 "util/configparser.c" break; case 483: -#line 2528 "./util/configparser.y" - { +#line 2529 "./util/configparser.y" + { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5722 "util/configparser.c" +#line 5633 "util/configparser.c" break; case 484: -#line 2537 "./util/configparser.y" - { +#line 2538 "./util/configparser.y" + { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5731,12 +5642,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5735 "util/configparser.c" +#line 5646 "util/configparser.c" break; case 485: -#line 2547 "./util/configparser.y" - { +#line 2548 "./util/configparser.y" + { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5744,12 +5655,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5748 "util/configparser.c" +#line 5659 "util/configparser.c" break; case 486: -#line 2557 "./util/configparser.y" - { +#line 2558 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) yyerror("forward name override, there must be one " @@ -5757,56 +5668,56 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5761 "util/configparser.c" +#line 5672 "util/configparser.c" break; case 487: -#line 2567 "./util/configparser.y" - { +#line 2568 "./util/configparser.y" + { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5771 "util/configparser.c" +#line 5682 "util/configparser.c" break; case 488: -#line 2574 "./util/configparser.y" - { +#line 2575 "./util/configparser.y" + { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5781 "util/configparser.c" +#line 5692 "util/configparser.c" break; case 489: -#line 2581 "./util/configparser.y" - { +#line 2582 "./util/configparser.y" + { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5793 "util/configparser.c" +#line 5704 "util/configparser.c" break; case 490: -#line 2590 "./util/configparser.y" - { +#line 2591 "./util/configparser.y" + { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5805 "util/configparser.c" +#line 5716 "util/configparser.c" break; case 491: -#line 2599 "./util/configparser.y" - { +#line 2600 "./util/configparser.y" + { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5814,12 +5725,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5818 "util/configparser.c" +#line 5729 "util/configparser.c" break; case 492: -#line 2609 "./util/configparser.y" - { +#line 2610 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) yyerror("auth name override, there must be one name " @@ -5827,53 +5738,53 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5831 "util/configparser.c" +#line 5742 "util/configparser.c" break; case 493: -#line 2619 "./util/configparser.y" - { +#line 2620 "./util/configparser.y" + { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 5841 "util/configparser.c" +#line 5752 "util/configparser.c" break; case 494: -#line 2626 "./util/configparser.y" - { +#line 2627 "./util/configparser.y" + { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5851 "util/configparser.c" +#line 5762 "util/configparser.c" break; case 495: -#line 2633 "./util/configparser.y" - { +#line 2634 "./util/configparser.y" + { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5861 "util/configparser.c" +#line 5772 "util/configparser.c" break; case 496: -#line 2640 "./util/configparser.y" - { +#line 2641 "./util/configparser.y" + { OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5872 "util/configparser.c" +#line 5783 "util/configparser.c" break; case 497: -#line 2648 "./util/configparser.y" - { +#line 2649 "./util/configparser.y" + { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5881,12 +5792,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5885 "util/configparser.c" +#line 5796 "util/configparser.c" break; case 498: -#line 2658 "./util/configparser.y" - { +#line 2659 "./util/configparser.y" + { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5894,12 +5805,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5898 "util/configparser.c" +#line 5809 "util/configparser.c" break; case 499: -#line 2668 "./util/configparser.y" - { +#line 2669 "./util/configparser.y" + { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5907,12 +5818,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5911 "util/configparser.c" +#line 5822 "util/configparser.c" break; case 500: -#line 2678 "./util/configparser.y" - { +#line 2679 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) yyerror("view name override, there must be one " @@ -5920,12 +5831,12 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5924 "util/configparser.c" +#line 5835 "util/configparser.c" break; case 501: -#line 2688 "./util/configparser.y" - { +#line 2689 "./util/configparser.y" + { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && @@ -5962,12 +5873,12 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5966 "util/configparser.c" +#line 5877 "util/configparser.c" break; case 502: -#line 2727 "./util/configparser.y" - { +#line 2728 "./util/configparser.y" + { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); if(!cfg_str2list_insert( @@ -5975,34 +5886,34 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5979 "util/configparser.c" +#line 5890 "util/configparser.c" break; case 503: -#line 2737 "./util/configparser.y" - { +#line 2738 "./util/configparser.y" + { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 5990 "util/configparser.c" +#line 5901 "util/configparser.c" break; case 504: -#line 2745 "./util/configparser.y" - { +#line 2746 "./util/configparser.y" + { OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { fatal_exit("out of memory adding local-data"); } } -#line 6001 "util/configparser.c" +#line 5912 "util/configparser.c" break; case 505: -#line 2753 "./util/configparser.y" - { +#line 2754 "./util/configparser.y" + { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); ptr = cfg_ptr_reverse((yyvsp[0].str)); @@ -6015,32 +5926,32 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6019 "util/configparser.c" +#line 5930 "util/configparser.c" break; case 506: -#line 2768 "./util/configparser.y" - { +#line 2769 "./util/configparser.y" + { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6031 "util/configparser.c" +#line 5942 "util/configparser.c" break; case 507: -#line 2777 "./util/configparser.y" - { +#line 2778 "./util/configparser.y" + { OUTYY(("\nP(remote-control:)\n")); } -#line 6039 "util/configparser.c" +#line 5950 "util/configparser.c" break; case 518: -#line 2788 "./util/configparser.y" - { +#line 2789 "./util/configparser.y" + { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6048,104 +5959,104 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6052 "util/configparser.c" +#line 5963 "util/configparser.c" break; case 519: -#line 2798 "./util/configparser.y" - { +#line 2799 "./util/configparser.y" + { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("control port number expected"); else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6064 "util/configparser.c" +#line 5975 "util/configparser.c" break; case 520: -#line 2807 "./util/configparser.y" - { +#line 2808 "./util/configparser.y" + { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6074 "util/configparser.c" +#line 5985 "util/configparser.c" break; case 521: -#line 2814 "./util/configparser.y" - { +#line 2815 "./util/configparser.y" + { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6084 "util/configparser.c" +#line 5995 "util/configparser.c" break; case 522: -#line 2821 "./util/configparser.y" - { +#line 2822 "./util/configparser.y" + { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 6094 "util/configparser.c" +#line 6005 "util/configparser.c" break; case 523: -#line 2828 "./util/configparser.y" - { +#line 2829 "./util/configparser.y" + { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 6104 "util/configparser.c" +#line 6015 "util/configparser.c" break; case 524: -#line 2835 "./util/configparser.y" - { +#line 2836 "./util/configparser.y" + { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 6114 "util/configparser.c" +#line 6025 "util/configparser.c" break; case 525: -#line 2842 "./util/configparser.y" - { +#line 2843 "./util/configparser.y" + { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 6124 "util/configparser.c" +#line 6035 "util/configparser.c" break; case 526: -#line 2849 "./util/configparser.y" - { +#line 2850 "./util/configparser.y" + { OUTYY(("\nP(dnstap:)\n")); } -#line 6132 "util/configparser.c" +#line 6043 "util/configparser.c" break; case 548: -#line 2869 "./util/configparser.y" - { +#line 2870 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6144 "util/configparser.c" +#line 6055 "util/configparser.c" break; case 549: -#line 2878 "./util/configparser.y" - { +#line 2879 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6153,128 +6064,128 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6157 "util/configparser.c" +#line 6068 "util/configparser.c" break; case 550: -#line 2888 "./util/configparser.y" - { +#line 2889 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 6167 "util/configparser.c" +#line 6078 "util/configparser.c" break; case 551: -#line 2895 "./util/configparser.y" - { +#line 2896 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_ip); cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); } -#line 6177 "util/configparser.c" +#line 6088 "util/configparser.c" break; case 552: -#line 2902 "./util/configparser.y" - { +#line 2903 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6189 "util/configparser.c" +#line 6100 "util/configparser.c" break; case 553: -#line 2911 "./util/configparser.y" - { +#line 2912 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_server_name); cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); } -#line 6199 "util/configparser.c" +#line 6110 "util/configparser.c" break; case 554: -#line 2918 "./util/configparser.y" - { +#line 2919 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_cert_bundle); cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); } -#line 6209 "util/configparser.c" +#line 6120 "util/configparser.c" break; case 555: -#line 2925 "./util/configparser.y" - { +#line 2926 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_key_file); cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); } -#line 6219 "util/configparser.c" +#line 6130 "util/configparser.c" break; case 556: -#line 2932 "./util/configparser.y" - { +#line 2933 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_cert_file); cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); } -#line 6229 "util/configparser.c" +#line 6140 "util/configparser.c" break; case 557: -#line 2939 "./util/configparser.y" - { +#line 2940 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6241 "util/configparser.c" +#line 6152 "util/configparser.c" break; case 558: -#line 2948 "./util/configparser.y" - { +#line 2949 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6253 "util/configparser.c" +#line 6164 "util/configparser.c" break; case 559: -#line 2957 "./util/configparser.y" - { +#line 2958 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 6263 "util/configparser.c" +#line 6174 "util/configparser.c" break; case 560: -#line 2964 "./util/configparser.y" - { +#line 2965 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 6273 "util/configparser.c" +#line 6184 "util/configparser.c" break; case 561: -#line 2971 "./util/configparser.y" - { +#line 2972 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6282,12 +6193,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6286 "util/configparser.c" +#line 6197 "util/configparser.c" break; case 562: -#line 2981 "./util/configparser.y" - { +#line 2982 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6295,12 +6206,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6299 "util/configparser.c" +#line 6210 "util/configparser.c" break; case 563: -#line 2991 "./util/configparser.y" - { +#line 2992 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6308,12 +6219,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6312 "util/configparser.c" +#line 6223 "util/configparser.c" break; case 564: -#line 3001 "./util/configparser.y" - { +#line 3002 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6321,12 +6232,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6325 "util/configparser.c" +#line 6236 "util/configparser.c" break; case 565: -#line 3011 "./util/configparser.y" - { +#line 3012 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6334,12 +6245,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6338 "util/configparser.c" +#line 6249 "util/configparser.c" break; case 566: -#line 3021 "./util/configparser.y" - { +#line 3022 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6347,48 +6258,48 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6351 "util/configparser.c" +#line 6262 "util/configparser.c" break; case 567: -#line 3031 "./util/configparser.y" - { +#line 3032 "./util/configparser.y" + { OUTYY(("\nP(python:)\n")); } -#line 6359 "util/configparser.c" +#line 6270 "util/configparser.c" break; case 571: -#line 3040 "./util/configparser.y" - { +#line 3041 "./util/configparser.y" + { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6369 "util/configparser.c" +#line 6280 "util/configparser.c" break; case 572: -#line 3046 "./util/configparser.y" - { +#line 3047 "./util/configparser.y" + { OUTYY(("\nP(dynlib:)\n")); } -#line 6377 "util/configparser.c" +#line 6288 "util/configparser.c" break; case 576: -#line 3055 "./util/configparser.y" - { +#line 3056 "./util/configparser.y" + { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6387 "util/configparser.c" +#line 6298 "util/configparser.c" break; case 577: -#line 3061 "./util/configparser.y" - { +#line 3062 "./util/configparser.y" + { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6396,132 +6307,132 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6400 "util/configparser.c" +#line 6311 "util/configparser.c" break; case 578: -#line 3071 "./util/configparser.y" - { +#line 3072 "./util/configparser.y" + { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 6410 "util/configparser.c" +#line 6321 "util/configparser.c" break; case 579: -#line 3078 "./util/configparser.y" - { +#line 3079 "./util/configparser.y" + { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6422 "util/configparser.c" +#line 6333 "util/configparser.c" break; case 580: -#line 3087 "./util/configparser.y" - { +#line 3088 "./util/configparser.y" + { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6433 "util/configparser.c" +#line 6344 "util/configparser.c" break; case 581: -#line 3095 "./util/configparser.y" - { +#line 3096 "./util/configparser.y" + { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6441 "util/configparser.c" +#line 6352 "util/configparser.c" break; case 594: -#line 3111 "./util/configparser.y" - { +#line 3112 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6453 "util/configparser.c" +#line 6364 "util/configparser.c" break; case 595: -#line 3121 "./util/configparser.y" - { +#line 3122 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6465 "util/configparser.c" +#line 6376 "util/configparser.c" break; case 596: -#line 3130 "./util/configparser.y" - { +#line 3131 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 6475 "util/configparser.c" +#line 6386 "util/configparser.c" break; case 597: -#line 3137 "./util/configparser.y" - { +#line 3138 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[0].str)); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 6487 "util/configparser.c" +#line 6398 "util/configparser.c" break; case 598: -#line 3146 "./util/configparser.y" - { +#line 3147 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 6497 "util/configparser.c" +#line 6408 "util/configparser.c" break; case 599: -#line 3153 "./util/configparser.y" - { +#line 3154 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[0].str)); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 6509 "util/configparser.c" +#line 6420 "util/configparser.c" break; case 600: -#line 3162 "./util/configparser.y" - { +#line 3163 "./util/configparser.y" + { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6520 "util/configparser.c" +#line 6431 "util/configparser.c" break; case 601: -#line 3170 "./util/configparser.y" - { +#line 3171 "./util/configparser.y" + { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -6532,23 +6443,23 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6536 "util/configparser.c" +#line 6447 "util/configparser.c" break; case 602: -#line 3183 "./util/configparser.y" - { +#line 3184 "./util/configparser.y" + { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6547 "util/configparser.c" +#line 6458 "util/configparser.c" break; case 603: -#line 3191 "./util/configparser.y" - { +#line 3192 "./util/configparser.y" + { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -6559,20 +6470,20 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6563 "util/configparser.c" +#line 6474 "util/configparser.c" break; case 604: -#line 3204 "./util/configparser.y" - { +#line 3205 "./util/configparser.y" + { OUTYY(("\nP(cachedb:)\n")); } -#line 6571 "util/configparser.c" +#line 6482 "util/configparser.c" break; case 613: -#line 3215 "./util/configparser.y" - { +#line 3216 "./util/configparser.y" + { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->cachedb_backend); @@ -6582,12 +6493,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6586 "util/configparser.c" +#line 6497 "util/configparser.c" break; case 614: -#line 3227 "./util/configparser.y" - { +#line 3228 "./util/configparser.y" + { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->cachedb_secret); @@ -6597,12 +6508,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6601 "util/configparser.c" +#line 6512 "util/configparser.c" break; case 615: -#line 3239 "./util/configparser.y" - { +#line 3240 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->redis_server_host); @@ -6612,12 +6523,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6616 "util/configparser.c" +#line 6527 "util/configparser.c" break; case 616: -#line 3251 "./util/configparser.y" - { +#line 3252 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str))); @@ -6630,12 +6541,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6634 "util/configparser.c" +#line 6545 "util/configparser.c" break; case 617: -#line 3266 "./util/configparser.y" - { +#line 3267 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6646,12 +6557,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6650 "util/configparser.c" +#line 6561 "util/configparser.c" break; case 618: -#line 3279 "./util/configparser.y" - { +#line 3280 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6662,12 +6573,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6666 "util/configparser.c" +#line 6577 "util/configparser.c" break; case 619: -#line 3292 "./util/configparser.y" - { +#line 3293 "./util/configparser.y" + { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) yyerror("positive number expected"); @@ -6676,20 +6587,20 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6680 "util/configparser.c" +#line 6591 "util/configparser.c" break; case 620: -#line 3303 "./util/configparser.y" - { +#line 3304 "./util/configparser.y" + { OUTYY(("\nP(ipset:)\n")); } -#line 6688 "util/configparser.c" +#line 6599 "util/configparser.c" break; case 625: -#line 3312 "./util/configparser.y" - { +#line 3313 "./util/configparser.y" + { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->ipset_name_v4) @@ -6702,12 +6613,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6706 "util/configparser.c" +#line 6617 "util/configparser.c" break; case 626: -#line 3327 "./util/configparser.y" - { +#line 3328 "./util/configparser.y" + { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->ipset_name_v6) @@ -6720,11 +6631,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6724 "util/configparser.c" +#line 6635 "util/configparser.c" break; -#line 6728 "util/configparser.c" +#line 6639 "util/configparser.c" default: break; } @@ -6788,7 +6699,7 @@ yyerrlab: { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); - yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc))); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); if (!yymsg) { yymsg = yymsgbuf; @@ -6943,7 +6854,7 @@ yyreturn: while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[+*yyssp], yyvsp); + yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow @@ -6956,7 +6867,7 @@ yyreturn: #endif return yyresult; } -#line 3341 "./util/configparser.y" +#line 3342 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 3a5ea579d..627d4cbf9 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.5.1. */ +/* A Bison parser, made by GNU Bison 3.4.1. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify diff --git a/util/configparser.y b/util/configparser.y index 43a886f24..675645fbd 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -982,6 +982,7 @@ server_https_port: VAR_HTTPS_PORT STRING_ARG if(atoi($2) == 0) yyerror("port number expected"); else cfg_parser->cfg->https_port = atoi($2); + free($2); }; server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG { From a3e2bfbb0cdcc264ed139233f391cca55ad1b526 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 19 Oct 2020 10:24:03 +0200 Subject: [PATCH 21/38] - Fix #330: [Feature request] Add unencrypted DNS over HTTPS support. This adds the option http-notls-downstream: yesno to change that, and the dohclient test code has the -n option. --- daemon/worker.c | 4 +- doc/Changelog | 3 + doc/example.conf.in | 3 + doc/unbound.conf.5.in | 4 + services/listen_dnsport.c | 17 +- services/listen_dnsport.h | 6 +- testcode/dohclient.c | 136 +- testcode/fake_event.c | 1 + util/config_file.c | 2 + util/config_file.h | 2 + util/configlexer.c | 4446 +++++++++++++++++++------------------ util/configlexer.lex | 1 + util/configparser.c | 3354 ++++++++++++++-------------- util/configparser.h | 612 ++--- util/configparser.y | 12 +- util/netevent.c | 192 +- 16 files changed, 4488 insertions(+), 4307 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index 5ad8ce4e4..458afa04e 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1789,8 +1789,8 @@ worker_init(struct worker* worker, struct config_file *cfg, ? cfg->tcp_keepalive_timeout : cfg->tcp_idle_timeout, cfg->harden_large_queries, cfg->http_max_streams, - cfg->http_endpoint, worker->daemon->tcl, - worker->daemon->listen_sslctx, + cfg->http_endpoint, cfg->http_notls_downstream, + worker->daemon->tcl, worker->daemon->listen_sslctx, dtenv, worker_handle_request, worker); if(!worker->front) { log_err("could not create listening sockets"); diff --git a/doc/Changelog b/doc/Changelog index 49dab107c..24d544c7a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,9 @@ http-endpoint, http-max-streams, http-query-buffer-size, http-response-buffer-size, and http-nodelay. - Fix memory leak of https port string when reading config. + - Fix #330: [Feature request] Add unencrypted DNS over HTTPS support. + This adds the option http-notls-downstream: yesno to change that, + and the dohclient test code has the -n option. 16 October 2020: Wouter - Fix that the out of order TCP processing does not limit the diff --git a/doc/example.conf.in b/doc/example.conf.in index 852cccaed..b6f311c7f 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -788,6 +788,9 @@ server: # service. # http-nodelay: yes + # Disable TLS for DNS-over-HTTP downstream service. + # http-notls-downstream: no + # DNS64 prefix. Must be specified when DNS64 is use. # Enable dns64 in module-config. Used to synthesize IPv6 from IPv4. # dns64-prefix: 64:ff9b::0/96 diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 95c4aaa99..c2e389c6e 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -587,6 +587,10 @@ megabytes or gigabytes (1024*1024 bytes in a megabyte). Set TCP_NODELAY socket option on sockets used to provide DNS-over-HTTPS service. Ignored if the option is not available. Default is yes. .TP +.B http\-notls\-downstream: \fI +Disable use of TLS for the downstream DNS-over-HTTP connections. Useful for +local back end servers. Default is no. +.TP .B use\-systemd: \fI Enable or disable systemd socket activation. Default is no. diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index ad73fad01..d4f912db5 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -1244,8 +1244,9 @@ struct listen_dnsport* listen_create(struct comm_base* base, struct listen_port* ports, size_t bufsize, int tcp_accept_count, int tcp_idle_timeout, int harden_large_queries, uint32_t http_max_streams, - char* http_endpoint, struct tcl_list* tcp_conn_limit, void* sslctx, - struct dt_env* dtenv, comm_point_callback_type* cb, void *cb_arg) + char* http_endpoint, int http_notls, struct tcl_list* tcp_conn_limit, + void* sslctx, struct dt_env* dtenv, comm_point_callback_type* cb, + void *cb_arg) { struct listen_dnsport* front = (struct listen_dnsport*) malloc(sizeof(struct listen_dnsport)); @@ -1295,15 +1296,19 @@ listen_create(struct comm_base* base, struct listen_port* ports, http_max_streams, http_endpoint, tcp_conn_limit, bufsize, front->udp_buff, ports->ftype, cb, cb_arg); - cp->ssl = sslctx; + if(http_notls && ports->ftype == listen_type_http) + cp->ssl = NULL; + else + cp->ssl = sslctx; if(ports->ftype == listen_type_http) { - if(!sslctx) { - log_warn("HTTPS port configured, but no TLS " + if(!sslctx && !http_notls) { + log_warn("HTTPS port configured, but no TLS " "tls-service-key or tls-service-pem " "set"); } #ifndef HAVE_SSL_CTX_SET_ALPN_SELECT_CB - log_warn("Unbound is not compiled with an " + if(!http_notls) + log_warn("Unbound is not compiled with an " "OpenSSL version supporting ALPN " " (OpenSSL >= 1.0.2). This is required " "to use DNS-over-HTTPS"); diff --git a/services/listen_dnsport.h b/services/listen_dnsport.h index 4bbde0691..9d6ea2c33 100644 --- a/services/listen_dnsport.h +++ b/services/listen_dnsport.h @@ -159,6 +159,7 @@ int resolve_interface_names(struct config_file* cfg, char*** resif, * @param harden_large_queries: whether query size should be limited. * @param http_max_streams: maximum number of HTTP/2 streams per connection. * @param http_endpoint: HTTP endpoint to service queries on + * @param http_notls: no TLS for http downstream * @param tcp_conn_limit: TCP connection limit info. * @param sslctx: nonNULL if ssl context. * @param dtenv: nonNULL if dnstap enabled. @@ -171,8 +172,9 @@ struct listen_dnsport* listen_create(struct comm_base* base, struct listen_port* ports, size_t bufsize, int tcp_accept_count, int tcp_idle_timeout, int harden_large_queries, uint32_t http_max_streams, - char* http_endpoint, struct tcl_list* tcp_conn_limit, void* sslctx, - struct dt_env* dtenv, comm_point_callback_type* cb, void *cb_arg); + char* http_endpoint, int http_notls, struct tcl_list* tcp_conn_limit, + void* sslctx, struct dt_env* dtenv, comm_point_callback_type* cb, + void *cb_arg); /** * delete the listening structure diff --git a/testcode/dohclient.c b/testcode/dohclient.c index adcc7d831..263418049 100644 --- a/testcode/dohclient.c +++ b/testcode/dohclient.c @@ -90,6 +90,7 @@ static void usage(char* argv[]) printf("-e HTTP endpoint, default: /dns-query\n"); printf("-c Content-type in request, default: " "application/dns-message\n"); + printf("-n no-tls, TLS is disabled\n"); printf("-h This help text\n"); exit(1); } @@ -185,7 +186,10 @@ submit_query(struct http2_session* h2_session, struct sldns_buffer* buf) headers[1].name = (uint8_t*)":path"; headers[1].value = (uint8_t*)h2_stream->path; headers[2].name = (uint8_t*)":scheme"; - headers[2].value = (uint8_t*)"https"; + if(h2_session->ssl) + headers[2].value = (uint8_t*)"https"; + else + headers[2].value = (uint8_t*)"http"; headers[3].name = (uint8_t*)":authority"; headers[3].value = (uint8_t*)h2_session->authority; headers[4].name = (uint8_t*)"content-type"; @@ -246,6 +250,7 @@ static ssize_t http2_recv_cb(nghttp2_session* ATTR_UNUSED(session), { struct http2_session* h2_session = (struct http2_session*)cb_arg; int r; + ssize_t ret; struct timeval tv, *waittv; fd_set rfd; ERR_clear_error(); @@ -267,35 +272,58 @@ static ssize_t http2_recv_cb(nghttp2_session* ATTR_UNUSED(session), return NGHTTP2_ERR_WOULDBLOCK; } - r = SSL_read(h2_session->ssl, buf, len); - if(r <= 0) { - int want = SSL_get_error(h2_session->ssl, r); - if(want == SSL_ERROR_ZERO_RETURN) { + if(h2_session->ssl) { + r = SSL_read(h2_session->ssl, buf, len); + if(r <= 0) { + int want = SSL_get_error(h2_session->ssl, r); + if(want == SSL_ERROR_ZERO_RETURN) { + return NGHTTP2_ERR_EOF; + } + log_crypto_err("could not SSL_read"); return NGHTTP2_ERR_EOF; } - log_crypto_err("could not SSL_read"); + return r; + } + + ret = read(h2_session->fd, buf, len); + if(ret == 0) { + return NGHTTP2_ERR_EOF; + } else if(ret < 0) { + log_err("could not http2 read: %s", strerror(errno)); return NGHTTP2_ERR_EOF; } - return r; + return ret; } static ssize_t http2_send_cb(nghttp2_session* ATTR_UNUSED(session), const uint8_t* buf, size_t len, int ATTR_UNUSED(flags), void* cb_arg) { struct http2_session* h2_session = (struct http2_session*)cb_arg; + ssize_t ret; - int r; - ERR_clear_error(); - r = SSL_write(h2_session->ssl, buf, len); - if(r <= 0) { - int want = SSL_get_error(h2_session->ssl, r); - if(want == SSL_ERROR_ZERO_RETURN) { + if(h2_session->ssl) { + int r; + ERR_clear_error(); + r = SSL_write(h2_session->ssl, buf, len); + if(r <= 0) { + int want = SSL_get_error(h2_session->ssl, r); + if(want == SSL_ERROR_ZERO_RETURN) { + return NGHTTP2_ERR_CALLBACK_FAILURE; + } + log_crypto_err("could not SSL_write"); return NGHTTP2_ERR_CALLBACK_FAILURE; } - log_crypto_err("could not SSL_write"); + return r; + } + + ret = write(h2_session->fd, buf, len); + if(ret == 0) { + return NGHTTP2_ERR_CALLBACK_FAILURE; + } else if(ret < 0) { + log_err("could not http2 write: %s", strerror(errno)); return NGHTTP2_ERR_CALLBACK_FAILURE; } - return r; + return ret; } static int http2_stream_close_cb(nghttp2_session* ATTR_UNUSED(session), @@ -459,7 +487,7 @@ http2_read(struct http2_session* h2_session) } static void -run(struct http2_session* h2_session, int port, int count, char** q) +run(struct http2_session* h2_session, int port, int no_tls, int count, char** q) { int i; SSL_CTX* ctx = NULL; @@ -470,26 +498,28 @@ run(struct http2_session* h2_session, int port, int count, char** q) fd = open_svr(h2_session->authority, port); h2_session->fd = fd; - ctx = connect_sslctx_create(NULL, NULL, NULL, 0); - if(!ctx) fatal_exit("cannot create ssl ctx"); - SSL_CTX_set_alpn_protos(ctx, (const unsigned char *)"\x02h2", 3); - ssl = outgoing_ssl_fd(ctx, fd); - if(!ssl) { - printf("cannot create ssl\n"); - exit(1); - } - h2_session->ssl = ssl; - while(1) { - int r; - ERR_clear_error(); - if( (r=SSL_do_handshake(ssl)) == 1) - break; - r = SSL_get_error(ssl, r); - if(r != SSL_ERROR_WANT_READ && - r != SSL_ERROR_WANT_WRITE) { - log_crypto_err("could not ssl_handshake"); + if(!no_tls) { + ctx = connect_sslctx_create(NULL, NULL, NULL, 0); + if(!ctx) fatal_exit("cannot create ssl ctx"); + SSL_CTX_set_alpn_protos(ctx, (const unsigned char *)"\x02h2", 3); + ssl = outgoing_ssl_fd(ctx, fd); + if(!ssl) { + printf("cannot create ssl\n"); exit(1); } + h2_session->ssl = ssl; + while(1) { + int r; + ERR_clear_error(); + if( (r=SSL_do_handshake(ssl)) == 1) + break; + r = SSL_get_error(ssl, r); + if(r != SSL_ERROR_WANT_READ && + r != SSL_ERROR_WANT_WRITE) { + log_crypto_err("could not ssl_handshake"); + exit(1); + } + } } http2_submit_setting(h2_session); @@ -511,9 +541,13 @@ run(struct http2_session* h2_session, int port, int count, char** q) /* shutdown */ http2_session_delete(h2_session); - SSL_shutdown(ssl); - SSL_free(ssl); - SSL_CTX_free(ctx); + if(ssl) { + SSL_shutdown(ssl); + SSL_free(ssl); + } + if(ctx) { + SSL_CTX_free(ctx); + } close(fd); } @@ -524,10 +558,21 @@ extern char* optarg; int main(int argc, char** argv) { int c; - int port = UNBOUND_DNS_OVER_HTTPS_PORT; - struct http2_session* h2_session = http2_session_create(); - if(!h2_session) fatal_exit("out of memory"); + int port = UNBOUND_DNS_OVER_HTTPS_PORT, no_tls = 0; + struct http2_session* h2_session; +#ifdef USE_WINSOCK + WSADATA wsa_data; + if(WSAStartup(MAKEWORD(2,2), &wsa_data) != 0) { + printf("WSAStartup failed\n"); + return 1; + } +#endif + log_init(0, 0, 0); + checklock_start(); + + h2_session = http2_session_create(); + if(!h2_session) fatal_exit("out of memory"); if(argc == 1) { usage(argv); } @@ -537,7 +582,7 @@ int main(int argc, char** argv) h2_session->endpoint = "/dns-query"; h2_session->content_type = "application/dns-message"; - while((c=getopt(argc, argv, "c:e:hs:p:P")) != -1) { + while((c=getopt(argc, argv, "c:e:hns:p:P")) != -1) { switch(c) { case 'c': h2_session->content_type = optarg; @@ -545,6 +590,9 @@ int main(int argc, char** argv) case 'e': h2_session->endpoint = optarg; break; + case 'n': + no_tls = 1; + break; case 'p': if(atoi(optarg)==0 && strcmp(optarg,"0")!=0) { printf("error parsing port, " @@ -573,8 +621,12 @@ int main(int argc, char** argv) } - run(h2_session, port, argc, argv); + run(h2_session, port, no_tls, argc, argv); + checklock_stop(); +#ifdef USE_WINSOCK + WSACleanup(); +#endif return 0; } #else diff --git a/testcode/fake_event.c b/testcode/fake_event.c index d8df76492..e8fc84746 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -872,6 +872,7 @@ listen_create(struct comm_base* base, struct listen_port* ATTR_UNUSED(ports), int ATTR_UNUSED(harden_large_queries), uint32_t ATTR_UNUSED(http_max_streams), char* ATTR_UNUSED(http_endpoint), + int ATTR_UNUSED(http_notls), struct tcl_list* ATTR_UNUSED(tcp_conn_limit), void* ATTR_UNUSED(sslctx), struct dt_env* ATTR_UNUSED(dtenv), comm_point_callback_type* cb, void *cb_arg) diff --git a/util/config_file.c b/util/config_file.c index 25cba18b7..79774b5ac 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -527,6 +527,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_MEMSIZE("http-query-buffer-size:", http_query_buffer_size) else S_MEMSIZE("http-response-buffer-size:", http_response_buffer_size) else S_YNO("http-nodelay:", http_nodelay) + else S_YNO("http-notls-downstream:", http_notls_downstream) else S_YNO("interface-automatic:", if_automatic) else S_YNO("use-systemd:", use_systemd) else S_YNO("do-daemonize:", do_daemonize) @@ -990,6 +991,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_MEM(opt, "http-query-buffer-size", http_query_buffer_size) else O_MEM(opt, "http-response-buffer-size", http_response_buffer_size) else O_YNO(opt, "http-nodelay", http_nodelay) + else O_YNO(opt, "http-notls-downstream", http_notls_downstream) else O_YNO(opt, "use-systemd", use_systemd) else O_YNO(opt, "do-daemonize", do_daemonize) else O_STR(opt, "chroot", chrootdir) diff --git a/util/config_file.h b/util/config_file.h index 7750eaa0e..543484aed 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -143,6 +143,8 @@ struct config_file { size_t http_response_buffer_size; /** set TCP_NODELAY option for http sockets */ int http_nodelay; + /** Disable TLS for http sockets downstream */ + int http_notls_downstream; /** outgoing port range number of ports (per thread) */ int outgoing_num_ports; diff --git a/util/configlexer.c b/util/configlexer.c index a00f50b74..fac0a1bf8 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -1,7 +1,7 @@ #include "config.h" #include "util/configyyrename.h" -#line 3 "" +#line 2 "" #define YY_INT_ALIGNED short int @@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 334 -#define YY_END_OF_BUFFER 335 +#define YY_NUM_RULES 335 +#define YY_END_OF_BUFFER 336 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,366 +363,367 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3253] = +static const flex_int16_t yy_accept[3268] = { 0, - 1, 1, 308, 308, 312, 312, 316, 316, 320, 320, - 1, 1, 324, 324, 328, 328, 335, 332, 1, 306, - 306, 333, 2, 333, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 308, 309, 309, 310, - 333, 312, 313, 313, 314, 333, 319, 316, 317, 317, - 318, 333, 320, 321, 321, 322, 333, 331, 307, 2, - 311, 333, 331, 327, 324, 325, 325, 326, 333, 328, - 329, 329, 330, 333, 332, 0, 1, 2, 2, 2, - 2, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 1, 1, 309, 309, 313, 313, 317, 317, 321, 321, + 1, 1, 325, 325, 329, 329, 336, 333, 1, 307, + 307, 334, 2, 334, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 309, 310, 310, 311, + 334, 313, 314, 314, 315, 334, 320, 317, 318, 318, + 319, 334, 321, 322, 322, 323, 334, 332, 308, 2, + 312, 334, 332, 328, 325, 326, 326, 327, 334, 329, + 330, 330, 331, 334, 333, 0, 1, 2, 2, 2, + 2, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 308, 0, 312, - 0, 319, 0, 316, 320, 0, 331, 0, 2, 2, - 331, 327, 0, 324, 328, 0, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 309, 0, 313, + 0, 320, 0, 317, 321, 0, 332, 0, 2, 2, + 332, 328, 0, 325, 329, 0, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 331, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 332, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 122, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 131, 332, 332, 332, 332, 332, 332, - 332, 331, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 123, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 132, 333, 333, 333, 333, 333, 333, + 333, 332, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 106, 332, 332, 332, 332, 332, 332, 8, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 123, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 107, 333, 333, 333, 333, 333, 333, 8, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 124, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 136, 332, 331, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 299, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 137, 333, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 300, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 331, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 63, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 235, 332, 14, - 15, 332, 19, 18, 332, 332, 219, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 129, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 64, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 236, 333, 14, + 15, 333, 19, 18, 333, 333, 220, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 130, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 217, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 3, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 331, 332, 332, 332, 332, 332, 332, 332, - 293, 332, 332, 292, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 218, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 3, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 332, 333, 333, 333, 333, 333, 333, 333, + 294, 333, 333, 293, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 315, 332, 332, 332, 332, 332, 332, 332, 62, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 66, 332, 266, 332, 332, - 332, 332, 332, 332, 332, 332, 300, 301, 332, 332, - 332, 332, 332, 67, 332, 332, 130, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 316, 333, 333, 333, 333, 333, 333, 333, 63, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 67, 333, 267, 333, + 333, 333, 333, 333, 333, 333, 333, 301, 302, 333, + 333, 333, 333, 333, 68, 333, 333, 131, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 126, 332, 332, 332, 332, 332, 332, 332, 332, - 206, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 21, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 155, 332, 332, 331, 315, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 104, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 127, 333, 333, 333, 333, 333, 333, 333, + 333, 207, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 21, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 156, 333, 333, 332, 316, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 105, 333, 333, - 332, 332, 332, 332, 274, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 178, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 154, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 103, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 275, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 179, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 155, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 104, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 32, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 33, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 64, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 128, 331, 332, 332, - 332, 332, 332, 121, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 65, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 32, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 33, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 65, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 129, 332, + 333, 333, 333, 333, 333, 122, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 66, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 239, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 179, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 53, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 240, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 180, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 54, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 257, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 57, 332, 58, 332, 332, 332, 332, 332, - 107, 332, 108, 332, 332, 332, 332, 105, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 7, 332, 331, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 228, 332, 332, - 332, 332, 157, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 258, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 58, 333, 59, 333, 333, + 333, 333, 333, 108, 333, 109, 333, 333, 333, 333, + 106, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 7, + 333, 332, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 229, 333, 333, 333, 333, 158, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 240, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 45, 332, 332, 332, 332, - 332, 332, 332, 332, 54, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 198, - 332, 197, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 16, 17, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 241, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 45, + 333, 333, 333, 333, 333, 333, 333, 333, 55, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 199, 333, 198, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 68, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 205, 332, 332, 332, 332, - 332, 332, 110, 332, 109, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 189, 332, 332, 332, - 332, 332, 332, 332, 332, 137, 331, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 98, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 87, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 16, 17, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 69, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 206, + 333, 333, 333, 333, 333, 333, 111, 333, 110, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 190, 333, 333, 333, 333, 333, 333, 333, 333, 138, + 332, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 99, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 88, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 218, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 91, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 61, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 192, 193, 332, 332, 332, 268, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 6, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 219, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 92, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 62, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 193, 194, 333, 333, + 333, 269, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 6, 333, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 272, 332, 332, 332, 332, 332, 332, 294, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 42, - 332, 332, 332, 332, 44, 332, 332, 332, 332, 332, - 332, 332, 332, 51, 332, 332, 332, 332, 332, 332, - 332, 331, 332, 185, 332, 332, 332, 132, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 210, 332, - 186, 332, 332, 332, 225, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 273, 333, 333, 333, + 333, 333, 333, 295, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 42, 333, 333, 333, 333, 44, + 333, 333, 333, 333, 333, 333, 333, 333, 52, 333, + 333, 333, 333, 333, 333, 333, 332, 333, 186, 333, + 333, 333, 133, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 211, 333, 187, 333, 333, 333, 226, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 52, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 134, 115, 332, 116, - 332, 332, 332, 114, 332, 332, 332, 332, 332, 332, - 332, 332, 152, 332, 332, 50, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 256, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 187, 332, 332, 332, 332, 332, 190, 332, 196, 332, - 332, 332, 332, 332, 224, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 102, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 53, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 135, 116, 333, 117, 333, 333, 333, 115, 333, + 333, 333, 333, 333, 333, 333, 333, 153, 333, 333, + 50, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 257, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 188, 333, 333, 333, + 333, 333, 191, 333, 197, 333, 333, 333, 333, 333, + 225, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 103, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 127, 332, - 332, 332, 332, 332, 332, 59, 332, 332, 332, 26, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 20, - 332, 332, 332, 332, 332, 332, 27, 36, 332, 162, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 331, 332, 332, 332, 332, 332, 332, - 76, 78, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 276, 332, 332, 332, 332, - 236, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 128, 333, 333, 333, 333, 333, + 333, 60, 333, 333, 333, 26, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 20, 333, 333, 333, 333, + 333, 333, 27, 36, 333, 163, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 332, + 333, 333, 333, 333, 333, 333, 77, 79, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 277, 333, 333, 333, 333, 237, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 117, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 151, 332, 46, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 287, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 156, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 216, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 297, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 173, 332, 332, 332, 332, 332, 332, 332, 332, 111, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 118, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 152, + 333, 46, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 288, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 157, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 217, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 298, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 174, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 168, - 332, 180, 332, 332, 332, 332, 331, 332, 140, 332, - 332, 332, 332, 332, 97, 332, 332, 332, 332, 208, - 332, 332, 332, 332, 332, 332, 226, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 248, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 133, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 172, 332, - 332, 332, 332, 332, 332, 79, 80, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 112, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 169, 333, 181, 333, + 333, 333, 333, 332, 333, 141, 333, 333, 333, 333, + 333, 98, 333, 333, 333, 333, 209, 333, 333, 333, + 333, 333, 333, 227, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 249, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 134, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 173, 333, 333, 333, - 332, 332, 60, 290, 332, 332, 332, 332, 332, 86, - 181, 332, 199, 332, 229, 332, 332, 191, 269, 332, - 332, 332, 332, 332, 72, 332, 183, 332, 332, 332, - 332, 332, 9, 332, 332, 332, 101, 332, 332, 332, - 332, 261, 332, 332, 332, 332, 207, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 331, 332, 332, 332, 332, 171, 332, 332, + 333, 333, 333, 80, 81, 333, 333, 333, 333, 333, + 61, 291, 333, 333, 333, 333, 333, 87, 182, 333, + 200, 333, 230, 333, 333, 192, 270, 333, 333, 333, + 333, 333, 73, 333, 184, 333, 333, 333, 333, 333, + 9, 333, 333, 333, 102, 333, 333, 333, 333, 262, + 333, 333, 333, 333, 208, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 158, 332, - 275, 332, 332, 332, 332, 332, 247, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 220, 332, - 332, 304, 332, 332, 332, 267, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 291, 332, 182, 332, 332, 332, - 332, 332, 332, 332, 71, 73, 332, 332, 332, 332, - 332, 332, 332, 100, 332, 332, 332, 332, 259, 332, - 332, 332, 332, 271, 332, 332, 332, 332, 332, 332, + 332, 333, 333, 333, 333, 172, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 159, 333, 276, 333, + 333, 333, 333, 333, 248, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 221, 333, 333, 305, + 333, 333, 333, 268, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 292, 333, 183, 333, 333, 333, 333, + 333, 333, 333, 72, 74, 333, 333, 333, 333, 333, + 333, 333, 101, 333, 333, 333, 333, 260, 333, 333, - 332, 332, 332, 332, 332, 212, 34, 28, 30, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 35, 332, - 29, 31, 332, 332, 332, 332, 332, 332, 332, 332, - 96, 332, 332, 332, 332, 332, 332, 331, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 214, - 211, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 70, - 332, 332, 332, 135, 332, 118, 332, 332, 332, 332, - 332, 332, 332, 332, 153, 47, 332, 332, 323, 13, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 285, + 333, 333, 272, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 213, 34, 28, 30, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 35, 333, 29, + 31, 333, 333, 333, 333, 333, 333, 333, 333, 97, + 333, 333, 333, 333, 333, 333, 332, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 215, 212, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 71, 333, + 333, 333, 136, 333, 119, 333, 333, 333, 333, 333, + 333, 333, 333, 154, 47, 333, 333, 333, 324, 13, - 332, 288, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 12, 332, 332, 22, 332, 332, 332, 265, - 332, 332, 332, 332, 273, 332, 332, 332, 74, 332, - 222, 332, 332, 332, 332, 213, 332, 332, 69, 332, - 332, 332, 332, 23, 332, 43, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 167, 166, - 323, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 215, 209, 332, 227, 332, 332, 277, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 286, + 333, 289, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 12, 333, 333, 22, 333, 333, 333, 266, + 333, 333, 333, 333, 274, 333, 333, 333, 75, 333, + 223, 333, 333, 333, 333, 214, 333, 333, 70, 333, + 333, 333, 333, 23, 333, 43, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 168, 167, + 324, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 216, 210, 333, 228, 333, 333, 278, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 81, 332, - 332, 332, 260, 332, 332, 332, 332, 195, 332, 332, - 332, 332, 221, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 295, 296, 164, 332, 332, 75, 332, 332, - 332, 332, 174, 332, 332, 112, 113, 332, 332, 332, - 332, 159, 332, 161, 332, 200, 332, 332, 332, 332, - 165, 332, 332, 230, 332, 332, 332, 332, 332, 332, - 332, 142, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 238, 332, 332, 332, 332, 332, - 332, 332, 332, 24, 332, 270, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 82, + 333, 333, 333, 261, 333, 333, 333, 333, 196, 333, + 333, 333, 333, 222, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 296, 297, 165, 333, 333, 76, 333, + 333, 333, 333, 175, 333, 333, 113, 114, 333, 333, + 333, 333, 160, 333, 162, 333, 201, 333, 333, 333, + 333, 166, 333, 333, 231, 333, 333, 333, 333, 333, + 333, 333, 143, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 239, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 201, - 332, 332, 258, 332, 289, 332, 194, 332, 332, 332, - 332, 55, 332, 332, 332, 332, 4, 332, 332, 332, - 332, 125, 141, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 233, 37, 38, 332, 332, 332, 332, 332, 332, - 332, 278, 332, 332, 332, 332, 332, 332, 332, 246, - 332, 332, 332, 332, 332, 332, 332, 332, 204, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 84, 332, 56, 264, 332, 234, 332, 332, 332, 332, + 333, 333, 333, 333, 24, 333, 271, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 202, 333, 333, 259, 333, 290, 333, 195, 333, + 333, 333, 333, 56, 333, 333, 333, 333, 4, 333, + 333, 333, 333, 126, 142, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 234, 37, 38, 333, 333, 333, 333, + 333, 333, 333, 279, 333, 333, 333, 333, 333, 333, + 333, 247, 333, 333, 333, 333, 333, 333, 333, 333, + 205, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 11, 332, 332, 332, 332, 332, 332, 124, 332, 332, - 332, 332, 202, 88, 332, 40, 332, 332, 332, 332, - 332, 332, 332, 332, 170, 332, 332, 332, 332, 332, - 144, 332, 332, 332, 332, 237, 332, 332, 332, 332, - 332, 245, 332, 332, 332, 332, 138, 332, 332, 332, - 119, 120, 332, 332, 332, 90, 94, 89, 332, 332, - 332, 82, 332, 332, 332, 332, 332, 10, 332, 332, - 332, 262, 298, 332, 332, 332, 332, 303, 39, 332, - 332, 332, 332, 332, 169, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 85, 333, 57, 265, 333, 235, 333, + 333, 333, 333, 11, 333, 333, 333, 333, 333, 333, + 125, 333, 333, 333, 333, 203, 89, 333, 40, 333, + 333, 333, 333, 333, 333, 333, 333, 171, 333, 333, + 333, 333, 333, 145, 333, 333, 333, 333, 238, 333, + 333, 333, 333, 333, 246, 333, 333, 333, 333, 139, + 333, 333, 333, 120, 121, 333, 333, 333, 91, 95, + 90, 333, 333, 333, 333, 83, 333, 333, 333, 333, + 333, 10, 333, 333, 333, 263, 299, 333, 333, 333, + 333, 304, 39, 333, 333, 333, 333, 333, 170, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 95, 93, - 332, 332, 332, 83, 286, 332, 332, 332, 332, 332, - 332, 332, 188, 332, 332, 332, 332, 332, 203, 332, - 332, 332, 332, 332, 332, 332, 332, 160, 77, 332, - 332, 332, 332, 332, 279, 332, 332, 332, 332, 332, - 332, 332, 242, 332, 332, 241, 139, 305, 332, 92, - 48, 332, 145, 146, 149, 150, 147, 148, 85, 332, - 263, 332, 332, 332, 332, 163, 332, 332, 332, 332, - 332, 232, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 96, 94, 333, 51, 333, 333, 84, 287, + 333, 333, 333, 333, 333, 333, 333, 189, 333, 333, + 333, 333, 333, 204, 333, 333, 333, 333, 333, 333, + 333, 333, 161, 78, 333, 333, 333, 333, 333, 280, + 333, 333, 333, 333, 333, 333, 333, 243, 333, 333, + 242, 140, 306, 333, 93, 48, 333, 146, 147, 150, + 151, 148, 149, 86, 333, 264, 333, 333, 333, 333, + 164, 333, 333, 333, 333, 333, 233, 333, 333, 333, - 176, 175, 41, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 99, 332, - 231, 332, 255, 283, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 49, 5, 332, 332, - 223, 332, 332, 284, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 243, 25, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 244, 332, 332, - 332, 143, 332, 332, 332, 332, 332, 332, 332, 332, - 177, 332, 184, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 177, 176, 41, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 100, 333, 232, 333, 256, 284, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 49, 5, 333, 333, 224, 333, 333, 285, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 244, 25, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 245, 333, 333, 333, 144, 333, 333, 333, - 332, 332, 280, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 302, 332, 332, 251, 332, 332, 332, 332, 332, 281, - 332, 332, 332, 332, 332, 332, 282, 332, 332, 332, - 249, 332, 252, 253, 332, 332, 332, 332, 332, 250, - 254, 0 + 333, 333, 333, 333, 333, 178, 333, 185, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 281, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 303, 333, 333, 252, 333, + 333, 333, 333, 333, 282, 333, 333, 333, 333, 333, + 333, 283, 333, 333, 333, 250, 333, 253, 254, 333, + 333, 333, 333, 333, 251, 255, 0 } ; static const YY_CHAR yy_ec[256] = @@ -765,17 +766,17 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3271] = +static const flex_int16_t yy_base[3286] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 3165, 3121, 81, 6365, - 6365, 6365, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 3868, 3794, 81, 6384, + 6384, 6384, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 184, 145, - 185, 205, 194, 204, 178, 123, 3093, 6365, 6365, 6365, - 107, 2724, 6365, 6365, 6365, 154, 2535, 2515, 6365, 6365, - 6365, 226, 2454, 6365, 6365, 6365, 163, 2353, 6365, 238, - 6365, 242, 148, 2067, 1986, 6365, 6365, 6365, 246, 1743, - 6365, 6365, 6365, 250, 1651, 254, 219, 0, 258, 0, + 185, 205, 194, 204, 178, 123, 3568, 6384, 6384, 6384, + 107, 3343, 6384, 6384, 6384, 154, 2940, 2739, 6384, 6384, + 6384, 226, 2537, 6384, 6384, 6384, 163, 2356, 6384, 238, + 6384, 242, 148, 2314, 2201, 6384, 6384, 6384, 246, 1728, + 6384, 6384, 6384, 250, 1651, 254, 219, 0, 258, 0, 0, 165, 250, 191, 215, 243, 252, 256, 92, 260, 261, 262, 264, 265, 266, 273, 270, 277, 278, 281, @@ -805,9 +806,9 @@ static const flex_int16_t yy_base[3271] = 745, 743, 747, 749, 750, 766, 754, 739, 759, 767, 758, 760, 768, 774, 793, 779, 781, 789, 790, 791, 795, 797, 805, 807, 796, 809, 803, 810, 812, 813, - 822, 818, 6365, 817, 820, 833, 826, 834, 835, 836, + 822, 818, 6384, 817, 820, 833, 826, 834, 835, 836, 841, 842, 823, 849, 847, 848, 852, 874, 856, 858, - 854, 863, 866, 6365, 864, 868, 898, 870, 872, 892, + 854, 863, 866, 6384, 864, 868, 898, 870, 872, 892, 888, 884, 887, 889, 899, 896, 909, 902, 907, 911, 922, 918, 919, 920, 921, 924, 930, 937, 932, 934, @@ -817,21 +818,21 @@ static const flex_int16_t yy_base[3271] = 1006, 1007, 1013, 1009, 1008, 1017, 1019, 1021, 1022, 1023, 1024, 1035, 1030, 1031, 1033, 1037, 1038, 1039, 1041, 1044, 1045, 1047, 1049, 1051, 1050, 1056, 1060, 1058, 1066, 1061, - 6365, 1068, 1070, 1072, 1073, 1074, 1075, 6365, 1077, 1071, + 6384, 1068, 1070, 1072, 1073, 1074, 1075, 6384, 1077, 1071, 1076, 1078, 1090, 1093, 1104, 1081, 1085, 1100, 1103, 1101, 1105, 1113, 1109, 1114, 1116, 1112, 1118, 1119, 1121, 1124, - 1122, 1125, 1130, 1131, 1132, 1133, 1152, 6365, 1136, 1139, + 1122, 1125, 1130, 1131, 1132, 1133, 1152, 6384, 1136, 1139, 1144, 1138, 1143, 1145, 1164, 1150, 1162, 1161, 1170, 1181, 1174, 1182, 1176, 1163, 1187, 1184, 1191, 1189, 1193, 1195, - 1194, 1196, 1197, 1198, 1200, 1201, 1206, 6365, 1208, 1211, + 1194, 1196, 1197, 1198, 1200, 1201, 1206, 6384, 1208, 1211, 1220, 1221, 1222, 1223, 1224, 1225, 1137, 1226, 1228, 1227, 1231, 1235, 1245, 1252, 1236, 1253, 1239, 1254, 1249, 1250, 1256, 1259, 1258, 1260, 1270, 1266, 1272, 1281, 1284, 1283, 1286, 1293, 1295, 1275, 1288, 1298, 1268, 1290, 1291, 1302, 1292, 1303, 1304, 1306, 1313, 1308, 1311, 1314, 1316, 1317, 1320, 1315, 1322, 1321, 1324, 1331, 1328, 1332, 1339, 1334, - 1340, 1338, 1343, 1345, 1348, 1349, 1354, 6365, 1361, 1357, + 1340, 1338, 1343, 1345, 1348, 1349, 1354, 6384, 1361, 1357, 1362, 1360, 1367, 1368, 1370, 1358, 1373, 1376, 1377, 1379, 1378, 1381, 1385, 1382, 1387, 1388, 1392, 1395, 1393, 1402, @@ -845,653 +846,657 @@ static const flex_int16_t yy_base[3271] = 1545, 1546, 1555, 1547, 1556, 1558, 1548, 1559, 1561, 1564, 1571, 1566, 1572, 1575, 1576, 1578, 1577, 1580, 1581, 1588, - 1589, 1593, 6365, 1585, 1601, 1583, 1596, 1597, 1599, 1605, - 1612, 1607, 1610, 1608, 1611, 1613, 1637, 6365, 1614, 6365, - 6365, 315, 6365, 6365, 1616, 1621, 6365, 1622, 1631, 1618, + 1589, 1593, 6384, 1585, 1601, 1583, 1596, 1597, 1599, 1605, + 1612, 1607, 1610, 1608, 1611, 1613, 1637, 6384, 1614, 6384, + 6384, 315, 6384, 6384, 1616, 1621, 6384, 1622, 1631, 1618, 1641, 1619, 1643, 1647, 1630, 1638, 1635, 1660, 1661, 1664, 1632, 1666, 1667, 1650, 1672, 1670, 1677, 1678, 1681, 1682, 1689, 1687, 1690, 1686, 1697, 1695, 1699, 1703, 1705, 1707, - 1710, 1692, 1712, 1713, 1715, 1717, 1718, 1714, 1721, 1723, - 1720, 1727, 1726, 1736, 1732, 1741, 1750, 6365, 1742, 1751, - 1752, 1753, 1760, 1728, 1755, 1756, 1763, 1766, 1759, 1757, + 1710, 1711, 1712, 1713, 1715, 1717, 1718, 1714, 1721, 1723, + 1720, 1727, 1726, 1737, 1736, 1743, 1746, 6384, 1744, 1753, + 1756, 1752, 1760, 1755, 1759, 1761, 1763, 1767, 1764, 1768, - 1768, 1769, 1770, 1772, 1774, 1777, 1779, 1786, 1781, 6365, - 1782, 1784, 1787, 1790, 1788, 1796, 1798, 1792, 1794, 1801, - 1802, 1813, 1804, 1808, 1809, 1816, 1814, 1818, 6365, 1820, - 1827, 1824, 1830, 1831, 1817, 1833, 1832, 1836, 1834, 1839, - 1840, 1841, 1842, 1855, 1848, 1846, 1847, 1850, 1863, 1851, - 1867, 1871, 1860, 1868, 1873, 1874, 1875, 1876, 1878, 1879, - 1887, 1889, 1886, 1890, 1885, 1894, 1902, 1903, 1891, 1892, - 1901, 1908, 1913, 1915, 1916, 1917, 1911, 1926, 1918, 1922, - 1923, 1925, 1933, 1928, 1936, 1944, 1931, 1934, 1937, 1939, - 6365, 1946, 1947, 6365, 1949, 1948, 1950, 1972, 1951, 1955, + 1770, 1771, 1732, 1774, 1776, 1779, 1781, 1783, 1782, 6384, + 1784, 1788, 1789, 1790, 1791, 1796, 1798, 1792, 1794, 1802, + 1804, 1815, 1807, 1805, 1810, 1812, 1816, 1822, 6384, 1824, + 1828, 1818, 1830, 1823, 1831, 1832, 1834, 1837, 1836, 1838, + 1842, 1841, 1843, 1853, 1849, 1848, 1850, 1854, 1864, 1863, + 1866, 1873, 1855, 1865, 1867, 1876, 1878, 1879, 1880, 1882, + 1889, 1891, 1881, 1892, 1888, 1896, 1900, 1893, 1903, 1904, + 1905, 1906, 1911, 1913, 1914, 1915, 1918, 1925, 1909, 1921, + 1923, 1930, 1938, 1928, 1936, 1944, 1926, 1934, 1942, 1939, + 6384, 1946, 1949, 6384, 1951, 1952, 1950, 1973, 1955, 1953, - 1963, 1957, 1960, 1965, 1964, 1966, 1982, 1976, 1992, 1989, - 1994, 1995, 1997, 2000, 1984, 2001, 2002, 2003, 2004, 2010, - 1967, 2009, 2013, 2023, 2021, 2027, 2031, 2026, 2028, 2032, - 2051, 2029, 2030, 2039, 2033, 2036, 2038, 2034, 2040, 2044, - 2049, 2046, 2061, 2064, 2056, 2060, 2066, 2073, 2075, 2058, - 6365, 2086, 2082, 2081, 2083, 2093, 2089, 2088, 6365, 2090, - 2092, 2095, 2097, 2103, 2098, 2104, 2102, 2105, 2106, 2108, - 2114, 2115, 2110, 2113, 2127, 6365, 2118, 6365, 2125, 2128, - 2131, 2129, 2133, 2132, 2135, 2136, 6365, 6365, 2137, 2144, - 2145, 2155, 2152, 6365, 2138, 2162, 6365, 2159, 2164, 2157, + 1959, 1961, 1962, 1965, 1966, 1977, 1975, 1979, 1996, 1983, + 1985, 1997, 1988, 2000, 1986, 2002, 2004, 2006, 2008, 2010, + 2011, 2009, 2026, 2029, 1968, 2021, 2030, 2012, 2025, 2028, + 2047, 2031, 2032, 2035, 2033, 2038, 2036, 2042, 2040, 2051, + 2052, 2056, 2063, 2059, 2062, 2058, 2065, 2060, 2069, 2075, + 2077, 6384, 2086, 2082, 2083, 2087, 2090, 2088, 2089, 6384, + 2092, 2094, 2091, 2104, 2096, 2095, 2106, 2099, 2109, 2110, + 2112, 2113, 2116, 2115, 2117, 2126, 6384, 2127, 6384, 2118, + 2128, 2131, 2133, 2135, 2129, 2136, 2137, 6384, 6384, 2140, + 2146, 2138, 2157, 2149, 6384, 2152, 2160, 6384, 2163, 2158, - 2158, 2166, 2168, 2170, 2169, 2179, 2172, 2180, 2175, 2176, - 2177, 6365, 2185, 2187, 2189, 2193, 2195, 2196, 2197, 2200, - 6365, 2199, 2203, 2204, 2213, 2215, 2209, 2206, 2217, 2221, - 2216, 2223, 2225, 2226, 2227, 2236, 2237, 2228, 2238, 2239, - 2241, 6365, 2232, 2246, 2253, 2249, 2252, 2248, 2255, 2256, - 2258, 2259, 2260, 2261, 2265, 2267, 2268, 2275, 2276, 2271, - 2273, 2281, 2282, 2284, 2285, 2292, 2289, 2290, 2291, 2293, - 6365, 2294, 2296, 2300, 171, 2302, 2304, 2303, 2306, 2305, - 2309, 2312, 2323, 2327, 2322, 2324, 2326, 2325, 2331, 2333, - 2334, 2335, 2336, 2337, 2341, 2340, 6365, 2343, 2346, 2348, + 2156, 2165, 2166, 2169, 2171, 2173, 2178, 2174, 2181, 2176, + 2190, 2179, 6384, 2177, 2183, 2192, 2196, 2186, 2198, 2200, + 2199, 6384, 2206, 2207, 2208, 2215, 2217, 2210, 2213, 2218, + 2224, 2220, 2222, 2226, 2227, 2229, 2234, 2239, 2232, 2235, + 2243, 2250, 6384, 2236, 2245, 2253, 2251, 2258, 2252, 2255, + 2249, 2259, 2260, 2266, 2262, 2268, 2270, 2271, 2280, 2281, + 2272, 2279, 2277, 2283, 2285, 2288, 2293, 2291, 2292, 2294, + 2295, 6384, 2296, 2298, 2303, 171, 2304, 2306, 2305, 2307, + 2310, 2325, 2308, 2322, 2332, 2311, 2329, 2331, 2330, 2336, + 2337, 2338, 2339, 2340, 2341, 2342, 2344, 6384, 2346, 2347, - 2349, 2351, 2352, 2362, 6365, 2354, 2368, 2365, 2374, 2375, - 2363, 2380, 2371, 2361, 2384, 2386, 2385, 2387, 2389, 2388, - 2392, 2395, 6365, 2397, 2400, 2401, 2398, 2407, 2409, 2408, - 2410, 2411, 2415, 2416, 2420, 2422, 2419, 2421, 2423, 2424, - 2427, 2430, 2432, 2436, 2437, 2438, 2439, 2443, 2441, 2447, - 2448, 6365, 2457, 2449, 2459, 2461, 2450, 2460, 2463, 2477, - 2467, 2474, 2472, 2478, 2489, 2480, 2482, 2487, 2483, 2495, - 2492, 2505, 2504, 2506, 2513, 2496, 2515, 2518, 2507, 2510, - 2520, 2519, 2525, 2522, 2524, 2532, 2537, 2533, 2540, 2534, - 2545, 2558, 2549, 6365, 2547, 2553, 2541, 2557, 2570, 2562, + 2349, 2353, 2352, 2355, 2360, 6384, 2362, 2369, 2372, 2381, + 2364, 2373, 2382, 2378, 2383, 2384, 2386, 2388, 2390, 2389, + 2392, 2398, 2395, 6384, 2400, 2403, 2405, 2396, 2412, 2411, + 2404, 2418, 2419, 2420, 2423, 2421, 2422, 2425, 2424, 2426, + 2427, 2432, 2431, 2428, 2430, 2440, 2441, 2442, 2451, 2452, + 2444, 2453, 2454, 6384, 2464, 2455, 2459, 2457, 2460, 2462, + 2466, 2482, 2472, 2475, 2477, 2483, 2492, 2485, 2479, 2502, + 2486, 2494, 2495, 2509, 2507, 2508, 2516, 2506, 2518, 2520, + 2510, 2514, 2522, 2521, 2524, 2526, 2528, 2539, 2542, 2538, + 2544, 2545, 2534, 2552, 2547, 6384, 2551, 2553, 2556, 2557, - 2561, 2567, 2563, 2565, 2573, 2575, 2576, 2584, 2579, 2581, - 2582, 2586, 2585, 2588, 2587, 2593, 2595, 2602, 2598, 2604, - 2606, 6365, 2607, 2609, 2611, 2612, 2616, 2617, 2620, 2622, - 2624, 2625, 2626, 2628, 2631, 2632, 2633, 2634, 2636, 2638, - 2641, 6365, 2649, 2642, 2643, 2644, 2650, 2654, 2656, 2660, - 2663, 2666, 2667, 2668, 2669, 2670, 6365, 2678, 2679, 2675, - 2687, 2677, 2682, 2684, 2689, 2690, 6365, 2691, 2692, 2693, - 2700, 2702, 2697, 6365, 2704, 2699, 2705, 2707, 2708, 2709, - 2711, 2714, 2717, 2718, 2721, 2726, 2733, 2722, 2730, 6365, - 2728, 2742, 2734, 2740, 2738, 2744, 2748, 2750, 2751, 2753, + 2570, 2562, 2560, 2567, 2573, 2575, 2576, 2577, 2578, 2585, + 2580, 2583, 2586, 2588, 2589, 2590, 2594, 2597, 2601, 2605, + 2598, 2608, 2609, 6384, 2614, 2610, 2602, 2616, 2619, 2620, + 2624, 2626, 2628, 2629, 2630, 2632, 2634, 2635, 2636, 2637, + 2639, 2641, 2644, 6384, 2646, 2645, 2647, 2653, 2658, 2657, + 2659, 2661, 2668, 2670, 2655, 2671, 2672, 2674, 6384, 2682, + 2684, 2680, 2689, 2681, 2686, 2688, 2692, 2693, 6384, 2694, + 2695, 2696, 2703, 2704, 2700, 6384, 2707, 2702, 2708, 2710, + 2711, 2712, 2714, 2717, 2720, 2721, 2724, 2729, 2736, 2725, + 2733, 6384, 2731, 2745, 2737, 2743, 2741, 2747, 2751, 2753, - 2755, 2760, 6365, 2767, 2766, 2764, 2777, 2754, 2769, 2772, - 2778, 2779, 2780, 2781, 2782, 2785, 6365, 2786, 2788, 2789, - 2791, 2793, 2794, 2796, 2808, 2799, 2803, 2804, 2809, 2810, - 2813, 2814, 2816, 2821, 2817, 2820, 2827, 2830, 2831, 2833, - 2836, 2844, 2834, 2842, 2843, 2839, 2846, 2847, 2856, 2857, - 2858, 2860, 6365, 2863, 2864, 2865, 2854, 2866, 2869, 2870, - 2873, 2875, 2871, 2879, 2877, 2881, 2884, 2894, 2898, 2886, - 2889, 2896, 2899, 2900, 2902, 2901, 2904, 2905, 2914, 2911, - 2910, 2919, 2912, 2921, 2928, 2925, 2926, 2929, 2930, 2932, - 2917, 2935, 2933, 2937, 2939, 2942, 2953, 2954, 2943, 2955, + 2754, 2756, 2758, 2763, 6384, 2770, 2769, 2767, 2780, 2757, + 2772, 2775, 2781, 2782, 2783, 2784, 2785, 2788, 6384, 2789, + 2791, 2792, 2794, 2796, 2797, 2799, 2811, 2802, 2806, 2807, + 2812, 2813, 2816, 2817, 2819, 2824, 2820, 2823, 2830, 2833, + 2834, 2836, 2839, 2847, 2850, 2837, 2846, 2849, 2842, 2852, + 2854, 2863, 2866, 2861, 2864, 6384, 2868, 2870, 2869, 2853, + 2872, 2875, 2876, 2879, 2880, 2877, 2882, 2883, 2885, 2887, + 2901, 2904, 2892, 2893, 2896, 2902, 2905, 2908, 2907, 2909, + 2910, 2917, 2918, 2916, 2925, 2920, 2924, 2933, 2922, 2931, + 2932, 2934, 2935, 2936, 2937, 2943, 2945, 2946, 2955, 2960, - 2956, 2957, 2958, 6365, 2961, 2962, 2963, 2966, 2969, 2972, - 2975, 2982, 2973, 2974, 2984, 2990, 2991, 2981, 2992, 2983, - 2999, 2997, 6365, 2998, 6365, 3000, 3002, 3004, 3012, 3008, - 6365, 3014, 6365, 3015, 3020, 3009, 3011, 6365, 3023, 3017, - 3022, 3029, 3024, 3032, 3033, 3035, 3034, 3041, 3036, 3038, - 3043, 3044, 3046, 3049, 3050, 3054, 3051, 3061, 3067, 3055, - 3064, 3057, 3062, 3070, 3072, 3076, 6365, 3078, 3080, 3082, - 3083, 3084, 3085, 3086, 3087, 3089, 3090, 3092, 3102, 3098, - 3108, 3095, 3114, 3117, 3124, 3105, 3126, 6365, 3109, 3128, - 3119, 3129, 6365, 3131, 3106, 3132, 3139, 3134, 3137, 3141, + 2956, 2962, 2963, 2938, 2964, 2965, 6384, 2968, 2969, 2970, + 2972, 2973, 2979, 2975, 2987, 2982, 2983, 2988, 2990, 2991, + 2998, 2999, 3000, 3007, 3003, 6384, 3004, 6384, 3005, 3006, + 3008, 3016, 3012, 6384, 3014, 6384, 3021, 3028, 3015, 3019, + 6384, 3030, 3023, 3025, 3036, 3029, 3038, 3039, 3040, 3041, + 3046, 3042, 3048, 3049, 3050, 3052, 3054, 3056, 3057, 3061, + 3070, 3063, 3060, 3071, 3065, 3073, 3077, 3078, 3083, 6384, + 3086, 3079, 3082, 3089, 3090, 3091, 3092, 3093, 3096, 3098, + 3099, 3107, 3102, 3108, 3104, 3112, 3115, 3122, 3121, 3129, + 6384, 3125, 3127, 3128, 3130, 6384, 3132, 3131, 3133, 3142, - 3142, 3143, 3146, 3147, 3149, 3154, 3158, 3161, 3162, 6365, - 3167, 3163, 3150, 3170, 3178, 3180, 3185, 3182, 3183, 3188, - 3192, 3190, 3191, 3153, 3193, 3194, 3196, 3203, 3206, 3202, - 3211, 3198, 3208, 3210, 3215, 3201, 3216, 3217, 3218, 3224, - 3225, 3222, 3223, 3226, 3227, 6365, 3229, 3230, 3231, 3249, - 3233, 3234, 3245, 3235, 6365, 3251, 3247, 3252, 3258, 3260, - 3262, 3255, 3263, 3264, 3265, 3266, 3268, 3271, 3272, 6365, - 3276, 6365, 3273, 3286, 3279, 3285, 3290, 3292, 3294, 3300, - 3293, 3295, 3303, 3304, 3301, 3305, 3307, 3311, 3313, 3315, - 3318, 3327, 3317, 3319, 3323, 3328, 3329, 3331, 6365, 6365, + 3135, 3138, 3144, 3145, 3150, 3140, 3152, 3146, 3154, 3167, + 3163, 3162, 6384, 3169, 3170, 3171, 3173, 3180, 3183, 3188, + 3184, 3185, 3190, 3193, 3192, 3194, 3195, 3198, 3199, 3200, + 3208, 3210, 3201, 3211, 3209, 3215, 3222, 3218, 3212, 3214, + 3216, 3224, 3225, 3226, 3227, 3228, 3229, 3235, 3231, 6384, + 3242, 3243, 3244, 3247, 3246, 3248, 3249, 3153, 6384, 3252, + 3256, 3259, 3258, 3260, 3262, 3265, 3267, 3269, 3271, 3273, + 3274, 3283, 3278, 6384, 3282, 6384, 3275, 3286, 3285, 3299, + 3293, 3272, 3301, 3307, 3296, 3303, 3308, 3310, 3311, 3312, + 3314, 3316, 3317, 3318, 3325, 3321, 3324, 3332, 3331, 3333, - 3333, 3334, 3335, 3338, 3339, 3344, 3346, 3350, 3351, 3353, - 3355, 3357, 3366, 6365, 3363, 3364, 3367, 3368, 3378, 3369, - 3381, 3388, 3385, 3392, 3391, 6365, 3374, 3370, 3399, 3383, - 3395, 3406, 6365, 3401, 6365, 3402, 3403, 3405, 3407, 3410, - 3411, 3412, 3414, 3418, 3425, 3433, 3429, 3431, 3415, 3420, - 3432, 3434, 3443, 3436, 3440, 3441, 6365, 3445, 3446, 3448, - 3449, 3450, 3457, 3460, 3453, 6365, 3461, 3463, 3465, 3467, - 3468, 3470, 3472, 3474, 3475, 3479, 3481, 6365, 3477, 3483, - 3490, 3485, 3487, 3492, 3495, 3499, 3501, 6365, 3504, 3506, - 3513, 3511, 3508, 3512, 3516, 3517, 3518, 3521, 3523, 3522, + 3334, 3336, 6384, 6384, 3337, 3338, 3339, 3341, 3342, 3353, + 3354, 3352, 3360, 3359, 3346, 3363, 3372, 6384, 3368, 3370, + 3373, 3374, 3384, 3375, 3387, 3389, 3391, 3394, 3392, 6384, + 3380, 3376, 3403, 3399, 3401, 3408, 6384, 3405, 6384, 3406, + 3407, 3409, 3411, 3414, 3415, 3416, 3418, 3422, 3429, 3437, + 3433, 3435, 3419, 3424, 3436, 3438, 3447, 3440, 3444, 3445, + 6384, 3449, 3450, 3452, 3453, 3454, 3461, 3464, 3457, 6384, + 3465, 3467, 3469, 3471, 3472, 3474, 3476, 3478, 3479, 3483, + 3485, 6384, 3481, 3487, 3494, 3489, 3491, 3496, 3499, 3503, + 3505, 6384, 3508, 3510, 3517, 3515, 3512, 3516, 3520, 3521, - 3524, 3525, 3526, 3528, 3530, 3533, 3531, 3544, 3545, 3532, - 3553, 3554, 3536, 6365, 3546, 3558, 3559, 3560, 3561, 3567, - 3568, 3571, 3573, 3562, 3577, 3584, 3566, 3574, 3589, 3586, - 3597, 3593, 6365, 3598, 3594, 3605, 3579, 3600, 3602, 3606, - 3608, 3610, 3607, 3611, 3614, 3617, 3624, 3619, 3620, 3621, - 3629, 3625, 6365, 3636, 3634, 3627, 3637, 3643, 3644, 3652, - 3647, 3649, 3650, 3658, 3651, 3660, 3653, 3662, 3663, 3666, - 3655, 6365, 6365, 3668, 3670, 3672, 6365, 3674, 3676, 3685, - 3687, 3678, 3688, 3682, 3691, 3680, 3692, 3690, 3694, 6365, - 3696, 3704, 3702, 3705, 3713, 3714, 3718, 3715, 3719, 3709, + 3522, 3525, 3527, 3526, 3528, 3529, 3530, 3532, 3534, 3537, + 3535, 3548, 3549, 3536, 3557, 3558, 3540, 6384, 3550, 3562, + 3563, 3564, 3565, 3571, 3572, 3575, 3577, 3566, 3581, 3588, + 3570, 3578, 3593, 3590, 3601, 3597, 6384, 3602, 3598, 3609, + 3583, 3604, 3606, 3610, 3612, 3614, 3611, 3615, 3618, 3619, + 3622, 3631, 3621, 3624, 3628, 3638, 3629, 6384, 3643, 3639, + 3641, 3645, 3646, 3650, 3658, 3651, 3654, 3655, 3662, 3659, + 3663, 3666, 3667, 3668, 3671, 3672, 6384, 6384, 3678, 3673, + 3675, 6384, 3679, 3680, 3687, 3683, 3690, 3691, 3693, 3694, + 3695, 3696, 3699, 3702, 6384, 3704, 3713, 3708, 3705, 3716, - 3711, 3721, 3723, 3724, 3725, 3731, 3740, 3741, 3727, 3737, - 3739, 6365, 3736, 3738, 3744, 3746, 3748, 3750, 6365, 3753, - 3754, 3755, 3757, 3763, 3764, 3769, 3771, 3773, 3774, 3776, - 3777, 3778, 3779, 3781, 3786, 3784, 3791, 3792, 3783, 6365, - 3796, 3797, 3800, 3803, 6365, 3807, 3810, 3817, 3818, 3814, - 3816, 3815, 3825, 6365, 3822, 3824, 3823, 3826, 3836, 3831, - 3838, 3837, 3829, 6365, 3833, 3839, 3843, 6365, 3844, 3849, - 3855, 3857, 3846, 3865, 3861, 3863, 3864, 3860, 6365, 3871, - 6365, 3872, 3862, 3877, 6365, 3873, 3879, 3881, 3883, 3880, - 3887, 3888, 3894, 3896, 3884, 3890, 3898, 3900, 3901, 3902, + 3720, 3723, 3719, 3717, 3715, 3727, 3729, 3730, 3731, 3732, + 3736, 3740, 3744, 3739, 3742, 3743, 6384, 3745, 3748, 3750, + 3752, 3753, 3754, 6384, 3756, 3760, 3761, 3762, 3774, 3776, + 3766, 3779, 3768, 3781, 3783, 3785, 3784, 3786, 3793, 3788, + 3791, 3798, 3799, 3801, 6384, 3807, 3808, 3792, 3810, 6384, + 3814, 3821, 3817, 3828, 3818, 3825, 3823, 3832, 6384, 3827, + 3829, 3831, 3834, 3842, 3838, 3846, 3845, 3837, 6384, 3841, + 3847, 3851, 6384, 3852, 3857, 3862, 3864, 3848, 3871, 3867, + 3869, 3870, 3872, 6384, 3875, 6384, 3879, 3877, 3883, 6384, + 3878, 3885, 3886, 3888, 3892, 3893, 3894, 3900, 3896, 3902, - 3909, 3906, 3908, 3910, 3911, 6365, 3914, 3912, 3913, 3920, - 3931, 3918, 3923, 3929, 3933, 3934, 6365, 6365, 3937, 6365, - 3939, 3940, 3941, 6365, 3943, 3945, 3952, 3944, 3948, 3951, - 3955, 3960, 6365, 3963, 3964, 6365, 3966, 3973, 3969, 3970, - 3971, 3974, 3977, 3978, 3981, 3982, 3983, 3979, 3985, 3984, - 6365, 3987, 3988, 3989, 3997, 3980, 4002, 4006, 4008, 4004, - 6365, 4010, 4012, 4016, 4018, 4019, 6365, 4020, 6365, 4017, - 4021, 4025, 4031, 4027, 6365, 4036, 4028, 4040, 4032, 4043, - 4045, 4044, 4050, 4041, 4051, 4060, 4052, 4053, 4056, 6365, - 4061, 4062, 4068, 4069, 4063, 4065, 4079, 4072, 4081, 4074, + 3904, 3905, 3906, 3907, 3909, 3916, 3908, 3912, 3915, 3917, + 6384, 3918, 3920, 3927, 3928, 3934, 3932, 3937, 3924, 3939, + 3940, 6384, 6384, 3943, 6384, 3947, 3946, 3948, 6384, 3951, + 3954, 3958, 3955, 3956, 3959, 3970, 3963, 6384, 3974, 3975, + 6384, 3960, 3978, 3985, 3980, 3967, 3977, 3981, 3986, 3988, + 3990, 3991, 3992, 3993, 3996, 3994, 6384, 3998, 3999, 4005, + 4007, 4008, 4001, 4012, 4020, 4010, 6384, 4023, 4014, 4024, + 4027, 4029, 6384, 4031, 6384, 4033, 4034, 4035, 4037, 4038, + 6384, 4044, 4041, 4049, 4045, 4053, 4050, 4054, 4056, 4060, + 4062, 4069, 4065, 4064, 4066, 6384, 4067, 4073, 4076, 4079, - 4082, 4087, 4084, 4088, 4093, 4091, 4097, 4095, 6365, 4099, - 4101, 4104, 4115, 4107, 4105, 6365, 4106, 4119, 4121, 6365, - 4110, 4112, 4120, 4128, 4122, 4130, 4131, 4135, 4136, 6365, - 4133, 4134, 4137, 4138, 4139, 4141, 6365, 6365, 4152, 6365, - 4153, 4142, 4154, 4155, 4156, 4161, 4163, 4166, 4168, 4160, - 4172, 4177, 4174, 4164, 4184, 4191, 4194, 4189, 4190, 4180, - 6365, 6365, 4196, 4201, 4197, 4204, 4207, 4193, 4199, 4215, - 4213, 4210, 4220, 4221, 4228, 6365, 4225, 4212, 4230, 4223, - 6365, 4214, 4231, 4224, 4233, 4235, 4237, 4238, 4241, 4244, - 4242, 4246, 4252, 4250, 4253, 4251, 4259, 4257, 4260, 4262, + 4068, 4072, 4090, 4088, 4089, 4081, 4094, 4096, 4085, 4100, + 4103, 4098, 4106, 4105, 6384, 4108, 4112, 4109, 4119, 4115, + 4116, 6384, 4121, 4122, 4126, 6384, 4125, 4129, 4132, 4135, + 4136, 4137, 4140, 4139, 4142, 6384, 4146, 4147, 4143, 4145, + 4160, 4152, 6384, 6384, 4162, 6384, 4164, 4144, 4151, 4169, + 4148, 4171, 4175, 4176, 4178, 4172, 4179, 4184, 4182, 4186, + 4194, 4196, 4198, 4197, 4199, 4201, 6384, 6384, 4203, 4204, + 4206, 4210, 4211, 4213, 4214, 4222, 4218, 4226, 4229, 4231, + 4239, 6384, 4220, 4217, 4234, 4235, 6384, 4240, 4241, 4243, + 4242, 4244, 4245, 4248, 4247, 4251, 4250, 4253, 4254, 4259, - 4263, 4268, 4271, 6365, 4272, 4273, 4274, 4275, 4278, 4281, - 4282, 4283, 4284, 6365, 4289, 6365, 4288, 4285, 4294, 4307, - 4308, 4287, 4297, 4309, 4299, 4314, 4317, 4319, 4311, 4320, - 4321, 4325, 4328, 4330, 4331, 6365, 4335, 4324, 4332, 4338, - 4342, 4346, 4339, 4348, 4343, 4354, 4349, 4351, 4360, 4363, - 4355, 4357, 4365, 4367, 6365, 4368, 4371, 4372, 4375, 4376, - 4377, 4378, 4384, 4388, 4380, 4382, 4389, 4393, 6365, 4390, - 4395, 4396, 4398, 4404, 4401, 4407, 4406, 4409, 6365, 4414, - 4405, 4415, 4416, 4417, 4419, 4423, 4426, 4429, 4431, 4436, - 6365, 4428, 4441, 4442, 4432, 4445, 4434, 4443, 4444, 6365, + 4268, 4260, 4262, 4270, 4261, 4271, 4275, 4277, 4279, 6384, + 4281, 4283, 4284, 4285, 4287, 4290, 4291, 4292, 4293, 6384, + 4298, 6384, 4294, 4296, 4299, 4315, 4301, 4316, 4319, 4318, + 4306, 4323, 4324, 4327, 4329, 4330, 4333, 4334, 4332, 4338, + 4340, 4342, 6384, 4343, 4349, 4350, 4351, 4353, 4355, 4356, + 4358, 4359, 4361, 4364, 4362, 4366, 4372, 4368, 4374, 4373, + 4376, 6384, 4380, 4389, 4378, 4391, 4381, 4386, 4393, 4400, + 4403, 4394, 4404, 4398, 4406, 6384, 4407, 4408, 4409, 4410, + 4412, 4415, 4418, 4420, 4421, 6384, 4426, 4422, 4430, 4429, + 4428, 4432, 4433, 4438, 4440, 4445, 4448, 6384, 4441, 4452, - 4459, 4460, 4451, 4467, 4450, 4468, 4469, 4472, 4453, 4463, - 4479, 4475, 4480, 4481, 4483, 4473, 4491, 4494, 4493, 6365, - 4486, 6365, 4495, 4498, 4502, 4500, 4503, 4505, 6365, 4507, - 4510, 4512, 4513, 4515, 6365, 4517, 4514, 4516, 4520, 6365, - 4518, 4533, 4519, 4522, 4536, 4540, 6365, 4543, 4544, 4545, - 4552, 4554, 4549, 4556, 4537, 4559, 4553, 4557, 4561, 4562, - 4570, 4567, 4568, 6365, 4572, 4566, 4575, 4577, 4584, 4579, - 4585, 4586, 4592, 4587, 6365, 4589, 4593, 4595, 4596, 4597, - 4598, 4599, 4608, 4603, 4606, 4607, 4611, 4612, 6365, 4617, - 4614, 4620, 4627, 4623, 4632, 6365, 6365, 4622, 4637, 4639, + 4455, 4444, 4454, 4456, 4458, 4461, 6384, 4465, 4471, 4464, + 4478, 4462, 4480, 4481, 4484, 4473, 4475, 4482, 4490, 4491, + 4492, 4493, 4494, 4503, 4510, 4505, 6384, 4495, 6384, 4507, + 4511, 4519, 4517, 4520, 4514, 6384, 4506, 4521, 4524, 4527, + 4529, 6384, 4528, 4530, 4532, 4531, 6384, 4541, 4545, 4533, + 4539, 4549, 4554, 6384, 4557, 4558, 4559, 4566, 4568, 4563, + 4570, 4565, 4573, 4571, 4567, 4575, 4576, 4584, 4582, 4580, + 6384, 4586, 4588, 4593, 4595, 4603, 4589, 4587, 4601, 4609, + 4599, 6384, 4606, 4604, 4610, 4613, 4614, 4615, 4616, 4623, + 4619, 4620, 4622, 4626, 4628, 4629, 6384, 4631, 4632, 4634, - 4619, 4640, 6365, 6365, 4643, 4650, 4646, 4649, 4651, 6365, - 6365, 4653, 6365, 4654, 6365, 4655, 4657, 6365, 6365, 4656, - 4659, 4662, 4663, 4665, 6365, 4671, 6365, 4680, 4675, 4666, - 4677, 4678, 6365, 4679, 4681, 4687, 6365, 4688, 4690, 4689, - 4691, 6365, 4695, 4700, 4692, 4696, 6365, 4701, 4705, 4708, - 4709, 4710, 4712, 4716, 4715, 4720, 4721, 4723, 4722, 4725, - 4732, 4736, 4738, 4740, 4741, 4726, 4743, 4745, 4749, 4747, - 4751, 4752, 4754, 4756, 4757, 4761, 4765, 4758, 4762, 4628, - 4766, 4767, 4768, 4771, 4775, 4780, 4777, 4781, 4782, 4783, - 4784, 4785, 4788, 4789, 4792, 4794, 4797, 6365, 4793, 4798, + 4642, 4644, 4647, 6384, 6384, 4637, 4653, 4655, 4640, 4656, + 6384, 6384, 4659, 4667, 4660, 4665, 4662, 6384, 6384, 4669, + 6384, 4670, 6384, 4673, 4674, 6384, 6384, 4675, 4676, 4677, + 4678, 4685, 6384, 4692, 6384, 4695, 4693, 4681, 4679, 4698, + 6384, 4686, 4696, 4700, 6384, 4704, 4712, 4707, 4709, 6384, + 4711, 4714, 4715, 4718, 6384, 4719, 4722, 4723, 4726, 4729, + 4727, 4731, 4716, 4735, 4739, 4737, 4740, 4741, 4748, 4753, + 4755, 4757, 4750, 4743, 4758, 4764, 4766, 4759, 4768, 4769, + 4770, 4773, 4774, 4776, 4778, 4779, 4782, 4781, 4783, 4784, + 4787, 4785, 4791, 4797, 4798, 4799, 4800, 4801, 4802, 4803, - 4803, 4810, 4804, 4814, 4816, 4806, 4823, 4824, 6365, 4827, - 6365, 4829, 4815, 4831, 4817, 4832, 6365, 4834, 4835, 4837, - 4838, 4839, 4840, 4841, 4844, 4845, 4849, 4850, 6365, 4856, - 4846, 6365, 4852, 4857, 4869, 6365, 4862, 4873, 4865, 4870, - 4875, 4876, 4877, 4878, 4881, 4879, 4885, 4887, 4889, 4893, - 4901, 4903, 4910, 4890, 4894, 4892, 4912, 4905, 4906, 4913, - 4914, 4920, 4921, 4928, 6365, 4915, 6365, 4922, 4924, 4929, - 4930, 4932, 4933, 4935, 6365, 6365, 4936, 4939, 4945, 4940, - 4946, 4948, 4957, 6365, 4951, 4958, 4960, 4952, 6365, 4963, - 4949, 4967, 4971, 6365, 4968, 4972, 4973, 4975, 4976, 4983, + 4806, 4808, 4810, 4812, 4813, 6384, 4815, 4816, 4821, 4829, + 4822, 4830, 4834, 4824, 4841, 4842, 6384, 4845, 6384, 4847, + 4831, 4850, 4837, 4851, 6384, 4852, 4853, 4854, 4855, 4858, + 4857, 4860, 4859, 4863, 4864, 4868, 6384, 4874, 4865, 6384, + 4870, 4878, 4884, 6384, 4885, 4889, 4886, 4890, 4891, 4895, + 4893, 4896, 4897, 4899, 4901, 4903, 4905, 4906, 4909, 4917, + 4920, 4927, 4912, 4907, 4923, 4926, 4928, 4929, 4932, 4933, + 4939, 4934, 4941, 6384, 4943, 6384, 4944, 4945, 4946, 4947, + 4950, 4951, 4954, 6384, 6384, 4952, 4956, 4961, 4963, 4957, + 4966, 4970, 6384, 4968, 4976, 4982, 4977, 6384, 4969, 4979, - 4979, 4985, 4986, 4988, 4990, 6365, 6365, 6365, 6365, 4991, - 4993, 4997, 4998, 4999, 5001, 5004, 5006, 5003, 6365, 5008, - 6365, 6365, 5009, 5016, 5017, 5019, 5020, 5022, 5023, 5025, - 6365, 5027, 5029, 5030, 5036, 5038, 5040, 5044, 5045, 5048, - 5046, 5047, 5055, 5054, 5056, 5058, 5061, 5063, 5068, 6365, - 6365, 5069, 5071, 5072, 5080, 5076, 5078, 5077, 5090, 5085, - 5087, 5086, 5088, 5093, 5094, 5102, 5104, 5100, 5097, 6365, - 5106, 5107, 5108, 6365, 5113, 6365, 5114, 5116, 5099, 5110, - 5118, 5120, 5130, 5124, 6365, 6365, 5132, 5128, 6365, 6365, - 5135, 5136, 5138, 5140, 5141, 5137, 5143, 5145, 5142, 6365, + 4985, 4987, 6384, 4988, 4989, 4991, 4993, 4994, 4997, 5001, + 5002, 5003, 5004, 5008, 6384, 6384, 6384, 6384, 5009, 5012, + 5015, 5017, 5018, 5020, 5023, 5022, 5024, 6384, 5026, 6384, + 6384, 5028, 5035, 5027, 5037, 5036, 5038, 5043, 5045, 6384, + 5046, 5049, 5050, 5047, 5059, 5064, 5066, 5060, 5051, 5068, + 5069, 5076, 5072, 5073, 5075, 5078, 5080, 5082, 6384, 6384, + 5071, 5089, 5091, 5098, 5095, 5096, 5085, 5108, 5103, 5104, + 5105, 5106, 5110, 5111, 5119, 5122, 5112, 5115, 6384, 5120, + 5123, 5126, 6384, 5125, 6384, 5130, 5133, 5124, 5131, 5134, + 5139, 5140, 5145, 6384, 6384, 5146, 5153, 5149, 6384, 6384, - 5147, 6365, 5148, 5149, 5151, 5152, 5165, 5169, 5170, 5167, - 5171, 5173, 6365, 5172, 5174, 6365, 5176, 5175, 5182, 6365, - 5183, 5185, 5191, 5193, 6365, 5195, 5196, 5199, 6365, 5202, - 6365, 5186, 5205, 5207, 5214, 6365, 5198, 5211, 6365, 5216, - 5221, 5222, 5217, 6365, 5209, 6365, 5223, 5229, 5231, 5234, - 5224, 5236, 5237, 5226, 5238, 5246, 5242, 5245, 6365, 6365, - 135, 5254, 5247, 5251, 5255, 5256, 5263, 5258, 5260, 5266, - 6365, 6365, 5267, 6365, 5261, 5273, 6365, 5259, 5274, 5278, - 5268, 5282, 5280, 5281, 5288, 5290, 5291, 5292, 5293, 5294, - 5296, 5297, 5312, 5299, 5309, 5314, 5316, 5319, 5321, 5310, + 5150, 5151, 5156, 5158, 5159, 5152, 5162, 5166, 5160, 6384, + 5167, 6384, 5163, 5168, 5174, 5170, 5186, 5187, 5190, 5189, + 5185, 5191, 6384, 5192, 5194, 6384, 5198, 5197, 5199, 6384, + 5203, 5200, 5206, 5209, 6384, 5213, 5215, 5216, 6384, 5223, + 6384, 5210, 5220, 5217, 5232, 6384, 5224, 5227, 6384, 5234, + 5236, 5237, 5238, 6384, 5239, 6384, 5241, 5243, 5245, 5248, + 5249, 5253, 5250, 5254, 5255, 5262, 5259, 5266, 6384, 6384, + 135, 5274, 5260, 5265, 5267, 5271, 5281, 5276, 5278, 5280, + 6384, 6384, 5284, 6384, 5286, 5288, 6384, 5290, 5292, 5296, + 5293, 5298, 5299, 5300, 5302, 5305, 5307, 5319, 5309, 5306, - 5323, 5324, 5325, 5327, 5329, 5330, 5332, 5333, 6365, 5336, - 5337, 5331, 6365, 5342, 5338, 5348, 5350, 6365, 5357, 5354, - 5358, 5359, 6365, 5343, 5365, 5362, 5360, 5370, 5377, 5373, - 5372, 5374, 6365, 6365, 6365, 5375, 5383, 6365, 5388, 5379, - 5384, 5389, 6365, 5390, 5391, 6365, 6365, 5392, 5395, 5394, - 5402, 6365, 5398, 6365, 5397, 6365, 5400, 5401, 5411, 5413, - 6365, 5415, 5423, 6365, 5426, 5429, 5431, 5432, 5416, 5419, - 5434, 6365, 5443, 5435, 5442, 5445, 5433, 5446, 5448, 5449, - 5450, 5459, 5452, 5456, 6365, 5457, 5460, 5462, 5463, 5466, - 5471, 5472, 5470, 6365, 5474, 6365, 5408, 5475, 5476, 5482, + 5318, 5324, 5314, 5312, 5329, 5332, 5334, 5336, 5338, 5340, + 5341, 5342, 5343, 5344, 5345, 5347, 5348, 5350, 5351, 6384, + 5354, 5355, 5359, 6384, 5361, 5365, 5367, 5363, 6384, 5374, + 5375, 5376, 5378, 6384, 5379, 5381, 5382, 5383, 5388, 5395, + 5391, 5390, 5396, 6384, 6384, 6384, 5393, 5402, 6384, 5406, + 5407, 5408, 5409, 6384, 5410, 5411, 6384, 6384, 5412, 5413, + 5414, 5424, 6384, 5416, 6384, 5415, 6384, 5420, 5426, 5429, + 5432, 6384, 5435, 5438, 6384, 5444, 5446, 5448, 5449, 5450, + 5452, 5451, 6384, 5459, 5455, 5457, 5464, 5454, 5461, 5465, + 5469, 5466, 5481, 5467, 5477, 6384, 5478, 5480, 5483, 5489, - 5478, 5479, 5481, 5492, 5484, 5483, 5495, 5500, 5496, 6365, - 5503, 5505, 6365, 5506, 6365, 5508, 6365, 5509, 5510, 5512, - 5511, 6365, 5514, 5517, 5518, 5519, 6365, 5522, 5520, 5524, - 5530, 6365, 6365, 5531, 5539, 5535, 5532, 5545, 5547, 5536, - 5549, 5542, 5550, 5552, 5561, 5557, 5558, 5560, 5563, 5564, - 5565, 6365, 6365, 6365, 5569, 5571, 5579, 5575, 5582, 5583, - 5578, 6365, 5584, 5587, 5588, 5590, 5598, 5594, 5600, 6365, - 5595, 5597, 5601, 5603, 5605, 5602, 5606, 5608, 6365, 5614, - 5619, 5620, 5622, 5623, 5630, 5632, 5634, 5624, 5641, 5637, - 6365, 5639, 6365, 6365, 5627, 6365, 5640, 5643, 5644, 5647, + 5468, 5479, 5491, 5493, 6384, 5496, 6384, 5497, 5498, 5499, + 5500, 5501, 5502, 5504, 5514, 5507, 5515, 5505, 5516, 5526, + 5518, 6384, 5528, 5530, 6384, 5520, 6384, 5532, 6384, 5522, + 5533, 5534, 5535, 6384, 5544, 5536, 5539, 5545, 6384, 5546, + 5551, 5548, 5553, 6384, 6384, 5554, 5561, 5558, 5557, 5560, + 5569, 5566, 5571, 5572, 5573, 5575, 5584, 5577, 5576, 5580, + 5592, 5594, 5598, 6384, 6384, 6384, 5581, 5585, 5607, 5603, + 5606, 5610, 5608, 6384, 5611, 5613, 5614, 5615, 5623, 5618, + 5621, 6384, 5625, 5622, 5624, 5628, 5630, 5627, 5638, 5639, + 6384, 5632, 5644, 5645, 5633, 5651, 5653, 5655, 5658, 5659, - 6365, 5652, 5645, 5649, 5654, 5656, 5658, 6365, 5667, 5653, - 5660, 5670, 6365, 6365, 5672, 6365, 5677, 5678, 5668, 5680, - 5681, 5684, 5686, 5689, 6365, 5687, 5688, 5690, 5691, 5696, - 6365, 5697, 5698, 5699, 5700, 6365, 5704, 5709, 5706, 5710, - 5711, 6365, 5713, 5701, 5732, 5728, 6365, 5714, 5730, 5727, - 6365, 6365, 5737, 5739, 5741, 6365, 6365, 6365, 5742, 5729, - 5744, 6365, 5750, 5754, 5758, 5762, 5753, 6365, 5764, 5761, - 5766, 6365, 6365, 5765, 5767, 5768, 5770, 6365, 6365, 5746, - 5774, 5772, 5775, 5777, 6365, 5778, 5782, 5788, 5794, 5798, - 5786, 5790, 5799, 5806, 5809, 5802, 5804, 5807, 5810, 5812, + 5660, 5667, 5663, 6384, 5665, 6384, 6384, 5662, 6384, 5666, + 5669, 5670, 5673, 6384, 5676, 5671, 5677, 5678, 5680, 5683, + 6384, 5690, 5689, 5693, 5694, 6384, 6384, 5696, 6384, 5701, + 5698, 5702, 5710, 5705, 5706, 5708, 5713, 6384, 5711, 5715, + 5719, 5720, 5721, 6384, 5722, 5723, 5725, 5726, 6384, 5729, + 5728, 5733, 5734, 5736, 6384, 5738, 5737, 5754, 5753, 6384, + 5739, 5756, 5749, 6384, 6384, 5764, 5766, 5767, 6384, 6384, + 6384, 5769, 5770, 5760, 5773, 6384, 5777, 5783, 5787, 5791, + 5774, 6384, 5793, 5782, 5790, 6384, 6384, 5786, 5794, 5796, + 5798, 6384, 6384, 5795, 5802, 5799, 5807, 5808, 6384, 5810, - 5813, 5821, 5822, 5818, 5826, 5830, 5834, 5831, 6365, 6365, - 5838, 5840, 5814, 6365, 6365, 5842, 5844, 5846, 5848, 5850, - 5852, 5854, 6365, 5855, 5857, 5858, 5859, 5860, 6365, 5862, - 5866, 5861, 5869, 5863, 5872, 5868, 5878, 6365, 6365, 5870, - 5712, 5874, 5884, 5879, 6365, 5886, 5893, 5890, 5891, 5892, - 5894, 5898, 6365, 5895, 5899, 6365, 6365, 6365, 5902, 6365, - 6365, 5903, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 5906, - 6365, 5905, 5916, 5920, 5922, 6365, 5907, 5923, 5924, 5913, - 5925, 6365, 5926, 5927, 5931, 5935, 5940, 5941, 5934, 5943, - 5945, 5944, 5946, 5950, 5948, 5952, 5951, 5953, 5954, 5956, + 5812, 5817, 5825, 5827, 5815, 5829, 5831, 5838, 5811, 5819, + 5833, 5835, 5836, 5842, 5839, 5846, 5855, 5851, 5853, 5860, + 5862, 5863, 6384, 6384, 5865, 6384, 5867, 5813, 6384, 6384, + 5870, 5872, 5874, 5876, 5878, 5880, 5882, 6384, 5883, 5885, + 5886, 5740, 5887, 6384, 5889, 5891, 5888, 5893, 5897, 5898, + 5896, 5901, 6384, 6384, 5894, 5902, 5904, 5913, 5910, 6384, + 5915, 5922, 5917, 5919, 5920, 5923, 5921, 6384, 5926, 5925, + 6384, 6384, 6384, 5927, 6384, 6384, 5929, 6384, 6384, 6384, + 6384, 6384, 6384, 6384, 5933, 6384, 5935, 5944, 5946, 5950, + 6384, 5938, 5947, 5850, 5940, 5951, 6384, 5952, 5953, 5954, - 6365, 6365, 6365, 5959, 5966, 5968, 5969, 5976, 5979, 5982, - 5984, 5970, 5977, 5985, 5987, 5990, 5991, 5993, 6000, 5996, - 5999, 5998, 6001, 6005, 6007, 6002, 6009, 6013, 6365, 6014, - 6365, 6015, 6365, 6365, 6019, 6022, 6024, 6020, 6031, 6036, - 6026, 6034, 6027, 6037, 6044, 6049, 6365, 6365, 6035, 6038, - 6365, 6041, 6050, 6365, 6045, 6052, 6051, 6053, 6059, 6060, - 6062, 6063, 6074, 6365, 6365, 6061, 6064, 6069, 6076, 6078, - 6077, 6084, 6086, 6087, 6089, 6080, 6096, 6365, 6098, 6095, - 6102, 6365, 6103, 6093, 6104, 6105, 6106, 6114, 6109, 6110, - 6365, 6115, 6365, 6118, 6120, 6121, 6119, 6122, 6127, 6130, + 5587, 5957, 5962, 5958, 5966, 5968, 5967, 5969, 5973, 5970, + 5977, 5974, 5976, 5978, 5982, 6384, 6384, 6384, 5990, 5980, + 5992, 5984, 5997, 6001, 6006, 6008, 5999, 6003, 6009, 6010, + 6011, 6013, 6014, 6025, 6017, 6020, 6021, 6022, 6028, 6034, + 6024, 6030, 6036, 6384, 6037, 6384, 6040, 6384, 6384, 6044, + 6045, 6047, 6041, 6054, 6056, 6051, 6053, 6057, 6059, 6062, + 6068, 6384, 6384, 6063, 6069, 6384, 6071, 6070, 6384, 6072, + 6073, 6075, 6077, 6080, 6079, 6081, 6082, 6096, 6384, 6384, + 6083, 6088, 6091, 6100, 6097, 6107, 6104, 6108, 6109, 6111, + 6112, 6121, 6384, 6118, 6119, 6123, 6384, 6125, 6120, 6126, - 6134, 6133, 6365, 6135, 6136, 6143, 6144, 6147, 6149, 6150, - 6151, 6153, 6155, 6156, 6164, 6159, 6165, 6167, 6168, 6169, - 6365, 6175, 6171, 6365, 6176, 6177, 6178, 6179, 6183, 6365, - 6192, 6180, 6185, 6193, 6196, 6200, 6365, 6202, 6206, 6203, - 6365, 6208, 6365, 6365, 6209, 6211, 6212, 6216, 6218, 6365, - 6365, 6365, 6245, 6252, 6259, 6266, 6273, 6280, 6287, 88, - 6294, 6301, 6308, 6315, 6322, 6329, 6336, 6343, 6350, 6357 + 6127, 6128, 6136, 6132, 6135, 6384, 6137, 6384, 6141, 6143, + 6144, 6134, 6142, 6145, 6156, 6154, 6150, 6384, 6160, 6164, + 6162, 6166, 6168, 6170, 6171, 6172, 6174, 6177, 6183, 6180, + 6187, 6188, 6184, 6192, 6189, 6384, 6199, 6190, 6384, 6196, + 6200, 6193, 6202, 6206, 6384, 6211, 6204, 6213, 6214, 6217, + 6218, 6384, 6220, 6227, 6222, 6384, 6228, 6384, 6384, 6230, + 6224, 6231, 6237, 6239, 6384, 6384, 6384, 6264, 6271, 6278, + 6285, 6292, 6299, 6306, 88, 6313, 6320, 6327, 6334, 6341, + 6348, 6355, 6362, 6369, 6376 } ; -static const flex_int16_t yy_def[3271] = +static const flex_int16_t yy_def[3286] = { 0, - 3252, 1, 3253, 3253, 3254, 3254, 3255, 3255, 3256, 3256, - 3257, 3257, 3258, 3258, 3259, 3259, 3252, 3260, 3252, 3252, - 3252, 3252, 3261, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3262, 3252, 3252, 3252, - 3262, 3263, 3252, 3252, 3252, 3263, 3264, 3252, 3252, 3252, - 3252, 3264, 3265, 3252, 3252, 3252, 3265, 3266, 3252, 3267, - 3252, 3266, 3266, 3268, 3252, 3252, 3252, 3252, 3268, 3269, - 3252, 3252, 3252, 3269, 3260, 3260, 3252, 3270, 3261, 3270, - 3261, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3267, 1, 3268, 3268, 3269, 3269, 3270, 3270, 3271, 3271, + 3272, 3272, 3273, 3273, 3274, 3274, 3267, 3275, 3267, 3267, + 3267, 3267, 3276, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3277, 3267, 3267, 3267, + 3277, 3278, 3267, 3267, 3267, 3278, 3279, 3267, 3267, 3267, + 3267, 3279, 3280, 3267, 3267, 3267, 3280, 3281, 3267, 3282, + 3267, 3281, 3281, 3283, 3267, 3267, 3267, 3267, 3283, 3284, + 3267, 3267, 3267, 3284, 3275, 3275, 3267, 3285, 3276, 3285, + 3276, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3262, 3262, 3263, - 3263, 3264, 3264, 3252, 3265, 3265, 3266, 3266, 3267, 3267, - 3266, 3268, 3268, 3252, 3269, 3269, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3277, 3277, 3278, + 3278, 3279, 3279, 3267, 3280, 3280, 3281, 3281, 3282, 3282, + 3281, 3283, 3283, 3267, 3284, 3284, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3266, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3281, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3266, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3281, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3266, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3281, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3266, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3281, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3252, - 3252, 3260, 3252, 3252, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3267, + 3267, 3275, 3267, 3267, 3275, 3275, 3267, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3266, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3281, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3267, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3252, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3267, 3275, + 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3267, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3266, 3266, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3281, 3281, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3266, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3281, + 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3266, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3267, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3267, 3275, 3275, 3275, 3275, + 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, + 3275, 3281, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3267, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3266, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3267, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, + 3281, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3252, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3267, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3266, 3260, 3252, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3252, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3281, 3275, 3267, 3275, + 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3267, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3252, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3267, 3275, 3267, 3275, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, + 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, + 3275, 3275, 3267, 3275, 3267, 3275, 3275, 3275, 3275, 3275, + 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3266, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3267, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3281, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3267, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, + 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3252, 3260, 3260, 3260, 3260, 3266, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3267, 3275, + 3275, 3275, 3275, 3281, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, - 3260, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3252, - 3252, 3260, 3252, 3260, 3252, 3260, 3260, 3252, 3252, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3266, 3260, 3260, 3260, 3260, 3252, 3260, 3260, + 3275, 3275, 3275, 3267, 3267, 3275, 3275, 3275, 3275, 3275, + 3267, 3267, 3275, 3275, 3275, 3275, 3275, 3267, 3267, 3275, + 3267, 3275, 3267, 3275, 3275, 3267, 3267, 3275, 3275, 3275, + 3275, 3275, 3267, 3275, 3267, 3275, 3275, 3275, 3275, 3275, + 3267, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3252, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, + 3281, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3267, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3267, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3267, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3252, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3266, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3252, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, + 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3267, 3267, 3267, 3267, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3267, + 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3275, 3275, 3275, 3281, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3267, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, + 3275, 3275, 3267, 3275, 3267, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3267, 3275, 3275, 3275, 3267, 3267, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3252, 3260, - 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, - 3266, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3252, 3260, 3252, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, + 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3275, 3275, 3267, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3267, 3275, + 3267, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3267, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3267, + 3281, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3267, 3267, 3275, 3267, 3275, 3275, 3267, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3252, 3252, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3252, 3252, 3260, 3260, 3260, - 3260, 3252, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3267, 3267, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3267, 3267, 3275, 3275, + 3275, 3275, 3267, 3275, 3267, 3275, 3267, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3252, 3260, 3252, 3260, 3252, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3252, 3252, 3260, 3252, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3267, 3275, 3267, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3267, 3275, 3267, 3275, 3267, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3267, 3267, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3267, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3252, 3252, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3252, 3252, 3260, 3260, 3260, 3252, 3252, 3252, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3252, 3252, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3267, 3275, 3267, 3267, 3275, 3267, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3267, 3275, 3275, 3275, 3275, 3267, 3267, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3267, 3267, 3275, 3275, 3275, 3267, 3267, + 3267, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3267, 3267, 3275, 3275, 3275, + 3275, 3267, 3267, 3275, 3275, 3275, 3275, 3275, 3267, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, - 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3252, 3252, 3252, 3260, 3252, - 3252, 3260, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3260, - 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3267, 3275, 3267, 3275, 3275, 3267, 3267, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3267, 3275, 3275, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, + 3267, 3267, 3267, 3275, 3267, 3267, 3275, 3267, 3267, 3267, + 3267, 3267, 3267, 3267, 3275, 3267, 3275, 3275, 3275, 3275, + 3267, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, - 3252, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3252, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, - 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3267, 3267, 3267, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3267, 3275, 3267, 3267, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3267, 3275, 3275, 3267, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3267, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3275, 3275, 3275, 3267, 3275, 3275, 3275, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3252, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3252, - 3252, 0, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252 + 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3267, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3267, 3275, 3267, 3267, 3275, + 3275, 3275, 3275, 3275, 3267, 3267, 0, 3267, 3267, 3267, + 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, + 3267, 3267, 3267, 3267, 3267 } ; -static const flex_int16_t yy_nxt[6406] = +static const flex_int16_t yy_nxt[6425] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1677,530 +1682,532 @@ static const flex_int16_t yy_nxt[6406] = 86, 86, 910, 922, 86, 911, 86, 926, 924, 912, 86, 928, 913, 86, 86, 929, 940, 931, 930, 914, 915, 927, 916, 86, 86, 932, 933, 86, 934, 86, - 86, 935, 939, 86, 942, 86, 936, 943, 945, 944, - 86, 86, 937, 938, 86, 86, 950, 941, 949, 86, + 86, 935, 939, 86, 942, 86, 936, 943, 946, 944, + 86, 86, 937, 938, 86, 86, 951, 941, 950, 86, - 86, 951, 86, 86, 953, 86, 947, 952, 86, 946, - 86, 955, 86, 956, 954, 957, 86, 959, 86, 948, - 86, 958, 960, 86, 962, 86, 86, 86, 86, 963, - 86, 86, 967, 86, 86, 961, 86, 970, 966, 86, - 86, 86, 968, 974, 984, 86, 964, 965, 969, 86, - 975, 971, 972, 976, 86, 86, 176, 977, 980, 981, - 979, 973, 978, 86, 86, 86, 86, 983, 86, 86, - 86, 982, 86, 86, 985, 987, 86, 986, 988, 86, - 989, 86, 86, 86, 994, 86, 991, 86, 990, 992, - 86, 997, 86, 998, 86, 86, 995, 86, 996, 86, + 86, 952, 86, 86, 954, 945, 948, 953, 86, 947, + 86, 956, 86, 957, 955, 958, 86, 960, 86, 949, + 86, 959, 961, 86, 86, 86, 86, 86, 86, 964, + 86, 86, 968, 86, 86, 962, 86, 971, 967, 86, + 86, 176, 969, 963, 975, 86, 965, 966, 970, 86, + 86, 972, 973, 978, 976, 977, 86, 86, 979, 86, + 981, 974, 980, 982, 994, 86, 86, 984, 86, 86, + 983, 985, 86, 86, 86, 988, 86, 86, 986, 989, + 86, 86, 987, 86, 86, 990, 995, 86, 992, 86, + 999, 993, 86, 998, 86, 86, 86, 86, 996, 991, - 86, 86, 993, 86, 1000, 86, 1001, 86, 1003, 86, - 1004, 86, 1005, 999, 86, 86, 1006, 86, 1013, 1007, - 1011, 86, 86, 1009, 1002, 1012, 86, 86, 1010, 86, - 86, 86, 1008, 86, 1018, 1020, 1014, 86, 1016, 1021, - 86, 1015, 1019, 86, 86, 86, 86, 86, 1023, 86, - 1025, 1017, 86, 86, 86, 86, 1029, 1031, 1022, 86, - 86, 86, 1034, 86, 86, 1024, 1026, 1027, 86, 1028, - 1035, 1036, 1032, 86, 1033, 1030, 86, 1038, 1040, 1037, - 86, 86, 1039, 1042, 86, 1041, 86, 86, 86, 86, - 1044, 86, 86, 1043, 1051, 1046, 1052, 1054, 86, 86, + 997, 86, 86, 86, 86, 86, 1001, 86, 1004, 86, + 1002, 86, 1006, 1005, 1000, 86, 1007, 86, 86, 1008, + 86, 1014, 1012, 86, 1010, 86, 1003, 1013, 86, 86, + 1011, 86, 1009, 1015, 1017, 86, 86, 86, 1019, 1021, + 1022, 86, 1016, 86, 86, 86, 1020, 86, 1024, 86, + 86, 86, 1023, 1018, 86, 86, 86, 1025, 1030, 1032, + 1035, 86, 86, 86, 1026, 1027, 86, 86, 86, 1028, + 1029, 1036, 1033, 1037, 1031, 1034, 86, 86, 86, 86, + 86, 1039, 1038, 1040, 1042, 1043, 86, 1045, 1044, 86, + 1041, 86, 86, 86, 86, 86, 1052, 1047, 1053, 1055, - 86, 1056, 86, 86, 86, 86, 1045, 86, 1047, 1057, - 1049, 1048, 1050, 1053, 86, 86, 86, 1060, 1055, 1062, - 1058, 86, 1065, 1059, 86, 1061, 86, 1064, 86, 86, - 86, 86, 1066, 1069, 1071, 86, 86, 1068, 86, 86, - 1074, 86, 1063, 1073, 86, 1075, 168, 86, 1067, 86, - 86, 1070, 86, 1077, 1072, 1081, 1076, 86, 1078, 86, - 86, 86, 86, 86, 86, 1094, 1079, 1080, 86, 1097, - 86, 1082, 1095, 86, 1084, 1085, 86, 86, 86, 86, - 86, 1086, 1099, 1083, 1087, 86, 1119, 174, 1088, 86, - 1089, 1096, 1100, 1101, 1090, 86, 1091, 86, 1098, 1104, + 1046, 86, 86, 1057, 86, 86, 86, 1058, 1054, 86, + 1059, 1048, 1050, 86, 1049, 1051, 86, 86, 86, 86, + 1066, 1056, 86, 1063, 86, 1065, 86, 86, 86, 1061, + 1067, 86, 1070, 1072, 86, 1060, 86, 1062, 86, 86, + 1064, 86, 1071, 86, 1069, 1075, 1068, 86, 1074, 86, + 1076, 168, 86, 1078, 1073, 86, 1077, 86, 1079, 86, + 1082, 1080, 86, 86, 86, 86, 86, 1081, 86, 1095, + 1096, 1083, 86, 1098, 86, 86, 1085, 1086, 86, 86, + 1124, 86, 1100, 1084, 1088, 1087, 86, 1097, 86, 1089, + 86, 1090, 86, 1103, 1101, 1091, 86, 1092, 86, 86, - 1102, 1092, 86, 1103, 1105, 86, 1093, 86, 86, 1113, - 86, 1106, 1108, 86, 86, 86, 86, 86, 1111, 1114, - 1121, 1107, 86, 86, 1109, 1110, 86, 1120, 1112, 1115, - 1122, 1117, 1118, 1123, 86, 1124, 86, 1116, 1125, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 1137, 86, - 1140, 86, 86, 86, 1136, 1142, 1141, 86, 1139, 86, - 1127, 1126, 86, 1128, 86, 1129, 1138, 1143, 1147, 86, - 1130, 86, 1131, 86, 86, 1146, 1144, 86, 1132, 86, - 173, 1145, 1148, 1133, 1134, 1152, 86, 1149, 86, 1150, - 1135, 1154, 1153, 1155, 86, 86, 86, 1151, 1156, 86, + 1099, 86, 1093, 1105, 1102, 1107, 1104, 1094, 1106, 86, + 86, 1114, 1108, 86, 1109, 86, 1111, 86, 1112, 86, + 1115, 86, 86, 86, 86, 86, 1110, 1121, 1113, 1125, + 1120, 1116, 1119, 1122, 86, 1118, 1123, 1126, 86, 86, + 1117, 86, 86, 86, 86, 86, 86, 1127, 86, 86, + 1138, 86, 1141, 86, 1142, 86, 1137, 1128, 1140, 1129, + 86, 1130, 1139, 1143, 86, 86, 1131, 1144, 1132, 86, + 1148, 86, 86, 86, 1133, 86, 86, 1149, 86, 1134, + 1135, 1154, 86, 1145, 1146, 1147, 1136, 1150, 86, 1151, + 86, 1153, 1155, 1157, 1152, 86, 86, 1161, 1158, 86, - 1159, 86, 86, 86, 1165, 86, 86, 1160, 86, 1158, - 86, 86, 1162, 1157, 1163, 86, 86, 86, 86, 86, - 1161, 86, 1168, 86, 1164, 1166, 86, 86, 86, 1175, - 1167, 86, 1170, 1172, 1177, 1169, 1173, 1174, 86, 1171, - 86, 86, 86, 1176, 86, 86, 86, 1178, 86, 86, - 86, 86, 1179, 1185, 1186, 1187, 1182, 86, 86, 1189, - 1184, 1180, 1190, 1181, 1183, 86, 1188, 1192, 86, 1193, - 86, 86, 86, 1195, 1194, 86, 1196, 86, 1191, 86, - 1197, 86, 86, 86, 1198, 86, 1204, 1206, 86, 86, - 86, 1199, 86, 86, 1208, 1200, 1202, 1203, 86, 1201, + 86, 86, 86, 86, 86, 86, 1162, 86, 86, 86, + 1156, 1167, 86, 1160, 1164, 1159, 1165, 86, 1168, 86, + 1166, 1163, 86, 86, 1170, 86, 86, 1169, 86, 86, + 86, 86, 1171, 1179, 1177, 1175, 1172, 1174, 1176, 86, + 86, 86, 86, 1173, 86, 1181, 86, 1178, 86, 86, + 86, 86, 1191, 86, 1187, 1188, 1180, 1186, 1189, 86, + 1184, 1182, 86, 1183, 1192, 86, 1185, 1195, 1190, 86, + 86, 86, 1196, 86, 1199, 1193, 86, 1197, 86, 86, + 1198, 1194, 86, 1200, 86, 1206, 86, 86, 1208, 86, + 86, 86, 86, 1212, 86, 1202, 86, 1204, 1201, 86, - 86, 1210, 86, 1207, 1209, 1205, 86, 1212, 86, 86, - 86, 1213, 86, 86, 1215, 1216, 86, 86, 1218, 86, - 1221, 1211, 86, 1220, 1214, 1217, 86, 1222, 86, 86, - 86, 1223, 1219, 1225, 86, 1226, 86, 1224, 86, 86, - 86, 86, 1230, 1232, 1233, 86, 1234, 1227, 1237, 86, - 86, 86, 86, 1231, 86, 1228, 1235, 1236, 1229, 86, - 1240, 86, 86, 1238, 1242, 86, 86, 1241, 86, 86, - 1243, 86, 86, 86, 86, 1247, 1248, 1244, 86, 1239, - 86, 86, 1253, 1254, 86, 1249, 86, 1245, 86, 86, - 1246, 1256, 1251, 1257, 86, 86, 1250, 86, 86, 1255, + 1203, 1205, 174, 86, 1209, 86, 1211, 1207, 1210, 86, + 1214, 86, 86, 86, 1215, 1216, 1217, 1213, 1218, 86, + 86, 86, 1223, 86, 1219, 1220, 86, 1222, 86, 1224, + 86, 86, 1225, 86, 1227, 86, 1221, 86, 1228, 86, + 86, 1234, 86, 1232, 1226, 86, 1235, 86, 86, 86, + 1236, 1229, 86, 1237, 1230, 1233, 86, 1239, 86, 1231, + 1242, 1238, 86, 86, 86, 86, 86, 1240, 86, 1243, + 1244, 86, 86, 86, 1245, 86, 1249, 1246, 1241, 86, + 1247, 86, 1250, 86, 86, 86, 1251, 1255, 1256, 1259, + 86, 1248, 86, 86, 86, 1253, 86, 1258, 86, 1252, - 1252, 1261, 86, 86, 86, 86, 86, 86, 1267, 86, - 1260, 1259, 1263, 168, 1258, 86, 86, 86, 86, 86, - 1262, 1274, 86, 1264, 1272, 86, 1266, 1273, 1271, 1269, - 1276, 1265, 1270, 1268, 1277, 86, 86, 86, 86, 86, - 86, 1280, 1279, 1281, 86, 1275, 86, 86, 86, 86, - 86, 1278, 1284, 86, 86, 1290, 86, 1287, 1282, 86, - 1283, 86, 86, 1285, 86, 86, 168, 86, 1286, 1288, - 1294, 1300, 1289, 1291, 86, 86, 86, 1293, 86, 1292, - 1296, 86, 1301, 1302, 86, 1295, 1303, 86, 86, 1297, - 1305, 1298, 1308, 86, 1299, 1304, 1306, 86, 86, 86, + 1257, 86, 1263, 1254, 86, 86, 86, 86, 86, 86, + 1269, 86, 1261, 1262, 1265, 1260, 168, 86, 86, 86, + 86, 86, 1264, 86, 86, 1274, 1266, 173, 1268, 1278, + 1273, 1271, 1275, 1267, 1272, 86, 1270, 1276, 86, 1279, + 1280, 1277, 86, 86, 86, 86, 1282, 1281, 1283, 86, + 86, 86, 86, 86, 86, 86, 1286, 86, 1292, 86, + 86, 1289, 86, 1284, 1285, 86, 86, 1287, 86, 168, + 1290, 1296, 1288, 86, 1293, 86, 1291, 86, 1298, 1302, + 1294, 1295, 86, 1303, 1306, 86, 86, 1299, 1297, 1300, + 1304, 86, 1301, 1305, 86, 86, 86, 86, 1308, 86, - 86, 86, 86, 1307, 1310, 86, 1309, 1313, 86, 1317, - 86, 86, 1312, 86, 86, 1314, 1315, 1311, 1318, 1319, - 86, 86, 86, 86, 86, 1321, 1322, 1316, 86, 86, - 1323, 1320, 86, 86, 86, 86, 86, 86, 1324, 1325, - 86, 1327, 1329, 86, 1330, 86, 1334, 1326, 1328, 86, - 86, 86, 86, 1331, 86, 1333, 86, 1332, 1335, 1338, - 86, 86, 86, 86, 1345, 1336, 1339, 166, 1341, 1337, - 86, 1340, 86, 86, 86, 1343, 86, 1346, 1350, 1342, - 86, 1344, 1348, 1349, 1352, 86, 1347, 86, 1351, 1353, - 86, 86, 1357, 86, 1367, 86, 86, 1368, 1356, 1354, + 1307, 86, 86, 86, 1312, 86, 1311, 1315, 86, 86, + 1309, 86, 1319, 86, 1310, 1314, 86, 86, 86, 1316, + 1313, 1320, 1317, 1321, 86, 86, 1325, 1318, 1324, 1322, + 1323, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 1331, 86, 86, 86, 1326, 1327, 1329, 1330, + 1332, 1336, 1328, 86, 86, 86, 1333, 86, 1335, 1337, + 1334, 1338, 1340, 1339, 86, 86, 86, 86, 86, 1341, + 86, 1348, 86, 86, 1342, 86, 1343, 86, 1351, 86, + 1353, 1346, 1345, 1349, 1344, 86, 1350, 1347, 86, 1355, + 86, 1354, 86, 1352, 1356, 86, 86, 1360, 86, 86, - 86, 1355, 86, 1358, 1366, 86, 1365, 1359, 86, 86, - 1360, 1361, 1371, 1369, 1370, 1362, 164, 86, 86, 86, - 86, 1363, 1372, 86, 1373, 1364, 86, 1374, 86, 1376, - 1375, 86, 86, 86, 1377, 86, 1378, 86, 86, 1386, - 1379, 1380, 1381, 1383, 1387, 86, 86, 86, 163, 1384, - 86, 1388, 1382, 86, 86, 1385, 1390, 1389, 86, 1395, - 86, 1391, 86, 1392, 1399, 1393, 86, 1394, 1396, 1397, - 86, 86, 1401, 1398, 86, 86, 86, 1403, 86, 1402, - 86, 1400, 1404, 86, 1405, 1407, 86, 1409, 86, 86, - 1408, 1413, 86, 1414, 86, 86, 1406, 86, 86, 86, + 1371, 1369, 1358, 1359, 1357, 86, 1361, 86, 86, 1370, + 1362, 1368, 1372, 1363, 1364, 86, 1374, 1373, 1365, 86, + 86, 86, 86, 86, 1366, 1375, 1376, 86, 1367, 86, + 1377, 86, 1379, 86, 86, 86, 1380, 86, 1381, 86, + 1378, 86, 1386, 1382, 1384, 1383, 1389, 86, 1398, 1390, + 166, 86, 86, 1387, 1385, 86, 1391, 86, 86, 1388, + 86, 1392, 1399, 1400, 86, 86, 86, 1393, 1402, 86, + 86, 1401, 1394, 86, 1395, 86, 1396, 1406, 1397, 1405, + 86, 1403, 1407, 86, 1408, 1410, 86, 1404, 86, 86, + 86, 86, 1416, 86, 1417, 1409, 86, 1412, 86, 86, - 86, 86, 1415, 1412, 1417, 1410, 86, 1411, 86, 1416, - 1419, 86, 1418, 1422, 1423, 86, 1425, 86, 1420, 86, - 86, 1426, 86, 1427, 86, 86, 1424, 1428, 1431, 86, - 86, 1421, 1433, 86, 1430, 86, 1434, 86, 86, 86, - 1438, 86, 1435, 1429, 86, 86, 86, 86, 1440, 86, - 1432, 86, 1442, 1444, 86, 86, 86, 86, 1443, 1436, - 1437, 1448, 86, 86, 1439, 1446, 1441, 86, 1450, 86, - 1447, 1449, 1445, 86, 1452, 1451, 86, 1454, 1453, 86, - 86, 86, 86, 86, 1455, 1460, 1461, 1457, 86, 1458, - 86, 86, 86, 1462, 1463, 86, 1459, 86, 1456, 1464, + 1411, 86, 86, 86, 1418, 1415, 1420, 86, 1413, 1414, + 86, 86, 1422, 1419, 86, 86, 1421, 1426, 86, 1425, + 1428, 86, 86, 86, 1429, 1423, 1427, 86, 1431, 86, + 1430, 1434, 86, 86, 1432, 1424, 1436, 86, 1433, 86, + 1437, 86, 86, 86, 1441, 86, 1438, 86, 86, 86, + 86, 1443, 86, 1435, 86, 1445, 1447, 86, 86, 86, + 86, 1446, 1449, 1439, 1440, 1451, 86, 1442, 86, 1444, + 86, 86, 86, 1450, 86, 1448, 1453, 1455, 1454, 1456, + 1452, 86, 1457, 86, 86, 86, 1459, 86, 1458, 1463, + 1460, 1464, 1461, 86, 86, 86, 1466, 86, 1465, 86, - 86, 1467, 86, 86, 168, 86, 86, 1472, 1466, 1473, - 86, 1475, 86, 86, 1465, 86, 1474, 86, 86, 1469, - 86, 86, 86, 1468, 86, 1470, 1476, 86, 1483, 1471, - 86, 86, 1477, 1480, 86, 86, 1481, 161, 1478, 86, - 1479, 86, 1482, 86, 1487, 1488, 86, 86, 1490, 1492, - 1484, 86, 1486, 86, 1493, 86, 1485, 86, 1489, 1496, - 1491, 86, 1495, 86, 86, 1494, 86, 86, 86, 1501, - 1504, 1497, 1502, 86, 1506, 1503, 1498, 86, 1499, 86, - 86, 1500, 86, 1507, 1509, 86, 1511, 1505, 1508, 1510, - 86, 86, 86, 86, 86, 86, 1514, 1515, 86, 86, + 1462, 86, 86, 1467, 1470, 86, 86, 168, 86, 86, + 1475, 1476, 1469, 86, 1478, 86, 86, 86, 1468, 1477, + 86, 86, 1472, 86, 86, 86, 1471, 86, 1473, 1479, + 86, 1486, 1474, 86, 86, 1480, 1483, 86, 86, 1484, + 164, 1481, 86, 1482, 86, 1485, 86, 1490, 1491, 86, + 86, 1493, 1495, 1487, 86, 1489, 86, 1496, 86, 1488, + 86, 1492, 1499, 1494, 86, 1498, 86, 86, 1497, 86, + 86, 86, 1504, 1507, 1500, 1505, 86, 1509, 1506, 1501, + 86, 1502, 86, 86, 1503, 86, 1510, 1512, 86, 1514, + 1508, 1511, 1513, 86, 86, 86, 86, 86, 86, 1517, - 1518, 86, 86, 1513, 86, 1523, 86, 86, 1512, 86, - 1524, 1516, 86, 1520, 1517, 1527, 86, 86, 1519, 1521, - 1522, 86, 86, 86, 1528, 1525, 86, 86, 1526, 86, - 86, 1530, 1534, 86, 86, 1529, 1535, 1531, 1532, 1536, - 86, 1539, 1538, 86, 86, 1533, 86, 86, 1537, 86, - 1543, 1544, 86, 1541, 1546, 86, 86, 86, 1540, 86, - 86, 1545, 1547, 1551, 1552, 1550, 1542, 86, 1548, 86, - 86, 86, 1553, 86, 1554, 1555, 86, 86, 86, 86, - 1549, 1556, 86, 86, 86, 1558, 86, 1557, 86, 1563, - 86, 1559, 86, 1562, 86, 1566, 1560, 86, 1561, 86, + 1518, 86, 86, 1521, 86, 86, 1516, 86, 1526, 86, + 86, 1515, 86, 1527, 1519, 86, 1523, 1520, 1530, 86, + 86, 1522, 1524, 1525, 86, 86, 86, 1531, 1528, 86, + 86, 1529, 86, 86, 1533, 1537, 86, 86, 1532, 1538, + 1534, 1535, 1539, 86, 1542, 1541, 86, 86, 1536, 86, + 86, 1540, 86, 1546, 1547, 86, 1544, 1548, 1550, 86, + 86, 1543, 86, 86, 1549, 86, 86, 86, 1551, 1545, + 1555, 1552, 1554, 1556, 86, 1557, 86, 86, 1558, 86, + 1559, 86, 86, 86, 1562, 86, 1553, 1560, 86, 86, + 86, 1561, 86, 86, 1567, 86, 86, 1563, 86, 1566, - 1565, 1569, 86, 1574, 1564, 1571, 1570, 86, 1567, 86, - 1572, 86, 86, 86, 86, 86, 1568, 86, 86, 1573, - 1578, 1582, 1577, 86, 86, 86, 1585, 86, 1575, 1583, - 86, 1576, 86, 1579, 86, 1588, 1581, 1580, 86, 86, - 1587, 86, 86, 86, 1586, 86, 86, 1596, 86, 1584, - 86, 1594, 86, 1597, 1599, 86, 86, 1589, 1590, 1593, - 1602, 1591, 1592, 1595, 1598, 1600, 86, 86, 86, 86, - 86, 86, 1601, 1606, 86, 86, 86, 1607, 1604, 86, - 1610, 1603, 86, 1605, 1614, 86, 86, 86, 86, 1616, - 1608, 1611, 1609, 1615, 86, 86, 86, 86, 1613, 1612, + 86, 1570, 1564, 1569, 1565, 86, 86, 1578, 1573, 86, + 1568, 1575, 1571, 1574, 86, 86, 1576, 86, 86, 1572, + 86, 86, 86, 86, 1586, 1577, 1582, 1581, 1579, 86, + 86, 86, 1589, 86, 1580, 86, 1587, 86, 86, 1583, + 1592, 1585, 1584, 1591, 86, 86, 86, 86, 86, 86, + 86, 86, 1590, 163, 1593, 1588, 86, 1600, 86, 86, + 1608, 1601, 1597, 1594, 1595, 1599, 1596, 1603, 86, 86, + 1598, 1602, 1604, 86, 1605, 86, 86, 86, 86, 1606, + 1610, 86, 86, 86, 1611, 86, 86, 1614, 86, 1607, + 1609, 1618, 86, 1619, 1620, 86, 86, 1612, 1615, 1613, - 1618, 1617, 1619, 86, 86, 86, 1625, 1620, 1621, 1626, - 86, 86, 86, 86, 1622, 86, 1624, 86, 1630, 1631, - 1629, 86, 86, 1623, 86, 86, 1633, 86, 86, 1627, - 86, 1634, 1635, 86, 1628, 86, 86, 86, 1636, 1638, - 1637, 1632, 86, 1641, 1640, 86, 86, 86, 86, 86, - 1639, 86, 1642, 1645, 86, 1647, 86, 86, 1648, 86, - 1652, 1646, 86, 86, 86, 1644, 1643, 86, 86, 1649, - 86, 1650, 1655, 1657, 86, 86, 1653, 86, 1660, 1656, - 86, 1654, 1651, 86, 1658, 86, 1662, 1663, 1659, 86, - 1666, 86, 1661, 168, 1665, 86, 86, 86, 86, 86, + 86, 86, 1617, 86, 86, 1616, 1623, 1624, 1625, 1622, + 1621, 86, 86, 86, 1629, 1630, 86, 86, 86, 86, + 86, 86, 1634, 1635, 1633, 86, 1637, 86, 86, 86, + 1627, 1626, 86, 1628, 86, 1631, 86, 1638, 86, 1632, + 1639, 86, 86, 86, 1640, 1636, 1642, 1644, 1641, 86, + 1645, 86, 86, 86, 86, 86, 1643, 1646, 1649, 86, + 1651, 86, 86, 86, 1652, 86, 1656, 86, 1650, 86, + 86, 1648, 1647, 86, 86, 1659, 86, 1654, 86, 1653, + 1662, 1657, 1661, 86, 86, 1664, 86, 1658, 1655, 1660, + 86, 86, 168, 1663, 1667, 86, 86, 1666, 1670, 86, - 86, 1674, 86, 86, 1664, 86, 159, 1675, 86, 1667, - 1669, 86, 1672, 1668, 1678, 86, 1670, 1671, 86, 86, - 1679, 86, 86, 1676, 1673, 1677, 1680, 86, 1681, 1682, - 86, 1684, 86, 1686, 86, 1683, 1687, 86, 1685, 86, - 1688, 86, 86, 1692, 86, 86, 1693, 86, 1690, 1691, - 86, 1689, 86, 1694, 86, 86, 86, 1699, 1698, 86, - 86, 1695, 86, 86, 3252, 1706, 86, 86, 1696, 1697, - 1703, 86, 1701, 1704, 86, 86, 86, 1700, 1708, 1707, - 86, 1711, 1702, 86, 1723, 1705, 1713, 1715, 1712, 1710, - 1714, 86, 1716, 86, 1709, 86, 86, 1718, 86, 1720, + 1665, 1669, 86, 86, 86, 86, 86, 1678, 1671, 86, + 1668, 86, 86, 1672, 1679, 86, 1673, 86, 1676, 1682, + 86, 86, 1674, 1675, 1683, 86, 1684, 1686, 86, 1688, + 1677, 1680, 1681, 1687, 86, 86, 1690, 1685, 86, 1692, + 86, 86, 86, 86, 86, 86, 86, 1697, 86, 1694, + 1695, 86, 1691, 86, 1689, 86, 1698, 86, 86, 86, + 1693, 1702, 1699, 86, 1703, 86, 86, 86, 1696, 1700, + 1707, 1704, 1701, 1708, 1710, 86, 86, 1705, 1712, 1706, + 86, 1711, 86, 86, 86, 1709, 86, 1757, 1715, 1717, + 1719, 1714, 1718, 86, 1713, 1720, 86, 86, 86, 1722, - 1717, 86, 1719, 86, 86, 86, 86, 86, 1721, 86, - 1727, 86, 1726, 1728, 86, 86, 86, 1722, 1730, 86, - 1729, 86, 1733, 86, 86, 1724, 1732, 1725, 86, 86, - 86, 86, 1735, 1734, 1731, 86, 86, 86, 86, 86, - 86, 1743, 86, 86, 86, 1738, 86, 86, 86, 1736, - 1737, 1739, 1740, 1741, 1745, 1746, 1748, 1747, 86, 1744, - 86, 1742, 86, 1753, 86, 86, 1749, 1750, 86, 1752, - 1755, 86, 1751, 86, 1757, 86, 86, 86, 86, 86, - 1754, 86, 1759, 1756, 86, 86, 86, 1762, 1764, 86, - 1758, 1772, 86, 1765, 1763, 1761, 1766, 1773, 86, 86, + 1724, 86, 1721, 86, 1723, 86, 86, 86, 86, 1716, + 1725, 86, 86, 86, 86, 1731, 1730, 1732, 1734, 1733, + 1726, 86, 86, 86, 86, 86, 1727, 86, 86, 86, + 1728, 86, 1729, 1736, 1737, 86, 1738, 86, 86, 86, + 86, 86, 86, 1739, 86, 1735, 1747, 1740, 86, 1741, + 1748, 1742, 1743, 1744, 1753, 86, 86, 86, 1745, 86, + 86, 86, 86, 1749, 1758, 86, 1746, 1750, 1751, 86, + 1752, 86, 86, 86, 1762, 86, 1756, 1760, 86, 1754, + 86, 1755, 86, 1761, 86, 86, 86, 86, 86, 1759, + 1763, 86, 1764, 1767, 1769, 86, 86, 1777, 86, 86, - 1760, 1767, 1771, 86, 1768, 86, 86, 86, 86, 1769, - 1776, 1770, 1777, 86, 86, 1774, 86, 86, 86, 1778, - 86, 1780, 1781, 1775, 86, 1789, 86, 1779, 86, 1784, - 86, 86, 86, 1782, 1783, 1786, 86, 1788, 1787, 1790, - 86, 86, 86, 1785, 86, 1792, 86, 86, 86, 1799, - 1791, 86, 86, 3252, 1793, 1794, 1796, 86, 1795, 86, - 1803, 1801, 1802, 86, 86, 1798, 86, 1800, 86, 1807, - 86, 1797, 1805, 1811, 1804, 1806, 86, 86, 1812, 86, - 86, 86, 86, 86, 1808, 1817, 1816, 86, 1810, 1809, - 1813, 86, 1814, 1819, 86, 1820, 86, 1825, 86, 1822, + 1766, 1768, 1776, 1780, 1765, 1770, 86, 1772, 1771, 86, + 1773, 1778, 86, 1775, 86, 1774, 86, 1781, 1779, 1782, + 86, 86, 1783, 86, 86, 86, 1785, 86, 1786, 86, + 86, 86, 1794, 1795, 86, 1784, 1789, 86, 86, 1791, + 1793, 1788, 1792, 1787, 86, 86, 86, 86, 1790, 86, + 86, 86, 86, 1804, 86, 86, 161, 1796, 1797, 86, + 1799, 1801, 1798, 1800, 1806, 86, 86, 86, 1808, 1803, + 1805, 1807, 86, 86, 1810, 1802, 86, 1811, 1812, 1816, + 1814, 86, 1809, 86, 1817, 86, 86, 86, 86, 86, + 1813, 1822, 1821, 86, 1815, 1818, 1825, 86, 1819, 1824, - 1818, 86, 1815, 1821, 86, 86, 1826, 1824, 86, 1827, - 1823, 1828, 86, 1830, 86, 86, 86, 1829, 86, 86, - 86, 3252, 1831, 86, 86, 86, 1834, 86, 86, 1835, - 1840, 86, 1842, 86, 1832, 1833, 1836, 1837, 86, 1838, - 1843, 1839, 86, 1845, 86, 86, 86, 86, 1846, 86, - 1850, 1847, 1841, 86, 86, 1844, 86, 1854, 86, 86, - 1849, 86, 86, 86, 1848, 1856, 86, 1857, 1858, 1852, - 86, 1851, 1853, 86, 168, 1859, 86, 1864, 86, 1855, - 86, 86, 1860, 86, 1868, 86, 1862, 86, 86, 1861, - 86, 1863, 86, 1866, 86, 1870, 86, 1875, 86, 1865, + 86, 1827, 86, 1830, 86, 86, 1823, 86, 1820, 1826, + 1831, 1828, 86, 1829, 86, 1835, 86, 1833, 86, 86, + 86, 86, 86, 1834, 86, 1832, 1836, 86, 86, 86, + 1839, 86, 86, 1840, 1845, 86, 1847, 86, 1837, 1838, + 1841, 1842, 86, 1843, 1848, 1844, 86, 1850, 86, 86, + 86, 86, 1851, 86, 1855, 1852, 1846, 86, 86, 1849, + 86, 1859, 86, 86, 1854, 86, 86, 86, 1853, 1861, + 86, 1862, 1863, 1857, 86, 1856, 1858, 86, 168, 1864, + 86, 1869, 86, 1860, 86, 86, 1865, 86, 1873, 86, + 1867, 86, 86, 1866, 86, 1868, 86, 1871, 86, 1875, - 86, 1869, 1867, 86, 1871, 86, 1872, 1879, 86, 1873, - 1876, 1878, 86, 1881, 86, 1880, 1874, 86, 1877, 86, - 1884, 86, 1882, 1885, 86, 86, 86, 1887, 1883, 86, - 86, 86, 1888, 1886, 86, 86, 86, 86, 86, 86, - 1893, 86, 1894, 86, 86, 86, 86, 1895, 1898, 86, - 1889, 1896, 1891, 1890, 1892, 1899, 1897, 86, 86, 86, - 1905, 1907, 1902, 1904, 1901, 1906, 86, 86, 1900, 1903, - 1908, 86, 86, 86, 86, 86, 1913, 3252, 1909, 86, - 86, 86, 1916, 1917, 86, 1918, 86, 86, 1911, 1920, - 86, 1910, 86, 1912, 1914, 1919, 1915, 86, 1921, 86, + 86, 1880, 86, 1870, 86, 1874, 1872, 86, 1876, 86, + 1877, 1884, 86, 1878, 1881, 1883, 86, 1886, 86, 1885, + 1879, 86, 1882, 86, 1889, 86, 1887, 1890, 86, 86, + 86, 1892, 1888, 86, 86, 86, 1893, 1891, 86, 86, + 86, 86, 86, 86, 1898, 86, 1899, 86, 86, 86, + 86, 1900, 1903, 86, 1894, 1901, 1896, 1895, 1897, 1904, + 1902, 86, 86, 86, 1910, 1912, 1907, 1909, 1906, 1911, + 86, 86, 1905, 1908, 1913, 86, 86, 86, 86, 86, + 1918, 159, 1914, 86, 86, 86, 1921, 1922, 86, 1923, + 86, 86, 1916, 1925, 86, 1915, 86, 1917, 1919, 1924, - 1922, 1924, 86, 1925, 1926, 1928, 86, 86, 1923, 1927, - 86, 86, 1930, 86, 1933, 86, 1932, 1931, 86, 86, - 86, 86, 1936, 86, 86, 1929, 1935, 86, 1939, 1938, - 86, 1941, 86, 86, 86, 1940, 1948, 86, 86, 1934, - 86, 1937, 86, 1950, 1942, 1943, 1944, 86, 1951, 86, - 86, 1945, 1954, 1946, 1947, 1953, 86, 86, 1949, 1957, - 86, 1952, 86, 86, 86, 86, 86, 1955, 86, 1958, - 1961, 86, 1956, 86, 1963, 86, 86, 1966, 1967, 86, - 1969, 86, 1959, 86, 1960, 86, 1964, 86, 1968, 86, - 1962, 86, 1974, 86, 1971, 86, 1972, 1965, 86, 1975, + 1920, 86, 1926, 86, 1927, 1929, 86, 1930, 1931, 1933, + 86, 86, 1928, 1932, 86, 86, 1935, 86, 1938, 86, + 1937, 1936, 86, 86, 86, 86, 1941, 86, 86, 1934, + 1940, 86, 86, 1945, 86, 86, 1944, 86, 1947, 1942, + 1946, 86, 86, 1939, 86, 1954, 1948, 1949, 1950, 1943, + 1956, 86, 86, 1951, 86, 1957, 86, 1952, 86, 86, + 1960, 1953, 1955, 86, 86, 1963, 1958, 86, 86, 1959, + 1961, 86, 86, 1964, 1967, 86, 86, 1969, 1962, 86, + 86, 86, 1972, 1973, 86, 86, 86, 1965, 86, 1966, + 1975, 86, 86, 86, 1980, 1981, 86, 1977, 1968, 1970, - 86, 86, 1978, 86, 86, 86, 1981, 86, 1970, 86, - 1973, 1985, 1976, 1979, 1984, 86, 1977, 86, 86, 1980, - 1988, 1989, 86, 1983, 86, 1987, 86, 86, 86, 1982, - 1990, 86, 86, 1991, 86, 1986, 86, 86, 86, 1996, - 86, 1992, 1993, 1994, 86, 1999, 1995, 2000, 2001, 86, - 86, 86, 86, 86, 86, 1997, 2004, 86, 2009, 86, - 2002, 86, 2008, 86, 1998, 2003, 86, 86, 86, 2006, - 86, 2013, 2005, 2007, 2014, 2016, 86, 86, 2011, 2015, - 2010, 2017, 86, 2020, 86, 2012, 86, 86, 2027, 86, - 86, 86, 86, 2018, 86, 2024, 86, 86, 2019, 86, + 86, 1978, 1971, 86, 86, 1974, 86, 86, 86, 86, + 1987, 1976, 86, 1984, 1979, 86, 1985, 86, 86, 1983, + 1991, 86, 1990, 1994, 1982, 1993, 86, 1995, 86, 86, + 86, 1989, 86, 86, 1986, 1996, 86, 1997, 1988, 1998, + 86, 1992, 86, 86, 86, 86, 2002, 2006, 1999, 86, + 2005, 2007, 86, 86, 2001, 86, 86, 86, 86, 2000, + 2010, 86, 2003, 86, 2015, 86, 86, 86, 2014, 86, + 2009, 2004, 2008, 86, 86, 86, 2011, 2019, 2012, 86, + 2020, 86, 2017, 2013, 2021, 2016, 2022, 86, 2018, 86, + 2024, 2026, 86, 2023, 86, 2025, 86, 86, 86, 86, - 2032, 2022, 2029, 2030, 86, 86, 2031, 2021, 2023, 86, - 86, 2025, 2026, 86, 2028, 2037, 86, 2039, 2033, 2038, - 86, 2034, 2040, 86, 2041, 2042, 2035, 86, 86, 86, - 86, 86, 2046, 2036, 2044, 86, 86, 86, 86, 86, - 2045, 2048, 86, 2051, 86, 2053, 86, 2047, 2049, 86, - 168, 86, 86, 2043, 2055, 2054, 86, 86, 2056, 86, - 2059, 2058, 86, 2060, 2050, 3252, 2052, 2061, 86, 2062, - 86, 2057, 2064, 86, 86, 86, 86, 86, 86, 2063, - 2065, 2066, 2068, 2067, 86, 86, 86, 2071, 2070, 2069, - 86, 2072, 86, 86, 86, 2076, 86, 86, 2073, 2075, + 2033, 86, 2027, 2030, 86, 86, 86, 86, 2028, 2035, + 2036, 86, 86, 2037, 86, 2029, 2034, 2031, 2038, 2032, + 86, 86, 2043, 86, 2047, 2042, 2044, 86, 2045, 2039, + 86, 86, 2040, 2046, 86, 2048, 86, 2041, 86, 2052, + 86, 86, 86, 2050, 86, 86, 2054, 86, 2051, 2057, + 86, 86, 2053, 2059, 86, 86, 2055, 2049, 168, 86, + 86, 86, 2061, 2060, 86, 86, 2062, 3267, 2065, 2064, + 86, 2066, 2056, 2058, 2067, 86, 2068, 86, 2070, 2063, + 86, 2069, 86, 86, 86, 86, 2071, 2072, 86, 2073, + 86, 86, 86, 2075, 2074, 2076, 86, 2078, 86, 86, - 86, 86, 2077, 86, 2074, 2078, 2079, 86, 2081, 86, - 2080, 86, 2083, 86, 86, 86, 2088, 2082, 2086, 86, - 2087, 86, 86, 86, 86, 86, 86, 86, 2093, 2084, - 2090, 86, 2085, 86, 2097, 2096, 86, 2089, 2092, 2094, - 2099, 2091, 86, 2095, 86, 2098, 86, 86, 2100, 2104, - 86, 2102, 86, 86, 86, 2105, 86, 86, 86, 2110, - 2103, 86, 2112, 2101, 86, 86, 2113, 2114, 86, 2106, - 2107, 2108, 2109, 86, 2111, 2116, 86, 86, 2117, 86, - 2119, 2115, 86, 86, 86, 2118, 86, 86, 2123, 2120, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 2124, + 2082, 86, 2077, 2079, 2081, 86, 86, 86, 2087, 86, + 2080, 2084, 2085, 86, 2083, 86, 2086, 86, 86, 86, + 86, 86, 86, 2094, 2092, 86, 2089, 2093, 86, 86, + 86, 86, 2099, 86, 2096, 2088, 2090, 86, 2091, 2095, + 86, 86, 2103, 2100, 2098, 86, 2097, 86, 2104, 2102, + 86, 2101, 86, 86, 2105, 2110, 86, 2108, 2107, 86, + 86, 86, 2106, 2111, 86, 2116, 2109, 86, 86, 86, + 2118, 86, 86, 86, 2119, 2112, 86, 2113, 3267, 2114, + 86, 2115, 2120, 86, 2121, 2117, 2122, 86, 86, 2123, + 86, 86, 2126, 86, 86, 2130, 2124, 2125, 86, 86, - 86, 86, 86, 2131, 2122, 2121, 2126, 2127, 2128, 2136, - 86, 2137, 2125, 2130, 2135, 86, 2132, 86, 2129, 86, - 2133, 86, 2139, 86, 2134, 86, 2140, 2143, 2142, 86, - 86, 86, 86, 86, 86, 2138, 2145, 2141, 86, 2146, - 86, 86, 2147, 2149, 86, 86, 2151, 2144, 2148, 86, - 2150, 2153, 2155, 86, 86, 2154, 86, 86, 86, 2152, - 2158, 2157, 2159, 86, 86, 86, 86, 2163, 2160, 86, - 2164, 2156, 2161, 86, 86, 86, 86, 2166, 86, 2165, - 2169, 86, 86, 2170, 2162, 86, 2173, 86, 3252, 2168, - 2174, 2171, 86, 2167, 86, 86, 2175, 86, 2172, 2179, + 2127, 86, 2128, 86, 86, 86, 86, 86, 2131, 86, + 2129, 86, 86, 2138, 86, 2133, 2134, 2135, 86, 2143, + 86, 86, 2132, 86, 2137, 86, 2139, 86, 2146, 2150, + 2142, 2140, 2136, 86, 2145, 2141, 86, 86, 2147, 2144, + 86, 2149, 86, 2148, 86, 2152, 86, 86, 86, 2153, + 86, 86, 2158, 2154, 86, 2151, 2156, 86, 86, 2160, + 2157, 2162, 86, 86, 2155, 2165, 86, 86, 2161, 86, + 2159, 2164, 2166, 86, 2167, 86, 2170, 86, 86, 86, + 86, 86, 86, 2171, 2163, 86, 86, 2173, 2176, 86, + 2172, 2168, 86, 2177, 86, 2169, 2178, 2180, 86, 2174, - 86, 86, 2181, 2177, 86, 2176, 86, 2182, 86, 2180, - 86, 2178, 86, 2183, 86, 2184, 2188, 86, 86, 86, - 86, 2186, 2190, 86, 2187, 86, 2185, 2191, 86, 2192, - 2193, 2194, 86, 86, 86, 86, 2197, 2195, 2189, 2196, - 2200, 86, 2199, 86, 86, 2198, 86, 86, 86, 86, - 86, 86, 86, 2201, 86, 86, 2209, 2210, 2206, 2207, - 2203, 2202, 2204, 2211, 2205, 86, 86, 86, 86, 86, - 2208, 2212, 2214, 86, 86, 2220, 86, 168, 2215, 86, - 2222, 86, 2216, 2219, 2213, 86, 2217, 86, 2221, 2224, - 86, 2228, 2223, 86, 2218, 2225, 2229, 86, 2230, 2227, + 2175, 86, 86, 86, 2182, 2179, 2181, 86, 2186, 86, + 2187, 86, 2183, 86, 2188, 2184, 86, 2189, 86, 86, + 2190, 86, 86, 2185, 2191, 86, 2197, 2195, 86, 86, + 2193, 2198, 86, 2194, 86, 86, 2192, 2199, 86, 86, + 2202, 2200, 86, 2196, 2203, 86, 2201, 2207, 86, 86, + 86, 2204, 86, 86, 2206, 86, 86, 86, 86, 86, + 86, 86, 2205, 2216, 86, 86, 2211, 2208, 2209, 2210, + 2212, 2213, 2214, 86, 2218, 86, 2215, 86, 2217, 2223, + 2222, 2219, 86, 2221, 86, 86, 2225, 2227, 86, 86, + 2229, 86, 86, 2226, 2220, 86, 2231, 86, 2228, 168, - 2226, 2231, 86, 86, 86, 2232, 86, 86, 2235, 86, - 86, 2233, 86, 2234, 86, 2236, 2240, 86, 2242, 2239, - 86, 2241, 2244, 86, 2246, 86, 86, 86, 86, 2237, - 2243, 2245, 2247, 86, 86, 2249, 86, 86, 86, 2248, - 2238, 86, 2250, 86, 86, 2251, 86, 2252, 86, 2255, - 86, 86, 2254, 2258, 86, 86, 2253, 86, 2264, 86, - 2256, 2257, 2262, 86, 86, 86, 86, 2260, 2259, 2265, - 86, 2267, 86, 86, 2261, 86, 86, 2263, 2266, 2269, - 2272, 86, 2270, 2275, 86, 86, 86, 86, 86, 2273, - 2268, 86, 2271, 2276, 86, 86, 86, 86, 86, 2274, + 2224, 2235, 2232, 2237, 2230, 2238, 2236, 86, 2233, 86, + 86, 86, 86, 2239, 86, 2242, 86, 86, 2243, 86, + 2240, 2234, 2247, 86, 86, 2248, 86, 86, 2246, 2251, + 86, 86, 2244, 86, 2241, 86, 2252, 2257, 2249, 86, + 2253, 2254, 86, 2245, 86, 2250, 2256, 86, 86, 2255, + 2258, 2259, 86, 86, 86, 86, 86, 86, 86, 2262, + 86, 86, 2265, 86, 86, 2271, 86, 86, 2260, 2269, + 2264, 2272, 86, 86, 86, 86, 2266, 2267, 2261, 2263, + 2268, 86, 2276, 86, 86, 2270, 2274, 2273, 86, 2279, + 86, 2282, 86, 2278, 86, 2277, 86, 86, 86, 2275, - 86, 86, 86, 2291, 2287, 2277, 2278, 86, 2283, 2288, - 86, 2279, 86, 2281, 2286, 2280, 2282, 2285, 2284, 2289, - 86, 86, 86, 2292, 86, 2294, 2290, 86, 2295, 2296, - 86, 2297, 86, 86, 86, 2300, 2293, 86, 86, 2298, - 2303, 86, 2304, 86, 86, 86, 2299, 2301, 86, 2305, - 2302, 86, 86, 2306, 2310, 86, 86, 2307, 2311, 86, - 2313, 86, 86, 2309, 86, 2308, 2315, 86, 86, 2317, - 86, 2312, 2318, 86, 2314, 2319, 86, 2316, 86, 2321, - 86, 86, 2320, 2325, 86, 86, 2324, 2327, 86, 86, - 86, 86, 2322, 86, 2330, 86, 2329, 86, 2331, 2323, + 86, 2280, 2283, 86, 86, 86, 86, 86, 2281, 86, + 3267, 86, 86, 2297, 86, 2284, 2285, 2290, 2295, 86, + 2293, 2286, 2288, 2294, 2287, 2289, 2292, 2291, 86, 86, + 2296, 86, 86, 2301, 2298, 2299, 86, 86, 2303, 2304, + 86, 2305, 86, 86, 2300, 86, 86, 86, 2308, 2302, + 2311, 86, 2312, 86, 2309, 86, 86, 2310, 2306, 2307, + 2313, 2314, 86, 86, 86, 2318, 86, 2319, 86, 86, + 2321, 86, 86, 2323, 86, 86, 2317, 86, 2326, 86, + 2325, 86, 2315, 2316, 2327, 86, 86, 86, 2320, 86, + 2322, 86, 2324, 86, 86, 2328, 2329, 3267, 2332, 86, - 2333, 86, 86, 86, 2326, 2337, 86, 2328, 86, 86, - 2335, 86, 2334, 2332, 86, 2341, 2342, 86, 86, 86, - 86, 2336, 86, 2338, 2340, 2344, 2347, 86, 86, 86, - 86, 2339, 86, 2343, 2345, 2349, 86, 2346, 2348, 86, - 2354, 86, 86, 2350, 86, 86, 2356, 86, 2351, 86, - 2352, 2355, 2357, 2360, 86, 86, 86, 86, 86, 2361, - 2362, 2366, 2353, 86, 86, 3252, 86, 2358, 2365, 2359, - 2363, 2364, 86, 86, 2371, 2373, 86, 2368, 2369, 2370, - 86, 86, 86, 2367, 2372, 86, 86, 2374, 86, 2377, - 2375, 2376, 86, 86, 86, 2378, 86, 2379, 2384, 86, + 2330, 2333, 86, 2335, 86, 2337, 86, 86, 2331, 2338, + 2334, 86, 2336, 86, 2339, 2341, 86, 86, 2345, 86, + 86, 86, 86, 86, 2350, 86, 2342, 2349, 86, 2340, + 2344, 86, 2343, 86, 86, 86, 2352, 2348, 2355, 86, + 2346, 86, 86, 86, 2347, 86, 86, 2351, 2353, 2354, + 2357, 86, 2362, 86, 86, 2356, 2358, 86, 86, 2359, + 2364, 86, 2363, 2360, 2365, 86, 2368, 86, 86, 86, + 2369, 86, 2361, 2370, 86, 86, 2374, 86, 86, 2366, + 2372, 2367, 2371, 2376, 86, 2379, 86, 2381, 86, 2377, + 2373, 86, 2378, 86, 86, 86, 2380, 86, 2386, 2382, - 2383, 2385, 2380, 2381, 86, 2382, 86, 86, 86, 2390, - 2386, 86, 2389, 86, 2391, 86, 168, 2388, 86, 2387, - 86, 2393, 2392, 86, 2398, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 2405, 86, 2396, 2400, 2394, 2397, - 2395, 2399, 2401, 2402, 2403, 2404, 86, 2408, 2409, 86, - 86, 2406, 2407, 86, 2410, 2411, 86, 86, 86, 2414, - 2412, 2415, 86, 2413, 2418, 86, 86, 86, 2417, 86, - 86, 2416, 86, 2419, 86, 86, 2423, 2424, 2420, 86, - 86, 86, 2428, 86, 2421, 86, 2426, 2429, 86, 2427, - 86, 2431, 86, 2422, 2425, 2430, 2432, 86, 86, 86, + 2375, 2385, 2383, 86, 86, 86, 86, 86, 86, 3267, + 2392, 2384, 2387, 2388, 2389, 2390, 86, 2393, 86, 86, + 86, 2391, 2394, 86, 86, 2397, 2398, 86, 2395, 2396, + 86, 2399, 86, 168, 86, 2404, 2406, 86, 2401, 2400, + 86, 86, 86, 86, 86, 86, 86, 2402, 3267, 2403, + 2405, 2408, 86, 2409, 86, 2407, 2412, 2413, 86, 2410, + 2411, 2417, 86, 2414, 2416, 3267, 2415, 86, 2418, 2419, + 86, 86, 86, 2422, 2420, 2423, 86, 2421, 86, 86, + 86, 86, 2425, 86, 86, 2424, 86, 2427, 86, 86, + 2431, 2432, 2426, 86, 2429, 86, 2428, 86, 2434, 86, - 86, 2433, 86, 2435, 2436, 86, 86, 2438, 86, 86, - 86, 86, 86, 2437, 2442, 2445, 86, 2444, 2434, 86, - 86, 86, 2446, 2441, 86, 86, 2439, 86, 2440, 2449, - 86, 2443, 86, 86, 2454, 86, 86, 2447, 2453, 2448, - 86, 86, 2451, 2452, 2455, 86, 2450, 2456, 2525, 2457, - 86, 2458, 86, 86, 2461, 2459, 86, 2463, 2460, 86, - 2462, 2465, 86, 86, 86, 2467, 86, 86, 86, 86, - 86, 2464, 86, 2466, 2471, 86, 86, 2475, 86, 86, - 2473, 2474, 2469, 2476, 86, 2468, 2470, 2477, 86, 2478, - 86, 86, 86, 86, 86, 2479, 2481, 2486, 2472, 2484, + 86, 86, 86, 2435, 2436, 2437, 86, 2430, 86, 2433, + 2439, 2441, 86, 2438, 86, 2440, 86, 86, 2443, 86, + 2442, 2444, 86, 86, 2446, 2445, 86, 86, 86, 86, + 2453, 2450, 86, 86, 2452, 86, 86, 2447, 2454, 86, + 2449, 86, 86, 2448, 86, 86, 2458, 86, 2451, 2463, + 86, 2455, 2462, 86, 2456, 86, 2460, 86, 2457, 3267, + 86, 2461, 2465, 2459, 2466, 2464, 86, 2467, 86, 86, + 2470, 2468, 86, 86, 2472, 86, 2471, 2474, 86, 2469, + 86, 2476, 86, 86, 2475, 2473, 86, 86, 86, 86, + 86, 86, 86, 2480, 86, 2482, 2483, 2484, 86, 86, - 86, 86, 86, 86, 86, 86, 2483, 2489, 86, 86, - 2485, 2482, 2480, 86, 86, 2493, 2490, 2494, 86, 2488, - 2487, 86, 86, 86, 2491, 86, 2495, 2492, 86, 86, - 2498, 2499, 2497, 86, 86, 86, 86, 3252, 86, 86, - 2496, 2503, 2500, 2505, 2506, 86, 2502, 2501, 2507, 86, - 2508, 86, 2509, 86, 86, 2504, 86, 2511, 86, 2513, - 86, 2512, 86, 2514, 86, 86, 2510, 86, 2519, 86, - 86, 86, 2515, 2521, 86, 86, 2516, 2522, 86, 86, - 86, 86, 2523, 2518, 86, 2517, 2528, 2524, 86, 2520, - 86, 2526, 2531, 86, 86, 86, 86, 86, 86, 2532, + 2478, 2477, 2486, 2479, 2485, 86, 86, 2487, 86, 86, + 2488, 86, 2493, 86, 2489, 2481, 2490, 86, 2491, 2495, + 86, 2492, 86, 2498, 86, 86, 2494, 86, 86, 86, + 2499, 86, 86, 2502, 2503, 86, 86, 2497, 2496, 86, + 86, 2504, 86, 2509, 86, 2507, 2508, 2500, 86, 2501, + 86, 2506, 86, 86, 86, 2512, 86, 2505, 3267, 2514, + 2515, 86, 2510, 86, 2511, 2516, 86, 2517, 86, 2518, + 86, 86, 86, 2513, 2520, 2519, 2521, 86, 2522, 86, + 2523, 86, 86, 86, 2524, 2528, 86, 86, 2530, 86, + 2531, 86, 86, 2525, 86, 86, 86, 86, 86, 2527, - 2527, 168, 86, 2539, 2529, 86, 86, 86, 2530, 2535, - 86, 86, 2537, 2538, 2540, 2534, 86, 86, 2550, 86, - 2533, 2536, 2541, 86, 2543, 2542, 2546, 86, 86, 86, - 86, 2547, 2548, 2544, 2549, 2551, 86, 86, 2552, 2545, - 86, 2553, 86, 2554, 86, 86, 2555, 86, 86, 2557, - 86, 86, 86, 86, 86, 2556, 2565, 86, 86, 86, - 2558, 2563, 86, 86, 2569, 86, 2560, 2559, 2570, 86, - 86, 2562, 2561, 2564, 2571, 86, 2567, 2566, 86, 2573, - 2568, 2574, 86, 86, 2575, 2576, 86, 2572, 86, 86, - 86, 86, 86, 3252, 86, 2579, 2577, 2585, 86, 2586, + 86, 2534, 2526, 2532, 86, 2537, 2529, 2533, 2535, 2540, + 86, 86, 86, 86, 86, 86, 86, 2536, 2538, 168, + 2541, 86, 2548, 86, 2539, 86, 86, 2544, 86, 86, + 2546, 2547, 2549, 2543, 86, 86, 2559, 86, 2542, 2545, + 2550, 2551, 86, 86, 86, 2555, 2552, 86, 2557, 2556, + 86, 2553, 2558, 2560, 86, 86, 2561, 2554, 86, 2562, + 86, 2563, 2564, 86, 86, 86, 86, 86, 86, 2566, + 86, 86, 86, 86, 2565, 2574, 86, 86, 86, 2567, + 2572, 86, 2578, 86, 2569, 2568, 2579, 86, 2571, 2570, + 2573, 86, 2575, 2580, 2576, 2577, 2583, 86, 86, 86, - 86, 2578, 86, 86, 2580, 86, 86, 86, 2581, 2582, - 2583, 2584, 2588, 2589, 86, 2590, 86, 2591, 86, 86, - 2587, 2592, 2593, 86, 2594, 86, 86, 86, 86, 2599, - 2595, 2598, 2600, 86, 86, 86, 2601, 86, 2596, 2597, - 2602, 86, 86, 86, 2604, 86, 86, 2603, 86, 86, - 2608, 3252, 86, 86, 2606, 2612, 2605, 2613, 86, 86, - 2616, 86, 86, 2607, 86, 86, 2609, 2610, 2614, 2611, - 86, 86, 2620, 86, 2617, 2619, 86, 2615, 2621, 2618, - 86, 86, 2623, 2625, 86, 86, 86, 2629, 86, 86, - 2628, 2622, 86, 2626, 2627, 2631, 86, 2632, 86, 86, + 2582, 2585, 86, 86, 86, 2581, 86, 2584, 86, 86, + 86, 2588, 86, 2594, 86, 2595, 86, 2586, 86, 86, + 86, 2587, 86, 2589, 2590, 86, 2592, 2591, 2598, 2599, + 86, 2593, 2600, 86, 2601, 2603, 86, 2597, 2596, 86, + 86, 86, 86, 2602, 2605, 86, 86, 86, 2609, 2611, + 2608, 2610, 86, 2612, 86, 2604, 86, 86, 86, 86, + 86, 2606, 2607, 86, 86, 86, 2614, 86, 2618, 86, + 86, 2616, 2622, 2623, 86, 2613, 86, 2615, 2626, 86, + 2617, 86, 86, 86, 2619, 2621, 2620, 2627, 2625, 86, + 86, 2624, 86, 2629, 2630, 86, 2628, 2632, 86, 2635, - 2624, 86, 2636, 86, 86, 2637, 86, 2633, 2630, 2639, - 86, 86, 86, 2635, 86, 2634, 86, 86, 2644, 86, - 2646, 86, 86, 2642, 2640, 2641, 2643, 2647, 2638, 86, - 86, 2645, 86, 86, 2648, 86, 86, 2650, 86, 3252, - 86, 2651, 86, 86, 2649, 2653, 2654, 2656, 2657, 86, - 2659, 86, 2660, 86, 2652, 2655, 2661, 168, 86, 86, - 86, 86, 2666, 3252, 2658, 2662, 2663, 86, 86, 86, - 2668, 86, 2667, 3252, 86, 2671, 86, 2664, 2665, 2670, - 2672, 86, 86, 2674, 86, 86, 2669, 2676, 2675, 86, - 86, 86, 2677, 86, 2678, 2673, 2679, 2681, 86, 86, + 86, 86, 86, 2631, 86, 2639, 86, 86, 2638, 2641, + 86, 2637, 2633, 2636, 86, 86, 86, 86, 2634, 2642, + 2646, 86, 86, 2647, 2643, 86, 2640, 2649, 86, 2645, + 86, 86, 2644, 86, 2654, 86, 86, 86, 2656, 86, + 86, 86, 2652, 2650, 2651, 2653, 2657, 2648, 86, 86, + 86, 86, 2655, 2658, 2659, 2660, 86, 2661, 86, 86, + 86, 3267, 86, 86, 86, 2663, 2664, 2666, 2667, 2673, + 2662, 2669, 86, 86, 2665, 2668, 2670, 86, 2671, 168, + 2672, 86, 86, 2676, 86, 86, 86, 2678, 86, 86, + 2677, 86, 2681, 86, 2682, 86, 2680, 2683, 86, 2674, - 86, 86, 2682, 86, 2680, 2683, 86, 86, 2684, 2688, - 86, 2689, 86, 86, 2686, 86, 2685, 86, 2690, 86, - 86, 86, 2691, 86, 2694, 2693, 86, 86, 2687, 86, - 2698, 86, 2696, 86, 2697, 2692, 2699, 86, 2695, 2704, - 2700, 86, 2701, 86, 2702, 86, 2703, 2705, 86, 86, - 86, 86, 2709, 86, 86, 86, 86, 2713, 86, 2711, - 86, 86, 86, 2718, 86, 86, 2717, 2706, 3252, 2707, - 2708, 2712, 2720, 2710, 2714, 2715, 2721, 2722, 86, 2723, - 86, 2716, 86, 86, 86, 86, 86, 86, 86, 86, - 2719, 2725, 2724, 2728, 2726, 86, 86, 2731, 86, 86, + 2675, 2684, 86, 2679, 86, 2686, 3267, 2685, 86, 86, + 2687, 86, 2690, 2688, 2689, 2691, 86, 86, 86, 86, + 2692, 86, 2693, 86, 86, 86, 2698, 2694, 86, 2699, + 2700, 2696, 86, 86, 2695, 86, 86, 86, 86, 86, + 2701, 2703, 2704, 86, 86, 2697, 86, 86, 2706, 2702, + 2705, 2707, 86, 86, 2712, 2708, 2710, 2709, 86, 86, + 2715, 2711, 86, 86, 86, 86, 86, 2713, 2716, 86, + 2720, 86, 86, 86, 2722, 86, 86, 2714, 2724, 86, + 86, 86, 2717, 86, 2718, 2728, 2729, 86, 2719, 3267, + 2723, 2721, 2725, 2731, 2732, 2726, 2727, 2733, 86, 86, - 2727, 3252, 2729, 2733, 86, 2734, 86, 2735, 86, 86, - 2730, 86, 86, 2736, 2738, 86, 2732, 2737, 86, 2739, - 86, 2742, 86, 2740, 86, 2745, 2743, 86, 2746, 86, - 86, 2744, 2741, 2747, 86, 86, 86, 86, 2748, 86, - 2750, 2752, 86, 2749, 86, 2753, 2754, 86, 2756, 86, - 86, 86, 2755, 2760, 2761, 86, 2751, 2758, 86, 86, - 86, 2763, 2762, 2757, 86, 2759, 2764, 86, 86, 86, - 2769, 86, 86, 86, 86, 2768, 86, 2771, 2772, 86, - 86, 86, 2774, 2765, 2766, 2773, 86, 86, 2767, 2775, - 2777, 86, 2778, 86, 86, 86, 2770, 2776, 2779, 2780, + 86, 2734, 86, 86, 86, 86, 2735, 86, 2730, 2736, + 86, 86, 86, 86, 2737, 2739, 86, 2742, 2744, 86, + 2738, 2745, 86, 86, 2740, 2746, 86, 2741, 86, 86, + 86, 2743, 2747, 86, 2748, 2749, 86, 86, 2751, 2753, + 86, 2756, 2752, 2750, 2754, 86, 2757, 86, 2758, 86, + 86, 86, 86, 2759, 86, 2763, 86, 2755, 86, 2764, + 2765, 86, 86, 86, 2760, 2767, 86, 86, 86, 2771, + 2761, 2772, 86, 86, 2762, 86, 2768, 2766, 86, 86, + 86, 2774, 2770, 2773, 86, 2769, 2775, 86, 2780, 86, + 2779, 86, 2783, 86, 86, 2782, 2776, 86, 2777, 86, - 2781, 86, 2785, 86, 86, 86, 86, 86, 2787, 86, - 86, 2782, 86, 2792, 2783, 2784, 2788, 2791, 2786, 2793, - 2789, 2796, 86, 86, 2794, 86, 2790, 86, 2797, 86, - 2798, 2795, 86, 2799, 86, 2800, 86, 86, 86, 2801, - 86, 2802, 86, 86, 86, 86, 86, 2806, 2810, 86, - 86, 86, 2807, 2811, 2813, 86, 86, 2803, 2814, 2805, - 2815, 86, 2812, 86, 2804, 2808, 2809, 86, 2816, 2817, - 86, 86, 86, 86, 2821, 86, 2818, 2822, 86, 2823, - 2819, 2820, 2824, 86, 2826, 86, 86, 86, 86, 2827, - 86, 2830, 86, 2831, 2829, 2832, 86, 86, 2825, 2828, + 2778, 86, 2784, 86, 2786, 86, 86, 2785, 2788, 86, + 2789, 86, 86, 86, 2781, 86, 2792, 2796, 86, 86, + 86, 2804, 86, 2790, 2791, 86, 2805, 86, 2787, 2795, + 2793, 86, 86, 2794, 2797, 2798, 2800, 86, 2801, 2802, + 2803, 2807, 86, 2799, 2806, 86, 2808, 86, 2809, 86, + 2810, 86, 2811, 86, 86, 86, 86, 86, 86, 2813, + 86, 86, 2816, 86, 86, 2818, 2822, 86, 86, 2812, + 2819, 2823, 86, 2825, 86, 2814, 86, 2817, 86, 2827, + 86, 2828, 2815, 2820, 2821, 2826, 2829, 86, 86, 86, + 2824, 86, 86, 2834, 86, 86, 86, 2830, 2831, 2835, - 2833, 86, 86, 86, 86, 86, 2834, 86, 86, 2842, - 86, 86, 2837, 86, 86, 86, 2838, 2840, 2845, 2846, - 2836, 86, 2835, 2843, 86, 2847, 86, 2841, 86, 86, - 2839, 2844, 86, 2849, 2880, 2848, 86, 2850, 2852, 86, - 2851, 2853, 86, 2854, 86, 86, 86, 86, 86, 2856, - 2859, 2857, 2858, 2860, 2855, 86, 86, 2862, 86, 86, - 2861, 86, 86, 86, 2863, 86, 2868, 2866, 2870, 86, - 86, 2864, 86, 86, 2871, 86, 86, 2874, 2872, 86, - 2873, 2867, 2865, 86, 86, 86, 2879, 86, 86, 86, - 2869, 86, 86, 2882, 86, 86, 86, 86, 2875, 2876, + 2832, 86, 2838, 86, 86, 2836, 86, 2839, 86, 86, + 2833, 2843, 2841, 2842, 2844, 86, 2837, 2840, 2845, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 3267, 2854, 2849, 86, 2846, 2852, 2850, 86, 2857, 86, + 2848, 2855, 86, 2859, 2858, 86, 2847, 2853, 86, 2856, + 2851, 86, 2862, 2861, 2860, 2863, 2864, 86, 2865, 86, + 2866, 86, 86, 86, 86, 86, 2871, 86, 86, 2870, + 86, 2867, 86, 2872, 86, 2873, 2874, 86, 86, 86, + 86, 86, 86, 2868, 2869, 2875, 2876, 2878, 2880, 2882, + 86, 86, 86, 86, 86, 2883, 86, 2879, 2884, 2877, - 2877, 2881, 2886, 2878, 2883, 86, 2888, 2884, 86, 86, - 2887, 2885, 2891, 86, 2889, 2893, 86, 2894, 86, 86, - 2896, 86, 86, 86, 86, 86, 2901, 86, 2892, 2900, - 86, 86, 86, 86, 2890, 86, 2905, 86, 2897, 2898, - 2895, 2899, 2908, 86, 86, 86, 2910, 2906, 86, 86, - 2902, 2904, 86, 2911, 2903, 86, 2907, 2913, 86, 2914, - 86, 2916, 86, 86, 2909, 86, 2918, 2912, 2921, 2915, - 86, 86, 2919, 86, 86, 2925, 86, 86, 86, 2927, - 2926, 2917, 86, 2923, 86, 2920, 2930, 2931, 86, 2922, - 2933, 86, 86, 2924, 2928, 86, 86, 86, 2932, 2936, + 2887, 2885, 86, 2886, 86, 2881, 86, 2888, 2891, 86, + 86, 86, 86, 86, 86, 86, 2894, 86, 86, 2889, + 86, 2900, 2895, 2892, 2893, 2898, 2890, 86, 86, 86, + 2896, 86, 2899, 86, 2897, 86, 2902, 2901, 2904, 86, + 2906, 86, 2907, 86, 2909, 86, 86, 86, 86, 86, + 2905, 2910, 86, 2913, 2908, 2903, 2914, 86, 86, 86, + 2918, 86, 2911, 2912, 86, 2921, 86, 86, 2923, 2915, + 86, 86, 2926, 86, 86, 2916, 2924, 2917, 2919, 86, + 2920, 2927, 86, 2929, 86, 86, 86, 2922, 86, 86, + 86, 2934, 2925, 86, 86, 2932, 2931, 86, 86, 2928, - 86, 86, 2935, 86, 2929, 2939, 2937, 86, 86, 2934, - 86, 86, 2942, 86, 86, 86, 86, 2947, 86, 86, - 2943, 86, 2938, 2949, 2940, 2941, 2951, 86, 2944, 2946, - 2950, 2952, 86, 86, 2948, 86, 86, 86, 2953, 2945, - 86, 2955, 2956, 86, 2957, 86, 2958, 86, 2960, 2954, - 86, 2962, 86, 86, 86, 2961, 86, 86, 86, 2963, - 86, 2967, 86, 2959, 2968, 86, 86, 86, 2972, 86, - 2973, 86, 2969, 86, 2974, 2964, 2971, 3252, 2965, 2966, - 86, 86, 2970, 86, 2978, 86, 2975, 2982, 2977, 2979, - 86, 86, 2976, 86, 86, 2981, 2980, 86, 2985, 86, + 86, 2936, 3127, 2930, 2938, 86, 2941, 86, 2933, 2935, + 2939, 86, 2940, 2937, 2943, 2944, 86, 2946, 2942, 86, + 86, 86, 2945, 86, 86, 2949, 86, 86, 86, 2948, + 2952, 86, 2950, 2955, 86, 86, 86, 86, 86, 2947, + 86, 86, 2960, 86, 2964, 86, 86, 2951, 2953, 2954, + 2956, 86, 86, 2957, 2959, 2962, 2965, 86, 86, 2961, + 2967, 2963, 2958, 2966, 86, 2969, 86, 2970, 86, 2968, + 2971, 86, 86, 86, 2974, 86, 86, 2976, 86, 86, + 86, 2975, 86, 86, 86, 2972, 86, 2981, 2982, 86, + 86, 86, 2986, 86, 2977, 2987, 86, 2988, 2983, 2973, - 86, 86, 86, 86, 86, 2984, 2983, 2986, 2989, 86, - 86, 86, 86, 86, 86, 2991, 2990, 86, 2992, 86, - 2987, 2988, 86, 86, 86, 86, 86, 86, 3084, 3001, - 2993, 3002, 2994, 2995, 3003, 2996, 2998, 2999, 2997, 3004, - 86, 86, 86, 86, 3000, 86, 3005, 3006, 3007, 3009, - 86, 3010, 86, 3008, 86, 86, 3014, 86, 3011, 86, - 3012, 3013, 3015, 86, 3016, 3017, 86, 86, 3018, 3019, - 3022, 86, 3020, 3021, 86, 86, 3023, 86, 86, 86, - 86, 86, 3029, 86, 3030, 86, 3028, 86, 86, 3032, - 86, 86, 3024, 3025, 3031, 86, 3252, 3033, 3026, 86, + 2985, 2978, 86, 86, 2979, 2980, 86, 86, 2992, 86, + 2984, 86, 2991, 2993, 86, 86, 2994, 2996, 86, 86, + 2999, 86, 2989, 86, 86, 2990, 86, 2998, 86, 2995, + 2997, 3000, 86, 86, 86, 86, 86, 3003, 86, 86, + 3005, 86, 86, 3006, 3001, 3004, 86, 86, 3002, 86, + 86, 86, 86, 86, 3015, 3007, 3016, 3011, 3008, 3009, + 3010, 3018, 86, 3012, 3013, 3088, 86, 86, 3014, 86, + 3017, 3019, 3020, 86, 3021, 3022, 3023, 86, 3024, 86, + 86, 3026, 86, 86, 3025, 3029, 86, 86, 3027, 3030, + 86, 3037, 3028, 3031, 3032, 86, 86, 3033, 3034, 86, - 3027, 86, 3037, 86, 3036, 3034, 3038, 86, 3041, 3035, - 3039, 86, 86, 3044, 3040, 86, 3046, 86, 3045, 86, - 86, 3042, 86, 86, 3043, 86, 86, 86, 3050, 3054, - 3051, 86, 3048, 3053, 86, 86, 3062, 3055, 3056, 86, - 3047, 3049, 3057, 86, 86, 3052, 3058, 86, 3252, 3059, - 3060, 86, 3061, 86, 3063, 86, 3064, 86, 3065, 86, - 3066, 86, 3067, 86, 3068, 86, 3069, 86, 86, 3071, - 86, 86, 86, 86, 86, 86, 86, 3070, 3076, 86, - 3072, 86, 86, 86, 3073, 86, 3080, 86, 3079, 3077, - 3082, 86, 86, 3074, 3075, 3078, 3081, 86, 3086, 86, + 86, 3035, 3036, 86, 86, 3038, 86, 86, 86, 86, + 3044, 86, 86, 3039, 3043, 86, 3047, 3040, 3061, 3041, + 86, 86, 3046, 86, 86, 86, 86, 3042, 86, 3048, + 86, 3052, 86, 3045, 3051, 3077, 3049, 3053, 86, 3054, + 86, 3050, 86, 3055, 86, 3059, 86, 3056, 86, 86, + 3060, 86, 86, 3057, 3065, 86, 3058, 3062, 3068, 86, + 3066, 3063, 3069, 86, 86, 3071, 86, 3121, 86, 3064, + 3070, 3067, 3072, 86, 3073, 86, 86, 3075, 86, 3076, + 86, 3074, 3078, 86, 3079, 86, 3080, 86, 3081, 86, + 3082, 86, 3083, 86, 3084, 86, 86, 3086, 86, 86, - 3089, 3083, 3088, 86, 86, 86, 86, 86, 86, 3091, - 3087, 86, 86, 3085, 3095, 86, 86, 3090, 86, 86, - 86, 3096, 3099, 3252, 3092, 3093, 86, 3094, 3101, 86, - 3097, 3100, 3102, 86, 3103, 86, 86, 86, 86, 86, - 86, 3106, 3098, 3104, 86, 3105, 3107, 86, 86, 3111, - 3112, 3110, 3108, 86, 86, 3114, 86, 86, 86, 86, - 3115, 86, 3109, 86, 86, 86, 86, 86, 3113, 86, - 3121, 3124, 86, 3118, 3126, 3116, 3117, 3122, 3120, 86, - 3129, 86, 86, 86, 3119, 3123, 3127, 3125, 3131, 86, - 86, 3130, 86, 3132, 3133, 86, 3134, 86, 86, 3128, + 86, 86, 86, 3091, 86, 3085, 86, 86, 3087, 86, + 86, 86, 3095, 3097, 86, 86, 3092, 86, 3099, 3093, + 3089, 3090, 3094, 86, 3096, 3098, 86, 3101, 86, 3104, + 86, 3103, 86, 86, 86, 86, 86, 3106, 86, 86, + 86, 3102, 86, 3100, 3105, 3110, 86, 3111, 86, 3114, + 3109, 86, 3107, 86, 3108, 3112, 3116, 86, 3117, 86, + 86, 3115, 3118, 86, 86, 86, 86, 86, 3113, 3120, + 86, 86, 3126, 3122, 3119, 86, 3129, 3125, 3123, 86, + 86, 86, 86, 86, 3130, 3128, 86, 86, 3124, 86, + 86, 86, 3136, 86, 3139, 86, 3133, 86, 3131, 3132, - 86, 3137, 3135, 86, 86, 3138, 86, 3142, 3139, 86, - 3136, 86, 86, 86, 86, 86, 3145, 3147, 86, 3148, - 86, 3141, 86, 3143, 3144, 3151, 86, 86, 86, 3140, - 3149, 3154, 86, 86, 3146, 86, 3155, 86, 3158, 86, - 86, 3150, 3152, 3159, 86, 3156, 3153, 86, 86, 86, - 86, 86, 3157, 3160, 86, 3163, 3164, 86, 86, 3162, - 3161, 3165, 86, 86, 86, 86, 86, 3169, 3168, 3166, - 3171, 3167, 86, 86, 86, 86, 86, 86, 3170, 3173, - 3176, 3177, 86, 3172, 3184, 3174, 3178, 86, 3182, 86, - 86, 86, 3175, 86, 3179, 3180, 3183, 86, 3185, 86, + 3141, 3135, 3137, 86, 3144, 86, 3145, 3134, 3138, 3146, + 86, 3140, 86, 3143, 86, 3147, 86, 3142, 3148, 86, + 3149, 86, 86, 86, 86, 3152, 86, 86, 3153, 3154, + 86, 3150, 3157, 86, 86, 86, 3151, 86, 86, 3160, + 3162, 86, 3156, 86, 3158, 3159, 3163, 86, 3166, 86, + 86, 3155, 3164, 86, 86, 3161, 3169, 86, 86, 3170, + 86, 3173, 3165, 3174, 86, 3167, 86, 86, 3171, 86, + 86, 3168, 86, 3172, 3179, 86, 86, 3178, 3175, 3176, + 3180, 86, 86, 86, 86, 86, 86, 3184, 86, 3177, + 86, 3186, 86, 86, 86, 86, 86, 3181, 3183, 3191, - 86, 3181, 86, 3190, 3186, 3187, 86, 3188, 86, 86, - 3191, 86, 3189, 3192, 3193, 86, 86, 86, 86, 86, - 3194, 3199, 86, 86, 3196, 3195, 3252, 86, 86, 3202, - 3203, 86, 86, 86, 86, 86, 3201, 3197, 3198, 3206, - 86, 3200, 3204, 86, 3210, 3205, 86, 86, 86, 86, - 3214, 3207, 3211, 3209, 3208, 3252, 86, 86, 3216, 3212, - 86, 3217, 86, 86, 86, 3221, 86, 3218, 86, 86, - 3219, 3223, 86, 3222, 3213, 3215, 3224, 86, 86, 3225, - 86, 86, 86, 3220, 86, 3226, 3228, 3230, 86, 86, - 86, 86, 86, 86, 3232, 3233, 86, 3236, 86, 3227, + 3192, 86, 3182, 3188, 86, 3185, 3189, 3187, 3193, 86, + 86, 3190, 3197, 86, 3199, 3198, 3194, 86, 3200, 3195, + 86, 86, 86, 3196, 86, 86, 3201, 3202, 3205, 3203, + 3206, 86, 86, 86, 86, 3208, 86, 3207, 86, 86, + 86, 86, 3209, 3214, 3204, 86, 3211, 86, 86, 86, + 86, 3217, 3210, 3218, 86, 86, 86, 86, 86, 3212, + 3213, 3216, 3221, 86, 3215, 3219, 3222, 86, 3220, 86, + 3225, 3224, 3226, 86, 3223, 86, 3227, 86, 3229, 86, + 3231, 86, 3232, 86, 86, 86, 3236, 86, 3233, 3267, + 86, 3234, 3239, 86, 3230, 3237, 86, 86, 3238, 3228, - 3252, 3229, 3252, 3231, 3237, 86, 86, 3240, 3241, 86, - 3234, 3235, 3238, 86, 3243, 86, 86, 3239, 3244, 86, - 3242, 86, 86, 3245, 86, 86, 3246, 3247, 3250, 86, - 3251, 86, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3248, 3249, 47, 47, 47, 47, 47, - 47, 47, 52, 52, 52, 52, 52, 52, 52, 57, - 57, 57, 57, 57, 57, 57, 63, 63, 63, 63, - 63, 63, 63, 68, 68, 68, 68, 68, 68, 68, - 74, 74, 74, 74, 74, 74, 74, 80, 80, 80, - 80, 80, 80, 80, 89, 89, 3252, 89, 89, 89, + 86, 86, 86, 86, 3235, 86, 86, 3240, 3241, 86, + 3243, 3245, 86, 86, 3247, 86, 3242, 86, 3248, 86, + 3251, 3244, 3246, 3252, 86, 3249, 86, 86, 3255, 3256, + 86, 86, 3258, 86, 3250, 86, 3253, 86, 3257, 3259, + 86, 86, 3260, 86, 86, 3254, 3261, 3267, 3262, 3265, + 86, 3266, 86, 3267, 3267, 3267, 3263, 3267, 3267, 3267, + 3267, 3267, 3267, 3264, 47, 47, 47, 47, 47, 47, + 47, 52, 52, 52, 52, 52, 52, 52, 57, 57, + 57, 57, 57, 57, 57, 63, 63, 63, 63, 63, + 63, 63, 68, 68, 68, 68, 68, 68, 68, 74, - 89, 158, 158, 3252, 3252, 3252, 158, 158, 160, 160, - 3252, 3252, 160, 3252, 160, 162, 3252, 3252, 3252, 3252, - 3252, 162, 165, 165, 3252, 3252, 3252, 165, 165, 167, - 3252, 3252, 3252, 3252, 3252, 167, 169, 169, 3252, 169, - 169, 169, 169, 172, 3252, 3252, 3252, 3252, 3252, 172, - 175, 175, 3252, 3252, 3252, 175, 175, 90, 90, 3252, - 90, 90, 90, 90, 17, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, + 74, 74, 74, 74, 74, 74, 80, 80, 80, 80, + 80, 80, 80, 89, 89, 3267, 89, 89, 89, 89, + 158, 158, 3267, 3267, 3267, 158, 158, 160, 160, 3267, + 3267, 160, 3267, 160, 162, 3267, 3267, 3267, 3267, 3267, + 162, 165, 165, 3267, 3267, 3267, 165, 165, 167, 3267, + 3267, 3267, 3267, 3267, 167, 169, 169, 3267, 169, 169, + 169, 169, 172, 3267, 3267, 3267, 3267, 3267, 172, 175, + 175, 3267, 3267, 3267, 175, 175, 90, 90, 3267, 90, + 90, 90, 90, 17, 3267, 3267, 3267, 3267, 3267, 3267, + 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, - 3252, 3252, 3252, 3252, 3252 + 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, + 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, + 3267, 3267, 3267, 3267 } ; -static const flex_int16_t yy_chk[6406] = +static const flex_int16_t yy_chk[6425] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2210,18 +2217,18 @@ static const flex_int16_t yy_chk[6406] = 5, 3, 6, 24, 4, 24, 24, 5, 24, 6, 7, 7, 7, 7, 24, 7, 8, 8, 8, 8, 33, 8, 7, 9, 9, 9, 26, 26, 8, 10, - 10, 10, 19, 29, 9, 33, 19, 29, 3260, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3275, 35, 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, 13, 34, 13, 11, 35, 99, 34, 29, 38, 13, 51, 51, 11, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 99, 14, 12, 15, 15, 15, 38, 23, 14, 23, 23, 12, 23, 46, 15, 16, 16, - 16, 23, 23, 25, 27, 27, 25, 25, 2661, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 2671, 16, 25, 46, 27, 30, 30, 25, 27, 56, 40, 27, 56, 73, 31, 31, 25, 28, 67, 67, 30, 32, 28, 31, 40, 32, 28, 73, 32, 28, 92, 28, - 28, 92, 31, 32, 1075, 32, 36, 36, 37, 37, + 28, 92, 31, 32, 1076, 32, 36, 36, 37, 37, 28, 45, 45, 37, 175, 36, 45, 39, 41, 41, 45, 36, 39, 41, 94, 36, 39, 43, 43, 37, @@ -2389,524 +2396,526 @@ static const flex_int16_t yy_chk[6406] = 753, 749, 750, 756, 753, 755, 749, 754, 756, 755, 757, 758, 749, 749, 759, 760, 761, 752, 760, 764, - 762, 761, 761, 763, 763, 772, 758, 762, 766, 757, + 762, 761, 761, 763, 763, 755, 758, 762, 766, 757, 765, 765, 767, 766, 764, 767, 768, 769, 769, 759, 770, 768, 770, 771, 772, 773, 774, 778, 775, 773, 776, 777, 777, 781, 779, 771, 780, 780, 776, 783, - 782, 794, 778, 784, 794, 785, 774, 775, 779, 784, - 785, 781, 782, 786, 786, 789, 80, 787, 790, 791, - 789, 783, 787, 787, 790, 791, 792, 793, 795, 796, - 800, 792, 799, 793, 795, 797, 797, 796, 798, 798, - 799, 801, 802, 803, 804, 804, 801, 805, 800, 802, - 806, 807, 807, 808, 809, 811, 805, 812, 806, 808, + 782, 80, 778, 772, 784, 803, 774, 775, 779, 785, + 784, 781, 782, 787, 785, 786, 786, 789, 787, 787, + 790, 783, 789, 791, 803, 792, 790, 793, 794, 791, + 792, 794, 795, 793, 796, 797, 797, 799, 795, 798, + 798, 800, 796, 801, 802, 799, 804, 804, 801, 805, + 808, 802, 806, 807, 807, 809, 808, 811, 805, 800, - 813, 815, 803, 814, 811, 818, 812, 819, 814, 816, - 815, 817, 816, 809, 820, 821, 817, 823, 823, 818, - 822, 824, 825, 820, 813, 822, 822, 827, 821, 826, - 835, 828, 819, 830, 828, 830, 824, 832, 826, 831, - 831, 825, 828, 833, 834, 837, 836, 839, 833, 838, - 835, 827, 840, 841, 842, 843, 839, 841, 832, 846, - 847, 845, 844, 848, 850, 834, 836, 837, 844, 838, - 845, 846, 842, 853, 843, 840, 849, 848, 850, 847, - 851, 854, 849, 852, 852, 851, 855, 856, 857, 858, - 854, 859, 860, 853, 861, 856, 862, 864, 865, 863, + 806, 812, 813, 814, 815, 818, 811, 819, 814, 816, + 812, 817, 816, 815, 809, 820, 817, 821, 824, 818, + 823, 823, 822, 825, 820, 826, 813, 822, 822, 827, + 821, 832, 819, 824, 826, 828, 834, 830, 828, 830, + 831, 831, 825, 833, 835, 836, 828, 837, 833, 839, + 838, 840, 832, 827, 842, 841, 843, 834, 839, 841, + 844, 846, 845, 847, 835, 836, 844, 848, 853, 837, + 838, 845, 842, 846, 840, 843, 850, 849, 854, 851, + 855, 848, 847, 849, 851, 852, 852, 854, 853, 856, + 850, 857, 858, 859, 863, 860, 861, 856, 862, 864, - 861, 866, 862, 864, 869, 870, 855, 866, 857, 867, - 859, 858, 860, 863, 871, 867, 868, 870, 865, 871, - 868, 872, 874, 869, 877, 870, 873, 873, 874, 875, - 876, 879, 875, 878, 880, 880, 881, 877, 882, 878, - 883, 884, 872, 882, 887, 883, 883, 888, 876, 885, - 889, 879, 890, 885, 881, 889, 884, 886, 886, 892, - 893, 896, 895, 897, 899, 899, 887, 888, 900, 902, - 902, 890, 900, 903, 893, 895, 901, 905, 904, 906, - 921, 896, 904, 892, 897, 898, 921, 75, 898, 908, - 898, 901, 905, 906, 898, 907, 898, 915, 903, 909, + 855, 865, 861, 866, 862, 864, 868, 867, 863, 866, + 868, 857, 859, 867, 858, 860, 869, 870, 871, 872, + 874, 865, 879, 871, 873, 873, 874, 875, 876, 870, + 875, 877, 878, 880, 880, 869, 881, 870, 878, 887, + 872, 884, 879, 882, 877, 883, 876, 888, 882, 885, + 883, 883, 890, 885, 881, 889, 884, 886, 886, 892, + 889, 887, 893, 897, 895, 896, 900, 888, 899, 899, + 900, 890, 901, 902, 902, 903, 893, 895, 904, 905, + 925, 925, 904, 892, 897, 896, 898, 901, 907, 898, + 906, 898, 908, 907, 905, 898, 910, 898, 911, 915, - 907, 898, 910, 908, 909, 909, 898, 911, 912, 915, - 913, 910, 912, 914, 916, 917, 918, 919, 914, 916, - 923, 911, 922, 920, 912, 913, 923, 922, 914, 917, - 924, 919, 920, 925, 925, 926, 924, 918, 927, 928, - 926, 929, 932, 933, 927, 930, 935, 938, 933, 936, - 936, 937, 934, 939, 932, 938, 937, 940, 935, 942, - 929, 928, 941, 930, 931, 931, 934, 939, 943, 945, - 931, 950, 931, 946, 943, 942, 940, 944, 931, 947, - 74, 941, 944, 931, 931, 948, 948, 945, 949, 946, - 931, 950, 949, 952, 954, 953, 955, 947, 953, 952, + 903, 913, 898, 909, 906, 910, 908, 898, 909, 909, + 912, 915, 911, 914, 912, 916, 913, 917, 914, 918, + 916, 919, 922, 920, 921, 928, 912, 922, 914, 926, + 921, 917, 920, 923, 926, 919, 924, 927, 929, 923, + 918, 930, 924, 927, 932, 933, 935, 928, 934, 937, + 933, 936, 936, 939, 937, 938, 932, 929, 935, 930, + 931, 931, 934, 938, 940, 941, 931, 939, 931, 942, + 943, 946, 944, 948, 931, 945, 943, 944, 947, 931, + 931, 949, 949, 940, 941, 942, 931, 945, 950, 946, + 951, 948, 950, 953, 947, 954, 955, 957, 954, 953, - 956, 958, 957, 960, 963, 961, 956, 957, 962, 955, - 963, 965, 960, 954, 961, 967, 964, 966, 968, 969, - 958, 970, 966, 973, 962, 964, 974, 971, 972, 973, - 965, 977, 968, 970, 975, 967, 971, 972, 979, 969, - 975, 980, 982, 974, 981, 984, 983, 977, 985, 986, - 989, 995, 979, 985, 986, 989, 982, 990, 991, 991, - 984, 980, 992, 981, 983, 993, 990, 995, 992, 996, - 1000, 1001, 998, 998, 996, 996, 998, 999, 993, 1002, - 999, 1003, 1005, 1004, 1000, 1007, 1006, 1008, 1009, 1010, - 1011, 1001, 1006, 1008, 1010, 1002, 1004, 1005, 1013, 1003, + 956, 958, 959, 957, 963, 961, 958, 962, 966, 965, + 951, 964, 968, 956, 961, 955, 962, 964, 965, 967, + 963, 959, 969, 970, 967, 971, 972, 966, 974, 973, + 975, 980, 968, 976, 974, 972, 969, 971, 973, 976, + 978, 981, 985, 970, 982, 980, 983, 975, 984, 986, + 987, 992, 992, 990, 986, 987, 978, 985, 990, 991, + 983, 981, 994, 982, 993, 996, 984, 997, 991, 1001, + 993, 1000, 997, 997, 1000, 994, 999, 999, 1002, 1003, + 999, 996, 1004, 1001, 1005, 1007, 1006, 1008, 1009, 1010, + 1014, 1007, 1012, 1014, 1009, 1003, 1015, 1005, 1002, 1018, - 1014, 1013, 1015, 1009, 1011, 1007, 1016, 1015, 1017, 1018, - 1019, 1016, 1022, 1020, 1018, 1019, 1023, 1024, 1022, 1028, - 1025, 1014, 1027, 1024, 1017, 1020, 1025, 1026, 1026, 1031, - 1029, 1027, 1023, 1029, 1030, 1030, 1032, 1028, 1033, 1034, - 1035, 1038, 1034, 1036, 1037, 1043, 1038, 1031, 1041, 1036, - 1037, 1039, 1040, 1035, 1041, 1032, 1039, 1040, 1033, 1044, - 1045, 1048, 1046, 1043, 1047, 1047, 1045, 1046, 1049, 1050, - 1048, 1051, 1052, 1053, 1054, 1052, 1053, 1049, 1055, 1044, - 1056, 1057, 1058, 1059, 1060, 1054, 1061, 1050, 1058, 1059, - 1051, 1061, 1056, 1062, 1062, 1063, 1055, 1064, 1065, 1060, + 1004, 1006, 75, 1011, 1010, 1016, 1012, 1008, 1011, 1017, + 1016, 1019, 1021, 1020, 1017, 1018, 1019, 1015, 1020, 1023, + 1024, 1025, 1026, 1028, 1021, 1023, 1029, 1025, 1026, 1027, + 1027, 1030, 1028, 1032, 1030, 1033, 1024, 1031, 1031, 1034, + 1035, 1037, 1036, 1035, 1029, 1039, 1038, 1037, 1040, 1044, + 1039, 1032, 1038, 1040, 1033, 1036, 1041, 1042, 1045, 1034, + 1046, 1041, 1051, 1042, 1047, 1049, 1046, 1044, 1050, 1047, + 1048, 1048, 1052, 1053, 1049, 1055, 1053, 1050, 1045, 1054, + 1051, 1056, 1054, 1057, 1058, 1061, 1055, 1059, 1060, 1063, + 1063, 1052, 1062, 1059, 1060, 1057, 1064, 1062, 1065, 1056, - 1057, 1066, 1067, 1068, 1069, 1066, 1070, 1072, 1073, 1073, - 1065, 1064, 1068, 1074, 1063, 1076, 1078, 1077, 1080, 1079, - 1067, 1081, 1081, 1069, 1079, 1082, 1072, 1080, 1078, 1076, - 1083, 1070, 1077, 1074, 1084, 1085, 1083, 1086, 1088, 1087, - 1084, 1087, 1086, 1088, 1089, 1082, 1090, 1091, 1092, 1093, - 1094, 1085, 1091, 1096, 1095, 1098, 1098, 1094, 1089, 1099, - 1090, 1100, 1101, 1092, 1102, 1103, 68, 1106, 1093, 1095, - 1102, 1106, 1096, 1099, 1114, 1104, 1111, 1101, 1108, 1100, - 1104, 1107, 1107, 1108, 1113, 1103, 1109, 1109, 1110, 1104, - 1111, 1104, 1114, 1112, 1104, 1110, 1112, 1115, 1117, 1116, + 1061, 1066, 1067, 1058, 1068, 1069, 1067, 1070, 1071, 1073, + 1074, 1074, 1065, 1066, 1069, 1064, 1075, 1077, 1079, 1078, + 1080, 1083, 1068, 1081, 1086, 1080, 1070, 74, 1073, 1084, + 1079, 1077, 1081, 1071, 1078, 1084, 1075, 1082, 1082, 1085, + 1086, 1083, 1087, 1089, 1088, 1085, 1088, 1087, 1089, 1090, + 1091, 1092, 1093, 1094, 1095, 1096, 1092, 1097, 1099, 1099, + 1100, 1095, 1101, 1090, 1091, 1103, 1102, 1093, 1104, 68, + 1096, 1103, 1094, 1105, 1100, 1107, 1097, 1111, 1105, 1107, + 1101, 1102, 1108, 1108, 1111, 1109, 1112, 1105, 1104, 1105, + 1109, 1114, 1105, 1110, 1110, 1113, 1115, 1116, 1113, 1117, - 1118, 1120, 1119, 1113, 1116, 1121, 1115, 1119, 1122, 1124, - 1124, 1127, 1118, 1125, 1126, 1120, 1121, 1117, 1125, 1126, - 1128, 1130, 1129, 1131, 1132, 1128, 1129, 1122, 1133, 1134, - 1130, 1127, 1137, 1135, 1138, 1136, 1139, 1140, 1131, 1132, - 1141, 1134, 1136, 1142, 1137, 1143, 1141, 1133, 1135, 1144, - 1145, 1146, 1147, 1138, 1149, 1140, 1148, 1139, 1142, 1145, - 1150, 1151, 1154, 1157, 1153, 1143, 1146, 63, 1148, 1144, - 1153, 1147, 1155, 1158, 1156, 1150, 1159, 1154, 1158, 1149, - 1161, 1151, 1156, 1157, 1160, 1163, 1155, 1162, 1159, 1160, - 1160, 1164, 1164, 1166, 1168, 1167, 1169, 1169, 1163, 1161, + 1112, 1118, 1120, 1119, 1117, 1121, 1116, 1120, 1123, 1128, + 1114, 1122, 1125, 1125, 1115, 1119, 1126, 1131, 1127, 1121, + 1118, 1126, 1122, 1127, 1130, 1129, 1131, 1123, 1130, 1128, + 1129, 1132, 1133, 1134, 1136, 1137, 1135, 1139, 1138, 1140, + 1141, 1144, 1137, 1145, 1143, 1142, 1132, 1133, 1135, 1136, + 1138, 1142, 1134, 1146, 1147, 1148, 1139, 1151, 1141, 1143, + 1140, 1144, 1146, 1145, 1149, 1150, 1152, 1153, 1156, 1147, + 1158, 1155, 1157, 1159, 1148, 1160, 1149, 1155, 1158, 1161, + 1160, 1152, 1151, 1156, 1150, 1163, 1157, 1153, 1164, 1162, + 1165, 1161, 1169, 1159, 1162, 1162, 1166, 1166, 1168, 1171, - 1168, 1162, 1165, 1165, 1167, 1171, 1166, 1165, 1170, 1176, - 1165, 1165, 1172, 1170, 1171, 1165, 58, 1173, 1172, 1174, - 1179, 1165, 1173, 1180, 1174, 1165, 1175, 1175, 1177, 1177, - 1176, 1178, 1182, 1181, 1178, 1184, 1178, 1185, 1183, 1186, - 1179, 1180, 1181, 1183, 1187, 1186, 1188, 1190, 57, 1184, - 1187, 1188, 1182, 1189, 1197, 1185, 1190, 1189, 1191, 1191, - 1195, 1190, 1193, 1190, 1195, 1190, 1196, 1190, 1192, 1192, - 1198, 1192, 1197, 1193, 1201, 1200, 1203, 1199, 1204, 1198, - 1202, 1196, 1199, 1199, 1200, 1202, 1205, 1204, 1206, 1207, - 1203, 1208, 1209, 1209, 1210, 1211, 1201, 1208, 1213, 1212, + 1171, 1169, 1164, 1165, 1163, 1167, 1167, 1172, 1173, 1170, + 1167, 1168, 1172, 1167, 1167, 1170, 1174, 1173, 1167, 1178, + 1175, 1176, 1174, 1181, 1167, 1175, 1176, 1182, 1167, 1177, + 1177, 1179, 1179, 1180, 1184, 1183, 1180, 1185, 1180, 1186, + 1178, 1187, 1185, 1181, 1183, 1182, 1188, 1193, 1193, 1189, + 63, 1190, 1188, 1186, 1184, 1189, 1190, 1191, 1192, 1187, + 1195, 1191, 1194, 1194, 1197, 1194, 1198, 1192, 1197, 1199, + 1200, 1195, 1192, 1203, 1192, 1202, 1192, 1201, 1192, 1200, + 1204, 1198, 1201, 1201, 1202, 1204, 1205, 1199, 1206, 1207, + 1208, 1209, 1210, 1211, 1211, 1203, 1212, 1206, 1210, 1213, - 1215, 1214, 1210, 1207, 1212, 1205, 1216, 1206, 1217, 1211, - 1214, 1219, 1213, 1217, 1218, 1218, 1220, 1220, 1215, 1221, - 1223, 1221, 1224, 1223, 1225, 1226, 1219, 1224, 1227, 1227, - 1228, 1216, 1229, 1229, 1226, 1230, 1230, 1231, 1232, 1233, - 1234, 1234, 1231, 1225, 1235, 1236, 1237, 1238, 1236, 1239, - 1228, 1240, 1238, 1240, 1241, 1244, 1245, 1246, 1239, 1232, - 1233, 1245, 1243, 1247, 1235, 1243, 1237, 1248, 1247, 1249, - 1244, 1246, 1241, 1250, 1249, 1248, 1251, 1251, 1250, 1252, - 1253, 1254, 1255, 1256, 1252, 1258, 1259, 1254, 1260, 1255, - 1262, 1258, 1259, 1260, 1261, 1263, 1256, 1264, 1253, 1262, + 1205, 1214, 1215, 1216, 1212, 1209, 1214, 1217, 1207, 1208, + 1218, 1221, 1216, 1213, 1219, 1227, 1215, 1220, 1220, 1219, + 1222, 1222, 1223, 1226, 1223, 1217, 1221, 1225, 1226, 1228, + 1225, 1229, 1229, 1230, 1227, 1218, 1231, 1231, 1228, 1232, + 1232, 1233, 1234, 1235, 1236, 1236, 1233, 1237, 1238, 1239, + 1240, 1238, 1241, 1230, 1242, 1240, 1242, 1243, 1246, 1245, + 1247, 1241, 1245, 1234, 1235, 1247, 1248, 1237, 1255, 1239, + 1250, 1249, 1251, 1246, 1252, 1243, 1249, 1251, 1250, 1252, + 1248, 1253, 1253, 1254, 1256, 1257, 1255, 1258, 1254, 1260, + 1256, 1261, 1257, 1262, 1264, 1260, 1263, 1261, 1262, 1265, - 1261, 1265, 1265, 1266, 1268, 1269, 1270, 1271, 1264, 1272, - 1273, 1275, 1276, 1271, 1263, 1272, 1273, 1275, 1277, 1268, - 1278, 1279, 1280, 1266, 1281, 1269, 1276, 1282, 1282, 1270, - 1283, 1284, 1276, 1279, 1285, 1288, 1280, 52, 1277, 1286, - 1278, 1291, 1281, 1289, 1286, 1287, 1287, 1293, 1289, 1292, - 1283, 1295, 1285, 1294, 1292, 1292, 1284, 1296, 1288, 1295, - 1291, 1297, 1294, 1298, 1299, 1293, 1300, 1308, 1301, 1299, - 1301, 1296, 1299, 1302, 1304, 1300, 1297, 1306, 1298, 1305, - 1304, 1298, 1309, 1305, 1307, 1310, 1308, 1302, 1306, 1307, - 1307, 1311, 1312, 1313, 1314, 1315, 1311, 1312, 1316, 1318, + 1258, 1266, 1263, 1264, 1267, 1267, 1268, 1270, 1271, 1272, + 1273, 1274, 1266, 1275, 1277, 1278, 1273, 1274, 1265, 1275, + 1277, 1279, 1270, 1280, 1281, 1282, 1268, 1283, 1271, 1278, + 1284, 1284, 1272, 1285, 1286, 1278, 1281, 1287, 1290, 1282, + 58, 1279, 1288, 1280, 1293, 1283, 1291, 1288, 1289, 1289, + 1295, 1291, 1294, 1285, 1297, 1287, 1296, 1294, 1294, 1286, + 1298, 1290, 1297, 1293, 1299, 1296, 1300, 1301, 1295, 1302, + 1310, 1303, 1301, 1303, 1298, 1301, 1304, 1306, 1302, 1299, + 1308, 1300, 1307, 1306, 1300, 1311, 1307, 1309, 1312, 1310, + 1304, 1308, 1309, 1309, 1313, 1314, 1315, 1316, 1317, 1313, - 1315, 1319, 1320, 1310, 1321, 1321, 1322, 1323, 1309, 1324, - 1322, 1313, 1326, 1318, 1314, 1325, 1327, 1328, 1316, 1319, - 1320, 1325, 1329, 1330, 1326, 1323, 1331, 1332, 1324, 1333, - 1335, 1328, 1332, 1336, 1334, 1327, 1333, 1329, 1330, 1334, - 1337, 1337, 1336, 1338, 1339, 1331, 1340, 1343, 1335, 1341, - 1341, 1342, 1346, 1339, 1344, 1344, 1345, 1342, 1338, 1347, - 1348, 1343, 1345, 1349, 1350, 1348, 1340, 1357, 1346, 1349, - 1350, 1351, 1351, 1352, 1352, 1354, 1354, 1355, 1356, 1358, - 1347, 1355, 1359, 1360, 1363, 1357, 1361, 1356, 1362, 1362, - 1365, 1358, 1364, 1361, 1366, 1365, 1359, 1367, 1360, 1370, + 1314, 1318, 1320, 1317, 1321, 1322, 1312, 1323, 1323, 1324, + 1325, 1311, 1326, 1324, 1315, 1328, 1320, 1316, 1327, 1329, + 1330, 1318, 1321, 1322, 1327, 1331, 1332, 1328, 1325, 1333, + 1334, 1326, 1335, 1337, 1330, 1334, 1338, 1336, 1329, 1335, + 1331, 1332, 1336, 1339, 1339, 1338, 1340, 1341, 1333, 1342, + 1346, 1337, 1343, 1343, 1344, 1349, 1341, 1345, 1347, 1347, + 1344, 1340, 1348, 1345, 1346, 1350, 1360, 1351, 1348, 1342, + 1352, 1349, 1351, 1353, 1354, 1354, 1352, 1355, 1355, 1353, + 1357, 1357, 1359, 1358, 1360, 1361, 1350, 1358, 1362, 1363, + 1366, 1359, 1364, 1365, 1365, 1367, 1368, 1361, 1369, 1364, - 1364, 1368, 1371, 1371, 1363, 1369, 1368, 1368, 1366, 1372, - 1369, 1369, 1373, 1374, 1376, 1375, 1367, 1377, 1378, 1370, - 1375, 1379, 1374, 1381, 1380, 1383, 1382, 1379, 1372, 1380, - 1391, 1373, 1382, 1376, 1384, 1385, 1378, 1377, 1386, 1387, - 1384, 1385, 1388, 1389, 1383, 1390, 1393, 1393, 1392, 1381, - 1394, 1391, 1395, 1394, 1396, 1396, 1399, 1386, 1387, 1390, - 1399, 1388, 1389, 1392, 1395, 1397, 1397, 1398, 1400, 1401, - 1402, 1403, 1398, 1403, 1405, 1406, 1407, 1403, 1401, 1408, - 1406, 1400, 1409, 1402, 1410, 1410, 1413, 1414, 1411, 1412, - 1403, 1407, 1405, 1411, 1418, 1412, 1420, 1415, 1409, 1408, + 1370, 1368, 1362, 1367, 1363, 1373, 1374, 1374, 1371, 1375, + 1366, 1372, 1369, 1371, 1371, 1376, 1372, 1372, 1377, 1370, + 1379, 1378, 1380, 1381, 1382, 1373, 1378, 1377, 1375, 1384, + 1382, 1383, 1385, 1386, 1376, 1389, 1383, 1387, 1385, 1379, + 1388, 1381, 1380, 1387, 1390, 1391, 1388, 1392, 1393, 1394, + 1395, 1404, 1386, 57, 1389, 1384, 1396, 1396, 1397, 1398, + 1404, 1397, 1393, 1390, 1391, 1395, 1392, 1399, 1399, 1401, + 1394, 1398, 1400, 1400, 1401, 1402, 1403, 1405, 1406, 1402, + 1406, 1408, 1409, 1410, 1406, 1411, 1412, 1409, 1414, 1403, + 1405, 1413, 1413, 1414, 1415, 1416, 1417, 1406, 1410, 1408, - 1414, 1413, 1415, 1416, 1417, 1419, 1421, 1416, 1417, 1422, - 1422, 1424, 1421, 1426, 1418, 1427, 1420, 1428, 1428, 1429, - 1427, 1430, 1436, 1419, 1437, 1429, 1432, 1432, 1434, 1424, - 1440, 1434, 1435, 1435, 1426, 1441, 1439, 1443, 1436, 1439, - 1437, 1430, 1442, 1442, 1441, 1444, 1445, 1447, 1446, 1449, - 1440, 1450, 1443, 1446, 1448, 1448, 1451, 1452, 1449, 1453, - 1453, 1447, 1454, 1455, 1457, 1445, 1444, 1456, 1460, 1450, - 1462, 1451, 1456, 1458, 1458, 1463, 1454, 1461, 1461, 1457, - 1459, 1455, 1452, 1464, 1459, 1465, 1463, 1464, 1460, 1466, - 1468, 1468, 1462, 1469, 1466, 1470, 1471, 1472, 1473, 1474, + 1415, 1418, 1412, 1419, 1420, 1411, 1418, 1419, 1420, 1417, + 1416, 1421, 1422, 1423, 1424, 1425, 1425, 1427, 1429, 1430, + 1424, 1431, 1431, 1432, 1430, 1433, 1435, 1435, 1439, 1432, + 1422, 1421, 1440, 1423, 1437, 1427, 1443, 1437, 1444, 1429, + 1438, 1438, 1446, 1442, 1439, 1433, 1442, 1444, 1440, 1445, + 1445, 1447, 1448, 1449, 1450, 1452, 1443, 1446, 1449, 1451, + 1451, 1453, 1454, 1455, 1452, 1456, 1456, 1457, 1450, 1458, + 1459, 1448, 1447, 1463, 1460, 1459, 1462, 1454, 1465, 1453, + 1462, 1457, 1461, 1461, 1464, 1464, 1466, 1458, 1455, 1460, + 1467, 1468, 1472, 1463, 1467, 1473, 1469, 1466, 1471, 1471, - 1475, 1475, 1476, 1477, 1465, 1478, 47, 1476, 1482, 1469, - 1471, 1480, 1473, 1470, 1479, 1479, 1472, 1472, 1486, 1495, - 1480, 1481, 1489, 1477, 1474, 1478, 1481, 1483, 1482, 1483, - 1484, 1485, 1491, 1487, 18, 1484, 1489, 1485, 1486, 1487, - 1490, 1490, 1492, 1495, 1494, 1496, 1496, 1498, 1492, 1494, - 1499, 1491, 1497, 1497, 1500, 1501, 1502, 1502, 1501, 1503, - 1504, 1498, 1505, 1513, 17, 1507, 1524, 1506, 1499, 1500, - 1506, 1507, 1504, 1506, 1508, 1509, 1512, 1503, 1509, 1508, - 1511, 1512, 1505, 1514, 1524, 1506, 1514, 1516, 1513, 1511, - 1515, 1515, 1517, 1516, 1509, 1518, 1519, 1519, 1517, 1521, + 1465, 1469, 1474, 1475, 1476, 1477, 1478, 1478, 1472, 1479, + 1468, 1480, 1481, 1473, 1479, 1483, 1474, 1485, 1476, 1482, + 1482, 1484, 1475, 1475, 1483, 1486, 1484, 1486, 1487, 1488, + 1477, 1480, 1481, 1487, 1489, 1488, 1490, 1485, 1492, 1493, + 1493, 1494, 1490, 1495, 1498, 1497, 1499, 1499, 1501, 1495, + 1497, 1502, 1492, 1506, 1489, 1500, 1500, 1503, 1504, 1508, + 1494, 1504, 1501, 1505, 1505, 1507, 1558, 1509, 1498, 1502, + 1509, 1506, 1503, 1509, 1510, 1512, 1511, 1507, 1512, 1508, + 1510, 1511, 1514, 1515, 1516, 1509, 1517, 1558, 1515, 1517, + 1519, 1514, 1518, 1518, 1512, 1520, 1519, 1521, 1522, 1522, - 1518, 1520, 1520, 1522, 1523, 1521, 1525, 1526, 1522, 1527, - 1528, 1532, 1527, 1529, 1536, 1530, 1528, 1523, 1531, 1529, - 1530, 1533, 1534, 1534, 1531, 1525, 1533, 1526, 1535, 1537, - 1538, 1539, 1536, 1535, 1532, 1542, 1543, 1540, 1541, 1544, - 1545, 1544, 1547, 1548, 1549, 1539, 1551, 1552, 1554, 1537, - 1538, 1540, 1541, 1542, 1547, 1548, 1550, 1549, 1553, 1545, - 1557, 1543, 1550, 1556, 1556, 1558, 1551, 1552, 1562, 1554, - 1558, 1559, 1553, 1560, 1560, 1561, 1563, 1564, 1565, 1566, - 1557, 1567, 1562, 1559, 1568, 1569, 1573, 1565, 1567, 1571, - 1561, 1575, 1575, 1568, 1566, 1564, 1568, 1576, 1576, 1574, + 1524, 1520, 1521, 1523, 1523, 1525, 1524, 1526, 1527, 1516, + 1525, 1528, 1529, 1530, 1533, 1531, 1530, 1532, 1534, 1533, + 1526, 1531, 1535, 1532, 1534, 1539, 1527, 1540, 1536, 1541, + 1528, 1538, 1529, 1536, 1537, 1537, 1538, 1542, 1543, 1544, + 1545, 1546, 1547, 1539, 1549, 1535, 1547, 1540, 1548, 1541, + 1548, 1542, 1543, 1544, 1554, 1551, 1552, 1553, 1545, 1555, + 1554, 1556, 1557, 1549, 1560, 1560, 1546, 1551, 1552, 1561, + 1553, 1563, 1562, 1564, 1564, 1565, 1557, 1562, 1566, 1555, + 1567, 1556, 1568, 1563, 1569, 1582, 1570, 1571, 1577, 1561, + 1565, 1573, 1566, 1569, 1571, 1575, 1572, 1579, 1579, 1578, - 1563, 1569, 1574, 1577, 1571, 1578, 1581, 1579, 1582, 1571, - 1579, 1573, 1580, 1580, 1585, 1577, 1583, 1584, 1586, 1581, - 1587, 1583, 1584, 1578, 1588, 1591, 1589, 1582, 1590, 1587, - 1593, 1591, 1594, 1585, 1586, 1589, 1595, 1590, 1589, 1592, - 1592, 1596, 1597, 1588, 1598, 1594, 1601, 1602, 1603, 1603, - 1593, 1604, 1605, 0, 1595, 1596, 1598, 1606, 1597, 1607, - 1607, 1605, 1606, 1608, 1609, 1602, 1610, 1604, 1611, 1609, - 1612, 1601, 1608, 1613, 1607, 1608, 1615, 1616, 1613, 1613, - 1617, 1618, 1620, 1628, 1610, 1619, 1618, 1627, 1612, 1611, - 1615, 1619, 1616, 1621, 1621, 1622, 1630, 1628, 1623, 1624, + 1568, 1570, 1578, 1582, 1567, 1572, 1581, 1573, 1572, 1585, + 1575, 1580, 1580, 1577, 1583, 1575, 1586, 1583, 1581, 1584, + 1584, 1587, 1585, 1588, 1589, 1590, 1587, 1591, 1588, 1592, + 1593, 1594, 1595, 1596, 1596, 1586, 1591, 1597, 1595, 1593, + 1594, 1590, 1593, 1589, 1599, 1598, 1600, 1601, 1592, 1602, + 1605, 1606, 1607, 1607, 1608, 1609, 52, 1597, 1598, 1615, + 1600, 1602, 1599, 1601, 1609, 1612, 1610, 1611, 1611, 1606, + 1608, 1610, 1614, 1613, 1612, 1605, 1616, 1612, 1613, 1617, + 1615, 1619, 1611, 1620, 1617, 1617, 1621, 1622, 1624, 1632, + 1614, 1623, 1622, 1631, 1616, 1619, 1626, 1623, 1620, 1625, - 1620, 1622, 1617, 1623, 1625, 1624, 1629, 1627, 1631, 1630, - 1625, 1631, 1629, 1632, 1634, 1636, 1637, 1631, 1638, 1632, - 1639, 0, 1634, 1640, 1641, 1642, 1638, 1643, 1649, 1639, - 1644, 1644, 1645, 1650, 1636, 1637, 1640, 1641, 1645, 1642, - 1646, 1643, 1647, 1648, 1648, 1651, 1646, 1652, 1649, 1654, - 1653, 1650, 1644, 1655, 1656, 1647, 1653, 1658, 1658, 1659, - 1652, 1660, 1661, 1662, 1651, 1660, 1665, 1661, 1662, 1655, - 1663, 1654, 1656, 1664, 1667, 1663, 1668, 1669, 1669, 1659, - 1670, 1671, 1664, 1672, 1673, 1673, 1667, 1674, 1675, 1665, - 1679, 1668, 1676, 1671, 1677, 1675, 1680, 1681, 1682, 1670, + 1625, 1628, 1626, 1632, 1627, 1629, 1624, 1628, 1621, 1627, + 1633, 1629, 1634, 1631, 1635, 1636, 1633, 1635, 1638, 1640, + 1641, 1636, 1642, 1635, 1643, 1634, 1638, 1644, 1645, 1646, + 1642, 1647, 1653, 1643, 1648, 1648, 1649, 1654, 1640, 1641, + 1644, 1645, 1649, 1646, 1650, 1647, 1651, 1652, 1652, 1655, + 1650, 1656, 1653, 1658, 1657, 1654, 1648, 1659, 1660, 1651, + 1657, 1662, 1662, 1663, 1656, 1664, 1665, 1666, 1655, 1664, + 1669, 1665, 1666, 1659, 1667, 1658, 1660, 1668, 1671, 1667, + 1672, 1673, 1673, 1663, 1674, 1675, 1668, 1676, 1677, 1677, + 1671, 1678, 1679, 1669, 1683, 1672, 1680, 1675, 1681, 1679, - 1683, 1674, 1672, 1681, 1676, 1684, 1677, 1685, 1685, 1679, - 1682, 1684, 1686, 1687, 1687, 1686, 1680, 1689, 1683, 1690, - 1691, 1693, 1689, 1692, 1692, 1694, 1691, 1694, 1690, 1695, - 1696, 1697, 1695, 1693, 1698, 1700, 1699, 1701, 1702, 1703, - 1700, 1704, 1701, 1705, 1707, 1710, 1706, 1702, 1705, 1713, - 1696, 1703, 1698, 1697, 1699, 1706, 1704, 1708, 1709, 1715, - 1710, 1712, 1708, 1709, 1707, 1711, 1711, 1712, 1706, 1708, - 1713, 1716, 1717, 1718, 1719, 1724, 1719, 0, 1715, 1727, - 1720, 1721, 1721, 1722, 1722, 1723, 1723, 1728, 1717, 1725, - 1725, 1716, 1737, 1718, 1720, 1724, 1720, 1726, 1726, 1730, + 1684, 1685, 1686, 1674, 1687, 1678, 1676, 1685, 1680, 1688, + 1681, 1689, 1689, 1683, 1686, 1688, 1690, 1691, 1691, 1690, + 1684, 1693, 1687, 1694, 1695, 1697, 1693, 1696, 1696, 1698, + 1695, 1698, 1694, 1699, 1700, 1701, 1699, 1697, 1702, 1704, + 1703, 1705, 1706, 1707, 1704, 1708, 1705, 1709, 1711, 1714, + 1710, 1706, 1709, 1717, 1700, 1707, 1702, 1701, 1703, 1710, + 1708, 1712, 1713, 1719, 1714, 1716, 1712, 1713, 1711, 1715, + 1715, 1716, 1710, 1712, 1717, 1720, 1721, 1722, 1723, 1728, + 1723, 47, 1719, 1731, 1724, 1725, 1725, 1726, 1726, 1727, + 1727, 1732, 1721, 1729, 1729, 1720, 1741, 1722, 1724, 1728, - 1727, 1729, 1729, 1730, 1731, 1734, 1732, 1735, 1728, 1732, - 1731, 1734, 1736, 1738, 1739, 1739, 1738, 1737, 1736, 1740, - 1743, 1741, 1742, 1742, 1744, 1735, 1741, 1745, 1745, 1744, - 1746, 1747, 1748, 1749, 1750, 1746, 1751, 1747, 1752, 1740, - 1756, 1743, 1751, 1754, 1748, 1748, 1748, 1755, 1754, 1754, - 1757, 1748, 1757, 1749, 1750, 1756, 1758, 1759, 1752, 1760, - 1761, 1755, 1762, 1763, 1765, 1760, 1767, 1758, 1771, 1761, - 1764, 1764, 1759, 1766, 1766, 1768, 1769, 1769, 1770, 1770, - 1774, 1774, 1762, 1775, 1763, 1776, 1767, 1778, 1771, 1779, - 1765, 1782, 1780, 1786, 1776, 1784, 1778, 1768, 1780, 1781, + 1724, 1730, 1730, 1734, 1731, 1733, 1733, 1734, 1735, 1738, + 1736, 1739, 1732, 1736, 1735, 1738, 1740, 1742, 1743, 1743, + 1742, 1741, 1740, 1744, 1747, 1745, 1746, 1746, 1748, 1739, + 1745, 1749, 1750, 1750, 1753, 1751, 1749, 1754, 1752, 1747, + 1751, 1755, 1757, 1744, 1752, 1756, 1753, 1753, 1753, 1748, + 1759, 1756, 1760, 1753, 1761, 1759, 1759, 1754, 1762, 1763, + 1762, 1755, 1757, 1764, 1766, 1765, 1760, 1767, 1768, 1761, + 1763, 1765, 1770, 1766, 1769, 1769, 1771, 1771, 1764, 1772, + 1773, 1774, 1774, 1775, 1775, 1776, 1780, 1767, 1781, 1768, + 1779, 1779, 1783, 1784, 1785, 1786, 1786, 1781, 1770, 1772, - 1781, 1783, 1784, 1788, 1785, 1787, 1787, 1789, 1775, 1791, - 1779, 1792, 1782, 1785, 1791, 1793, 1783, 1792, 1794, 1786, - 1795, 1796, 1800, 1789, 1801, 1794, 1795, 1796, 1798, 1788, - 1797, 1797, 1799, 1798, 1802, 1793, 1803, 1804, 1805, 1803, - 1809, 1799, 1800, 1801, 1806, 1806, 1802, 1807, 1808, 1813, - 1810, 1814, 1811, 1807, 1808, 1804, 1811, 1815, 1816, 1816, - 1809, 1817, 1815, 1818, 1805, 1810, 1820, 1821, 1822, 1813, - 1823, 1821, 1811, 1814, 1822, 1824, 1824, 1825, 1818, 1823, - 1817, 1825, 1826, 1827, 1827, 1820, 1828, 1829, 1834, 1830, - 1831, 1832, 1833, 1826, 1834, 1831, 1839, 1836, 1826, 1835, + 1785, 1783, 1773, 1787, 1788, 1776, 1789, 1790, 1791, 1792, + 1792, 1780, 1793, 1789, 1784, 1794, 1790, 1796, 1799, 1788, + 1797, 1798, 1796, 1800, 1787, 1799, 1797, 1801, 1805, 1800, + 1804, 1794, 1803, 1801, 1791, 1802, 1802, 1803, 1793, 1804, + 1806, 1798, 1807, 1808, 1809, 1810, 1808, 1812, 1805, 1811, + 1811, 1813, 1814, 1812, 1807, 1815, 1816, 1813, 1818, 1806, + 1816, 1819, 1809, 1820, 1821, 1821, 1822, 1823, 1820, 1825, + 1815, 1810, 1814, 1826, 1827, 1828, 1816, 1826, 1818, 1831, + 1827, 1833, 1823, 1819, 1828, 1822, 1829, 1829, 1825, 1830, + 1831, 1832, 1832, 1830, 1834, 1831, 1835, 1837, 1836, 1838, - 1839, 1829, 1836, 1837, 1837, 1838, 1838, 1828, 1830, 1841, - 1842, 1832, 1833, 1843, 1835, 1844, 1844, 1847, 1841, 1846, - 1846, 1842, 1847, 1847, 1848, 1849, 1842, 1850, 1852, 1851, - 1848, 1849, 1853, 1843, 1851, 1855, 1857, 1856, 1853, 1858, - 1852, 1856, 1863, 1859, 1860, 1861, 1865, 1855, 1857, 1859, - 1862, 1861, 1866, 1850, 1863, 1862, 1867, 1869, 1865, 1873, - 1869, 1867, 1870, 1870, 1858, 0, 1860, 1871, 1871, 1872, - 1872, 1866, 1874, 1878, 1875, 1883, 1876, 1877, 1874, 1873, - 1875, 1876, 1878, 1877, 1880, 1882, 1886, 1883, 1882, 1880, - 1884, 1884, 1887, 1890, 1888, 1889, 1889, 1895, 1886, 1888, + 1839, 1840, 1833, 1836, 1841, 1848, 1839, 18, 1834, 1841, + 1842, 1842, 1843, 1843, 1844, 1835, 1840, 1837, 1844, 1838, + 1846, 1847, 1849, 1849, 1853, 1848, 1851, 1851, 1852, 1846, + 1853, 1855, 1847, 1852, 1852, 1854, 1857, 1847, 1856, 1858, + 1860, 1854, 1861, 1856, 1862, 1858, 1861, 1863, 1857, 1864, + 1868, 1865, 1860, 1866, 1870, 1864, 1862, 1855, 1867, 1866, + 1871, 1878, 1868, 1867, 1872, 1874, 1870, 17, 1874, 1872, + 1875, 1875, 1863, 1865, 1876, 1876, 1877, 1877, 1879, 1871, + 1880, 1878, 1881, 1882, 1879, 1883, 1880, 1881, 1885, 1882, + 1888, 1891, 1887, 1885, 1883, 1887, 1889, 1889, 1892, 1893, - 1891, 1892, 1890, 1896, 1887, 1891, 1892, 1893, 1894, 1894, - 1893, 1897, 1896, 1898, 1899, 1900, 1901, 1895, 1899, 1902, - 1900, 1903, 1901, 1904, 1905, 1908, 1909, 1907, 1907, 1897, - 1903, 1912, 1898, 1910, 1910, 1909, 1913, 1902, 1905, 1907, - 1912, 1904, 1914, 1908, 1911, 1911, 1915, 1916, 1913, 1919, - 1919, 1915, 1921, 1922, 1923, 1921, 1925, 1928, 1926, 1927, - 1916, 1929, 1929, 1914, 1930, 1927, 1930, 1931, 1931, 1922, - 1923, 1925, 1926, 1932, 1928, 1934, 1934, 1935, 1935, 1937, - 1938, 1932, 1939, 1940, 1941, 1937, 1938, 1942, 1942, 1939, - 1943, 1944, 1948, 1956, 1945, 1946, 1947, 1950, 1949, 1943, + 1894, 1894, 1888, 1891, 1893, 1895, 1896, 1897, 1899, 1899, + 1892, 1896, 1897, 1898, 1895, 1900, 1898, 1901, 1902, 1903, + 1904, 1907, 1905, 1906, 1904, 1908, 1901, 1905, 1909, 1906, + 1910, 1912, 1912, 1913, 1908, 1900, 1902, 1919, 1903, 1907, + 1914, 1915, 1915, 1912, 1910, 1917, 1909, 1916, 1916, 1914, + 1918, 1913, 1920, 1921, 1917, 1924, 1924, 1920, 1919, 1927, + 1926, 1928, 1918, 1926, 1930, 1932, 1921, 1931, 1933, 1934, + 1934, 1932, 1935, 1942, 1935, 1927, 1937, 1928, 0, 1930, + 1946, 1931, 1936, 1936, 1937, 1933, 1939, 1939, 1940, 1940, + 1947, 1943, 1944, 1945, 1948, 1948, 1942, 1943, 1944, 1949, - 1952, 1953, 1954, 1950, 1941, 1940, 1945, 1946, 1947, 1955, - 1955, 1956, 1944, 1949, 1954, 1957, 1950, 1960, 1948, 1958, - 1952, 1959, 1958, 1962, 1953, 1963, 1959, 1963, 1962, 1964, - 1970, 1965, 1966, 1968, 1971, 1957, 1965, 1960, 1972, 1966, - 1974, 1977, 1968, 1971, 1973, 1979, 1973, 1964, 1970, 1976, - 1972, 1976, 1978, 1978, 1984, 1977, 1980, 1982, 1981, 1974, - 1981, 1980, 1982, 1983, 1985, 1987, 1988, 1986, 1983, 1989, - 1987, 1979, 1984, 1986, 1991, 1992, 1995, 1989, 1996, 1988, - 1993, 1993, 1994, 1994, 1985, 1998, 1997, 2000, 0, 1992, - 1998, 1995, 1997, 1991, 1999, 2001, 1999, 2003, 1996, 2002, + 1945, 1950, 1946, 1951, 1952, 1953, 1954, 1956, 1949, 1955, + 1947, 1958, 1959, 1956, 1963, 1951, 1952, 1953, 1960, 1961, + 1961, 1962, 1950, 1966, 1955, 1964, 1956, 1969, 1964, 1969, + 1960, 1958, 1954, 1965, 1963, 1959, 1968, 1970, 1965, 1962, + 1971, 1968, 1972, 1966, 1974, 1971, 1976, 1977, 1978, 1972, + 1979, 1980, 1979, 1974, 1983, 1970, 1977, 1982, 1985, 1982, + 1978, 1984, 1984, 1987, 1976, 1987, 1986, 1988, 1983, 1989, + 1980, 1986, 1988, 1990, 1989, 1991, 1992, 1994, 1993, 1995, + 1997, 2001, 1992, 1993, 1985, 2002, 1998, 1995, 1999, 1999, + 1994, 1990, 2000, 2000, 2006, 1991, 2001, 2003, 2009, 1997, - 2002, 2004, 2004, 2001, 2006, 2000, 2005, 2005, 2008, 2003, - 2007, 2001, 2010, 2006, 2011, 2007, 2011, 2012, 2015, 2017, - 2014, 2010, 2013, 2021, 2010, 2022, 2008, 2013, 2013, 2014, - 2015, 2017, 2018, 2023, 2019, 2025, 2021, 2018, 2012, 2019, - 2024, 2024, 2023, 2026, 2027, 2022, 2031, 2032, 2028, 2029, - 2033, 2034, 2035, 2025, 2036, 2042, 2034, 2035, 2031, 2032, - 2027, 2026, 2028, 2036, 2029, 2039, 2041, 2043, 2044, 2045, - 2033, 2039, 2041, 2050, 2046, 2047, 2047, 2054, 2042, 2048, - 2049, 2049, 2043, 2046, 2039, 2051, 2044, 2053, 2048, 2051, - 2052, 2055, 2050, 2060, 2045, 2052, 2055, 2055, 2056, 2054, + 1998, 2004, 2005, 2003, 2005, 2002, 2004, 2007, 2008, 2008, + 2009, 2012, 2006, 2010, 2010, 2007, 2011, 2011, 2014, 2013, + 2012, 2016, 2018, 2007, 2013, 2017, 2019, 2017, 2020, 2021, + 2016, 2019, 2019, 2016, 2023, 2024, 2014, 2020, 2027, 2025, + 2024, 2021, 2028, 2018, 2025, 2029, 2023, 2030, 2030, 2031, + 2032, 2027, 2034, 2033, 2029, 2035, 2039, 2048, 2040, 2037, + 2038, 2051, 2028, 2040, 2049, 2042, 2034, 2031, 2032, 2033, + 2035, 2037, 2038, 2041, 2042, 2045, 2039, 2047, 2041, 2049, + 2048, 2045, 2050, 2047, 2052, 2056, 2051, 2053, 2053, 2054, + 2055, 2055, 2057, 2052, 2045, 2059, 2057, 2058, 2054, 2060, - 2053, 2057, 2058, 2059, 2056, 2058, 2068, 2057, 2063, 2063, - 2065, 2059, 2069, 2060, 2064, 2064, 2066, 2066, 2068, 2065, - 2067, 2067, 2070, 2072, 2072, 2078, 2071, 2082, 2070, 2064, - 2069, 2071, 2073, 2073, 2074, 2075, 2080, 2084, 2077, 2074, - 2064, 2075, 2077, 2079, 2083, 2078, 2085, 2079, 2086, 2083, - 2087, 2088, 2082, 2086, 2089, 2091, 2080, 2090, 2092, 2092, - 2084, 2085, 2090, 2094, 2096, 2093, 2095, 2088, 2087, 2093, - 2098, 2095, 2097, 2099, 2089, 2100, 2101, 2091, 2094, 2097, - 2100, 2102, 2098, 2103, 2103, 2105, 2106, 2107, 2108, 2101, - 2096, 2109, 2099, 2105, 2110, 2111, 2112, 2113, 2118, 2102, + 2050, 2061, 2058, 2062, 2056, 2063, 2061, 2061, 2059, 2062, + 2064, 2063, 2065, 2064, 2066, 2069, 2069, 2070, 2070, 2071, + 2065, 2060, 2072, 2072, 2073, 2073, 2074, 2075, 2071, 2076, + 2084, 2077, 2070, 2083, 2066, 2076, 2077, 2083, 2074, 2078, + 2078, 2079, 2079, 2070, 2080, 2075, 2081, 2085, 2086, 2080, + 2084, 2085, 2081, 2088, 2089, 2091, 2090, 2092, 2093, 2089, + 2095, 2094, 2092, 2097, 2096, 2098, 2098, 2099, 2086, 2096, + 2091, 2099, 2100, 2102, 2105, 2103, 2093, 2094, 2088, 2090, + 2095, 2101, 2103, 2104, 2106, 2097, 2101, 2100, 2107, 2106, + 2108, 2109, 2109, 2105, 2111, 2104, 2112, 2113, 2114, 2102, - 2122, 2117, 2115, 2122, 2118, 2106, 2107, 2119, 2112, 2119, - 2123, 2108, 2125, 2110, 2117, 2109, 2111, 2115, 2113, 2120, - 2120, 2121, 2124, 2123, 2129, 2125, 2121, 2126, 2126, 2127, - 2127, 2128, 2128, 2130, 2131, 2131, 2124, 2138, 2132, 2129, - 2133, 2133, 2134, 2134, 2135, 2139, 2130, 2132, 2137, 2135, - 2132, 2140, 2143, 2137, 2141, 2141, 2145, 2138, 2142, 2142, - 2144, 2144, 2147, 2140, 2148, 2139, 2146, 2146, 2151, 2148, - 2152, 2143, 2149, 2149, 2145, 2150, 2150, 2147, 2153, 2152, - 2154, 2156, 2151, 2157, 2157, 2158, 2156, 2159, 2159, 2160, - 2161, 2162, 2153, 2165, 2162, 2166, 2161, 2163, 2163, 2154, + 2115, 2107, 2111, 2116, 2117, 2118, 2119, 2123, 2108, 2124, + 0, 2121, 2125, 2127, 2127, 2112, 2113, 2118, 2125, 2131, + 2123, 2114, 2116, 2124, 2115, 2117, 2121, 2119, 2126, 2128, + 2126, 2130, 2129, 2131, 2128, 2129, 2132, 2133, 2133, 2134, + 2134, 2135, 2135, 2136, 2130, 2139, 2137, 2138, 2138, 2132, + 2140, 2140, 2141, 2141, 2139, 2142, 2144, 2139, 2136, 2137, + 2142, 2144, 2145, 2146, 2147, 2148, 2148, 2149, 2149, 2150, + 2151, 2151, 2152, 2153, 2153, 2155, 2147, 2154, 2156, 2156, + 2155, 2158, 2145, 2146, 2157, 2157, 2160, 2159, 2150, 2161, + 2152, 2165, 2154, 2163, 2167, 2158, 2159, 0, 2163, 2168, - 2164, 2164, 2167, 2170, 2158, 2168, 2168, 2160, 2171, 2172, - 2166, 2173, 2165, 2163, 2175, 2173, 2174, 2174, 2181, 2177, - 2176, 2167, 2178, 2170, 2172, 2176, 2180, 2180, 2182, 2183, - 2184, 2171, 2185, 2175, 2177, 2182, 2186, 2178, 2181, 2187, - 2187, 2192, 2188, 2183, 2189, 2195, 2189, 2197, 2184, 2190, - 2185, 2188, 2190, 2192, 2193, 2194, 2198, 2199, 2196, 2193, - 2194, 2198, 2186, 2205, 2203, 0, 2209, 2190, 2197, 2190, - 2195, 2196, 2201, 2202, 2204, 2206, 2210, 2201, 2202, 2203, - 2204, 2206, 2207, 2199, 2205, 2208, 2216, 2207, 2212, 2210, - 2208, 2209, 2211, 2213, 2214, 2211, 2215, 2212, 2217, 2221, + 2160, 2164, 2164, 2166, 2166, 2168, 2169, 2172, 2161, 2169, + 2165, 2174, 2167, 2170, 2170, 2171, 2171, 2173, 2175, 2175, + 2177, 2178, 2179, 2180, 2181, 2181, 2172, 2180, 2182, 2170, + 2174, 2183, 2173, 2184, 2185, 2188, 2183, 2179, 2187, 2187, + 2177, 2191, 2190, 2189, 2178, 2192, 2193, 2182, 2184, 2185, + 2189, 2194, 2194, 2195, 2199, 2188, 2190, 2202, 2196, 2191, + 2196, 2197, 2195, 2192, 2197, 2200, 2199, 2203, 2201, 2204, + 2200, 2205, 2193, 2201, 2206, 2212, 2205, 2210, 2208, 2197, + 2203, 2197, 2202, 2208, 2209, 2211, 2216, 2213, 2217, 2209, + 2204, 2211, 2210, 2213, 2214, 2218, 2212, 2215, 2218, 2214, - 2216, 2218, 2213, 2214, 2217, 2215, 2219, 2218, 2223, 2225, - 2219, 2224, 2224, 2226, 2226, 2225, 2227, 2223, 2228, 2221, - 2230, 2227, 2226, 2231, 2232, 2232, 2233, 2237, 2234, 2238, - 2236, 2241, 2243, 2239, 2241, 2244, 2230, 2234, 2228, 2231, - 2228, 2233, 2236, 2237, 2238, 2239, 2242, 2244, 2245, 2245, - 2255, 2242, 2243, 2246, 2246, 2248, 2248, 2249, 2250, 2251, - 2249, 2252, 2253, 2250, 2255, 2251, 2257, 2252, 2254, 2254, - 2258, 2253, 2256, 2256, 2259, 2260, 2260, 2261, 2257, 2266, - 2262, 2263, 2266, 2261, 2258, 2265, 2263, 2267, 2267, 2265, - 2268, 2269, 2270, 2259, 2262, 2268, 2269, 2269, 2271, 2272, + 2206, 2217, 2215, 2219, 2220, 2221, 2222, 2223, 2228, 0, + 2224, 2216, 2219, 2220, 2221, 2222, 2224, 2225, 2226, 2237, + 2230, 2223, 2226, 2225, 2231, 2231, 2232, 2235, 2228, 2230, + 2233, 2233, 2232, 2234, 2238, 2237, 2239, 2239, 2234, 2233, + 2240, 2243, 2241, 2244, 2246, 2245, 2250, 2235, 0, 2235, + 2238, 2241, 2251, 2243, 2248, 2240, 2246, 2248, 2249, 2244, + 2245, 2252, 2252, 2249, 2251, 0, 2250, 2253, 2253, 2255, + 2255, 2256, 2257, 2258, 2256, 2259, 2260, 2257, 2262, 2258, + 2265, 2259, 2261, 2261, 2264, 2260, 2263, 2263, 2266, 2267, + 2267, 2268, 2262, 2270, 2265, 2269, 2264, 2268, 2270, 2272, - 2274, 2270, 2276, 2272, 2273, 2273, 2277, 2276, 2278, 2279, - 2280, 2281, 2282, 2274, 2280, 2283, 2284, 2282, 2271, 2285, - 2286, 2283, 2284, 2279, 2287, 2288, 2277, 2291, 2278, 2287, - 2290, 2281, 2301, 2292, 2293, 2298, 2294, 2285, 2292, 2286, - 2293, 2380, 2290, 2291, 2294, 2295, 2288, 2295, 2380, 2298, - 2299, 2299, 2300, 2302, 2302, 2300, 2305, 2306, 2301, 2307, - 2305, 2308, 2308, 2306, 2309, 2312, 2312, 2314, 2316, 2320, - 2317, 2307, 2321, 2309, 2320, 2322, 2323, 2324, 2324, 2330, - 2322, 2323, 2316, 2326, 2326, 2314, 2317, 2328, 2329, 2329, - 2331, 2332, 2334, 2328, 2335, 2330, 2332, 2339, 2321, 2336, + 2278, 2273, 2277, 2272, 2273, 2274, 2274, 2266, 2275, 2269, + 2276, 2277, 2281, 2275, 2279, 2276, 2276, 2284, 2279, 2283, + 2278, 2280, 2280, 2285, 2283, 2281, 2286, 2287, 2288, 2289, + 2290, 2287, 2291, 2292, 2289, 2293, 2290, 2284, 2291, 2294, + 2286, 2295, 2296, 2285, 2298, 2299, 2295, 2300, 2288, 2301, + 2306, 2292, 2300, 2309, 2293, 2301, 2298, 2302, 2294, 0, + 2303, 2299, 2303, 2296, 2306, 2302, 2307, 2307, 2308, 2310, + 2310, 2308, 2313, 2315, 2314, 2317, 2313, 2316, 2316, 2309, + 2314, 2320, 2320, 2322, 2317, 2315, 2324, 2325, 2328, 2329, + 2330, 2331, 2339, 2328, 2338, 2330, 2331, 2332, 2332, 2342, - 2336, 2338, 2340, 2339, 2341, 2345, 2335, 2343, 2343, 2346, - 2338, 2334, 2331, 2344, 2348, 2348, 2344, 2349, 2349, 2341, - 2340, 2350, 2351, 2352, 2345, 2353, 2350, 2346, 2355, 2354, - 2353, 2354, 2352, 2356, 2357, 2359, 2358, 0, 2360, 2366, - 2351, 2358, 2355, 2360, 2361, 2361, 2357, 2356, 2362, 2362, - 2363, 2363, 2364, 2364, 2365, 2359, 2367, 2366, 2368, 2368, - 2370, 2367, 2369, 2369, 2371, 2372, 2365, 2373, 2374, 2374, - 2375, 2378, 2370, 2376, 2376, 2379, 2371, 2377, 2377, 2381, - 2382, 2383, 2378, 2373, 2384, 2372, 2383, 2379, 2385, 2375, - 2387, 2381, 2386, 2386, 2388, 2389, 2390, 2391, 2392, 2387, + 2324, 2322, 2336, 2325, 2334, 2334, 2337, 2337, 2336, 2343, + 2338, 2340, 2344, 2344, 2339, 2329, 2340, 2346, 2342, 2347, + 2348, 2343, 2349, 2351, 2351, 2347, 2346, 2352, 2353, 2363, + 2352, 2354, 2356, 2356, 2357, 2357, 2358, 2349, 2348, 2359, + 2361, 2358, 2360, 2363, 2362, 2361, 2362, 2353, 2364, 2354, + 2366, 2360, 2365, 2367, 2368, 2366, 2374, 2359, 0, 2368, + 2369, 2369, 2364, 2373, 2365, 2370, 2370, 2371, 2371, 2372, + 2372, 2375, 2378, 2367, 2374, 2373, 2375, 2376, 2376, 2377, + 2377, 2379, 2380, 2381, 2378, 2382, 2382, 2383, 2384, 2384, + 2385, 2385, 2386, 2379, 2388, 2387, 2389, 2390, 2392, 2381, - 2382, 2393, 2394, 2394, 2384, 2395, 2399, 2396, 2385, 2390, - 2397, 2400, 2392, 2393, 2395, 2389, 2401, 2403, 2406, 2406, - 2388, 2391, 2396, 2402, 2399, 2397, 2402, 2404, 2413, 2405, - 2415, 2403, 2404, 2400, 2405, 2407, 2407, 2408, 2408, 2401, - 2410, 2410, 2412, 2412, 2414, 2416, 2413, 2418, 2419, 2415, - 2420, 2421, 2422, 2423, 2424, 2414, 2424, 2425, 2426, 2431, - 2416, 2422, 2427, 2428, 2428, 2433, 2419, 2418, 2430, 2430, - 2434, 2421, 2420, 2423, 2431, 2437, 2426, 2425, 2439, 2434, - 2427, 2435, 2435, 2440, 2437, 2438, 2438, 2433, 2441, 2442, - 2443, 2444, 2446, 0, 2445, 2441, 2439, 2447, 2447, 2448, + 2391, 2388, 2380, 2386, 2393, 2391, 2383, 2387, 2389, 2394, + 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2390, 2392, 2401, + 2395, 2402, 2402, 2403, 2393, 2404, 2405, 2398, 2407, 2408, + 2400, 2401, 2403, 2397, 2409, 2411, 2414, 2414, 2396, 2399, + 2404, 2405, 2410, 2412, 2421, 2410, 2407, 2413, 2412, 2411, + 2423, 2408, 2413, 2415, 2415, 2416, 2416, 2409, 2418, 2418, + 2420, 2420, 2421, 2422, 2424, 2426, 2427, 2428, 2429, 2423, + 2431, 2430, 2433, 2432, 2422, 2432, 2434, 2435, 2439, 2424, + 2430, 2436, 2436, 2441, 2427, 2426, 2438, 2438, 2429, 2428, + 2431, 2442, 2433, 2439, 2434, 2435, 2443, 2443, 2445, 2447, - 2448, 2440, 2449, 2454, 2442, 2456, 2450, 2455, 2443, 2444, - 2445, 2446, 2450, 2451, 2451, 2452, 2452, 2453, 2458, 2459, - 2449, 2454, 2455, 2453, 2456, 2457, 2460, 2461, 2466, 2461, - 2457, 2460, 2462, 2462, 2463, 2468, 2463, 2469, 2458, 2459, - 2464, 2464, 2470, 2471, 2468, 2472, 2473, 2466, 2474, 2477, - 2472, 0, 2478, 2480, 2470, 2478, 2469, 2479, 2479, 2481, - 2482, 2482, 2491, 2471, 2485, 2488, 2473, 2474, 2480, 2477, - 2483, 2486, 2487, 2487, 2483, 2486, 2490, 2481, 2488, 2485, - 2492, 2495, 2491, 2493, 2493, 2496, 2497, 2498, 2498, 2499, - 2497, 2490, 2501, 2495, 2496, 2500, 2500, 2501, 2502, 2503, + 2442, 2446, 2446, 2448, 2449, 2441, 2451, 2445, 2450, 2452, + 2453, 2449, 2454, 2455, 2455, 2456, 2456, 2447, 2457, 2458, + 2464, 2448, 2459, 2450, 2451, 2463, 2453, 2452, 2459, 2460, + 2460, 2454, 2461, 2461, 2462, 2464, 2465, 2458, 2457, 2466, + 2462, 2467, 2468, 2463, 2466, 2469, 2470, 2472, 2470, 2472, + 2469, 2471, 2471, 2473, 2473, 2465, 2475, 2477, 2478, 2479, + 2480, 2467, 2468, 2481, 2482, 2486, 2477, 2483, 2481, 2487, + 2490, 2479, 2487, 2488, 2488, 2475, 2489, 2478, 2491, 2491, + 2480, 2494, 2499, 2492, 2482, 2486, 2483, 2492, 2490, 2495, + 2497, 2489, 2500, 2495, 2496, 2496, 2494, 2499, 2501, 2502, - 2492, 2504, 2505, 2505, 2510, 2510, 2511, 2502, 2499, 2512, - 2512, 2513, 2514, 2504, 2515, 2503, 2518, 2516, 2517, 2517, - 2520, 2520, 2523, 2515, 2513, 2514, 2516, 2523, 2511, 2524, - 2525, 2518, 2526, 2527, 2524, 2528, 2529, 2526, 2530, 0, - 2532, 2527, 2533, 2534, 2525, 2529, 2530, 2533, 2534, 2535, - 2536, 2536, 2537, 2537, 2528, 2532, 2538, 2538, 2539, 2541, - 2542, 2540, 2543, 0, 2535, 2539, 2540, 2544, 2543, 2545, - 2545, 2546, 2544, 0, 2547, 2548, 2548, 2541, 2542, 2547, - 2549, 2549, 2552, 2553, 2553, 2554, 2546, 2555, 2554, 2556, - 2558, 2557, 2555, 2555, 2556, 2552, 2557, 2559, 2560, 2562, + 2502, 2504, 2505, 2497, 2506, 2507, 2507, 2508, 2506, 2509, + 2509, 2505, 2500, 2504, 2510, 2511, 2512, 2513, 2501, 2510, + 2514, 2514, 2519, 2519, 2511, 2520, 2508, 2521, 2521, 2513, + 2522, 2523, 2512, 2524, 2526, 2526, 2525, 2527, 2529, 2529, + 2534, 2532, 2524, 2522, 2523, 2525, 2532, 2520, 2533, 2536, + 2535, 2537, 2527, 2533, 2534, 2535, 2538, 2536, 2539, 2541, + 2544, 0, 2542, 2543, 2549, 2538, 2539, 2542, 2543, 2549, + 2537, 2545, 2545, 2548, 2541, 2544, 2546, 2546, 2547, 2547, + 2548, 2550, 2551, 2552, 2561, 2553, 2554, 2554, 2555, 2552, + 2553, 2556, 2557, 2557, 2558, 2558, 2556, 2561, 2567, 2550, - 2561, 2563, 2560, 2559, 2558, 2561, 2564, 2565, 2562, 2566, - 2569, 2567, 2579, 2568, 2564, 2566, 2563, 2567, 2568, 2571, - 2572, 2573, 2569, 2580, 2573, 2572, 2575, 2577, 2565, 2578, - 2579, 2581, 2577, 2582, 2578, 2571, 2580, 2584, 2575, 2587, - 2581, 2588, 2582, 2583, 2583, 2587, 2584, 2588, 2591, 2592, - 2596, 2593, 2594, 2594, 2595, 2599, 2597, 2598, 2598, 2596, - 2601, 2603, 2604, 2605, 2605, 2606, 2604, 2591, 0, 2592, - 2593, 2597, 2607, 2595, 2599, 2601, 2608, 2609, 2607, 2610, - 2610, 2603, 2608, 2609, 2611, 2614, 2612, 2615, 2618, 2617, - 2606, 2612, 2611, 2617, 2614, 2619, 2621, 2621, 2622, 2632, + 2551, 2562, 2562, 2555, 2563, 2564, 0, 2563, 2565, 2566, + 2564, 2564, 2567, 2565, 2566, 2568, 2569, 2570, 2571, 2572, + 2569, 2568, 2570, 2573, 2574, 2577, 2575, 2571, 2578, 2576, + 2577, 2573, 2575, 2580, 2572, 2576, 2581, 2588, 2584, 2582, + 2578, 2581, 2582, 2586, 2589, 2574, 2587, 2590, 2586, 2580, + 2584, 2587, 2591, 2592, 2592, 2588, 2590, 2589, 2593, 2596, + 2597, 2591, 2598, 2601, 2602, 2606, 2597, 2593, 2598, 2603, + 2604, 2604, 2605, 2609, 2606, 2607, 2613, 2596, 2608, 2608, + 2611, 2614, 2601, 2616, 2602, 2614, 2615, 2615, 2603, 0, + 2607, 2605, 2609, 2617, 2618, 2611, 2613, 2619, 2621, 2617, - 2615, 0, 2618, 2623, 2623, 2624, 2624, 2626, 2626, 2627, - 2619, 2637, 2628, 2627, 2630, 2630, 2622, 2628, 2633, 2632, - 2634, 2635, 2645, 2633, 2638, 2638, 2635, 2635, 2640, 2640, - 2643, 2637, 2634, 2641, 2641, 2642, 2647, 2651, 2642, 2654, - 2645, 2648, 2648, 2643, 2649, 2649, 2650, 2650, 2652, 2652, - 2653, 2655, 2651, 2656, 2657, 2657, 2647, 2654, 2658, 2656, - 2663, 2662, 2658, 2653, 2664, 2655, 2662, 2662, 2665, 2666, - 2667, 2668, 2678, 2669, 2675, 2666, 2667, 2669, 2670, 2670, - 2673, 2681, 2675, 2663, 2664, 2673, 2676, 2679, 2665, 2676, - 2679, 2680, 2680, 2683, 2684, 2682, 2668, 2678, 2681, 2681, + 2618, 2620, 2620, 2619, 2622, 2624, 2621, 2625, 2616, 2622, + 2628, 2627, 2629, 2632, 2624, 2627, 2631, 2631, 2633, 2633, + 2625, 2634, 2634, 2642, 2628, 2636, 2636, 2629, 2637, 2638, + 2644, 2632, 2637, 2643, 2638, 2640, 2640, 2647, 2643, 2645, + 2648, 2648, 2644, 2642, 2645, 2645, 2650, 2650, 2651, 2651, + 2652, 2653, 2655, 2652, 2657, 2658, 2658, 2647, 2659, 2659, + 2660, 2660, 2661, 2663, 2653, 2662, 2662, 2664, 2665, 2666, + 2655, 2667, 2667, 2673, 2657, 2666, 2663, 2661, 2674, 2668, + 2675, 2672, 2665, 2668, 2676, 2664, 2672, 2672, 2677, 2678, + 2676, 2679, 2680, 2680, 2677, 2679, 2673, 2683, 2674, 2685, - 2682, 2685, 2686, 2686, 2687, 2688, 2689, 2690, 2688, 2691, - 2692, 2683, 2694, 2692, 2684, 2685, 2688, 2691, 2687, 2693, - 2689, 2695, 2695, 2700, 2693, 2693, 2690, 2696, 2696, 2697, - 2697, 2694, 2698, 2698, 2699, 2699, 2701, 2702, 2703, 2700, - 2704, 2701, 2705, 2706, 2712, 2707, 2708, 2705, 2710, 2710, - 2711, 2715, 2706, 2711, 2714, 2714, 2724, 2702, 2715, 2704, - 2716, 2716, 2712, 2717, 2703, 2707, 2708, 2720, 2717, 2719, - 2719, 2721, 2722, 2727, 2724, 2726, 2720, 2725, 2725, 2726, - 2721, 2722, 2727, 2728, 2729, 2731, 2730, 2732, 2736, 2729, - 2729, 2732, 2740, 2736, 2731, 2737, 2737, 2741, 2728, 2730, + 2675, 2686, 2683, 2688, 2686, 2689, 2691, 2685, 2689, 2690, + 2690, 2692, 2693, 2694, 2678, 2695, 2692, 2696, 2696, 2700, + 2697, 2703, 2699, 2691, 2691, 2704, 2703, 2703, 2688, 2695, + 2693, 2701, 2698, 2694, 2697, 2698, 2699, 2702, 2700, 2701, + 2702, 2705, 2705, 2698, 2704, 2706, 2706, 2707, 2707, 2708, + 2708, 2709, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2711, + 2716, 2717, 2714, 2718, 2719, 2716, 2721, 2721, 2722, 2710, + 2717, 2722, 2723, 2725, 2725, 2712, 2728, 2715, 2726, 2727, + 2727, 2728, 2713, 2718, 2719, 2726, 2730, 2730, 2731, 2732, + 2723, 2733, 2735, 2736, 2736, 2737, 2738, 2731, 2732, 2737, - 2739, 2739, 2742, 2744, 2745, 2748, 2740, 2750, 2749, 2751, - 2755, 2753, 2744, 2757, 2758, 2751, 2745, 2749, 2757, 2758, - 2742, 2797, 2741, 2753, 2759, 2759, 2760, 2750, 2762, 2769, - 2748, 2755, 2770, 2762, 2797, 2760, 2763, 2763, 2765, 2765, - 2763, 2766, 2766, 2767, 2767, 2768, 2777, 2771, 2774, 2769, - 2773, 2770, 2771, 2774, 2768, 2775, 2773, 2776, 2776, 2778, - 2775, 2779, 2780, 2781, 2777, 2783, 2782, 2780, 2784, 2784, - 2786, 2778, 2782, 2787, 2786, 2788, 2789, 2789, 2787, 2790, - 2788, 2781, 2779, 2793, 2791, 2792, 2795, 2795, 2798, 2799, - 2783, 2801, 2802, 2799, 2803, 2800, 2806, 2805, 2790, 2791, + 2733, 2739, 2740, 2742, 2741, 2738, 2747, 2740, 2740, 2743, + 2735, 2747, 2742, 2743, 2748, 2748, 2739, 2741, 2750, 2750, + 2751, 2752, 2753, 2755, 2756, 2759, 2760, 2761, 2766, 2764, + 0, 2762, 2755, 2768, 2751, 2760, 2756, 2762, 2768, 2769, + 2753, 2764, 2770, 2770, 2769, 2771, 2752, 2761, 2773, 2766, + 2759, 2774, 2774, 2773, 2771, 2774, 2776, 2776, 2777, 2777, + 2778, 2778, 2779, 2780, 2782, 2781, 2784, 2788, 2785, 2782, + 2786, 2779, 2784, 2785, 2789, 2786, 2787, 2787, 2790, 2792, + 2794, 2801, 2791, 2780, 2781, 2788, 2789, 2791, 2793, 2795, + 2795, 2797, 2802, 2798, 2793, 2797, 2799, 2792, 2798, 2790, - 2792, 2798, 2803, 2793, 2800, 2804, 2805, 2801, 2807, 2809, - 2804, 2802, 2808, 2808, 2806, 2811, 2811, 2812, 2812, 2814, - 2816, 2816, 2818, 2819, 2821, 2820, 2823, 2823, 2809, 2821, - 2824, 2825, 2826, 2829, 2807, 2828, 2828, 2830, 2818, 2819, - 2814, 2820, 2831, 2831, 2834, 2837, 2835, 2829, 2836, 2840, - 2824, 2826, 2835, 2836, 2825, 2842, 2830, 2838, 2838, 2839, - 2839, 2841, 2841, 2843, 2834, 2844, 2842, 2837, 2845, 2840, - 2846, 2847, 2843, 2848, 2845, 2849, 2849, 2850, 2851, 2851, - 2850, 2841, 2855, 2847, 2856, 2844, 2857, 2858, 2858, 2846, - 2860, 2861, 2857, 2848, 2855, 2859, 2860, 2863, 2859, 2864, + 2801, 2799, 2800, 2800, 2803, 2794, 2804, 2802, 2806, 2806, + 2808, 2809, 2810, 2811, 2812, 2813, 2810, 2814, 2818, 2803, + 2816, 2816, 2811, 2808, 2809, 2814, 2804, 2815, 2817, 2819, + 2812, 2821, 2815, 2826, 2813, 2830, 2818, 2817, 2820, 2820, + 2823, 2823, 2824, 2824, 2828, 2828, 2831, 2832, 2833, 2836, + 2821, 2830, 2837, 2833, 2826, 2819, 2835, 2835, 2838, 2840, + 2840, 2842, 2831, 2832, 2841, 2843, 2843, 2846, 2847, 2836, + 2849, 2848, 2850, 2850, 2847, 2837, 2848, 2838, 2841, 2852, + 2842, 2851, 2851, 2853, 2853, 2854, 2855, 2846, 2856, 2859, + 2858, 2857, 2849, 2860, 2867, 2855, 2854, 2857, 2868, 2852, - 2864, 2865, 2863, 2866, 2856, 2867, 2865, 2868, 2871, 2861, - 2872, 2867, 2869, 2869, 2873, 2876, 2874, 2875, 2875, 2877, - 2871, 2878, 2866, 2877, 2868, 2868, 2880, 2880, 2872, 2874, - 2878, 2881, 2881, 2882, 2876, 2883, 2884, 2888, 2882, 2873, - 2895, 2884, 2885, 2885, 2886, 2886, 2887, 2887, 2889, 2883, - 2890, 2892, 2892, 2897, 2889, 2890, 2898, 2899, 2903, 2895, - 2900, 2900, 2904, 2888, 2902, 2902, 2910, 2905, 2906, 2906, - 2907, 2907, 2903, 2911, 2909, 2897, 2905, 0, 2898, 2899, - 2909, 2919, 2904, 2912, 2915, 2915, 2910, 2920, 2912, 2917, - 2917, 2918, 2911, 2920, 2921, 2919, 2918, 2922, 2923, 2923, + 3101, 2859, 3101, 2853, 2861, 2861, 2867, 2862, 2856, 2858, + 2862, 2863, 2863, 2860, 2869, 2870, 2870, 2872, 2868, 2871, + 2869, 2873, 2871, 2872, 2875, 2876, 2876, 2877, 2878, 2875, + 2879, 2880, 2877, 2881, 2881, 2884, 2879, 2885, 2883, 2873, + 2888, 2886, 2887, 2887, 2892, 2892, 2895, 2878, 2880, 2880, + 2883, 2889, 2890, 2884, 2886, 2889, 2893, 2893, 2894, 2888, + 2895, 2890, 2885, 2894, 2896, 2897, 2897, 2898, 2898, 2896, + 2899, 2899, 2900, 2901, 2902, 2908, 2903, 2905, 2905, 2910, + 2902, 2903, 2911, 2912, 2916, 2900, 2913, 2913, 2915, 2915, + 2917, 2918, 2919, 2919, 2908, 2920, 2920, 2922, 2916, 2901, - 2926, 2927, 2924, 2928, 2929, 2922, 2921, 2924, 2928, 2930, - 2932, 2933, 2934, 2935, 2944, 2930, 2929, 2937, 2932, 2939, - 2926, 2927, 2938, 2940, 2941, 3041, 2943, 2948, 3041, 2941, - 2933, 2943, 2934, 2935, 2944, 2937, 2939, 2939, 2938, 2945, - 2950, 2946, 2960, 2949, 2940, 2945, 2946, 2948, 2949, 2953, - 2953, 2954, 2954, 2950, 2955, 2959, 2961, 2961, 2955, 2980, - 2959, 2960, 2963, 2963, 2964, 2964, 2967, 2964, 2965, 2965, - 2967, 2965, 2966, 2966, 2970, 2966, 2969, 2969, 2974, 2971, - 2975, 2976, 2977, 2977, 2980, 2982, 2976, 2981, 2983, 2982, - 2984, 2986, 2970, 2971, 2981, 2987, 0, 2983, 2974, 2991, + 2918, 2910, 2923, 2922, 2911, 2912, 2924, 2925, 2928, 2928, + 2917, 2931, 2925, 2930, 2930, 2932, 2931, 2933, 2934, 2935, + 2936, 2936, 2923, 2933, 2939, 2924, 2937, 2935, 2940, 2932, + 2934, 2937, 2941, 2942, 2943, 2945, 2946, 2941, 2947, 2948, + 2943, 2951, 2950, 2945, 2939, 2942, 2952, 2953, 2940, 2954, + 2957, 2956, 2961, 3042, 2954, 2946, 2956, 2951, 2947, 2948, + 2950, 2958, 2963, 2952, 2952, 3042, 2959, 2958, 2953, 2962, + 2957, 2959, 2961, 2974, 2962, 2963, 2966, 2966, 2967, 2967, + 2968, 2972, 2972, 2973, 2968, 2975, 2975, 2981, 2973, 2977, + 2977, 2981, 2974, 2978, 2978, 2984, 2978, 2979, 2979, 2988, - 2975, 2988, 2988, 2992, 2987, 2984, 2989, 2989, 2992, 2986, - 2990, 2990, 2993, 2994, 2991, 2996, 2995, 2997, 2994, 2994, - 2998, 2993, 2995, 2999, 2993, 3000, 3001, 3013, 2999, 3003, - 3000, 3004, 2997, 3002, 3002, 3003, 3013, 3004, 3005, 3005, - 2996, 2998, 3006, 3006, 3008, 3001, 3007, 3007, 0, 3008, - 3011, 3011, 3012, 3012, 3016, 3016, 3017, 3017, 3018, 3018, - 3019, 3019, 3020, 3020, 3021, 3021, 3022, 3022, 3024, 3025, - 3025, 3026, 3027, 3028, 3032, 3030, 3034, 3024, 3031, 3031, - 3026, 3036, 3033, 3040, 3027, 3035, 3035, 3042, 3034, 3032, - 3037, 3037, 3044, 3028, 3030, 3033, 3036, 3043, 3043, 3046, + 2979, 2980, 2980, 2985, 2980, 2983, 2983, 2989, 2994, 2990, + 2991, 2991, 2996, 2984, 2990, 2995, 2996, 2985, 3009, 2988, + 2997, 2998, 2995, 3000, 3009, 3001, 3028, 2989, 3005, 2997, + 3002, 3002, 3010, 2994, 3001, 3028, 2998, 3003, 3003, 3004, + 3004, 3000, 3006, 3005, 3007, 3008, 3011, 3006, 3012, 3013, + 3008, 3008, 3015, 3007, 3013, 3014, 3007, 3010, 3016, 3016, + 3014, 3011, 3017, 3094, 3018, 3019, 3019, 3094, 3017, 3012, + 3018, 3015, 3020, 3020, 3021, 3021, 3022, 3025, 3025, 3027, + 3027, 3022, 3031, 3031, 3032, 3032, 3033, 3033, 3034, 3034, + 3035, 3035, 3036, 3036, 3037, 3037, 3039, 3040, 3040, 3041, - 3047, 3040, 3046, 3048, 3049, 3050, 3047, 3051, 3054, 3049, - 3044, 3052, 3055, 3042, 3054, 3059, 3062, 3048, 3072, 3070, - 3077, 3055, 3070, 0, 3050, 3051, 3080, 3052, 3073, 3073, - 3059, 3072, 3074, 3074, 3075, 3075, 3078, 3079, 3081, 3083, - 3084, 3079, 3062, 3077, 3085, 3078, 3080, 3089, 3086, 3085, - 3086, 3084, 3081, 3087, 3088, 3088, 3090, 3092, 3091, 3093, - 3089, 3095, 3083, 3094, 3097, 3096, 3098, 3099, 3087, 3100, - 3095, 3098, 3104, 3092, 3100, 3090, 3091, 3096, 3094, 3105, - 3106, 3106, 3107, 3112, 3093, 3097, 3104, 3099, 3108, 3108, - 3113, 3107, 3109, 3109, 3110, 3110, 3111, 3111, 3114, 3105, + 3043, 3047, 3045, 3046, 3046, 3039, 3048, 3055, 3041, 3051, + 3049, 3050, 3050, 3052, 3052, 3056, 3047, 3057, 3056, 3048, + 3043, 3045, 3049, 3059, 3051, 3055, 3058, 3058, 3061, 3062, + 3063, 3061, 3064, 3065, 3067, 3062, 3066, 3064, 3070, 3069, + 3074, 3059, 3077, 3057, 3063, 3069, 3085, 3070, 3087, 3085, + 3067, 3092, 3065, 3095, 3066, 3074, 3088, 3088, 3089, 3089, + 3093, 3087, 3090, 3090, 3096, 3098, 3099, 3100, 3077, 3093, + 3102, 3104, 3100, 3095, 3092, 3103, 3103, 3099, 3096, 3105, + 3107, 3106, 3108, 3110, 3104, 3102, 3109, 3112, 3098, 3113, + 3111, 3114, 3110, 3120, 3113, 3115, 3107, 3122, 3105, 3106, - 3115, 3114, 3112, 3116, 3117, 3115, 3118, 3119, 3116, 3120, - 3113, 3122, 3121, 3119, 3123, 3126, 3122, 3124, 3124, 3125, - 3125, 3118, 3127, 3120, 3121, 3128, 3128, 3130, 3132, 3117, - 3126, 3135, 3135, 3138, 3123, 3136, 3136, 3137, 3139, 3141, - 3143, 3127, 3130, 3140, 3139, 3137, 3132, 3142, 3149, 3140, - 3144, 3150, 3138, 3141, 3152, 3144, 3145, 3145, 3155, 3143, - 3142, 3146, 3146, 3153, 3157, 3156, 3158, 3153, 3152, 3149, - 3156, 3150, 3159, 3160, 3166, 3161, 3162, 3167, 3155, 3158, - 3161, 3162, 3168, 3157, 3171, 3159, 3163, 3163, 3169, 3169, - 3171, 3170, 3160, 3176, 3166, 3167, 3170, 3172, 3172, 3173, + 3115, 3109, 3111, 3119, 3121, 3121, 3122, 3108, 3112, 3123, + 3123, 3114, 3127, 3120, 3124, 3124, 3128, 3119, 3125, 3125, + 3126, 3126, 3129, 3130, 3131, 3129, 3132, 3133, 3130, 3131, + 3135, 3127, 3134, 3136, 3137, 3138, 3128, 3141, 3134, 3137, + 3139, 3139, 3133, 3142, 3135, 3136, 3140, 3140, 3143, 3143, + 3145, 3132, 3141, 3147, 3153, 3138, 3150, 3150, 3151, 3151, + 3152, 3154, 3142, 3155, 3156, 3145, 3157, 3154, 3152, 3155, + 3158, 3147, 3159, 3153, 3160, 3160, 3164, 3159, 3156, 3157, + 3161, 3161, 3165, 3168, 3167, 3170, 3171, 3168, 3172, 3158, + 3173, 3171, 3175, 3174, 3176, 3177, 3181, 3164, 3167, 3176, - 3174, 3168, 3175, 3177, 3173, 3174, 3184, 3175, 3180, 3177, - 3179, 3179, 3176, 3180, 3181, 3181, 3183, 3185, 3186, 3187, - 3183, 3188, 3189, 3190, 3185, 3184, 0, 3188, 3192, 3192, - 3194, 3194, 3197, 3195, 3196, 3198, 3190, 3186, 3187, 3196, - 3199, 3189, 3195, 3200, 3200, 3195, 3202, 3201, 3204, 3205, - 3205, 3197, 3201, 3199, 3198, 0, 3206, 3207, 3207, 3202, - 3208, 3208, 3209, 3210, 3211, 3212, 3212, 3209, 3213, 3214, - 3210, 3214, 3216, 3213, 3204, 3206, 3215, 3215, 3217, 3216, - 3218, 3219, 3220, 3211, 3223, 3217, 3219, 3222, 3222, 3225, - 3226, 3227, 3228, 3232, 3225, 3226, 3229, 3229, 3233, 3218, + 3177, 3182, 3165, 3173, 3183, 3170, 3174, 3172, 3178, 3178, + 3185, 3175, 3184, 3184, 3186, 3185, 3181, 3187, 3187, 3182, + 3186, 3188, 3189, 3183, 3190, 3191, 3188, 3189, 3192, 3190, + 3194, 3194, 3195, 3199, 3192, 3196, 3196, 3195, 3198, 3200, + 3201, 3202, 3198, 3203, 3191, 3204, 3200, 3212, 3205, 3203, + 3207, 3207, 3199, 3209, 3209, 3213, 3210, 3211, 3214, 3201, + 3202, 3205, 3211, 3217, 3204, 3210, 3212, 3216, 3210, 3215, + 3215, 3214, 3216, 3219, 3213, 3221, 3217, 3220, 3220, 3222, + 3222, 3223, 3223, 3224, 3225, 3226, 3227, 3227, 3224, 0, + 3228, 3225, 3230, 3230, 3221, 3228, 3229, 3233, 3229, 3219, - 0, 3220, 0, 3223, 3231, 3231, 3234, 3234, 3235, 3235, - 3227, 3228, 3232, 3236, 3238, 3238, 3240, 3233, 3239, 3239, - 3236, 3242, 3245, 3240, 3246, 3247, 3242, 3245, 3248, 3248, - 3249, 3249, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3246, 3247, 3253, 3253, 3253, 3253, 3253, - 3253, 3253, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3255, - 3255, 3255, 3255, 3255, 3255, 3255, 3256, 3256, 3256, 3256, - 3256, 3256, 3256, 3257, 3257, 3257, 3257, 3257, 3257, 3257, - 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3259, 3259, 3259, - 3259, 3259, 3259, 3259, 3261, 3261, 0, 3261, 3261, 3261, + 3231, 3232, 3235, 3238, 3226, 3234, 3242, 3231, 3232, 3240, + 3234, 3237, 3237, 3241, 3240, 3243, 3233, 3247, 3241, 3244, + 3244, 3235, 3238, 3246, 3246, 3242, 3248, 3249, 3249, 3250, + 3250, 3251, 3253, 3253, 3243, 3255, 3247, 3261, 3251, 3254, + 3254, 3257, 3255, 3260, 3262, 3248, 3257, 0, 3260, 3263, + 3263, 3264, 3264, 0, 0, 0, 3261, 0, 0, 0, + 0, 0, 0, 3262, 3268, 3268, 3268, 3268, 3268, 3268, + 3268, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3270, 3270, + 3270, 3270, 3270, 3270, 3270, 3271, 3271, 3271, 3271, 3271, + 3271, 3271, 3272, 3272, 3272, 3272, 3272, 3272, 3272, 3273, - 3261, 3262, 3262, 0, 0, 0, 3262, 3262, 3263, 3263, - 0, 0, 3263, 0, 3263, 3264, 0, 0, 0, 0, - 0, 3264, 3265, 3265, 0, 0, 0, 3265, 3265, 3266, - 0, 0, 0, 0, 0, 3266, 3267, 3267, 0, 3267, - 3267, 3267, 3267, 3268, 0, 0, 0, 0, 0, 3268, - 3269, 3269, 0, 0, 0, 3269, 3269, 3270, 3270, 0, - 3270, 3270, 3270, 3270, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, + 3273, 3273, 3273, 3273, 3273, 3273, 3274, 3274, 3274, 3274, + 3274, 3274, 3274, 3276, 3276, 0, 3276, 3276, 3276, 3276, + 3277, 3277, 0, 0, 0, 3277, 3277, 3278, 3278, 0, + 0, 3278, 0, 3278, 3279, 0, 0, 0, 0, 0, + 3279, 3280, 3280, 0, 0, 0, 3280, 3280, 3281, 0, + 0, 0, 0, 0, 3281, 3282, 3282, 0, 3282, 3282, + 3282, 3282, 3283, 0, 0, 0, 0, 0, 3283, 3284, + 3284, 0, 0, 0, 3284, 3284, 3285, 3285, 0, 3285, + 3285, 3285, 3285, 3267, 3267, 3267, 3267, 3267, 3267, 3267, + 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, - 3252, 3252, 3252, 3252, 3252 + 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, + 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, + 3267, 3267, 3267, 3267 } ; static yy_state_type yy_last_accepting_state; @@ -3112,7 +3121,7 @@ static void config_end_include(void) } #endif -#line 3114 "" +#line 3122 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3121,9 +3130,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3123 "" +#line 3131 "" -#line 3125 "" +#line 3133 "" #define INITIAL 0 #define quotedstring 1 @@ -3347,7 +3356,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3349 "" +#line 3357 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3380,13 +3389,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 >= 3253 ) + if ( yy_current_state >= 3268 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 6365 ); + while ( yy_base[yy_current_state] != 6384 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -3666,17 +3675,17 @@ YY_RULE_SETUP case 51: YY_RULE_SETUP #line 265 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSTEMD) } +{ YDVAR(1, VAR_HTTP_NOTLS_DOWNSTREAM) } YY_BREAK case 52: YY_RULE_SETUP #line 266 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_DAEMONIZE) } +{ YDVAR(1, VAR_USE_SYSTEMD) } YY_BREAK case 53: YY_RULE_SETUP #line 267 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE) } +{ YDVAR(1, VAR_DO_DAEMONIZE) } YY_BREAK case 54: YY_RULE_SETUP @@ -3686,217 +3695,217 @@ YY_RULE_SETUP case 55: YY_RULE_SETUP #line 269 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_INTERFACE) } +{ YDVAR(1, VAR_INTERFACE) } YY_BREAK case 56: YY_RULE_SETUP #line 270 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) } +{ YDVAR(1, VAR_OUTGOING_INTERFACE) } YY_BREAK case 57: YY_RULE_SETUP #line 271 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_RCVBUF) } +{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) } YY_BREAK case 58: YY_RULE_SETUP #line 272 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_SNDBUF) } +{ YDVAR(1, VAR_SO_RCVBUF) } YY_BREAK case 59: YY_RULE_SETUP #line 273 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_REUSEPORT) } +{ YDVAR(1, VAR_SO_SNDBUF) } YY_BREAK case 60: YY_RULE_SETUP #line 274 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_TRANSPARENT) } +{ YDVAR(1, VAR_SO_REUSEPORT) } YY_BREAK case 61: YY_RULE_SETUP #line 275 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_FREEBIND) } +{ YDVAR(1, VAR_IP_TRANSPARENT) } YY_BREAK case 62: YY_RULE_SETUP #line 276 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_DSCP) } +{ YDVAR(1, VAR_IP_FREEBIND) } YY_BREAK case 63: YY_RULE_SETUP #line 277 "./util/configlexer.lex" -{ YDVAR(1, VAR_CHROOT) } +{ YDVAR(1, VAR_IP_DSCP) } YY_BREAK case 64: YY_RULE_SETUP #line 278 "./util/configlexer.lex" -{ YDVAR(1, VAR_USERNAME) } +{ YDVAR(1, VAR_CHROOT) } YY_BREAK case 65: YY_RULE_SETUP #line 279 "./util/configlexer.lex" -{ YDVAR(1, VAR_DIRECTORY) } +{ YDVAR(1, VAR_USERNAME) } YY_BREAK case 66: YY_RULE_SETUP #line 280 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOGFILE) } +{ YDVAR(1, VAR_DIRECTORY) } YY_BREAK case 67: YY_RULE_SETUP #line 281 "./util/configlexer.lex" -{ YDVAR(1, VAR_PIDFILE) } +{ YDVAR(1, VAR_LOGFILE) } YY_BREAK case 68: YY_RULE_SETUP #line 282 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_HINTS) } +{ YDVAR(1, VAR_PIDFILE) } YY_BREAK case 69: YY_RULE_SETUP #line 283 "./util/configlexer.lex" -{ YDVAR(1, VAR_STREAM_WAIT_SIZE) } +{ YDVAR(1, VAR_ROOT_HINTS) } YY_BREAK case 70: YY_RULE_SETUP #line 284 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) } +{ YDVAR(1, VAR_STREAM_WAIT_SIZE) } YY_BREAK case 71: YY_RULE_SETUP #line 285 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } +{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) } YY_BREAK case 72: YY_RULE_SETUP #line 286 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SIZE) } +{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } YY_BREAK case 73: YY_RULE_SETUP #line 287 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SLABS) } +{ YDVAR(1, VAR_MSG_CACHE_SIZE) } YY_BREAK case 74: YY_RULE_SETUP #line 288 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } +{ YDVAR(1, VAR_MSG_CACHE_SLABS) } YY_BREAK case 75: YY_RULE_SETUP #line 289 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } +{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } YY_BREAK case 76: YY_RULE_SETUP #line 290 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_TTL) } +{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } YY_BREAK case 77: YY_RULE_SETUP #line 291 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } +{ YDVAR(1, VAR_CACHE_MAX_TTL) } YY_BREAK case 78: YY_RULE_SETUP #line 292 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MIN_TTL) } +{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } YY_BREAK case 79: YY_RULE_SETUP #line 293 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_HOST_TTL) } +{ YDVAR(1, VAR_CACHE_MIN_TTL) } YY_BREAK case 80: YY_RULE_SETUP #line 294 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_LAME_TTL) } +{ YDVAR(1, VAR_INFRA_HOST_TTL) } YY_BREAK case 81: YY_RULE_SETUP #line 295 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } +{ YDVAR(1, VAR_INFRA_LAME_TTL) } YY_BREAK case 82: YY_RULE_SETUP #line 296 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } +{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } YY_BREAK case 83: YY_RULE_SETUP #line 297 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } +{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } YY_BREAK case 84: YY_RULE_SETUP #line 298 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } +{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } YY_BREAK case 85: YY_RULE_SETUP #line 299 "./util/configlexer.lex" -{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } +{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } YY_BREAK case 86: YY_RULE_SETUP #line 300 "./util/configlexer.lex" -{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } +{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } YY_BREAK case 87: YY_RULE_SETUP #line 301 "./util/configlexer.lex" -{ YDVAR(1, VAR_DELAY_CLOSE) } +{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } YY_BREAK case 88: YY_RULE_SETUP #line 302 "./util/configlexer.lex" -{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } +{ YDVAR(1, VAR_DELAY_CLOSE) } YY_BREAK case 89: YY_RULE_SETUP #line 303 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } +{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } YY_BREAK case 90: YY_RULE_SETUP #line 304 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } +{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } YY_BREAK case 91: YY_RULE_SETUP #line 305 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_GLUE) } +{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } YY_BREAK case 92: YY_RULE_SETUP #line 306 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } +{ YDVAR(1, VAR_HARDEN_GLUE) } YY_BREAK case 93: YY_RULE_SETUP #line 307 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } +{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } YY_BREAK case 94: YY_RULE_SETUP #line 308 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } +{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } YY_BREAK case 95: YY_RULE_SETUP #line 309 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } +{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } YY_BREAK case 96: YY_RULE_SETUP #line 310 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } +{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } YY_BREAK case 97: YY_RULE_SETUP #line 311 "./util/configlexer.lex" -{ YDVAR(1, VAR_CAPS_WHITELIST) } +{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } YY_BREAK case 98: YY_RULE_SETUP @@ -3906,72 +3915,72 @@ YY_RULE_SETUP case 99: YY_RULE_SETUP #line 313 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } +{ YDVAR(1, VAR_CAPS_WHITELIST) } YY_BREAK case 100: YY_RULE_SETUP #line 314 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_ADDRESS) } +{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } YY_BREAK case 101: YY_RULE_SETUP #line 315 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_DOMAIN) } +{ YDVAR(1, VAR_PRIVATE_ADDRESS) } YY_BREAK case 102: YY_RULE_SETUP #line 316 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH_KEY) } +{ YDVAR(1, VAR_PRIVATE_DOMAIN) } YY_BREAK case 103: YY_RULE_SETUP #line 317 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH) } +{ YDVAR(1, VAR_PREFETCH_KEY) } YY_BREAK case 104: YY_RULE_SETUP #line 318 "./util/configlexer.lex" -{ YDVAR(1, VAR_DENY_ANY) } +{ YDVAR(1, VAR_PREFETCH) } YY_BREAK case 105: YY_RULE_SETUP #line 319 "./util/configlexer.lex" -{ YDVAR(0, VAR_STUB_ZONE) } +{ YDVAR(1, VAR_DENY_ANY) } YY_BREAK case 106: YY_RULE_SETUP #line 320 "./util/configlexer.lex" -{ YDVAR(1, VAR_NAME) } +{ YDVAR(0, VAR_STUB_ZONE) } YY_BREAK case 107: YY_RULE_SETUP #line 321 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_ADDR) } +{ YDVAR(1, VAR_NAME) } YY_BREAK case 108: YY_RULE_SETUP #line 322 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_HOST) } +{ YDVAR(1, VAR_STUB_ADDR) } YY_BREAK case 109: YY_RULE_SETUP #line 323 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_PRIME) } +{ YDVAR(1, VAR_STUB_HOST) } YY_BREAK case 110: YY_RULE_SETUP #line 324 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_FIRST) } +{ YDVAR(1, VAR_STUB_PRIME) } YY_BREAK case 111: YY_RULE_SETUP #line 325 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_NO_CACHE) } +{ YDVAR(1, VAR_STUB_FIRST) } YY_BREAK case 112: YY_RULE_SETUP #line 326 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } +{ YDVAR(1, VAR_STUB_NO_CACHE) } YY_BREAK case 113: YY_RULE_SETUP @@ -3981,32 +3990,32 @@ YY_RULE_SETUP case 114: YY_RULE_SETUP #line 328 "./util/configlexer.lex" -{ YDVAR(0, VAR_FORWARD_ZONE) } +{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } YY_BREAK case 115: YY_RULE_SETUP #line 329 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_ADDR) } +{ YDVAR(0, VAR_FORWARD_ZONE) } YY_BREAK case 116: YY_RULE_SETUP #line 330 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_HOST) } +{ YDVAR(1, VAR_FORWARD_ADDR) } YY_BREAK case 117: YY_RULE_SETUP #line 331 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_FIRST) } +{ YDVAR(1, VAR_FORWARD_HOST) } YY_BREAK case 118: YY_RULE_SETUP #line 332 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_NO_CACHE) } +{ YDVAR(1, VAR_FORWARD_FIRST) } YY_BREAK case 119: YY_RULE_SETUP #line 333 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } +{ YDVAR(1, VAR_FORWARD_NO_CACHE) } YY_BREAK case 120: YY_RULE_SETUP @@ -4016,47 +4025,47 @@ YY_RULE_SETUP case 121: YY_RULE_SETUP #line 335 "./util/configlexer.lex" -{ YDVAR(0, VAR_AUTH_ZONE) } +{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } YY_BREAK case 122: YY_RULE_SETUP #line 336 "./util/configlexer.lex" -{ YDVAR(0, VAR_RPZ) } +{ YDVAR(0, VAR_AUTH_ZONE) } YY_BREAK case 123: YY_RULE_SETUP #line 337 "./util/configlexer.lex" -{ YDVAR(1, VAR_TAGS) } +{ YDVAR(0, VAR_RPZ) } YY_BREAK case 124: YY_RULE_SETUP #line 338 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } +{ YDVAR(1, VAR_TAGS) } YY_BREAK case 125: YY_RULE_SETUP #line 339 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } +{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } YY_BREAK case 126: YY_RULE_SETUP #line 340 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG) } +{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } YY_BREAK case 127: YY_RULE_SETUP #line 341 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG_NAME) } +{ YDVAR(1, VAR_RPZ_LOG) } YY_BREAK case 128: YY_RULE_SETUP #line 342 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEFILE) } +{ YDVAR(1, VAR_RPZ_LOG_NAME) } YY_BREAK case 129: YY_RULE_SETUP #line 343 "./util/configlexer.lex" -{ YDVAR(1, VAR_MASTER) } +{ YDVAR(1, VAR_ZONEFILE) } YY_BREAK case 130: YY_RULE_SETUP @@ -4066,701 +4075,701 @@ YY_RULE_SETUP case 131: YY_RULE_SETUP #line 345 "./util/configlexer.lex" -{ YDVAR(1, VAR_URL) } +{ YDVAR(1, VAR_MASTER) } YY_BREAK case 132: YY_RULE_SETUP #line 346 "./util/configlexer.lex" -{ YDVAR(1, VAR_ALLOW_NOTIFY) } +{ YDVAR(1, VAR_URL) } YY_BREAK case 133: YY_RULE_SETUP #line 347 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_DOWNSTREAM) } +{ YDVAR(1, VAR_ALLOW_NOTIFY) } YY_BREAK case 134: YY_RULE_SETUP #line 348 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_UPSTREAM) } +{ YDVAR(1, VAR_FOR_DOWNSTREAM) } YY_BREAK case 135: YY_RULE_SETUP #line 349 "./util/configlexer.lex" -{ YDVAR(1, VAR_FALLBACK_ENABLED) } +{ YDVAR(1, VAR_FOR_UPSTREAM) } YY_BREAK case 136: YY_RULE_SETUP #line 350 "./util/configlexer.lex" -{ YDVAR(0, VAR_VIEW) } +{ YDVAR(1, VAR_FALLBACK_ENABLED) } YY_BREAK case 137: YY_RULE_SETUP #line 351 "./util/configlexer.lex" -{ YDVAR(1, VAR_VIEW_FIRST) } +{ YDVAR(0, VAR_VIEW) } YY_BREAK case 138: YY_RULE_SETUP #line 352 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } +{ YDVAR(1, VAR_VIEW_FIRST) } YY_BREAK case 139: YY_RULE_SETUP #line 353 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } +{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } YY_BREAK case 140: YY_RULE_SETUP #line 354 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL) } +{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } YY_BREAK case 141: YY_RULE_SETUP #line 355 "./util/configlexer.lex" -{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } +{ YDVAR(2, VAR_ACCESS_CONTROL) } YY_BREAK case 142: YY_RULE_SETUP #line 356 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } +{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } YY_BREAK case 143: YY_RULE_SETUP #line 357 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } YY_BREAK case 144: YY_RULE_SETUP #line 358 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } YY_BREAK case 145: YY_RULE_SETUP #line 359 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } YY_BREAK case 146: YY_RULE_SETUP #line 360 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } YY_BREAK case 147: YY_RULE_SETUP #line 361 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } YY_BREAK case 148: YY_RULE_SETUP #line 362 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } YY_BREAK case 149: YY_RULE_SETUP #line 363 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } YY_BREAK case 150: YY_RULE_SETUP #line 364 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } YY_BREAK case 151: YY_RULE_SETUP #line 365 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_IDENTITY) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } YY_BREAK case 152: YY_RULE_SETUP #line 366 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_VERSION) } +{ YDVAR(1, VAR_HIDE_IDENTITY) } YY_BREAK case 153: YY_RULE_SETUP #line 367 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } +{ YDVAR(1, VAR_HIDE_VERSION) } YY_BREAK case 154: YY_RULE_SETUP #line 368 "./util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } +{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } YY_BREAK case 155: YY_RULE_SETUP #line 369 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } +{ YDVAR(1, VAR_IDENTITY) } YY_BREAK case 156: YY_RULE_SETUP #line 370 "./util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } +{ YDVAR(1, VAR_VERSION) } YY_BREAK case 157: YY_RULE_SETUP #line 371 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } +{ YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 158: YY_RULE_SETUP #line 372 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 159: YY_RULE_SETUP #line 373 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 160: YY_RULE_SETUP #line 374 "./util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 161: YY_RULE_SETUP #line 375 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 162: YY_RULE_SETUP #line 376 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 163: YY_RULE_SETUP #line 377 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } +{ YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 164: YY_RULE_SETUP #line 378 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } +{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } YY_BREAK case 165: YY_RULE_SETUP #line 379 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } +{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } YY_BREAK case 166: YY_RULE_SETUP #line 380 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 167: YY_RULE_SETUP #line 381 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 168: YY_RULE_SETUP #line 382 "./util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 169: YY_RULE_SETUP #line 383 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } +{ YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 170: YY_RULE_SETUP #line 384 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 171: YY_RULE_SETUP #line 385 "./util/configlexer.lex" -{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 172: YY_RULE_SETUP #line 386 "./util/configlexer.lex" -{ YDVAR(1, VAR_IGNORE_CD_FLAG) } +{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } YY_BREAK case 173: YY_RULE_SETUP #line 387 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED) } +{ YDVAR(1, VAR_IGNORE_CD_FLAG) } YY_BREAK case 174: YY_RULE_SETUP #line 388 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED) } YY_BREAK case 175: YY_RULE_SETUP #line 389 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } YY_BREAK case 176: YY_RULE_SETUP #line 390 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } YY_BREAK case 177: YY_RULE_SETUP #line 391 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } +{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } YY_BREAK case 178: YY_RULE_SETUP #line 392 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_DSA) } +{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } YY_BREAK case 179: YY_RULE_SETUP #line 393 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_SHA1) } +{ YDVAR(1, VAR_FAKE_DSA) } YY_BREAK case 180: YY_RULE_SETUP #line 394 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_FAKE_SHA1) } YY_BREAK case 181: YY_RULE_SETUP #line 395 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 182: YY_RULE_SETUP #line 396 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 183: YY_RULE_SETUP #line 397 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 184: YY_RULE_SETUP #line 398 "./util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 185: YY_RULE_SETUP -#line 400 "./util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +#line 399 "./util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 186: YY_RULE_SETUP #line 401 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 187: YY_RULE_SETUP #line 402 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 188: YY_RULE_SETUP #line 403 "./util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 189: YY_RULE_SETUP #line 404 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 190: YY_RULE_SETUP #line 405 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 191: YY_RULE_SETUP #line 406 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 192: YY_RULE_SETUP #line 407 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 193: YY_RULE_SETUP #line 408 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_REPLIES) } +{ YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 194: YY_RULE_SETUP #line 409 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } +{ YDVAR(1, VAR_LOG_REPLIES) } YY_BREAK case 195: YY_RULE_SETUP #line 410 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } +{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } YY_BREAK case 196: YY_RULE_SETUP #line 411 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_SERVFAIL) } +{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } YY_BREAK case 197: YY_RULE_SETUP #line 412 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_SERVFAIL) } YY_BREAK case 198: YY_RULE_SETUP #line 413 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 199: YY_RULE_SETUP #line 414 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 200: YY_RULE_SETUP #line 415 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 201: YY_RULE_SETUP #line 416 "./util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 202: YY_RULE_SETUP #line 417 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 203: YY_RULE_SETUP #line 418 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 204: YY_RULE_SETUP #line 419 "./util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 205: YY_RULE_SETUP #line 420 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 206: YY_RULE_SETUP #line 421 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } +{ YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 207: YY_RULE_SETUP #line 422 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 208: YY_RULE_SETUP #line 423 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 209: YY_RULE_SETUP #line 424 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 210: YY_RULE_SETUP #line 425 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 211: YY_RULE_SETUP #line 426 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 212: YY_RULE_SETUP #line 427 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 213: YY_RULE_SETUP #line 428 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 214: YY_RULE_SETUP #line 429 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 215: YY_RULE_SETUP #line 430 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 216: YY_RULE_SETUP #line 431 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 217: YY_RULE_SETUP #line 432 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 218: YY_RULE_SETUP #line 433 "./util/configlexer.lex" -{ YDVAR(1, VAR_DYNLIB_FILE) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 219: YY_RULE_SETUP #line 434 "./util/configlexer.lex" -{ YDVAR(0, VAR_DYNLIB) } +{ YDVAR(1, VAR_DYNLIB_FILE) } YY_BREAK case 220: YY_RULE_SETUP #line 435 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(0, VAR_DYNLIB) } YY_BREAK case 221: YY_RULE_SETUP #line 436 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 222: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 223: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 224: YY_RULE_SETUP #line 439 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 225: YY_RULE_SETUP #line 440 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 226: YY_RULE_SETUP #line 441 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 227: YY_RULE_SETUP #line 442 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 228: YY_RULE_SETUP #line 443 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 229: YY_RULE_SETUP #line 444 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 230: YY_RULE_SETUP #line 445 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 231: YY_RULE_SETUP #line 446 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 232: YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 233: YY_RULE_SETUP #line 448 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 234: YY_RULE_SETUP #line 449 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 235: YY_RULE_SETUP #line 450 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 236: YY_RULE_SETUP #line 451 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 237: YY_RULE_SETUP #line 452 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 238: YY_RULE_SETUP #line 453 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } YY_BREAK case 239: YY_RULE_SETUP #line 454 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 240: YY_RULE_SETUP #line 455 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 241: YY_RULE_SETUP #line 456 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 242: YY_RULE_SETUP #line 457 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 243: YY_RULE_SETUP #line 458 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 244: YY_RULE_SETUP -#line 460 "./util/configlexer.lex" +#line 459 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 245: YY_RULE_SETUP -#line 462 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 461 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 246: YY_RULE_SETUP #line 463 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 247: YY_RULE_SETUP #line 464 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 248: YY_RULE_SETUP #line 465 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 249: YY_RULE_SETUP #line 466 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 250: YY_RULE_SETUP -#line 468 "./util/configlexer.lex" +#line 467 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 251: YY_RULE_SETUP -#line 470 "./util/configlexer.lex" +#line 469 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 252: YY_RULE_SETUP -#line 472 "./util/configlexer.lex" +#line 471 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 253: YY_RULE_SETUP -#line 474 "./util/configlexer.lex" +#line 473 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 254: YY_RULE_SETUP -#line 476 "./util/configlexer.lex" +#line 475 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 255: YY_RULE_SETUP -#line 478 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 477 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 256: YY_RULE_SETUP #line 479 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 257: YY_RULE_SETUP #line 480 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 258: YY_RULE_SETUP #line 481 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 259: YY_RULE_SETUP #line 482 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 260: YY_RULE_SETUP #line 483 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 261: YY_RULE_SETUP #line 484 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 262: YY_RULE_SETUP #line 485 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 263: YY_RULE_SETUP #line 486 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 264: YY_RULE_SETUP #line 487 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 265: YY_RULE_SETUP #line 488 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 266: YY_RULE_SETUP #line 489 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 267: YY_RULE_SETUP #line 490 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 268: YY_RULE_SETUP #line 491 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 269: YY_RULE_SETUP @@ -4775,99 +4784,99 @@ YY_RULE_SETUP case 271: YY_RULE_SETUP #line 494 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 272: YY_RULE_SETUP #line 495 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 273: YY_RULE_SETUP #line 496 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 274: YY_RULE_SETUP #line 497 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 275: YY_RULE_SETUP #line 498 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 276: YY_RULE_SETUP #line 499 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 277: YY_RULE_SETUP #line 500 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 278: YY_RULE_SETUP #line 501 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 279: YY_RULE_SETUP #line 502 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 280: YY_RULE_SETUP #line 503 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 281: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 282: YY_RULE_SETUP -#line 506 "./util/configlexer.lex" +#line 505 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 283: YY_RULE_SETUP -#line 508 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 507 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 284: YY_RULE_SETUP #line 509 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 285: YY_RULE_SETUP #line 510 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 286: YY_RULE_SETUP #line 511 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 287: YY_RULE_SETUP #line 512 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 288: YY_RULE_SETUP #line 513 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 289: YY_RULE_SETUP #line 514 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 290: YY_RULE_SETUP @@ -4877,113 +4886,118 @@ YY_RULE_SETUP case 291: YY_RULE_SETUP #line 516 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 292: YY_RULE_SETUP #line 517 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 293: YY_RULE_SETUP #line 518 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 294: YY_RULE_SETUP #line 519 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 295: YY_RULE_SETUP #line 520 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 296: YY_RULE_SETUP #line 521 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 297: YY_RULE_SETUP #line 522 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 298: YY_RULE_SETUP #line 523 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 299: YY_RULE_SETUP #line 524 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 300: YY_RULE_SETUP #line 525 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 301: YY_RULE_SETUP #line 526 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 302: YY_RULE_SETUP #line 527 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 303: YY_RULE_SETUP #line 528 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 304: YY_RULE_SETUP #line 529 "./util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_TAG) } +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } YY_BREAK case 305: YY_RULE_SETUP #line 530 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_TAG_OPCODE) } +{ YDVAR(2, VAR_EDNS_CLIENT_TAG) } YY_BREAK case 306: -/* rule 306 can match eol */ YY_RULE_SETUP #line 531 "./util/configlexer.lex" +{ YDVAR(1, VAR_EDNS_CLIENT_TAG_OPCODE) } + YY_BREAK +case 307: +/* rule 307 can match eol */ +YY_RULE_SETUP +#line 532 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 307: +case 308: YY_RULE_SETUP -#line 534 "./util/configlexer.lex" +#line 535 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 535 "./util/configlexer.lex" +#line 536 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 308: -YY_RULE_SETUP -#line 540 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 309: -/* rule 309 can match eol */ YY_RULE_SETUP #line 541 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 310: +/* rule 310 can match eol */ +YY_RULE_SETUP +#line 542 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 310: +case 311: YY_RULE_SETUP -#line 543 "./util/configlexer.lex" +#line 544 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4996,34 +5010,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 311: +case 312: YY_RULE_SETUP -#line 555 "./util/configlexer.lex" +#line 556 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 556 "./util/configlexer.lex" +#line 557 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 312: -YY_RULE_SETUP -#line 561 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 313: -/* rule 313 can match eol */ YY_RULE_SETUP #line 562 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 314: +/* rule 314 can match eol */ +YY_RULE_SETUP +#line 563 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 314: +case 315: YY_RULE_SETUP -#line 564 "./util/configlexer.lex" +#line 565 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5036,38 +5050,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 315: +case 316: YY_RULE_SETUP -#line 576 "./util/configlexer.lex" +#line 577 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 578 "./util/configlexer.lex" +#line 579 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 316: -YY_RULE_SETUP -#line 582 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 317: -/* rule 317 can match eol */ YY_RULE_SETUP #line 583 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 318: +/* rule 318 can match eol */ YY_RULE_SETUP #line 584 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 319: YY_RULE_SETUP #line 585 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 320: +YY_RULE_SETUP +#line 586 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -5075,27 +5089,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 590 "./util/configlexer.lex" +#line 591 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 320: -YY_RULE_SETUP -#line 594 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 321: -/* rule 321 can match eol */ YY_RULE_SETUP #line 595 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 322: +/* rule 322 can match eol */ +YY_RULE_SETUP +#line 596 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 322: +case 323: YY_RULE_SETUP -#line 597 "./util/configlexer.lex" +#line 598 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -5105,7 +5119,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 603 "./util/configlexer.lex" +#line 604 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -5120,39 +5134,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 323: +case 324: YY_RULE_SETUP -#line 617 "./util/configlexer.lex" +#line 618 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 620 "./util/configlexer.lex" +#line 621 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 324: -YY_RULE_SETUP -#line 624 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK case 325: -/* rule 325 can match eol */ YY_RULE_SETUP #line 625 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } +{ LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK case 326: +/* rule 326 can match eol */ YY_RULE_SETUP #line 626 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK case 327: YY_RULE_SETUP #line 627 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 328: +YY_RULE_SETUP +#line 628 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5161,29 +5175,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 633 "./util/configlexer.lex" +#line 634 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 328: -YY_RULE_SETUP -#line 637 "./util/configlexer.lex" -{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } - YY_BREAK case 329: -/* rule 329 can match eol */ YY_RULE_SETUP #line 638 "./util/configlexer.lex" +{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 330: +/* rule 330 can match eol */ +YY_RULE_SETUP +#line 639 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 330: +case 331: YY_RULE_SETUP -#line 642 "./util/configlexer.lex" +#line 643 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5192,33 +5206,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 331: +case 332: YY_RULE_SETUP -#line 650 "./util/configlexer.lex" +#line 651 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 332: +case 333: YY_RULE_SETUP -#line 654 "./util/configlexer.lex" +#line 655 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 333: +case 334: YY_RULE_SETUP -#line 658 "./util/configlexer.lex" +#line 659 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 334: +case 335: YY_RULE_SETUP -#line 662 "./util/configlexer.lex" +#line 663 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5220 "" +#line 5233 "" case YY_END_OF_BUFFER: { @@ -5513,7 +5527,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 >= 3253 ) + if ( yy_current_state >= 3268 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5541,11 +5555,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 >= 3253 ) + if ( yy_current_state >= 3268 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3252); + yy_is_jam = (yy_current_state == 3267); return yy_is_jam ? 0 : yy_current_state; } @@ -6184,6 +6198,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 662 "./util/configlexer.lex" +#line 663 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index ea7c1cf72..a4af4e8cb 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -262,6 +262,7 @@ http-max-streams{COLON} { YDVAR(1, VAR_HTTP_MAX_STREAMS) } http-query-buffer-size{COLON} { YDVAR(1, VAR_HTTP_QUERY_BUFFER_SIZE) } http-response-buffer-size{COLON} { YDVAR(1, VAR_HTTP_RESPONSE_BUFFER_SIZE) } http-nodelay{COLON} { YDVAR(1, VAR_HTTP_NODELAY) } +http-notls-downstream{COLON} { YDVAR(1, VAR_HTTP_NOTLS_DOWNSTREAM) } use-systemd{COLON} { YDVAR(1, VAR_USE_SYSTEMD) } do-daemonize{COLON} { YDVAR(1, VAR_DO_DAEMONIZE) } interface{COLON} { YDVAR(1, VAR_INTERFACE) } diff --git a/util/configparser.c b/util/configparser.c index 50788a0c5..85565951e 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -279,158 +279,159 @@ extern int yydebug; VAR_HTTP_QUERY_BUFFER_SIZE = 400, VAR_HTTP_RESPONSE_BUFFER_SIZE = 401, VAR_HTTP_NODELAY = 402, - VAR_STUB_FIRST = 403, - VAR_MINIMAL_RESPONSES = 404, - VAR_RRSET_ROUNDROBIN = 405, - VAR_MAX_UDP_SIZE = 406, - VAR_DELAY_CLOSE = 407, - VAR_UNBLOCK_LAN_ZONES = 408, - VAR_INSECURE_LAN_ZONES = 409, - VAR_INFRA_CACHE_MIN_RTT = 410, - VAR_DNS64_PREFIX = 411, - VAR_DNS64_SYNTHALL = 412, - VAR_DNS64_IGNORE_AAAA = 413, - VAR_DNSTAP = 414, - VAR_DNSTAP_ENABLE = 415, - VAR_DNSTAP_SOCKET_PATH = 416, - VAR_DNSTAP_IP = 417, - VAR_DNSTAP_TLS = 418, - VAR_DNSTAP_TLS_SERVER_NAME = 419, - VAR_DNSTAP_TLS_CERT_BUNDLE = 420, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 421, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 422, - VAR_DNSTAP_SEND_IDENTITY = 423, - VAR_DNSTAP_SEND_VERSION = 424, - VAR_DNSTAP_BIDIRECTIONAL = 425, - VAR_DNSTAP_IDENTITY = 426, - VAR_DNSTAP_VERSION = 427, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 428, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 429, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 430, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 431, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 432, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 433, - VAR_RESPONSE_IP_TAG = 434, - VAR_RESPONSE_IP = 435, - VAR_RESPONSE_IP_DATA = 436, - VAR_HARDEN_ALGO_DOWNGRADE = 437, - VAR_IP_TRANSPARENT = 438, - VAR_IP_DSCP = 439, - VAR_DISABLE_DNSSEC_LAME_CHECK = 440, - VAR_IP_RATELIMIT = 441, - VAR_IP_RATELIMIT_SLABS = 442, - VAR_IP_RATELIMIT_SIZE = 443, - VAR_RATELIMIT = 444, - VAR_RATELIMIT_SLABS = 445, - VAR_RATELIMIT_SIZE = 446, - VAR_RATELIMIT_FOR_DOMAIN = 447, - VAR_RATELIMIT_BELOW_DOMAIN = 448, - VAR_IP_RATELIMIT_FACTOR = 449, - VAR_RATELIMIT_FACTOR = 450, - VAR_SEND_CLIENT_SUBNET = 451, - VAR_CLIENT_SUBNET_ZONE = 452, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 453, - VAR_CLIENT_SUBNET_OPCODE = 454, - VAR_MAX_CLIENT_SUBNET_IPV4 = 455, - VAR_MAX_CLIENT_SUBNET_IPV6 = 456, - VAR_MIN_CLIENT_SUBNET_IPV4 = 457, - VAR_MIN_CLIENT_SUBNET_IPV6 = 458, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 459, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 460, - VAR_CAPS_WHITELIST = 461, - VAR_CACHE_MAX_NEGATIVE_TTL = 462, - VAR_PERMIT_SMALL_HOLDDOWN = 463, - VAR_QNAME_MINIMISATION = 464, - VAR_QNAME_MINIMISATION_STRICT = 465, - VAR_IP_FREEBIND = 466, - VAR_DEFINE_TAG = 467, - VAR_LOCAL_ZONE_TAG = 468, - VAR_ACCESS_CONTROL_TAG = 469, - VAR_LOCAL_ZONE_OVERRIDE = 470, - VAR_ACCESS_CONTROL_TAG_ACTION = 471, - VAR_ACCESS_CONTROL_TAG_DATA = 472, - VAR_VIEW = 473, - VAR_ACCESS_CONTROL_VIEW = 474, - VAR_VIEW_FIRST = 475, - VAR_SERVE_EXPIRED = 476, - VAR_SERVE_EXPIRED_TTL = 477, - VAR_SERVE_EXPIRED_TTL_RESET = 478, - VAR_SERVE_EXPIRED_REPLY_TTL = 479, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 480, - VAR_FAKE_DSA = 481, - VAR_FAKE_SHA1 = 482, - VAR_LOG_IDENTITY = 483, - VAR_HIDE_TRUSTANCHOR = 484, - VAR_TRUST_ANCHOR_SIGNALING = 485, - VAR_AGGRESSIVE_NSEC = 486, - VAR_USE_SYSTEMD = 487, - VAR_SHM_ENABLE = 488, - VAR_SHM_KEY = 489, - VAR_ROOT_KEY_SENTINEL = 490, - VAR_DNSCRYPT = 491, - VAR_DNSCRYPT_ENABLE = 492, - VAR_DNSCRYPT_PORT = 493, - VAR_DNSCRYPT_PROVIDER = 494, - VAR_DNSCRYPT_SECRET_KEY = 495, - VAR_DNSCRYPT_PROVIDER_CERT = 496, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 497, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 498, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 499, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 500, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 501, - VAR_IPSECMOD_ENABLED = 502, - VAR_IPSECMOD_HOOK = 503, - VAR_IPSECMOD_IGNORE_BOGUS = 504, - VAR_IPSECMOD_MAX_TTL = 505, - VAR_IPSECMOD_WHITELIST = 506, - VAR_IPSECMOD_STRICT = 507, - VAR_CACHEDB = 508, - VAR_CACHEDB_BACKEND = 509, - VAR_CACHEDB_SECRETSEED = 510, - VAR_CACHEDB_REDISHOST = 511, - VAR_CACHEDB_REDISPORT = 512, - VAR_CACHEDB_REDISTIMEOUT = 513, - VAR_CACHEDB_REDISEXPIRERECORDS = 514, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 515, - VAR_FOR_UPSTREAM = 516, - VAR_AUTH_ZONE = 517, - VAR_ZONEFILE = 518, - VAR_MASTER = 519, - VAR_URL = 520, - VAR_FOR_DOWNSTREAM = 521, - VAR_FALLBACK_ENABLED = 522, - VAR_TLS_ADDITIONAL_PORT = 523, - VAR_LOW_RTT = 524, - VAR_LOW_RTT_PERMIL = 525, - VAR_FAST_SERVER_PERMIL = 526, - VAR_FAST_SERVER_NUM = 527, - VAR_ALLOW_NOTIFY = 528, - VAR_TLS_WIN_CERT = 529, - VAR_TCP_CONNECTION_LIMIT = 530, - VAR_FORWARD_NO_CACHE = 531, - VAR_STUB_NO_CACHE = 532, - VAR_LOG_SERVFAIL = 533, - VAR_DENY_ANY = 534, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 535, - VAR_LOG_TAG_QUERYREPLY = 536, - VAR_STREAM_WAIT_SIZE = 537, - VAR_TLS_CIPHERS = 538, - VAR_TLS_CIPHERSUITES = 539, - VAR_TLS_USE_SNI = 540, - VAR_IPSET = 541, - VAR_IPSET_NAME_V4 = 542, - VAR_IPSET_NAME_V6 = 543, - VAR_TLS_SESSION_TICKET_KEYS = 544, - VAR_RPZ = 545, - VAR_TAGS = 546, - VAR_RPZ_ACTION_OVERRIDE = 547, - VAR_RPZ_CNAME_OVERRIDE = 548, - VAR_RPZ_LOG = 549, - VAR_RPZ_LOG_NAME = 550, - VAR_DYNLIB = 551, - VAR_DYNLIB_FILE = 552, - VAR_EDNS_CLIENT_TAG = 553, - VAR_EDNS_CLIENT_TAG_OPCODE = 554 + VAR_HTTP_NOTLS_DOWNSTREAM = 403, + VAR_STUB_FIRST = 404, + VAR_MINIMAL_RESPONSES = 405, + VAR_RRSET_ROUNDROBIN = 406, + VAR_MAX_UDP_SIZE = 407, + VAR_DELAY_CLOSE = 408, + VAR_UNBLOCK_LAN_ZONES = 409, + VAR_INSECURE_LAN_ZONES = 410, + VAR_INFRA_CACHE_MIN_RTT = 411, + VAR_DNS64_PREFIX = 412, + VAR_DNS64_SYNTHALL = 413, + VAR_DNS64_IGNORE_AAAA = 414, + VAR_DNSTAP = 415, + VAR_DNSTAP_ENABLE = 416, + VAR_DNSTAP_SOCKET_PATH = 417, + VAR_DNSTAP_IP = 418, + VAR_DNSTAP_TLS = 419, + VAR_DNSTAP_TLS_SERVER_NAME = 420, + VAR_DNSTAP_TLS_CERT_BUNDLE = 421, + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 422, + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 423, + VAR_DNSTAP_SEND_IDENTITY = 424, + VAR_DNSTAP_SEND_VERSION = 425, + VAR_DNSTAP_BIDIRECTIONAL = 426, + VAR_DNSTAP_IDENTITY = 427, + VAR_DNSTAP_VERSION = 428, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 429, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 430, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 431, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 432, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 433, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 434, + VAR_RESPONSE_IP_TAG = 435, + VAR_RESPONSE_IP = 436, + VAR_RESPONSE_IP_DATA = 437, + VAR_HARDEN_ALGO_DOWNGRADE = 438, + VAR_IP_TRANSPARENT = 439, + VAR_IP_DSCP = 440, + VAR_DISABLE_DNSSEC_LAME_CHECK = 441, + VAR_IP_RATELIMIT = 442, + VAR_IP_RATELIMIT_SLABS = 443, + VAR_IP_RATELIMIT_SIZE = 444, + VAR_RATELIMIT = 445, + VAR_RATELIMIT_SLABS = 446, + VAR_RATELIMIT_SIZE = 447, + VAR_RATELIMIT_FOR_DOMAIN = 448, + VAR_RATELIMIT_BELOW_DOMAIN = 449, + VAR_IP_RATELIMIT_FACTOR = 450, + VAR_RATELIMIT_FACTOR = 451, + VAR_SEND_CLIENT_SUBNET = 452, + VAR_CLIENT_SUBNET_ZONE = 453, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 454, + VAR_CLIENT_SUBNET_OPCODE = 455, + VAR_MAX_CLIENT_SUBNET_IPV4 = 456, + VAR_MAX_CLIENT_SUBNET_IPV6 = 457, + VAR_MIN_CLIENT_SUBNET_IPV4 = 458, + VAR_MIN_CLIENT_SUBNET_IPV6 = 459, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 460, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 461, + VAR_CAPS_WHITELIST = 462, + VAR_CACHE_MAX_NEGATIVE_TTL = 463, + VAR_PERMIT_SMALL_HOLDDOWN = 464, + VAR_QNAME_MINIMISATION = 465, + VAR_QNAME_MINIMISATION_STRICT = 466, + VAR_IP_FREEBIND = 467, + VAR_DEFINE_TAG = 468, + VAR_LOCAL_ZONE_TAG = 469, + VAR_ACCESS_CONTROL_TAG = 470, + VAR_LOCAL_ZONE_OVERRIDE = 471, + VAR_ACCESS_CONTROL_TAG_ACTION = 472, + VAR_ACCESS_CONTROL_TAG_DATA = 473, + VAR_VIEW = 474, + VAR_ACCESS_CONTROL_VIEW = 475, + VAR_VIEW_FIRST = 476, + VAR_SERVE_EXPIRED = 477, + VAR_SERVE_EXPIRED_TTL = 478, + VAR_SERVE_EXPIRED_TTL_RESET = 479, + VAR_SERVE_EXPIRED_REPLY_TTL = 480, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 481, + VAR_FAKE_DSA = 482, + VAR_FAKE_SHA1 = 483, + VAR_LOG_IDENTITY = 484, + VAR_HIDE_TRUSTANCHOR = 485, + VAR_TRUST_ANCHOR_SIGNALING = 486, + VAR_AGGRESSIVE_NSEC = 487, + VAR_USE_SYSTEMD = 488, + VAR_SHM_ENABLE = 489, + VAR_SHM_KEY = 490, + VAR_ROOT_KEY_SENTINEL = 491, + VAR_DNSCRYPT = 492, + VAR_DNSCRYPT_ENABLE = 493, + VAR_DNSCRYPT_PORT = 494, + VAR_DNSCRYPT_PROVIDER = 495, + VAR_DNSCRYPT_SECRET_KEY = 496, + VAR_DNSCRYPT_PROVIDER_CERT = 497, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 498, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 499, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 500, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 501, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 502, + VAR_IPSECMOD_ENABLED = 503, + VAR_IPSECMOD_HOOK = 504, + VAR_IPSECMOD_IGNORE_BOGUS = 505, + VAR_IPSECMOD_MAX_TTL = 506, + VAR_IPSECMOD_WHITELIST = 507, + VAR_IPSECMOD_STRICT = 508, + VAR_CACHEDB = 509, + VAR_CACHEDB_BACKEND = 510, + VAR_CACHEDB_SECRETSEED = 511, + VAR_CACHEDB_REDISHOST = 512, + VAR_CACHEDB_REDISPORT = 513, + VAR_CACHEDB_REDISTIMEOUT = 514, + VAR_CACHEDB_REDISEXPIRERECORDS = 515, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 516, + VAR_FOR_UPSTREAM = 517, + VAR_AUTH_ZONE = 518, + VAR_ZONEFILE = 519, + VAR_MASTER = 520, + VAR_URL = 521, + VAR_FOR_DOWNSTREAM = 522, + VAR_FALLBACK_ENABLED = 523, + VAR_TLS_ADDITIONAL_PORT = 524, + VAR_LOW_RTT = 525, + VAR_LOW_RTT_PERMIL = 526, + VAR_FAST_SERVER_PERMIL = 527, + VAR_FAST_SERVER_NUM = 528, + VAR_ALLOW_NOTIFY = 529, + VAR_TLS_WIN_CERT = 530, + VAR_TCP_CONNECTION_LIMIT = 531, + VAR_FORWARD_NO_CACHE = 532, + VAR_STUB_NO_CACHE = 533, + VAR_LOG_SERVFAIL = 534, + VAR_DENY_ANY = 535, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 536, + VAR_LOG_TAG_QUERYREPLY = 537, + VAR_STREAM_WAIT_SIZE = 538, + VAR_TLS_CIPHERS = 539, + VAR_TLS_CIPHERSUITES = 540, + VAR_TLS_USE_SNI = 541, + VAR_IPSET = 542, + VAR_IPSET_NAME_V4 = 543, + VAR_IPSET_NAME_V6 = 544, + VAR_TLS_SESSION_TICKET_KEYS = 545, + VAR_RPZ = 546, + VAR_TAGS = 547, + VAR_RPZ_ACTION_OVERRIDE = 548, + VAR_RPZ_CNAME_OVERRIDE = 549, + VAR_RPZ_LOG = 550, + VAR_RPZ_LOG_NAME = 551, + VAR_DYNLIB = 552, + VAR_DYNLIB_FILE = 553, + VAR_EDNS_CLIENT_TAG = 554, + VAR_EDNS_CLIENT_TAG_OPCODE = 555 }; #endif /* Tokens. */ @@ -579,158 +580,159 @@ extern int yydebug; #define VAR_HTTP_QUERY_BUFFER_SIZE 400 #define VAR_HTTP_RESPONSE_BUFFER_SIZE 401 #define VAR_HTTP_NODELAY 402 -#define VAR_STUB_FIRST 403 -#define VAR_MINIMAL_RESPONSES 404 -#define VAR_RRSET_ROUNDROBIN 405 -#define VAR_MAX_UDP_SIZE 406 -#define VAR_DELAY_CLOSE 407 -#define VAR_UNBLOCK_LAN_ZONES 408 -#define VAR_INSECURE_LAN_ZONES 409 -#define VAR_INFRA_CACHE_MIN_RTT 410 -#define VAR_DNS64_PREFIX 411 -#define VAR_DNS64_SYNTHALL 412 -#define VAR_DNS64_IGNORE_AAAA 413 -#define VAR_DNSTAP 414 -#define VAR_DNSTAP_ENABLE 415 -#define VAR_DNSTAP_SOCKET_PATH 416 -#define VAR_DNSTAP_IP 417 -#define VAR_DNSTAP_TLS 418 -#define VAR_DNSTAP_TLS_SERVER_NAME 419 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 420 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 421 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 422 -#define VAR_DNSTAP_SEND_IDENTITY 423 -#define VAR_DNSTAP_SEND_VERSION 424 -#define VAR_DNSTAP_BIDIRECTIONAL 425 -#define VAR_DNSTAP_IDENTITY 426 -#define VAR_DNSTAP_VERSION 427 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 428 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 429 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 430 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 431 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 432 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 433 -#define VAR_RESPONSE_IP_TAG 434 -#define VAR_RESPONSE_IP 435 -#define VAR_RESPONSE_IP_DATA 436 -#define VAR_HARDEN_ALGO_DOWNGRADE 437 -#define VAR_IP_TRANSPARENT 438 -#define VAR_IP_DSCP 439 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 440 -#define VAR_IP_RATELIMIT 441 -#define VAR_IP_RATELIMIT_SLABS 442 -#define VAR_IP_RATELIMIT_SIZE 443 -#define VAR_RATELIMIT 444 -#define VAR_RATELIMIT_SLABS 445 -#define VAR_RATELIMIT_SIZE 446 -#define VAR_RATELIMIT_FOR_DOMAIN 447 -#define VAR_RATELIMIT_BELOW_DOMAIN 448 -#define VAR_IP_RATELIMIT_FACTOR 449 -#define VAR_RATELIMIT_FACTOR 450 -#define VAR_SEND_CLIENT_SUBNET 451 -#define VAR_CLIENT_SUBNET_ZONE 452 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 453 -#define VAR_CLIENT_SUBNET_OPCODE 454 -#define VAR_MAX_CLIENT_SUBNET_IPV4 455 -#define VAR_MAX_CLIENT_SUBNET_IPV6 456 -#define VAR_MIN_CLIENT_SUBNET_IPV4 457 -#define VAR_MIN_CLIENT_SUBNET_IPV6 458 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 459 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 460 -#define VAR_CAPS_WHITELIST 461 -#define VAR_CACHE_MAX_NEGATIVE_TTL 462 -#define VAR_PERMIT_SMALL_HOLDDOWN 463 -#define VAR_QNAME_MINIMISATION 464 -#define VAR_QNAME_MINIMISATION_STRICT 465 -#define VAR_IP_FREEBIND 466 -#define VAR_DEFINE_TAG 467 -#define VAR_LOCAL_ZONE_TAG 468 -#define VAR_ACCESS_CONTROL_TAG 469 -#define VAR_LOCAL_ZONE_OVERRIDE 470 -#define VAR_ACCESS_CONTROL_TAG_ACTION 471 -#define VAR_ACCESS_CONTROL_TAG_DATA 472 -#define VAR_VIEW 473 -#define VAR_ACCESS_CONTROL_VIEW 474 -#define VAR_VIEW_FIRST 475 -#define VAR_SERVE_EXPIRED 476 -#define VAR_SERVE_EXPIRED_TTL 477 -#define VAR_SERVE_EXPIRED_TTL_RESET 478 -#define VAR_SERVE_EXPIRED_REPLY_TTL 479 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 480 -#define VAR_FAKE_DSA 481 -#define VAR_FAKE_SHA1 482 -#define VAR_LOG_IDENTITY 483 -#define VAR_HIDE_TRUSTANCHOR 484 -#define VAR_TRUST_ANCHOR_SIGNALING 485 -#define VAR_AGGRESSIVE_NSEC 486 -#define VAR_USE_SYSTEMD 487 -#define VAR_SHM_ENABLE 488 -#define VAR_SHM_KEY 489 -#define VAR_ROOT_KEY_SENTINEL 490 -#define VAR_DNSCRYPT 491 -#define VAR_DNSCRYPT_ENABLE 492 -#define VAR_DNSCRYPT_PORT 493 -#define VAR_DNSCRYPT_PROVIDER 494 -#define VAR_DNSCRYPT_SECRET_KEY 495 -#define VAR_DNSCRYPT_PROVIDER_CERT 496 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 497 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 498 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 499 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 500 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 501 -#define VAR_IPSECMOD_ENABLED 502 -#define VAR_IPSECMOD_HOOK 503 -#define VAR_IPSECMOD_IGNORE_BOGUS 504 -#define VAR_IPSECMOD_MAX_TTL 505 -#define VAR_IPSECMOD_WHITELIST 506 -#define VAR_IPSECMOD_STRICT 507 -#define VAR_CACHEDB 508 -#define VAR_CACHEDB_BACKEND 509 -#define VAR_CACHEDB_SECRETSEED 510 -#define VAR_CACHEDB_REDISHOST 511 -#define VAR_CACHEDB_REDISPORT 512 -#define VAR_CACHEDB_REDISTIMEOUT 513 -#define VAR_CACHEDB_REDISEXPIRERECORDS 514 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 515 -#define VAR_FOR_UPSTREAM 516 -#define VAR_AUTH_ZONE 517 -#define VAR_ZONEFILE 518 -#define VAR_MASTER 519 -#define VAR_URL 520 -#define VAR_FOR_DOWNSTREAM 521 -#define VAR_FALLBACK_ENABLED 522 -#define VAR_TLS_ADDITIONAL_PORT 523 -#define VAR_LOW_RTT 524 -#define VAR_LOW_RTT_PERMIL 525 -#define VAR_FAST_SERVER_PERMIL 526 -#define VAR_FAST_SERVER_NUM 527 -#define VAR_ALLOW_NOTIFY 528 -#define VAR_TLS_WIN_CERT 529 -#define VAR_TCP_CONNECTION_LIMIT 530 -#define VAR_FORWARD_NO_CACHE 531 -#define VAR_STUB_NO_CACHE 532 -#define VAR_LOG_SERVFAIL 533 -#define VAR_DENY_ANY 534 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 535 -#define VAR_LOG_TAG_QUERYREPLY 536 -#define VAR_STREAM_WAIT_SIZE 537 -#define VAR_TLS_CIPHERS 538 -#define VAR_TLS_CIPHERSUITES 539 -#define VAR_TLS_USE_SNI 540 -#define VAR_IPSET 541 -#define VAR_IPSET_NAME_V4 542 -#define VAR_IPSET_NAME_V6 543 -#define VAR_TLS_SESSION_TICKET_KEYS 544 -#define VAR_RPZ 545 -#define VAR_TAGS 546 -#define VAR_RPZ_ACTION_OVERRIDE 547 -#define VAR_RPZ_CNAME_OVERRIDE 548 -#define VAR_RPZ_LOG 549 -#define VAR_RPZ_LOG_NAME 550 -#define VAR_DYNLIB 551 -#define VAR_DYNLIB_FILE 552 -#define VAR_EDNS_CLIENT_TAG 553 -#define VAR_EDNS_CLIENT_TAG_OPCODE 554 +#define VAR_HTTP_NOTLS_DOWNSTREAM 403 +#define VAR_STUB_FIRST 404 +#define VAR_MINIMAL_RESPONSES 405 +#define VAR_RRSET_ROUNDROBIN 406 +#define VAR_MAX_UDP_SIZE 407 +#define VAR_DELAY_CLOSE 408 +#define VAR_UNBLOCK_LAN_ZONES 409 +#define VAR_INSECURE_LAN_ZONES 410 +#define VAR_INFRA_CACHE_MIN_RTT 411 +#define VAR_DNS64_PREFIX 412 +#define VAR_DNS64_SYNTHALL 413 +#define VAR_DNS64_IGNORE_AAAA 414 +#define VAR_DNSTAP 415 +#define VAR_DNSTAP_ENABLE 416 +#define VAR_DNSTAP_SOCKET_PATH 417 +#define VAR_DNSTAP_IP 418 +#define VAR_DNSTAP_TLS 419 +#define VAR_DNSTAP_TLS_SERVER_NAME 420 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 421 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 422 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 423 +#define VAR_DNSTAP_SEND_IDENTITY 424 +#define VAR_DNSTAP_SEND_VERSION 425 +#define VAR_DNSTAP_BIDIRECTIONAL 426 +#define VAR_DNSTAP_IDENTITY 427 +#define VAR_DNSTAP_VERSION 428 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 429 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 430 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 431 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 432 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 433 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 434 +#define VAR_RESPONSE_IP_TAG 435 +#define VAR_RESPONSE_IP 436 +#define VAR_RESPONSE_IP_DATA 437 +#define VAR_HARDEN_ALGO_DOWNGRADE 438 +#define VAR_IP_TRANSPARENT 439 +#define VAR_IP_DSCP 440 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 441 +#define VAR_IP_RATELIMIT 442 +#define VAR_IP_RATELIMIT_SLABS 443 +#define VAR_IP_RATELIMIT_SIZE 444 +#define VAR_RATELIMIT 445 +#define VAR_RATELIMIT_SLABS 446 +#define VAR_RATELIMIT_SIZE 447 +#define VAR_RATELIMIT_FOR_DOMAIN 448 +#define VAR_RATELIMIT_BELOW_DOMAIN 449 +#define VAR_IP_RATELIMIT_FACTOR 450 +#define VAR_RATELIMIT_FACTOR 451 +#define VAR_SEND_CLIENT_SUBNET 452 +#define VAR_CLIENT_SUBNET_ZONE 453 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 454 +#define VAR_CLIENT_SUBNET_OPCODE 455 +#define VAR_MAX_CLIENT_SUBNET_IPV4 456 +#define VAR_MAX_CLIENT_SUBNET_IPV6 457 +#define VAR_MIN_CLIENT_SUBNET_IPV4 458 +#define VAR_MIN_CLIENT_SUBNET_IPV6 459 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 460 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 461 +#define VAR_CAPS_WHITELIST 462 +#define VAR_CACHE_MAX_NEGATIVE_TTL 463 +#define VAR_PERMIT_SMALL_HOLDDOWN 464 +#define VAR_QNAME_MINIMISATION 465 +#define VAR_QNAME_MINIMISATION_STRICT 466 +#define VAR_IP_FREEBIND 467 +#define VAR_DEFINE_TAG 468 +#define VAR_LOCAL_ZONE_TAG 469 +#define VAR_ACCESS_CONTROL_TAG 470 +#define VAR_LOCAL_ZONE_OVERRIDE 471 +#define VAR_ACCESS_CONTROL_TAG_ACTION 472 +#define VAR_ACCESS_CONTROL_TAG_DATA 473 +#define VAR_VIEW 474 +#define VAR_ACCESS_CONTROL_VIEW 475 +#define VAR_VIEW_FIRST 476 +#define VAR_SERVE_EXPIRED 477 +#define VAR_SERVE_EXPIRED_TTL 478 +#define VAR_SERVE_EXPIRED_TTL_RESET 479 +#define VAR_SERVE_EXPIRED_REPLY_TTL 480 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 481 +#define VAR_FAKE_DSA 482 +#define VAR_FAKE_SHA1 483 +#define VAR_LOG_IDENTITY 484 +#define VAR_HIDE_TRUSTANCHOR 485 +#define VAR_TRUST_ANCHOR_SIGNALING 486 +#define VAR_AGGRESSIVE_NSEC 487 +#define VAR_USE_SYSTEMD 488 +#define VAR_SHM_ENABLE 489 +#define VAR_SHM_KEY 490 +#define VAR_ROOT_KEY_SENTINEL 491 +#define VAR_DNSCRYPT 492 +#define VAR_DNSCRYPT_ENABLE 493 +#define VAR_DNSCRYPT_PORT 494 +#define VAR_DNSCRYPT_PROVIDER 495 +#define VAR_DNSCRYPT_SECRET_KEY 496 +#define VAR_DNSCRYPT_PROVIDER_CERT 497 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 498 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 499 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 500 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 501 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 502 +#define VAR_IPSECMOD_ENABLED 503 +#define VAR_IPSECMOD_HOOK 504 +#define VAR_IPSECMOD_IGNORE_BOGUS 505 +#define VAR_IPSECMOD_MAX_TTL 506 +#define VAR_IPSECMOD_WHITELIST 507 +#define VAR_IPSECMOD_STRICT 508 +#define VAR_CACHEDB 509 +#define VAR_CACHEDB_BACKEND 510 +#define VAR_CACHEDB_SECRETSEED 511 +#define VAR_CACHEDB_REDISHOST 512 +#define VAR_CACHEDB_REDISPORT 513 +#define VAR_CACHEDB_REDISTIMEOUT 514 +#define VAR_CACHEDB_REDISEXPIRERECORDS 515 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 516 +#define VAR_FOR_UPSTREAM 517 +#define VAR_AUTH_ZONE 518 +#define VAR_ZONEFILE 519 +#define VAR_MASTER 520 +#define VAR_URL 521 +#define VAR_FOR_DOWNSTREAM 522 +#define VAR_FALLBACK_ENABLED 523 +#define VAR_TLS_ADDITIONAL_PORT 524 +#define VAR_LOW_RTT 525 +#define VAR_LOW_RTT_PERMIL 526 +#define VAR_FAST_SERVER_PERMIL 527 +#define VAR_FAST_SERVER_NUM 528 +#define VAR_ALLOW_NOTIFY 529 +#define VAR_TLS_WIN_CERT 530 +#define VAR_TCP_CONNECTION_LIMIT 531 +#define VAR_FORWARD_NO_CACHE 532 +#define VAR_STUB_NO_CACHE 533 +#define VAR_LOG_SERVFAIL 534 +#define VAR_DENY_ANY 535 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 536 +#define VAR_LOG_TAG_QUERYREPLY 537 +#define VAR_STREAM_WAIT_SIZE 538 +#define VAR_TLS_CIPHERS 539 +#define VAR_TLS_CIPHERSUITES 540 +#define VAR_TLS_USE_SNI 541 +#define VAR_IPSET 542 +#define VAR_IPSET_NAME_V4 543 +#define VAR_IPSET_NAME_V6 544 +#define VAR_TLS_SESSION_TICKET_KEYS 545 +#define VAR_RPZ 546 +#define VAR_TAGS 547 +#define VAR_RPZ_ACTION_OVERRIDE 548 +#define VAR_RPZ_CNAME_OVERRIDE 549 +#define VAR_RPZ_LOG 550 +#define VAR_RPZ_LOG_NAME 551 +#define VAR_DYNLIB 552 +#define VAR_DYNLIB_FILE 553 +#define VAR_EDNS_CLIENT_TAG 554 +#define VAR_EDNS_CLIENT_TAG_OPCODE 555 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -740,7 +742,7 @@ union YYSTYPE char* str; -#line 744 "util/configparser.c" +#line 746 "util/configparser.c" }; typedef union YYSTYPE YYSTYPE; @@ -990,19 +992,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 635 +#define YYLAST 637 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 300 +#define YYNTOKENS 301 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 325 +#define YYNNTS 326 /* YYNRULES -- Number of rules. */ -#define YYNRULES 626 +#define YYNRULES 628 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 930 +#define YYNSTATES 933 #define YYUNDEFTOK 2 -#define YYMAXUTOK 554 +#define YYMAXUTOK 555 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ @@ -1068,7 +1070,7 @@ static const yytype_uint16 yytranslate[] = 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299 + 295, 296, 297, 298, 299, 300 }; #if YYDEBUG @@ -1088,56 +1090,56 @@ static const yytype_uint16 yyrline[] = 239, 240, 240, 241, 241, 242, 242, 242, 243, 243, 244, 244, 244, 245, 245, 245, 246, 246, 246, 247, 247, 247, 247, 248, 249, 249, 249, 250, 250, 250, - 251, 251, 252, 253, 253, 253, 254, 254, 255, 255, - 256, 256, 256, 257, 257, 258, 258, 258, 259, 260, - 260, 261, 261, 262, 263, 263, 264, 264, 265, 265, - 266, 267, 267, 268, 268, 269, 269, 270, 270, 271, - 271, 272, 272, 272, 273, 273, 274, 274, 275, 275, - 276, 276, 277, 277, 278, 278, 279, 279, 279, 280, - 280, 280, 281, 281, 281, 282, 282, 283, 284, 284, - 285, 285, 286, 286, 287, 287, 288, 288, 288, 289, - 289, 289, 290, 290, 290, 291, 291, 292, 292, 293, - 293, 294, 294, 295, 297, 309, 310, 311, 311, 311, - 311, 311, 312, 312, 314, 326, 327, 328, 328, 328, - 328, 329, 329, 331, 345, 346, 347, 347, 347, 347, - 348, 348, 348, 350, 367, 368, 369, 369, 369, 369, - 370, 370, 370, 371, 374, 393, 410, 418, 428, 436, - 453, 454, 455, 455, 455, 455, 455, 456, 456, 456, - 457, 457, 459, 468, 477, 488, 497, 506, 515, 526, - 535, 547, 561, 576, 587, 604, 621, 638, 655, 670, - 685, 698, 713, 722, 731, 740, 749, 758, 767, 776, - 785, 794, 803, 812, 821, 830, 839, 852, 861, 874, - 883, 892, 901, 908, 915, 924, 931, 940, 948, 955, - 962, 970, 979, 987, 1003, 1011, 1019, 1027, 1035, 1044, - 1053, 1067, 1076, 1085, 1094, 1103, 1112, 1121, 1128, 1135, - 1161, 1169, 1176, 1183, 1190, 1197, 1205, 1213, 1221, 1228, - 1239, 1250, 1257, 1266, 1275, 1284, 1291, 1298, 1306, 1314, - 1324, 1334, 1344, 1358, 1366, 1379, 1390, 1398, 1411, 1420, - 1429, 1438, 1448, 1458, 1466, 1479, 1488, 1496, 1505, 1513, - 1526, 1535, 1542, 1552, 1562, 1572, 1582, 1592, 1602, 1612, - 1622, 1629, 1636, 1643, 1652, 1661, 1670, 1679, 1686, 1696, - 1716, 1723, 1741, 1754, 1767, 1776, 1785, 1794, 1803, 1813, - 1823, 1834, 1843, 1852, 1861, 1870, 1879, 1888, 1901, 1914, - 1923, 1930, 1939, 1948, 1957, 1966, 1974, 1987, 1995, 2036, - 2043, 2058, 2068, 2078, 2085, 2092, 2099, 2108, 2116, 2130, - 2151, 2172, 2184, 2196, 2208, 2217, 2238, 2248, 2257, 2265, - 2273, 2286, 2299, 2314, 2329, 2338, 2347, 2353, 2362, 2371, - 2381, 2391, 2404, 2417, 2429, 2443, 2455, 2469, 2484, 2495, - 2505, 2512, 2519, 2528, 2537, 2547, 2557, 2567, 2574, 2581, - 2590, 2599, 2609, 2619, 2626, 2633, 2640, 2648, 2658, 2668, - 2678, 2688, 2727, 2737, 2745, 2753, 2768, 2777, 2782, 2783, - 2784, 2784, 2784, 2785, 2785, 2785, 2786, 2786, 2788, 2798, - 2807, 2814, 2821, 2828, 2835, 2842, 2849, 2854, 2855, 2856, - 2856, 2856, 2857, 2857, 2857, 2858, 2859, 2859, 2860, 2860, - 2861, 2861, 2862, 2863, 2864, 2865, 2866, 2867, 2869, 2878, - 2888, 2895, 2902, 2911, 2918, 2925, 2932, 2939, 2948, 2957, - 2964, 2971, 2981, 2991, 3001, 3011, 3021, 3031, 3036, 3037, - 3038, 3040, 3046, 3051, 3052, 3053, 3055, 3061, 3071, 3078, - 3087, 3095, 3100, 3101, 3103, 3103, 3103, 3104, 3104, 3105, - 3106, 3107, 3108, 3109, 3111, 3121, 3130, 3137, 3146, 3153, - 3162, 3170, 3183, 3191, 3204, 3209, 3210, 3211, 3211, 3212, - 3212, 3212, 3213, 3215, 3227, 3239, 3251, 3266, 3279, 3292, - 3303, 3308, 3309, 3310, 3310, 3312, 3327 + 251, 251, 252, 252, 253, 253, 253, 254, 254, 255, + 255, 256, 256, 256, 257, 257, 258, 258, 258, 259, + 260, 260, 261, 261, 262, 263, 263, 264, 264, 265, + 265, 266, 267, 267, 268, 268, 269, 269, 270, 270, + 271, 271, 272, 272, 272, 273, 273, 274, 274, 275, + 275, 276, 276, 277, 277, 278, 278, 279, 279, 279, + 280, 280, 280, 281, 281, 281, 282, 282, 283, 284, + 284, 285, 285, 286, 286, 287, 287, 288, 288, 288, + 289, 289, 289, 290, 290, 290, 291, 291, 292, 292, + 293, 293, 294, 294, 295, 297, 309, 310, 311, 311, + 311, 311, 311, 312, 312, 314, 326, 327, 328, 328, + 328, 328, 329, 329, 331, 345, 346, 347, 347, 347, + 347, 348, 348, 348, 350, 367, 368, 369, 369, 369, + 369, 370, 370, 370, 371, 374, 393, 410, 418, 428, + 436, 453, 454, 455, 455, 455, 455, 455, 456, 456, + 456, 457, 457, 459, 468, 477, 488, 497, 506, 515, + 526, 535, 547, 561, 576, 587, 604, 621, 638, 655, + 670, 685, 698, 713, 722, 731, 740, 749, 758, 767, + 776, 785, 794, 803, 812, 821, 830, 839, 852, 861, + 874, 883, 892, 901, 908, 915, 924, 931, 940, 948, + 955, 962, 970, 979, 987, 1003, 1011, 1019, 1027, 1035, + 1043, 1052, 1061, 1075, 1084, 1093, 1102, 1111, 1120, 1129, + 1136, 1143, 1169, 1177, 1184, 1191, 1198, 1205, 1213, 1221, + 1229, 1236, 1247, 1258, 1265, 1274, 1283, 1292, 1299, 1306, + 1314, 1322, 1332, 1342, 1352, 1366, 1374, 1387, 1398, 1406, + 1419, 1428, 1437, 1446, 1456, 1466, 1474, 1487, 1496, 1504, + 1513, 1521, 1534, 1543, 1550, 1560, 1570, 1580, 1590, 1600, + 1610, 1620, 1630, 1637, 1644, 1651, 1660, 1669, 1678, 1687, + 1694, 1704, 1724, 1731, 1749, 1762, 1775, 1784, 1793, 1802, + 1811, 1821, 1831, 1842, 1851, 1860, 1869, 1878, 1887, 1896, + 1909, 1922, 1931, 1938, 1947, 1956, 1965, 1974, 1982, 1995, + 2003, 2044, 2051, 2066, 2076, 2086, 2093, 2100, 2107, 2116, + 2124, 2138, 2159, 2180, 2192, 2204, 2216, 2225, 2246, 2256, + 2265, 2273, 2281, 2294, 2307, 2322, 2337, 2346, 2355, 2361, + 2370, 2379, 2389, 2399, 2412, 2425, 2437, 2451, 2463, 2477, + 2492, 2503, 2513, 2520, 2527, 2536, 2545, 2555, 2565, 2575, + 2582, 2589, 2598, 2607, 2617, 2627, 2634, 2641, 2648, 2656, + 2666, 2676, 2686, 2696, 2735, 2745, 2753, 2761, 2776, 2785, + 2790, 2791, 2792, 2792, 2792, 2793, 2793, 2793, 2794, 2794, + 2796, 2806, 2815, 2822, 2829, 2836, 2843, 2850, 2857, 2862, + 2863, 2864, 2864, 2864, 2865, 2865, 2865, 2866, 2867, 2867, + 2868, 2868, 2869, 2869, 2870, 2871, 2872, 2873, 2874, 2875, + 2877, 2886, 2896, 2903, 2910, 2919, 2926, 2933, 2940, 2947, + 2956, 2965, 2972, 2979, 2989, 2999, 3009, 3019, 3029, 3039, + 3044, 3045, 3046, 3048, 3054, 3059, 3060, 3061, 3063, 3069, + 3079, 3086, 3095, 3103, 3108, 3109, 3111, 3111, 3111, 3112, + 3112, 3113, 3114, 3115, 3116, 3117, 3119, 3129, 3138, 3145, + 3154, 3161, 3170, 3178, 3191, 3199, 3212, 3217, 3218, 3219, + 3219, 3220, 3220, 3220, 3221, 3223, 3235, 3247, 3259, 3274, + 3287, 3300, 3311, 3316, 3317, 3318, 3318, 3320, 3335 }; #endif @@ -1194,9 +1196,9 @@ static const char *const yytname[] = "VAR_FORWARD_SSL_UPSTREAM", "VAR_TLS_CERT_BUNDLE", "VAR_HTTPS_PORT", "VAR_HTTP_ENDPOINT", "VAR_HTTP_MAX_STREAMS", "VAR_HTTP_QUERY_BUFFER_SIZE", "VAR_HTTP_RESPONSE_BUFFER_SIZE", - "VAR_HTTP_NODELAY", "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_HTTP_NODELAY", "VAR_HTTP_NOTLS_DOWNSTREAM", "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_DNS64_IGNORE_AAAA", "VAR_DNSTAP", "VAR_DNSTAP_ENABLE", "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_IP", "VAR_DNSTAP_TLS", @@ -1288,47 +1290,47 @@ static const char *const yytname[] = "server_tls_use_sni", "server_https_port", "server_http_endpoint", "server_http_max_streams", "server_http_query_buffer_size", "server_http_response_buffer_size", "server_http_nodelay", - "server_use_systemd", "server_do_daemonize", "server_use_syslog", - "server_log_time_ascii", "server_log_queries", "server_log_replies", - "server_log_tag_queryreply", "server_log_servfail", - "server_log_local_actions", "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", "server_trust_anchor", - "server_trust_anchor_signaling", "server_root_key_sentinel", - "server_domain_insecure", "server_hide_identity", "server_hide_version", - "server_hide_trustanchor", "server_identity", "server_version", - "server_so_rcvbuf", "server_so_sndbuf", "server_so_reuseport", - "server_ip_transparent", "server_ip_freebind", "server_ip_dscp", - "server_stream_wait_size", "server_edns_buffer_size", - "server_msg_buffer_size", "server_msg_cache_size", - "server_msg_cache_slabs", "server_num_queries_per_thread", - "server_jostle_timeout", "server_delay_close", - "server_unblock_lan_zones", "server_insecure_lan_zones", - "server_rrset_cache_size", "server_rrset_cache_slabs", - "server_infra_host_ttl", "server_infra_lame_ttl", - "server_infra_cache_numhosts", "server_infra_cache_lame_size", - "server_infra_cache_slabs", "server_infra_cache_min_rtt", - "server_target_fetch_policy", "server_harden_short_bufsize", - "server_harden_large_queries", "server_harden_glue", - "server_harden_dnssec_stripped", "server_harden_below_nxdomain", - "server_harden_referral_path", "server_harden_algo_downgrade", - "server_use_caps_for_id", "server_caps_whitelist", - "server_private_address", "server_private_domain", "server_prefetch", - "server_prefetch_key", "server_deny_any", - "server_unwanted_reply_threshold", "server_do_not_query_address", - "server_do_not_query_localhost", "server_access_control", - "server_module_conf", "server_val_override_date", - "server_val_sig_skew_min", "server_val_sig_skew_max", - "server_cache_max_ttl", "server_cache_max_negative_ttl", - "server_cache_min_ttl", "server_bogus_ttl", - "server_val_clean_additional", "server_val_permissive_mode", - "server_aggressive_nsec", "server_ignore_cd_flag", - "server_serve_expired", "server_serve_expired_ttl", - "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl", - "server_serve_expired_client_timeout", "server_fake_dsa", - "server_fake_sha1", "server_val_log_level", + "server_http_notls_downstream", "server_use_systemd", + "server_do_daemonize", "server_use_syslog", "server_log_time_ascii", + "server_log_queries", "server_log_replies", "server_log_tag_queryreply", + "server_log_servfail", "server_log_local_actions", "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", + "server_trust_anchor", "server_trust_anchor_signaling", + "server_root_key_sentinel", "server_domain_insecure", + "server_hide_identity", "server_hide_version", "server_hide_trustanchor", + "server_identity", "server_version", "server_so_rcvbuf", + "server_so_sndbuf", "server_so_reuseport", "server_ip_transparent", + "server_ip_freebind", "server_ip_dscp", "server_stream_wait_size", + "server_edns_buffer_size", "server_msg_buffer_size", + "server_msg_cache_size", "server_msg_cache_slabs", + "server_num_queries_per_thread", "server_jostle_timeout", + "server_delay_close", "server_unblock_lan_zones", + "server_insecure_lan_zones", "server_rrset_cache_size", + "server_rrset_cache_slabs", "server_infra_host_ttl", + "server_infra_lame_ttl", "server_infra_cache_numhosts", + "server_infra_cache_lame_size", "server_infra_cache_slabs", + "server_infra_cache_min_rtt", "server_target_fetch_policy", + "server_harden_short_bufsize", "server_harden_large_queries", + "server_harden_glue", "server_harden_dnssec_stripped", + "server_harden_below_nxdomain", "server_harden_referral_path", + "server_harden_algo_downgrade", "server_use_caps_for_id", + "server_caps_whitelist", "server_private_address", + "server_private_domain", "server_prefetch", "server_prefetch_key", + "server_deny_any", "server_unwanted_reply_threshold", + "server_do_not_query_address", "server_do_not_query_localhost", + "server_access_control", "server_module_conf", + "server_val_override_date", "server_val_sig_skew_min", + "server_val_sig_skew_max", "server_cache_max_ttl", + "server_cache_max_negative_ttl", "server_cache_min_ttl", + "server_bogus_ttl", "server_val_clean_additional", + "server_val_permissive_mode", "server_aggressive_nsec", + "server_ignore_cd_flag", "server_serve_expired", + "server_serve_expired_ttl", "server_serve_expired_ttl_reset", + "server_serve_expired_reply_ttl", "server_serve_expired_client_timeout", + "server_fake_dsa", "server_fake_sha1", "server_val_log_level", "server_val_nsec3_keysize_iterations", "server_add_holddown", "server_del_holddown", "server_keep_missing", "server_permit_small_holddown", "server_key_cache_size", @@ -1424,14 +1426,15 @@ static const yytype_uint16 yytoknum[] = 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554 + 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, + 555 }; # endif -#define YYPACT_NINF -288 +#define YYPACT_NINF -289 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-288))) + (!!((Yystate) == (-289))) #define YYTABLE_NINF -1 @@ -1442,99 +1445,100 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -288, 0, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, 284, -42, -38, -43, -21, -44, -11, -93, - -109, -287, -212, -237, -279, 3, 4, 13, 25, 26, + -289, 0, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, 285, -42, -38, -43, -21, -44, -11, -94, + -109, -288, -213, -238, -280, 3, 4, 13, 25, 26, 27, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 55, 84, 85, 88, 89, 91, 93, - 94, 95, 97, 98, 99, 100, 101, 103, 104, 105, + 94, 95, 96, 98, 99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 126, 127, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, + 148, 149, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 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, 212, 213, - 214, 215, 216, 217, 218, 220, 221, 222, 223, 224, - 227, 229, 231, 244, 245, 246, 247, 248, 249, 250, - 251, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 213, + 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, + 225, 228, 230, 232, 245, 246, 247, 248, 249, 250, + 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 277, 278, 279, 281, 282, 283, - 285, 319, 320, 321, 322, 326, 327, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - 328, 370, 371, 372, 373, 374, 375, -288, -288, -288, - -288, -288, -288, -288, -288, 376, 377, 378, 382, 386, - 387, -288, -288, -288, -288, -288, -288, -288, 412, 413, - 414, 422, 433, 434, 435, -288, -288, -288, -288, -288, - -288, -288, -288, 436, 437, 438, 439, 440, 441, 442, - 443, -288, -288, -288, -288, -288, -288, -288, -288, -288, - 444, 445, 446, 447, 448, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, 449, 450, 451, 452, - 492, 494, 510, 511, -288, -288, -288, -288, -288, -288, - -288, -288, -288, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 527, 528, 529, 530, 531, 532, 533, 535, - 536, 537, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, 538, -288, -288, 539, -288, -288, 540, 541, - 544, 547, 550, 551, 560, 561, 562, 564, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, 565, - 566, 567, 568, 569, 570, -288, -288, -288, -288, -288, - -288, -288, 571, 574, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, 575, 576, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - 577, 578, 579, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, 580, 581, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, 582, 583, 584, 585, 586, 587, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, 588, -288, -288, - -288, -288, -288, -288, -288, -288, -288, 589, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, 590, -288, -288, 591, 592, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, 593, 594, - 595, -288, -288, -288, -288, -288, -288, -288, -288, -288 + 272, 273, 274, 275, 276, 278, 279, 280, 282, 283, + 284, 286, 320, 321, 322, 323, 327, 328, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, 329, 371, 372, 373, 374, 375, 376, -289, + -289, -289, -289, -289, -289, -289, -289, 377, 378, 379, + 383, 387, 388, -289, -289, -289, -289, -289, -289, -289, + 413, 414, 415, 424, 435, 436, 437, -289, -289, -289, + -289, -289, -289, -289, -289, 438, 439, 440, 441, 442, + 443, 444, 445, -289, -289, -289, -289, -289, -289, -289, + -289, -289, 446, 447, 448, 449, 450, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, 451, 452, + 453, 454, 494, 496, 512, 513, -289, -289, -289, -289, + -289, -289, -289, -289, -289, 514, 515, 516, 517, 518, + 519, 520, 521, 522, 529, 530, 531, 532, 533, 534, + 535, 537, 538, 539, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, 540, -289, -289, 541, -289, -289, + 542, 543, 546, 549, 552, 553, 562, 563, 564, 566, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, 567, 568, 569, 570, 571, 572, -289, -289, -289, + -289, -289, -289, -289, 573, 576, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, 577, + 578, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, 579, 580, 581, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, 582, 583, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, 584, 585, 586, + 587, 588, 589, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + 590, -289, -289, -289, -289, -289, -289, -289, -289, -289, + 591, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, 592, -289, -289, 593, + 594, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, 595, 596, 597, -289, -289, -289, -289, -289, -289, + -289, -289, -289 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1542,10 +1546,10 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 1, 18, 19, 224, 234, 507, 567, 526, - 243, 581, 604, 253, 620, 269, 572, 3, 17, 21, - 226, 236, 245, 255, 271, 509, 528, 569, 574, 583, - 606, 622, 4, 5, 6, 10, 14, 15, 8, 9, + 2, 0, 1, 18, 19, 225, 235, 509, 569, 528, + 244, 583, 606, 254, 622, 270, 574, 3, 17, 21, + 227, 237, 246, 256, 272, 511, 530, 571, 576, 585, + 608, 624, 4, 5, 6, 10, 14, 15, 8, 9, 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1566,151 +1570,152 @@ static const yytype_uint16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 20, 22, 23, - 86, 89, 98, 192, 193, 24, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 37, 77, 25, 90, - 91, 48, 70, 85, 26, 27, 30, 31, 28, 29, - 32, 33, 34, 35, 36, 121, 204, 122, 124, 125, - 126, 206, 211, 207, 218, 219, 220, 221, 127, 128, - 129, 130, 131, 132, 188, 87, 76, 102, 119, 120, - 216, 213, 123, 38, 39, 40, 41, 42, 78, 92, - 93, 108, 64, 74, 65, 196, 197, 103, 58, 59, - 195, 60, 61, 112, 116, 136, 145, 171, 148, 217, - 113, 71, 43, 44, 45, 100, 137, 138, 139, 46, - 47, 49, 50, 52, 53, 51, 143, 54, 55, 56, - 62, 81, 117, 95, 144, 88, 167, 96, 97, 114, - 115, 214, 101, 57, 79, 82, 63, 66, 104, 105, - 80, 168, 106, 67, 68, 69, 205, 118, 181, 182, - 183, 184, 185, 186, 194, 107, 75, 109, 110, 111, - 169, 72, 73, 94, 83, 84, 99, 133, 134, 215, - 135, 140, 141, 142, 172, 173, 175, 177, 178, 176, - 179, 189, 146, 147, 151, 152, 149, 150, 153, 154, - 156, 155, 208, 210, 209, 170, 180, 198, 200, 199, - 201, 202, 203, 222, 223, 174, 187, 190, 191, 212, - 0, 0, 0, 0, 0, 0, 0, 225, 227, 228, - 229, 231, 232, 233, 230, 0, 0, 0, 0, 0, - 0, 235, 237, 238, 239, 240, 241, 242, 0, 0, - 0, 0, 0, 0, 0, 244, 246, 247, 250, 251, - 248, 252, 249, 0, 0, 0, 0, 0, 0, 0, - 0, 254, 256, 257, 258, 259, 263, 260, 261, 262, - 0, 0, 0, 0, 0, 274, 278, 279, 280, 281, - 270, 272, 273, 275, 276, 277, 0, 0, 0, 0, - 0, 0, 0, 0, 508, 510, 512, 511, 517, 513, - 514, 515, 516, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 20, 22, + 23, 86, 89, 98, 193, 194, 24, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 37, 77, 25, + 90, 91, 48, 70, 85, 26, 27, 30, 31, 28, + 29, 32, 33, 34, 35, 36, 121, 205, 122, 124, + 125, 126, 207, 212, 208, 219, 220, 221, 222, 127, + 128, 129, 130, 131, 132, 133, 189, 87, 76, 102, + 119, 120, 217, 214, 123, 38, 39, 40, 41, 42, + 78, 92, 93, 108, 64, 74, 65, 197, 198, 103, + 58, 59, 196, 60, 61, 112, 116, 137, 146, 172, + 149, 218, 113, 71, 43, 44, 45, 100, 138, 139, + 140, 46, 47, 49, 50, 52, 53, 51, 144, 54, + 55, 56, 62, 81, 117, 95, 145, 88, 168, 96, + 97, 114, 115, 215, 101, 57, 79, 82, 63, 66, + 104, 105, 80, 169, 106, 67, 68, 69, 206, 118, + 182, 183, 184, 185, 186, 187, 195, 107, 75, 109, + 110, 111, 170, 72, 73, 94, 83, 84, 99, 134, + 135, 216, 136, 141, 142, 143, 173, 174, 176, 178, + 179, 177, 180, 190, 147, 148, 152, 153, 150, 151, + 154, 155, 157, 156, 209, 211, 210, 171, 181, 199, + 201, 200, 202, 203, 204, 223, 224, 175, 188, 191, + 192, 213, 0, 0, 0, 0, 0, 0, 0, 226, + 228, 229, 230, 232, 233, 234, 231, 0, 0, 0, + 0, 0, 0, 236, 238, 239, 240, 241, 242, 243, + 0, 0, 0, 0, 0, 0, 0, 245, 247, 248, + 251, 252, 249, 253, 250, 0, 0, 0, 0, 0, + 0, 0, 0, 255, 257, 258, 259, 260, 264, 261, + 262, 263, 0, 0, 0, 0, 0, 275, 279, 280, + 281, 282, 271, 273, 274, 276, 277, 278, 0, 0, + 0, 0, 0, 0, 0, 0, 510, 512, 514, 513, + 519, 515, 516, 517, 518, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 527, 529, 531, 530, 532, 533, 534, 535, + 0, 0, 0, 0, 529, 531, 533, 532, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 0, 568, 570, 0, 573, 575, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 582, 584, - 585, 586, 588, 589, 587, 590, 591, 592, 593, 0, - 0, 0, 0, 0, 0, 605, 607, 608, 609, 610, - 611, 612, 0, 0, 621, 623, 624, 283, 282, 289, - 302, 300, 312, 308, 309, 313, 310, 311, 314, 315, - 316, 317, 318, 347, 348, 349, 350, 351, 376, 377, - 378, 383, 384, 305, 385, 386, 389, 387, 388, 391, - 392, 393, 407, 362, 363, 365, 366, 394, 410, 356, - 358, 411, 417, 418, 419, 306, 375, 435, 436, 357, - 430, 340, 301, 352, 408, 414, 395, 0, 0, 439, - 307, 284, 339, 399, 285, 303, 304, 353, 354, 437, - 397, 401, 402, 286, 440, 379, 406, 341, 361, 412, - 413, 416, 429, 355, 433, 431, 432, 367, 374, 403, - 404, 368, 369, 396, 421, 342, 343, 346, 319, 321, - 322, 323, 324, 325, 332, 333, 334, 335, 336, 337, - 441, 442, 444, 380, 381, 382, 390, 445, 446, 447, - 0, 0, 0, 398, 370, 372, 577, 456, 460, 458, - 457, 461, 459, 0, 0, 464, 465, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 400, 415, 434, - 469, 470, 371, 448, 0, 0, 0, 0, 0, 0, - 422, 423, 424, 425, 426, 427, 428, 578, 364, 359, - 420, 338, 287, 288, 360, 471, 473, 472, 474, 475, - 476, 320, 327, 466, 468, 467, 326, 0, 345, 405, - 443, 344, 373, 328, 329, 331, 330, 0, 478, 479, - 480, 481, 485, 484, 482, 483, 486, 487, 488, 489, - 491, 490, 500, 0, 504, 505, 0, 0, 506, 492, - 498, 493, 494, 495, 497, 499, 496, 264, 265, 266, - 267, 268, 518, 520, 519, 522, 523, 524, 525, 521, - 548, 550, 551, 552, 553, 554, 555, 556, 557, 558, - 549, 559, 560, 561, 562, 563, 564, 565, 566, 571, - 576, 594, 595, 596, 599, 597, 598, 600, 601, 602, - 603, 613, 614, 615, 616, 617, 618, 625, 626, 409, - 438, 455, 579, 580, 462, 463, 449, 450, 0, 0, - 0, 454, 619, 477, 501, 502, 503, 453, 451, 452 + 546, 547, 548, 549, 0, 570, 572, 0, 575, 577, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 584, 586, 587, 588, 590, 591, 589, 592, 593, 594, + 595, 0, 0, 0, 0, 0, 0, 607, 609, 610, + 611, 612, 613, 614, 0, 0, 623, 625, 626, 284, + 283, 290, 303, 301, 313, 309, 310, 314, 311, 312, + 315, 316, 317, 318, 319, 349, 350, 351, 352, 353, + 378, 379, 380, 385, 386, 306, 387, 388, 391, 389, + 390, 393, 394, 395, 409, 364, 365, 367, 368, 396, + 412, 358, 360, 413, 419, 420, 421, 307, 377, 437, + 438, 359, 432, 342, 302, 354, 410, 416, 397, 0, + 0, 441, 308, 285, 341, 401, 286, 304, 305, 355, + 356, 439, 399, 403, 404, 287, 442, 381, 408, 343, + 363, 414, 415, 418, 431, 357, 435, 433, 434, 369, + 376, 405, 406, 370, 371, 398, 423, 344, 345, 348, + 320, 322, 323, 324, 325, 326, 333, 334, 335, 336, + 337, 338, 339, 443, 444, 446, 382, 383, 384, 392, + 447, 448, 449, 0, 0, 0, 400, 372, 374, 579, + 458, 462, 460, 459, 463, 461, 0, 0, 466, 467, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 402, 417, 436, 471, 472, 373, 450, 0, 0, 0, + 0, 0, 0, 424, 425, 426, 427, 428, 429, 430, + 580, 366, 361, 422, 340, 288, 289, 362, 473, 475, + 474, 476, 477, 478, 321, 328, 468, 470, 469, 327, + 0, 347, 407, 445, 346, 375, 329, 330, 332, 331, + 0, 480, 481, 482, 483, 487, 486, 484, 485, 488, + 489, 490, 491, 493, 492, 502, 0, 506, 507, 0, + 0, 508, 494, 500, 495, 496, 497, 499, 501, 498, + 265, 266, 267, 268, 269, 520, 522, 521, 524, 525, + 526, 527, 523, 550, 552, 553, 554, 555, 556, 557, + 558, 559, 560, 551, 561, 562, 563, 564, 565, 566, + 567, 568, 573, 578, 596, 597, 598, 601, 599, 600, + 602, 603, 604, 605, 615, 616, 617, 618, 619, 620, + 627, 628, 411, 440, 457, 581, 582, 464, 465, 451, + 452, 0, 0, 0, 456, 621, 479, 503, 504, 505, + 455, 453, 454 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, 572, 573, 596, - 597, 598, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288 + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, 574, 575, + 598, 599, 600, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 17, 18, 19, 32, 247, 20, 33, 457, - 21, 34, 471, 22, 35, 485, 23, 36, 501, 515, - 516, 517, 518, 519, 24, 37, 520, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 458, 459, 460, 461, 462, 463, - 464, 472, 473, 474, 475, 476, 477, 502, 503, 504, - 505, 506, 507, 508, 509, 486, 487, 488, 489, 490, - 491, 492, 25, 38, 534, 535, 536, 537, 538, 539, - 540, 541, 542, 26, 39, 562, 563, 564, 565, 566, - 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 581, 27, 40, 583, 584, 28, - 41, 586, 587, 445, 446, 447, 448, 29, 42, 598, - 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 30, 43, 615, 616, 617, 618, 619, 620, 621, 449, - 31, 44, 624, 625, 626 + -1, 1, 17, 18, 19, 32, 248, 20, 33, 459, + 21, 34, 473, 22, 35, 487, 23, 36, 503, 517, + 518, 519, 520, 521, 24, 37, 522, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 460, 461, 462, 463, 464, + 465, 466, 474, 475, 476, 477, 478, 479, 504, 505, + 506, 507, 508, 509, 510, 511, 488, 489, 490, 491, + 492, 493, 494, 25, 38, 536, 537, 538, 539, 540, + 541, 542, 543, 544, 26, 39, 564, 565, 566, 567, + 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 579, 580, 581, 582, 583, 27, 40, 585, 586, + 28, 41, 588, 589, 447, 448, 449, 450, 29, 42, + 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, + 610, 30, 43, 617, 618, 619, 620, 621, 622, 623, + 451, 31, 44, 626, 627, 628 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1718,149 +1723,149 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint16 yytable[] = { - 2, 493, 478, 450, 582, 451, 452, 465, 622, 623, - 585, 3, 4, 627, 628, 466, 467, 609, 610, 611, - 612, 613, 614, 629, 493, 588, 589, 590, 591, 592, - 593, 594, 595, 596, 597, 630, 631, 632, 479, 480, - 633, 634, 635, 636, 637, 638, 5, 639, 640, 641, - 642, 643, 6, 644, 645, 646, 647, 648, 649, 650, - 651, 652, 653, 481, 654, 655, 453, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 558, 559, 560, 561, 526, 527, 528, 529, - 530, 531, 532, 533, 656, 657, 7, 454, 658, 659, - 468, 660, 469, 661, 662, 663, 455, 664, 665, 666, - 667, 668, 8, 669, 670, 671, 672, 673, 674, 675, - 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, - 686, 687, 688, 689, 690, 691, 692, 482, 483, 693, - 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, - 704, 705, 706, 707, 708, 709, 710, 711, 712, 9, - 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, - 723, 724, 725, 726, 727, 728, 729, 484, 730, 731, - 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, - 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, - 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, - 762, 763, 764, 765, 766, 767, 768, 769, 10, 495, - 496, 497, 770, 771, 772, 773, 774, 775, 776, 500, - 777, 778, 779, 780, 781, 456, 11, 782, 470, 783, - 494, 784, 495, 496, 497, 498, 499, 510, 511, 512, - 513, 514, 500, 12, 785, 786, 787, 788, 789, 790, - 791, 792, 13, 793, 794, 795, 796, 797, 798, 799, - 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, - 810, 811, 812, 813, 814, 815, 14, 816, 817, 818, - 15, 819, 820, 821, 0, 822, 16, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 823, - 824, 825, 826, 77, 78, 79, 827, 828, 829, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 830, 831, 832, 833, 834, 835, 836, 837, 838, 121, - 122, 123, 839, 124, 125, 126, 840, 841, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 842, 843, 844, 151, 152, 153, 154, 155, - 156, 157, 845, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 846, 847, 848, 849, 850, 851, 852, - 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, - 863, 864, 865, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 866, 207, 867, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, - 878, 223, 224, 225, 226, 227, 228, 879, 880, 881, - 882, 883, 884, 885, 229, 886, 887, 888, 889, 890, - 891, 892, 230, 231, 893, 232, 233, 894, 234, 235, - 895, 896, 236, 237, 238, 239, 240, 241, 242, 243, - 897, 898, 899, 244, 900, 901, 902, 903, 904, 905, - 906, 907, 245, 246, 908, 909, 910, 911, 912, 913, - 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, - 924, 925, 926, 927, 928, 929, 0, 0, 0, 521, - 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 495, 480, 452, 584, 453, 454, 467, 624, 625, + 587, 3, 4, 629, 630, 468, 469, 611, 612, 613, + 614, 615, 616, 631, 495, 590, 591, 592, 593, 594, + 595, 596, 597, 598, 599, 632, 633, 634, 481, 482, + 635, 636, 637, 638, 639, 640, 5, 641, 642, 643, + 644, 645, 6, 646, 647, 648, 649, 650, 651, 652, + 653, 654, 655, 483, 656, 657, 455, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 558, 559, 560, 561, 562, 563, 528, 529, 530, 531, + 532, 533, 534, 535, 658, 659, 7, 456, 660, 661, + 470, 662, 471, 663, 664, 665, 666, 457, 667, 668, + 669, 670, 8, 671, 672, 673, 674, 675, 676, 677, + 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, + 688, 689, 690, 691, 692, 693, 694, 695, 484, 485, + 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, + 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, + 9, 716, 717, 718, 719, 720, 721, 722, 723, 724, + 725, 726, 727, 728, 729, 730, 731, 732, 486, 733, + 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, + 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, + 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, + 764, 765, 766, 767, 768, 769, 770, 771, 772, 10, + 497, 498, 499, 773, 774, 775, 776, 777, 778, 779, + 502, 780, 781, 782, 783, 784, 458, 11, 785, 472, + 786, 496, 787, 497, 498, 499, 500, 501, 512, 513, + 514, 515, 516, 502, 12, 788, 789, 790, 791, 792, + 793, 794, 795, 13, 796, 797, 798, 799, 800, 801, + 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, + 812, 813, 814, 815, 816, 817, 818, 14, 819, 820, + 821, 15, 822, 823, 824, 0, 825, 16, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 826, 827, 828, 829, 77, 78, 79, 830, 831, 832, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 833, 834, 835, 836, 837, 838, 839, 840, 841, + 121, 122, 123, 842, 124, 125, 126, 843, 844, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 845, 846, 847, 151, 152, 153, 154, + 155, 156, 157, 158, 848, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 849, 850, 851, 852, 853, + 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, + 864, 865, 866, 867, 868, 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, 869, 208, 870, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 871, 872, 873, 874, 875, 876, 877, 878, + 879, 880, 881, 224, 225, 226, 227, 228, 229, 882, + 883, 884, 885, 886, 887, 888, 230, 889, 890, 891, + 892, 893, 894, 895, 231, 232, 896, 233, 234, 897, + 235, 236, 898, 899, 237, 238, 239, 240, 241, 242, + 243, 244, 900, 901, 902, 245, 903, 904, 905, 906, + 907, 908, 909, 910, 246, 247, 911, 912, 913, 914, + 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, + 925, 926, 927, 928, 929, 930, 931, 932, 0, 0, + 0, 523, 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 523, 524, 525 + 0, 0, 0, 0, 0, 525, 526, 527 }; static const yytype_int16 yycheck[] = { - 0, 45, 45, 45, 113, 47, 48, 45, 287, 288, - 297, 11, 12, 10, 10, 53, 54, 254, 255, 256, - 257, 258, 259, 10, 45, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 10, 10, 10, 81, 82, + 0, 45, 45, 45, 113, 47, 48, 45, 288, 289, + 298, 11, 12, 10, 10, 53, 54, 255, 256, 257, + 258, 259, 260, 10, 45, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 10, 10, 10, 81, 82, 10, 10, 10, 10, 10, 10, 46, 10, 10, 10, 10, 10, 52, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 106, 10, 10, 108, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 97, 98, 99, 100, + 10, 10, 10, 106, 10, 10, 108, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 97, 98, 99, 100, 101, 102, 103, 104, 10, 10, 96, 139, 10, 10, - 138, 10, 140, 10, 10, 10, 148, 10, 10, 10, + 138, 10, 140, 10, 10, 10, 10, 149, 10, 10, 10, 10, 112, 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, 181, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 181, 182, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 159, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 220, 10, 10, + 160, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 221, 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, 218, 263, - 264, 265, 10, 10, 10, 10, 10, 10, 10, 273, - 10, 10, 10, 10, 10, 277, 236, 10, 276, 10, - 261, 10, 263, 264, 265, 266, 267, 291, 292, 293, - 294, 295, 273, 253, 10, 10, 10, 10, 10, 10, - 10, 10, 262, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 219, + 264, 265, 266, 10, 10, 10, 10, 10, 10, 10, + 274, 10, 10, 10, 10, 10, 278, 237, 10, 277, + 10, 262, 10, 264, 265, 266, 267, 268, 292, 293, + 294, 295, 296, 274, 254, 10, 10, 10, 10, 10, + 10, 10, 10, 263, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 286, 10, 10, 10, - 290, 10, 10, 10, -1, 10, 296, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 10, - 10, 10, 10, 49, 50, 51, 10, 10, 10, 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, 91, 92, 93, 94, 95, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 105, - 106, 107, 10, 109, 110, 111, 10, 10, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 10, 10, 10, 141, 142, 143, 144, 145, - 146, 147, 10, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 287, 10, 10, + 10, 291, 10, 10, 10, -1, 10, 297, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 10, 10, 10, 10, 49, 50, 51, 10, 10, 10, + 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, 91, 92, 93, 94, + 95, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 105, 106, 107, 10, 109, 110, 111, 10, 10, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 10, 10, 10, 141, 142, 143, 144, + 145, 146, 147, 148, 10, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 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, 10, 219, 10, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 10, 10, 10, 10, 10, 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, 10, 220, 10, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 248, 249, 250, 251, 252, 253, 10, + 10, 10, 10, 10, 10, 10, 261, 10, 10, 10, + 10, 10, 10, 10, 269, 270, 10, 272, 273, 10, + 275, 276, 10, 10, 279, 280, 281, 282, 283, 284, + 285, 286, 10, 10, 10, 290, 10, 10, 10, 10, + 10, 10, 10, 10, 299, 300, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 247, 248, 249, 250, 251, 252, 10, 10, 10, - 10, 10, 10, 10, 260, 10, 10, 10, 10, 10, - 10, 10, 268, 269, 10, 271, 272, 10, 274, 275, - 10, 10, 278, 279, 280, 281, 282, 283, 284, 285, - 10, 10, 10, 289, 10, 10, 10, 10, 10, 10, - 10, 10, 298, 299, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, -1, -1, -1, 37, - 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 10, 10, 10, 10, 10, 10, 10, 10, -1, -1, + -1, 37, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 37, 37, 37 + -1, -1, -1, -1, -1, 37, 37, 37 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 301, 0, 11, 12, 46, 52, 96, 112, 159, - 218, 236, 253, 262, 286, 290, 296, 302, 303, 304, - 307, 310, 313, 316, 324, 552, 563, 585, 589, 597, - 610, 620, 305, 308, 311, 314, 317, 325, 553, 564, - 586, 590, 598, 611, 621, 13, 14, 15, 16, 17, + 0, 302, 0, 11, 12, 46, 52, 96, 112, 160, + 219, 237, 254, 263, 287, 291, 297, 303, 304, 305, + 308, 311, 314, 317, 325, 554, 565, 587, 591, 599, + 612, 622, 306, 309, 312, 315, 318, 326, 555, 566, + 588, 592, 600, 613, 623, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, @@ -1871,16 +1876,16 @@ static const yytype_uint16 yystos[] = 95, 105, 106, 107, 109, 110, 111, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 141, 142, 143, 144, 145, 146, 147, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 179, 180, + 137, 141, 142, 143, 144, 145, 146, 147, 148, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 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, 219, 221, 222, + 211, 212, 213, 214, 215, 216, 217, 218, 220, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 247, 248, 249, 250, 251, 252, 260, - 268, 269, 271, 272, 274, 275, 278, 279, 280, 281, - 282, 283, 284, 285, 289, 298, 299, 306, 327, 328, + 233, 234, 235, 236, 248, 249, 250, 251, 252, 253, + 261, 269, 270, 272, 273, 275, 276, 279, 280, 281, + 282, 283, 284, 285, 286, 290, 299, 300, 307, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, @@ -1900,25 +1905,25 @@ static const yytype_uint16 yystos[] = 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 593, 594, 595, 596, 619, - 45, 47, 48, 108, 139, 148, 277, 309, 524, 525, - 526, 527, 528, 529, 530, 45, 53, 54, 138, 140, - 276, 312, 531, 532, 533, 534, 535, 536, 45, 81, - 82, 106, 180, 181, 220, 315, 545, 546, 547, 548, - 549, 550, 551, 45, 261, 263, 264, 265, 266, 267, - 273, 318, 537, 538, 539, 540, 541, 542, 543, 544, - 291, 292, 293, 294, 295, 319, 320, 321, 322, 323, - 326, 537, 538, 539, 540, 541, 97, 98, 99, 100, - 101, 102, 103, 104, 554, 555, 556, 557, 558, 559, - 560, 561, 562, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 565, 566, 567, 568, 569, 570, 571, 572, + 519, 520, 521, 522, 523, 524, 525, 595, 596, 597, + 598, 621, 45, 47, 48, 108, 139, 149, 278, 310, + 526, 527, 528, 529, 530, 531, 532, 45, 53, 54, + 138, 140, 277, 313, 533, 534, 535, 536, 537, 538, + 45, 81, 82, 106, 181, 182, 221, 316, 547, 548, + 549, 550, 551, 552, 553, 45, 262, 264, 265, 266, + 267, 268, 274, 319, 539, 540, 541, 542, 543, 544, + 545, 546, 292, 293, 294, 295, 296, 320, 321, 322, + 323, 324, 327, 539, 540, 541, 542, 543, 97, 98, + 99, 100, 101, 102, 103, 104, 556, 557, 558, 559, + 560, 561, 562, 563, 564, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 113, 587, 588, 297, 591, 592, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 599, 600, - 601, 602, 603, 604, 605, 606, 607, 608, 609, 254, - 255, 256, 257, 258, 259, 612, 613, 614, 615, 616, - 617, 618, 287, 288, 622, 623, 624, 10, 10, 10, + 583, 584, 585, 586, 113, 589, 590, 298, 593, 594, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, + 611, 255, 256, 257, 258, 259, 260, 614, 615, 616, + 617, 618, 619, 620, 288, 289, 624, 625, 626, 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, @@ -1948,41 +1953,42 @@ 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, 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, 300, 301, 301, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 303, 304, - 305, 305, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 307, 308, 308, 309, 309, 309, - 309, 309, 309, 309, 310, 311, 311, 312, 312, 312, - 312, 312, 312, 313, 314, 314, 315, 315, 315, 315, - 315, 315, 315, 316, 317, 317, 318, 318, 318, 318, - 318, 318, 318, 318, 319, 320, 321, 322, 323, 324, - 325, 325, 326, 326, 326, 326, 326, 326, 326, 326, - 326, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 0, 301, 302, 302, 303, 303, 303, 303, 303, 303, + 303, 303, 303, 303, 303, 303, 303, 303, 304, 305, + 306, 306, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 308, 309, 309, 310, 310, + 310, 310, 310, 310, 310, 311, 312, 312, 313, 313, + 313, 313, 313, 313, 314, 315, 315, 316, 316, 316, + 316, 316, 316, 316, 317, 318, 318, 319, 319, 319, + 319, 319, 319, 319, 319, 320, 321, 322, 323, 324, + 325, 326, 326, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, @@ -2004,19 +2010,19 @@ static const yytype_uint16 yyr1[] = 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 553, - 554, 554, 554, 554, 554, 554, 554, 554, 555, 556, - 557, 558, 559, 560, 561, 562, 563, 564, 564, 565, - 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, - 565, 565, 565, 565, 565, 565, 565, 565, 566, 567, + 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, + 555, 555, 556, 556, 556, 556, 556, 556, 556, 556, + 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, + 566, 567, 567, 567, 567, 567, 567, 567, 567, 567, + 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 586, - 587, 588, 589, 590, 590, 591, 592, 593, 594, 595, - 596, 597, 598, 598, 599, 599, 599, 599, 599, 599, - 599, 599, 599, 599, 600, 601, 602, 603, 604, 605, - 606, 607, 608, 609, 610, 611, 611, 612, 612, 612, - 612, 612, 612, 613, 614, 615, 616, 617, 618, 619, - 620, 621, 621, 622, 622, 623, 624 + 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, + 588, 588, 589, 590, 591, 592, 592, 593, 594, 595, + 596, 597, 598, 599, 600, 600, 601, 601, 601, 601, + 601, 601, 601, 601, 601, 601, 602, 603, 604, 605, + 606, 607, 608, 609, 610, 611, 612, 613, 613, 614, + 614, 614, 614, 614, 614, 615, 616, 617, 618, 619, + 620, 621, 622, 623, 623, 624, 624, 625, 626 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -2044,47 +2050,47 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, + 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 3, 3, 3, 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, - 3, 4, 4, 4, 3, 3, 2, 2, 2, 2, - 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 3, 3, 3, 2, 2, 2, 1, 2, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, - 1, 2, 1, 2, 0, 1, 2, 2, 2, 3, - 3, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, - 1, 2, 0, 1, 1, 2, 2 + 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, + 2, 0, 1, 2, 1, 2, 0, 1, 2, 2, + 2, 3, 3, 1, 2, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 2, 3, 1, 2, 0, 1, 1, 2, 2 }; @@ -2773,7 +2779,7 @@ yyreduce: { OUTYY(("\nP(force-toplevel)\n")); } -#line 2777 "util/configparser.c" +#line 2783 "util/configparser.c" break; case 19: @@ -2781,10 +2787,10 @@ yyreduce: { OUTYY(("\nP(server:)\n")); } -#line 2785 "util/configparser.c" +#line 2791 "util/configparser.c" break; - case 224: + case 225: #line 298 "./util/configparser.y" { struct config_stub* s; @@ -2796,10 +2802,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2800 "util/configparser.c" +#line 2806 "util/configparser.c" break; - case 234: + case 235: #line 315 "./util/configparser.y" { struct config_stub* s; @@ -2811,10 +2817,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2815 "util/configparser.c" +#line 2821 "util/configparser.c" break; - case 243: + case 244: #line 332 "./util/configparser.y" { struct config_view* s; @@ -2828,10 +2834,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2832 "util/configparser.c" +#line 2838 "util/configparser.c" break; - case 253: + case 254: #line 351 "./util/configparser.y" { struct config_auth* s; @@ -2848,10 +2854,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2852 "util/configparser.c" +#line 2858 "util/configparser.c" break; - case 264: + case 265: #line 375 "./util/configparser.y" { uint8_t* bitlist; @@ -2869,10 +2875,10 @@ yyreduce: } } -#line 2873 "util/configparser.c" +#line 2879 "util/configparser.c" break; - case 265: + case 266: #line 394 "./util/configparser.y" { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); @@ -2888,20 +2894,20 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2892 "util/configparser.c" +#line 2898 "util/configparser.c" break; - case 266: + case 267: #line 411 "./util/configparser.y" { OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_cname); cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); } -#line 2902 "util/configparser.c" +#line 2908 "util/configparser.c" break; - case 267: + case 268: #line 419 "./util/configparser.y" { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); @@ -2910,20 +2916,20 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2914 "util/configparser.c" +#line 2920 "util/configparser.c" break; - case 268: + case 269: #line 429 "./util/configparser.y" { OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_log_name); cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); } -#line 2924 "util/configparser.c" +#line 2930 "util/configparser.c" break; - case 269: + case 270: #line 437 "./util/configparser.y" { struct config_auth* s; @@ -2940,10 +2946,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2944 "util/configparser.c" +#line 2950 "util/configparser.c" break; - case 282: + case 283: #line 460 "./util/configparser.y" { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); @@ -2952,10 +2958,10 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2956 "util/configparser.c" +#line 2962 "util/configparser.c" break; - case 283: + case 284: #line 469 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); @@ -2964,10 +2970,10 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2968 "util/configparser.c" +#line 2974 "util/configparser.c" break; - case 284: + case 285: #line 478 "./util/configparser.y" { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); @@ -2978,10 +2984,10 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2982 "util/configparser.c" +#line 2988 "util/configparser.c" break; - case 285: + case 286: #line 489 "./util/configparser.y" { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); @@ -2990,10 +2996,10 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2994 "util/configparser.c" +#line 3000 "util/configparser.c" break; - case 286: + case 287: #line 498 "./util/configparser.y" { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); @@ -3002,10 +3008,10 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3006 "util/configparser.c" +#line 3012 "util/configparser.c" break; - case 287: + case 288: #line 507 "./util/configparser.y" { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); @@ -3014,10 +3020,10 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3018 "util/configparser.c" +#line 3024 "util/configparser.c" break; - case 288: + case 289: #line 516 "./util/configparser.y" { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); @@ -3028,10 +3034,10 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3032 "util/configparser.c" +#line 3038 "util/configparser.c" break; - case 289: + case 290: #line 527 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); @@ -3040,10 +3046,10 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3044 "util/configparser.c" +#line 3050 "util/configparser.c" break; - case 290: + case 291: #line 536 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3055,10 +3061,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3059 "util/configparser.c" +#line 3065 "util/configparser.c" break; - case 291: + case 292: #line 548 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3071,10 +3077,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3075 "util/configparser.c" +#line 3081 "util/configparser.c" break; - case 292: + case 293: #line 562 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3089,10 +3095,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3093 "util/configparser.c" +#line 3099 "util/configparser.c" break; - case 293: + case 294: #line 577 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3103,10 +3109,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3107 "util/configparser.c" +#line 3113 "util/configparser.c" break; - case 294: + case 295: #line 588 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3123,10 +3129,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3127 "util/configparser.c" +#line 3133 "util/configparser.c" break; - case 295: + case 296: #line 605 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3143,10 +3149,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3147 "util/configparser.c" +#line 3153 "util/configparser.c" break; - case 296: + case 297: #line 622 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3163,10 +3169,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3167 "util/configparser.c" +#line 3173 "util/configparser.c" break; - case 297: + case 298: #line 639 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3183,10 +3189,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3187 "util/configparser.c" +#line 3193 "util/configparser.c" break; - case 298: + case 299: #line 656 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3201,10 +3207,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3205 "util/configparser.c" +#line 3211 "util/configparser.c" break; - case 299: + case 300: #line 671 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3219,10 +3225,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3223 "util/configparser.c" +#line 3229 "util/configparser.c" break; - case 300: + case 301: #line 686 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); @@ -3235,10 +3241,10 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3239 "util/configparser.c" +#line 3245 "util/configparser.c" break; - case 301: + case 302: #line 699 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); @@ -3253,10 +3259,10 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3257 "util/configparser.c" +#line 3263 "util/configparser.c" break; - case 302: + case 303: #line 714 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); @@ -3265,10 +3271,10 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3269 "util/configparser.c" +#line 3275 "util/configparser.c" break; - case 303: + case 304: #line 723 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); @@ -3277,10 +3283,10 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3281 "util/configparser.c" +#line 3287 "util/configparser.c" break; - case 304: + case 305: #line 732 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); @@ -3289,10 +3295,10 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3293 "util/configparser.c" +#line 3299 "util/configparser.c" break; - case 305: + case 306: #line 741 "./util/configparser.y" { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); @@ -3301,10 +3307,10 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3305 "util/configparser.c" +#line 3311 "util/configparser.c" break; - case 306: + case 307: #line 750 "./util/configparser.y" { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); @@ -3313,10 +3319,10 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3317 "util/configparser.c" +#line 3323 "util/configparser.c" break; - case 307: + case 308: #line 759 "./util/configparser.y" { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); @@ -3325,10 +3331,10 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3329 "util/configparser.c" +#line 3335 "util/configparser.c" break; - case 308: + case 309: #line 768 "./util/configparser.y" { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); @@ -3337,10 +3343,10 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3341 "util/configparser.c" +#line 3347 "util/configparser.c" break; - case 309: + case 310: #line 777 "./util/configparser.y" { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); @@ -3349,10 +3355,10 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3353 "util/configparser.c" +#line 3359 "util/configparser.c" break; - case 310: + case 311: #line 786 "./util/configparser.y" { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); @@ -3361,10 +3367,10 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3365 "util/configparser.c" +#line 3371 "util/configparser.c" break; - case 311: + case 312: #line 795 "./util/configparser.y" { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); @@ -3373,10 +3379,10 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3377 "util/configparser.c" +#line 3383 "util/configparser.c" break; - case 312: + case 313: #line 804 "./util/configparser.y" { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); @@ -3385,10 +3391,10 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3389 "util/configparser.c" +#line 3395 "util/configparser.c" break; - case 313: + case 314: #line 813 "./util/configparser.y" { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); @@ -3397,10 +3403,10 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3401 "util/configparser.c" +#line 3407 "util/configparser.c" break; - case 314: + case 315: #line 822 "./util/configparser.y" { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); @@ -3409,10 +3415,10 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3413 "util/configparser.c" +#line 3419 "util/configparser.c" break; - case 315: + case 316: #line 831 "./util/configparser.y" { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); @@ -3421,10 +3427,10 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3425 "util/configparser.c" +#line 3431 "util/configparser.c" break; - case 316: + case 317: #line 840 "./util/configparser.y" { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); @@ -3437,10 +3443,10 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3441 "util/configparser.c" +#line 3447 "util/configparser.c" break; - case 317: + case 318: #line 853 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); @@ -3449,10 +3455,10 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3453 "util/configparser.c" +#line 3459 "util/configparser.c" break; - case 318: + case 319: #line 862 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); @@ -3465,10 +3471,10 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3469 "util/configparser.c" +#line 3475 "util/configparser.c" break; - case 319: + case 320: #line 875 "./util/configparser.y" { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); @@ -3477,10 +3483,10 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3481 "util/configparser.c" +#line 3487 "util/configparser.c" break; - case 320: + case 321: #line 884 "./util/configparser.y" { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); @@ -3489,10 +3495,10 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3493 "util/configparser.c" +#line 3499 "util/configparser.c" break; - case 321: + case 322: #line 893 "./util/configparser.y" { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); @@ -3501,30 +3507,30 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3505 "util/configparser.c" +#line 3511 "util/configparser.c" break; - case 322: + case 323: #line 902 "./util/configparser.y" { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 3515 "util/configparser.c" +#line 3521 "util/configparser.c" break; - case 323: + case 324: #line 909 "./util/configparser.y" { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 3525 "util/configparser.c" +#line 3531 "util/configparser.c" break; - case 324: + case 325: #line 916 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); @@ -3533,20 +3539,20 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3537 "util/configparser.c" +#line 3543 "util/configparser.c" break; - case 325: + case 326: #line 925 "./util/configparser.y" { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 3547 "util/configparser.c" +#line 3553 "util/configparser.c" break; - case 326: + case 327: #line 932 "./util/configparser.y" { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); @@ -3555,10 +3561,10 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3559 "util/configparser.c" +#line 3565 "util/configparser.c" break; - case 327: + case 328: #line 941 "./util/configparser.y" { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); @@ -3566,30 +3572,30 @@ yyreduce: (yyvsp[0].str))) yyerror("out of memory"); } -#line 3570 "util/configparser.c" +#line 3576 "util/configparser.c" break; - case 328: + case 329: #line 949 "./util/configparser.y" { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 3580 "util/configparser.c" +#line 3586 "util/configparser.c" break; - case 329: + case 330: #line 956 "./util/configparser.y" { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 3590 "util/configparser.c" +#line 3596 "util/configparser.c" break; - case 330: + case 331: #line 963 "./util/configparser.y" { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); @@ -3597,10 +3603,10 @@ yyreduce: (yyvsp[0].str))) yyerror("out of memory"); } -#line 3601 "util/configparser.c" +#line 3607 "util/configparser.c" break; - case 331: + case 332: #line 971 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); @@ -3609,10 +3615,10 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3613 "util/configparser.c" +#line 3619 "util/configparser.c" break; - case 332: + case 333: #line 980 "./util/configparser.y" { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); @@ -3621,10 +3627,10 @@ yyreduce: else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3625 "util/configparser.c" +#line 3631 "util/configparser.c" break; - case 333: + case 334: #line 988 "./util/configparser.y" { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); @@ -3641,10 +3647,10 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 3645 "util/configparser.c" +#line 3651 "util/configparser.c" break; - case 334: + case 335: #line 1004 "./util/configparser.y" { OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); @@ -3653,10 +3659,10 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3657 "util/configparser.c" +#line 3663 "util/configparser.c" break; - case 335: + case 336: #line 1012 "./util/configparser.y" { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); @@ -3665,10 +3671,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3669 "util/configparser.c" +#line 3675 "util/configparser.c" break; - case 336: + case 337: #line 1020 "./util/configparser.y" { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); @@ -3677,10 +3683,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3681 "util/configparser.c" +#line 3687 "util/configparser.c" break; - case 337: + case 338: #line 1028 "./util/configparser.y" { OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); @@ -3689,11 +3695,23 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3693 "util/configparser.c" +#line 3699 "util/configparser.c" break; - case 338: + case 339: #line 1036 "./util/configparser.y" + { + OUTYY(("P(server_http_notls_downstream:%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->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 3711 "util/configparser.c" + break; + + case 340: +#line 1044 "./util/configparser.y" { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3701,11 +3719,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3705 "util/configparser.c" +#line 3723 "util/configparser.c" break; - case 339: -#line 1045 "./util/configparser.y" + case 341: +#line 1053 "./util/configparser.y" { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3713,11 +3731,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3717 "util/configparser.c" +#line 3735 "util/configparser.c" break; - case 340: -#line 1054 "./util/configparser.y" + case 342: +#line 1062 "./util/configparser.y" { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3730,11 +3748,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3734 "util/configparser.c" +#line 3752 "util/configparser.c" break; - case 341: -#line 1068 "./util/configparser.y" + case 343: +#line 1076 "./util/configparser.y" { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3742,11 +3760,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3746 "util/configparser.c" +#line 3764 "util/configparser.c" break; - case 342: -#line 1077 "./util/configparser.y" + case 344: +#line 1085 "./util/configparser.y" { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3754,11 +3772,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3758 "util/configparser.c" +#line 3776 "util/configparser.c" break; - case 343: -#line 1086 "./util/configparser.y" + case 345: +#line 1094 "./util/configparser.y" { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3766,11 +3784,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3770 "util/configparser.c" +#line 3788 "util/configparser.c" break; - case 344: -#line 1095 "./util/configparser.y" + case 346: +#line 1103 "./util/configparser.y" { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3778,11 +3796,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3782 "util/configparser.c" +#line 3800 "util/configparser.c" break; - case 345: -#line 1104 "./util/configparser.y" + case 347: +#line 1112 "./util/configparser.y" { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3790,11 +3808,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3794 "util/configparser.c" +#line 3812 "util/configparser.c" break; - case 346: -#line 1113 "./util/configparser.y" + case 348: +#line 1121 "./util/configparser.y" { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3802,31 +3820,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3806 "util/configparser.c" +#line 3824 "util/configparser.c" break; - case 347: -#line 1122 "./util/configparser.y" + case 349: +#line 1130 "./util/configparser.y" { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 3816 "util/configparser.c" +#line 3834 "util/configparser.c" break; - case 348: -#line 1129 "./util/configparser.y" + case 350: +#line 1137 "./util/configparser.y" { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 3826 "util/configparser.c" +#line 3844 "util/configparser.c" break; - case 349: -#line 1136 "./util/configparser.y" + case 351: +#line 1144 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3851,105 +3869,105 @@ yyreduce: } } } -#line 3855 "util/configparser.c" +#line 3873 "util/configparser.c" break; - case 350: -#line 1162 "./util/configparser.y" + case 352: +#line 1170 "./util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->logfile); cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 3866 "util/configparser.c" +#line 3884 "util/configparser.c" break; - case 351: -#line 1170 "./util/configparser.y" + case 353: +#line 1178 "./util/configparser.y" { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 3876 "util/configparser.c" +#line 3894 "util/configparser.c" break; - case 352: -#line 1177 "./util/configparser.y" + case 354: +#line 1185 "./util/configparser.y" { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3886 "util/configparser.c" +#line 3904 "util/configparser.c" break; - case 353: -#line 1184 "./util/configparser.y" + case 355: +#line 1192 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 3896 "util/configparser.c" +#line 3914 "util/configparser.c" break; - case 354: -#line 1191 "./util/configparser.y" + case 356: +#line 1199 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 3906 "util/configparser.c" +#line 3924 "util/configparser.c" break; - case 355: -#line 1198 "./util/configparser.y" + case 357: +#line 1206 "./util/configparser.y" { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3917 "util/configparser.c" +#line 3935 "util/configparser.c" break; - case 356: -#line 1206 "./util/configparser.y" + case 358: +#line 1214 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3928 "util/configparser.c" +#line 3946 "util/configparser.c" break; - case 357: -#line 1214 "./util/configparser.y" + case 359: +#line 1222 "./util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3939 "util/configparser.c" +#line 3957 "util/configparser.c" break; - case 358: -#line 1222 "./util/configparser.y" + case 360: +#line 1230 "./util/configparser.y" { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3949 "util/configparser.c" +#line 3967 "util/configparser.c" break; - case 359: -#line 1229 "./util/configparser.y" + case 361: +#line 1237 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3959,11 +3977,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3963 "util/configparser.c" +#line 3981 "util/configparser.c" break; - case 360: -#line 1240 "./util/configparser.y" + case 362: +#line 1248 "./util/configparser.y" { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3973,21 +3991,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3977 "util/configparser.c" +#line 3995 "util/configparser.c" break; - case 361: -#line 1251 "./util/configparser.y" + case 363: +#line 1259 "./util/configparser.y" { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3987 "util/configparser.c" +#line 4005 "util/configparser.c" break; - case 362: -#line 1258 "./util/configparser.y" + case 364: +#line 1266 "./util/configparser.y" { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3995,11 +4013,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3999 "util/configparser.c" +#line 4017 "util/configparser.c" break; - case 363: -#line 1267 "./util/configparser.y" + case 365: +#line 1275 "./util/configparser.y" { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4007,11 +4025,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4011 "util/configparser.c" +#line 4029 "util/configparser.c" break; - case 364: -#line 1276 "./util/configparser.y" + case 366: +#line 1284 "./util/configparser.y" { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4019,53 +4037,53 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4023 "util/configparser.c" +#line 4041 "util/configparser.c" break; - case 365: -#line 1285 "./util/configparser.y" + case 367: +#line 1293 "./util/configparser.y" { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 4033 "util/configparser.c" +#line 4051 "util/configparser.c" break; - case 366: -#line 1292 "./util/configparser.y" + case 368: +#line 1300 "./util/configparser.y" { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 4043 "util/configparser.c" +#line 4061 "util/configparser.c" break; - case 367: -#line 1299 "./util/configparser.y" + case 369: +#line 1307 "./util/configparser.y" { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4054 "util/configparser.c" +#line 4072 "util/configparser.c" break; - case 368: -#line 1307 "./util/configparser.y" + case 370: +#line 1315 "./util/configparser.y" { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4065 "util/configparser.c" +#line 4083 "util/configparser.c" break; - case 369: -#line 1315 "./util/configparser.y" + case 371: +#line 1323 "./util/configparser.y" { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4074,11 +4092,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4078 "util/configparser.c" +#line 4096 "util/configparser.c" break; - case 370: -#line 1325 "./util/configparser.y" + case 372: +#line 1333 "./util/configparser.y" { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4087,11 +4105,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4091 "util/configparser.c" +#line 4109 "util/configparser.c" break; - case 371: -#line 1335 "./util/configparser.y" + case 373: +#line 1343 "./util/configparser.y" { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4100,11 +4118,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4104 "util/configparser.c" +#line 4122 "util/configparser.c" break; - case 372: -#line 1345 "./util/configparser.y" + case 374: +#line 1353 "./util/configparser.y" { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4117,22 +4135,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4121 "util/configparser.c" +#line 4139 "util/configparser.c" break; - case 373: -#line 1359 "./util/configparser.y" + case 375: +#line 1367 "./util/configparser.y" { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4132 "util/configparser.c" +#line 4150 "util/configparser.c" break; - case 374: -#line 1367 "./util/configparser.y" + case 376: +#line 1375 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4144,11 +4162,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4148 "util/configparser.c" +#line 4166 "util/configparser.c" break; - case 375: -#line 1380 "./util/configparser.y" + case 377: +#line 1388 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4158,22 +4176,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4162 "util/configparser.c" +#line 4180 "util/configparser.c" break; - case 376: -#line 1391 "./util/configparser.y" + case 378: +#line 1399 "./util/configparser.y" { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4173 "util/configparser.c" +#line 4191 "util/configparser.c" break; - case 377: -#line 1399 "./util/configparser.y" + case 379: +#line 1407 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4185,11 +4203,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4189 "util/configparser.c" +#line 4207 "util/configparser.c" break; - case 378: -#line 1412 "./util/configparser.y" + case 380: +#line 1420 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4197,11 +4215,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4201 "util/configparser.c" +#line 4219 "util/configparser.c" break; - case 379: -#line 1421 "./util/configparser.y" + case 381: +#line 1429 "./util/configparser.y" { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4209,11 +4227,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4213 "util/configparser.c" +#line 4231 "util/configparser.c" break; - case 380: -#line 1430 "./util/configparser.y" + case 382: +#line 1438 "./util/configparser.y" { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4221,11 +4239,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4225 "util/configparser.c" +#line 4243 "util/configparser.c" break; - case 381: -#line 1439 "./util/configparser.y" + case 383: +#line 1447 "./util/configparser.y" { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4234,11 +4252,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4238 "util/configparser.c" +#line 4256 "util/configparser.c" break; - case 382: -#line 1449 "./util/configparser.y" + case 384: +#line 1457 "./util/configparser.y" { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4247,22 +4265,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4251 "util/configparser.c" +#line 4269 "util/configparser.c" break; - case 383: -#line 1459 "./util/configparser.y" + case 385: +#line 1467 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4262 "util/configparser.c" +#line 4280 "util/configparser.c" break; - case 384: -#line 1467 "./util/configparser.y" + case 386: +#line 1475 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4274,11 +4292,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4278 "util/configparser.c" +#line 4296 "util/configparser.c" break; - case 385: -#line 1480 "./util/configparser.y" + case 387: +#line 1488 "./util/configparser.y" { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4286,22 +4304,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4290 "util/configparser.c" +#line 4308 "util/configparser.c" break; - case 386: -#line 1489 "./util/configparser.y" + case 388: +#line 1497 "./util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4301 "util/configparser.c" +#line 4319 "util/configparser.c" break; - case 387: -#line 1497 "./util/configparser.y" + case 389: +#line 1505 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4309,22 +4327,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4313 "util/configparser.c" +#line 4331 "util/configparser.c" break; - case 388: -#line 1506 "./util/configparser.y" + case 390: +#line 1514 "./util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4324 "util/configparser.c" +#line 4342 "util/configparser.c" break; - case 389: -#line 1514 "./util/configparser.y" + case 391: +#line 1522 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4336,11 +4354,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4340 "util/configparser.c" +#line 4358 "util/configparser.c" break; - case 390: -#line 1527 "./util/configparser.y" + case 392: +#line 1535 "./util/configparser.y" { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4348,21 +4366,21 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4352 "util/configparser.c" +#line 4370 "util/configparser.c" break; - case 391: -#line 1536 "./util/configparser.y" + case 393: +#line 1544 "./util/configparser.y" { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 4362 "util/configparser.c" +#line 4380 "util/configparser.c" break; - case 392: -#line 1543 "./util/configparser.y" + case 394: +#line 1551 "./util/configparser.y" { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4371,11 +4389,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4375 "util/configparser.c" +#line 4393 "util/configparser.c" break; - case 393: -#line 1553 "./util/configparser.y" + case 395: +#line 1561 "./util/configparser.y" { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4384,11 +4402,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4388 "util/configparser.c" +#line 4406 "util/configparser.c" break; - case 394: -#line 1563 "./util/configparser.y" + case 396: +#line 1571 "./util/configparser.y" { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4397,11 +4415,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4401 "util/configparser.c" +#line 4419 "util/configparser.c" break; - case 395: -#line 1573 "./util/configparser.y" + case 397: +#line 1581 "./util/configparser.y" { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4410,11 +4428,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4414 "util/configparser.c" +#line 4432 "util/configparser.c" break; - case 396: -#line 1583 "./util/configparser.y" + case 398: +#line 1591 "./util/configparser.y" { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4423,11 +4441,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4427 "util/configparser.c" +#line 4445 "util/configparser.c" break; - case 397: -#line 1593 "./util/configparser.y" + case 399: +#line 1601 "./util/configparser.y" { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4436,11 +4454,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4440 "util/configparser.c" +#line 4458 "util/configparser.c" break; - case 398: -#line 1603 "./util/configparser.y" + case 400: +#line 1611 "./util/configparser.y" { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4449,11 +4467,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4453 "util/configparser.c" +#line 4471 "util/configparser.c" break; - case 399: -#line 1613 "./util/configparser.y" + case 401: +#line 1621 "./util/configparser.y" { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4462,41 +4480,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4466 "util/configparser.c" +#line 4484 "util/configparser.c" break; - case 400: -#line 1623 "./util/configparser.y" + case 402: +#line 1631 "./util/configparser.y" { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4476 "util/configparser.c" +#line 4494 "util/configparser.c" break; - case 401: -#line 1630 "./util/configparser.y" + case 403: +#line 1638 "./util/configparser.y" { OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4486 "util/configparser.c" +#line 4504 "util/configparser.c" break; - case 402: -#line 1637 "./util/configparser.y" + case 404: +#line 1645 "./util/configparser.y" { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4496 "util/configparser.c" +#line 4514 "util/configparser.c" break; - case 403: -#line 1644 "./util/configparser.y" + case 405: +#line 1652 "./util/configparser.y" { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4504,11 +4522,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4508 "util/configparser.c" +#line 4526 "util/configparser.c" break; - case 404: -#line 1653 "./util/configparser.y" + case 406: +#line 1661 "./util/configparser.y" { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4516,11 +4534,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4520 "util/configparser.c" +#line 4538 "util/configparser.c" break; - case 405: -#line 1662 "./util/configparser.y" + case 407: +#line 1670 "./util/configparser.y" { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4528,11 +4546,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4532 "util/configparser.c" +#line 4550 "util/configparser.c" break; - case 406: -#line 1671 "./util/configparser.y" + case 408: +#line 1679 "./util/configparser.y" { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4540,21 +4558,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4544 "util/configparser.c" +#line 4562 "util/configparser.c" break; - case 407: -#line 1680 "./util/configparser.y" + case 409: +#line 1688 "./util/configparser.y" { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4554 "util/configparser.c" +#line 4572 "util/configparser.c" break; - case 408: -#line 1687 "./util/configparser.y" + case 410: +#line 1695 "./util/configparser.y" { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4563,11 +4581,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4567 "util/configparser.c" +#line 4585 "util/configparser.c" break; - case 409: -#line 1697 "./util/configparser.y" + case 411: +#line 1705 "./util/configparser.y" { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && @@ -4586,21 +4604,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4590 "util/configparser.c" +#line 4608 "util/configparser.c" break; - case 410: -#line 1717 "./util/configparser.y" + case 412: +#line 1725 "./util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 4600 "util/configparser.c" +#line 4618 "util/configparser.c" break; - case 411: -#line 1724 "./util/configparser.y" + case 413: +#line 1732 "./util/configparser.y" { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4617,11 +4635,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4621 "util/configparser.c" +#line 4639 "util/configparser.c" break; - case 412: -#line 1742 "./util/configparser.y" + case 414: +#line 1750 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4633,11 +4651,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4637 "util/configparser.c" +#line 4655 "util/configparser.c" break; - case 413: -#line 1755 "./util/configparser.y" + case 415: +#line 1763 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4649,11 +4667,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4653 "util/configparser.c" +#line 4671 "util/configparser.c" break; - case 414: -#line 1768 "./util/configparser.y" + case 416: +#line 1776 "./util/configparser.y" { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4661,11 +4679,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4665 "util/configparser.c" +#line 4683 "util/configparser.c" break; - case 415: -#line 1777 "./util/configparser.y" + case 417: +#line 1785 "./util/configparser.y" { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4673,11 +4691,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4677 "util/configparser.c" +#line 4695 "util/configparser.c" break; - case 416: -#line 1786 "./util/configparser.y" + case 418: +#line 1794 "./util/configparser.y" { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4685,11 +4703,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4689 "util/configparser.c" +#line 4707 "util/configparser.c" break; - case 417: -#line 1795 "./util/configparser.y" + case 419: +#line 1803 "./util/configparser.y" { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4697,11 +4715,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4701 "util/configparser.c" +#line 4719 "util/configparser.c" break; - case 418: -#line 1804 "./util/configparser.y" + case 420: +#line 1812 "./util/configparser.y" { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4710,11 +4728,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4714 "util/configparser.c" +#line 4732 "util/configparser.c" break; - case 419: -#line 1814 "./util/configparser.y" + case 421: +#line 1822 "./util/configparser.y" { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4723,11 +4741,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4727 "util/configparser.c" +#line 4745 "util/configparser.c" break; - case 420: -#line 1824 "./util/configparser.y" + case 422: +#line 1832 "./util/configparser.y" { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4737,11 +4755,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4741 "util/configparser.c" +#line 4759 "util/configparser.c" break; - case 421: -#line 1835 "./util/configparser.y" + case 423: +#line 1843 "./util/configparser.y" { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4749,11 +4767,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4753 "util/configparser.c" +#line 4771 "util/configparser.c" break; - case 422: -#line 1844 "./util/configparser.y" + case 424: +#line 1852 "./util/configparser.y" { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4761,11 +4779,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4765 "util/configparser.c" +#line 4783 "util/configparser.c" break; - case 423: -#line 1853 "./util/configparser.y" + case 425: +#line 1861 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4773,11 +4791,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4777 "util/configparser.c" +#line 4795 "util/configparser.c" break; - case 424: -#line 1862 "./util/configparser.y" + case 426: +#line 1870 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4785,11 +4803,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4789 "util/configparser.c" +#line 4807 "util/configparser.c" break; - case 425: -#line 1871 "./util/configparser.y" + case 427: +#line 1879 "./util/configparser.y" { OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4797,11 +4815,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4801 "util/configparser.c" +#line 4819 "util/configparser.c" break; - case 426: -#line 1880 "./util/configparser.y" + case 428: +#line 1888 "./util/configparser.y" { OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4809,11 +4827,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4813 "util/configparser.c" +#line 4831 "util/configparser.c" break; - case 427: -#line 1889 "./util/configparser.y" + case 429: +#line 1897 "./util/configparser.y" { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4825,11 +4843,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4829 "util/configparser.c" +#line 4847 "util/configparser.c" break; - case 428: -#line 1902 "./util/configparser.y" + case 430: +#line 1910 "./util/configparser.y" { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4841,11 +4859,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4845 "util/configparser.c" +#line 4863 "util/configparser.c" break; - case 429: -#line 1915 "./util/configparser.y" + case 431: +#line 1923 "./util/configparser.y" { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4853,21 +4871,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4857 "util/configparser.c" +#line 4875 "util/configparser.c" break; - case 430: -#line 1924 "./util/configparser.y" + case 432: +#line 1932 "./util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 4867 "util/configparser.c" +#line 4885 "util/configparser.c" break; - case 431: -#line 1931 "./util/configparser.y" + case 433: +#line 1939 "./util/configparser.y" { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4875,11 +4893,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4879 "util/configparser.c" +#line 4897 "util/configparser.c" break; - case 432: -#line 1940 "./util/configparser.y" + case 434: +#line 1948 "./util/configparser.y" { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4887,11 +4905,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4891 "util/configparser.c" +#line 4909 "util/configparser.c" break; - case 433: -#line 1949 "./util/configparser.y" + case 435: +#line 1957 "./util/configparser.y" { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4899,11 +4917,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4903 "util/configparser.c" +#line 4921 "util/configparser.c" break; - case 434: -#line 1958 "./util/configparser.y" + case 436: +#line 1966 "./util/configparser.y" { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4912,22 +4930,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4916 "util/configparser.c" +#line 4934 "util/configparser.c" break; - case 435: -#line 1967 "./util/configparser.y" + case 437: +#line 1975 "./util/configparser.y" { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4927 "util/configparser.c" +#line 4945 "util/configparser.c" break; - case 436: -#line 1975 "./util/configparser.y" + case 438: +#line 1983 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4939,22 +4957,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4943 "util/configparser.c" +#line 4961 "util/configparser.c" break; - case 437: -#line 1988 "./util/configparser.y" + case 439: +#line 1996 "./util/configparser.y" { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4954 "util/configparser.c" +#line 4972 "util/configparser.c" break; - case 438: -#line 1996 "./util/configparser.y" + case 440: +#line 2004 "./util/configparser.y" { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -4994,21 +5012,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 4998 "util/configparser.c" +#line 5016 "util/configparser.c" break; - case 439: -#line 2037 "./util/configparser.y" + case 441: +#line 2045 "./util/configparser.y" { OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 5008 "util/configparser.c" +#line 5026 "util/configparser.c" break; - case 440: -#line 2044 "./util/configparser.y" + case 442: +#line 2052 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5022,11 +5040,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5026 "util/configparser.c" +#line 5044 "util/configparser.c" break; - case 441: -#line 2059 "./util/configparser.y" + case 443: +#line 2067 "./util/configparser.y" { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5035,11 +5053,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5039 "util/configparser.c" +#line 5057 "util/configparser.c" break; - case 442: -#line 2069 "./util/configparser.y" + case 444: +#line 2077 "./util/configparser.y" { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5048,41 +5066,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5052 "util/configparser.c" +#line 5070 "util/configparser.c" break; - case 443: -#line 2079 "./util/configparser.y" + case 445: +#line 2087 "./util/configparser.y" { OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5062 "util/configparser.c" +#line 5080 "util/configparser.c" break; - case 444: -#line 2086 "./util/configparser.y" + case 446: +#line 2094 "./util/configparser.y" { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5072 "util/configparser.c" +#line 5090 "util/configparser.c" break; - case 445: -#line 2093 "./util/configparser.y" + case 447: +#line 2101 "./util/configparser.y" { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 5082 "util/configparser.c" +#line 5100 "util/configparser.c" break; - case 446: -#line 2100 "./util/configparser.y" + case 448: +#line 2108 "./util/configparser.y" { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5090,22 +5108,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5094 "util/configparser.c" +#line 5112 "util/configparser.c" break; - case 447: -#line 2109 "./util/configparser.y" + case 449: +#line 2117 "./util/configparser.y" { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 5105 "util/configparser.c" +#line 5123 "util/configparser.c" break; - case 448: -#line 2117 "./util/configparser.y" + case 450: +#line 2125 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -5118,11 +5136,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5122 "util/configparser.c" +#line 5140 "util/configparser.c" break; - case 449: -#line 2131 "./util/configparser.y" + case 451: +#line 2139 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5142,11 +5160,11 @@ yyreduce: } } } -#line 5146 "util/configparser.c" +#line 5164 "util/configparser.c" break; - case 450: -#line 2152 "./util/configparser.y" + case 452: +#line 2160 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5166,11 +5184,11 @@ yyreduce: } } } -#line 5170 "util/configparser.c" +#line 5188 "util/configparser.c" break; - case 451: -#line 2173 "./util/configparser.y" + case 453: +#line 2181 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, @@ -5181,11 +5199,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5185 "util/configparser.c" +#line 5203 "util/configparser.c" break; - case 452: -#line 2185 "./util/configparser.y" + case 454: +#line 2193 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, @@ -5196,11 +5214,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5200 "util/configparser.c" +#line 5218 "util/configparser.c" break; - case 453: -#line 2197 "./util/configparser.y" + case 455: +#line 2205 "./util/configparser.y" { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, @@ -5211,11 +5229,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5215 "util/configparser.c" +#line 5233 "util/configparser.c" break; - case 454: -#line 2209 "./util/configparser.y" + case 456: +#line 2217 "./util/configparser.y" { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, @@ -5223,11 +5241,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5227 "util/configparser.c" +#line 5245 "util/configparser.c" break; - case 455: -#line 2218 "./util/configparser.y" + case 457: +#line 2226 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5247,11 +5265,11 @@ yyreduce: } } } -#line 5251 "util/configparser.c" +#line 5269 "util/configparser.c" break; - case 456: -#line 2239 "./util/configparser.y" + case 458: +#line 2247 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5259,11 +5277,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5263 "util/configparser.c" +#line 5281 "util/configparser.c" break; - case 457: -#line 2249 "./util/configparser.y" + case 459: +#line 2257 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5271,33 +5289,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5275 "util/configparser.c" +#line 5293 "util/configparser.c" break; - case 458: -#line 2258 "./util/configparser.y" + case 460: +#line 2266 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5286 "util/configparser.c" +#line 5304 "util/configparser.c" break; - case 459: -#line 2266 "./util/configparser.y" + case 461: +#line 2274 "./util/configparser.y" { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5297 "util/configparser.c" +#line 5315 "util/configparser.c" break; - case 460: -#line 2274 "./util/configparser.y" + case 462: +#line 2282 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5309,11 +5327,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5313 "util/configparser.c" +#line 5331 "util/configparser.c" break; - case 461: -#line 2287 "./util/configparser.y" + case 463: +#line 2295 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5325,11 +5343,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5329 "util/configparser.c" +#line 5347 "util/configparser.c" break; - case 462: -#line 2300 "./util/configparser.y" + case 464: +#line 2308 "./util/configparser.y" { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -5343,11 +5361,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5347 "util/configparser.c" +#line 5365 "util/configparser.c" break; - case 463: -#line 2315 "./util/configparser.y" + case 465: +#line 2323 "./util/configparser.y" { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -5361,11 +5379,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5365 "util/configparser.c" +#line 5383 "util/configparser.c" break; - case 464: -#line 2330 "./util/configparser.y" + case 466: +#line 2338 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5373,11 +5391,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5377 "util/configparser.c" +#line 5395 "util/configparser.c" break; - case 465: -#line 2339 "./util/configparser.y" + case 467: +#line 2347 "./util/configparser.y" { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5385,20 +5403,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5389 "util/configparser.c" +#line 5407 "util/configparser.c" break; - case 466: -#line 2348 "./util/configparser.y" + case 468: +#line 2356 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5398 "util/configparser.c" +#line 5416 "util/configparser.c" break; - case 467: -#line 2354 "./util/configparser.y" + case 469: +#line 2362 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5406,11 +5424,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5410 "util/configparser.c" +#line 5428 "util/configparser.c" break; - case 468: -#line 2363 "./util/configparser.y" + case 470: +#line 2371 "./util/configparser.y" { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5418,11 +5436,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5422 "util/configparser.c" +#line 5440 "util/configparser.c" break; - case 469: -#line 2372 "./util/configparser.y" + case 471: +#line 2380 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5431,11 +5449,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5435 "util/configparser.c" +#line 5453 "util/configparser.c" break; - case 470: -#line 2382 "./util/configparser.y" + case 472: +#line 2390 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5444,11 +5462,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5448 "util/configparser.c" +#line 5466 "util/configparser.c" break; - case 471: -#line 2392 "./util/configparser.y" + case 473: +#line 2400 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5460,11 +5478,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5464 "util/configparser.c" +#line 5482 "util/configparser.c" break; - case 472: -#line 2405 "./util/configparser.y" + case 474: +#line 2413 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5476,11 +5494,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5480 "util/configparser.c" +#line 5498 "util/configparser.c" break; - case 473: -#line 2418 "./util/configparser.y" + case 475: +#line 2426 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5491,11 +5509,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5495 "util/configparser.c" +#line 5513 "util/configparser.c" break; - case 474: -#line 2430 "./util/configparser.y" + case 476: +#line 2438 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5508,11 +5526,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5512 "util/configparser.c" +#line 5530 "util/configparser.c" break; - case 475: -#line 2444 "./util/configparser.y" + case 477: +#line 2452 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5523,11 +5541,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5527 "util/configparser.c" +#line 5545 "util/configparser.c" break; - case 476: -#line 2456 "./util/configparser.y" + case 478: +#line 2464 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5540,11 +5558,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5544 "util/configparser.c" +#line 5562 "util/configparser.c" break; - case 477: -#line 2470 "./util/configparser.y" + case 479: +#line 2478 "./util/configparser.y" { int tag_data; OUTYY(("P(server_edns_client_tag:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -5558,11 +5576,11 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-tag"); } -#line 5562 "util/configparser.c" +#line 5580 "util/configparser.c" break; - case 478: -#line 2485 "./util/configparser.y" + case 480: +#line 2493 "./util/configparser.y" { OUTYY(("P(edns_client_tag_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5572,11 +5590,11 @@ yyreduce: else cfg_parser->cfg->edns_client_tag_opcode = atoi((yyvsp[0].str)); } -#line 5576 "util/configparser.c" +#line 5594 "util/configparser.c" break; - case 479: -#line 2496 "./util/configparser.y" + case 481: +#line 2504 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5585,31 +5603,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5589 "util/configparser.c" +#line 5607 "util/configparser.c" break; - case 480: -#line 2506 "./util/configparser.y" + case 482: +#line 2514 "./util/configparser.y" { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5599 "util/configparser.c" +#line 5617 "util/configparser.c" break; - case 481: -#line 2513 "./util/configparser.y" + case 483: +#line 2521 "./util/configparser.y" { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5609 "util/configparser.c" +#line 5627 "util/configparser.c" break; - case 482: -#line 2520 "./util/configparser.y" + case 484: +#line 2528 "./util/configparser.y" { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5617,11 +5635,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5621 "util/configparser.c" +#line 5639 "util/configparser.c" break; - case 483: -#line 2529 "./util/configparser.y" + case 485: +#line 2537 "./util/configparser.y" { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5629,11 +5647,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5633 "util/configparser.c" +#line 5651 "util/configparser.c" break; - case 484: -#line 2538 "./util/configparser.y" + case 486: +#line 2546 "./util/configparser.y" { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5642,11 +5660,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5646 "util/configparser.c" +#line 5664 "util/configparser.c" break; - case 485: -#line 2548 "./util/configparser.y" + case 487: +#line 2556 "./util/configparser.y" { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5655,11 +5673,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5659 "util/configparser.c" +#line 5677 "util/configparser.c" break; - case 486: -#line 2558 "./util/configparser.y" + case 488: +#line 2566 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5668,31 +5686,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5672 "util/configparser.c" +#line 5690 "util/configparser.c" break; - case 487: -#line 2568 "./util/configparser.y" + case 489: +#line 2576 "./util/configparser.y" { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5682 "util/configparser.c" +#line 5700 "util/configparser.c" break; - case 488: -#line 2575 "./util/configparser.y" + case 490: +#line 2583 "./util/configparser.y" { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5692 "util/configparser.c" +#line 5710 "util/configparser.c" break; - case 489: -#line 2582 "./util/configparser.y" + case 491: +#line 2590 "./util/configparser.y" { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5700,11 +5718,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5704 "util/configparser.c" +#line 5722 "util/configparser.c" break; - case 490: -#line 2591 "./util/configparser.y" + case 492: +#line 2599 "./util/configparser.y" { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5712,11 +5730,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5716 "util/configparser.c" +#line 5734 "util/configparser.c" break; - case 491: -#line 2600 "./util/configparser.y" + case 493: +#line 2608 "./util/configparser.y" { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5725,11 +5743,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5729 "util/configparser.c" +#line 5747 "util/configparser.c" break; - case 492: -#line 2610 "./util/configparser.y" + case 494: +#line 2618 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5738,52 +5756,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5742 "util/configparser.c" +#line 5760 "util/configparser.c" break; - case 493: -#line 2620 "./util/configparser.y" + case 495: +#line 2628 "./util/configparser.y" { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 5752 "util/configparser.c" +#line 5770 "util/configparser.c" break; - case 494: -#line 2627 "./util/configparser.y" + case 496: +#line 2635 "./util/configparser.y" { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5762 "util/configparser.c" +#line 5780 "util/configparser.c" break; - case 495: -#line 2634 "./util/configparser.y" + case 497: +#line 2642 "./util/configparser.y" { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5772 "util/configparser.c" +#line 5790 "util/configparser.c" break; - case 496: -#line 2641 "./util/configparser.y" + case 498: +#line 2649 "./util/configparser.y" { OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5783 "util/configparser.c" +#line 5801 "util/configparser.c" break; - case 497: -#line 2649 "./util/configparser.y" + case 499: +#line 2657 "./util/configparser.y" { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5792,11 +5810,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5796 "util/configparser.c" +#line 5814 "util/configparser.c" break; - case 498: -#line 2659 "./util/configparser.y" + case 500: +#line 2667 "./util/configparser.y" { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5805,11 +5823,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5809 "util/configparser.c" +#line 5827 "util/configparser.c" break; - case 499: -#line 2669 "./util/configparser.y" + case 501: +#line 2677 "./util/configparser.y" { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5818,11 +5836,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5822 "util/configparser.c" +#line 5840 "util/configparser.c" break; - case 500: -#line 2679 "./util/configparser.y" + case 502: +#line 2687 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5831,11 +5849,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5835 "util/configparser.c" +#line 5853 "util/configparser.c" break; - case 501: -#line 2689 "./util/configparser.y" + case 503: +#line 2697 "./util/configparser.y" { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -5873,11 +5891,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5877 "util/configparser.c" +#line 5895 "util/configparser.c" break; - case 502: -#line 2728 "./util/configparser.y" + case 504: +#line 2736 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5886,33 +5904,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5890 "util/configparser.c" +#line 5908 "util/configparser.c" break; - case 503: -#line 2738 "./util/configparser.y" + case 505: +#line 2746 "./util/configparser.y" { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 5901 "util/configparser.c" +#line 5919 "util/configparser.c" break; - case 504: -#line 2746 "./util/configparser.y" + case 506: +#line 2754 "./util/configparser.y" { OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { fatal_exit("out of memory adding local-data"); } } -#line 5912 "util/configparser.c" +#line 5930 "util/configparser.c" break; - case 505: -#line 2754 "./util/configparser.y" + case 507: +#line 2762 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5926,11 +5944,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5930 "util/configparser.c" +#line 5948 "util/configparser.c" break; - case 506: -#line 2769 "./util/configparser.y" + case 508: +#line 2777 "./util/configparser.y" { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5938,19 +5956,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5942 "util/configparser.c" +#line 5960 "util/configparser.c" break; - case 507: -#line 2778 "./util/configparser.y" + case 509: +#line 2786 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 5950 "util/configparser.c" +#line 5968 "util/configparser.c" break; - case 518: -#line 2789 "./util/configparser.y" + case 520: +#line 2797 "./util/configparser.y" { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5959,11 +5977,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5963 "util/configparser.c" +#line 5981 "util/configparser.c" break; - case 519: -#line 2799 "./util/configparser.y" + case 521: +#line 2807 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5971,79 +5989,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5975 "util/configparser.c" +#line 5993 "util/configparser.c" break; - case 520: -#line 2808 "./util/configparser.y" + case 522: +#line 2816 "./util/configparser.y" { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5985 "util/configparser.c" +#line 6003 "util/configparser.c" break; - case 521: -#line 2815 "./util/configparser.y" + case 523: +#line 2823 "./util/configparser.y" { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5995 "util/configparser.c" +#line 6013 "util/configparser.c" break; - case 522: -#line 2822 "./util/configparser.y" + case 524: +#line 2830 "./util/configparser.y" { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 6005 "util/configparser.c" +#line 6023 "util/configparser.c" break; - case 523: -#line 2829 "./util/configparser.y" + case 525: +#line 2837 "./util/configparser.y" { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 6015 "util/configparser.c" +#line 6033 "util/configparser.c" break; - case 524: -#line 2836 "./util/configparser.y" + case 526: +#line 2844 "./util/configparser.y" { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 6025 "util/configparser.c" +#line 6043 "util/configparser.c" break; - case 525: -#line 2843 "./util/configparser.y" + case 527: +#line 2851 "./util/configparser.y" { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 6035 "util/configparser.c" +#line 6053 "util/configparser.c" break; - case 526: -#line 2850 "./util/configparser.y" + case 528: +#line 2858 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 6043 "util/configparser.c" +#line 6061 "util/configparser.c" break; - case 548: -#line 2870 "./util/configparser.y" + case 550: +#line 2878 "./util/configparser.y" { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6051,11 +6069,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6055 "util/configparser.c" +#line 6073 "util/configparser.c" break; - case 549: -#line 2879 "./util/configparser.y" + case 551: +#line 2887 "./util/configparser.y" { OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6064,31 +6082,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6068 "util/configparser.c" +#line 6086 "util/configparser.c" break; - case 550: -#line 2889 "./util/configparser.y" + case 552: +#line 2897 "./util/configparser.y" { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 6078 "util/configparser.c" +#line 6096 "util/configparser.c" break; - case 551: -#line 2896 "./util/configparser.y" + case 553: +#line 2904 "./util/configparser.y" { OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_ip); cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); } -#line 6088 "util/configparser.c" +#line 6106 "util/configparser.c" break; - case 552: -#line 2903 "./util/configparser.y" + case 554: +#line 2911 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6096,51 +6114,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6100 "util/configparser.c" +#line 6118 "util/configparser.c" break; - case 553: -#line 2912 "./util/configparser.y" + case 555: +#line 2920 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_server_name); cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); } -#line 6110 "util/configparser.c" +#line 6128 "util/configparser.c" break; - case 554: -#line 2919 "./util/configparser.y" + case 556: +#line 2927 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_cert_bundle); cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); } -#line 6120 "util/configparser.c" +#line 6138 "util/configparser.c" break; - case 555: -#line 2926 "./util/configparser.y" + case 557: +#line 2934 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_key_file); cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); } -#line 6130 "util/configparser.c" +#line 6148 "util/configparser.c" break; - case 556: -#line 2933 "./util/configparser.y" + case 558: +#line 2941 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_cert_file); cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); } -#line 6140 "util/configparser.c" +#line 6158 "util/configparser.c" break; - case 557: -#line 2940 "./util/configparser.y" + case 559: +#line 2948 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6148,11 +6166,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6152 "util/configparser.c" +#line 6170 "util/configparser.c" break; - case 558: -#line 2949 "./util/configparser.y" + case 560: +#line 2957 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6160,31 +6178,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6164 "util/configparser.c" +#line 6182 "util/configparser.c" break; - case 559: -#line 2958 "./util/configparser.y" + case 561: +#line 2966 "./util/configparser.y" { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 6174 "util/configparser.c" +#line 6192 "util/configparser.c" break; - case 560: -#line 2965 "./util/configparser.y" + case 562: +#line 2973 "./util/configparser.y" { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 6184 "util/configparser.c" +#line 6202 "util/configparser.c" break; - case 561: -#line 2972 "./util/configparser.y" + case 563: +#line 2980 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6193,11 +6211,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6197 "util/configparser.c" +#line 6215 "util/configparser.c" break; - case 562: -#line 2982 "./util/configparser.y" + case 564: +#line 2990 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6206,11 +6224,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6210 "util/configparser.c" +#line 6228 "util/configparser.c" break; - case 563: -#line 2992 "./util/configparser.y" + case 565: +#line 3000 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6219,11 +6237,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6223 "util/configparser.c" +#line 6241 "util/configparser.c" break; - case 564: -#line 3002 "./util/configparser.y" + case 566: +#line 3010 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6232,11 +6250,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6236 "util/configparser.c" +#line 6254 "util/configparser.c" break; - case 565: -#line 3012 "./util/configparser.y" + case 567: +#line 3020 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6245,11 +6263,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6249 "util/configparser.c" +#line 6267 "util/configparser.c" break; - case 566: -#line 3022 "./util/configparser.y" + case 568: +#line 3030 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6258,47 +6276,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6262 "util/configparser.c" +#line 6280 "util/configparser.c" break; - case 567: -#line 3032 "./util/configparser.y" + case 569: +#line 3040 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 6270 "util/configparser.c" +#line 6288 "util/configparser.c" break; - case 571: -#line 3041 "./util/configparser.y" + case 573: +#line 3049 "./util/configparser.y" { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6280 "util/configparser.c" +#line 6298 "util/configparser.c" break; - case 572: -#line 3047 "./util/configparser.y" + case 574: +#line 3055 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); } -#line 6288 "util/configparser.c" +#line 6306 "util/configparser.c" break; - case 576: -#line 3056 "./util/configparser.y" + case 578: +#line 3064 "./util/configparser.y" { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6298 "util/configparser.c" +#line 6316 "util/configparser.c" break; - case 577: -#line 3062 "./util/configparser.y" + case 579: +#line 3070 "./util/configparser.y" { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6307,21 +6325,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6311 "util/configparser.c" +#line 6329 "util/configparser.c" break; - case 578: -#line 3072 "./util/configparser.y" + case 580: +#line 3080 "./util/configparser.y" { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 6321 "util/configparser.c" +#line 6339 "util/configparser.c" break; - case 579: -#line 3079 "./util/configparser.y" + case 581: +#line 3087 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6329,30 +6347,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6333 "util/configparser.c" +#line 6351 "util/configparser.c" break; - case 580: -#line 3088 "./util/configparser.y" + case 582: +#line 3096 "./util/configparser.y" { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6344 "util/configparser.c" +#line 6362 "util/configparser.c" break; - case 581: -#line 3096 "./util/configparser.y" + case 583: +#line 3104 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6352 "util/configparser.c" +#line 6370 "util/configparser.c" break; - case 594: -#line 3112 "./util/configparser.y" + case 596: +#line 3120 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6360,11 +6378,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6364 "util/configparser.c" +#line 6382 "util/configparser.c" break; - case 595: -#line 3122 "./util/configparser.y" + case 597: +#line 3130 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6372,21 +6390,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6376 "util/configparser.c" +#line 6394 "util/configparser.c" break; - case 596: -#line 3131 "./util/configparser.y" + case 598: +#line 3139 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 6386 "util/configparser.c" +#line 6404 "util/configparser.c" break; - case 597: -#line 3138 "./util/configparser.y" + case 599: +#line 3146 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) @@ -6394,21 +6412,21 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 6398 "util/configparser.c" +#line 6416 "util/configparser.c" break; - case 598: -#line 3147 "./util/configparser.y" + case 600: +#line 3155 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 6408 "util/configparser.c" +#line 6426 "util/configparser.c" break; - case 599: -#line 3154 "./util/configparser.y" + case 601: +#line 3162 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) @@ -6416,22 +6434,22 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 6420 "util/configparser.c" +#line 6438 "util/configparser.c" break; - case 600: -#line 3163 "./util/configparser.y" + case 602: +#line 3171 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6431 "util/configparser.c" +#line 6449 "util/configparser.c" break; - case 601: -#line 3171 "./util/configparser.y" + case 603: +#line 3179 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6443,22 +6461,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6447 "util/configparser.c" +#line 6465 "util/configparser.c" break; - case 602: -#line 3184 "./util/configparser.y" + case 604: +#line 3192 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6458 "util/configparser.c" +#line 6476 "util/configparser.c" break; - case 603: -#line 3192 "./util/configparser.y" + case 605: +#line 3200 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6470,19 +6488,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6474 "util/configparser.c" +#line 6492 "util/configparser.c" break; - case 604: -#line 3205 "./util/configparser.y" + case 606: +#line 3213 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 6482 "util/configparser.c" +#line 6500 "util/configparser.c" break; - case 613: -#line 3216 "./util/configparser.y" + case 615: +#line 3224 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6493,11 +6511,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6497 "util/configparser.c" +#line 6515 "util/configparser.c" break; - case 614: -#line 3228 "./util/configparser.y" + case 616: +#line 3236 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6508,11 +6526,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6512 "util/configparser.c" +#line 6530 "util/configparser.c" break; - case 615: -#line 3240 "./util/configparser.y" + case 617: +#line 3248 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6523,11 +6541,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6527 "util/configparser.c" +#line 6545 "util/configparser.c" break; - case 616: -#line 3252 "./util/configparser.y" + case 618: +#line 3260 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6541,11 +6559,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6545 "util/configparser.c" +#line 6563 "util/configparser.c" break; - case 617: -#line 3267 "./util/configparser.y" + case 619: +#line 3275 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6557,11 +6575,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6561 "util/configparser.c" +#line 6579 "util/configparser.c" break; - case 618: -#line 3280 "./util/configparser.y" + case 620: +#line 3288 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -6573,11 +6591,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6577 "util/configparser.c" +#line 6595 "util/configparser.c" break; - case 619: -#line 3293 "./util/configparser.y" + case 621: +#line 3301 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6587,19 +6605,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6591 "util/configparser.c" +#line 6609 "util/configparser.c" break; - case 620: -#line 3304 "./util/configparser.y" + case 622: +#line 3312 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 6599 "util/configparser.c" +#line 6617 "util/configparser.c" break; - case 625: -#line 3313 "./util/configparser.y" + case 627: +#line 3321 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6613,11 +6631,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6617 "util/configparser.c" +#line 6635 "util/configparser.c" break; - case 626: -#line 3328 "./util/configparser.y" + case 628: +#line 3336 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6631,11 +6649,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6635 "util/configparser.c" +#line 6653 "util/configparser.c" break; -#line 6639 "util/configparser.c" +#line 6657 "util/configparser.c" default: break; } @@ -6867,7 +6885,7 @@ yyreturn: #endif return yyresult; } -#line 3342 "./util/configparser.y" +#line 3350 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 627d4cbf9..6dcafd644 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -194,158 +194,159 @@ extern int yydebug; VAR_HTTP_QUERY_BUFFER_SIZE = 400, VAR_HTTP_RESPONSE_BUFFER_SIZE = 401, VAR_HTTP_NODELAY = 402, - VAR_STUB_FIRST = 403, - VAR_MINIMAL_RESPONSES = 404, - VAR_RRSET_ROUNDROBIN = 405, - VAR_MAX_UDP_SIZE = 406, - VAR_DELAY_CLOSE = 407, - VAR_UNBLOCK_LAN_ZONES = 408, - VAR_INSECURE_LAN_ZONES = 409, - VAR_INFRA_CACHE_MIN_RTT = 410, - VAR_DNS64_PREFIX = 411, - VAR_DNS64_SYNTHALL = 412, - VAR_DNS64_IGNORE_AAAA = 413, - VAR_DNSTAP = 414, - VAR_DNSTAP_ENABLE = 415, - VAR_DNSTAP_SOCKET_PATH = 416, - VAR_DNSTAP_IP = 417, - VAR_DNSTAP_TLS = 418, - VAR_DNSTAP_TLS_SERVER_NAME = 419, - VAR_DNSTAP_TLS_CERT_BUNDLE = 420, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 421, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 422, - VAR_DNSTAP_SEND_IDENTITY = 423, - VAR_DNSTAP_SEND_VERSION = 424, - VAR_DNSTAP_BIDIRECTIONAL = 425, - VAR_DNSTAP_IDENTITY = 426, - VAR_DNSTAP_VERSION = 427, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 428, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 429, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 430, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 431, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 432, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 433, - VAR_RESPONSE_IP_TAG = 434, - VAR_RESPONSE_IP = 435, - VAR_RESPONSE_IP_DATA = 436, - VAR_HARDEN_ALGO_DOWNGRADE = 437, - VAR_IP_TRANSPARENT = 438, - VAR_IP_DSCP = 439, - VAR_DISABLE_DNSSEC_LAME_CHECK = 440, - VAR_IP_RATELIMIT = 441, - VAR_IP_RATELIMIT_SLABS = 442, - VAR_IP_RATELIMIT_SIZE = 443, - VAR_RATELIMIT = 444, - VAR_RATELIMIT_SLABS = 445, - VAR_RATELIMIT_SIZE = 446, - VAR_RATELIMIT_FOR_DOMAIN = 447, - VAR_RATELIMIT_BELOW_DOMAIN = 448, - VAR_IP_RATELIMIT_FACTOR = 449, - VAR_RATELIMIT_FACTOR = 450, - VAR_SEND_CLIENT_SUBNET = 451, - VAR_CLIENT_SUBNET_ZONE = 452, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 453, - VAR_CLIENT_SUBNET_OPCODE = 454, - VAR_MAX_CLIENT_SUBNET_IPV4 = 455, - VAR_MAX_CLIENT_SUBNET_IPV6 = 456, - VAR_MIN_CLIENT_SUBNET_IPV4 = 457, - VAR_MIN_CLIENT_SUBNET_IPV6 = 458, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 459, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 460, - VAR_CAPS_WHITELIST = 461, - VAR_CACHE_MAX_NEGATIVE_TTL = 462, - VAR_PERMIT_SMALL_HOLDDOWN = 463, - VAR_QNAME_MINIMISATION = 464, - VAR_QNAME_MINIMISATION_STRICT = 465, - VAR_IP_FREEBIND = 466, - VAR_DEFINE_TAG = 467, - VAR_LOCAL_ZONE_TAG = 468, - VAR_ACCESS_CONTROL_TAG = 469, - VAR_LOCAL_ZONE_OVERRIDE = 470, - VAR_ACCESS_CONTROL_TAG_ACTION = 471, - VAR_ACCESS_CONTROL_TAG_DATA = 472, - VAR_VIEW = 473, - VAR_ACCESS_CONTROL_VIEW = 474, - VAR_VIEW_FIRST = 475, - VAR_SERVE_EXPIRED = 476, - VAR_SERVE_EXPIRED_TTL = 477, - VAR_SERVE_EXPIRED_TTL_RESET = 478, - VAR_SERVE_EXPIRED_REPLY_TTL = 479, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 480, - VAR_FAKE_DSA = 481, - VAR_FAKE_SHA1 = 482, - VAR_LOG_IDENTITY = 483, - VAR_HIDE_TRUSTANCHOR = 484, - VAR_TRUST_ANCHOR_SIGNALING = 485, - VAR_AGGRESSIVE_NSEC = 486, - VAR_USE_SYSTEMD = 487, - VAR_SHM_ENABLE = 488, - VAR_SHM_KEY = 489, - VAR_ROOT_KEY_SENTINEL = 490, - VAR_DNSCRYPT = 491, - VAR_DNSCRYPT_ENABLE = 492, - VAR_DNSCRYPT_PORT = 493, - VAR_DNSCRYPT_PROVIDER = 494, - VAR_DNSCRYPT_SECRET_KEY = 495, - VAR_DNSCRYPT_PROVIDER_CERT = 496, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 497, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 498, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 499, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 500, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 501, - VAR_IPSECMOD_ENABLED = 502, - VAR_IPSECMOD_HOOK = 503, - VAR_IPSECMOD_IGNORE_BOGUS = 504, - VAR_IPSECMOD_MAX_TTL = 505, - VAR_IPSECMOD_WHITELIST = 506, - VAR_IPSECMOD_STRICT = 507, - VAR_CACHEDB = 508, - VAR_CACHEDB_BACKEND = 509, - VAR_CACHEDB_SECRETSEED = 510, - VAR_CACHEDB_REDISHOST = 511, - VAR_CACHEDB_REDISPORT = 512, - VAR_CACHEDB_REDISTIMEOUT = 513, - VAR_CACHEDB_REDISEXPIRERECORDS = 514, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 515, - VAR_FOR_UPSTREAM = 516, - VAR_AUTH_ZONE = 517, - VAR_ZONEFILE = 518, - VAR_MASTER = 519, - VAR_URL = 520, - VAR_FOR_DOWNSTREAM = 521, - VAR_FALLBACK_ENABLED = 522, - VAR_TLS_ADDITIONAL_PORT = 523, - VAR_LOW_RTT = 524, - VAR_LOW_RTT_PERMIL = 525, - VAR_FAST_SERVER_PERMIL = 526, - VAR_FAST_SERVER_NUM = 527, - VAR_ALLOW_NOTIFY = 528, - VAR_TLS_WIN_CERT = 529, - VAR_TCP_CONNECTION_LIMIT = 530, - VAR_FORWARD_NO_CACHE = 531, - VAR_STUB_NO_CACHE = 532, - VAR_LOG_SERVFAIL = 533, - VAR_DENY_ANY = 534, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 535, - VAR_LOG_TAG_QUERYREPLY = 536, - VAR_STREAM_WAIT_SIZE = 537, - VAR_TLS_CIPHERS = 538, - VAR_TLS_CIPHERSUITES = 539, - VAR_TLS_USE_SNI = 540, - VAR_IPSET = 541, - VAR_IPSET_NAME_V4 = 542, - VAR_IPSET_NAME_V6 = 543, - VAR_TLS_SESSION_TICKET_KEYS = 544, - VAR_RPZ = 545, - VAR_TAGS = 546, - VAR_RPZ_ACTION_OVERRIDE = 547, - VAR_RPZ_CNAME_OVERRIDE = 548, - VAR_RPZ_LOG = 549, - VAR_RPZ_LOG_NAME = 550, - VAR_DYNLIB = 551, - VAR_DYNLIB_FILE = 552, - VAR_EDNS_CLIENT_TAG = 553, - VAR_EDNS_CLIENT_TAG_OPCODE = 554 + VAR_HTTP_NOTLS_DOWNSTREAM = 403, + VAR_STUB_FIRST = 404, + VAR_MINIMAL_RESPONSES = 405, + VAR_RRSET_ROUNDROBIN = 406, + VAR_MAX_UDP_SIZE = 407, + VAR_DELAY_CLOSE = 408, + VAR_UNBLOCK_LAN_ZONES = 409, + VAR_INSECURE_LAN_ZONES = 410, + VAR_INFRA_CACHE_MIN_RTT = 411, + VAR_DNS64_PREFIX = 412, + VAR_DNS64_SYNTHALL = 413, + VAR_DNS64_IGNORE_AAAA = 414, + VAR_DNSTAP = 415, + VAR_DNSTAP_ENABLE = 416, + VAR_DNSTAP_SOCKET_PATH = 417, + VAR_DNSTAP_IP = 418, + VAR_DNSTAP_TLS = 419, + VAR_DNSTAP_TLS_SERVER_NAME = 420, + VAR_DNSTAP_TLS_CERT_BUNDLE = 421, + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 422, + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 423, + VAR_DNSTAP_SEND_IDENTITY = 424, + VAR_DNSTAP_SEND_VERSION = 425, + VAR_DNSTAP_BIDIRECTIONAL = 426, + VAR_DNSTAP_IDENTITY = 427, + VAR_DNSTAP_VERSION = 428, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 429, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 430, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 431, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 432, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 433, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 434, + VAR_RESPONSE_IP_TAG = 435, + VAR_RESPONSE_IP = 436, + VAR_RESPONSE_IP_DATA = 437, + VAR_HARDEN_ALGO_DOWNGRADE = 438, + VAR_IP_TRANSPARENT = 439, + VAR_IP_DSCP = 440, + VAR_DISABLE_DNSSEC_LAME_CHECK = 441, + VAR_IP_RATELIMIT = 442, + VAR_IP_RATELIMIT_SLABS = 443, + VAR_IP_RATELIMIT_SIZE = 444, + VAR_RATELIMIT = 445, + VAR_RATELIMIT_SLABS = 446, + VAR_RATELIMIT_SIZE = 447, + VAR_RATELIMIT_FOR_DOMAIN = 448, + VAR_RATELIMIT_BELOW_DOMAIN = 449, + VAR_IP_RATELIMIT_FACTOR = 450, + VAR_RATELIMIT_FACTOR = 451, + VAR_SEND_CLIENT_SUBNET = 452, + VAR_CLIENT_SUBNET_ZONE = 453, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 454, + VAR_CLIENT_SUBNET_OPCODE = 455, + VAR_MAX_CLIENT_SUBNET_IPV4 = 456, + VAR_MAX_CLIENT_SUBNET_IPV6 = 457, + VAR_MIN_CLIENT_SUBNET_IPV4 = 458, + VAR_MIN_CLIENT_SUBNET_IPV6 = 459, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 460, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 461, + VAR_CAPS_WHITELIST = 462, + VAR_CACHE_MAX_NEGATIVE_TTL = 463, + VAR_PERMIT_SMALL_HOLDDOWN = 464, + VAR_QNAME_MINIMISATION = 465, + VAR_QNAME_MINIMISATION_STRICT = 466, + VAR_IP_FREEBIND = 467, + VAR_DEFINE_TAG = 468, + VAR_LOCAL_ZONE_TAG = 469, + VAR_ACCESS_CONTROL_TAG = 470, + VAR_LOCAL_ZONE_OVERRIDE = 471, + VAR_ACCESS_CONTROL_TAG_ACTION = 472, + VAR_ACCESS_CONTROL_TAG_DATA = 473, + VAR_VIEW = 474, + VAR_ACCESS_CONTROL_VIEW = 475, + VAR_VIEW_FIRST = 476, + VAR_SERVE_EXPIRED = 477, + VAR_SERVE_EXPIRED_TTL = 478, + VAR_SERVE_EXPIRED_TTL_RESET = 479, + VAR_SERVE_EXPIRED_REPLY_TTL = 480, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 481, + VAR_FAKE_DSA = 482, + VAR_FAKE_SHA1 = 483, + VAR_LOG_IDENTITY = 484, + VAR_HIDE_TRUSTANCHOR = 485, + VAR_TRUST_ANCHOR_SIGNALING = 486, + VAR_AGGRESSIVE_NSEC = 487, + VAR_USE_SYSTEMD = 488, + VAR_SHM_ENABLE = 489, + VAR_SHM_KEY = 490, + VAR_ROOT_KEY_SENTINEL = 491, + VAR_DNSCRYPT = 492, + VAR_DNSCRYPT_ENABLE = 493, + VAR_DNSCRYPT_PORT = 494, + VAR_DNSCRYPT_PROVIDER = 495, + VAR_DNSCRYPT_SECRET_KEY = 496, + VAR_DNSCRYPT_PROVIDER_CERT = 497, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 498, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 499, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 500, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 501, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 502, + VAR_IPSECMOD_ENABLED = 503, + VAR_IPSECMOD_HOOK = 504, + VAR_IPSECMOD_IGNORE_BOGUS = 505, + VAR_IPSECMOD_MAX_TTL = 506, + VAR_IPSECMOD_WHITELIST = 507, + VAR_IPSECMOD_STRICT = 508, + VAR_CACHEDB = 509, + VAR_CACHEDB_BACKEND = 510, + VAR_CACHEDB_SECRETSEED = 511, + VAR_CACHEDB_REDISHOST = 512, + VAR_CACHEDB_REDISPORT = 513, + VAR_CACHEDB_REDISTIMEOUT = 514, + VAR_CACHEDB_REDISEXPIRERECORDS = 515, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 516, + VAR_FOR_UPSTREAM = 517, + VAR_AUTH_ZONE = 518, + VAR_ZONEFILE = 519, + VAR_MASTER = 520, + VAR_URL = 521, + VAR_FOR_DOWNSTREAM = 522, + VAR_FALLBACK_ENABLED = 523, + VAR_TLS_ADDITIONAL_PORT = 524, + VAR_LOW_RTT = 525, + VAR_LOW_RTT_PERMIL = 526, + VAR_FAST_SERVER_PERMIL = 527, + VAR_FAST_SERVER_NUM = 528, + VAR_ALLOW_NOTIFY = 529, + VAR_TLS_WIN_CERT = 530, + VAR_TCP_CONNECTION_LIMIT = 531, + VAR_FORWARD_NO_CACHE = 532, + VAR_STUB_NO_CACHE = 533, + VAR_LOG_SERVFAIL = 534, + VAR_DENY_ANY = 535, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 536, + VAR_LOG_TAG_QUERYREPLY = 537, + VAR_STREAM_WAIT_SIZE = 538, + VAR_TLS_CIPHERS = 539, + VAR_TLS_CIPHERSUITES = 540, + VAR_TLS_USE_SNI = 541, + VAR_IPSET = 542, + VAR_IPSET_NAME_V4 = 543, + VAR_IPSET_NAME_V6 = 544, + VAR_TLS_SESSION_TICKET_KEYS = 545, + VAR_RPZ = 546, + VAR_TAGS = 547, + VAR_RPZ_ACTION_OVERRIDE = 548, + VAR_RPZ_CNAME_OVERRIDE = 549, + VAR_RPZ_LOG = 550, + VAR_RPZ_LOG_NAME = 551, + VAR_DYNLIB = 552, + VAR_DYNLIB_FILE = 553, + VAR_EDNS_CLIENT_TAG = 554, + VAR_EDNS_CLIENT_TAG_OPCODE = 555 }; #endif /* Tokens. */ @@ -494,158 +495,159 @@ extern int yydebug; #define VAR_HTTP_QUERY_BUFFER_SIZE 400 #define VAR_HTTP_RESPONSE_BUFFER_SIZE 401 #define VAR_HTTP_NODELAY 402 -#define VAR_STUB_FIRST 403 -#define VAR_MINIMAL_RESPONSES 404 -#define VAR_RRSET_ROUNDROBIN 405 -#define VAR_MAX_UDP_SIZE 406 -#define VAR_DELAY_CLOSE 407 -#define VAR_UNBLOCK_LAN_ZONES 408 -#define VAR_INSECURE_LAN_ZONES 409 -#define VAR_INFRA_CACHE_MIN_RTT 410 -#define VAR_DNS64_PREFIX 411 -#define VAR_DNS64_SYNTHALL 412 -#define VAR_DNS64_IGNORE_AAAA 413 -#define VAR_DNSTAP 414 -#define VAR_DNSTAP_ENABLE 415 -#define VAR_DNSTAP_SOCKET_PATH 416 -#define VAR_DNSTAP_IP 417 -#define VAR_DNSTAP_TLS 418 -#define VAR_DNSTAP_TLS_SERVER_NAME 419 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 420 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 421 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 422 -#define VAR_DNSTAP_SEND_IDENTITY 423 -#define VAR_DNSTAP_SEND_VERSION 424 -#define VAR_DNSTAP_BIDIRECTIONAL 425 -#define VAR_DNSTAP_IDENTITY 426 -#define VAR_DNSTAP_VERSION 427 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 428 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 429 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 430 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 431 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 432 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 433 -#define VAR_RESPONSE_IP_TAG 434 -#define VAR_RESPONSE_IP 435 -#define VAR_RESPONSE_IP_DATA 436 -#define VAR_HARDEN_ALGO_DOWNGRADE 437 -#define VAR_IP_TRANSPARENT 438 -#define VAR_IP_DSCP 439 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 440 -#define VAR_IP_RATELIMIT 441 -#define VAR_IP_RATELIMIT_SLABS 442 -#define VAR_IP_RATELIMIT_SIZE 443 -#define VAR_RATELIMIT 444 -#define VAR_RATELIMIT_SLABS 445 -#define VAR_RATELIMIT_SIZE 446 -#define VAR_RATELIMIT_FOR_DOMAIN 447 -#define VAR_RATELIMIT_BELOW_DOMAIN 448 -#define VAR_IP_RATELIMIT_FACTOR 449 -#define VAR_RATELIMIT_FACTOR 450 -#define VAR_SEND_CLIENT_SUBNET 451 -#define VAR_CLIENT_SUBNET_ZONE 452 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 453 -#define VAR_CLIENT_SUBNET_OPCODE 454 -#define VAR_MAX_CLIENT_SUBNET_IPV4 455 -#define VAR_MAX_CLIENT_SUBNET_IPV6 456 -#define VAR_MIN_CLIENT_SUBNET_IPV4 457 -#define VAR_MIN_CLIENT_SUBNET_IPV6 458 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 459 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 460 -#define VAR_CAPS_WHITELIST 461 -#define VAR_CACHE_MAX_NEGATIVE_TTL 462 -#define VAR_PERMIT_SMALL_HOLDDOWN 463 -#define VAR_QNAME_MINIMISATION 464 -#define VAR_QNAME_MINIMISATION_STRICT 465 -#define VAR_IP_FREEBIND 466 -#define VAR_DEFINE_TAG 467 -#define VAR_LOCAL_ZONE_TAG 468 -#define VAR_ACCESS_CONTROL_TAG 469 -#define VAR_LOCAL_ZONE_OVERRIDE 470 -#define VAR_ACCESS_CONTROL_TAG_ACTION 471 -#define VAR_ACCESS_CONTROL_TAG_DATA 472 -#define VAR_VIEW 473 -#define VAR_ACCESS_CONTROL_VIEW 474 -#define VAR_VIEW_FIRST 475 -#define VAR_SERVE_EXPIRED 476 -#define VAR_SERVE_EXPIRED_TTL 477 -#define VAR_SERVE_EXPIRED_TTL_RESET 478 -#define VAR_SERVE_EXPIRED_REPLY_TTL 479 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 480 -#define VAR_FAKE_DSA 481 -#define VAR_FAKE_SHA1 482 -#define VAR_LOG_IDENTITY 483 -#define VAR_HIDE_TRUSTANCHOR 484 -#define VAR_TRUST_ANCHOR_SIGNALING 485 -#define VAR_AGGRESSIVE_NSEC 486 -#define VAR_USE_SYSTEMD 487 -#define VAR_SHM_ENABLE 488 -#define VAR_SHM_KEY 489 -#define VAR_ROOT_KEY_SENTINEL 490 -#define VAR_DNSCRYPT 491 -#define VAR_DNSCRYPT_ENABLE 492 -#define VAR_DNSCRYPT_PORT 493 -#define VAR_DNSCRYPT_PROVIDER 494 -#define VAR_DNSCRYPT_SECRET_KEY 495 -#define VAR_DNSCRYPT_PROVIDER_CERT 496 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 497 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 498 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 499 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 500 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 501 -#define VAR_IPSECMOD_ENABLED 502 -#define VAR_IPSECMOD_HOOK 503 -#define VAR_IPSECMOD_IGNORE_BOGUS 504 -#define VAR_IPSECMOD_MAX_TTL 505 -#define VAR_IPSECMOD_WHITELIST 506 -#define VAR_IPSECMOD_STRICT 507 -#define VAR_CACHEDB 508 -#define VAR_CACHEDB_BACKEND 509 -#define VAR_CACHEDB_SECRETSEED 510 -#define VAR_CACHEDB_REDISHOST 511 -#define VAR_CACHEDB_REDISPORT 512 -#define VAR_CACHEDB_REDISTIMEOUT 513 -#define VAR_CACHEDB_REDISEXPIRERECORDS 514 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 515 -#define VAR_FOR_UPSTREAM 516 -#define VAR_AUTH_ZONE 517 -#define VAR_ZONEFILE 518 -#define VAR_MASTER 519 -#define VAR_URL 520 -#define VAR_FOR_DOWNSTREAM 521 -#define VAR_FALLBACK_ENABLED 522 -#define VAR_TLS_ADDITIONAL_PORT 523 -#define VAR_LOW_RTT 524 -#define VAR_LOW_RTT_PERMIL 525 -#define VAR_FAST_SERVER_PERMIL 526 -#define VAR_FAST_SERVER_NUM 527 -#define VAR_ALLOW_NOTIFY 528 -#define VAR_TLS_WIN_CERT 529 -#define VAR_TCP_CONNECTION_LIMIT 530 -#define VAR_FORWARD_NO_CACHE 531 -#define VAR_STUB_NO_CACHE 532 -#define VAR_LOG_SERVFAIL 533 -#define VAR_DENY_ANY 534 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 535 -#define VAR_LOG_TAG_QUERYREPLY 536 -#define VAR_STREAM_WAIT_SIZE 537 -#define VAR_TLS_CIPHERS 538 -#define VAR_TLS_CIPHERSUITES 539 -#define VAR_TLS_USE_SNI 540 -#define VAR_IPSET 541 -#define VAR_IPSET_NAME_V4 542 -#define VAR_IPSET_NAME_V6 543 -#define VAR_TLS_SESSION_TICKET_KEYS 544 -#define VAR_RPZ 545 -#define VAR_TAGS 546 -#define VAR_RPZ_ACTION_OVERRIDE 547 -#define VAR_RPZ_CNAME_OVERRIDE 548 -#define VAR_RPZ_LOG 549 -#define VAR_RPZ_LOG_NAME 550 -#define VAR_DYNLIB 551 -#define VAR_DYNLIB_FILE 552 -#define VAR_EDNS_CLIENT_TAG 553 -#define VAR_EDNS_CLIENT_TAG_OPCODE 554 +#define VAR_HTTP_NOTLS_DOWNSTREAM 403 +#define VAR_STUB_FIRST 404 +#define VAR_MINIMAL_RESPONSES 405 +#define VAR_RRSET_ROUNDROBIN 406 +#define VAR_MAX_UDP_SIZE 407 +#define VAR_DELAY_CLOSE 408 +#define VAR_UNBLOCK_LAN_ZONES 409 +#define VAR_INSECURE_LAN_ZONES 410 +#define VAR_INFRA_CACHE_MIN_RTT 411 +#define VAR_DNS64_PREFIX 412 +#define VAR_DNS64_SYNTHALL 413 +#define VAR_DNS64_IGNORE_AAAA 414 +#define VAR_DNSTAP 415 +#define VAR_DNSTAP_ENABLE 416 +#define VAR_DNSTAP_SOCKET_PATH 417 +#define VAR_DNSTAP_IP 418 +#define VAR_DNSTAP_TLS 419 +#define VAR_DNSTAP_TLS_SERVER_NAME 420 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 421 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 422 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 423 +#define VAR_DNSTAP_SEND_IDENTITY 424 +#define VAR_DNSTAP_SEND_VERSION 425 +#define VAR_DNSTAP_BIDIRECTIONAL 426 +#define VAR_DNSTAP_IDENTITY 427 +#define VAR_DNSTAP_VERSION 428 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 429 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 430 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 431 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 432 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 433 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 434 +#define VAR_RESPONSE_IP_TAG 435 +#define VAR_RESPONSE_IP 436 +#define VAR_RESPONSE_IP_DATA 437 +#define VAR_HARDEN_ALGO_DOWNGRADE 438 +#define VAR_IP_TRANSPARENT 439 +#define VAR_IP_DSCP 440 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 441 +#define VAR_IP_RATELIMIT 442 +#define VAR_IP_RATELIMIT_SLABS 443 +#define VAR_IP_RATELIMIT_SIZE 444 +#define VAR_RATELIMIT 445 +#define VAR_RATELIMIT_SLABS 446 +#define VAR_RATELIMIT_SIZE 447 +#define VAR_RATELIMIT_FOR_DOMAIN 448 +#define VAR_RATELIMIT_BELOW_DOMAIN 449 +#define VAR_IP_RATELIMIT_FACTOR 450 +#define VAR_RATELIMIT_FACTOR 451 +#define VAR_SEND_CLIENT_SUBNET 452 +#define VAR_CLIENT_SUBNET_ZONE 453 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 454 +#define VAR_CLIENT_SUBNET_OPCODE 455 +#define VAR_MAX_CLIENT_SUBNET_IPV4 456 +#define VAR_MAX_CLIENT_SUBNET_IPV6 457 +#define VAR_MIN_CLIENT_SUBNET_IPV4 458 +#define VAR_MIN_CLIENT_SUBNET_IPV6 459 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 460 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 461 +#define VAR_CAPS_WHITELIST 462 +#define VAR_CACHE_MAX_NEGATIVE_TTL 463 +#define VAR_PERMIT_SMALL_HOLDDOWN 464 +#define VAR_QNAME_MINIMISATION 465 +#define VAR_QNAME_MINIMISATION_STRICT 466 +#define VAR_IP_FREEBIND 467 +#define VAR_DEFINE_TAG 468 +#define VAR_LOCAL_ZONE_TAG 469 +#define VAR_ACCESS_CONTROL_TAG 470 +#define VAR_LOCAL_ZONE_OVERRIDE 471 +#define VAR_ACCESS_CONTROL_TAG_ACTION 472 +#define VAR_ACCESS_CONTROL_TAG_DATA 473 +#define VAR_VIEW 474 +#define VAR_ACCESS_CONTROL_VIEW 475 +#define VAR_VIEW_FIRST 476 +#define VAR_SERVE_EXPIRED 477 +#define VAR_SERVE_EXPIRED_TTL 478 +#define VAR_SERVE_EXPIRED_TTL_RESET 479 +#define VAR_SERVE_EXPIRED_REPLY_TTL 480 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 481 +#define VAR_FAKE_DSA 482 +#define VAR_FAKE_SHA1 483 +#define VAR_LOG_IDENTITY 484 +#define VAR_HIDE_TRUSTANCHOR 485 +#define VAR_TRUST_ANCHOR_SIGNALING 486 +#define VAR_AGGRESSIVE_NSEC 487 +#define VAR_USE_SYSTEMD 488 +#define VAR_SHM_ENABLE 489 +#define VAR_SHM_KEY 490 +#define VAR_ROOT_KEY_SENTINEL 491 +#define VAR_DNSCRYPT 492 +#define VAR_DNSCRYPT_ENABLE 493 +#define VAR_DNSCRYPT_PORT 494 +#define VAR_DNSCRYPT_PROVIDER 495 +#define VAR_DNSCRYPT_SECRET_KEY 496 +#define VAR_DNSCRYPT_PROVIDER_CERT 497 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 498 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 499 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 500 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 501 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 502 +#define VAR_IPSECMOD_ENABLED 503 +#define VAR_IPSECMOD_HOOK 504 +#define VAR_IPSECMOD_IGNORE_BOGUS 505 +#define VAR_IPSECMOD_MAX_TTL 506 +#define VAR_IPSECMOD_WHITELIST 507 +#define VAR_IPSECMOD_STRICT 508 +#define VAR_CACHEDB 509 +#define VAR_CACHEDB_BACKEND 510 +#define VAR_CACHEDB_SECRETSEED 511 +#define VAR_CACHEDB_REDISHOST 512 +#define VAR_CACHEDB_REDISPORT 513 +#define VAR_CACHEDB_REDISTIMEOUT 514 +#define VAR_CACHEDB_REDISEXPIRERECORDS 515 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 516 +#define VAR_FOR_UPSTREAM 517 +#define VAR_AUTH_ZONE 518 +#define VAR_ZONEFILE 519 +#define VAR_MASTER 520 +#define VAR_URL 521 +#define VAR_FOR_DOWNSTREAM 522 +#define VAR_FALLBACK_ENABLED 523 +#define VAR_TLS_ADDITIONAL_PORT 524 +#define VAR_LOW_RTT 525 +#define VAR_LOW_RTT_PERMIL 526 +#define VAR_FAST_SERVER_PERMIL 527 +#define VAR_FAST_SERVER_NUM 528 +#define VAR_ALLOW_NOTIFY 529 +#define VAR_TLS_WIN_CERT 530 +#define VAR_TCP_CONNECTION_LIMIT 531 +#define VAR_FORWARD_NO_CACHE 532 +#define VAR_STUB_NO_CACHE 533 +#define VAR_LOG_SERVFAIL 534 +#define VAR_DENY_ANY 535 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 536 +#define VAR_LOG_TAG_QUERYREPLY 537 +#define VAR_STREAM_WAIT_SIZE 538 +#define VAR_TLS_CIPHERS 539 +#define VAR_TLS_CIPHERSUITES 540 +#define VAR_TLS_USE_SNI 541 +#define VAR_IPSET 542 +#define VAR_IPSET_NAME_V4 543 +#define VAR_IPSET_NAME_V6 544 +#define VAR_TLS_SESSION_TICKET_KEYS 545 +#define VAR_RPZ 546 +#define VAR_TAGS 547 +#define VAR_RPZ_ACTION_OVERRIDE 548 +#define VAR_RPZ_CNAME_OVERRIDE 549 +#define VAR_RPZ_LOG 550 +#define VAR_RPZ_LOG_NAME 551 +#define VAR_DYNLIB 552 +#define VAR_DYNLIB_FILE 553 +#define VAR_EDNS_CLIENT_TAG 554 +#define VAR_EDNS_CLIENT_TAG_OPCODE 555 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -655,7 +657,7 @@ union YYSTYPE char* str; -#line 659 "util/configparser.h" +#line 661 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index 675645fbd..2b20707c7 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -114,7 +114,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_STUB_SSL_UPSTREAM VAR_FORWARD_SSL_UPSTREAM VAR_TLS_CERT_BUNDLE %token VAR_HTTPS_PORT VAR_HTTP_ENDPOINT VAR_HTTP_MAX_STREAMS %token VAR_HTTP_QUERY_BUFFER_SIZE VAR_HTTP_RESPONSE_BUFFER_SIZE -%token VAR_HTTP_NODELAY +%token VAR_HTTP_NODELAY VAR_HTTP_NOTLS_DOWNSTREAM %token VAR_STUB_FIRST VAR_MINIMAL_RESPONSES VAR_RRSET_ROUNDROBIN %token VAR_MAX_UDP_SIZE VAR_DELAY_CLOSE %token VAR_UNBLOCK_LAN_ZONES VAR_INSECURE_LAN_ZONES @@ -249,7 +249,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_ssl_service_key | server_ssl_service_pem | server_ssl_port | server_https_port | server_http_endpoint | server_http_max_streams | server_http_query_buffer_size | server_http_response_buffer_size | - server_http_nodelay | + server_http_nodelay | server_http_notls_downstream | server_minimal_responses | server_rrset_roundrobin | server_max_udp_size | server_so_reuseport | server_delay_close | server_unblock_lan_zones | server_insecure_lan_zones | @@ -1031,6 +1031,14 @@ server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG yyerror("expected yes or no."); else cfg_parser->cfg->http_nodelay = (strcmp($2, "yes")==0); free($2); + } +server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG + { + OUTYY(("P(server_http_notls_downstream:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->http_notls_downstream = (strcmp($2, "yes")==0); + free($2); }; server_use_systemd: VAR_USE_SYSTEMD STRING_ARG { diff --git a/util/netevent.c b/util/netevent.c index 545f09742..e8aba4736 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -978,6 +978,10 @@ comm_point_tcp_accept_callback(int fd, short event, void* arg) log_warn("failed to submit http2 settings"); return; } + if(!c->ssl) { + c_hdl->tcp_do_toggle_rw = 0; + c_hdl->use_h2 = 1; + } #endif c_hdl->ev->ev = ub_event_new(c_hdl->ev->base->eb->base, -1, UB_EV_PERSIST | UB_EV_READ | UB_EV_TIMEOUT, @@ -2359,48 +2363,76 @@ int http2_stream_close_cb(nghttp2_session* ATTR_UNUSED(session), ssize_t http2_recv_cb(nghttp2_session* ATTR_UNUSED(session), uint8_t* buf, size_t len, int ATTR_UNUSED(flags), void* cb_arg) { -#ifdef HAVE_SSL struct http2_session* h2_session = (struct http2_session*)cb_arg; - int r; + ssize_t ret; log_assert(h2_session->c->type == comm_http); log_assert(h2_session->c->h2_session); - if(!h2_session->c->ssl) - return 0; - - ERR_clear_error(); - r = SSL_read(h2_session->c->ssl, buf, len); - if(r <= 0) { - int want = SSL_get_error(h2_session->c->ssl, r); - if(want == SSL_ERROR_ZERO_RETURN) { - return NGHTTP2_ERR_EOF; - } else if(want == SSL_ERROR_WANT_READ) { - return NGHTTP2_ERR_WOULDBLOCK; - } else if(want == SSL_ERROR_WANT_WRITE) { - h2_session->c->ssl_shake_state = comm_ssl_shake_hs_write; - comm_point_listen_for_rw(h2_session->c, 0, 1); - return NGHTTP2_ERR_WOULDBLOCK; - } else if(want == SSL_ERROR_SYSCALL) { +#ifdef HAVE_SSL + if(h2_session->c->ssl) { + int r; + ERR_clear_error(); + r = SSL_read(h2_session->c->ssl, buf, len); + if(r <= 0) { + int want = SSL_get_error(h2_session->c->ssl, r); + if(want == SSL_ERROR_ZERO_RETURN) { + return NGHTTP2_ERR_EOF; + } else if(want == SSL_ERROR_WANT_READ) { + return NGHTTP2_ERR_WOULDBLOCK; + } else if(want == SSL_ERROR_WANT_WRITE) { + h2_session->c->ssl_shake_state = comm_ssl_shake_hs_write; + comm_point_listen_for_rw(h2_session->c, 0, 1); + return NGHTTP2_ERR_WOULDBLOCK; + } else if(want == SSL_ERROR_SYSCALL) { #ifdef ECONNRESET - if(errno == ECONNRESET && verbosity < 2) - return NGHTTP2_ERR_CALLBACK_FAILURE; + if(errno == ECONNRESET && verbosity < 2) + return NGHTTP2_ERR_CALLBACK_FAILURE; #endif - if(errno != 0) - log_err("SSL_read syscall: %s", - strerror(errno)); + if(errno != 0) + log_err("SSL_read syscall: %s", + strerror(errno)); + return NGHTTP2_ERR_CALLBACK_FAILURE; + } + log_crypto_err("could not SSL_read"); return NGHTTP2_ERR_CALLBACK_FAILURE; } - log_crypto_err("could not SSL_read"); + return r; + } +#endif /* HAVE_SSL */ + + ret = recv(h2_session->c->fd, buf, len, 0); + if(ret == 0) { + return NGHTTP2_ERR_EOF; + } else if(ret < 0) { +#ifndef USE_WINSOCK + if(errno == EINTR || errno == EAGAIN) + return NGHTTP2_ERR_WOULDBLOCK; +#ifdef ECONNRESET + if(errno == ECONNRESET && verbosity < 2) + return NGHTTP2_ERR_CALLBACK_FAILURE; +#endif + log_err_addr("could not http2 recv: %s", strerror(errno), + &h2_session->c->repinfo.addr, + h2_session->c->repinfo.addrlen); +#else /* USE_WINSOCK */ + if(WSAGetLastError() == WSAECONNRESET) + return NGHTTP2_ERR_CALLBACK_FAILURE; + if(WSAGetLastError() == WSAEINPROGRESS) + return NGHTTP2_ERR_WOULDBLOCK; + if(WSAGetLastError() == WSAEWOULDBLOCK) { + ub_winsock_tcp_wouldblock(h2_session->c->ev->ev, + UB_EV_READ); + return NGHTTP2_ERR_WOULDBLOCK; + } + log_err_addr("could not http2 recv: %s", + wsa_strerror(WSAGetLastError()), + &h2_session->c->repinfo.addr, + h2_session->c->repinfo.addrlen); +#endif return NGHTTP2_ERR_CALLBACK_FAILURE; } - return r; -#else - (void)buf; - (void)len; - (void)cb_arg; - return -1; -#endif + return ret; } #endif /* HAVE_NGHTTP2 */ @@ -2411,7 +2443,6 @@ comm_point_http2_handle_read(int ATTR_UNUSED(fd), struct comm_point* c) #ifdef HAVE_NGHTTP2 int ret; log_assert(c->h2_session); - log_assert(c->ssl); /* reading until recv cb returns NGHTTP2_ERR_WOULDBLOCK */ ret = nghttp2_session_recv(c->h2_session->session); @@ -2648,47 +2679,81 @@ http_write_more(int fd, struct comm_point* c) ssize_t http2_send_cb(nghttp2_session* ATTR_UNUSED(session), const uint8_t* buf, size_t len, int ATTR_UNUSED(flags), void* cb_arg) { -#ifdef HAVE_SSL - int r; + ssize_t ret; struct http2_session* h2_session = (struct http2_session*)cb_arg; log_assert(h2_session->c->type == comm_http); log_assert(h2_session->c->h2_session); - if(!h2_session->c->ssl) - return 0; - - ERR_clear_error(); - r = SSL_write(h2_session->c->ssl, buf, len); - if(r <= 0) { - int want = SSL_get_error(h2_session->c->ssl, r); - if(want == SSL_ERROR_ZERO_RETURN) { - return NGHTTP2_ERR_CALLBACK_FAILURE; - } else if(want == SSL_ERROR_WANT_READ) { - h2_session->c->ssl_shake_state = comm_ssl_shake_hs_read; - comm_point_listen_for_rw(h2_session->c, 1, 0); - return NGHTTP2_ERR_WOULDBLOCK; - } else if(want == SSL_ERROR_WANT_WRITE) { - return NGHTTP2_ERR_WOULDBLOCK; - } else if(want == SSL_ERROR_SYSCALL) { -#ifdef EPIPE - if(errno == EPIPE && verbosity < 2) +#ifdef HAVE_SSL + if(h2_session->c->ssl) { + int r; + ERR_clear_error(); + r = SSL_write(h2_session->c->ssl, buf, len); + if(r <= 0) { + int want = SSL_get_error(h2_session->c->ssl, r); + if(want == SSL_ERROR_ZERO_RETURN) { return NGHTTP2_ERR_CALLBACK_FAILURE; + } else if(want == SSL_ERROR_WANT_READ) { + h2_session->c->ssl_shake_state = comm_ssl_shake_hs_read; + comm_point_listen_for_rw(h2_session->c, 1, 0); + return NGHTTP2_ERR_WOULDBLOCK; + } else if(want == SSL_ERROR_WANT_WRITE) { + return NGHTTP2_ERR_WOULDBLOCK; + } else if(want == SSL_ERROR_SYSCALL) { +#ifdef EPIPE + if(errno == EPIPE && verbosity < 2) + return NGHTTP2_ERR_CALLBACK_FAILURE; #endif - if(errno != 0) - log_err("SSL_write syscall: %s", - strerror(errno)); + if(errno != 0) + log_err("SSL_write syscall: %s", + strerror(errno)); + return NGHTTP2_ERR_CALLBACK_FAILURE; + } + log_crypto_err("could not SSL_write"); return NGHTTP2_ERR_CALLBACK_FAILURE; } - log_crypto_err("could not SSL_write"); + return r; + } +#endif /* HAVE_SSL */ + + ret = send(h2_session->c->fd, buf, len, 0); + if(ret == 0) { + return NGHTTP2_ERR_CALLBACK_FAILURE; + } else if(ret < 0) { +#ifndef USE_WINSOCK + if(errno == EINTR || errno == EAGAIN) + return NGHTTP2_ERR_WOULDBLOCK; +#ifdef EPIPE + if(errno == EPIPE && verbosity < 2) + return NGHTTP2_ERR_CALLBACK_FAILURE; +#endif +#ifdef ECONNRESET + if(errno == ECONNRESET && verbosity < 2) + return NGHTTP2_ERR_CALLBACK_FAILURE; +#endif + log_err_addr("could not http2 write: %s", strerror(errno), + &h2_session->c->repinfo.addr, + h2_session->c->repinfo.addrlen); +#else /* USE_WINSOCK */ + if(WSAGetLastError() == WSAENOTCONN) + return NGHTTP2_ERR_WOULDBLOCK; + if(WSAGetLastError() == WSAEINPROGRESS) + return NGHTTP2_ERR_WOULDBLOCK; + if(WSAGetLastError() == WSAEWOULDBLOCK) { + ub_winsock_tcp_wouldblock(h2_session->c->ev->ev, + UB_EV_WRITE); + return NGHTTP2_ERR_WOULDBLOCK; + } + if(WSAGetLastError() == WSAECONNRESET && verbosity < 2) + return NGHTTP2_ERR_CALLBACK_FAILURE; + log_err_addr("could not http2 write: %s", + wsa_strerror(WSAGetLastError()), + &h2_session->c->repinfo.addr, + h2_session->c->repinfo.addrlen); +#endif return NGHTTP2_ERR_CALLBACK_FAILURE; } - return r; -#else - (void)buf; - (void)len; - (void)cb_arg; - return -1; -#endif + return ret; } #endif /* HAVE_NGHTTP2 */ @@ -2699,7 +2764,6 @@ comm_point_http2_handle_write(int ATTR_UNUSED(fd), struct comm_point* c) #ifdef HAVE_NGHTTP2 int ret; log_assert(c->h2_session); - log_assert(c->ssl); ret = nghttp2_session_send(c->h2_session->session); if(ret) { From c8390e390d8f4d966a268e9ac4e81d6982ef4325 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 19 Oct 2020 10:41:03 +0200 Subject: [PATCH 22/38] - Fix python documentation warning on functions.rst inplace_cb_reply. --- doc/Changelog | 1 + pythonmod/doc/modules/functions.rst | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 24d544c7a..978febe61 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -6,6 +6,7 @@ - Fix #330: [Feature request] Add unencrypted DNS over HTTPS support. This adds the option http-notls-downstream: yesno to change that, and the dohclient test code has the -n option. + - Fix python documentation warning on functions.rst inplace_cb_reply. 16 October 2020: Wouter - Fix that the out of order TCP processing does not limit the diff --git a/pythonmod/doc/modules/functions.rst b/pythonmod/doc/modules/functions.rst index 6ded3bf7a..333f696b8 100644 --- a/pythonmod/doc/modules/functions.rst +++ b/pythonmod/doc/modules/functions.rst @@ -103,7 +103,7 @@ Inplace callbacks :param opt_list_out: :class:`edns_option`. EDNS option list to append options to. :param region: :class:`regional` :param \*\*kwargs: Dictionary that may contain parameters added in a future - release. Current parameters: + release. Current parameters: ``repinfo``: :class:`comm_reply`. Reply information for a communication point. .. function:: inplace_cb_query(qinfo, flags, qstate, addr, zone, region) From 5cd2d10fe5263fe71e407c55015f66fc4663fc98 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 19 Oct 2020 10:43:35 +0200 Subject: [PATCH 23/38] - Fix dnstap test to wait for log timer to see if queries are logged. --- doc/Changelog | 1 + testdata/dnstap.tdir/dnstap.test | 2 ++ 2 files changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 978febe61..7bcef8c94 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -7,6 +7,7 @@ This adds the option http-notls-downstream: yesno to change that, and the dohclient test code has the -n option. - Fix python documentation warning on functions.rst inplace_cb_reply. + - Fix dnstap test to wait for log timer to see if queries are logged. 16 October 2020: Wouter - Fix that the out of order TCP processing does not limit the diff --git a/testdata/dnstap.tdir/dnstap.test b/testdata/dnstap.tdir/dnstap.test index d548e2dad..fbf8565ff 100644 --- a/testdata/dnstap.tdir/dnstap.test +++ b/testdata/dnstap.tdir/dnstap.test @@ -59,6 +59,8 @@ dig @127.0.0.1 -p $UNBOUND_PORT q7.example.net. dig @127.0.0.1 -p $UNBOUND_PORT q8.example.net. dig @127.0.0.1 -p $UNBOUND_PORT q9.example.net. dig @127.0.0.1 -p $UNBOUND_PORT q10.example.net. +echo "> wait for log to happen on timer" +sleep 3 for x in q1 q2 q3 q4 5 q6 q7 q8 q9 q10; do if grep "$x.example.net" tap.log >/dev/null; then :; else sleep 1; fi if grep "$x.example.net" tap.log >/dev/null; then :; else sleep 1; fi From ca6e8ec6c29a4ca8592d08fab297a4c572474558 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 19 Oct 2020 10:59:41 +0200 Subject: [PATCH 24/38] Unit test for doh downstream notls. --- .../doh_downstream_notls.conf | 28 ++ .../doh_downstream_notls.dsc | 16 + .../doh_downstream_notls.post | 13 + .../doh_downstream_notls.pre | 33 ++ .../doh_downstream_notls.test | 339 ++++++++++++++++++ .../doh_downstream_notls.testns | 74 ++++ .../unbound_server.key | 15 + .../unbound_server.pem | 11 + 8 files changed, 529 insertions(+) create mode 100644 testdata/doh_downstream_notls.tdir/doh_downstream_notls.conf create mode 100644 testdata/doh_downstream_notls.tdir/doh_downstream_notls.dsc create mode 100644 testdata/doh_downstream_notls.tdir/doh_downstream_notls.post create mode 100644 testdata/doh_downstream_notls.tdir/doh_downstream_notls.pre create mode 100644 testdata/doh_downstream_notls.tdir/doh_downstream_notls.test create mode 100644 testdata/doh_downstream_notls.tdir/doh_downstream_notls.testns create mode 100644 testdata/doh_downstream_notls.tdir/unbound_server.key create mode 100644 testdata/doh_downstream_notls.tdir/unbound_server.pem diff --git a/testdata/doh_downstream_notls.tdir/doh_downstream_notls.conf b/testdata/doh_downstream_notls.tdir/doh_downstream_notls.conf new file mode 100644 index 000000000..bdca45645 --- /dev/null +++ b/testdata/doh_downstream_notls.tdir/doh_downstream_notls.conf @@ -0,0 +1,28 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1@@PORT@ + https-port: @PORT@ + tls-service-key: "unbound_server.key" + tls-service-pem: "unbound_server.pem" + use-syslog: no + directory: . + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + http-query-buffer-size: 1G + http-response-buffer-size: 1G + http-max-streams: 200 + http-notls-downstream: yes + + local-zone: "example.net" static + local-data: "www1.example.net. IN A 1.2.3.1" + local-data: "www2.example.net. IN A 1.2.3.2" + local-data: "www3.example.net. IN A 1.2.3.3" + local-zone: "drop.net" deny + tcp-upstream: yes + +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" diff --git a/testdata/doh_downstream_notls.tdir/doh_downstream_notls.dsc b/testdata/doh_downstream_notls.tdir/doh_downstream_notls.dsc new file mode 100644 index 000000000..4b908e052 --- /dev/null +++ b/testdata/doh_downstream_notls.tdir/doh_downstream_notls.dsc @@ -0,0 +1,16 @@ +BaseName: doh_downstream_notls +Version: 1.0 +Description: Test DNS-over-HTTP query processing with no-tls +CreationDate: Mon Jun 12 12:00:00 CET 2020 +Maintainer: +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: doh_downstream_notls.pre +Post: doh_downstream_notls.post +Test: doh_downstream_notls.test +AuxFiles: +Passed: +Failure: diff --git a/testdata/doh_downstream_notls.tdir/doh_downstream_notls.post b/testdata/doh_downstream_notls.tdir/doh_downstream_notls.post new file mode 100644 index 000000000..3ceaeade8 --- /dev/null +++ b/testdata/doh_downstream_notls.tdir/doh_downstream_notls.post @@ -0,0 +1,13 @@ +# #-- doh_downstream_notls.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +PRE="../.." +if grep "define HAVE_NGHTTP2 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID +cat unbound.log diff --git a/testdata/doh_downstream_notls.tdir/doh_downstream_notls.pre b/testdata/doh_downstream_notls.tdir/doh_downstream_notls.pre new file mode 100644 index 000000000..e1f30a575 --- /dev/null +++ b/testdata/doh_downstream_notls.tdir/doh_downstream_notls.pre @@ -0,0 +1,33 @@ +# #-- doh_downstream_notls.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +if grep "define HAVE_NGHTTP2 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi + +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT doh_downstream_notls.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < doh_downstream_notls.conf > ub.conf +# start unbound in the background +$PRE/unbound -vvvv -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/testdata/doh_downstream_notls.tdir/doh_downstream_notls.test b/testdata/doh_downstream_notls.tdir/doh_downstream_notls.test new file mode 100644 index 000000000..87ff560d3 --- /dev/null +++ b/testdata/doh_downstream_notls.tdir/doh_downstream_notls.test @@ -0,0 +1,339 @@ +# #-- doh_downstream_notls.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +if grep "define HAVE_NGHTTP2 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi +get_make +(cd $PRE; $MAKE dohclient) + + +# this test query should just work (server is up) +echo "> query www1.example.net." +$PRE/dohclient -n -s 127.0.0.1 -p $UNBOUND_PORT www1.example.net. A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www1.example.net" outfile | grep "1.2.3.1"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +echo "OK" + +# multiple requests (from localdata) +echo "> query www1.example.net. www2.example.net. www3.example.net." +$PRE/dohclient -n -s 127.0.0.1 -p $UNBOUND_PORT www1.example.net. A IN www2.example.net A IN www3.example.net A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www1.example.net" outfile | grep "1.2.3.1"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www2.example.net" outfile | grep "1.2.3.2"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www3.example.net" outfile | grep "1.2.3.3"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi + +# out of order requests, the example.com elements take 2 seconds to wait. +echo "" +echo "> query www1.example.net. www.example.com. www2.example.net. www2.example.com. www3.example.net." +$PRE/dohclient -n -s 127.0.0.1 -p $UNBOUND_PORT www1.example.net. A IN www.example.com. A IN www2.example.net A IN www2.example.com. A IN www3.example.net A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www1.example.net" outfile | grep "1.2.3.1"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www2.example.net" outfile | grep "1.2.3.2"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www3.example.net" outfile | grep "1.2.3.3"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www.example.com" outfile | grep "10.20.30.40"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www2.example.com" outfile | grep "10.20.30.42"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi + +# out of order requests, the example.com elements take 2 seconds to wait. +# www.example.com present twice, answered twice. +echo "" +echo "> query www1.example.net. www.example.com. www2.example.net. www.example.com. www3.example.net." +$PRE/dohclient -n -s 127.0.0.1 -p $UNBOUND_PORT www1.example.net. A IN www.example.com. A IN www2.example.net A IN www.example.com. A IN www3.example.net A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www1.example.net" outfile | grep "1.2.3.1"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www2.example.net" outfile | grep "1.2.3.2"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www3.example.net" outfile | grep "1.2.3.3"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www.example.com" outfile | grep "10.20.30.40"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi + +# out of order requests, the example.com elements take 2 seconds to wait. +# www3.example.com present twice, answered twice. +echo "" +echo "> query www1.example.net. www3.example.com. www2.example.net. www3.example.com. www3.example.net." +$PRE/dohclient -n -s 127.0.0.1 -p $UNBOUND_PORT www1.example.net. A IN www3.example.com. A IN www2.example.net A IN www3.example.com. A IN www3.example.net A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www1.example.net" outfile | grep "1.2.3.1"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www2.example.net" outfile | grep "1.2.3.2"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www3.example.net" outfile | grep "1.2.3.3"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www3.example.com" outfile | grep "10.20.30.43"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi + +echo "" +echo "> query www4.example.com. www3.example.net." +$PRE/dohclient -n -s 127.0.0.1 -p $UNBOUND_PORT www4.example.com. A IN www3.example.net A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www3.example.net" outfile | grep "1.2.3.3"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www4.example.com" outfile | grep "10.20.30.44"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi + + +echo "" +echo "> query a1.example.com. - a90.example.com." +$PRE/dohclient -n -s 127.0.0.1 -p $UNBOUND_PORT www6.example.com. A IN a1.a.example.com. A IN a2.a.example.com. A IN a3.a.example.com. A IN a4.a.example.com. A IN a5.a.example.com. A IN a6.a.example.com. A IN a7.a.example.com. A IN a8.a.example.com. A IN a9.a.example.com. A IN a10.a.example.com. A IN a11.a.example.com. A IN a12.a.example.com. A IN a13.a.example.com. A IN a14.a.example.com. A IN a15.a.example.com. A IN a16.a.example.com. A IN a17.a.example.com. A IN a18.a.example.com. A IN a19.a.example.com. A IN a20.a.example.com. A IN a21.a.example.com. A IN a22.a.example.com. A IN a23.a.example.com. A IN a24.a.example.com. A IN a25.a.example.com. A IN a26.a.example.com. A IN a27.a.example.com. A IN a28.a.example.com. A IN a29.a.example.com. A IN a30.a.example.com. A IN a31.a.example.com. A IN a32.a.example.com. A IN a33.a.example.com. A IN a34.a.example.com. A IN a35.a.example.com. A IN a36.a.example.com. A IN a37.a.example.com. A IN a38.a.example.com. A IN a39.a.example.com. A IN a40.a.example.com. A IN a41.a.example.com. A IN a42.a.example.com. A IN a43.a.example.com. A IN a44.a.example.com. A IN a45.a.example.com. A IN a46.a.example.com. A IN a47.a.example.com. A IN a48.a.example.com. A IN a49.a.example.com. A IN a50.a.example.com. A IN a51.a.example.com. A IN a52.a.example.com. A IN a53.a.example.com. A IN a54.a.example.com. A IN a55.a.example.com. A IN a56.a.example.com. A IN a57.a.example.com. A IN a58.a.example.com. A IN a59.a.example.com. A IN a60.a.example.com. A IN a61.a.example.com. A IN a62.a.example.com. A IN a63.a.example.com. A IN a64.a.example.com. A IN a65.a.example.com. A IN a66.a.example.com. A IN a67.a.example.com. A IN a68.a.example.com. A IN a69.a.example.com. A IN a70.a.example.com. A IN a71.a.example.com. A IN a72.a.example.com. A IN a73.a.example.com. A IN a74.a.example.com. A IN a75.a.example.com. A IN a76.a.example.com. A IN a77.a.example.com. A IN a78.a.example.com. A IN a79.a.example.com. A IN a80.a.example.com. A IN a81.a.example.com. A IN a82.a.example.com. A IN a83.a.example.com. A IN a84.a.example.com. A IN a85.a.example.com. A IN a86.a.example.com. A IN a87.a.example.com. A IN a88.a.example.com. A IN a89.a.example.com. A IN a90.a.example.com. A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +num_ans=$(grep -B 3 "a.example.com. IN A" outfile | grep "rcode: NOERROR" | wc -l ) +if test "$num_ans" -ne 90; then + echo "number of answers not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +echo "OK" +exit 0 diff --git a/testdata/doh_downstream_notls.tdir/doh_downstream_notls.testns b/testdata/doh_downstream_notls.tdir/doh_downstream_notls.testns new file mode 100644 index 000000000..c53941b67 --- /dev/null +++ b/testdata/doh_downstream_notls.tdir/doh_downstream_notls.testns @@ -0,0 +1,74 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www2 IN A +SECTION ANSWER +www2 IN A 10.20.30.42 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www3 IN A +SECTION ANSWER +www3 IN A 10.20.30.43 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www4 IN A +SECTION ANSWER +www4 IN A 10.20.30.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www5 IN A +SECTION ANSWER +www5 IN A 10.20.30.45 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www6 IN A +SECTION ANSWER +www6 IN A 10.20.30.46 +ENTRY_END + +; lots of noerror/nodata answers for other queries (a.. queries) +ENTRY_BEGIN +MATCH opcode qtype subdomain +REPLY QR AA NOERROR +ADJUST copy_id copy_query +SECTION QUESTION +a.example.com. IN A +SECTION AUTHORITY +example.com. IN SOA ns hostmaster 2019 28800 7200 604800 3600 +ENTRY_END diff --git a/testdata/doh_downstream_notls.tdir/unbound_server.key b/testdata/doh_downstream_notls.tdir/unbound_server.key new file mode 100644 index 000000000..4256c421d --- /dev/null +++ b/testdata/doh_downstream_notls.tdir/unbound_server.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA +3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s +RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB +AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS +6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds +sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi +XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 +fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL +CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP +0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 +oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l +In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S +LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +-----END RSA PRIVATE KEY----- diff --git a/testdata/doh_downstream_notls.tdir/unbound_server.pem b/testdata/doh_downstream_notls.tdir/unbound_server.pem new file mode 100644 index 000000000..aeda3ff11 --- /dev/null +++ b/testdata/doh_downstream_notls.tdir/unbound_server.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE +AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS +y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ +/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu +g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ +9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG +l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH +Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +-----END CERTIFICATE----- From ab9d732796901a4851491934d130320c45610387 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 19 Oct 2020 11:06:55 +0200 Subject: [PATCH 25/38] - Log ip address when http session recv fails, eg. due to tls fail. --- doc/Changelog | 1 + util/netevent.c | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 7bcef8c94..a84f73edf 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -8,6 +8,7 @@ and the dohclient test code has the -n option. - Fix python documentation warning on functions.rst inplace_cb_reply. - Fix dnstap test to wait for log timer to see if queries are logged. + - Log ip address when http session recv fails, eg. due to tls fail. 16 October 2020: Wouter - Fix that the out of order TCP processing does not limit the diff --git a/util/netevent.c b/util/netevent.c index e8aba4736..a40f44dd0 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -2449,8 +2449,11 @@ comm_point_http2_handle_read(int ATTR_UNUSED(fd), struct comm_point* c) if(ret) { if(ret != NGHTTP2_ERR_EOF && ret != NGHTTP2_ERR_CALLBACK_FAILURE) { - verbose(VERB_QUERY, "http2: session_recv failed, " - "error: %s", nghttp2_strerror(ret)); + char a[256]; + addr_to_str(&c->repinfo.addr, c->repinfo.addrlen, + a, sizeof(a)); + verbose(VERB_QUERY, "http2: session_recv from %s failed, " + "error: %s", a, nghttp2_strerror(ret)); } return 0; } From 8861fb17fa1f0b71dbab787b66f23aa4b9ba46c7 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Mon, 19 Oct 2020 11:22:38 +0200 Subject: [PATCH 26/38] Changelog entry for local-zone out of chunk regional allocation --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index a84f73edf..b09e0aeee 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +19 October 2020: Ralph + - local-zone regional allocations outside of chunk + 19 October 2020: Wouter - Fix that http settings have colon in set_option, for http-endpoint, http-max-streams, http-query-buffer-size, From 68c57314c4e02079569ed697b9273fa9faaafeb6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 19 Oct 2020 12:55:43 +0200 Subject: [PATCH 27/38] - Fix to set the tcp handler event toggle flag back to default when the handler structure is reused. --- doc/Changelog | 2 ++ util/netevent.c | 1 + 2 files changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index b09e0aeee..3f1c70a8d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -12,6 +12,8 @@ - Fix python documentation warning on functions.rst inplace_cb_reply. - Fix dnstap test to wait for log timer to see if queries are logged. - Log ip address when http session recv fails, eg. due to tls fail. + - Fix to set the tcp handler event toggle flag back to default when + the handler structure is reused. 16 October 2020: Wouter - Fix that the out of order TCP processing does not limit the diff --git a/util/netevent.c b/util/netevent.c index a40f44dd0..1e501b9ab 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -965,6 +965,7 @@ comm_point_tcp_accept_callback(int fd, short event, void* arg) /* clear leftover flags from previous use, and then set the * correct event base for the event structure for libevent */ ub_event_free(c_hdl->ev->ev); + c_hdl->tcp_do_toggle_rw = 1; if(c_hdl->type == comm_http) { #ifdef HAVE_NGHTTP2 From 531ce9e85c4d715c0e5f801fcaf0c56c71602b8a Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 19 Oct 2020 13:36:53 +0200 Subject: [PATCH 28/38] Fixup for clear of tcp handler structure. --- util/netevent.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/util/netevent.c b/util/netevent.c index 1e501b9ab..2428417fa 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -965,7 +965,10 @@ comm_point_tcp_accept_callback(int fd, short event, void* arg) /* clear leftover flags from previous use, and then set the * correct event base for the event structure for libevent */ ub_event_free(c_hdl->ev->ev); - c_hdl->tcp_do_toggle_rw = 1; + if((c_hdl->type == comm_tcp && c_hdl->tcp_req_info) || + c_hdl->type == comm_local || c_hdl->type == comm_raw) + c_hdl->tcp_do_toggle_rw = 0; + else c_hdl->tcp_do_toggle_rw = 1; if(c_hdl->type == comm_http) { #ifdef HAVE_NGHTTP2 From 61922ce9dacb7f4088d66d38ba1644170cc46105 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 19 Oct 2020 13:39:02 +0200 Subject: [PATCH 29/38] - Clean the fix for out of order TCP processing limits on number of queries. It was tested to work. --- doc/Changelog | 2 ++ services/listen_dnsport.c | 6 +----- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 3f1c70a8d..89c26958f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -14,6 +14,8 @@ - Log ip address when http session recv fails, eg. due to tls fail. - Fix to set the tcp handler event toggle flag back to default when the handler structure is reused. + - Clean the fix for out of order TCP processing limits on number + of queries. It was tested to work. 16 October 2020: Wouter - Fix that the out of order TCP processing does not limit the diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index d4f912db5..e506eeb31 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -81,9 +81,6 @@ /** number of queued TCP connections for listen() */ #define TCP_BACKLOG 256 -/** number of simultaneous requests a client can have */ -/* #define TCP_MAX_REQ_SIMULTANEOUS 32 */ - #ifndef THREADS_DISABLED /** lock on the counter of stream buffer memory */ static lock_basic_type stream_wait_count_lock; @@ -1809,8 +1806,7 @@ tcp_req_info_setup_listen(struct tcp_req_info* req) if(!req->cp->tcp_is_reading) wr = 1; - if(/*req->num_open_req + req->num_done_req < TCP_MAX_REQ_SIMULTANEOUS &&*/ - !req->read_is_closed) + if(!req->read_is_closed) rd = 1; if(wr) { From 50178d764aa2a0b42128e739a13a648deb4af296 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 19 Oct 2020 15:00:30 +0200 Subject: [PATCH 30/38] - Fix for attaching the X509v3 extensions to the client certificate. --- smallapp/unbound-control-setup.sh.in | 3 +++ 1 file changed, 3 insertions(+) diff --git a/smallapp/unbound-control-setup.sh.in b/smallapp/unbound-control-setup.sh.in index 6b5e0dbbf..eaf1d082c 100644 --- a/smallapp/unbound-control-setup.sh.in +++ b/smallapp/unbound-control-setup.sh.in @@ -120,6 +120,7 @@ if [ ! -f "$SVR_BASE.key" ]; then fi cat >server.cnf < Date: Mon, 19 Oct 2020 15:10:17 +0200 Subject: [PATCH 31/38] - Changelog entry for PR #324: Add modern X.509v3 extensions to unbound-control TLS certificates, by James Renken. --- doc/Changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 89c26958f..61d2d4859 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,9 @@ +19 October 2020: George + - Merge PR #324 from James Renken: Add modern X.509v3 extensions to + unbound-control TLS certificates. + - Fix for PR #324 to attach the x509v3 extensions to the client + certificate. + 19 October 2020: Ralph - local-zone regional allocations outside of chunk From 725d4822e7ba0fbf6c4d07b6e38fc989d03139a5 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 21 Oct 2020 10:35:47 +0200 Subject: [PATCH 32/38] Changelog note for #228 - Merge PR #228 : infra-keep-probing option to probe hosts that are down. Add infra-keep-probing: yes option. Hosts that are down are probed more frequently. With the option turned on, it probes about every 120 seconds, eventually after exponential backoff, and that keeps that way. If traffic keeps up for the domain. It probes with one at a time, eg. one query is allowed to probe, other queries within that 120 second interval are turned away. --- doc/Changelog | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 61d2d4859..b7e5928ca 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,13 @@ +21 October 2020: Wouter + - Merge PR #228 : infra-keep-probing option to probe hosts that are + down. Add infra-keep-probing: yes option. Hosts that are down are + probed more frequently. + With the option turned on, it probes about every 120 seconds, + eventually after exponential backoff, and that keeps that way. If + traffic keeps up for the domain. It probes with one at a time, eg. + one query is allowed to probe, other queries within that 120 second + interval are turned away. + 19 October 2020: George - Merge PR #324 from James Renken: Add modern X.509v3 extensions to unbound-control TLS certificates. From ee3f26bb3d989c68868800321a228208d4892ade Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 21 Oct 2020 10:56:51 +0200 Subject: [PATCH 33/38] Add verbosity to debug occasional missing q1-10.example.net, from timer. --- testdata/dnstap.tdir/dnstap.pre | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testdata/dnstap.tdir/dnstap.pre b/testdata/dnstap.tdir/dnstap.pre index 95216949c..6561d77e9 100644 --- a/testdata/dnstap.tdir/dnstap.pre +++ b/testdata/dnstap.tdir/dnstap.pre @@ -45,7 +45,7 @@ fi # make config file sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' -e 's/@CONTROL_PORT\@/'$CONTROL_PORT'/' < dnstap.conf > ub.conf # start unbound in the background -$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +$PRE/unbound -d -c ub.conf -vvvv >unbound.log 2>&1 & UNBOUND_PID=$! echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test From 7c39cbc0a9a5917f3e1e4e6e5ab773364c563d21 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 21 Oct 2020 16:45:18 +0200 Subject: [PATCH 34/38] - Fix #327: net/if.h check fails on some darwin versions; contribution by Joshua Root. --- configure | 30 +++++++++++++++++++++++++++++- configure.ac | 18 +++++++++++++++++- doc/Changelog | 4 ++++ 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 9a96bb232..3e5e562ae 100755 --- a/configure +++ b/configure @@ -14745,7 +14745,7 @@ $as_echo "no" >&6; } fi # Checks for header files. -for ac_header in stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/select.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h ifaddrs.h net/if.h +for ac_header in stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/select.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h ifaddrs.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default @@ -14759,6 +14759,34 @@ fi done +# net/if.h portability for Darwin see: +# https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Header-Portability.html +for ac_header in net/if.h +do : + ac_fn_c_check_header_compile "$LINENO" "net/if.h" "ac_cv_header_net_if_h" " +#include +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_SYS_SOCKET_H +# include +#endif + +" +if test "x$ac_cv_header_net_if_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_NET_IF_H 1 +_ACEOF + +fi + +done + # Check for Apple header. This uncovers TARGET_OS_IPHONE, TARGET_OS_TV or TARGET_OS_WATCH for ac_header in TargetConditionals.h diff --git a/configure.ac b/configure.ac index 2bd44353d..b4caa37dd 100644 --- a/configure.ac +++ b/configure.ac @@ -400,7 +400,23 @@ ACX_LIBTOOL_C_ONLY PKG_PROG_PKG_CONFIG # Checks for header files. -AC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/select.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h ifaddrs.h net/if.h],,, [AC_INCLUDES_DEFAULT]) +AC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/select.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h ifaddrs.h],,, [AC_INCLUDES_DEFAULT]) +# net/if.h portability for Darwin see: +# https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Header-Portability.html +AC_CHECK_HEADERS([net/if.h],,, [ +#include +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_SYS_SOCKET_H +# include +#endif +]) # Check for Apple header. This uncovers TARGET_OS_IPHONE, TARGET_OS_TV or TARGET_OS_WATCH AC_CHECK_HEADERS([TargetConditionals.h]) diff --git a/doc/Changelog b/doc/Changelog index b7e5928ca..9d484a96d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +21 October 2020: George + - Fix #327: net/if.h check fails on some darwin versions; contribution by + Joshua Root. + 21 October 2020: Wouter - Merge PR #228 : infra-keep-probing option to probe hosts that are down. Add infra-keep-probing: yes option. Hosts that are down are From 0272889c44139b187ba1b0bc681c81b4894f8956 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 21 Oct 2020 17:44:04 +0200 Subject: [PATCH 35/38] - Fix #320: potential memory corruption due to size miscomputation upton custom region alloc init. --- doc/Changelog | 2 ++ util/regional.c | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 9d484a96d..d3aa5d2ad 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,8 @@ 21 October 2020: George - Fix #327: net/if.h check fails on some darwin versions; contribution by Joshua Root. + - Fix #320: potential memory corruption due to size miscomputation upton + custom region alloc init. 21 October 2020: Wouter - Merge PR #228 : infra-keep-probing option to probe hosts that are diff --git a/util/regional.c b/util/regional.c index 01a042b61..bd67ecf50 100644 --- a/util/regional.c +++ b/util/regional.c @@ -89,8 +89,9 @@ regional_init(struct regional* r) static struct regional* regional_create_custom_large_object(size_t size, size_t large_object_size) { - struct regional* r = (struct regional*)malloc(size); + struct regional* r; size = ALIGN_UP(size, ALIGNMENT); + r = (struct regional*)malloc(size); log_assert(sizeof(struct regional) <= size); if(!r) return NULL; r->first_size = size; From ca39cfd6ae73e3c97dd2a21f62b5134994e4b146 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 22 Oct 2020 08:47:40 +0200 Subject: [PATCH 36/38] - Fix #333: Unbound Segmentation Fault w/ log_info Functions From Python Mod. --- doc/Changelog | 4 ++++ pythonmod/interface.i | 26 ++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index d3aa5d2ad..776643c46 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +22 October 2020: Wouter + - Fix #333: Unbound Segmentation Fault w/ log_info Functions From + Python Mod. + 21 October 2020: George - Fix #327: net/if.h check fails on some darwin versions; contribution by Joshua Root. diff --git a/pythonmod/interface.i b/pythonmod/interface.i index 71f2bf774..cbee4f714 100644 --- a/pythonmod/interface.i +++ b/pythonmod/interface.i @@ -1413,6 +1413,19 @@ struct delegpt* find_delegation(struct module_qstate* qstate, char *nm, size_t n /****************************** * Various debugging functions * ******************************/ + +/* rename the variadic functions because python does the formatting already*/ +%rename (unbound_log_info) log_info; +%rename (unbound_log_err) log_err; +%rename (unbound_log_warn) log_warn; +%rename (unbound_verbose) verbose; +/* provide functions that take one string as argument, so python can cook +the string */ +%rename (log_info) pymod_log_info; +%rename (log_warn) pymod_log_warn; +%rename (log_err) pymod_log_err; +%rename (verbose) pymod_verbose; + void verbose(enum verbosity_value level, const char* format, ...); void log_info(const char* format, ...); void log_err(const char* format, ...); @@ -1422,6 +1435,19 @@ void log_dns_msg(const char* str, struct query_info* qinfo, struct reply_info* r void log_query_info(enum verbosity_value v, const char* str, struct query_info* qinf); void regional_log_stats(struct regional *r); +/* the one argument string log functions */ +void pymod_log_info(const char* str); +void pymod_log_err(const char* str); +void pymod_log_warn(const char* str); +void pymod_verbose(enum verbosity_value level, const char* str); +%{ +void pymod_log_info(const char* str) { log_info("%s", str); } +void pymod_log_err(const char* str) { log_err("%s", str); } +void pymod_log_warn(const char* str) { log_warn("%s", str); } +void pymod_verbose(enum verbosity_value level, const char* str) { + verbose(level, "%s", str); } +%} + /*************************************************************************** * Free allocated memory from marked sources returning corresponding types * ***************************************************************************/ From 4990dae87d6c28c8b2323d353ceca8489a3c4ca9 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 22 Oct 2020 09:26:27 +0200 Subject: [PATCH 37/38] - Fix that minimal-responses does not remove addresses from a priming query response. --- doc/Changelog | 2 ++ util/data/msgencode.c | 3 +++ 2 files changed, 5 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 776643c46..1201081d2 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,8 @@ 22 October 2020: Wouter - Fix #333: Unbound Segmentation Fault w/ log_info Functions From Python Mod. + - Fix that minimal-responses does not remove addresses from a priming + query response. 21 October 2020: George - Fix #327: net/if.h check fails on some darwin versions; contribution by diff --git a/util/data/msgencode.c b/util/data/msgencode.c index be69f628a..1746cfbb8 100644 --- a/util/data/msgencode.c +++ b/util/data/msgencode.c @@ -624,6 +624,9 @@ positive_answer(struct reply_info* rep, uint16_t qtype) { for(i=0;ian_numrrsets; i++) { if(ntohs(rep->rrsets[i]->rk.type) == qtype) { + /* for priming queries, type NS, include addresses */ + if(qtype == LDNS_RR_TYPE_NS) + return 0; /* in case it is a wildcard with DNSSEC, there will * be NSEC/NSEC3 records in the authority section * that we cannot remove */ From d104727c911cc6147bdec458831c606ecc853da6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 27 Oct 2020 09:00:26 +0100 Subject: [PATCH 38/38] - In man page note that tls-cert-bundle is read before permission drop and chroot. --- doc/Changelog | 4 ++++ doc/unbound.conf.5.in | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 1201081d2..181aaad05 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +27 October 2020: Wouter + - In man page note that tls-cert-bundle is read before permission + drop and chroot. + 22 October 2020: Wouter - Fix #333: Unbound Segmentation Fault w/ log_info Functions From Python Mod. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 0b73480aa..84805f90f 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -522,7 +522,8 @@ Alternate syntax for \fBtls\-port\fR. If null or "", no file is used. Set it to the certificate bundle file, for example "/etc/pki/tls/certs/ca\-bundle.crt". These certificates are used for authenticating connections made to outside peers. For example auth\-zone -urls, and also DNS over TLS connections. +urls, and also DNS over TLS connections. It is read at start up before +permission drop and chroot. .TP .B ssl\-cert\-bundle: \fI Alternate syntax for \fBtls\-cert\-bundle\fR.