diff options
Diffstat (limited to 'util')
| -rw-r--r-- | util/config_file.c | 71 | ||||
| -rw-r--r-- | util/config_file.h | 27 | ||||
| -rw-r--r-- | util/configlexer.c | 6824 | ||||
| -rw-r--r-- | util/configlexer.lex | 6 | ||||
| -rw-r--r-- | util/configparser.c | 5645 | ||||
| -rw-r--r-- | util/configparser.h | 783 | ||||
| -rw-r--r-- | util/configparser.y | 87 | ||||
| -rw-r--r-- | util/configyyrename.h | 6 | ||||
| -rw-r--r-- | util/data/msgencode.c | 63 | ||||
| -rw-r--r-- | util/data/msgparse.c | 2 | ||||
| -rw-r--r-- | util/data/msgparse.h | 4 | ||||
| -rw-r--r-- | util/data/msgreply.c | 36 | ||||
| -rw-r--r-- | util/data/msgreply.h | 20 | ||||
| -rw-r--r-- | util/data/packed_rrset.c | 17 | ||||
| -rw-r--r-- | util/data/packed_rrset.h | 3 | ||||
| -rw-r--r-- | util/edns.c | 16 | ||||
| -rw-r--r-- | util/iana_ports.inc | 2 | ||||
| -rw-r--r-- | util/module.h | 4 | ||||
| -rw-r--r-- | util/net_help.c | 2 | ||||
| -rw-r--r-- | util/netevent.c | 122 | ||||
| -rw-r--r-- | util/netevent.h | 12 | ||||
| -rw-r--r-- | util/storage/lruhash.c | 4 |
22 files changed, 7420 insertions, 6336 deletions
diff --git a/util/config_file.c b/util/config_file.c index 4c827b74e7e0..4d87dee9b496 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -220,7 +220,7 @@ config_create(void) cfg->views = NULL; cfg->acls = NULL; cfg->tcp_connection_limits = NULL; - cfg->harden_short_bufsize = 0; + cfg->harden_short_bufsize = 1; cfg->harden_large_queries = 0; cfg->harden_glue = 1; cfg->harden_dnssec_stripped = 1; @@ -237,6 +237,9 @@ config_create(void) cfg->hide_trustanchor = 0; cfg->identity = NULL; cfg->version = NULL; + cfg->nsid_cfg_str = NULL; + cfg->nsid = NULL; + cfg->nsid_len = 0; cfg->auto_trust_anchor_file_list = NULL; cfg->trust_anchor_file_list = NULL; cfg->trust_anchor_list = NULL; @@ -258,6 +261,7 @@ config_create(void) cfg->serve_expired_ttl_reset = 0; cfg->serve_expired_reply_ttl = 30; cfg->serve_expired_client_timeout = 0; + cfg->serve_original_ttl = 0; cfg->add_holddown = 30*24*3600; cfg->del_holddown = 30*24*3600; cfg->keep_missing = 366*24*3600; /* one year plus a little leeway */ @@ -335,6 +339,10 @@ config_create(void) cfg->dnscrypt_shared_secret_cache_slabs = 4; cfg->dnscrypt_nonce_cache_size = 4*1024*1024; cfg->dnscrypt_nonce_cache_slabs = 4; + cfg->pad_responses = 1; + cfg->pad_responses_block_size = 468; /* from RFC8467 */ + cfg->pad_queries = 1; + cfg->pad_queries_block_size = 128; /* from RFC8467 */ #ifdef USE_IPSECMOD cfg->ipsecmod_enabled = 1; cfg->ipsecmod_ignore_bogus = 0; @@ -388,6 +396,7 @@ struct config_file* config_create_forlib(void) cfg->val_log_level = 2; /* to fill why_bogus with */ cfg->val_log_squelch = 1; cfg->minimal_responses = 0; + cfg->harden_short_bufsize = 1; return cfg; } @@ -580,6 +589,20 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_YNO("hide-trustanchor:", hide_trustanchor) else S_STR("identity:", identity) else S_STR("version:", version) + else if(strcmp(opt, "nsid:") == 0) { + free(cfg->nsid_cfg_str); + if (!(cfg->nsid_cfg_str = strdup(val))) + return 0; + /* Empty string is just validly unsetting nsid */ + if (*val == 0) { + free(cfg->nsid); + cfg->nsid = NULL; + cfg->nsid_len = 0; + return 1; + } + cfg->nsid = cfg_parse_nsid(val, &cfg->nsid_len); + return cfg->nsid != NULL; + } else S_STRLIST("root-hints:", root_hints) else S_STR("target-fetch-policy:", target_fetch_policy) else S_YNO("harden-glue:", harden_glue) @@ -624,6 +647,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else if(strcmp(opt, "serve-expired-reply-ttl:") == 0) { IS_NUMBER_OR_ZERO; cfg->serve_expired_reply_ttl = atoi(val); SERVE_EXPIRED_REPLY_TTL=(time_t)cfg->serve_expired_reply_ttl;} else S_NUMBER_OR_ZERO("serve-expired-client-timeout:", serve_expired_client_timeout) + else S_YNO("serve-original-ttl:", serve_original_ttl) else S_STR("val-nsec3-keysize-iterations:", val_nsec3_key_iterations) else S_UNSIGNED_OR_ZERO("add-holddown:", add_holddown) else S_UNSIGNED_OR_ZERO("del-holddown:", del_holddown) @@ -719,6 +743,10 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_NUMBER_OR_ZERO("fast-server-permil:", fast_server_permil) else S_YNO("qname-minimisation:", qname_minimisation) else S_YNO("qname-minimisation-strict:", qname_minimisation_strict) + else S_YNO("pad-responses:", pad_responses) + else S_SIZET_NONZERO("pad-responses-block-size:", pad_responses_block_size) + else S_YNO("pad-queries:", pad_queries) + else S_SIZET_NONZERO("pad-queries-block-size:", pad_queries_block_size) #ifdef USE_IPSECMOD else S_YNO("ipsecmod-enabled:", ipsecmod_enabled) else S_YNO("ipsecmod-ignore-bogus:", ipsecmod_ignore_bogus) @@ -1015,6 +1043,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_YNO(opt, "hide-trustanchor", hide_trustanchor) else O_STR(opt, "identity", identity) else O_STR(opt, "version", version) + else O_STR(opt, "nsid", nsid_cfg_str) else O_STR(opt, "target-fetch-policy", target_fetch_policy) else O_YNO(opt, "harden-short-bufsize", harden_short_bufsize) else O_YNO(opt, "harden-large-queries", harden_large_queries) @@ -1039,6 +1068,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_YNO(opt, "serve-expired-ttl-reset", serve_expired_ttl_reset) else O_DEC(opt, "serve-expired-reply-ttl", serve_expired_reply_ttl) else O_DEC(opt, "serve-expired-client-timeout", serve_expired_client_timeout) + else O_YNO(opt, "serve-original-ttl", serve_original_ttl) else O_STR(opt, "val-nsec3-keysize-iterations",val_nsec3_key_iterations) else O_UNS(opt, "add-holddown", add_holddown) else O_UNS(opt, "del-holddown", del_holddown) @@ -1158,6 +1188,10 @@ config_get_option(struct config_file* cfg, const char* opt, else O_LS3(opt, "access-control-tag-action", acl_tag_actions) else O_LS3(opt, "access-control-tag-data", acl_tag_datas) else O_LS2(opt, "access-control-view", acl_view) + else O_YNO(opt, "pad-responses", pad_responses) + else O_DEC(opt, "pad-responses-block-size", pad_responses_block_size) + else O_YNO(opt, "pad-queries", pad_queries) + else O_DEC(opt, "pad-queries-block-size", pad_queries_block_size) else O_LS2(opt, "edns-client-strings", edns_client_strings) #ifdef USE_IPSECMOD else O_YNO(opt, "ipsecmod-enabled", ipsecmod_enabled) @@ -1482,6 +1516,8 @@ config_delete(struct config_file* cfg) #endif free(cfg->identity); free(cfg->version); + free(cfg->nsid_cfg_str); + free(cfg->nsid); free(cfg->module_conf); free(cfg->outgoing_avail_ports); config_delstrlist(cfg->caps_whitelist); @@ -2020,6 +2056,38 @@ uint8_t* config_parse_taglist(struct config_file* cfg, char* str, return taglist; } +uint8_t* cfg_parse_nsid(const char* str, uint16_t* nsid_len) +{ + uint8_t* nsid = NULL; + + if (strncasecmp(str, "ascii_", 6) == 0) { + if ((nsid = (uint8_t *)strdup(str + 6))) + *nsid_len = strlen(str + 6); + + } else if (strlen(str) % 2) { + ; /* hex string has even number of characters */ + } + + else if (*str && (nsid = calloc(1, strlen(str) / 2))) { + const char *ch; + uint8_t *dp; + + for ( ch = str, dp = nsid + ; isxdigit(ch[0]) && isxdigit(ch[1]) + ; ch += 2, dp++) { + *dp = (uint8_t)sldns_hexdigit_to_int(ch[0]) * 16; + *dp += (uint8_t)sldns_hexdigit_to_int(ch[1]); + } + if (*ch) { + free(nsid); + nsid = NULL; + } else + *nsid_len = strlen(str) / 2; + } + return nsid; +} + + char* config_taglist2str(struct config_file* cfg, uint8_t* taglist, size_t taglen) { @@ -2062,6 +2130,7 @@ config_apply(struct config_file* config) SERVE_EXPIRED = config->serve_expired; SERVE_EXPIRED_TTL = (time_t)config->serve_expired_ttl; SERVE_EXPIRED_REPLY_TTL = (time_t)config->serve_expired_reply_ttl; + SERVE_ORIGINAL_TTL = config->serve_original_ttl; MAX_NEG_TTL = (time_t)config->max_negative_ttl; RTT_MIN_TIMEOUT = config->infra_cache_min_rtt; EDNS_ADVERTISED_SIZE = (uint16_t)config->edns_buffer_size; diff --git a/util/config_file.h b/util/config_file.h index 556544021538..7cf27cc2c3e3 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -338,6 +338,10 @@ struct config_file { char* identity; /** version, package version returned if "". */ char* version; + /** nsid */ + char *nsid_cfg_str; + uint8_t *nsid; + uint16_t nsid_len; /** the module configuration string */ char* module_conf; @@ -388,6 +392,8 @@ struct config_file { /** serve expired entries only after trying to update the entries and this * timeout (in milliseconds) is reached */ int serve_expired_client_timeout; + /** serve original TTLs rather than decrementing ones */ + int serve_original_ttl; /** nsec3 maximum iterations per key size, string */ char* val_nsec3_key_iterations; /** autotrust add holddown time, in seconds */ @@ -596,6 +602,17 @@ struct config_file { size_t dnscrypt_nonce_cache_size; /** number of slabs for dnscrypt nonces cache */ size_t dnscrypt_nonce_cache_slabs; + + /** EDNS padding according to RFC7830 and RFC8467 */ + /** true to enable padding of responses (default: on) */ + int pad_responses; + /** block size with which to pad encrypted responses (default: 468) */ + size_t pad_responses_block_size; + /** true to enable padding of queries (default: on) */ + int pad_queries; + /** block size with which to pad encrypted queries (default: 128) */ + size_t pad_queries_block_size; + /** IPsec module */ #ifdef USE_IPSECMOD /** false to bypass the IPsec module */ @@ -1071,6 +1088,16 @@ int cfg_count_numbers(const char* str); int cfg_parse_memsize(const char* str, size_t* res); /** + * Parse nsid from string into binary nsid. nsid is either a hexidecimal + * string or an ascii string prepended with ascii_ in which case the + * characters after ascii_ are simply copied. + * @param str: the string to parse. + * @param nsid_len: returns length of nsid in bytes. + * @return malloced bytes or NULL on parse error or malloc failure. + */ +uint8_t* cfg_parse_nsid(const char* str, uint16_t* nsid_len); + +/** * Add a tag name to the config. It is added at the end with a new ID value. * @param cfg: the config structure. * @param tag: string (which is copied) with the name. diff --git a/util/configlexer.c b/util/configlexer.c index 01f295ec30b8..5e51c68869aa 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 337 -#define YY_END_OF_BUFFER 338 +#define YY_NUM_RULES 343 +#define YY_END_OF_BUFFER 344 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,371 +363,377 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3292] = +static const flex_int16_t yy_accept[3354] = { 0, - 1, 1, 311, 311, 315, 315, 319, 319, 323, 323, - 1, 1, 327, 327, 331, 331, 338, 335, 1, 309, - 309, 336, 2, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 336, 311, 312, 312, 313, - 336, 315, 316, 316, 317, 336, 322, 319, 320, 320, - 321, 336, 323, 324, 324, 325, 336, 334, 310, 2, - 314, 334, 336, 330, 327, 328, 328, 329, 336, 331, - 332, 332, 333, 336, 335, 0, 1, 2, 2, 2, - 2, 335, 335, 335, 335, 335, 335, 335, 335, 335, - - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 311, 0, 315, - 0, 322, 0, 319, 323, 0, 334, 0, 2, 2, - 334, 330, 0, 327, 331, 0, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 334, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 125, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 134, 335, 335, 335, 335, 335, 335, - 335, 334, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 109, 335, 335, 335, 335, 335, 335, 8, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 126, 335, 335, - - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 139, 335, - 334, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 302, 335, - - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - - 335, 334, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 64, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 238, - 335, 14, 15, 335, 19, 18, 335, 335, 222, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 132, 335, 335, 335, 335, 335, 335, 335, 335, 335, - - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 220, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 3, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 334, 335, 335, 335, - 335, 335, 335, 335, 296, 335, 335, 295, 335, 335, - - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 318, 335, 335, 335, 335, - 335, 335, 335, 335, 63, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 67, 335, 269, 335, 335, 335, 335, 335, 335, - 335, 335, 303, 304, 335, 335, 335, 335, 335, 68, - - 335, 335, 133, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 129, 335, 335, - 335, 335, 335, 335, 335, 335, 209, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 21, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 158, 335, 335, - 334, 318, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - - 335, 335, 335, 107, 335, 335, 335, 335, 335, 335, - 335, 277, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 181, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 157, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - - 335, 335, 106, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 32, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 33, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 65, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 131, 334, 335, 335, - 335, 335, 335, 124, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 66, - - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 242, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 182, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 54, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 260, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 58, 335, 59, 335, 335, 335, - 335, 335, 110, 335, 111, 335, 335, 335, 335, 108, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 7, - 335, 334, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - - 231, 335, 335, 335, 335, 160, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 243, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 45, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 55, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 201, 335, 200, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 16, 17, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 69, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 208, 335, 335, 335, 335, 335, 335, 113, 335, 112, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 192, 335, 335, 335, 335, 335, 335, 335, - 335, 140, 334, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 101, 335, 335, 335, 335, 335, 335, - - 335, 335, 335, 89, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 221, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 94, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 62, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 195, - 196, 335, 335, 335, 271, 335, 335, 335, 335, 335, - - 335, 335, 335, 335, 335, 335, 335, 6, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 275, - 335, 335, 335, 335, 335, 335, 297, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 42, 335, 335, - 335, 335, 44, 335, 335, 335, 90, 335, 335, 335, - 335, 335, 52, 335, 335, 335, 335, 335, 335, 335, - 334, 335, 188, 335, 335, 335, 135, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 213, 335, 189, - - 335, 335, 335, 228, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 53, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 137, 118, 335, 119, 335, - 335, 335, 117, 335, 335, 335, 335, 335, 335, 335, - 335, 155, 335, 335, 50, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 259, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 190, 335, 335, 335, 335, 335, 193, 335, 199, - 335, 335, 335, 335, 335, 227, 335, 335, 335, 335, - - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 105, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 130, - 335, 335, 335, 335, 335, 335, 60, 335, 335, 335, - 26, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 20, 335, 335, 335, 335, 335, 335, 27, 36, 335, - 165, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 334, 335, 335, 335, 335, 335, - 335, 77, 79, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 279, 335, 335, 335, - - 335, 239, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 120, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 154, 335, 46, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 290, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 159, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 219, 335, 335, 335, 335, 335, 335, 335, 335, - - 335, 300, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 176, 335, 335, 335, 335, 335, 335, - 335, 335, 114, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 171, 335, 183, 335, 335, 335, 335, 334, - 335, 143, 335, 335, 335, 335, 335, 100, 335, 335, - 335, 335, 211, 335, 335, 335, 335, 335, 335, 229, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 251, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 136, 335, 335, - - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 175, 335, 335, 335, 335, 335, 335, 80, - 335, 81, 335, 335, 335, 335, 335, 61, 293, 335, - 335, 335, 335, 335, 88, 184, 335, 202, 335, 232, - 335, 335, 194, 272, 335, 335, 335, 335, 335, 73, - 335, 186, 335, 335, 335, 335, 335, 9, 335, 335, - 335, 104, 335, 335, 335, 335, 264, 335, 335, 335, - 335, 210, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 334, 335, 335, - 335, 335, 174, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 161, 335, 278, 335, 335, 335, 335, - 335, 250, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 223, 335, 335, 335, 335, 335, 270, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 294, 335, 185, 335, 335, 335, 335, 335, 335, 335, - - 72, 74, 335, 335, 335, 335, 335, 335, 335, 103, - 335, 335, 335, 335, 262, 335, 335, 335, 335, 274, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 215, 34, 28, 30, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 35, 335, 29, 31, 335, 335, - 335, 335, 335, 335, 335, 335, 99, 335, 335, 335, - 335, 335, 335, 334, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 217, 214, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 71, 335, 335, 335, 138, - - 335, 121, 335, 335, 335, 335, 335, 335, 335, 335, - 156, 47, 335, 335, 335, 326, 13, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 288, 335, 291, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 12, 335, 335, 22, 335, 335, 335, 268, 335, 335, - 335, 335, 276, 335, 335, 335, 75, 335, 225, 335, - 335, 335, 335, 216, 335, 335, 70, 335, 335, 335, - 335, 23, 335, 43, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 170, 169, 326, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 218, 212, - - 335, 230, 335, 335, 280, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 82, 335, 335, - 335, 335, 263, 335, 335, 335, 335, 198, 335, 335, - 335, 335, 224, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 298, 299, 167, 335, 335, 76, 335, 335, - 335, 335, 177, 335, 335, 115, 116, 335, 335, 335, - 335, 162, 335, 164, 335, 203, 335, 335, 335, 335, - 168, 335, 335, 233, 335, 335, 335, 335, 335, 335, - - 335, 145, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 241, 335, 335, 335, 335, 335, - 335, 335, 307, 335, 24, 335, 273, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 86, 204, 335, 335, 261, 335, 292, 335, 197, - 335, 335, 335, 335, 56, 335, 335, 335, 335, 4, - 335, 335, 335, 335, 128, 144, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 236, 37, 38, 335, 335, 335, - 335, 335, 335, 335, 281, 335, 335, 335, 335, 335, - - 335, 335, 249, 335, 335, 335, 335, 335, 335, 335, - 335, 207, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 85, 335, 57, 267, 335, 237, - 335, 335, 335, 335, 11, 335, 335, 335, 335, 335, - 335, 127, 335, 335, 335, 335, 205, 91, 335, 40, - 335, 335, 335, 335, 335, 335, 335, 335, 173, 335, - 335, 335, 335, 335, 147, 335, 335, 335, 335, 240, - 335, 335, 335, 335, 335, 248, 335, 335, 335, 335, - 141, 335, 335, 335, 122, 123, 335, 335, 335, 93, - 97, 92, 335, 335, 335, 335, 83, 335, 335, 335, - - 335, 335, 10, 335, 335, 335, 265, 301, 335, 335, - 335, 335, 306, 39, 335, 335, 335, 335, 335, 172, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 98, 96, 335, 51, 335, 335, 84, - 289, 335, 335, 335, 335, 335, 335, 335, 191, 335, - 335, 335, 335, 335, 206, 335, 335, 335, 335, 335, - 335, 335, 335, 163, 78, 335, 335, 335, 335, 335, - 282, 335, 335, 335, 335, 335, 335, 335, 245, 335, - 335, 244, 142, 335, 335, 95, 48, 335, 148, 149, - - 152, 153, 150, 151, 87, 335, 266, 335, 335, 335, - 335, 166, 335, 335, 335, 335, 335, 235, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 179, 178, 41, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 102, 335, 234, 335, - 258, 286, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 308, 335, 49, 5, 335, 335, 226, - 335, 335, 287, 335, 335, 335, 335, 335, 335, 335, - - 335, 335, 246, 25, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 247, 335, 335, 335, - 146, 335, 335, 335, 335, 335, 335, 335, 335, 180, - 335, 187, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 283, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 305, - 335, 335, 254, 335, 335, 335, 335, 335, 284, 335, - 335, 335, 335, 335, 335, 285, 335, 335, 335, 252, - 335, 255, 256, 335, 335, 335, 335, 335, 253, 257, - 0 - + 1, 1, 317, 317, 321, 321, 325, 325, 329, 329, + 1, 1, 333, 333, 337, 337, 344, 341, 1, 315, + 315, 342, 2, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 342, 317, 318, 318, 319, + 342, 321, 322, 322, 323, 342, 328, 325, 326, 326, + 327, 342, 329, 330, 330, 331, 342, 340, 316, 2, + 320, 340, 342, 336, 333, 334, 334, 335, 342, 337, + 338, 338, 339, 342, 341, 0, 1, 2, 2, 2, + 2, 341, 341, 341, 341, 341, 341, 341, 341, 341, + + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 317, + 0, 321, 0, 328, 0, 325, 329, 0, 340, 0, + 2, 2, 340, 336, 0, 333, 337, 0, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 340, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 125, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 134, + 341, 341, 341, 341, 341, 341, 341, 340, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 109, 341, 314, 341, + 341, 341, 341, 341, 341, 341, 8, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + + 341, 341, 341, 341, 341, 341, 126, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 139, 341, 340, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + + 341, 341, 341, 341, 341, 341, 341, 307, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 340, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 64, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 239, 341, 14, 15, 341, 19, 18, 341, 341, 223, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + + 341, 132, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 221, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 3, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + + 340, 341, 341, 341, 341, 341, 341, 341, 301, 341, + 341, 300, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 324, + 341, 341, 341, 341, 341, 341, 341, 341, 63, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 67, 341, 270, 341, 341, + + 341, 341, 341, 341, 341, 341, 308, 309, 341, 341, + 341, 341, 341, 341, 341, 68, 341, 341, 133, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 129, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 210, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 21, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 158, 341, 341, 340, 324, 341, + + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 107, 341, 341, 341, 341, 341, 341, 341, 278, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 182, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 157, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 106, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 32, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 33, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 65, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 131, 340, 341, 341, + + 341, 341, 341, 124, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 66, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 243, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 183, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 54, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 261, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 58, 341, 59, + 341, 341, 341, 341, 341, 110, 341, 111, 341, 341, + 341, 341, 108, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + + 341, 341, 7, 341, 340, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 232, 341, 341, 341, 341, 160, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 244, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 45, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 55, 341, 341, 341, 341, 341, 341, 341, + + 341, 341, 341, 341, 341, 341, 341, 202, 341, 201, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 16, 17, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 69, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 209, 341, 341, 341, + 341, 341, 341, 113, 341, 112, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 193, 341, + + 341, 341, 341, 341, 341, 341, 341, 140, 340, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 101, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 89, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 222, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 94, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 62, 341, 341, 341, + + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 196, 197, 341, 341, 341, + 272, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 6, 341, 341, 341, 341, 341, 341, + 291, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 276, 341, + 341, 341, 341, 341, 341, 302, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 42, 341, 341, + 341, 341, 44, 341, 341, 341, 90, 341, 341, 341, + + 341, 341, 52, 341, 341, 341, 341, 341, 341, 341, + 340, 341, 189, 341, 341, 341, 135, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 214, 341, 190, + 341, 341, 341, 229, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 53, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 137, 118, 341, 119, 341, + 341, 341, 117, 341, 341, 341, 341, 341, 341, 341, + 341, 155, 341, 341, 50, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + + 341, 260, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 191, 341, 341, 341, 341, 341, 194, 341, 200, + 341, 341, 341, 341, 341, 228, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 105, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 130, 341, 341, 341, 341, 341, 341, 341, 60, + 341, 341, 341, 26, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 20, 341, 341, 341, 341, 341, 341, + 27, 36, 341, 165, 341, 341, 341, 341, 341, 341, + + 341, 341, 341, 341, 341, 341, 341, 340, 341, 341, + 341, 341, 341, 341, 77, 79, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 280, + 341, 341, 341, 341, 240, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 120, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 154, 341, 46, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 295, 341, 341, 341, 341, 341, 341, 341, 341, + + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 159, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 289, 341, 341, 341, 220, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 305, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 176, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 114, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 171, + 341, 184, 341, 341, 341, 341, 340, 341, 143, 341, + 341, 341, 341, 341, 100, 341, 341, 341, 341, 212, + + 341, 341, 341, 341, 341, 341, 230, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 252, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 136, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 175, + 341, 341, 341, 341, 341, 341, 80, 341, 81, 341, + 341, 341, 341, 341, 61, 298, 341, 341, 341, 341, + 341, 88, 185, 341, 203, 341, 233, 341, 341, 195, + 273, 341, 341, 341, 341, 341, 73, 341, 187, 341, + 341, 341, 341, 341, 9, 341, 341, 341, 341, 341, + + 104, 341, 341, 341, 341, 265, 341, 341, 341, 341, + 211, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 340, 341, 341, + 341, 341, 174, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 161, 341, 279, 341, 341, 341, 341, + 341, 251, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 224, 341, 341, 341, 341, 341, 271, + + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 299, 341, 186, 341, 341, 341, 341, 341, 341, 341, + 72, 74, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 103, 341, 341, 341, 341, 263, 341, 341, 341, + 341, 275, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 216, 34, 28, 30, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 35, 341, 29, + 31, 341, 341, 341, 341, 341, 341, 341, 341, 99, + + 341, 341, 341, 341, 341, 341, 340, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 218, 215, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 71, 341, + 341, 341, 138, 341, 121, 341, 341, 341, 341, 341, + 341, 341, 341, 156, 47, 341, 341, 341, 332, 13, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 293, 341, 296, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 12, 341, 341, 22, 341, 341, 341, + 341, 341, 269, 341, 341, 341, 341, 277, 341, 341, + + 341, 75, 341, 226, 341, 341, 341, 341, 341, 217, + 341, 341, 70, 341, 341, 341, 341, 23, 341, 43, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 170, 169, 332, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 219, 213, 341, 231, 341, 341, + 281, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 82, 341, 341, 341, 341, 264, 341, + 341, 341, 341, 199, 341, 341, 341, 341, 225, 341, + + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 303, 304, 167, 341, 341, 76, 341, 341, 341, 341, + 177, 341, 341, 341, 115, 116, 341, 341, 341, 341, + 162, 341, 164, 341, 204, 341, 341, 341, 341, 168, + 341, 341, 234, 341, 341, 341, 341, 341, 341, 341, + 145, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 242, 341, 341, 341, 341, 341, 341, + 341, 312, 341, 24, 341, 274, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 86, 205, 341, 341, 262, 341, 297, 341, 198, 341, + + 341, 341, 341, 56, 341, 341, 341, 341, 341, 341, + 4, 341, 341, 341, 341, 128, 144, 341, 341, 341, + 181, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 237, 37, 38, 341, + 341, 341, 341, 341, 341, 341, 282, 341, 341, 341, + 341, 341, 341, 341, 250, 341, 341, 341, 341, 341, + 341, 341, 341, 208, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 85, 341, 57, 268, + 341, 238, 341, 341, 341, 341, 11, 341, 341, 341, + 341, 341, 341, 341, 341, 127, 341, 341, 341, 341, + + 206, 91, 341, 40, 341, 341, 341, 341, 341, 341, + 341, 341, 173, 341, 341, 341, 341, 341, 147, 341, + 341, 341, 341, 241, 341, 341, 341, 341, 341, 249, + 341, 341, 341, 341, 141, 341, 341, 341, 122, 123, + 341, 341, 341, 93, 97, 92, 341, 341, 341, 341, + 83, 341, 341, 341, 341, 341, 10, 341, 341, 341, + 341, 341, 266, 306, 341, 341, 341, 341, 311, 39, + 341, 341, 341, 341, 341, 172, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 98, + + 96, 341, 51, 341, 341, 84, 294, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 192, 341, 341, 341, + 341, 341, 207, 341, 341, 341, 341, 341, 341, 341, + 341, 163, 78, 341, 341, 341, 341, 341, 283, 341, + 341, 341, 341, 341, 341, 341, 246, 341, 341, 245, + 142, 341, 341, 95, 48, 341, 148, 149, 152, 153, + 150, 151, 87, 292, 341, 341, 267, 341, 341, 341, + 341, 166, 341, 341, 341, 341, 341, 236, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 179, 178, + + 41, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 290, 341, 341, 341, 341, 102, 341, + 235, 341, 259, 287, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 313, 341, 49, 5, 341, + 341, 227, 341, 341, 288, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 247, 25, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 248, 341, + 341, 341, 146, 341, 341, 341, 341, 341, 341, 341, + 341, 180, 341, 188, 341, 341, 341, 341, 341, 341, + + 341, 341, 341, 284, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 310, 341, 341, 255, 341, 341, 341, 341, 341, + 285, 341, 341, 341, 341, 341, 341, 286, 341, 341, + 341, 253, 341, 256, 257, 341, 341, 341, 341, 341, + 254, 258, 0 } ; static const YY_CHAR yy_ec[256] = @@ -773,743 +779,757 @@ static const YY_CHAR yy_meta[67] = 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3310] = +static const flex_int16_t yy_base[3372] = { 0, 0, 0, 64, 67, 70, 72, 78, 84, 89, 92, - 131, 137, 112, 118, 123, 142, 479, 435, 96, 9388, - 9388, 9388, 160, 185, 116, 183, 229, 132, 175, 173, - 232, 50, 66, 120, 263, 275, 151, 319, 134, 371, - 412, 286, 308, 283, 126, 237, 394, 9388, 9388, 9388, - 95, 385, 9388, 9388, 9388, 186, 366, 385, 9388, 9388, - 9388, 258, 340, 9388, 9388, 9388, 104, 338, 9388, 266, - 9388, 167, 349, 303, 319, 9388, 9388, 9388, 356, 273, - 9388, 9388, 9388, 146, 268, 368, 177, 0, 388, 0, - 0, 291, 270, 235, 346, 259, 339, 367, 178, 177, - - 226, 395, 373, 384, 377, 368, 410, 411, 309, 429, - 357, 408, 438, 423, 444, 446, 458, 462, 436, 467, - 483, 474, 470, 476, 488, 487, 489, 499, 482, 503, - 514, 510, 526, 516, 523, 520, 552, 363, 533, 515, - 554, 551, 250, 558, 548, 582, 561, 527, 553, 578, - 601, 575, 602, 596, 588, 605, 599, 208, 341, 205, - 236, 194, 628, 225, 180, 438, 158, 652, 656, 0, - 622, 152, 664, 176, 130, 454, 633, 659, 639, 646, - 654, 652, 664, 648, 655, 666, 658, 665, 705, 677, - 682, 707, 256, 716, 760, 710, 691, 693, 717, 718, - - 701, 704, 732, 721, 751, 741, 744, 746, 750, 748, - 767, 771, 808, 790, 759, 784, 290, 796, 807, 325, - 798, 715, 810, 783, 726, 811, 820, 825, 822, 817, - 815, 831, 827, 837, 853, 849, 858, 856, 852, 854, - 846, 874, 877, 857, 864, 876, 892, 881, 901, 885, - 902, 904, 891, 908, 916, 918, 895, 921, 911, 903, - 919, 680, 941, 926, 937, 928, 935, 942, 930, 944, - 938, 955, 947, 966, 968, 967, 975, 978, 962, 974, - 973, 976, 984, 971, 989, 1003, 1007, 1011, 144, 995, - 1019, 1023, 994, 999, 1005, 1021, 1018, 1022, 1033, 1015, - - 1048, 1042, 1058, 1051, 1056, 1054, 1066, 1068, 1047, 1046, - 1041, 1052, 1069, 1073, 1080, 1084, 1082, 1086, 1089, 1092, - 1102, 1094, 1085, 1115, 1096, 1141, 1111, 1109, 1119, 1152, - 1136, 1135, 1144, 1162, 1172, 1166, 1177, 1163, 1186, 1189, - 1143, 1176, 1200, 1205, 1187, 1204, 1199, 1188, 1190, 1203, - 1107, 1238, 9388, 1215, 1242, 1149, 1243, 1244, 1251, 1226, - 1269, 1237, 1259, 1217, 1252, 1275, 1292, 1340, 1264, 1297, - 1279, 1283, 1289, 9388, 1320, 1317, 1389, 1293, 1324, 1309, - 1342, 1325, 1307, 1322, 1345, 1338, 1224, 1353, 1335, 1371, - 1383, 1388, 1375, 1380, 1382, 1394, 1398, 1262, 1416, 1409, - - 1421, 1420, 1266, 1412, 1425, 1418, 1455, 1422, 1430, 1435, - 1444, 1457, 1463, 1468, 1470, 1475, 1448, 1464, 1461, 1469, - 1484, 1499, 1544, 1302, 1491, 1502, 1501, 1503, 1347, 1488, - 1511, 1516, 1510, 1518, 1504, 1532, 1528, 1542, 1547, 1540, - 1555, 1527, 1559, 1550, 1543, 1567, 1568, 1592, 1569, 1577, - 1560, 1586, 1599, 1603, 1594, 1608, 1605, 1590, 1613, 1596, - 9388, 1615, 1623, 1604, 1637, 1627, 1636, 9388, 1631, 1634, - 1633, 1641, 1632, 1656, 1661, 1657, 1658, 1659, 1663, 1673, - 1654, 1682, 1671, 1692, 1706, 1688, 1698, 1683, 1686, 1700, - 1711, 1693, 1712, 1710, 1709, 1727, 1767, 9388, 1722, 1730, - - 1719, 1733, 1731, 1757, 1771, 1750, 1758, 1785, 1755, 1794, - 1782, 1789, 1803, 1788, 1798, 1795, 1792, 1826, 1814, 1822, - 1820, 1821, 1815, 1831, 1830, 1824, 1844, 1846, 9388, 1841, - 1851, 1865, 1857, 1860, 1853, 1862, 1866, 1856, 1884, 1877, - 1883, 1867, 1887, 1721, 1870, 1886, 1905, 1894, 1904, 1902, - 1908, 1914, 1917, 1921, 1911, 1956, 1915, 1909, 1926, 1944, - 1945, 1949, 1957, 1963, 1938, 1948, 1958, 1964, 1943, 1965, - 1971, 1972, 1955, 1975, 1976, 1984, 1989, 1979, 1990, 1996, - 2007, 1998, 1988, 2014, 2002, 2006, 2017, 2022, 2016, 2039, - 2034, 2031, 2037, 2040, 2033, 2043, 2049, 2053, 9388, 2044, - - 2064, 2059, 2077, 2067, 2082, 2079, 2071, 2070, 2086, 2083, - 2097, 2098, 2092, 2107, 2108, 2101, 2112, 2110, 2106, 2099, - 2128, 2142, 2133, 2141, 2120, 2137, 2147, 2145, 2157, 2153, - 2134, 2161, 2162, 2154, 2158, 2177, 2175, 2160, 2181, 2186, - 2172, 2194, 2193, 2198, 2180, 2199, 2205, 2234, 2213, 2178, - 2229, 2217, 2233, 2221, 2224, 2227, 2228, 2226, 2238, 2248, - 2240, 2244, 2253, 2260, 2258, 2269, 2255, 2262, 2274, 2271, - 2265, 2272, 2286, 2275, 2287, 2282, 2304, 2297, 2301, 2280, - 2311, 2315, 2318, 2307, 2314, 2321, 2324, 2320, 2338, 2327, - 2337, 2350, 2351, 2356, 2363, 2342, 2359, 2364, 2362, 2365, - - 2367, 2370, 2369, 2377, 2384, 2396, 2392, 2395, 2389, 2412, - 2417, 2413, 2415, 2419, 9388, 2402, 2422, 2404, 2423, 2429, - 2408, 2425, 2435, 2430, 2451, 2445, 2434, 2444, 2490, 9388, - 2452, 9388, 9388, 2449, 9388, 9388, 2460, 2471, 9388, 2474, - 2479, 2457, 2493, 2504, 2507, 2500, 2496, 2489, 2498, 2486, - 2545, 2516, 2523, 2515, 2524, 2529, 2550, 2535, 2539, 2560, - 2534, 2562, 2583, 2561, 2581, 2578, 2589, 2595, 2598, 2597, - 2599, 2601, 2605, 2602, 2592, 2608, 2586, 2617, 2610, 2639, - 2627, 2629, 2645, 2630, 2635, 2628, 2622, 2653, 2651, 2664, - 9388, 2655, 2657, 2666, 2663, 2670, 2673, 2665, 2675, 2679, - - 2681, 2678, 2689, 2691, 2687, 2682, 2688, 2690, 2703, 2704, - 2717, 2700, 9388, 2713, 2715, 2705, 2720, 2726, 2730, 2731, - 2723, 2714, 2734, 2732, 2773, 2747, 2740, 2750, 2756, 2752, - 2775, 9388, 2779, 2771, 2763, 2780, 2766, 2768, 2774, 2777, - 2789, 2801, 2795, 2793, 2805, 2798, 2824, 2820, 2815, 2811, - 2819, 2825, 2821, 2834, 2840, 2843, 2832, 2844, 2845, 2849, - 2851, 2855, 2857, 2848, 2854, 2865, 2860, 2871, 2866, 2870, - 2888, 2890, 2876, 2887, 2884, 2881, 2904, 2893, 2906, 2892, - 2911, 2923, 2908, 2925, 2912, 2922, 2945, 2926, 2938, 2943, - 2934, 2939, 2953, 2948, 9388, 2936, 2950, 9388, 2949, 2954, - - 2952, 2999, 2989, 2978, 2969, 2992, 2970, 2994, 2991, 3000, - 3007, 3009, 3043, 3019, 3018, 3036, 3029, 3046, 3037, 3048, - 3054, 3039, 3055, 3021, 3056, 3067, 2951, 3059, 3058, 615, - 3070, 3071, 3065, 3073, 3120, 3078, 3097, 3089, 3092, 3105, - 3109, 3100, 3096, 3123, 3124, 3122, 3082, 3147, 3132, 3127, - 3141, 3158, 3074, 3156, 3155, 9388, 3161, 3159, 3171, 3172, - 3151, 3168, 3187, 3174, 9388, 3185, 3188, 3180, 3186, 3191, - 3189, 3201, 3202, 3211, 3210, 3214, 3223, 3227, 3228, 3229, - 3215, 9388, 3224, 9388, 3217, 3242, 3220, 3250, 3247, 3233, - 3263, 3266, 9388, 9388, 3267, 3261, 3275, 3216, 3269, 9388, - - 3284, 3283, 9388, 3303, 3278, 3287, 3259, 3296, 3295, 3302, - 3305, 3289, 3297, 3292, 3306, 3330, 3311, 9388, 3323, 3316, - 3331, 3340, 3333, 3341, 3350, 3339, 9388, 3348, 3343, 3363, - 3361, 3365, 3362, 3356, 3376, 3383, 3367, 3368, 3373, 3377, - 3378, 3402, 3404, 3403, 3410, 3411, 3407, 9388, 3395, 3397, - 3414, 3418, 3419, 3412, 3424, 3409, 3428, 3422, 3429, 3442, - 3452, 3440, 3449, 3443, 3468, 3469, 3450, 3466, 3472, 3454, - 3464, 3463, 91, 3476, 3474, 3485, 3481, 9388, 3488, 3482, - 3491, 128, 3499, 3501, 3502, 3492, 3508, 3520, 3503, 3527, - 3530, 3521, 3531, 3540, 3534, 3518, 3535, 3541, 3538, 3533, - - 3544, 3555, 3556, 9388, 3572, 3560, 3559, 3566, 3578, 3565, - 3601, 9388, 3587, 3594, 3598, 3589, 3600, 3582, 3610, 3605, - 3608, 3622, 3614, 3629, 3627, 3633, 3636, 3632, 3642, 9388, - 3645, 3647, 3657, 3644, 3663, 3651, 3658, 3665, 3666, 3677, - 3671, 3672, 3679, 3685, 3682, 3684, 3698, 3694, 3688, 3699, - 3702, 3708, 3718, 3712, 3724, 3715, 3713, 3726, 3727, 9388, - 3561, 3735, 3742, 3740, 3732, 3739, 3759, 3745, 3776, 3751, - 3766, 3760, 3784, 3812, 3768, 3779, 3795, 3791, 3796, 3800, - 3799, 3797, 3805, 3815, 3824, 3829, 3850, 3814, 3836, 3837, - 3839, 3833, 3856, 3849, 3873, 3874, 3866, 3875, 3898, 3877, - - 3806, 3881, 9388, 3884, 3894, 3872, 3886, 3896, 3901, 3902, - 3915, 3913, 3917, 3911, 3929, 3919, 3908, 3931, 3941, 3936, - 3947, 3951, 3946, 3943, 3937, 3964, 3966, 3956, 3967, 3970, - 9388, 3977, 3976, 3968, 3975, 3985, 3986, 3990, 3999, 3996, - 3988, 3989, 4005, 3998, 4016, 4002, 4015, 4012, 4028, 4013, - 9388, 4032, 4023, 4029, 4027, 4039, 4043, 4047, 4050, 4055, - 4062, 4059, 4049, 4066, 4068, 4056, 9388, 4078, 4086, 4079, - 4090, 4083, 4081, 4077, 4097, 4087, 9388, 4094, 4096, 4095, - 4103, 4106, 4114, 9388, 4108, 4111, 4112, 4117, 4128, 4115, - 4130, 4145, 4133, 4124, 4136, 4156, 4150, 4139, 4160, 9388, - - 4151, 4174, 4164, 4159, 4163, 4179, 4169, 4185, 4194, 4195, - 4205, 4196, 9388, 4190, 4209, 4197, 4219, 4206, 4189, 4220, - 4223, 4234, 4226, 4221, 4240, 4229, 9388, 4237, 4236, 4242, - 4256, 4255, 4252, 4258, 4248, 4261, 4271, 4266, 4247, 4276, - 4275, 4287, 4288, 4296, 4281, 4297, 4304, 4298, 4300, 4310, - 4311, 4315, 4316, 4320, 4329, 4335, 4328, 4324, 4343, 4325, - 4340, 4351, 4349, 4352, 9388, 4354, 4355, 4356, 4342, 4346, - 4370, 4373, 4367, 4362, 4371, 4385, 4390, 4382, 4380, 4408, - 4410, 4386, 4401, 4397, 4400, 4405, 4420, 4411, 4422, 4413, - 4409, 4429, 4418, 4426, 4432, 4433, 4453, 4435, 4436, 4445, - - 4446, 4456, 4447, 4452, 4449, 4472, 4473, 4484, 4486, 4482, - 4489, 4477, 4479, 4483, 4499, 9388, 4480, 4503, 4504, 4502, - 4511, 4521, 4528, 4529, 4524, 4523, 4532, 4530, 4538, 4520, - 4525, 4548, 4546, 4544, 9388, 4535, 9388, 4551, 4569, 4557, - 4581, 4559, 9388, 4577, 9388, 4580, 4582, 4571, 4573, 9388, - 4585, 4570, 4584, 4591, 4598, 4600, 4603, 4597, 4609, 4604, - 4617, 4610, 4618, 4614, 4615, 4637, 4620, 4625, 4641, 4636, - 4654, 4652, 4647, 4657, 4649, 4648, 4665, 4653, 4677, 9388, - 4687, 4673, 4670, 4676, 4686, 4681, 4666, 4700, 4697, 4692, - 4703, 4707, 4711, 4716, 4715, 4724, 4731, 4730, 4717, 4745, - - 9388, 4727, 4746, 4733, 4743, 9388, 4750, 4732, 4760, 4764, - 4753, 4748, 4754, 4768, 4773, 4772, 4777, 4758, 4800, 4802, - 4781, 4804, 9388, 4775, 4805, 4787, 4816, 4809, 4820, 4825, - 4817, 4827, 4834, 4826, 4833, 4829, 4830, 4832, 4843, 4837, - 4831, 4846, 4861, 4873, 4849, 4869, 4871, 4875, 4859, 4862, - 4864, 4865, 4867, 4883, 4885, 4888, 4891, 4912, 4898, 9388, - 4893, 4904, 4906, 4926, 4907, 4920, 4908, 4915, 4924, 9388, - 4923, 4932, 4933, 4937, 4947, 4942, 4944, 4943, 4950, 4953, - 4946, 4959, 4969, 4971, 9388, 4977, 9388, 4974, 4979, 4983, - 4990, 4988, 4984, 5004, 4991, 5003, 4993, 5008, 5017, 5006, - - 5005, 5014, 5009, 5033, 5029, 5051, 5037, 5027, 5040, 5039, - 5044, 5043, 5049, 9388, 9388, 5048, 5050, 5062, 5065, 5070, - 5077, 5086, 5084, 5078, 5076, 5091, 5080, 5122, 9388, 5088, - 5104, 5105, 5111, 5129, 5108, 5130, 5138, 5131, 5139, 5134, - 9388, 5117, 5128, 5146, 5132, 5159, 5152, 9388, 5143, 9388, - 5155, 5156, 5163, 5167, 5164, 5172, 5166, 5170, 5160, 5193, - 5197, 5183, 5200, 5186, 5187, 5190, 5215, 5203, 5223, 5199, - 5212, 5204, 9388, 5219, 5214, 5225, 5230, 5232, 5233, 5231, - 5224, 9388, 5241, 5239, 5244, 5250, 5251, 5256, 5245, 5259, - 5272, 5258, 5264, 9388, 5265, 5262, 5292, 5281, 5277, 5288, - - 5298, 5302, 5301, 9388, 5307, 5304, 5315, 5314, 5306, 5321, - 5324, 5297, 5308, 5319, 5320, 5331, 5344, 5334, 5340, 5341, - 5348, 5350, 5335, 5361, 5364, 5363, 5360, 5379, 5368, 9388, - 5365, 5375, 5381, 5383, 5396, 5393, 5400, 5385, 5404, 5395, - 5413, 5416, 5405, 5408, 5414, 5433, 5423, 5435, 9388, 5424, - 5421, 5450, 5422, 5443, 5452, 5434, 5453, 5455, 5442, 5451, - 5462, 5470, 5463, 5464, 5474, 5456, 5478, 5480, 5497, 5482, - 9388, 5511, 5490, 5495, 5506, 5501, 5503, 5521, 5516, 5499, - 5513, 5532, 5515, 5535, 5524, 5527, 5546, 5550, 5533, 9388, - 9388, 5555, 5531, 5548, 9388, 5558, 5543, 5570, 5566, 5551, - - 5554, 5579, 5578, 5562, 5589, 5574, 5576, 9388, 5593, 5584, - 5575, 5597, 5612, 5613, 5609, 5605, 5614, 5601, 5599, 5617, - 5627, 5615, 5608, 5637, 5648, 5651, 5632, 5640, 5643, 9388, - 5642, 5631, 5644, 5666, 5654, 5657, 9388, 5658, 5664, 5680, - 5674, 5687, 5684, 5681, 5694, 5675, 5689, 5679, 5700, 5702, - 5706, 5714, 5713, 5707, 5717, 5719, 5727, 9388, 5709, 5732, - 5715, 5737, 9388, 5738, 5756, 5755, 9388, 5757, 5734, 5758, - 5754, 5762, 9388, 5759, 5764, 5761, 5742, 5777, 5752, 5781, - 5775, 5784, 9388, 5785, 5786, 5787, 9388, 5800, 5798, 5806, - 5809, 5790, 5820, 5812, 5811, 5815, 5813, 9388, 5823, 9388, - - 5826, 5819, 5833, 9388, 5832, 5839, 5830, 5841, 5843, 5849, - 5858, 5861, 5865, 5847, 5860, 5855, 5853, 5871, 5878, 5882, - 5866, 5877, 5879, 5881, 9388, 5900, 5889, 5894, 5898, 5913, - 5906, 5905, 5899, 5924, 5910, 9388, 9388, 5919, 9388, 5928, - 5922, 5927, 9388, 5921, 5939, 5940, 5935, 5956, 5958, 5959, - 5961, 9388, 5964, 5967, 9388, 5948, 5966, 5978, 5970, 5954, - 5962, 5973, 5981, 5985, 5980, 5998, 5987, 5999, 5989, 6003, - 6016, 9388, 5993, 6000, 6009, 6024, 6014, 6019, 6025, 6026, - 6027, 9388, 6029, 6042, 6045, 6052, 6053, 9388, 6055, 9388, - 6049, 6056, 6058, 6066, 6054, 9388, 6075, 6072, 6078, 6062, - - 6091, 6099, 6093, 6102, 6085, 6089, 6111, 6105, 6095, 6106, - 9388, 6100, 6117, 6121, 6123, 6125, 6122, 6116, 6134, 6143, - 6129, 6146, 6153, 6148, 6156, 6158, 6155, 6163, 6161, 9388, - 6184, 6174, 6144, 6199, 6188, 6186, 9388, 6190, 6173, 6203, - 9388, 6191, 6187, 6200, 6210, 6194, 6201, 6206, 6218, 6223, - 9388, 6228, 6229, 6224, 6237, 6243, 6245, 9388, 9388, 6247, - 9388, 6246, 6234, 6261, 6259, 6233, 6269, 6216, 6273, 6262, - 6264, 6286, 6287, 6281, 6275, 6306, 6268, 6303, 6296, 6304, - 6291, 9388, 9388, 6307, 6314, 6316, 6320, 6321, 6323, 6309, - 6333, 6332, 6343, 6345, 6341, 6356, 9388, 6349, 6338, 6351, - - 6354, 9388, 6336, 6352, 6363, 6360, 6364, 6371, 6350, 6372, - 6390, 6378, 6394, 6393, 6388, 6399, 6380, 6391, 6396, 6410, - 6407, 6398, 6414, 6428, 9388, 6434, 6421, 6424, 6422, 6420, - 6427, 6431, 6438, 6436, 9388, 6447, 9388, 6451, 6439, 6454, - 6466, 6475, 6471, 6479, 6470, 6472, 6477, 6484, 6488, 6492, - 6496, 6493, 6487, 6504, 6513, 6501, 6507, 6511, 9388, 6519, - 6506, 6509, 6518, 6537, 6539, 6523, 6541, 6536, 6544, 6532, - 6543, 6555, 6558, 6546, 6552, 6551, 6553, 9388, 6557, 6567, - 6564, 6576, 6559, 6584, 6592, 6596, 6593, 6579, 6586, 6581, - 6602, 9388, 6587, 6582, 6603, 6611, 6616, 6614, 6621, 6620, - - 6622, 9388, 6631, 6624, 6629, 6632, 6634, 6639, 6628, 6649, - 6656, 6666, 6667, 9388, 6662, 6664, 6673, 6655, 6659, 6677, - 6683, 6676, 9388, 6701, 6703, 6694, 6695, 6690, 6718, 6714, - 6715, 6691, 6710, 6721, 6717, 6722, 6725, 6730, 6713, 6737, - 6760, 6752, 9388, 6742, 9388, 6750, 6764, 6768, 6766, 6769, - 6751, 9388, 6754, 6772, 6640, 6789, 6776, 9388, 6778, 6791, - 6793, 6794, 9388, 6810, 6809, 6799, 6811, 6782, 6783, 9388, - 6822, 6821, 6820, 6832, 6833, 6830, 6829, 6828, 6843, 6841, - 6831, 6835, 6860, 6837, 6849, 6862, 9388, 6869, 6871, 6865, - 6870, 6868, 6876, 6859, 6878, 6883, 6880, 9388, 6886, 6888, - - 6894, 6897, 6895, 6896, 6912, 6924, 6919, 6909, 6910, 6913, - 6923, 6921, 9388, 6918, 6931, 6944, 6936, 6926, 6958, 9388, - 6953, 9388, 6950, 6965, 6967, 6946, 6974, 9388, 9388, 6977, - 6938, 6956, 6978, 6973, 9388, 9388, 6979, 9388, 6980, 9388, - 6976, 6994, 9388, 9388, 6991, 6985, 7008, 7009, 6988, 9388, - 7016, 9388, 7024, 7019, 7006, 7004, 7023, 9388, 7015, 7017, - 7027, 9388, 7021, 7037, 7040, 7044, 9388, 7039, 7042, 7033, - 7047, 9388, 7061, 7063, 7068, 7057, 7067, 7072, 7078, 7056, - 7079, 7069, 7082, 7071, 7096, 7110, 7111, 7112, 7113, 7103, - 7098, 7114, 7120, 7123, 7105, 7122, 7106, 7129, 7127, 7133, - - 7131, 7135, 7144, 7147, 7150, 7151, 7146, 7160, 7148, 7149, - 7164, 7158, 7154, 7177, 7175, 7174, 7185, 7191, 7182, 7196, - 7193, 7201, 9388, 7195, 7184, 7194, 7211, 7215, 7222, 7226, - 7219, 7234, 7235, 9388, 7238, 9388, 7244, 7230, 7240, 7228, - 7237, 9388, 7249, 7232, 7246, 7260, 7261, 7262, 7279, 7263, - 7266, 7267, 7290, 9388, 7286, 7278, 7276, 7293, 7299, 9388, - 7295, 7300, 7296, 7297, 7294, 7317, 7312, 7316, 7319, 7318, - 7333, 7336, 7320, 7331, 7342, 7338, 7350, 7356, 7352, 7339, - 7353, 7341, 7366, 7358, 7364, 7368, 7385, 7374, 7386, 7389, - 9388, 7375, 9388, 7381, 7377, 7380, 7383, 7401, 7398, 7405, - - 9388, 9388, 7400, 7419, 7409, 7411, 7413, 7429, 7430, 9388, - 7427, 7433, 7435, 7428, 9388, 7444, 7423, 7445, 7439, 9388, - 7436, 7458, 7469, 7452, 7455, 7476, 7472, 7471, 7462, 7475, - 7481, 9388, 9388, 9388, 9388, 7482, 7466, 7484, 7493, 7499, - 7486, 7507, 7490, 7503, 9388, 7497, 9388, 9388, 7514, 7520, - 7509, 7522, 7513, 7510, 7526, 7524, 9388, 7540, 7533, 7537, - 7543, 7544, 7557, 7561, 7556, 7567, 7548, 7550, 7578, 7569, - 7575, 7564, 7581, 7580, 7587, 9388, 9388, 7584, 7589, 7595, - 7609, 7605, 7607, 7601, 7622, 7596, 7613, 7611, 7604, 7621, - 7614, 7626, 7631, 7625, 7632, 9388, 7636, 7628, 7647, 9388, - - 7639, 9388, 7649, 7656, 7646, 7652, 7658, 7659, 7671, 7660, - 9388, 9388, 7657, 7685, 7676, 9388, 9388, 7670, 7673, 7686, - 7690, 7694, 7687, 7695, 7692, 7708, 7691, 9388, 7696, 9388, - 7709, 7720, 7715, 7700, 7731, 7735, 7744, 7740, 7733, 7738, - 9388, 7736, 7737, 9388, 7742, 7734, 7739, 9388, 7752, 7756, - 7749, 7755, 9388, 7757, 7781, 7773, 9388, 7759, 9388, 7767, - 7783, 7777, 7795, 9388, 7771, 7792, 9388, 7796, 7797, 7799, - 7790, 9388, 7807, 9388, 7786, 7809, 7810, 7821, 7812, 7828, - 7818, 7814, 7826, 7847, 7835, 7839, 9388, 9388, 73, 7849, - 7823, 7836, 7837, 7845, 7852, 7844, 7861, 7860, 9388, 9388, - - 7863, 9388, 7867, 7874, 9388, 7855, 7878, 7884, 7882, 7886, - 7871, 7883, 7879, 7897, 7901, 7911, 7905, 7898, 7913, 7934, - 7936, 7916, 7923, 7932, 7938, 7944, 7946, 7937, 7949, 7931, - 7929, 7952, 7948, 7963, 7960, 7950, 7965, 9388, 7983, 7986, - 7988, 7971, 9388, 7993, 7992, 8000, 7996, 9388, 8002, 7994, - 7995, 7997, 9388, 7987, 8007, 8013, 8016, 8020, 8041, 8024, - 8029, 8042, 9388, 9388, 9388, 8034, 8045, 9388, 8048, 8036, - 8028, 8031, 9388, 8051, 8047, 9388, 9388, 8054, 8058, 8062, - 8075, 9388, 8071, 9388, 8063, 9388, 8086, 8087, 8094, 8088, - 9388, 8096, 8099, 9388, 8093, 8104, 8105, 8098, 8109, 8089, - - 8112, 9388, 8138, 8132, 8135, 8141, 8124, 8131, 8125, 8144, - 8127, 8152, 8123, 8153, 9388, 8151, 8156, 8158, 8159, 8147, - 8162, 8169, 9388, 8171, 9388, 8181, 9388, 8179, 8182, 8190, - 8188, 8183, 8186, 8193, 8198, 8206, 8214, 8209, 8211, 8202, - 8212, 9388, 9388, 8216, 8235, 9388, 8219, 9388, 8242, 9388, - 8228, 8229, 8232, 8246, 9388, 8247, 8233, 8234, 8249, 9388, - 8262, 8238, 8258, 8266, 9388, 9388, 8261, 8275, 8278, 8260, - 8286, 8291, 8272, 8296, 8287, 8285, 8280, 8302, 8284, 8289, - 8297, 8306, 8319, 8325, 9388, 9388, 9388, 8308, 8311, 8337, - 8334, 8333, 8342, 8321, 9388, 8335, 8341, 8338, 8332, 8350, - - 8354, 8355, 9388, 8361, 8356, 8359, 8362, 8376, 8360, 8364, - 8381, 9388, 8385, 8392, 8388, 8382, 8389, 8395, 8397, 8404, - 8400, 8399, 8410, 8409, 9388, 8418, 9388, 9388, 8411, 9388, - 8406, 8407, 8417, 8431, 9388, 8435, 8433, 8422, 8434, 8446, - 8448, 9388, 8455, 8444, 8449, 8458, 9388, 9388, 8451, 9388, - 8453, 8460, 8440, 8477, 8467, 8475, 8484, 8481, 9388, 8469, - 8473, 8492, 8476, 8495, 9388, 8490, 8480, 8485, 8494, 9388, - 8491, 8507, 8512, 8506, 8526, 9388, 8532, 8515, 8543, 8539, - 9388, 8520, 8542, 8533, 9388, 9388, 8548, 8549, 8547, 9388, - 9388, 9388, 8552, 8550, 8561, 8563, 9388, 8565, 8585, 8587, - - 8595, 8564, 9388, 8581, 8571, 8582, 9388, 9388, 8577, 8579, - 8598, 8600, 9388, 9388, 8586, 8594, 8606, 8593, 8590, 9388, - 8613, 8609, 8614, 8619, 8634, 8620, 8638, 8639, 8644, 8654, - 8625, 8640, 8632, 8652, 8658, 8637, 8660, 8659, 8662, 8669, - 8672, 8661, 8686, 9388, 9388, 8673, 9388, 8674, 8683, 9388, - 9388, 8693, 8694, 8697, 8698, 8702, 8704, 8705, 9388, 8699, - 8706, 8700, 8695, 8696, 9388, 8711, 8712, 8713, 8724, 8729, - 8743, 8727, 8745, 9388, 9388, 8731, 8747, 8720, 8751, 8735, - 9388, 8756, 8765, 8734, 8758, 8762, 8764, 8768, 9388, 8760, - 8779, 9388, 9388, 8790, 8783, 9388, 9388, 8770, 9388, 9388, - - 9388, 9388, 9388, 9388, 9388, 8797, 9388, 8786, 8801, 8802, - 8803, 9388, 8789, 8795, 8810, 8813, 8791, 9388, 8811, 8808, - 8815, 8841, 8821, 8844, 8837, 8830, 8835, 8838, 8831, 8840, - 8842, 8847, 8861, 8852, 8870, 8864, 8880, 9388, 9388, 9388, - 8876, 8867, 8889, 8883, 8895, 8897, 8896, 8899, 8882, 8886, - 8902, 8903, 8910, 8893, 8912, 8909, 8907, 8919, 8933, 8940, - 8923, 8941, 8944, 8932, 8930, 8951, 9388, 8937, 9388, 8935, - 9388, 9388, 8955, 8960, 8948, 8950, 8968, 8971, 8958, 8973, - 8962, 8979, 8990, 9388, 8991, 9388, 9388, 8976, 8974, 9388, - 8978, 8989, 9388, 8982, 8999, 8988, 9001, 9009, 9006, 9005, - - 9018, 9012, 9388, 9388, 9015, 9020, 9021, 9027, 9039, 9048, - 9029, 9041, 9050, 9053, 9032, 9065, 9388, 9061, 9059, 9063, - 9388, 9066, 9057, 9062, 9060, 9075, 9077, 9080, 9068, 9388, - 9073, 9388, 9083, 9100, 9093, 9086, 9092, 9101, 9115, 9113, - 9104, 9388, 9096, 9123, 9110, 9132, 9134, 9125, 9139, 9128, - 9148, 9149, 9151, 9158, 9156, 9157, 9150, 9160, 9152, 9388, - 9167, 9170, 9388, 9177, 9181, 9174, 9176, 9187, 9388, 9172, - 9183, 9192, 9199, 9205, 9210, 9388, 9206, 9207, 9214, 9388, - 9213, 9388, 9388, 9219, 9204, 9209, 9212, 9225, 9388, 9388, - 9388, 9268, 9275, 9282, 9289, 9296, 9303, 9310, 102, 9317, - - 9324, 9331, 9338, 9345, 9352, 9359, 9366, 9373, 9380 + 131, 137, 112, 118, 123, 142, 429, 383, 96, 9568, + 9568, 9568, 160, 185, 116, 183, 229, 132, 175, 173, + 232, 50, 66, 120, 263, 275, 151, 323, 134, 375, + 416, 286, 308, 283, 126, 237, 374, 9568, 9568, 9568, + 95, 372, 9568, 9568, 9568, 186, 361, 373, 9568, 9568, + 9568, 258, 309, 9568, 9568, 9568, 104, 293, 9568, 266, + 9568, 167, 351, 281, 311, 9568, 9568, 9568, 369, 268, + 9568, 9568, 9568, 146, 252, 378, 177, 0, 392, 0, + 0, 303, 270, 235, 317, 362, 344, 384, 178, 177, + + 226, 420, 377, 330, 379, 402, 414, 419, 410, 453, + 319, 367, 440, 429, 447, 454, 463, 459, 458, 489, + 495, 484, 474, 493, 499, 460, 500, 504, 510, 492, + 524, 520, 532, 525, 537, 529, 412, 533, 558, 539, + 531, 548, 565, 559, 250, 505, 587, 575, 574, 584, + 570, 580, 610, 601, 595, 604, 607, 614, 615, 208, + 294, 205, 236, 194, 670, 225, 180, 326, 158, 674, + 678, 0, 623, 152, 682, 176, 130, 653, 650, 680, + 661, 609, 675, 670, 676, 666, 671, 682, 672, 691, + 720, 697, 696, 703, 256, 726, 770, 731, 723, 714, + + 734, 737, 724, 718, 745, 740, 749, 759, 766, 728, + 773, 760, 772, 787, 819, 789, 762, 797, 339, 802, + 827, 378, 808, 443, 832, 805, 699, 829, 725, 838, + 836, 844, 843, 835, 852, 847, 866, 860, 849, 864, + 875, 874, 871, 865, 868, 911, 885, 878, 893, 892, + 894, 907, 908, 902, 913, 781, 909, 920, 921, 935, + 912, 937, 930, 919, 943, 950, 948, 956, 957, 938, + 958, 955, 953, 960, 954, 973, 969, 984, 994, 986, + 993, 1002, 989, 995, 988, 996, 999, 987, 1013, 1014, + 1022, 1026, 144, 1020, 1029, 1031, 1019, 1028, 1039, 1041, + + 1051, 1052, 1053, 1036, 1057, 1062, 1072, 1069, 1070, 1076, + 1079, 1088, 1055, 1067, 1065, 1082, 1092, 1098, 1087, 1100, + 1091, 1103, 1115, 1106, 1120, 1099, 1134, 1132, 1127, 1159, + 1136, 1128, 1148, 1180, 1154, 1147, 1170, 1162, 1193, 1187, + 1169, 1191, 1198, 1204, 1206, 1207, 1199, 1197, 1218, 1226, + 1217, 1225, 1224, 1220, 1235, 1241, 1242, 1264, 9568, 1250, + 1253, 1246, 1266, 1273, 1269, 1261, 1301, 1280, 1259, 1286, + 1223, 1303, 1306, 1354, 1294, 1331, 1297, 1311, 1296, 9568, + 1337, 1318, 1403, 1336, 1353, 1365, 1360, 1347, 1367, 1361, + 1363, 1382, 1323, 1381, 1394, 1371, 1416, 1430, 1404, 1409, + + 1410, 1364, 1412, 1421, 1437, 1439, 1428, 1436, 1431, 1443, + 1263, 1455, 1473, 1449, 1458, 1462, 1461, 1477, 1488, 1480, + 1493, 1482, 1494, 1499, 1476, 1498, 1509, 1522, 1567, 1466, + 1518, 1524, 1526, 1519, 1537, 1538, 1541, 1548, 1560, 1556, + 1546, 1569, 1549, 1533, 1573, 1564, 1591, 1587, 1594, 1586, + 1582, 1590, 1597, 1614, 1604, 1600, 1608, 1621, 1607, 1628, + 1624, 1637, 1634, 1619, 1643, 1627, 9568, 1651, 9568, 1635, + 1650, 1648, 1647, 1664, 1653, 1660, 9568, 1670, 1671, 1666, + 1667, 1687, 1683, 1706, 1697, 1691, 1696, 1700, 1695, 1710, + 1711, 1701, 1717, 1731, 1726, 1730, 1719, 1718, 1738, 1745, + + 1728, 1746, 1744, 1737, 1748, 1788, 9568, 1754, 1764, 1755, + 1765, 1782, 1786, 1813, 1770, 1800, 1817, 1801, 1825, 1811, + 1823, 1816, 1824, 1828, 1841, 1829, 1857, 1844, 1849, 1850, + 1843, 1845, 1868, 1855, 1860, 1863, 1874, 9568, 1884, 1892, + 1768, 1871, 1882, 1885, 1888, 1898, 1881, 1910, 1890, 1916, + 1908, 1919, 1921, 1933, 1922, 1938, 1924, 1939, 1930, 1935, + 1947, 1953, 1959, 1954, 1958, 1960, 1955, 1964, 1972, 1976, + 1984, 1977, 1993, 1969, 1980, 1986, 1996, 1979, 2000, 1991, + 2004, 1987, 2003, 2011, 2017, 2020, 2014, 2021, 2019, 2028, + 2025, 2018, 2038, 2034, 2037, 2059, 2053, 2048, 2060, 2051, + + 2073, 2061, 2065, 2077, 2078, 2080, 2076, 9568, 2098, 2088, + 2099, 2107, 2108, 2109, 2114, 2100, 2104, 2110, 2115, 2118, + 2127, 2130, 2139, 2132, 2136, 2144, 2146, 2137, 2150, 2159, + 2169, 2167, 2160, 2154, 2168, 2171, 2142, 2189, 2185, 2196, + 2197, 2177, 2188, 2206, 2192, 2194, 2217, 2213, 2199, 2216, + 2223, 2211, 2229, 2232, 2243, 2215, 2235, 2260, 2253, 2240, + 2244, 2249, 2258, 2252, 2264, 2266, 2268, 2270, 2263, 2299, + 2294, 2291, 2288, 2290, 2296, 2293, 2295, 2304, 2306, 2310, + 2316, 2317, 2321, 2325, 2320, 2326, 2327, 2331, 2341, 2330, + 2347, 2358, 2362, 2356, 2352, 2353, 2367, 2368, 2374, 2365, + + 2369, 2392, 2397, 2396, 2400, 2401, 2386, 2407, 2409, 2398, + 2411, 2410, 2416, 2432, 2436, 2428, 2437, 2429, 2438, 2430, + 2272, 2449, 2453, 2455, 2445, 9568, 2447, 2380, 2441, 2471, + 2472, 2464, 2465, 2383, 2478, 2463, 2476, 2479, 2480, 2530, + 9568, 2481, 9568, 9568, 2492, 9568, 9568, 2511, 2495, 9568, + 2518, 2517, 2498, 2529, 2536, 2545, 2543, 2516, 2541, 2538, + 2553, 2585, 2566, 2557, 2556, 2563, 2564, 2591, 2594, 2581, + 2602, 2582, 2593, 2633, 2618, 2609, 2620, 2627, 2638, 2636, + 2637, 2643, 2575, 2644, 2630, 2631, 2645, 2654, 2634, 2670, + 2655, 2664, 2671, 2683, 2668, 2675, 2666, 2694, 2691, 2690, + + 2699, 9568, 2695, 2697, 2708, 2702, 2709, 2713, 2714, 2711, + 2725, 2728, 2722, 2715, 2726, 2732, 2727, 2721, 2742, 2744, + 2741, 2743, 2756, 2767, 2746, 9568, 2754, 2766, 2752, 2769, + 2771, 2779, 2781, 2770, 2760, 2790, 2778, 2800, 2788, 2795, + 2801, 2805, 2797, 2807, 2827, 9568, 2802, 2819, 2812, 2818, + 2815, 2824, 2829, 2813, 2839, 2834, 2841, 2851, 2840, 2850, + 2877, 2865, 2861, 2856, 2866, 2878, 2867, 2882, 2879, 2870, + 2886, 2883, 2891, 2892, 2893, 2897, 2901, 2928, 2930, 2913, + 2934, 2917, 2918, 2937, 2939, 2929, 2922, 2947, 2945, 2925, + 2935, 2942, 2948, 2952, 2958, 2981, 2960, 2982, 2965, 2979, + + 2993, 2974, 2986, 2994, 2969, 2985, 2997, 2996, 9568, 2976, + 3011, 9568, 3001, 2999, 3009, 3055, 3034, 3036, 3028, 3004, + 3020, 3046, 3038, 3042, 3054, 3061, 3079, 3069, 3070, 3085, + 3077, 3094, 3083, 3102, 3086, 3087, 3103, 3106, 3112, 3119, + 3125, 3128, 3131, 381, 3130, 3110, 3121, 3120, 3167, 3137, + 3145, 3129, 3151, 3152, 3156, 3174, 3157, 3170, 3172, 3169, + 3165, 3198, 3192, 3188, 3194, 3199, 3205, 3207, 3202, 9568, + 3212, 3220, 3208, 3219, 3215, 3241, 3235, 3226, 9568, 3234, + 3239, 3236, 3246, 3247, 3238, 3253, 3244, 3255, 3261, 3265, + 3251, 3267, 3280, 3272, 3295, 9568, 3282, 9568, 3279, 3285, + + 3283, 3287, 3297, 3296, 3312, 3313, 9568, 9568, 3314, 3321, + 3299, 3326, 3322, 3320, 3323, 9568, 3327, 3356, 9568, 3333, + 3349, 3341, 3339, 3351, 3347, 3358, 3354, 3377, 3353, 3380, + 3372, 3379, 3374, 9568, 3386, 3370, 3385, 3397, 3392, 3394, + 3400, 3404, 3383, 9568, 3414, 3407, 3419, 3431, 3428, 3424, + 3421, 3434, 3441, 3422, 3426, 3436, 3435, 3430, 3449, 3459, + 3466, 3468, 3469, 3464, 9568, 3457, 3458, 3482, 3476, 3479, + 3480, 3483, 3470, 3485, 3484, 3491, 3502, 3512, 3505, 3508, + 3503, 3529, 3530, 3511, 3528, 3527, 3515, 3531, 3524, 91, + 3519, 3532, 3543, 3540, 9568, 3547, 3548, 3549, 128, 3557, + + 3558, 3567, 3572, 3574, 3578, 3560, 3586, 3587, 3575, 3585, + 3593, 3592, 3589, 3594, 3604, 3596, 3606, 3619, 3600, 3610, + 9568, 3628, 3618, 3616, 3624, 3635, 3620, 3644, 9568, 3646, + 3647, 3652, 3654, 3662, 3651, 3661, 3653, 3668, 3673, 3678, + 3674, 3685, 3689, 3684, 3691, 3687, 9568, 3703, 3699, 3710, + 3707, 3712, 3718, 3714, 3713, 3720, 3719, 3724, 3733, 3725, + 3731, 3734, 3745, 3746, 3750, 3742, 3747, 3751, 3759, 3761, + 3760, 3769, 3763, 3772, 3774, 3765, 9568, 3805, 3787, 3790, + 3799, 3791, 3794, 3808, 3803, 3825, 3800, 3809, 3820, 3821, + 3860, 3826, 3835, 3848, 3827, 3840, 3849, 3862, 3854, 3872, + + 3863, 3853, 3881, 3900, 3887, 3866, 3885, 3893, 3892, 3888, + 3898, 3922, 3923, 3921, 3924, 3947, 3930, 3917, 3932, 3939, + 3941, 9568, 3942, 3836, 3927, 3955, 3975, 3962, 3954, 3972, + 3966, 3969, 3968, 3981, 3970, 3990, 3985, 3993, 3992, 4004, + 3996, 4007, 4008, 4003, 3997, 4013, 4025, 4011, 4029, 4030, + 9568, 4036, 4041, 4028, 4035, 4050, 4031, 4054, 4059, 4056, + 4043, 4048, 4065, 4052, 4073, 4062, 4075, 4058, 4088, 4066, + 9568, 4092, 4083, 4096, 4091, 4099, 4089, 4103, 4109, 4115, + 4113, 4116, 4111, 4100, 4127, 4124, 9568, 4118, 4149, 4141, + 4154, 4143, 4131, 4142, 4155, 4139, 9568, 4145, 4147, 4148, + + 4162, 4168, 4172, 9568, 4170, 4176, 4164, 4165, 4181, 4174, + 4182, 4201, 4186, 4189, 4192, 4199, 4207, 4195, 4216, 9568, + 4205, 4230, 4217, 4227, 4231, 4226, 4223, 4234, 4251, 4233, + 4244, 4241, 9568, 4269, 4243, 4261, 4280, 4258, 4263, 4266, + 4276, 4282, 4273, 4274, 4290, 4278, 9568, 4283, 4288, 4301, + 4311, 4309, 4302, 4304, 4307, 4314, 4308, 4316, 4317, 4322, + 4329, 4340, 4335, 4346, 4334, 4349, 4354, 4350, 4357, 4343, + 4359, 4373, 4376, 4369, 4374, 4382, 4364, 4368, 4392, 4399, + 4403, 4404, 4401, 4405, 9568, 4408, 4407, 4409, 4394, 4410, + 4400, 4398, 4416, 4419, 4424, 4434, 4443, 4438, 4435, 4458, + + 4460, 4436, 4463, 4440, 4447, 4467, 4468, 4453, 4457, 4470, + 4462, 4487, 4475, 4483, 4479, 4490, 4510, 4489, 4493, 4494, + 4499, 4495, 4503, 4514, 4506, 4528, 4519, 4523, 4520, 4527, + 4543, 4539, 4545, 4535, 4551, 4540, 4555, 9568, 4546, 4558, + 4562, 4559, 4565, 4568, 4578, 4598, 4582, 4586, 4589, 4592, + 4603, 4591, 4602, 4605, 4595, 4608, 4600, 9568, 4610, 9568, + 4612, 4626, 4616, 4641, 4625, 9568, 4640, 9568, 4643, 4648, + 4634, 4635, 9568, 4653, 4637, 4654, 4658, 4661, 4644, 4647, + 4664, 4668, 4678, 4680, 4681, 4683, 4675, 4667, 4696, 4690, + 4693, 4707, 4686, 4715, 4714, 4702, 4720, 4708, 4725, 4728, + + 4724, 4735, 9568, 4719, 4717, 4738, 4723, 4734, 4744, 4741, + 4768, 4767, 4755, 4757, 4773, 4765, 4771, 4759, 4785, 4783, + 4794, 4770, 4796, 9568, 4791, 4807, 4789, 4803, 9568, 4806, + 4795, 4812, 4823, 4814, 4802, 4810, 4839, 4826, 4830, 4831, + 4829, 4856, 4836, 4840, 4841, 9568, 4852, 4868, 4853, 4879, + 4864, 4870, 4886, 4872, 4883, 4889, 4897, 4880, 4881, 4875, + 4895, 4876, 4912, 4903, 4923, 4920, 4924, 4904, 4921, 4928, + 4929, 4917, 4913, 4916, 4918, 4943, 4944, 4919, 4940, 4945, + 4964, 4950, 9568, 4956, 4961, 4962, 4979, 4960, 4970, 4974, + 4976, 4977, 9568, 4978, 4988, 5004, 4987, 5010, 4997, 5002, + + 4995, 5000, 5014, 5005, 5021, 5040, 5017, 9568, 5036, 9568, + 5032, 5031, 5042, 5053, 5050, 5046, 5063, 5054, 5055, 5067, + 5060, 5069, 5078, 5072, 5076, 5079, 5095, 5091, 5045, 5075, + 5089, 5101, 5090, 5096, 5103, 5126, 5106, 5117, 9568, 9568, + 5115, 5121, 5131, 5127, 5136, 5142, 5149, 5148, 5146, 5134, + 5141, 5153, 5186, 9568, 5168, 5170, 5161, 5187, 5195, 5175, + 5194, 5201, 5198, 5190, 5205, 5200, 9568, 5188, 5197, 5210, + 5213, 5220, 5212, 9568, 5228, 9568, 5215, 5222, 5235, 5237, + 5231, 5232, 5238, 5240, 5248, 5256, 5262, 5247, 5266, 5257, + 5258, 5259, 5280, 5275, 5287, 5268, 5281, 5273, 9568, 5292, + + 5274, 5295, 5293, 5301, 5304, 5302, 5289, 9568, 5315, 5308, + 5310, 5313, 5318, 5322, 5334, 5329, 5337, 5335, 5336, 9568, + 5333, 5326, 5356, 5353, 5340, 5349, 5366, 5369, 5377, 9568, + 5373, 5375, 5374, 5381, 5376, 5385, 5383, 5370, 5367, 5380, + 5391, 5401, 5414, 5411, 5410, 5408, 5416, 5417, 5404, 5440, + 5427, 5415, 5429, 5400, 5413, 9568, 5436, 5441, 5442, 5444, + 5463, 5459, 5461, 5470, 5474, 5456, 5477, 5479, 5457, 5472, + 5481, 5490, 5500, 5495, 9568, 5501, 5491, 5515, 5486, 5513, + 5512, 5499, 5518, 5514, 5517, 5503, 5526, 5528, 5530, 5520, + 5551, 5534, 5542, 5546, 5553, 5547, 9568, 5576, 5558, 5562, + + 5573, 5541, 5568, 5587, 5579, 5578, 5580, 5584, 5582, 5585, + 5596, 5595, 5618, 5620, 5604, 9568, 9568, 5621, 5602, 5623, + 9568, 5625, 5609, 5631, 5633, 5628, 5626, 5635, 5629, 5613, + 5636, 5644, 5651, 9568, 5668, 5677, 5654, 5672, 5680, 5681, + 9568, 5663, 5685, 5684, 5686, 5678, 5669, 5696, 5690, 5695, + 5701, 5694, 5723, 5708, 5731, 5707, 5717, 5729, 9568, 5710, + 5714, 5734, 5738, 5721, 5728, 9568, 5726, 5748, 5761, 5758, + 5759, 5769, 5767, 5766, 5773, 5753, 5770, 5780, 5776, 5763, + 5785, 5792, 5787, 5801, 5813, 5814, 5812, 9568, 5808, 5807, + 5800, 5821, 9568, 5822, 5830, 5797, 9568, 5836, 5811, 5841, + + 5839, 5857, 9568, 5842, 5849, 5843, 5831, 5864, 5838, 5866, + 5862, 5859, 9568, 5863, 5858, 5869, 9568, 5876, 5887, 5872, + 5892, 5880, 5902, 5889, 5903, 5899, 5901, 9568, 5904, 9568, + 5914, 5906, 5911, 9568, 5913, 5922, 5915, 5921, 5937, 5938, + 5945, 5948, 5953, 5935, 5947, 5936, 5939, 5963, 5952, 5964, + 5942, 5959, 5970, 5962, 9568, 5992, 5978, 5989, 5979, 6000, + 6002, 5995, 5987, 6005, 6017, 9568, 9568, 6009, 9568, 6015, + 5997, 6023, 9568, 6006, 6027, 6022, 6026, 6045, 6049, 6047, + 6044, 9568, 6055, 6057, 9568, 6033, 6053, 6066, 6060, 6042, + 6061, 6062, 6068, 6071, 6084, 6085, 6086, 6087, 6076, 6090, + + 6103, 9568, 6080, 6083, 6104, 6115, 6107, 6117, 6118, 6130, + 6119, 9568, 6133, 6145, 6123, 6146, 6148, 9568, 6131, 9568, + 6136, 6144, 6149, 6157, 6150, 9568, 6168, 6165, 6156, 6163, + 6180, 6191, 6182, 6194, 6183, 6178, 6196, 6195, 6190, 6192, + 6213, 6207, 9568, 6205, 6219, 6202, 6210, 6220, 6216, 6244, + 6240, 6239, 6230, 6242, 6249, 6243, 6251, 6253, 6247, 6259, + 6266, 9568, 6278, 6271, 6267, 6297, 6277, 6286, 6291, 9568, + 6294, 6296, 6302, 9568, 6299, 6300, 6310, 6308, 6313, 6314, + 6309, 6324, 6327, 9568, 6333, 6336, 6323, 6339, 6350, 6340, + 9568, 9568, 6362, 9568, 6347, 6334, 6358, 6360, 6361, 6370, + + 6356, 6382, 6390, 6374, 6388, 6389, 6383, 6376, 6404, 6407, + 6412, 6408, 6406, 6402, 9568, 9568, 6424, 6427, 6421, 6432, + 6435, 6425, 6429, 6417, 6438, 6439, 6445, 6441, 6431, 9568, + 6456, 6451, 6457, 6455, 9568, 6452, 6476, 6462, 6478, 6486, + 6472, 6479, 6474, 6487, 6488, 6496, 6503, 6482, 6506, 6499, + 6509, 6504, 6513, 6523, 6522, 6521, 6529, 9568, 6533, 6526, + 6538, 6519, 6520, 6548, 6537, 6549, 6552, 9568, 6536, 9568, + 6564, 6556, 6568, 6578, 6581, 6582, 6583, 6576, 6579, 6585, + 6591, 6590, 6594, 6599, 6600, 6609, 6601, 6621, 6611, 6624, + 6626, 9568, 6627, 6614, 6617, 6623, 6639, 6640, 6628, 6643, + + 6638, 6645, 6648, 6641, 6652, 6669, 6657, 6667, 6664, 6658, + 9568, 6675, 6681, 6668, 6682, 6670, 6683, 6690, 6685, 6692, + 6699, 6696, 6698, 9568, 6706, 6703, 6724, 9568, 6709, 6708, + 6717, 6730, 6737, 6720, 6735, 6726, 6727, 9568, 6743, 6745, + 6748, 6736, 6753, 6756, 6752, 6759, 6764, 6779, 6791, 9568, + 6757, 6776, 6780, 6790, 6772, 6783, 6792, 6799, 6763, 9568, + 6815, 6822, 6787, 6798, 6807, 6835, 6832, 6834, 6808, 6830, + 6838, 6836, 6842, 6844, 6847, 6859, 6849, 6855, 6848, 9568, + 6857, 9568, 6858, 6880, 6863, 6886, 6883, 6869, 9568, 6876, + 6882, 6893, 6884, 6896, 9568, 6885, 6890, 6912, 6909, 9568, + + 6925, 6924, 6910, 6919, 6934, 6937, 9568, 6935, 6939, 6936, + 6945, 6948, 6940, 6944, 6933, 6952, 6958, 6959, 6962, 6976, + 6955, 6964, 6979, 9568, 6983, 6985, 6990, 6989, 6986, 6992, + 6982, 7003, 6993, 7005, 9568, 7019, 7006, 7011, 7009, 7021, + 7015, 7022, 7042, 7033, 7029, 7036, 7038, 7054, 7040, 9568, + 7052, 7056, 7063, 7046, 7062, 7069, 9568, 7066, 9568, 7073, + 7076, 7082, 7079, 7091, 9568, 9568, 7090, 7049, 7089, 7080, + 7099, 9568, 9568, 7110, 9568, 7093, 9568, 7109, 7097, 9568, + 9568, 7117, 7103, 7120, 7126, 7115, 9568, 7127, 9568, 7138, + 7133, 7130, 7121, 7136, 9568, 7132, 7142, 7150, 7152, 7139, + + 9568, 7158, 7160, 7153, 7159, 9568, 7175, 7173, 7163, 7165, + 9568, 7180, 7184, 7188, 7177, 7187, 7192, 7203, 7185, 7202, + 7194, 7208, 7198, 7207, 7212, 7228, 7231, 7236, 7237, 7226, + 7223, 7242, 7245, 7248, 7239, 7240, 7250, 7244, 7256, 7261, + 7257, 7259, 7271, 7269, 7278, 7277, 7272, 7286, 7273, 7274, + 7290, 7297, 7276, 7295, 7298, 7299, 7300, 7316, 7309, 7321, + 7317, 7319, 9568, 7313, 7325, 7312, 7342, 7337, 7344, 7348, + 7354, 7356, 7359, 9568, 7362, 9568, 7364, 7350, 7355, 7369, + 7352, 9568, 7377, 7380, 7378, 7379, 7375, 7381, 7383, 7389, + 7395, 7396, 7402, 9568, 7417, 7404, 7410, 7411, 7419, 9568, + + 7412, 7433, 7416, 7424, 7428, 7437, 7431, 7436, 7440, 7438, + 7450, 7453, 7446, 7460, 7462, 7470, 7471, 7477, 7464, 7459, + 7469, 7476, 7480, 7472, 7486, 7489, 7473, 7508, 7509, 7510, + 9568, 7495, 9568, 7515, 7499, 7513, 7500, 7523, 7512, 7527, + 9568, 9568, 7529, 7531, 7530, 7533, 7526, 7543, 7551, 7550, + 7559, 9568, 7552, 7560, 7566, 7555, 9568, 7554, 7577, 7578, + 7572, 9568, 7573, 7574, 7576, 7584, 7587, 7588, 7603, 7593, + 7600, 7601, 7599, 7609, 9568, 9568, 9568, 9568, 7617, 7610, + 7621, 7625, 7626, 7614, 7622, 7634, 7627, 9568, 7647, 9568, + 9568, 7646, 7650, 7643, 7658, 7648, 7641, 7653, 7659, 9568, + + 7649, 7666, 7674, 7673, 7672, 7681, 7692, 7689, 7690, 7684, + 7685, 7709, 7700, 7706, 7682, 7708, 7710, 7714, 9568, 9568, + 7712, 7718, 7717, 7726, 7723, 7733, 7729, 7736, 7742, 7744, + 7739, 7747, 7750, 7730, 7759, 7764, 7756, 7755, 9568, 7765, + 7763, 7776, 9568, 7769, 9568, 7775, 7782, 7766, 7785, 7788, + 7791, 7803, 7792, 9568, 9568, 7795, 7810, 7811, 9568, 9568, + 7802, 7796, 7807, 7820, 7825, 7814, 7827, 7824, 7835, 7823, + 9568, 7830, 9568, 7829, 7851, 7846, 7840, 7863, 7866, 7869, + 7868, 7862, 7872, 9568, 7871, 7861, 9568, 7876, 7878, 7875, + 7873, 7894, 9568, 7883, 7867, 7886, 7891, 9568, 7915, 7912, + + 7914, 9568, 7917, 9568, 7900, 7918, 7910, 7929, 7913, 9568, + 7906, 7927, 9568, 7930, 7931, 7932, 7921, 9568, 7933, 9568, + 7943, 7938, 7965, 7964, 7952, 7968, 7956, 7953, 7958, 7978, + 7974, 7973, 9568, 9568, 73, 7981, 7959, 7983, 7986, 7991, + 7980, 7962, 7984, 8002, 9568, 9568, 8007, 9568, 8008, 8014, + 9568, 7994, 8020, 8021, 8009, 8032, 8013, 8005, 8024, 8028, + 8042, 8057, 8047, 8043, 8055, 8071, 8072, 8054, 8075, 8076, + 8078, 8084, 8090, 8070, 8087, 8074, 8081, 8088, 8097, 8104, + 8101, 8102, 8103, 9568, 8125, 8126, 8124, 8114, 9568, 8133, + 8128, 8138, 8134, 9568, 8140, 8136, 8137, 8147, 9568, 8130, + + 8142, 8154, 8159, 8151, 8160, 8161, 8182, 8166, 8175, 8185, + 9568, 9568, 9568, 8186, 8180, 9568, 8190, 8178, 8169, 8181, + 9568, 8200, 8195, 8198, 9568, 9568, 8203, 8205, 8209, 8206, + 9568, 8208, 9568, 8213, 9568, 8218, 8219, 8237, 8230, 9568, + 8243, 8258, 9568, 8215, 8244, 8249, 8245, 8233, 8250, 8247, + 9568, 8263, 8268, 8277, 8267, 8260, 8271, 8270, 8279, 8274, + 8293, 8287, 8299, 9568, 8298, 8303, 8310, 8306, 8294, 8301, + 8309, 9568, 8311, 9568, 8317, 9568, 8314, 8319, 8318, 8338, + 8334, 8329, 8344, 8355, 8356, 8353, 8345, 8340, 8364, 8349, + 9568, 9568, 8369, 8370, 9568, 8365, 9568, 8373, 9568, 8372, + + 8378, 8382, 8376, 9568, 8385, 8384, 8392, 8328, 8379, 8391, + 9568, 8406, 8400, 8397, 8417, 9568, 9568, 8403, 8425, 8421, + 9568, 8413, 8422, 8432, 8418, 8436, 8431, 8430, 8427, 8451, + 8437, 8448, 8441, 8467, 8468, 8469, 9568, 9568, 9568, 8464, + 8452, 8478, 8477, 8481, 8485, 8474, 9568, 8488, 8486, 8495, + 8483, 8490, 8489, 8509, 9568, 8511, 8503, 8499, 8501, 8518, + 8512, 8516, 8526, 9568, 8525, 8537, 8539, 8528, 8541, 8540, + 8547, 8549, 8543, 8534, 8559, 8552, 9568, 8563, 9568, 9568, + 8553, 9568, 8555, 8566, 8567, 8564, 9568, 8575, 8569, 8578, + 8571, 8580, 8592, 8581, 8603, 9568, 8583, 8586, 8590, 8613, + + 9568, 9568, 8611, 9568, 8614, 8615, 8607, 8628, 8617, 8623, + 8625, 8627, 9568, 8619, 8633, 8630, 8637, 8645, 9568, 8655, + 8642, 8647, 8648, 9568, 8652, 8657, 8669, 8644, 8672, 9568, + 8676, 8671, 8688, 8680, 9568, 8682, 8690, 8692, 9568, 9568, + 8689, 8701, 8706, 9568, 9568, 9568, 8711, 8716, 8703, 8723, + 9568, 8724, 4983, 8727, 8736, 8735, 9568, 8726, 8732, 8740, + 8728, 8730, 9568, 9568, 8725, 8749, 8751, 8747, 9568, 9568, + 8750, 8753, 8757, 8755, 8766, 9568, 8752, 8776, 8788, 8765, + 8786, 8779, 8790, 8792, 8805, 8803, 8782, 8784, 8793, 8813, + 8819, 8806, 8810, 8828, 8821, 8829, 8835, 8823, 8831, 9568, + + 9568, 8839, 9568, 8842, 8834, 9568, 9568, 8844, 8847, 8849, + 8853, 8857, 8859, 8860, 8864, 8841, 9568, 8863, 8873, 8866, + 8865, 8858, 9568, 8862, 8879, 8868, 8869, 8876, 8896, 8886, + 8898, 9568, 9568, 8889, 8908, 8891, 8913, 8894, 9568, 8916, + 8925, 8915, 8921, 8903, 8909, 8931, 9568, 8939, 8923, 9568, + 9568, 8933, 8936, 9568, 9568, 8935, 9568, 9568, 9568, 9568, + 9568, 9568, 9568, 9568, 8950, 8954, 9568, 8952, 8967, 8968, + 8969, 9568, 8948, 8964, 8966, 8956, 8972, 9568, 8962, 8979, + 8975, 8999, 8989, 9007, 8992, 8991, 8993, 8998, 8996, 9000, + 9013, 8997, 9024, 9012, 9025, 9043, 9026, 9039, 9568, 9568, + + 9568, 9031, 9027, 9050, 9052, 9055, 9058, 9062, 9063, 9048, + 9049, 9065, 9073, 9075, 9056, 9072, 9070, 9077, 9086, 9079, + 9093, 9083, 9101, 9568, 9109, 9097, 9096, 9116, 9568, 9102, + 9568, 9104, 9568, 9568, 9119, 9120, 9118, 9108, 9137, 9138, + 9136, 9128, 9132, 9129, 9140, 9568, 9152, 9568, 9568, 9139, + 9142, 9568, 9143, 9154, 9568, 9153, 9166, 9155, 9159, 9163, + 9156, 9183, 9186, 9192, 9568, 9568, 9177, 9178, 9187, 9194, + 9190, 9212, 9207, 9204, 9211, 9215, 9210, 9217, 9568, 9225, + 9221, 9227, 9568, 9224, 9213, 9223, 9222, 9239, 9250, 9242, + 9233, 9568, 9262, 9568, 9264, 9266, 9260, 9252, 9253, 9254, + + 9269, 9277, 9273, 9568, 9257, 9294, 9284, 9300, 9305, 9302, + 9308, 9293, 9314, 9311, 9317, 9318, 9324, 9329, 9321, 9320, + 9330, 9568, 9323, 9334, 9568, 9332, 9350, 9335, 9341, 9364, + 9568, 9366, 9351, 9352, 9368, 9372, 9367, 9568, 9373, 9375, + 9376, 9568, 9379, 9568, 9568, 9380, 9386, 9389, 9388, 9390, + 9568, 9568, 9568, 9448, 9455, 9462, 9469, 9476, 9483, 9490, + 102, 9497, 9504, 9511, 9518, 9525, 9532, 9539, 9546, 9553, + 9560 } ; -static const flex_int16_t yy_def[3310] = +static const flex_int16_t yy_def[3372] = { 0, - 3291, 1, 3292, 3292, 3293, 3293, 3294, 3294, 3295, 3295, - 3296, 3296, 3297, 3297, 3298, 3298, 3291, 3299, 3291, 3291, - 3291, 3291, 3300, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3301, 3291, 3291, 3291, - 3301, 3302, 3291, 3291, 3291, 3302, 3303, 3291, 3291, 3291, - 3291, 3303, 3304, 3291, 3291, 3291, 3304, 3305, 3291, 3306, - 3291, 3305, 3305, 3307, 3291, 3291, 3291, 3291, 3307, 3308, - 3291, 3291, 3291, 3308, 3299, 3299, 3291, 3309, 3300, 3309, - 3300, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3301, 3301, 3302, - 3302, 3303, 3303, 3291, 3304, 3304, 3305, 3305, 3306, 3306, - 3305, 3307, 3307, 3291, 3308, 3308, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3305, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3305, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, - 3305, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, - - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - - 3299, 3305, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3291, 3291, 3299, 3291, 3291, 3299, 3299, 3291, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3305, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3291, 3299, 3299, - - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3291, 3291, 3299, 3299, 3299, 3299, 3299, 3291, - - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - 3305, 3305, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - - 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3305, 3299, 3299, - 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3291, 3299, 3299, 3299, - 3299, 3299, 3291, 3299, 3291, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3305, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - - 3291, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3291, 3291, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3305, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, - - 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3291, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, - - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3291, 3299, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3305, 3299, 3291, 3299, 3299, 3299, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3291, - - 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3291, 3291, 3299, 3291, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, - - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3291, 3299, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3305, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, - - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3291, 3299, 3291, 3299, 3299, 3299, 3299, 3305, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3291, 3291, 3299, - 3299, 3299, 3299, 3299, 3291, 3291, 3299, 3291, 3299, 3291, - 3299, 3299, 3291, 3291, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - 3299, 3291, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3305, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3291, 3299, 3291, 3299, 3299, 3299, 3299, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3291, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - - 3291, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3291, 3291, 3291, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3291, 3291, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3305, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3291, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3291, - - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3291, 3291, 3299, 3299, 3299, 3291, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3291, 3299, 3299, 3291, 3299, 3299, 3299, 3291, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3291, 3299, 3291, 3299, - 3299, 3299, 3299, 3291, 3299, 3299, 3291, 3299, 3299, 3299, - 3299, 3291, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3291, 3305, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3291, - - 3299, 3291, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3291, 3291, 3291, 3299, 3299, 3291, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3291, 3291, 3299, 3299, 3299, - 3299, 3291, 3299, 3291, 3299, 3291, 3299, 3299, 3299, 3299, - 3291, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, - - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3291, 3299, 3291, 3299, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3291, 3299, 3299, 3291, 3299, 3291, 3299, 3291, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3291, 3291, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3291, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, - - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3291, 3291, 3299, 3291, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3299, 3299, 3299, 3299, 3291, 3291, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, - 3291, 3299, 3299, 3299, 3291, 3291, 3299, 3299, 3299, 3291, - 3291, 3291, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, - - 3299, 3299, 3291, 3299, 3299, 3299, 3291, 3291, 3299, 3299, - 3299, 3299, 3291, 3291, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3291, 3291, 3299, 3291, 3299, 3299, 3291, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3291, 3291, 3299, 3299, 3299, 3299, 3299, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, - 3299, 3291, 3291, 3299, 3299, 3291, 3291, 3299, 3291, 3291, - - 3291, 3291, 3291, 3291, 3291, 3299, 3291, 3299, 3299, 3299, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3291, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3291, 3299, - 3291, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3291, 3299, 3291, 3291, 3299, 3299, 3291, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - - 3299, 3299, 3291, 3291, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3291, 3299, - 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3291, - 3299, 3291, 3291, 3299, 3299, 3299, 3299, 3299, 3291, 3291, - 0, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, - - 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291 + 3353, 1, 3354, 3354, 3355, 3355, 3356, 3356, 3357, 3357, + 3358, 3358, 3359, 3359, 3360, 3360, 3353, 3361, 3353, 3353, + 3353, 3353, 3362, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3363, 3353, 3353, 3353, + 3363, 3364, 3353, 3353, 3353, 3364, 3365, 3353, 3353, 3353, + 3353, 3365, 3366, 3353, 3353, 3353, 3366, 3367, 3353, 3368, + 3353, 3367, 3367, 3369, 3353, 3353, 3353, 3353, 3369, 3370, + 3353, 3353, 3353, 3370, 3361, 3361, 3353, 3371, 3362, 3371, + 3362, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3363, + 3363, 3364, 3364, 3365, 3365, 3353, 3366, 3366, 3367, 3367, + 3368, 3368, 3367, 3369, 3369, 3353, 3370, 3370, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3367, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3367, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3353, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + + 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3367, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3367, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3353, 3361, 3353, 3353, 3361, 3353, 3353, 3361, 3361, 3353, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + + 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + + 3367, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, + 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3353, 3361, 3361, + + 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3353, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3353, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3367, 3367, 3361, + + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3367, 3361, 3361, + + 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3353, + 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3353, 3361, 3361, + 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + + 3361, 3361, 3353, 3361, 3367, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3353, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3353, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3353, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, + 3361, 3361, 3361, 3353, 3361, 3353, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, + + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3367, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, + + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3353, 3353, 3361, 3361, 3361, + 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, + 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, + 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, + 3361, 3361, 3353, 3361, 3361, 3361, 3353, 3361, 3361, 3361, + + 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3367, 3361, 3353, 3361, 3361, 3361, 3353, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3353, + 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3353, 3353, 3361, 3353, 3361, + 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3353, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + + 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3353, + 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, + 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, + 3353, 3353, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, + + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3367, 3361, 3361, + 3361, 3361, 3361, 3361, 3353, 3353, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, + 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3353, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3353, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, + 3361, 3353, 3361, 3361, 3361, 3361, 3367, 3361, 3353, 3361, + 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3353, + + 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, + 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3353, 3361, + 3361, 3361, 3361, 3361, 3353, 3353, 3361, 3361, 3361, 3361, + 3361, 3353, 3353, 3361, 3353, 3361, 3353, 3361, 3361, 3353, + 3353, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3353, 3361, + 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, + + 3353, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, + 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3367, 3361, 3361, + 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3353, 3361, 3353, 3361, 3361, 3361, 3361, + 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3353, + + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3353, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3353, 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3353, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, + 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3353, 3353, 3353, 3353, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3353, + 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, + + 3361, 3361, 3361, 3361, 3361, 3361, 3367, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3353, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, + 3361, 3361, 3353, 3361, 3353, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3353, 3353, 3361, 3361, 3361, 3353, 3353, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3353, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3353, 3361, 3361, 3353, 3361, 3361, 3361, + 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3353, 3361, 3361, + + 3361, 3353, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3353, + 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3353, 3361, 3353, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3353, 3353, 3367, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3353, 3353, 3361, 3353, 3361, 3361, + 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3353, 3361, + 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3353, 3361, + + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3353, 3353, 3353, 3361, 3361, 3353, 3361, 3361, 3361, 3361, + 3353, 3361, 3361, 3361, 3353, 3353, 3361, 3361, 3361, 3361, + 3353, 3361, 3353, 3361, 3353, 3361, 3361, 3361, 3361, 3353, + 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3353, 3361, 3353, 3361, 3353, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3353, 3353, 3361, 3361, 3353, 3361, 3353, 3361, 3353, 3361, + + 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, + 3353, 3361, 3361, 3361, 3361, 3353, 3353, 3361, 3361, 3361, + 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3353, 3353, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3353, 3353, + 3361, 3353, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, + + 3353, 3353, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3353, 3361, + 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3353, + 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3353, 3353, + 3361, 3361, 3361, 3353, 3353, 3353, 3361, 3361, 3361, 3361, + 3353, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, + 3361, 3361, 3353, 3353, 3361, 3361, 3361, 3361, 3353, 3353, + 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, + + 3353, 3361, 3353, 3361, 3361, 3353, 3353, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3361, + 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3353, 3353, 3361, 3361, 3361, 3361, 3361, 3353, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, 3353, + 3353, 3361, 3361, 3353, 3353, 3361, 3353, 3353, 3353, 3353, + 3353, 3353, 3353, 3353, 3361, 3361, 3353, 3361, 3361, 3361, + 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3353, + + 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3353, 3361, + 3353, 3361, 3353, 3353, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3353, 3353, 3361, + 3361, 3353, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3353, 3353, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, + 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3353, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, + + 3361, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3353, 3361, 3361, 3353, 3361, 3361, 3361, 3361, 3361, + 3353, 3361, 3361, 3361, 3361, 3361, 3361, 3353, 3361, 3361, + 3361, 3353, 3361, 3353, 3353, 3361, 3361, 3361, 3361, 3361, + 3353, 3353, 0, 3353, 3353, 3353, 3353, 3353, 3353, 3353, + 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, + 3353 } ; -static const flex_int16_t yy_nxt[9455] = +static const flex_int16_t yy_nxt[9635] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 18, @@ -1520,1040 +1540,1060 @@ static const flex_int16_t yy_nxt[9455] = 43, 44, 18, 18, 18, 45, 48, 49, 50, 48, 49, 50, 53, 54, 53, 54, 55, 119, 55, 58, 59, 60, 61, 120, 22, 58, 59, 60, 61, 86, - 22, 64, 65, 66, 64, 65, 66, 87, 158, 158, + 22, 64, 65, 66, 64, 65, 66, 87, 160, 160, - 1271, 88, 85, 51, 119, 86, 51, 165, 165, 56, - 120, 56, 168, 75, 76, 77, 78, 62, 22, 75, + 1291, 88, 85, 51, 119, 86, 51, 167, 167, 56, + 120, 56, 170, 75, 76, 77, 78, 62, 22, 75, 76, 77, 78, 62, 22, 81, 82, 83, 67, 97, 86, 67, 19, 20, 21, 69, 70, 71, 19, 20, - 21, 69, 70, 71, 81, 82, 83, 121, 108, 175, - 175, 79, 72, 157, 403, 86, 97, 79, 72, 86, - 135, 90, 84, 90, 90, 86, 90, 168, 109, 176, - 73, 86, 90, 86, 121, 108, 73, 174, 87, 72, - 157, 84, 88, 86, 129, 72, 112, 135, 110, 160, - 86, 173, 160, 171, 113, 109, 98, 168, 186, 91, - - 92, 93, 111, 99, 94, 114, 168, 100, 185, 95, - 101, 129, 86, 112, 86, 110, 86, 86, 96, 166, - 171, 113, 86, 98, 86, 186, 164, 92, 93, 111, - 99, 94, 114, 163, 100, 185, 95, 101, 85, 160, - 85, 85, 160, 85, 161, 96, 102, 159, 115, 85, - 103, 116, 187, 104, 179, 105, 106, 248, 117, 162, - 118, 162, 162, 288, 162, 86, 107, 90, 86, 90, - 90, 86, 90, 102, 86, 115, 122, 103, 116, 187, - 104, 179, 105, 106, 123, 117, 178, 118, 126, 86, - 124, 181, 127, 107, 125, 86, 154, 324, 86, 146, - - 155, 147, 86, 122, 156, 170, 177, 86, 128, 86, - 148, 123, 176, 178, 86, 126, 149, 124, 181, 127, - 174, 125, 86, 154, 150, 86, 146, 155, 147, 86, - 86, 156, 328, 177, 151, 128, 130, 148, 152, 153, - 131, 199, 173, 149, 158, 158, 132, 86, 86, 133, - 167, 150, 167, 167, 182, 167, 134, 172, 86, 172, - 172, 151, 172, 130, 86, 152, 153, 131, 199, 85, - 180, 85, 85, 132, 85, 195, 133, 168, 86, 166, - 85, 182, 183, 134, 136, 86, 164, 203, 137, 90, - 241, 90, 90, 196, 90, 184, 86, 180, 138, 139, - - 90, 140, 86, 191, 192, 163, 86, 86, 194, 183, - 86, 136, 86, 188, 203, 137, 86, 241, 193, 189, - 196, 190, 184, 86, 161, 138, 139, 91, 140, 141, - 191, 192, 142, 159, 86, 194, 197, 198, 204, 143, - 188, 165, 165, 144, 145, 193, 189, 86, 190, 86, - 86, 86, 200, 201, 205, 206, 141, 175, 175, 142, - 202, 207, 86, 197, 198, 204, 143, 215, 86, 213, - 144, 145, 208, 209, 86, 86, 210, 86, 3291, 200, - 201, 205, 206, 86, 216, 86, 3291, 202, 207, 211, - 212, 3291, 224, 214, 215, 3291, 223, 86, 218, 208, - - 209, 86, 219, 210, 217, 221, 86, 225, 227, 86, - 222, 216, 226, 86, 229, 86, 211, 212, 220, 224, - 214, 86, 86, 223, 228, 218, 86, 86, 86, 219, - 231, 217, 221, 230, 225, 227, 236, 222, 86, 226, - 232, 229, 86, 233, 3291, 220, 243, 234, 235, 86, - 3291, 228, 237, 86, 86, 86, 3291, 231, 256, 86, - 230, 250, 86, 236, 3291, 86, 86, 232, 238, 244, - 233, 242, 86, 243, 234, 235, 247, 239, 251, 237, - 245, 252, 249, 240, 246, 256, 257, 86, 250, 255, - 86, 86, 86, 86, 3291, 238, 244, 86, 242, 262, - - 86, 253, 3291, 247, 239, 251, 258, 245, 252, 249, - 240, 246, 254, 257, 86, 259, 255, 86, 265, 263, - 264, 86, 266, 1131, 260, 267, 262, 86, 253, 162, - 3291, 162, 162, 258, 162, 86, 261, 268, 86, 254, - 86, 86, 259, 3291, 86, 265, 263, 264, 3291, 266, - 269, 260, 267, 167, 86, 167, 167, 90, 167, 90, - 90, 168, 90, 261, 268, 172, 270, 172, 172, 272, - 172, 3291, 86, 273, 274, 276, 3291, 269, 86, 278, - 271, 275, 279, 280, 277, 86, 282, 86, 3291, 3291, - 281, 86, 374, 86, 86, 170, 272, 86, 86, 286, - - 273, 274, 276, 86, 86, 86, 278, 271, 275, 279, - 280, 277, 283, 282, 285, 298, 86, 281, 284, 86, - 287, 86, 330, 297, 299, 302, 286, 289, 3291, 3291, - 86, 290, 86, 334, 300, 301, 303, 306, 3291, 304, - 86, 285, 298, 86, 86, 284, 86, 287, 291, 86, - 297, 299, 302, 3291, 86, 86, 86, 86, 290, 3291, - 86, 300, 301, 303, 306, 86, 3291, 305, 307, 308, - 309, 86, 3291, 310, 311, 291, 292, 312, 313, 3291, - 86, 293, 3291, 86, 314, 86, 294, 86, 315, 86, - 86, 322, 295, 296, 305, 307, 308, 309, 86, 86, - - 310, 311, 3291, 292, 312, 313, 86, 321, 293, 325, - 86, 314, 323, 294, 326, 315, 333, 331, 322, 295, - 296, 316, 86, 86, 317, 327, 318, 336, 335, 86, - 329, 332, 337, 340, 321, 86, 325, 86, 319, 323, - 320, 338, 339, 333, 3291, 342, 86, 86, 316, 86, - 86, 317, 327, 318, 86, 335, 86, 329, 332, 86, - 340, 86, 343, 341, 86, 319, 86, 320, 338, 339, - 86, 344, 342, 345, 346, 347, 86, 348, 351, 349, - 356, 352, 350, 3291, 3291, 86, 353, 355, 86, 343, - 341, 86, 86, 86, 354, 86, 86, 86, 344, 358, - - 345, 346, 347, 86, 348, 351, 349, 356, 361, 350, - 357, 359, 360, 86, 355, 86, 86, 362, 364, 363, - 86, 354, 365, 367, 86, 368, 369, 366, 370, 372, - 86, 86, 373, 377, 86, 371, 3291, 357, 359, 360, - 86, 86, 86, 86, 362, 364, 363, 86, 375, 365, - 86, 378, 381, 369, 366, 86, 372, 86, 86, 373, - 86, 383, 371, 380, 384, 86, 382, 86, 379, 86, - 385, 376, 386, 388, 86, 389, 86, 86, 378, 381, - 86, 168, 387, 86, 390, 392, 86, 3291, 383, 393, - 380, 384, 391, 382, 86, 379, 399, 385, 376, 386, - - 394, 86, 396, 395, 397, 86, 86, 86, 398, 387, - 86, 390, 86, 86, 86, 86, 393, 86, 400, 391, - 409, 401, 407, 86, 402, 404, 408, 394, 86, 396, - 395, 397, 405, 86, 86, 398, 406, 410, 86, 411, - 413, 414, 86, 412, 86, 400, 86, 409, 401, 407, - 86, 402, 404, 408, 86, 415, 416, 86, 86, 405, - 86, 86, 86, 406, 410, 417, 411, 418, 414, 420, - 412, 421, 86, 422, 427, 423, 426, 428, 3291, 425, - 86, 86, 429, 416, 419, 86, 86, 86, 430, 3291, - 86, 86, 440, 86, 418, 86, 420, 86, 421, 424, - - 432, 427, 435, 426, 428, 86, 425, 86, 86, 429, - 431, 419, 86, 433, 478, 430, 434, 437, 439, 86, - 442, 86, 436, 86, 86, 86, 424, 432, 86, 435, - 441, 86, 449, 86, 438, 86, 451, 431, 3291, 450, - 433, 86, 3291, 434, 437, 439, 86, 442, 86, 436, - 86, 455, 3291, 3291, 86, 468, 484, 441, 86, 449, - 456, 438, 443, 451, 3291, 444, 450, 452, 457, 453, - 445, 446, 447, 448, 86, 86, 458, 459, 455, 460, - 86, 462, 86, 86, 461, 454, 3291, 456, 86, 443, - 465, 86, 444, 469, 452, 457, 453, 445, 446, 447, - - 448, 86, 86, 458, 459, 86, 463, 466, 462, 464, - 467, 86, 454, 470, 472, 86, 86, 465, 471, 475, - 469, 473, 476, 474, 497, 86, 86, 86, 86, 86, - 477, 536, 3291, 463, 466, 3291, 464, 467, 86, 86, - 470, 472, 86, 86, 86, 471, 475, 482, 473, 476, - 474, 479, 490, 480, 86, 3291, 86, 477, 495, 483, - 485, 486, 481, 86, 498, 86, 488, 487, 489, 549, - 3291, 3291, 496, 554, 482, 3291, 86, 86, 479, 490, - 480, 86, 86, 86, 491, 495, 483, 485, 486, 481, - 86, 86, 499, 488, 487, 489, 510, 492, 86, 496, - - 493, 86, 494, 86, 3291, 86, 513, 500, 86, 585, - 514, 491, 511, 501, 86, 515, 528, 502, 86, 499, - 526, 529, 86, 510, 492, 503, 3291, 493, 86, 494, - 512, 86, 86, 513, 500, 516, 86, 514, 532, 511, - 501, 86, 515, 518, 502, 527, 86, 526, 86, 533, - 3291, 517, 503, 504, 590, 505, 86, 512, 531, 86, - 530, 86, 516, 86, 168, 532, 534, 538, 506, 535, - 518, 507, 527, 508, 86, 509, 533, 86, 517, 86, - 504, 86, 505, 3291, 86, 531, 86, 530, 3291, 3291, - 540, 537, 86, 534, 538, 506, 535, 539, 507, 541, - - 508, 3291, 509, 519, 520, 542, 3291, 544, 3291, 546, - 86, 547, 545, 521, 86, 522, 523, 524, 537, 86, - 525, 86, 86, 543, 539, 548, 541, 86, 86, 550, - 519, 520, 542, 86, 544, 557, 546, 86, 547, 545, - 521, 551, 522, 523, 524, 552, 553, 525, 86, 555, - 543, 86, 548, 556, 560, 86, 550, 86, 561, 86, - 86, 86, 557, 562, 86, 558, 559, 3291, 551, 86, - 563, 564, 552, 553, 86, 3291, 555, 565, 566, 572, - 556, 560, 3291, 86, 568, 561, 569, 86, 571, 574, - 562, 573, 3291, 3291, 86, 567, 86, 563, 564, 575, - - 86, 570, 86, 86, 565, 566, 572, 86, 86, 86, - 576, 568, 586, 569, 86, 571, 574, 588, 573, 587, - 577, 591, 567, 86, 589, 594, 575, 86, 570, 592, - 86, 578, 593, 579, 603, 595, 596, 576, 86, 586, - 86, 86, 86, 86, 588, 597, 587, 577, 591, 86, - 86, 589, 594, 598, 599, 86, 592, 86, 578, 593, - 579, 580, 595, 596, 600, 601, 86, 86, 602, 581, - 582, 86, 597, 583, 584, 604, 606, 605, 3291, 86, - 598, 86, 86, 86, 607, 608, 86, 3291, 580, 86, - 613, 600, 601, 611, 86, 602, 581, 582, 86, 86, - - 583, 584, 604, 606, 605, 609, 86, 86, 86, 612, - 614, 607, 608, 610, 615, 3291, 86, 613, 617, 616, - 611, 618, 619, 620, 625, 86, 621, 3291, 623, 86, - 622, 86, 609, 86, 3291, 86, 612, 614, 86, 634, - 610, 615, 86, 86, 86, 617, 616, 86, 618, 619, - 620, 625, 86, 621, 86, 623, 624, 622, 626, 627, - 628, 629, 86, 630, 631, 632, 86, 633, 636, 3291, - 86, 86, 86, 86, 637, 86, 86, 635, 641, 639, - 86, 643, 640, 624, 638, 626, 627, 628, 629, 644, - 630, 631, 632, 86, 633, 86, 86, 86, 86, 642, - - 86, 637, 86, 645, 635, 641, 639, 646, 643, 640, - 86, 638, 86, 647, 649, 650, 653, 651, 3291, 652, - 655, 86, 86, 3291, 3291, 86, 642, 86, 654, 656, - 645, 86, 86, 715, 646, 670, 648, 86, 657, 86, - 658, 649, 650, 653, 651, 86, 652, 655, 86, 86, - 86, 86, 659, 3291, 668, 654, 656, 669, 86, 672, - 86, 86, 670, 648, 671, 657, 86, 658, 3291, 86, - 86, 3291, 86, 673, 3291, 677, 680, 676, 3291, 659, - 660, 668, 3291, 3291, 669, 661, 672, 662, 674, 86, - 3291, 671, 675, 663, 86, 664, 86, 86, 665, 666, - - 673, 681, 677, 680, 676, 667, 86, 660, 688, 683, - 86, 682, 661, 678, 662, 674, 679, 684, 685, 675, - 663, 86, 664, 686, 86, 665, 666, 86, 86, 689, - 687, 86, 667, 86, 86, 688, 683, 86, 682, 690, - 678, 691, 86, 679, 684, 685, 692, 693, 696, 695, - 686, 697, 694, 86, 86, 698, 689, 687, 3291, 86, - 86, 86, 701, 86, 700, 86, 690, 702, 691, 86, - 86, 699, 703, 692, 693, 696, 695, 716, 697, 694, - 86, 704, 698, 86, 706, 86, 709, 705, 707, 701, - 168, 700, 86, 708, 702, 86, 86, 712, 699, 86, - - 710, 86, 711, 713, 86, 86, 86, 714, 704, 86, - 717, 706, 718, 709, 705, 707, 86, 3291, 719, 720, - 708, 732, 86, 86, 712, 86, 86, 710, 721, 711, - 713, 723, 724, 86, 714, 722, 3291, 717, 733, 728, - 731, 86, 725, 86, 86, 719, 720, 86, 86, 726, - 86, 734, 727, 86, 86, 721, 86, 735, 723, 724, - 86, 736, 722, 729, 737, 86, 728, 731, 730, 725, - 738, 740, 741, 742, 744, 739, 726, 86, 3291, 727, - 3291, 743, 86, 86, 86, 745, 746, 86, 86, 747, - 748, 751, 750, 3291, 86, 86, 86, 86, 740, 741, - - 742, 744, 86, 86, 86, 752, 749, 754, 743, 753, - 86, 86, 745, 746, 86, 86, 747, 748, 86, 750, - 756, 758, 755, 86, 762, 757, 3291, 86, 86, 86, - 760, 759, 752, 749, 754, 86, 753, 86, 761, 763, - 3291, 86, 764, 3291, 770, 86, 86, 756, 758, 755, - 773, 777, 757, 86, 765, 86, 86, 760, 759, 766, - 774, 86, 767, 768, 769, 761, 763, 771, 772, 764, - 86, 770, 86, 86, 779, 775, 86, 773, 86, 86, - 776, 765, 86, 86, 782, 778, 766, 774, 86, 767, - 768, 769, 86, 780, 771, 772, 784, 783, 86, 785, - - 786, 779, 775, 86, 791, 787, 86, 776, 788, 86, - 86, 782, 778, 797, 789, 781, 86, 798, 86, 3291, - 780, 86, 86, 784, 783, 86, 785, 786, 792, 794, - 790, 86, 787, 795, 796, 788, 86, 86, 86, 793, - 86, 789, 781, 799, 798, 86, 86, 86, 802, 86, - 804, 86, 800, 801, 806, 792, 794, 790, 803, 86, - 795, 796, 807, 805, 808, 3291, 793, 86, 809, 812, - 799, 810, 86, 86, 813, 802, 86, 804, 811, 814, - 86, 86, 819, 815, 86, 803, 86, 828, 3291, 807, - 805, 820, 86, 86, 816, 809, 86, 86, 810, 86, - - 86, 86, 821, 822, 823, 811, 814, 824, 817, 818, - 815, 86, 825, 826, 86, 834, 86, 86, 820, 86, - 86, 816, 830, 829, 3291, 86, 833, 3291, 827, 821, - 822, 823, 86, 86, 824, 817, 818, 86, 86, 825, - 826, 831, 834, 835, 86, 843, 832, 837, 836, 830, - 829, 838, 86, 833, 839, 827, 86, 840, 842, 841, - 86, 845, 3291, 86, 844, 86, 86, 86, 86, 852, - 835, 846, 86, 86, 837, 836, 3291, 86, 838, 86, - 847, 839, 851, 86, 840, 842, 841, 86, 845, 849, - 848, 844, 86, 850, 86, 854, 855, 86, 846, 86, - - 853, 86, 857, 856, 86, 858, 865, 847, 86, 851, - 86, 86, 860, 86, 86, 859, 849, 848, 864, 86, - 850, 86, 854, 855, 866, 86, 86, 853, 863, 857, - 856, 867, 858, 865, 861, 862, 86, 870, 869, 860, - 86, 872, 859, 86, 868, 864, 86, 871, 873, 3291, - 86, 866, 875, 86, 86, 863, 876, 86, 867, 86, - 86, 861, 862, 86, 870, 869, 86, 877, 872, 874, - 878, 868, 881, 879, 871, 873, 86, 86, 882, 875, - 880, 86, 3291, 876, 888, 883, 885, 887, 884, 86, - 86, 886, 3291, 889, 877, 86, 874, 878, 86, 881, - - 879, 86, 86, 86, 86, 882, 86, 880, 86, 168, - 890, 888, 883, 885, 887, 884, 86, 891, 886, 892, - 889, 893, 894, 86, 895, 898, 3291, 3291, 86, 902, - 896, 86, 899, 901, 86, 86, 903, 890, 897, 904, - 900, 86, 908, 86, 891, 906, 892, 86, 893, 894, - 909, 86, 86, 905, 86, 907, 86, 896, 86, 899, - 901, 86, 86, 903, 86, 897, 904, 900, 86, 86, - 910, 912, 906, 86, 86, 911, 913, 909, 922, 921, - 905, 923, 907, 86, 86, 927, 3291, 3291, 86, 924, - 86, 86, 925, 935, 3291, 3291, 86, 910, 912, 86, - - 926, 3291, 911, 913, 914, 922, 921, 915, 923, 928, - 86, 916, 927, 86, 917, 933, 924, 929, 86, 925, - 930, 918, 919, 931, 920, 86, 932, 926, 86, 86, - 934, 914, 86, 943, 915, 86, 928, 86, 916, 86, - 946, 917, 933, 86, 929, 945, 86, 930, 918, 919, - 931, 920, 950, 932, 86, 86, 944, 934, 936, 937, - 943, 938, 86, 86, 939, 947, 948, 946, 86, 940, - 951, 953, 945, 86, 86, 941, 942, 954, 86, 950, - 957, 3291, 949, 944, 86, 936, 937, 952, 938, 86, - 955, 939, 947, 948, 958, 956, 940, 951, 953, 86, - - 86, 86, 941, 942, 954, 959, 960, 957, 961, 949, - 3291, 3291, 963, 965, 952, 962, 964, 86, 970, 966, - 86, 958, 86, 968, 969, 86, 967, 3291, 86, 980, - 972, 86, 959, 960, 86, 961, 86, 86, 86, 963, - 86, 86, 962, 964, 86, 970, 966, 86, 971, 86, - 968, 969, 973, 967, 974, 975, 86, 972, 976, 978, - 977, 86, 979, 982, 986, 3291, 86, 86, 86, 86, - 981, 983, 985, 987, 86, 971, 984, 989, 86, 973, - 988, 974, 975, 991, 86, 976, 978, 977, 990, 979, - 86, 993, 86, 994, 86, 992, 86, 981, 995, 985, - - 1000, 3291, 86, 86, 86, 86, 998, 988, 997, 86, - 991, 1001, 86, 999, 86, 990, 1003, 86, 86, 996, - 86, 86, 992, 1002, 1004, 995, 86, 86, 86, 86, - 86, 1005, 3291, 998, 1006, 997, 1007, 1009, 1001, 86, - 999, 1008, 86, 86, 86, 1011, 996, 1010, 1012, 1013, - 1002, 1014, 86, 86, 86, 1015, 86, 1016, 1005, 86, - 1019, 1006, 86, 1007, 1009, 86, 3291, 1020, 1008, 86, - 86, 86, 1011, 86, 1010, 1012, 1013, 1022, 1014, 86, - 1017, 1021, 1015, 1027, 1016, 1018, 86, 1019, 1023, 86, - 1024, 86, 3291, 1026, 1020, 86, 1028, 1029, 1025, 1030, - - 1031, 3291, 86, 3291, 1022, 86, 1032, 86, 1021, 1037, - 86, 1033, 86, 86, 86, 1023, 86, 1024, 86, 86, - 1026, 1034, 1035, 1028, 1029, 1025, 1030, 1031, 86, 1039, - 1036, 1040, 86, 1032, 86, 1038, 1037, 86, 1033, 1042, - 86, 1041, 1043, 1045, 86, 1044, 3291, 1046, 1034, 1035, - 86, 1047, 1048, 1050, 86, 1057, 1039, 1036, 86, 86, - 86, 1058, 1038, 86, 86, 1052, 1042, 1060, 1041, 1043, - 1045, 86, 1044, 86, 1046, 1049, 1051, 1063, 1047, 86, - 1050, 1053, 86, 86, 86, 1054, 1055, 86, 86, 1056, - 86, 1059, 1052, 86, 86, 1064, 86, 1061, 1062, 86, - - 1072, 1069, 1049, 1051, 86, 86, 1065, 1066, 1053, 86, - 86, 1067, 1054, 1055, 1070, 86, 1056, 1071, 1059, 1068, - 86, 1073, 1074, 86, 1061, 1062, 86, 86, 1069, 86, - 1076, 86, 86, 1065, 1066, 3291, 1075, 1078, 1067, 1080, - 1077, 1070, 1079, 86, 1071, 86, 1068, 86, 1073, 1074, - 86, 86, 1081, 1083, 1084, 3291, 1085, 1082, 1128, 3291, - 3291, 86, 86, 1075, 86, 86, 1080, 1077, 1086, 1079, - 1088, 1087, 1090, 86, 1092, 86, 1091, 86, 86, 1089, - 1083, 1084, 86, 1085, 168, 1094, 1093, 86, 86, 86, - 86, 86, 86, 86, 1102, 1086, 1103, 1088, 1087, 1090, - - 3291, 1092, 1101, 1091, 1104, 3291, 1089, 1105, 86, 86, - 1106, 3291, 1094, 1093, 1095, 3291, 1096, 86, 1107, 3291, - 1097, 1102, 1098, 1103, 1109, 3291, 1108, 1099, 86, 1101, - 86, 86, 1100, 86, 1105, 1110, 3291, 1106, 86, 86, - 1113, 1095, 1125, 1096, 1114, 1107, 86, 1097, 86, 1098, - 1111, 1109, 1115, 1108, 1099, 1112, 1117, 86, 86, 1100, - 86, 1120, 1110, 1118, 1116, 1121, 1129, 1113, 86, 1125, - 1130, 1114, 1123, 1119, 1126, 86, 86, 1132, 86, 1115, - 1122, 1124, 86, 1117, 1127, 86, 1160, 86, 1120, 1154, - 1118, 1116, 1121, 86, 86, 86, 1134, 86, 86, 1123, - - 1119, 1126, 1143, 1135, 86, 1133, 86, 1122, 1124, 86, - 86, 1127, 86, 86, 1144, 1145, 1146, 86, 1147, 3291, - 1149, 86, 1150, 1134, 3291, 3291, 1148, 3291, 86, 1143, - 1135, 86, 1133, 1136, 3291, 86, 86, 3291, 1137, 86, - 1138, 1144, 1145, 1146, 86, 1147, 1139, 1149, 86, 1150, - 1153, 1140, 1141, 1148, 1151, 1152, 1156, 1157, 1142, 86, - 1136, 86, 86, 86, 1155, 1137, 86, 1138, 1163, 1158, - 3291, 86, 1161, 1139, 1164, 1168, 1167, 1153, 1140, 1141, - 86, 1151, 1152, 1156, 1157, 1142, 86, 1162, 1159, 1166, - 86, 1155, 3291, 1174, 86, 86, 1158, 86, 86, 1161, - - 86, 1164, 1165, 1167, 1169, 1170, 1171, 86, 1173, 1172, - 86, 86, 1175, 86, 1162, 1159, 1166, 3291, 1177, 86, - 1176, 3291, 1186, 1199, 86, 86, 86, 86, 86, 1165, - 86, 1169, 1170, 1171, 1178, 1173, 1172, 1179, 1181, 1175, - 86, 86, 1180, 1188, 1182, 1177, 1184, 1176, 1183, 86, - 86, 1190, 1187, 86, 86, 86, 86, 3291, 1185, 86, - 1193, 1178, 86, 86, 1179, 1181, 86, 86, 86, 1180, - 1188, 1182, 86, 1184, 1189, 1183, 1191, 1192, 1190, 1187, - 1194, 86, 1197, 1195, 1196, 1185, 86, 1193, 1198, 86, - 1202, 1208, 3291, 1206, 1200, 1203, 1213, 3291, 86, 1215, - - 86, 1189, 86, 1191, 1192, 86, 86, 1194, 86, 1197, - 1195, 1196, 1201, 1207, 86, 1198, 1204, 86, 1208, 1205, - 1206, 1200, 86, 86, 1209, 1210, 86, 1211, 86, 1214, - 3291, 86, 1212, 1216, 86, 86, 86, 1218, 1219, 1201, - 1207, 86, 86, 1204, 86, 86, 1205, 1217, 1221, 1220, - 86, 1209, 1210, 3291, 1211, 86, 1214, 1222, 1224, 1212, - 1216, 1223, 86, 1226, 1218, 1219, 1227, 1225, 1230, 86, - 86, 1228, 86, 3291, 1217, 1221, 1220, 1231, 86, 86, - 86, 1229, 86, 1232, 1222, 1224, 1233, 86, 1223, 86, - 1226, 1234, 1239, 1227, 1225, 86, 1235, 1236, 1228, 1237, - - 86, 86, 86, 1240, 86, 1238, 86, 86, 1229, 1241, - 1232, 1242, 86, 1233, 1246, 86, 86, 86, 1234, 1239, - 1243, 1249, 86, 1235, 1236, 1247, 1237, 1244, 1245, 1248, - 1240, 1251, 1238, 1252, 86, 1250, 86, 1256, 3291, 1254, - 3291, 86, 86, 86, 1257, 1253, 86, 1243, 86, 86, - 86, 86, 1247, 86, 1244, 1245, 1248, 86, 86, 1255, - 1252, 86, 1250, 86, 1256, 1258, 1254, 86, 86, 1259, - 1260, 1257, 1253, 1261, 1262, 1263, 1264, 1265, 3291, 86, - 3291, 86, 86, 1266, 1267, 1268, 1255, 1270, 86, 86, - 1269, 86, 1258, 86, 1277, 1273, 1259, 1260, 3291, 3291, - - 1261, 1262, 86, 86, 1265, 86, 1272, 86, 86, 1282, - 1266, 86, 1268, 86, 1270, 86, 1274, 1269, 1275, 1276, - 86, 86, 1273, 1278, 86, 1279, 1281, 86, 1280, 1283, - 168, 86, 1284, 1272, 1286, 1285, 1282, 1287, 86, 3291, - 86, 86, 86, 1274, 1292, 1275, 1276, 86, 1289, 1288, - 1278, 1291, 1279, 1281, 1290, 1280, 1283, 86, 1294, 86, - 86, 1293, 1285, 1297, 1296, 1295, 86, 3291, 1356, 86, - 86, 1292, 86, 86, 86, 1289, 1288, 86, 1291, 86, - 86, 1290, 1298, 86, 1300, 1294, 1301, 1299, 1293, 1302, - 1297, 1296, 1295, 1303, 86, 86, 1304, 1305, 86, 86, - - 86, 1313, 3291, 1310, 86, 86, 3291, 1311, 1315, 1298, - 3291, 86, 3291, 1301, 1299, 1312, 1302, 86, 1306, 1314, - 1303, 86, 3291, 1304, 1305, 1316, 86, 1307, 86, 1308, - 1310, 1320, 1309, 86, 1311, 1315, 1317, 86, 1318, 86, - 86, 3291, 1312, 1319, 86, 1306, 1314, 86, 3291, 86, - 1323, 1322, 1316, 86, 1307, 1325, 1308, 1327, 1320, 1309, - 1321, 86, 1324, 1317, 1328, 1318, 86, 1332, 86, 3291, - 1319, 86, 86, 1326, 1329, 86, 1330, 1323, 1322, 1333, - 1331, 86, 1325, 86, 86, 3291, 86, 1321, 3291, 1324, - 86, 1328, 1334, 1335, 1332, 1337, 86, 86, 1339, 1338, - - 1326, 1329, 86, 1330, 86, 86, 1333, 1331, 1336, 1340, - 86, 86, 1344, 1341, 3291, 1345, 86, 1342, 86, 1334, - 1335, 86, 1337, 86, 86, 1339, 1338, 86, 1343, 1348, - 3291, 1346, 3291, 86, 1347, 1336, 1340, 86, 86, 1344, - 1341, 86, 1345, 1350, 1342, 1349, 1352, 86, 1351, 3291, - 1353, 86, 86, 1354, 86, 1343, 1348, 86, 1346, 1355, - 1359, 1347, 1357, 86, 1360, 86, 86, 1361, 1358, 1363, - 1350, 86, 1349, 1352, 86, 1351, 1362, 1353, 86, 86, - 1354, 86, 1366, 1364, 86, 1368, 1355, 1359, 1365, 1357, - 86, 1360, 1367, 1377, 1361, 1358, 1363, 1369, 86, 86, - - 1378, 3291, 1379, 1362, 1380, 86, 1383, 86, 3291, 1366, - 3291, 3291, 1368, 1381, 1384, 86, 1408, 1409, 86, 1367, - 1377, 1382, 1385, 86, 1369, 1370, 3291, 1378, 1386, 1371, - 86, 1380, 1372, 1373, 86, 86, 86, 1374, 86, 86, - 1381, 1384, 1388, 1375, 86, 86, 1391, 1376, 1382, 1385, - 1395, 86, 1370, 86, 86, 1386, 1371, 1387, 1393, 1372, - 1373, 3291, 3291, 86, 1374, 1389, 1392, 1390, 86, 1388, - 1375, 1394, 86, 1391, 1376, 86, 86, 1395, 86, 1397, - 1398, 1399, 1396, 1400, 1387, 1393, 3291, 3291, 86, 86, - 1407, 1401, 1389, 1392, 1390, 86, 3291, 3291, 1394, 3291, - - 1411, 3291, 1413, 1415, 1410, 86, 1397, 1414, 1416, 1396, - 1400, 86, 86, 86, 86, 1425, 86, 1407, 1401, 1402, - 86, 1412, 1417, 86, 1403, 86, 1404, 1411, 1405, 1413, - 1406, 1410, 1419, 86, 1414, 86, 1418, 86, 1421, 1420, - 86, 86, 1422, 3291, 1426, 1424, 1402, 86, 1412, 1417, - 86, 1403, 86, 1404, 86, 1405, 86, 1406, 86, 1419, - 1423, 1427, 1428, 1418, 1429, 1421, 1420, 1431, 86, 1422, - 86, 1426, 1424, 1432, 1433, 86, 86, 1430, 1435, 1437, - 86, 1434, 86, 1436, 1438, 86, 86, 1423, 1427, 1428, - 86, 1429, 1439, 1440, 1431, 86, 1442, 1443, 3291, 1441, - - 1432, 1433, 1445, 86, 1430, 86, 86, 86, 1434, 86, - 1436, 1438, 1446, 1447, 86, 86, 86, 1450, 1444, 1439, - 1440, 1448, 1449, 1442, 86, 86, 1441, 86, 86, 86, - 1451, 1452, 1454, 1455, 1453, 86, 3291, 86, 86, 1446, - 1447, 86, 1456, 1457, 86, 1444, 1460, 1458, 1448, 1449, - 1459, 86, 86, 1461, 86, 86, 1462, 1451, 1452, 1454, - 1455, 1453, 86, 1463, 1464, 1465, 86, 86, 86, 1456, - 1457, 86, 1466, 1460, 1458, 1467, 1468, 1459, 86, 1469, - 1461, 1472, 86, 1462, 1470, 1473, 86, 1471, 86, 86, - 1463, 1464, 1465, 1474, 86, 86, 1475, 1476, 86, 1466, - - 1479, 86, 1467, 1468, 1477, 86, 1469, 86, 1472, 1480, - 1485, 1470, 1478, 1486, 1471, 1488, 86, 86, 86, 1481, - 86, 1482, 86, 1475, 3291, 86, 86, 1479, 1483, 86, - 1484, 1477, 1487, 168, 86, 86, 86, 1489, 3291, 1478, - 3291, 1494, 86, 1490, 1491, 86, 1481, 86, 1482, 1492, - 86, 86, 1493, 86, 86, 1483, 86, 1484, 1496, 1487, - 1495, 1498, 1501, 86, 1489, 1497, 1499, 86, 1494, 86, - 1490, 1491, 86, 1500, 1502, 86, 1492, 1503, 86, 1493, - 1508, 1505, 1504, 1509, 86, 1496, 1506, 1495, 1498, 86, - 86, 3291, 1497, 1499, 1507, 86, 1511, 1519, 86, 86, - - 1500, 1502, 86, 86, 1503, 1510, 3291, 1508, 86, 1504, - 1509, 1514, 1512, 86, 1515, 1513, 1516, 3291, 86, 1517, - 1521, 1507, 1518, 1511, 86, 1520, 1522, 1525, 86, 86, - 3291, 1523, 1510, 86, 86, 86, 86, 1524, 1514, 1512, - 1527, 1515, 1513, 1516, 86, 86, 1517, 1521, 86, 1518, - 1526, 1528, 1520, 1530, 1525, 1540, 1529, 1531, 86, 86, - 86, 1532, 86, 1533, 1524, 86, 1534, 1527, 86, 1536, - 3291, 1537, 1535, 86, 1544, 86, 86, 1526, 1528, 86, - 1530, 86, 1538, 1529, 1531, 1541, 86, 86, 1532, 1539, - 1533, 86, 1543, 1534, 86, 86, 1536, 86, 1537, 1535, - - 86, 1544, 1542, 1545, 1547, 86, 1546, 1548, 3291, 1538, - 86, 1550, 1541, 1549, 86, 86, 1539, 1552, 1551, 1543, - 86, 1554, 1557, 1558, 1556, 1553, 86, 86, 3291, 1542, - 1545, 1547, 1565, 1546, 1548, 86, 86, 86, 1550, 86, - 1549, 1560, 1555, 86, 1552, 1551, 1559, 1566, 1554, 86, - 86, 1556, 1553, 1561, 86, 86, 1562, 1563, 1567, 86, - 1564, 3291, 1568, 86, 86, 1569, 1570, 86, 86, 1555, - 1574, 1571, 1573, 1559, 86, 1578, 3291, 1572, 3291, 86, - 1561, 86, 86, 1562, 1563, 86, 1577, 1564, 86, 1568, - 86, 86, 1569, 86, 86, 86, 1575, 1574, 1571, 1573, - - 1576, 86, 1578, 1579, 1572, 1580, 86, 1581, 1582, 86, - 86, 1583, 86, 1577, 1589, 1584, 1597, 1586, 1588, 86, - 1585, 86, 1587, 1575, 86, 86, 1592, 1576, 1590, 86, - 1579, 1591, 1580, 1600, 1581, 1582, 86, 1593, 1583, 86, - 86, 1589, 1594, 1596, 86, 1588, 1598, 86, 86, 86, - 86, 1602, 86, 1592, 1595, 1590, 1599, 86, 1591, 86, - 1603, 86, 1611, 1601, 1593, 86, 1604, 1605, 86, 1594, - 1596, 86, 86, 1598, 86, 86, 1606, 1607, 1602, 1610, - 1609, 1595, 1608, 1599, 86, 86, 86, 1612, 86, 1611, - 1601, 86, 86, 1604, 1605, 86, 1614, 1613, 1615, 1616, - - 1619, 3291, 1618, 1606, 1607, 1617, 1610, 1609, 1620, 1608, - 1624, 86, 86, 1621, 1612, 3291, 86, 1622, 86, 86, - 1625, 86, 86, 86, 1613, 86, 1616, 1619, 86, 1618, - 1623, 1626, 1617, 1629, 1627, 1620, 1631, 1624, 86, 1628, - 1621, 86, 86, 86, 1622, 1630, 1635, 1625, 1633, 1634, - 86, 1632, 1637, 1640, 1636, 1638, 1641, 1623, 1626, 86, - 86, 1627, 86, 86, 86, 1642, 1628, 86, 86, 86, - 1645, 86, 1630, 1635, 86, 1633, 1634, 86, 1632, 1637, - 1639, 1636, 1638, 86, 1643, 86, 1644, 86, 1646, 1648, - 86, 1647, 1642, 3291, 1650, 1649, 86, 1645, 86, 1651, - - 1653, 1652, 1654, 3291, 1656, 1655, 3291, 1639, 86, 86, - 86, 1643, 86, 1644, 1660, 3291, 86, 1662, 1647, 86, - 86, 86, 1649, 86, 86, 1657, 1651, 1653, 1652, 1654, - 86, 1656, 1655, 1658, 1659, 1661, 86, 86, 1663, 86, - 1664, 1660, 86, 86, 1662, 1665, 1669, 1667, 86, 86, - 1668, 1666, 1657, 86, 86, 1670, 86, 86, 1671, 86, - 1658, 1659, 1661, 1672, 86, 1663, 1673, 1664, 1674, 3291, - 1676, 1678, 1665, 1669, 1667, 86, 86, 1668, 1666, 1675, - 86, 1679, 1670, 1677, 1680, 1671, 86, 86, 86, 3291, - 1672, 86, 86, 86, 1681, 1674, 86, 1676, 1678, 1682, - - 1684, 1683, 1685, 1689, 86, 86, 1675, 1688, 1679, 86, - 1677, 1680, 168, 1690, 1691, 86, 86, 1686, 1687, 1694, - 86, 1681, 3291, 3291, 1692, 86, 86, 1684, 1683, 1685, - 1689, 86, 1695, 1696, 1688, 1693, 86, 1700, 1698, 86, - 1690, 1691, 86, 3291, 1686, 1687, 86, 1697, 1699, 1701, - 86, 1692, 1702, 1703, 86, 86, 86, 3291, 1704, 1695, - 1696, 1706, 1693, 86, 1705, 1698, 86, 1707, 1708, 86, - 86, 86, 86, 1709, 1697, 1699, 1701, 1710, 1712, 1711, - 1703, 1713, 86, 1714, 86, 86, 1715, 86, 1706, 86, - 1718, 1705, 86, 86, 1707, 1708, 1726, 86, 1723, 86, - - 1709, 1717, 1716, 86, 1710, 1712, 1711, 86, 1713, 1722, - 1714, 86, 86, 1715, 86, 1719, 86, 1718, 1720, 1724, - 86, 1730, 1727, 1726, 1728, 1723, 86, 1731, 1717, 1716, - 1721, 1729, 1732, 1736, 1733, 1725, 3291, 3291, 1743, 86, - 1734, 86, 1719, 86, 86, 1720, 1724, 1735, 86, 1727, - 1737, 1728, 1742, 1744, 1738, 86, 86, 1721, 1729, 86, - 1739, 1733, 1725, 1740, 86, 86, 86, 1734, 86, 86, - 86, 86, 86, 86, 1735, 1741, 86, 1737, 1745, 1742, - 1746, 1738, 86, 1749, 1747, 86, 1748, 1739, 86, 1751, - 1740, 1754, 1750, 1755, 1752, 3291, 1753, 3291, 86, 3291, - - 86, 86, 1741, 86, 86, 1745, 86, 1759, 86, 1756, - 86, 1747, 86, 1748, 86, 1757, 1751, 1762, 1754, 1750, - 1755, 1752, 86, 1753, 86, 1758, 1760, 86, 1763, 1761, - 86, 1764, 86, 1765, 1759, 1771, 1756, 86, 3291, 1766, - 1768, 1769, 1757, 86, 1762, 86, 86, 86, 1767, 3291, - 1773, 86, 1758, 1760, 86, 1763, 1761, 1770, 1764, 86, - 1775, 1774, 86, 86, 1772, 86, 1766, 1768, 1769, 1776, - 1777, 86, 86, 1781, 1780, 1767, 86, 1773, 1782, 1778, - 1779, 86, 86, 86, 1770, 86, 86, 1775, 1774, 86, - 1783, 1772, 86, 1784, 1789, 1790, 1776, 1777, 86, 1785, - - 1781, 1780, 1791, 1795, 1786, 1782, 1778, 1779, 86, 1787, - 86, 1788, 1792, 86, 1793, 3291, 86, 1783, 86, 1794, - 1784, 1789, 86, 86, 1797, 1798, 1785, 86, 1796, 86, - 86, 1786, 86, 1801, 1799, 1802, 1787, 1800, 1788, 1792, - 1803, 1793, 86, 86, 86, 86, 1794, 86, 86, 1808, - 1806, 1797, 1798, 86, 1804, 1796, 86, 1805, 1807, 1809, - 1801, 1799, 1802, 3291, 1800, 1810, 86, 1803, 86, 1811, - 1812, 1813, 86, 1814, 3291, 1817, 86, 1806, 86, 86, - 1816, 1804, 86, 86, 1805, 1815, 1809, 86, 86, 86, - 86, 1819, 1810, 1818, 1820, 1825, 1811, 1812, 1813, 1821, - - 1814, 86, 1817, 3291, 86, 1823, 1826, 1816, 1824, 86, - 1828, 3291, 1815, 1822, 1831, 86, 86, 86, 1819, 86, - 1818, 1820, 1825, 86, 1827, 86, 1821, 86, 1834, 1829, - 86, 1832, 1823, 1826, 1830, 1824, 1835, 1828, 1836, 1833, - 1822, 1831, 1837, 86, 86, 1838, 1840, 86, 1839, 1842, - 86, 1827, 1841, 1844, 1843, 1834, 86, 1845, 1832, 1848, - 3291, 86, 3291, 1849, 3291, 1836, 1833, 86, 86, 86, - 86, 86, 1858, 86, 1846, 1839, 1842, 86, 86, 1841, - 1847, 1843, 86, 1852, 1845, 86, 1850, 1851, 1853, 1854, - 1849, 86, 1856, 1859, 86, 86, 1857, 1855, 86, 86, - - 1860, 1846, 86, 86, 1861, 86, 86, 1847, 1862, 86, - 1852, 86, 1863, 1850, 1851, 1853, 1854, 1865, 1864, 1856, - 1859, 1866, 86, 1857, 1855, 86, 86, 1867, 1868, 86, - 1869, 1873, 86, 1870, 1872, 1862, 86, 3291, 86, 86, - 1871, 1875, 86, 86, 1865, 1864, 1874, 1876, 1866, 1877, - 1878, 86, 1879, 86, 86, 1868, 1883, 1887, 86, 1880, - 1870, 1872, 86, 86, 86, 1881, 1882, 1871, 1875, 86, - 86, 86, 86, 1874, 1876, 1885, 1877, 1878, 86, 1879, - 168, 1884, 1890, 86, 86, 1888, 1880, 1886, 1891, 86, - 86, 1889, 1881, 1882, 1893, 86, 1892, 86, 86, 1894, - - 3291, 86, 1885, 86, 86, 1895, 1897, 1896, 1884, 1890, - 1898, 86, 1888, 1900, 1886, 1891, 86, 1899, 1889, 3291, - 86, 1893, 1903, 1892, 1901, 1902, 1904, 86, 3291, 1908, - 1905, 86, 1895, 1897, 1896, 1906, 86, 86, 3291, 1907, - 86, 86, 1909, 86, 1899, 86, 86, 86, 1912, 1910, - 1911, 1901, 1902, 86, 86, 1914, 1908, 1905, 86, 86, - 86, 1913, 1906, 86, 1915, 1917, 1907, 1920, 1916, 1909, - 86, 1918, 1925, 86, 86, 1912, 1910, 1911, 1921, 86, - 86, 1923, 1914, 86, 1919, 1922, 1926, 86, 1913, 86, - 1924, 1915, 1917, 3291, 1920, 1916, 1928, 1936, 1918, 86, - - 86, 1927, 86, 86, 86, 1921, 1929, 86, 1923, 1930, - 1932, 1919, 1922, 1935, 86, 1931, 1937, 1924, 86, 1933, - 86, 1934, 86, 1928, 86, 1939, 1943, 1938, 1927, 1940, - 1945, 1947, 86, 1929, 86, 86, 1930, 1932, 1941, 86, - 1935, 1942, 1931, 86, 86, 3291, 1933, 86, 1934, 1944, - 1946, 1948, 86, 86, 1938, 86, 1940, 1949, 1951, 1950, - 86, 86, 86, 86, 1952, 1941, 1953, 1955, 1942, 1956, - 1954, 1961, 86, 86, 86, 3291, 1944, 1946, 1948, 1958, - 1960, 86, 86, 1959, 1957, 1951, 1950, 3291, 1966, 86, - 86, 86, 86, 1953, 86, 86, 1956, 1954, 1962, 1963, - - 1964, 86, 86, 86, 1969, 1965, 1958, 1960, 1967, 86, - 1959, 1957, 1968, 86, 1970, 1966, 1973, 86, 1971, 86, - 1975, 86, 1974, 1972, 1976, 1962, 1963, 1964, 1978, 86, - 1977, 1980, 1965, 3291, 86, 1967, 86, 1979, 86, 1968, - 86, 1970, 86, 1973, 1982, 86, 1981, 1975, 1984, 1974, - 86, 1976, 86, 1983, 86, 86, 1985, 1977, 1980, 1987, - 86, 1986, 1988, 86, 1979, 1989, 86, 1990, 1991, 1992, - 86, 86, 86, 1981, 86, 1984, 1994, 1995, 1996, 1993, - 1983, 1998, 86, 1985, 1997, 86, 1987, 86, 1986, 86, - 86, 2006, 1989, 86, 86, 1991, 1992, 86, 1999, 2000, - - 2001, 86, 2002, 1994, 2004, 86, 1993, 2007, 1998, 86, - 2005, 1997, 2003, 86, 86, 86, 2008, 86, 86, 2009, - 2010, 2011, 2012, 86, 3291, 1999, 2000, 2001, 86, 2002, - 2015, 2004, 86, 2014, 2007, 2013, 86, 2005, 86, 2003, - 86, 2016, 2017, 2008, 86, 2018, 2019, 86, 86, 2012, - 2020, 86, 86, 86, 86, 2021, 86, 2015, 2022, 2025, - 2014, 2029, 2013, 3291, 2023, 2028, 86, 2024, 2016, 2017, - 86, 86, 2018, 2019, 2027, 2026, 86, 2020, 2030, 86, - 2034, 86, 86, 86, 2032, 2031, 2025, 86, 2029, 2033, - 86, 2023, 2028, 86, 2024, 2036, 86, 86, 2035, 2037, - - 2038, 2027, 2026, 86, 2039, 86, 2041, 2034, 2042, 2040, - 2044, 2032, 2031, 86, 86, 2043, 2033, 2045, 86, 86, - 86, 2048, 2036, 86, 2050, 2035, 86, 2038, 86, 2051, - 2054, 2039, 2052, 86, 2046, 2042, 2040, 2044, 2047, 86, - 2049, 86, 2043, 2053, 2045, 86, 86, 2057, 86, 2058, - 2059, 2050, 86, 86, 86, 2055, 86, 2054, 86, 2052, - 2056, 2046, 2062, 2060, 2063, 2047, 86, 2049, 2061, 2067, - 2053, 86, 2064, 86, 2057, 2065, 86, 86, 2066, 2071, - 2069, 86, 2055, 2068, 2072, 2070, 2073, 2056, 2074, 3291, - 3291, 86, 2075, 86, 86, 86, 86, 86, 86, 2064, - - 86, 86, 2065, 86, 2079, 2066, 2071, 2069, 2076, 2077, - 2068, 2081, 2070, 2073, 168, 2080, 86, 2078, 2082, 2075, - 86, 2083, 2084, 86, 86, 86, 86, 2085, 2087, 86, - 2086, 2079, 3291, 2088, 2089, 2076, 2077, 86, 2081, 86, - 2090, 2091, 2080, 2092, 2078, 86, 2093, 2096, 86, 2084, - 86, 86, 86, 2097, 86, 2087, 2094, 2086, 86, 86, - 2088, 2089, 86, 2095, 2098, 86, 2099, 2090, 2091, 86, - 2092, 86, 86, 2093, 2096, 2100, 2101, 2102, 86, 2103, - 86, 2104, 86, 2094, 2106, 2105, 86, 2107, 86, 2109, - 2095, 2098, 86, 2099, 86, 2108, 2110, 86, 2111, 86, - - 86, 3291, 2100, 2101, 86, 86, 2103, 2113, 2104, 2112, - 86, 2106, 2105, 2114, 2107, 2117, 86, 86, 86, 2116, - 86, 86, 2108, 2110, 2115, 2111, 2119, 2120, 86, 2121, - 2118, 2125, 2122, 86, 2113, 2124, 2112, 86, 86, 86, - 2114, 2123, 2117, 2126, 86, 86, 2116, 2131, 2129, 86, - 2127, 2115, 86, 2119, 2120, 2128, 2121, 2118, 86, 2122, - 86, 86, 2124, 86, 2132, 2130, 86, 86, 2123, 2133, - 2126, 2135, 2134, 3291, 86, 2129, 2137, 2127, 86, 86, - 2138, 2136, 2128, 2139, 2140, 2141, 2145, 86, 2143, 2142, - 3291, 2132, 2130, 86, 2144, 86, 2133, 86, 86, 2134, - - 86, 86, 2146, 86, 2148, 86, 86, 2138, 2136, 86, - 2139, 2140, 86, 2145, 2150, 2143, 2142, 86, 2147, 86, - 86, 2144, 2149, 2151, 86, 2156, 86, 2152, 86, 2146, - 2153, 2148, 86, 2158, 2154, 2157, 2159, 86, 86, 86, - 2162, 2150, 86, 2163, 2160, 2147, 2165, 2155, 86, 2149, - 2151, 2161, 2156, 86, 2152, 86, 2166, 2153, 86, 2164, - 2158, 2154, 2157, 86, 86, 86, 86, 2162, 86, 2168, - 2163, 2160, 2169, 2165, 2155, 2167, 2170, 2172, 2161, 2171, - 2174, 86, 2173, 2166, 86, 2175, 2164, 3291, 86, 2176, - 2178, 86, 86, 86, 86, 86, 2168, 86, 2177, 2169, - - 2179, 86, 2167, 2170, 2172, 86, 2171, 2174, 2180, 2173, - 2182, 86, 2175, 2181, 86, 2184, 2176, 86, 2186, 2183, - 2188, 2185, 2187, 2196, 86, 2177, 2189, 2179, 86, 3291, - 86, 2190, 86, 2192, 86, 2180, 2193, 2182, 86, 86, - 2181, 86, 2184, 2191, 86, 86, 2183, 2188, 2185, 2187, - 86, 2197, 2194, 2189, 2195, 86, 86, 2198, 2190, 2199, - 86, 86, 86, 2193, 86, 2202, 2200, 3291, 86, 2204, - 2191, 2205, 2203, 86, 2201, 3291, 2206, 2212, 2197, 2194, - 2207, 2195, 86, 86, 2198, 86, 2199, 86, 2211, 3291, - 2218, 2208, 86, 2200, 86, 86, 2204, 86, 2205, 2203, - - 86, 2201, 86, 2206, 2212, 2209, 2213, 2207, 2210, 2215, - 2216, 2214, 86, 86, 2217, 2211, 2220, 2218, 2208, 2221, - 2219, 2222, 2223, 86, 2224, 86, 86, 86, 2243, 86, - 86, 2225, 2209, 86, 2226, 2210, 2215, 2216, 86, 86, - 86, 2217, 86, 2220, 2227, 86, 2221, 2219, 2222, 86, - 2228, 2224, 2229, 2230, 2232, 86, 2231, 86, 2225, 3291, - 2233, 2226, 86, 86, 2237, 2235, 2234, 86, 86, 2238, - 2241, 2227, 86, 86, 2245, 2253, 86, 2228, 2236, 2229, - 2230, 2232, 86, 2231, 86, 86, 86, 2233, 2239, 2240, - 2242, 2237, 2235, 2234, 2244, 2246, 2238, 2241, 86, 3291, - - 86, 86, 2247, 86, 2248, 2236, 2249, 86, 86, 2250, - 2254, 2255, 86, 2251, 168, 2239, 2240, 2242, 2252, 2258, - 86, 2244, 2246, 2257, 2256, 86, 86, 2259, 3291, 2247, - 86, 2248, 2263, 2249, 2264, 86, 2250, 2262, 2255, 2266, - 2267, 2260, 86, 86, 3291, 86, 86, 2265, 86, 2268, - 2257, 2256, 2261, 86, 2259, 86, 2269, 2270, 2271, 86, - 86, 2264, 86, 2272, 2262, 2273, 2266, 2275, 2260, 2278, - 2274, 86, 86, 2277, 2265, 86, 2268, 86, 2283, 2261, - 86, 2281, 86, 2269, 86, 2271, 2276, 2280, 86, 86, - 86, 86, 2273, 86, 2275, 86, 2278, 2274, 2279, 86, - - 2277, 2282, 86, 86, 2284, 2283, 2287, 2285, 2281, 2288, - 86, 86, 2286, 2276, 2280, 2289, 2290, 86, 2291, 86, - 2293, 2292, 3291, 2296, 2295, 2279, 3291, 86, 2282, 86, - 86, 2284, 86, 86, 2285, 86, 2288, 86, 86, 2286, - 2298, 2294, 2289, 2290, 2297, 2291, 86, 2293, 2292, 86, - 2296, 2295, 2300, 86, 2299, 2301, 2303, 2302, 2304, 86, - 86, 86, 2306, 86, 2305, 2310, 86, 86, 2294, 2307, - 86, 2297, 2311, 86, 2308, 86, 2309, 86, 86, 2300, - 2312, 2299, 2301, 2303, 2302, 2304, 86, 2313, 2314, 2306, - 86, 2305, 2310, 86, 2315, 2316, 2307, 2319, 2317, 2311, - - 2320, 2308, 2318, 2309, 3291, 86, 2321, 2312, 2322, 86, - 86, 86, 2324, 2328, 86, 2314, 86, 2325, 86, 2329, - 2323, 2315, 2316, 86, 2319, 2317, 86, 86, 2330, 2318, - 3291, 86, 86, 2321, 2326, 86, 2331, 2327, 2332, 2324, - 86, 2333, 2334, 86, 2325, 86, 86, 2323, 86, 2335, - 86, 2336, 86, 2338, 2337, 2330, 2340, 86, 86, 2341, - 2342, 2326, 86, 2331, 2327, 2332, 2339, 2343, 2333, 2334, - 2344, 86, 2345, 2346, 2349, 86, 86, 2347, 86, 2350, - 86, 2337, 86, 86, 2348, 86, 2341, 2342, 2352, 2353, - 86, 86, 86, 2339, 86, 2351, 86, 86, 86, 2345, - - 2346, 2349, 2354, 86, 2347, 2358, 86, 2355, 3291, 2356, - 2359, 2348, 2361, 2360, 2362, 86, 2353, 2364, 86, 2363, - 86, 86, 2351, 86, 2357, 86, 86, 2366, 2367, 2354, - 2365, 86, 86, 3291, 2355, 86, 2356, 2359, 2369, 2361, - 2360, 86, 86, 2372, 2364, 2368, 2363, 2370, 2374, 2371, - 86, 2357, 2423, 86, 2366, 86, 2373, 2365, 2375, 86, - 86, 86, 2379, 86, 2376, 2369, 2378, 86, 86, 2377, - 86, 86, 2368, 86, 2370, 2374, 2371, 2380, 86, 86, - 2381, 2386, 2382, 2373, 2389, 2375, 2385, 3291, 86, 2379, - 2387, 2376, 2388, 2378, 86, 86, 2377, 2383, 86, 2384, - - 2391, 86, 2396, 86, 2380, 86, 86, 2381, 2386, 2382, - 2390, 2389, 86, 2385, 2392, 86, 86, 2387, 2393, 2388, - 2394, 2395, 86, 2397, 2383, 2398, 2384, 2391, 2401, 86, - 86, 2399, 2400, 86, 86, 2402, 2403, 2390, 2404, 2408, - 86, 2392, 86, 2405, 2409, 2393, 2406, 2394, 2395, 86, - 2397, 2407, 86, 86, 86, 2401, 86, 86, 2399, 2400, - 86, 86, 2402, 2403, 86, 2404, 2408, 2410, 2411, 86, - 2405, 2413, 3291, 2406, 2412, 2415, 86, 2414, 2407, 2416, - 3291, 86, 2421, 2419, 3291, 2420, 2418, 2417, 3291, 86, - 86, 86, 3291, 86, 2434, 2411, 2435, 2425, 2413, 86, - - 2422, 2412, 2426, 86, 2414, 86, 2416, 86, 168, 2421, - 2419, 86, 2420, 2418, 2417, 86, 2424, 86, 2429, 2427, - 2428, 86, 86, 2435, 2425, 2430, 2431, 2422, 86, 2426, - 86, 2432, 86, 86, 2436, 2433, 2437, 2438, 86, 2439, - 2440, 2442, 3291, 2424, 2449, 2429, 2427, 2428, 86, 86, - 86, 2441, 2430, 2431, 2443, 3291, 2444, 2446, 2432, 86, - 86, 86, 2433, 2437, 2438, 2445, 2447, 86, 86, 86, - 86, 86, 86, 2448, 86, 2450, 86, 2454, 2441, 2451, - 86, 2443, 86, 2444, 2446, 2452, 2453, 2455, 86, 2456, - 3291, 2458, 2445, 2447, 2459, 2460, 3291, 2457, 86, 86, - - 2448, 86, 2450, 2462, 86, 2461, 2451, 86, 86, 86, - 86, 2466, 2452, 2453, 2455, 86, 2456, 86, 2458, 86, - 2463, 2459, 86, 2465, 2457, 86, 2464, 86, 2467, 2468, - 2462, 2469, 2461, 86, 86, 86, 86, 2470, 2466, 2471, - 2474, 2472, 2476, 2479, 2473, 2489, 2480, 2463, 86, 86, - 2465, 86, 86, 2464, 2475, 2467, 2468, 86, 86, 2477, - 86, 2478, 86, 86, 2470, 86, 2471, 2474, 2472, 2476, - 86, 2473, 2481, 2480, 2482, 86, 2483, 86, 2484, 3291, - 2490, 2475, 2485, 86, 2486, 86, 2477, 2487, 2478, 86, - 2491, 2493, 86, 2488, 2492, 86, 3291, 86, 3291, 2481, - - 2501, 2482, 2495, 2483, 86, 2484, 86, 2490, 2497, 2485, - 2494, 2486, 86, 86, 2487, 86, 86, 86, 86, 86, - 2488, 2492, 2496, 2498, 86, 2499, 2500, 86, 2502, 2495, - 86, 2503, 2504, 86, 2505, 2497, 3291, 2494, 2506, 2510, - 2507, 2509, 2511, 86, 2512, 86, 2508, 86, 86, 2496, - 2498, 2515, 2499, 2500, 86, 86, 86, 2516, 86, 2504, - 86, 2505, 86, 86, 2517, 2506, 86, 2507, 2509, 2511, - 2513, 2514, 86, 2508, 2519, 2520, 86, 2518, 86, 86, - 3291, 86, 2526, 86, 2516, 2521, 86, 2522, 2523, 2524, - 3291, 2517, 2525, 2528, 3291, 86, 86, 2513, 2514, 2529, - - 86, 2519, 86, 2530, 2518, 2527, 86, 86, 86, 2526, - 86, 86, 2521, 2531, 2522, 2523, 2524, 86, 86, 2525, - 2528, 86, 2532, 2533, 2534, 2535, 2529, 2536, 2537, 2541, - 2530, 2538, 2527, 2539, 3291, 86, 2540, 86, 2543, 2545, - 2531, 3291, 86, 2547, 86, 86, 2542, 2548, 3291, 86, - 86, 86, 86, 86, 2536, 2537, 2541, 2544, 2538, 86, - 2539, 86, 86, 2540, 2546, 2543, 86, 2549, 86, 2551, - 86, 2550, 86, 2542, 86, 2552, 2557, 2554, 2553, 2558, - 2555, 2556, 3291, 86, 2544, 86, 86, 86, 86, 86, - 86, 2546, 2559, 86, 2549, 2565, 2551, 86, 2550, 86, - - 2561, 3291, 2552, 86, 2554, 2553, 2558, 2555, 2556, 2560, - 2562, 2563, 3291, 86, 86, 2564, 86, 2566, 2570, 2559, - 2567, 86, 2565, 86, 86, 2569, 2572, 2561, 2568, 2571, - 168, 2576, 86, 86, 86, 86, 2560, 2562, 2563, 2574, - 86, 2573, 2564, 2575, 2566, 2570, 2577, 2567, 2578, 3291, - 86, 2579, 2569, 2572, 86, 2568, 2571, 2580, 86, 2583, - 2581, 86, 2586, 2582, 2584, 86, 2574, 86, 2573, 86, - 2575, 86, 3291, 86, 86, 2578, 86, 86, 2579, 86, - 2587, 2585, 2589, 86, 2580, 86, 2583, 2581, 86, 2586, - 2582, 2584, 2588, 2591, 2590, 2592, 2593, 2594, 2596, 86, - - 86, 86, 86, 2595, 2597, 86, 86, 2587, 2585, 2589, - 2598, 2600, 2602, 2605, 2599, 86, 2601, 86, 86, 2588, - 2591, 2590, 2592, 2593, 2594, 86, 2603, 2604, 3291, 86, - 2595, 2597, 86, 86, 86, 86, 86, 2598, 86, 86, - 2605, 2599, 2607, 2601, 2606, 2611, 2608, 2609, 2612, 2610, - 2616, 86, 2613, 2603, 2604, 86, 86, 86, 86, 86, - 2615, 2614, 2617, 2618, 3291, 3291, 2620, 2622, 3291, 2607, - 86, 2606, 86, 2608, 2609, 86, 2610, 86, 86, 2613, - 86, 86, 2619, 2623, 2621, 2626, 2628, 2615, 2614, 86, - 2624, 86, 86, 2620, 2622, 86, 2625, 86, 3291, 2627, - - 2629, 2630, 2632, 86, 2634, 86, 2631, 86, 2633, 2619, - 2623, 2621, 2626, 86, 86, 2635, 86, 2624, 2636, 86, - 86, 2641, 86, 2625, 86, 86, 2627, 2629, 86, 2632, - 2637, 2634, 2639, 2631, 2640, 2633, 2638, 86, 2642, 86, - 86, 2644, 2635, 2643, 86, 2636, 2645, 2648, 86, 2647, - 86, 2653, 86, 2649, 2646, 2651, 3291, 2637, 86, 2639, - 2654, 2640, 86, 2638, 2657, 2642, 86, 86, 86, 86, - 2643, 2650, 86, 2645, 86, 86, 2647, 2652, 86, 2655, - 2649, 2646, 2651, 86, 86, 2656, 2658, 2654, 2659, 2660, - 2662, 86, 2661, 2664, 86, 2665, 2667, 86, 2650, 2663, - - 2666, 86, 2672, 3291, 2652, 86, 2655, 2670, 86, 2674, - 86, 86, 2656, 2658, 86, 86, 2660, 2662, 2668, 2661, - 86, 86, 2665, 86, 2669, 86, 2663, 2666, 2671, 86, - 2673, 2675, 86, 2679, 2670, 2677, 86, 2676, 86, 2678, - 3291, 2680, 86, 3291, 2682, 2668, 86, 2681, 86, 86, - 2684, 2669, 86, 86, 2685, 2671, 2687, 2673, 2675, 86, - 2679, 86, 2677, 86, 2676, 86, 2678, 2683, 2680, 2688, - 2686, 2682, 86, 2689, 2681, 2690, 86, 2684, 2692, 86, - 2693, 2685, 86, 86, 2691, 2694, 2695, 86, 2696, 86, - 3291, 2697, 2699, 3291, 2683, 86, 86, 2686, 2698, 2700, - - 168, 2702, 2690, 86, 3291, 2692, 86, 2693, 86, 2701, - 2703, 2691, 2710, 2695, 86, 2696, 2704, 86, 2697, 86, - 86, 2705, 2706, 86, 2707, 2698, 86, 2708, 86, 2709, - 2711, 2713, 2712, 2716, 86, 86, 2701, 2703, 2717, 2710, - 86, 2714, 2718, 86, 86, 2721, 86, 2715, 86, 2706, - 86, 2707, 86, 86, 2708, 2720, 2719, 2711, 2713, 2712, - 86, 86, 2722, 2723, 86, 86, 2724, 86, 2714, 2718, - 86, 86, 2721, 2725, 2715, 86, 2726, 2727, 86, 2728, - 2729, 2731, 2720, 2719, 2730, 86, 86, 2732, 86, 2722, - 2723, 86, 2733, 2724, 2734, 86, 86, 86, 86, 86, - - 2725, 2735, 2738, 2726, 2727, 2736, 2728, 2729, 2731, 86, - 86, 2730, 86, 2739, 2732, 86, 2741, 2737, 2740, 2742, - 2743, 2734, 2744, 2745, 86, 86, 86, 2748, 2735, 86, - 86, 86, 2736, 86, 86, 86, 2747, 2749, 2750, 86, - 2739, 2746, 2751, 2741, 2737, 2740, 2742, 86, 86, 2744, - 2745, 2752, 2753, 2754, 86, 2755, 3291, 2756, 2758, 86, - 2759, 2763, 2757, 2747, 2749, 2761, 2760, 2764, 2746, 2765, - 86, 2768, 86, 86, 86, 86, 86, 86, 86, 86, - 2754, 86, 2755, 86, 2756, 2758, 2762, 2759, 86, 2757, - 2767, 86, 2761, 2760, 86, 86, 86, 2766, 86, 2769, - - 2770, 2771, 2772, 2774, 3291, 2775, 86, 2773, 2776, 2777, - 86, 3291, 86, 2762, 2778, 2779, 86, 2767, 2781, 3291, - 86, 2782, 86, 2783, 2766, 86, 2769, 2770, 2771, 86, - 2774, 86, 2775, 2784, 86, 86, 86, 2780, 86, 2785, - 2786, 2778, 2779, 2787, 2788, 2781, 86, 2791, 86, 86, - 2783, 86, 2789, 86, 2790, 2792, 2793, 86, 2795, 2799, - 86, 2794, 86, 2798, 2780, 86, 2785, 86, 2796, 2797, - 2787, 2788, 2802, 3291, 86, 86, 86, 2801, 86, 2789, - 2803, 2800, 2792, 86, 86, 2795, 86, 2804, 86, 2805, - 2798, 86, 2806, 2807, 86, 2796, 2797, 2808, 3291, 86, - - 86, 2812, 86, 2811, 2801, 2814, 86, 2803, 2800, 2815, - 86, 2809, 2810, 86, 2804, 2813, 2805, 86, 86, 2806, - 2807, 86, 86, 86, 2808, 86, 2817, 2816, 2812, 2820, - 2811, 2819, 2814, 2821, 2818, 2827, 86, 86, 2809, 2810, - 86, 2822, 2813, 2824, 86, 2828, 2823, 2826, 2825, 3291, - 86, 2829, 86, 2817, 2816, 86, 2820, 2830, 2819, 2831, - 2821, 2818, 86, 2834, 3291, 2832, 2833, 2835, 86, 2836, - 86, 86, 2828, 86, 2826, 86, 86, 86, 2829, 2837, - 2838, 2839, 2840, 86, 2830, 86, 2831, 86, 86, 86, - 2834, 86, 2832, 2833, 2835, 2842, 2836, 2841, 2843, 86, - - 3291, 2845, 86, 2844, 86, 2846, 2837, 2838, 2839, 2840, - 86, 2847, 2848, 2849, 2850, 2851, 2852, 2854, 2853, 2855, - 3291, 3291, 86, 3291, 2841, 86, 86, 86, 2845, 2856, - 2844, 86, 86, 86, 86, 86, 86, 2857, 2847, 86, - 2849, 86, 2851, 2852, 2854, 2853, 86, 2858, 2859, 2861, - 2862, 2864, 86, 2860, 3291, 86, 2856, 2865, 2863, 86, - 2866, 2869, 2867, 86, 2857, 2868, 3291, 86, 86, 3291, - 86, 2871, 2870, 86, 2858, 86, 2861, 2862, 2864, 2873, - 86, 86, 2875, 3291, 86, 2863, 86, 86, 2869, 2867, - 86, 2872, 2868, 86, 2874, 2876, 2877, 86, 2871, 2870, - - 3291, 86, 86, 2878, 2879, 2885, 2873, 2880, 3291, 2881, - 86, 3291, 2883, 2882, 86, 2884, 2886, 2887, 2872, 2888, - 2890, 2874, 2876, 2877, 3291, 86, 86, 86, 86, 2891, - 2878, 2879, 86, 86, 2880, 86, 2881, 86, 86, 2883, - 2882, 2889, 2884, 86, 86, 2892, 2888, 2890, 86, 2893, - 3291, 86, 2894, 2895, 2896, 2897, 2891, 2900, 2898, 2901, - 2902, 2899, 86, 86, 86, 2903, 86, 2904, 2889, 3291, - 86, 86, 2907, 2905, 86, 2906, 2893, 86, 2908, 2894, - 86, 2896, 2897, 86, 2900, 2898, 86, 2902, 2899, 2909, - 86, 86, 86, 2912, 2904, 86, 2910, 86, 86, 2907, - - 2905, 86, 2906, 2911, 2913, 2908, 2915, 2914, 86, 2916, - 86, 2917, 3291, 2919, 2925, 2920, 2909, 2918, 86, 2921, - 86, 86, 86, 2910, 3291, 86, 3291, 86, 2927, 86, - 2911, 2913, 86, 2915, 2914, 2922, 2916, 86, 2917, 2923, - 2919, 86, 2920, 2926, 2918, 86, 2921, 2928, 86, 2924, - 86, 86, 2929, 86, 2930, 86, 2931, 2932, 86, 2935, - 2933, 3291, 2922, 2934, 2940, 2936, 2923, 86, 86, 2937, - 2926, 86, 86, 86, 86, 2939, 2924, 86, 2942, 2929, - 2938, 86, 2944, 2931, 2932, 86, 86, 2933, 86, 2941, - 2934, 2940, 2936, 2943, 2946, 2945, 2937, 86, 2947, 86, - - 86, 86, 2939, 2948, 2949, 86, 2953, 2938, 2950, 2955, - 2952, 86, 2954, 2957, 86, 2956, 2941, 86, 2959, 86, - 2943, 2946, 2945, 86, 86, 86, 86, 2951, 86, 2958, - 86, 2949, 2962, 2953, 2960, 86, 86, 2952, 2961, 2954, - 2957, 86, 2956, 2963, 2964, 86, 2965, 86, 2966, 2967, - 86, 2968, 2969, 2970, 2951, 2971, 2958, 2973, 86, 2962, - 86, 2960, 3291, 2972, 86, 2961, 3291, 2976, 3291, 3291, - 2963, 86, 86, 86, 86, 2966, 86, 86, 2968, 2969, - 86, 86, 2971, 2974, 2975, 2977, 2978, 2980, 2981, 86, - 2972, 2982, 2983, 86, 86, 86, 2979, 2985, 86, 86, - - 86, 86, 2984, 86, 2986, 2987, 2989, 2990, 2988, 2991, - 2974, 2975, 2977, 2978, 2980, 86, 2992, 2995, 2982, 2983, - 86, 86, 3291, 2979, 86, 2993, 2996, 86, 86, 2984, - 2997, 86, 2987, 2989, 86, 2988, 86, 2994, 86, 86, - 2999, 3000, 2998, 86, 3002, 86, 86, 3003, 86, 86, - 86, 3001, 2993, 2996, 3005, 3006, 86, 86, 3007, 3004, - 3008, 86, 3009, 3013, 2994, 3014, 3016, 2999, 3000, 2998, - 86, 3002, 86, 86, 86, 3012, 3010, 3015, 3001, 86, - 3011, 3005, 3006, 86, 3017, 86, 3004, 86, 86, 3291, - 86, 3018, 86, 3016, 86, 3019, 3020, 86, 3021, 86, - - 3025, 3022, 3012, 3010, 3015, 3023, 86, 3011, 86, 3024, - 3027, 3028, 86, 3026, 86, 86, 86, 3029, 3018, 86, - 86, 3031, 3019, 86, 86, 3021, 3030, 3025, 3022, 86, - 86, 86, 3023, 86, 86, 3032, 3024, 3027, 3028, 3035, - 3026, 3033, 3034, 3036, 3029, 86, 86, 3038, 3031, 3037, - 3039, 86, 3041, 3030, 86, 3291, 3040, 3042, 3043, 86, - 3044, 3045, 3032, 3046, 3047, 86, 3035, 3048, 3033, 3034, - 3036, 86, 86, 3291, 3038, 3050, 3037, 3051, 86, 3041, - 3058, 86, 86, 3040, 3042, 3043, 86, 86, 86, 86, - 3046, 86, 3049, 3059, 3048, 3052, 3053, 3054, 3055, 3291, - - 86, 3060, 86, 86, 86, 3056, 3057, 3058, 3061, 3062, - 86, 3063, 3065, 3067, 3069, 3064, 86, 3070, 86, 3049, - 86, 86, 3068, 3066, 86, 86, 86, 3073, 3060, 86, - 3072, 3074, 86, 86, 86, 3061, 3062, 86, 3063, 86, - 3067, 3069, 3064, 3071, 3070, 86, 3075, 3076, 86, 3068, - 3066, 3080, 86, 86, 3073, 3077, 3081, 3072, 86, 86, - 3078, 3082, 3083, 3079, 86, 3085, 3090, 3084, 3088, 3086, - 3071, 86, 3089, 86, 3076, 3087, 86, 86, 86, 86, - 3091, 3092, 3077, 86, 3093, 3096, 3097, 3078, 3094, 3083, - 3079, 86, 3085, 86, 3084, 3088, 3086, 86, 86, 86, - - 86, 86, 3087, 3095, 3098, 3099, 3100, 3091, 86, 3101, - 3102, 86, 86, 86, 3103, 3094, 3104, 3105, 3107, 3109, - 3106, 3108, 86, 3291, 3112, 86, 3291, 3291, 3110, 3291, - 3095, 3098, 86, 86, 86, 86, 86, 86, 86, 86, - 3113, 86, 3111, 86, 86, 86, 3109, 3106, 3108, 3114, - 86, 86, 86, 3115, 3117, 3110, 3116, 3118, 3121, 86, - 3126, 3119, 3120, 86, 3122, 3123, 86, 3113, 86, 3111, - 86, 3124, 3125, 86, 86, 3127, 3114, 3291, 3131, 3291, - 3115, 3117, 86, 3116, 86, 3121, 86, 3126, 3119, 3120, - 86, 3122, 3123, 3128, 3129, 86, 3130, 86, 3124, 86, - - 3132, 86, 3127, 86, 86, 3131, 3133, 86, 3135, 86, - 3134, 3137, 3136, 3138, 3139, 3140, 3142, 3145, 86, 3291, - 3128, 3129, 86, 3130, 3141, 86, 3143, 3132, 86, 86, - 86, 3147, 3148, 3133, 86, 3135, 86, 3134, 3137, 3136, - 86, 86, 86, 3142, 3145, 3144, 3146, 86, 3150, 86, - 86, 3141, 86, 3143, 86, 3149, 3291, 3151, 3147, 3148, - 86, 3153, 3152, 3158, 3291, 3154, 3155, 3157, 3156, 86, - 86, 3159, 3144, 3146, 86, 3150, 86, 86, 3160, 86, - 86, 86, 3149, 86, 3151, 3161, 86, 3162, 3153, 3152, - 3158, 86, 3154, 3155, 3157, 3156, 3163, 3164, 3159, 3166, - - 86, 3167, 3165, 86, 3168, 3160, 86, 3169, 3171, 86, - 3170, 3172, 3161, 3173, 3162, 86, 3180, 3175, 3174, 86, - 3176, 86, 86, 3163, 3164, 86, 3166, 3177, 86, 3165, - 3178, 3168, 86, 3181, 86, 86, 86, 3170, 86, 3179, - 3173, 86, 86, 3182, 3175, 3174, 86, 3176, 86, 86, - 3183, 86, 3184, 3186, 3177, 3185, 3187, 3178, 86, 3188, - 3181, 3189, 86, 3190, 3191, 3192, 3179, 3193, 3195, 86, - 3182, 86, 86, 3194, 86, 3197, 86, 3183, 3198, 86, - 86, 3196, 3185, 86, 3199, 3291, 3188, 86, 3189, 86, - 86, 3191, 3192, 3201, 86, 3195, 3202, 86, 3200, 86, - - 3194, 86, 3203, 3204, 3207, 3208, 3206, 86, 3196, 3205, - 86, 3199, 86, 86, 3209, 86, 3210, 86, 86, 3211, - 3201, 86, 3215, 3202, 3217, 3200, 3212, 86, 86, 86, - 86, 3207, 3208, 3206, 3213, 3216, 3205, 3214, 86, 3221, - 86, 3209, 3224, 3210, 86, 86, 3211, 3218, 86, 3215, - 3219, 86, 3220, 3212, 86, 3223, 3222, 86, 3225, 86, - 86, 3213, 3216, 3228, 3214, 3291, 86, 3226, 86, 3224, - 3227, 86, 3229, 3230, 3218, 3232, 3231, 3219, 86, 3220, - 86, 3235, 3233, 3222, 3238, 3225, 3241, 86, 3234, 86, - 3228, 3236, 86, 3240, 3226, 3242, 86, 3227, 86, 86, - - 86, 86, 86, 3231, 86, 86, 3237, 86, 3235, 3233, - 3245, 3239, 86, 3241, 86, 3234, 86, 3246, 3236, 86, - 3240, 3243, 86, 3247, 3244, 86, 3248, 3291, 3249, 3251, - 3250, 86, 86, 3237, 3252, 86, 3253, 3245, 3239, 86, - 86, 3254, 3257, 86, 3246, 3255, 3291, 3256, 3243, 86, - 3247, 3244, 86, 3248, 86, 3249, 3251, 3250, 3258, 3259, - 3260, 3252, 86, 3253, 86, 3262, 3261, 86, 3254, 3257, - 3263, 86, 3255, 86, 3256, 3264, 3265, 3267, 86, 3269, - 3291, 3266, 3291, 3268, 3276, 3258, 3259, 86, 86, 86, - 86, 86, 3262, 3261, 3271, 86, 86, 86, 3272, 86, - - 3275, 3270, 3264, 3265, 3267, 3273, 86, 3274, 3266, 86, - 3268, 86, 3279, 86, 3277, 86, 86, 3280, 3282, 3283, - 86, 3271, 86, 3278, 3289, 3272, 86, 3275, 3270, 3281, - 3285, 86, 3273, 3284, 3274, 3287, 3286, 3290, 86, 3279, - 3288, 3277, 3291, 86, 86, 86, 86, 3291, 86, 86, - 3278, 86, 86, 86, 3291, 3291, 3281, 3285, 86, 3291, - 3284, 3291, 3287, 3286, 86, 3291, 3291, 3288, 47, 47, + 21, 69, 70, 71, 81, 82, 83, 121, 108, 177, + 177, 79, 72, 159, 409, 86, 97, 79, 72, 86, + 137, 90, 84, 90, 90, 86, 90, 170, 109, 178, + 73, 86, 90, 86, 121, 108, 73, 176, 87, 72, + 159, 84, 88, 86, 130, 72, 112, 137, 110, 162, + 86, 175, 162, 173, 113, 109, 98, 170, 188, 91, + + 92, 93, 111, 99, 94, 114, 170, 100, 187, 95, + 101, 130, 86, 112, 86, 110, 86, 86, 96, 168, + 173, 113, 86, 98, 86, 188, 166, 92, 93, 111, + 99, 94, 114, 165, 100, 187, 95, 101, 85, 162, + 85, 85, 162, 85, 163, 96, 102, 161, 115, 85, + 103, 116, 189, 104, 181, 105, 106, 252, 117, 164, + 118, 164, 164, 292, 164, 86, 107, 90, 86, 90, + 90, 86, 90, 102, 86, 115, 122, 103, 116, 189, + 104, 181, 105, 106, 123, 117, 180, 118, 126, 86, + 124, 86, 127, 107, 125, 86, 156, 160, 160, 148, + + 157, 149, 86, 122, 158, 172, 128, 178, 129, 86, + 150, 123, 176, 180, 86, 126, 151, 124, 179, 127, + 175, 125, 86, 156, 152, 86, 148, 157, 149, 167, + 167, 158, 170, 128, 153, 129, 131, 150, 154, 155, + 132, 182, 86, 151, 133, 179, 328, 86, 168, 205, + 134, 152, 169, 135, 169, 169, 86, 169, 86, 184, + 136, 153, 86, 131, 195, 154, 155, 132, 182, 86, + 174, 133, 174, 174, 166, 174, 205, 134, 86, 85, + 135, 85, 85, 86, 85, 332, 184, 136, 138, 1148, + 85, 195, 139, 90, 183, 90, 90, 206, 90, 185, + + 165, 86, 140, 141, 90, 142, 86, 193, 194, 197, + 196, 163, 186, 161, 86, 138, 86, 86, 86, 139, + 86, 183, 86, 86, 206, 240, 185, 198, 3353, 140, + 141, 91, 142, 143, 193, 194, 144, 196, 190, 186, + 199, 86, 201, 145, 191, 200, 192, 146, 147, 86, + 334, 86, 240, 86, 198, 86, 207, 3353, 86, 86, + 143, 208, 3353, 144, 209, 190, 215, 199, 86, 201, + 145, 191, 200, 192, 146, 147, 202, 203, 211, 86, + 210, 212, 86, 207, 204, 228, 86, 3353, 208, 217, + 216, 209, 86, 86, 213, 214, 3353, 86, 86, 86, + + 225, 3353, 86, 202, 203, 211, 218, 210, 212, 226, + 220, 204, 228, 86, 221, 223, 217, 216, 227, 229, + 224, 213, 214, 86, 232, 230, 219, 225, 86, 253, + 222, 86, 86, 218, 86, 231, 226, 220, 86, 86, + 233, 221, 223, 86, 86, 227, 229, 224, 235, 86, + 234, 232, 230, 219, 237, 236, 253, 222, 238, 86, + 3353, 239, 231, 86, 86, 241, 245, 233, 86, 246, + 86, 86, 86, 3353, 242, 235, 86, 234, 86, 247, + 248, 237, 236, 243, 251, 238, 3353, 86, 239, 244, + 3353, 249, 241, 245, 257, 250, 246, 86, 86, 3353, + + 254, 242, 259, 261, 86, 258, 247, 248, 262, 86, + 243, 251, 267, 86, 86, 260, 244, 255, 249, 86, + 256, 257, 250, 86, 263, 266, 86, 254, 268, 259, + 261, 270, 258, 264, 86, 262, 277, 269, 272, 267, + 86, 271, 260, 86, 255, 265, 86, 256, 86, 86, + 3353, 263, 266, 86, 86, 268, 177, 177, 270, 3353, + 264, 3353, 170, 277, 269, 272, 3353, 273, 271, 3353, + 3353, 164, 265, 164, 164, 169, 164, 169, 169, 90, + 169, 90, 90, 174, 90, 174, 174, 274, 174, 86, + 3353, 276, 3353, 280, 273, 278, 281, 282, 283, 284, + + 86, 275, 279, 3353, 285, 86, 338, 3353, 3353, 86, + 86, 86, 286, 290, 86, 86, 291, 172, 276, 86, + 280, 86, 278, 281, 282, 283, 284, 287, 275, 279, + 86, 285, 340, 288, 289, 86, 86, 293, 86, 286, + 290, 294, 86, 291, 301, 303, 3353, 302, 306, 3353, + 307, 304, 308, 86, 305, 314, 310, 86, 295, 86, + 288, 289, 86, 86, 86, 86, 311, 86, 294, 3353, + 86, 301, 303, 86, 302, 306, 86, 307, 304, 86, + 309, 305, 314, 310, 86, 295, 296, 312, 86, 318, + 317, 297, 313, 311, 326, 370, 298, 315, 86, 86, + + 316, 86, 299, 300, 319, 86, 325, 309, 3353, 86, + 3353, 86, 86, 296, 312, 329, 318, 317, 297, 313, + 86, 326, 370, 298, 315, 327, 86, 316, 86, 299, + 300, 319, 320, 325, 330, 321, 86, 322, 337, 335, + 333, 86, 329, 342, 86, 331, 339, 86, 3353, 323, + 344, 324, 327, 336, 341, 3353, 3353, 3353, 86, 320, + 345, 3353, 321, 343, 322, 337, 86, 333, 86, 351, + 346, 86, 331, 339, 86, 86, 323, 86, 324, 347, + 336, 341, 86, 86, 348, 349, 86, 345, 86, 352, + 343, 86, 353, 356, 350, 354, 351, 346, 355, 86, + + 357, 364, 360, 86, 86, 86, 347, 86, 361, 362, + 86, 348, 349, 86, 86, 367, 352, 86, 358, 353, + 356, 350, 354, 359, 86, 355, 363, 357, 373, 360, + 369, 86, 86, 86, 368, 361, 362, 365, 366, 372, + 371, 86, 374, 375, 376, 378, 86, 86, 86, 3353, + 86, 86, 86, 363, 377, 381, 379, 369, 86, 86, + 86, 368, 380, 383, 365, 366, 372, 371, 3353, 86, + 375, 384, 378, 386, 86, 387, 86, 86, 382, 388, + 390, 377, 86, 379, 389, 3353, 391, 86, 385, 86, + 392, 394, 86, 86, 170, 86, 86, 86, 384, 86, + + 386, 395, 387, 396, 393, 382, 388, 390, 86, 398, + 397, 389, 86, 391, 3353, 385, 399, 392, 401, 403, + 405, 400, 402, 86, 404, 86, 86, 86, 86, 406, + 396, 393, 86, 86, 86, 86, 407, 397, 86, 408, + 3353, 86, 411, 399, 412, 401, 403, 413, 400, 402, + 410, 404, 86, 86, 415, 414, 406, 416, 86, 86, + 419, 86, 420, 407, 421, 86, 408, 86, 86, 411, + 86, 412, 417, 418, 413, 86, 422, 410, 86, 423, + 86, 415, 414, 426, 416, 424, 428, 431, 3353, 420, + 86, 86, 86, 427, 86, 429, 86, 432, 433, 417, + + 418, 86, 425, 422, 86, 435, 86, 434, 86, 86, + 426, 86, 424, 436, 431, 86, 438, 437, 86, 430, + 427, 86, 439, 445, 432, 433, 86, 86, 441, 425, + 86, 86, 435, 440, 434, 443, 442, 86, 86, 86, + 436, 446, 86, 438, 437, 86, 430, 447, 3353, 439, + 445, 448, 444, 3353, 86, 441, 3353, 455, 456, 86, + 440, 3353, 443, 442, 3353, 457, 86, 86, 3353, 461, + 3353, 86, 462, 86, 447, 86, 464, 465, 448, 444, + 449, 469, 3353, 450, 455, 456, 86, 86, 451, 452, + 453, 454, 457, 86, 463, 458, 461, 459, 86, 462, + + 466, 86, 468, 464, 465, 467, 3353, 449, 86, 86, + 450, 477, 3353, 460, 478, 451, 452, 453, 454, 86, + 470, 463, 458, 471, 459, 472, 86, 475, 476, 468, + 86, 479, 86, 473, 474, 507, 86, 86, 86, 480, + 460, 478, 482, 86, 481, 86, 86, 470, 483, 487, + 471, 484, 472, 493, 475, 476, 86, 86, 479, 86, + 473, 474, 86, 86, 86, 86, 480, 485, 486, 482, + 492, 481, 505, 3353, 86, 483, 3353, 488, 484, 489, + 86, 86, 491, 494, 497, 86, 498, 499, 490, 86, + 495, 565, 86, 506, 485, 486, 496, 492, 86, 505, + + 86, 504, 86, 86, 488, 86, 489, 3353, 86, 491, + 494, 497, 86, 498, 499, 490, 500, 495, 565, 86, + 508, 509, 524, 496, 522, 86, 519, 510, 504, 501, + 545, 511, 502, 86, 503, 86, 86, 3353, 523, 512, + 86, 3353, 86, 500, 527, 86, 520, 508, 509, 524, + 86, 522, 525, 519, 510, 3353, 501, 86, 511, 502, + 3353, 503, 86, 535, 521, 523, 512, 513, 526, 514, + 86, 527, 537, 520, 536, 86, 86, 538, 539, 525, + 540, 556, 515, 3353, 543, 516, 170, 517, 542, 518, + 535, 521, 86, 86, 513, 526, 514, 548, 541, 86, + + 86, 536, 86, 86, 86, 539, 86, 540, 556, 515, + 86, 543, 516, 544, 517, 542, 518, 528, 529, 546, + 86, 86, 3353, 549, 548, 541, 547, 530, 558, 531, + 532, 533, 550, 86, 534, 3353, 553, 555, 563, 557, + 544, 554, 86, 86, 528, 529, 546, 551, 86, 86, + 559, 86, 561, 547, 530, 86, 531, 532, 533, 550, + 86, 534, 562, 553, 555, 552, 557, 86, 554, 86, + 86, 560, 566, 594, 551, 86, 86, 559, 86, 561, + 564, 569, 86, 567, 568, 3353, 570, 572, 86, 562, + 571, 573, 552, 3353, 86, 580, 577, 86, 560, 566, + + 86, 86, 574, 575, 583, 86, 3353, 564, 569, 578, + 3353, 3353, 86, 570, 572, 86, 86, 571, 573, 86, + 576, 86, 580, 577, 579, 581, 582, 86, 584, 574, + 575, 583, 86, 86, 3353, 585, 578, 86, 86, 595, + 598, 596, 597, 586, 599, 608, 3353, 576, 86, 3353, + 3353, 579, 581, 582, 587, 584, 588, 86, 86, 601, + 3353, 86, 585, 86, 602, 86, 595, 598, 596, 597, + 586, 600, 86, 604, 607, 603, 86, 86, 605, 3353, + 86, 587, 606, 588, 589, 86, 601, 86, 86, 610, + 609, 602, 590, 591, 612, 86, 592, 593, 600, 86, + + 604, 607, 603, 86, 611, 605, 86, 616, 86, 606, + 613, 589, 86, 614, 617, 615, 610, 609, 3353, 590, + 591, 86, 624, 592, 593, 86, 86, 618, 620, 86, + 86, 611, 621, 86, 616, 619, 86, 613, 622, 86, + 614, 617, 615, 86, 625, 623, 86, 86, 626, 624, + 627, 628, 629, 86, 618, 620, 630, 3353, 86, 621, + 86, 631, 619, 86, 632, 622, 86, 86, 633, 635, + 634, 625, 623, 86, 86, 626, 86, 627, 628, 629, + 636, 637, 86, 630, 639, 638, 86, 86, 631, 86, + 86, 632, 86, 644, 645, 633, 635, 634, 643, 86, + + 640, 642, 641, 86, 646, 86, 86, 636, 637, 86, + 86, 639, 638, 647, 648, 652, 650, 649, 655, 651, + 644, 653, 86, 3353, 3353, 643, 86, 640, 642, 641, + 86, 646, 657, 656, 86, 86, 86, 654, 658, 86, + 86, 648, 652, 650, 649, 86, 651, 661, 653, 86, + 86, 663, 660, 662, 664, 666, 86, 86, 86, 657, + 656, 659, 665, 667, 654, 86, 3353, 86, 669, 86, + 86, 681, 668, 670, 661, 714, 86, 86, 663, 660, + 662, 664, 666, 86, 86, 86, 679, 86, 659, 665, + 667, 680, 3353, 86, 86, 669, 682, 687, 681, 668, + + 670, 671, 684, 86, 86, 3353, 672, 86, 673, 86, + 683, 3353, 3353, 679, 674, 3353, 675, 688, 680, 676, + 677, 86, 691, 682, 687, 86, 678, 86, 671, 684, + 685, 696, 692, 672, 686, 673, 3353, 683, 694, 86, + 86, 674, 693, 675, 688, 689, 676, 677, 690, 691, + 86, 695, 86, 678, 699, 86, 86, 685, 696, 697, + 698, 686, 86, 86, 86, 694, 700, 86, 86, 693, + 701, 702, 689, 703, 705, 690, 708, 704, 695, 706, + 86, 699, 86, 86, 86, 707, 697, 698, 86, 86, + 710, 709, 711, 700, 86, 715, 86, 701, 702, 86, + + 703, 705, 86, 708, 704, 712, 706, 86, 713, 716, + 86, 720, 707, 86, 718, 722, 717, 710, 709, 711, + 86, 86, 715, 86, 86, 719, 721, 86, 3353, 86, + 723, 170, 712, 726, 3353, 713, 716, 86, 720, 725, + 727, 718, 722, 717, 724, 729, 728, 86, 730, 86, + 3353, 3353, 719, 721, 731, 86, 732, 723, 86, 3353, + 86, 86, 733, 86, 734, 740, 725, 743, 735, 86, + 741, 724, 86, 728, 86, 730, 744, 86, 86, 745, + 736, 731, 739, 732, 748, 742, 86, 737, 746, 733, + 738, 734, 86, 86, 86, 735, 747, 86, 86, 86, + + 749, 753, 751, 86, 752, 750, 757, 736, 86, 739, + 755, 86, 742, 754, 737, 86, 86, 738, 86, 86, + 756, 758, 759, 86, 762, 86, 86, 761, 753, 751, + 86, 752, 86, 757, 760, 86, 763, 755, 765, 86, + 754, 767, 86, 86, 764, 766, 3353, 756, 758, 759, + 86, 769, 768, 86, 761, 770, 86, 86, 86, 86, + 86, 760, 771, 763, 86, 765, 773, 86, 767, 772, + 774, 764, 766, 86, 775, 776, 86, 86, 769, 768, + 777, 780, 770, 778, 779, 3353, 781, 86, 3353, 771, + 86, 782, 86, 783, 784, 785, 772, 774, 86, 86, + + 86, 775, 776, 787, 86, 788, 786, 777, 780, 789, + 778, 779, 86, 781, 790, 86, 86, 86, 782, 86, + 783, 784, 785, 791, 794, 793, 3353, 86, 796, 798, + 787, 795, 3353, 786, 797, 800, 789, 86, 86, 86, + 799, 790, 802, 86, 808, 792, 86, 86, 86, 86, + 791, 794, 793, 86, 86, 796, 798, 86, 795, 801, + 803, 797, 800, 804, 805, 806, 86, 799, 809, 86, + 807, 86, 792, 818, 810, 86, 86, 814, 86, 811, + 812, 86, 813, 86, 815, 86, 801, 803, 817, 86, + 804, 805, 806, 86, 816, 809, 819, 807, 86, 86, + + 818, 810, 820, 821, 814, 824, 86, 86, 86, 813, + 86, 815, 822, 825, 823, 817, 86, 827, 826, 828, + 832, 816, 841, 3353, 86, 3353, 3353, 86, 86, 820, + 833, 86, 824, 86, 829, 86, 86, 834, 86, 822, + 835, 823, 837, 836, 827, 86, 828, 3353, 830, 831, + 86, 838, 86, 847, 86, 86, 86, 833, 839, 842, + 845, 829, 86, 849, 834, 846, 851, 835, 86, 837, + 836, 86, 3353, 840, 86, 830, 831, 843, 838, 86, + 847, 848, 86, 86, 909, 839, 842, 844, 86, 850, + 849, 86, 86, 851, 852, 856, 853, 86, 854, 86, + + 840, 855, 86, 86, 843, 86, 857, 86, 848, 86, + 858, 86, 859, 866, 844, 860, 850, 861, 3353, 864, + 3353, 852, 856, 853, 863, 854, 862, 86, 855, 86, + 86, 865, 86, 86, 86, 86, 867, 858, 86, 859, + 868, 871, 860, 86, 861, 86, 864, 878, 869, 86, + 872, 863, 870, 862, 873, 86, 86, 874, 865, 86, + 86, 875, 876, 867, 86, 86, 86, 868, 871, 86, + 86, 880, 877, 879, 878, 869, 884, 872, 881, 870, + 86, 873, 882, 883, 874, 886, 86, 916, 875, 876, + 922, 86, 86, 885, 889, 86, 888, 86, 880, 877, + + 879, 86, 887, 884, 86, 881, 86, 86, 86, 882, + 883, 890, 886, 86, 891, 892, 895, 893, 894, 86, + 885, 889, 86, 888, 898, 86, 896, 3353, 3353, 887, + 897, 86, 899, 901, 900, 86, 86, 86, 890, 86, + 86, 891, 892, 895, 893, 894, 86, 902, 86, 86, + 86, 898, 903, 896, 904, 170, 906, 897, 905, 899, + 901, 900, 910, 908, 907, 912, 914, 86, 86, 86, + 911, 86, 913, 917, 902, 86, 86, 86, 915, 903, + 86, 904, 924, 906, 86, 905, 86, 918, 86, 910, + 908, 907, 86, 914, 86, 921, 919, 911, 923, 913, + + 917, 920, 86, 86, 86, 915, 925, 3353, 935, 924, + 86, 86, 927, 938, 918, 86, 926, 86, 86, 86, + 86, 936, 921, 919, 3353, 923, 941, 3353, 920, 3353, + 3353, 86, 937, 925, 86, 935, 939, 86, 940, 927, + 938, 3353, 3353, 926, 928, 942, 946, 929, 936, 943, + 86, 930, 3353, 941, 931, 86, 86, 86, 944, 937, + 949, 932, 933, 939, 934, 940, 945, 947, 86, 86, + 948, 928, 942, 946, 929, 86, 943, 86, 930, 960, + 86, 931, 86, 957, 86, 944, 959, 979, 932, 933, + 958, 934, 86, 945, 947, 86, 86, 948, 950, 951, + + 961, 952, 86, 86, 953, 86, 960, 962, 968, 954, + 957, 964, 965, 959, 86, 955, 956, 958, 3353, 967, + 86, 86, 972, 963, 86, 950, 951, 961, 952, 966, + 86, 953, 86, 86, 962, 968, 954, 971, 964, 965, + 969, 86, 955, 956, 974, 970, 967, 973, 86, 972, + 963, 975, 977, 976, 981, 3353, 966, 86, 980, 86, + 978, 983, 982, 3353, 971, 985, 86, 3353, 987, 86, + 86, 974, 86, 86, 973, 86, 86, 86, 975, 977, + 976, 981, 86, 86, 86, 980, 984, 978, 983, 982, + 986, 988, 985, 86, 86, 987, 990, 989, 991, 992, + + 993, 994, 996, 86, 1000, 86, 997, 86, 995, 86, + 86, 998, 999, 984, 86, 1001, 1003, 986, 988, 1002, + 3353, 3353, 86, 990, 989, 991, 992, 993, 1004, 86, + 86, 1006, 1005, 86, 86, 995, 86, 1007, 86, 999, + 1008, 86, 1009, 1011, 3353, 1010, 1002, 86, 86, 1014, + 86, 1012, 86, 86, 86, 1004, 1016, 1013, 1006, 1005, + 86, 86, 1017, 1018, 86, 86, 86, 86, 1019, 1009, + 1011, 86, 1010, 1015, 1020, 1022, 1014, 1021, 1012, 3353, + 86, 86, 86, 86, 1013, 86, 1025, 1023, 1024, 1017, + 1018, 86, 1026, 86, 1027, 86, 1029, 1030, 1028, 86, + + 1015, 1035, 1022, 1032, 1021, 86, 86, 1033, 86, 86, + 86, 1031, 1034, 1025, 1023, 1024, 1043, 86, 86, 1026, + 86, 1027, 1036, 1029, 1030, 1028, 1038, 86, 1035, 86, + 1032, 1044, 1037, 1039, 86, 1046, 86, 1040, 1031, 86, + 86, 86, 1041, 1043, 86, 1045, 86, 1050, 1047, 1036, + 1042, 86, 86, 1038, 86, 1052, 1048, 86, 86, 1037, + 1039, 1049, 1046, 86, 1040, 3353, 86, 1054, 86, 1041, + 1055, 1051, 1045, 86, 1050, 1047, 1053, 1042, 86, 86, + 86, 1056, 1052, 1048, 1057, 1059, 1058, 1060, 1049, 86, + 86, 1065, 1061, 1063, 1054, 86, 1062, 1055, 1051, 1064, + + 86, 3353, 1066, 1053, 86, 86, 86, 1067, 1056, 86, + 3353, 1069, 1059, 1058, 1060, 1068, 86, 86, 86, 1061, + 1063, 86, 86, 1062, 1070, 86, 1064, 1071, 1072, 1066, + 86, 86, 86, 1073, 1067, 1074, 86, 1075, 1069, 1076, + 86, 1077, 1068, 1078, 1080, 1082, 1081, 3353, 1088, 1089, + 1079, 1070, 86, 1083, 1071, 1072, 86, 86, 1087, 3353, + 1073, 86, 1086, 1090, 86, 3353, 1076, 86, 86, 86, + 1078, 1084, 1082, 86, 86, 1088, 86, 1079, 86, 1085, + 1083, 86, 1091, 1092, 86, 1087, 86, 86, 1093, 1086, + 1090, 86, 1094, 3353, 1095, 1096, 1097, 86, 1084, 86, + + 1098, 1100, 1101, 1103, 86, 1099, 1085, 1102, 86, 1091, + 1092, 3353, 1107, 86, 1105, 86, 1121, 1104, 86, 1094, + 86, 86, 1096, 1097, 86, 86, 1109, 1106, 1100, 1101, + 1103, 1110, 170, 86, 1102, 86, 86, 1108, 86, 1107, + 86, 1105, 1111, 86, 1104, 3353, 3353, 1118, 86, 3353, + 86, 3353, 1119, 1109, 1106, 1120, 3353, 1122, 1110, 86, + 3353, 3353, 1123, 3353, 1108, 1124, 3353, 86, 1125, 1111, + 1112, 1126, 1113, 86, 1118, 86, 1114, 86, 1115, 1119, + 3353, 86, 1120, 1116, 1122, 86, 1128, 1127, 1117, 1123, + 1130, 1129, 1124, 86, 86, 1125, 1131, 1112, 1126, 1113, + + 86, 1132, 3353, 1114, 1134, 1115, 3353, 1137, 86, 86, + 1116, 1135, 1139, 1133, 1127, 1117, 86, 1130, 86, 1138, + 1140, 1136, 86, 1131, 86, 86, 86, 1142, 1132, 1141, + 1143, 1134, 1145, 86, 1137, 1146, 1144, 1149, 1135, 1139, + 1133, 86, 86, 1147, 1150, 86, 1138, 1140, 1136, 86, + 1152, 86, 1151, 3353, 1142, 1162, 1141, 1143, 86, 86, + 86, 1160, 1161, 1144, 86, 1164, 3353, 86, 86, 86, + 86, 1150, 1171, 1165, 3353, 1163, 86, 1152, 3353, 1151, + 1153, 3353, 1162, 1167, 86, 1154, 3353, 1155, 1160, 1161, + 86, 86, 1164, 1156, 1166, 86, 86, 1170, 1157, 1158, + + 1165, 1168, 1163, 1169, 86, 1159, 86, 1153, 86, 86, + 1167, 86, 1154, 86, 1155, 1172, 1173, 1177, 1174, 1180, + 1156, 1166, 1175, 1178, 1170, 1157, 1158, 86, 1168, 1176, + 1169, 86, 1159, 86, 1179, 1181, 1183, 86, 86, 1182, + 1184, 86, 1172, 1173, 86, 1174, 86, 86, 1185, 1175, + 1178, 86, 1186, 1191, 86, 1188, 1176, 1187, 86, 86, + 1189, 1179, 1181, 1183, 1190, 86, 1182, 1184, 1192, 1193, + 1194, 3353, 1199, 86, 86, 86, 1195, 86, 86, 1186, + 86, 1196, 1188, 86, 1187, 86, 86, 1189, 1200, 1198, + 86, 1190, 86, 1197, 86, 1192, 1193, 1194, 1201, 1199, + + 86, 1202, 1203, 1195, 86, 1205, 86, 3353, 1196, 3353, + 1204, 86, 1215, 1208, 1207, 1200, 1198, 1206, 86, 86, + 1197, 86, 86, 1210, 86, 1201, 86, 1209, 1202, 1211, + 1212, 1213, 1205, 1216, 86, 86, 86, 1204, 86, 1215, + 1208, 1207, 1214, 1217, 1206, 3353, 1223, 1218, 1219, 1224, + 1210, 86, 86, 86, 1209, 1220, 1211, 1212, 1213, 86, + 86, 86, 86, 1221, 1225, 86, 86, 1226, 1222, 1214, + 1217, 1227, 86, 1223, 1218, 1219, 1224, 1229, 86, 1228, + 86, 1231, 1220, 1230, 1232, 1233, 86, 1234, 86, 3353, + 86, 1225, 86, 86, 1226, 86, 1236, 86, 1227, 1235, + + 1237, 1238, 1240, 1239, 1229, 3353, 1228, 1246, 1231, 86, + 1230, 86, 1233, 86, 1241, 1243, 86, 1244, 86, 86, + 1242, 1245, 86, 1236, 86, 86, 1235, 1237, 1238, 1240, + 1239, 86, 1247, 86, 1246, 1248, 86, 1249, 1250, 86, + 1251, 1241, 1243, 86, 1244, 1252, 86, 1242, 1245, 1254, + 1259, 1253, 1256, 86, 1255, 1260, 1261, 1257, 86, 1247, + 86, 86, 1248, 86, 1249, 86, 1262, 86, 1258, 86, + 86, 1266, 1252, 86, 86, 86, 1254, 1259, 1253, 1256, + 86, 1255, 1260, 1263, 1257, 1264, 1265, 1267, 86, 1269, + 1268, 1271, 3353, 1270, 3353, 1258, 86, 86, 86, 1276, + + 1274, 1272, 3353, 86, 1273, 86, 1277, 86, 86, 86, + 1263, 3353, 1264, 1265, 1267, 86, 1275, 1268, 86, 86, + 1270, 86, 86, 86, 86, 1278, 1276, 1274, 1272, 1279, + 86, 1273, 1281, 1277, 1282, 1280, 1283, 1284, 1285, 1287, + 3353, 86, 86, 1275, 86, 1286, 1288, 86, 1290, 1292, + 86, 86, 1278, 1293, 86, 3353, 1279, 1289, 86, 1281, + 1297, 1282, 1280, 86, 3353, 1285, 86, 86, 86, 86, + 86, 86, 1286, 1288, 1294, 1290, 1292, 1295, 1296, 86, + 1293, 1298, 86, 1299, 1289, 1300, 86, 86, 170, 1302, + 1304, 1301, 1305, 1306, 1307, 1303, 86, 86, 3353, 86, + + 3353, 1294, 1309, 1308, 1295, 1296, 86, 1310, 1298, 1311, + 1299, 86, 1300, 86, 86, 1312, 1302, 86, 1301, 1305, + 1313, 1314, 1303, 1315, 86, 86, 86, 1318, 86, 1309, + 1308, 86, 86, 86, 1310, 86, 1311, 1316, 1317, 86, + 1320, 1319, 1312, 86, 1321, 86, 1322, 1313, 1314, 86, + 1315, 1323, 1325, 1324, 1318, 86, 3353, 86, 86, 86, + 1331, 1326, 1330, 86, 1316, 1317, 1333, 86, 1319, 1332, + 1327, 1321, 1328, 1322, 86, 1329, 1336, 1335, 1323, 1325, + 1324, 1334, 3353, 86, 1337, 86, 86, 1331, 1326, 1330, + 86, 86, 86, 86, 1339, 1340, 1332, 1327, 1338, 1328, + + 86, 86, 1329, 1336, 1335, 1341, 1343, 86, 1334, 1342, + 1344, 1337, 86, 86, 1345, 1347, 1348, 86, 1346, 3353, + 3353, 1339, 1340, 86, 86, 1338, 86, 1349, 86, 1351, + 86, 3353, 1341, 1343, 1352, 1353, 1342, 1344, 86, 1350, + 1354, 1345, 86, 1348, 1359, 1346, 86, 1355, 1357, 86, + 1356, 86, 86, 86, 1349, 1360, 1351, 86, 86, 86, + 1358, 1352, 1353, 86, 86, 1361, 1350, 1354, 1364, 1365, + 86, 1359, 86, 86, 1355, 1357, 1363, 1356, 1362, 1366, + 1368, 86, 1360, 1367, 86, 86, 86, 1358, 1369, 86, + 86, 1370, 1361, 1371, 1372, 1364, 1365, 1375, 86, 86, + + 86, 1374, 86, 1363, 86, 1362, 1366, 1368, 86, 1373, + 1367, 86, 1376, 86, 1377, 1369, 1378, 3353, 1370, 1379, + 1371, 1372, 1381, 1380, 1375, 1382, 86, 1383, 1374, 86, + 86, 1386, 1384, 86, 1389, 1387, 1373, 1385, 86, 86, + 1400, 1377, 86, 1378, 86, 1388, 1379, 86, 86, 1381, + 1380, 1397, 1382, 3353, 1383, 1399, 1398, 1401, 1386, 86, + 86, 1389, 1387, 1434, 86, 86, 86, 1400, 3353, 1403, + 1402, 1404, 1388, 1390, 86, 86, 1406, 1391, 1397, 86, + 1392, 1393, 3353, 1398, 1401, 1394, 1407, 86, 86, 1405, + 1434, 1395, 86, 86, 1408, 1396, 1412, 1402, 1404, 86, + + 1390, 86, 86, 1406, 1391, 86, 1413, 1392, 1393, 1415, + 3353, 86, 1394, 1407, 1416, 1409, 1405, 1410, 1395, 1411, + 86, 1408, 1396, 1412, 86, 1414, 86, 86, 1417, 1418, + 1419, 86, 86, 1413, 3353, 3353, 1415, 86, 1420, 86, + 1421, 1416, 1409, 1428, 1410, 1429, 1411, 1427, 3353, 1430, + 1431, 3353, 1414, 3353, 3353, 1417, 86, 1435, 1433, 3353, + 86, 86, 86, 86, 1432, 1420, 86, 1421, 1422, 86, + 1428, 86, 1429, 1423, 1427, 1424, 1436, 1425, 86, 1426, + 86, 86, 1437, 1439, 1435, 1433, 86, 1438, 1440, 1441, + 1443, 1432, 1442, 86, 86, 1422, 1446, 1447, 1448, 1444, + + 1423, 86, 1424, 1436, 1425, 86, 1426, 86, 86, 86, + 1439, 86, 1445, 1449, 86, 1440, 1441, 1443, 1450, 1442, + 86, 1451, 1452, 1446, 86, 1448, 1444, 1454, 1453, 86, + 1457, 86, 86, 1455, 1456, 86, 86, 1458, 1459, 1445, + 1449, 1460, 86, 86, 1461, 1450, 86, 86, 1451, 1452, + 86, 1462, 86, 3353, 1454, 1453, 1465, 1457, 1463, 1464, + 1455, 1456, 1466, 1467, 86, 1459, 1468, 86, 86, 86, + 86, 1461, 1469, 1470, 86, 86, 1471, 1473, 1462, 1478, + 86, 1472, 86, 1465, 1474, 1463, 1464, 86, 1475, 86, + 1467, 86, 1477, 86, 1476, 86, 1480, 86, 86, 1469, + + 1470, 86, 1479, 1471, 86, 86, 1478, 1481, 1472, 1486, + 1482, 1474, 86, 1483, 86, 1475, 1485, 1484, 1493, 1477, + 1487, 1476, 86, 1480, 1488, 1496, 1490, 86, 86, 1479, + 86, 86, 1489, 1491, 1481, 86, 1486, 1482, 86, 86, + 1483, 1492, 86, 1485, 1484, 1493, 1494, 1487, 86, 1495, + 86, 1488, 86, 1490, 86, 86, 1497, 86, 1498, 1489, + 1491, 1499, 1501, 86, 1500, 1502, 86, 1503, 1492, 1508, + 86, 1504, 1505, 1494, 3353, 1509, 1495, 1511, 86, 1506, + 86, 86, 86, 1507, 170, 1498, 86, 86, 86, 1501, + 1510, 1500, 1502, 86, 86, 3353, 1514, 1515, 1504, 1505, + + 1517, 86, 1512, 86, 86, 1516, 1506, 86, 1513, 86, + 1507, 86, 1518, 86, 1519, 86, 1523, 1510, 1520, 1524, + 86, 86, 1522, 1514, 1515, 86, 1521, 1517, 86, 1512, + 1525, 86, 1516, 1526, 86, 1513, 1527, 1528, 86, 1518, + 86, 1519, 1529, 1523, 86, 1520, 86, 1530, 1531, 1522, + 1534, 1532, 1533, 1521, 1539, 86, 86, 1525, 1540, 1543, + 1526, 1535, 86, 1527, 1536, 86, 86, 1541, 1537, 86, + 86, 1538, 86, 86, 1530, 1531, 1542, 1534, 1532, 1533, + 86, 1539, 86, 86, 1544, 1540, 1543, 1545, 1535, 1547, + 86, 1536, 1546, 1550, 1541, 1537, 1549, 86, 1538, 1551, + + 86, 1548, 86, 1552, 3353, 86, 1553, 1554, 86, 1556, + 1555, 1544, 86, 86, 1563, 86, 1547, 86, 1557, 86, + 1550, 86, 86, 1549, 1559, 1560, 1551, 86, 1548, 86, + 1552, 1558, 1561, 1553, 1554, 1562, 1556, 1555, 1564, 1565, + 86, 86, 1566, 86, 1567, 1557, 86, 86, 86, 1568, + 86, 1559, 1560, 86, 1571, 86, 86, 1570, 1558, 1561, + 1569, 86, 1562, 1572, 1573, 1564, 1565, 1575, 86, 1566, + 1574, 1567, 1579, 86, 86, 1578, 1568, 1576, 1577, 86, + 1580, 1571, 86, 1581, 1570, 86, 1583, 1569, 86, 86, + 1572, 1573, 1585, 86, 1575, 1582, 86, 1574, 86, 1579, + + 1584, 1586, 1578, 86, 1576, 1577, 1588, 86, 86, 1587, + 1589, 1590, 86, 86, 1591, 86, 3353, 3353, 1592, 1585, + 1593, 86, 1582, 1594, 1596, 1599, 1598, 1584, 1586, 3353, + 1595, 86, 1601, 86, 1597, 1600, 1587, 86, 86, 86, + 86, 1591, 86, 86, 86, 1592, 86, 86, 86, 86, + 1594, 1596, 1599, 1598, 1603, 86, 1602, 1595, 86, 1601, + 1604, 1597, 1600, 86, 1605, 1607, 1606, 1609, 1611, 1620, + 1608, 1613, 1610, 86, 86, 86, 1612, 86, 1614, 86, + 3353, 1603, 86, 1602, 1617, 1616, 86, 1604, 1615, 1618, + 1623, 1605, 86, 1606, 3353, 1611, 86, 86, 1613, 86, + + 1619, 86, 86, 1612, 1621, 1614, 86, 86, 1625, 86, + 1624, 1617, 1616, 1622, 86, 1615, 1618, 1626, 86, 1634, + 1627, 1631, 86, 3353, 1628, 1629, 86, 1619, 86, 86, + 1630, 1621, 86, 86, 86, 1625, 1632, 1624, 86, 1639, + 1622, 1633, 86, 1635, 1638, 86, 1634, 1627, 1631, 86, + 1636, 1628, 1629, 86, 1637, 1640, 1641, 1630, 86, 86, + 1643, 1642, 86, 1632, 3353, 1645, 86, 86, 1633, 1646, + 1635, 1638, 1644, 1647, 86, 1650, 1649, 1636, 86, 86, + 1654, 1637, 86, 1641, 86, 86, 1648, 1643, 1642, 1651, + 86, 1652, 1645, 1653, 86, 1655, 1646, 86, 86, 1644, + + 1647, 86, 1650, 1649, 86, 1656, 1659, 86, 1660, 1657, + 3353, 1658, 1667, 1648, 3353, 1666, 1651, 86, 1652, 1661, + 1653, 86, 1655, 1662, 3353, 86, 1664, 1665, 86, 1671, + 86, 86, 1663, 1659, 86, 1660, 1657, 86, 1658, 86, + 1668, 86, 86, 1670, 86, 1669, 1661, 86, 1672, 86, + 1662, 86, 1674, 1664, 1665, 86, 1671, 1673, 1675, 1663, + 1676, 3353, 1677, 1678, 86, 86, 3353, 1668, 1679, 1680, + 1670, 1682, 1669, 86, 86, 1681, 86, 1684, 1685, 86, + 86, 1686, 86, 86, 1673, 1675, 86, 86, 1683, 1677, + 1678, 1688, 86, 86, 1687, 1679, 1680, 86, 1682, 1693, + + 86, 1689, 1681, 86, 1684, 1685, 86, 86, 1686, 1694, + 1691, 1690, 1692, 1698, 86, 1683, 1695, 86, 1688, 86, + 86, 1687, 86, 1696, 1697, 86, 1693, 1699, 1689, 86, + 1700, 1708, 86, 1702, 1701, 86, 1694, 1691, 1690, 1692, + 1698, 86, 1703, 1695, 1705, 1709, 86, 86, 1704, 1711, + 1696, 1697, 1707, 86, 86, 1706, 170, 1700, 86, 86, + 1702, 1701, 86, 86, 86, 1712, 1713, 86, 1710, 1703, + 1714, 1705, 1709, 86, 86, 1704, 1711, 86, 1715, 1707, + 86, 1716, 1706, 86, 1717, 1720, 1721, 1718, 1722, 1719, + 3353, 1723, 1712, 1713, 86, 1710, 86, 1714, 86, 1724, + + 1725, 1726, 1727, 1728, 86, 1715, 86, 86, 1716, 86, + 86, 1717, 86, 1721, 1718, 1722, 1719, 1729, 1723, 1730, + 1731, 1732, 86, 1733, 86, 1735, 1724, 1725, 86, 1727, + 86, 1734, 1738, 86, 86, 86, 1736, 1739, 3353, 1741, + 1737, 86, 86, 1748, 1729, 86, 86, 1731, 1732, 86, + 1733, 86, 1735, 86, 1740, 1743, 1750, 1749, 1734, 1738, + 1742, 1744, 86, 1736, 1739, 86, 1741, 1737, 86, 86, + 86, 1745, 1751, 1752, 1746, 86, 1756, 1757, 86, 86, + 86, 1740, 1743, 1750, 1749, 1753, 1747, 1742, 1744, 1759, + 1754, 86, 86, 1758, 1755, 86, 1760, 1763, 1745, 1751, + + 1752, 1746, 1761, 86, 1762, 1765, 1764, 86, 1767, 86, + 1769, 86, 1753, 1747, 86, 86, 1759, 1754, 86, 86, + 86, 1755, 86, 1760, 1763, 86, 1766, 1768, 86, 1761, + 1770, 1772, 1765, 1764, 86, 1767, 86, 1771, 1774, 1773, + 1775, 3353, 86, 86, 1780, 1778, 1776, 1777, 1779, 1783, + 3353, 86, 86, 1766, 1768, 86, 86, 86, 86, 86, + 86, 1785, 86, 86, 1771, 1774, 1773, 86, 86, 1781, + 1782, 1780, 1778, 1776, 1777, 1779, 1783, 1784, 1786, 86, + 1788, 1787, 86, 86, 86, 1789, 1791, 1790, 1785, 86, + 1797, 3353, 1792, 3108, 3109, 86, 1781, 1782, 1793, 86, + + 86, 86, 1795, 86, 1784, 1786, 1794, 1788, 1787, 86, + 1796, 1800, 1789, 86, 1790, 86, 86, 86, 86, 1792, + 1798, 1799, 86, 1801, 1802, 1793, 86, 86, 1803, 1795, + 1805, 1804, 1807, 1794, 86, 1806, 86, 1796, 1800, 86, + 1808, 86, 3353, 86, 86, 1811, 1815, 1798, 1799, 86, + 1801, 1802, 1833, 86, 1816, 1803, 86, 1805, 1804, 1807, + 86, 1809, 1806, 1812, 1810, 1817, 1821, 1808, 1813, 1814, + 86, 86, 1811, 1815, 1818, 86, 1819, 1824, 1820, 86, + 1822, 86, 3353, 3353, 86, 86, 1825, 1834, 1809, 86, + 1812, 1810, 86, 86, 86, 1813, 1814, 1828, 1823, 86, + + 1827, 1818, 86, 1819, 1824, 1820, 86, 1822, 86, 1826, + 1829, 86, 1832, 1825, 86, 86, 1830, 86, 86, 1831, + 1837, 1835, 1838, 1842, 1828, 1823, 1836, 1827, 86, 86, + 86, 1839, 3353, 1840, 86, 86, 1826, 1829, 1841, 1832, + 86, 1843, 86, 1830, 1846, 86, 1831, 1837, 1835, 1838, + 1842, 1845, 1844, 1836, 86, 1847, 86, 1848, 1839, 1849, + 86, 3353, 1850, 1854, 1855, 86, 86, 3353, 1843, 1852, + 86, 1846, 1853, 86, 1856, 86, 1851, 3353, 1845, 1844, + 86, 86, 1847, 1857, 1848, 86, 1849, 86, 86, 1850, + 1854, 1855, 86, 1858, 1860, 1862, 1852, 1861, 1859, 1853, + + 86, 1856, 1864, 1851, 1863, 1865, 1866, 86, 1867, 86, + 1857, 3353, 1870, 3353, 86, 1868, 1869, 1874, 1871, 1878, + 1872, 1860, 1862, 1873, 1861, 86, 86, 86, 3353, 86, + 3353, 1863, 1865, 86, 86, 1876, 86, 86, 1875, 86, + 86, 1877, 1868, 1869, 86, 1871, 1880, 1872, 1879, 86, + 1873, 86, 86, 1881, 86, 1882, 1884, 1885, 1883, 86, + 1888, 86, 1876, 1890, 1886, 1875, 1887, 86, 1877, 1891, + 86, 86, 1892, 1880, 86, 1879, 86, 86, 1893, 86, + 1881, 1889, 1882, 1884, 1885, 1883, 86, 86, 1895, 1894, + 1896, 1886, 1897, 1887, 1899, 86, 86, 86, 86, 1892, + + 1898, 86, 1900, 1902, 1903, 86, 1904, 86, 1889, 1901, + 1906, 1905, 86, 86, 86, 1895, 1894, 1896, 1907, 86, + 86, 1908, 1913, 1909, 1910, 3353, 86, 1898, 86, 1900, + 1902, 86, 86, 1904, 86, 1912, 1901, 1906, 1905, 1911, + 86, 86, 1915, 86, 1914, 1907, 1917, 86, 1908, 86, + 1909, 1910, 86, 1916, 170, 1918, 1919, 86, 1923, 1920, + 1921, 86, 1912, 1924, 1922, 86, 1911, 1927, 86, 1915, + 1926, 1914, 86, 86, 86, 86, 86, 1925, 1928, 86, + 1916, 1933, 1918, 1919, 1929, 1923, 1920, 1921, 86, 1930, + 1931, 1922, 86, 1934, 1927, 86, 1932, 1926, 1937, 1936, + + 1935, 1939, 1938, 3353, 1925, 86, 86, 1956, 86, 86, + 1940, 1929, 86, 86, 86, 86, 86, 1931, 1942, 86, + 86, 1941, 86, 1932, 86, 1937, 1936, 1935, 1939, 1938, + 86, 1943, 1944, 1947, 1945, 1946, 1950, 1940, 1948, 86, + 86, 1955, 1954, 86, 1953, 1942, 1957, 86, 1941, 86, + 86, 1949, 86, 86, 86, 86, 86, 1951, 1943, 1944, + 1947, 1945, 1946, 1950, 1952, 1948, 86, 1958, 86, 1954, + 1960, 1953, 1959, 1957, 1965, 86, 1961, 1962, 1949, 86, + 86, 86, 1966, 86, 1951, 1963, 1967, 1964, 1968, 1969, + 1971, 1952, 1970, 1973, 1958, 86, 86, 1960, 86, 1959, + + 86, 1965, 86, 1961, 1962, 1972, 1974, 1975, 1977, 86, + 1976, 86, 1963, 86, 1964, 1968, 86, 1971, 86, 1970, + 86, 1978, 1979, 1980, 1982, 86, 1985, 1991, 1981, 86, + 86, 1983, 1972, 1974, 86, 1984, 1987, 1976, 86, 86, + 86, 1989, 86, 1988, 1986, 3353, 3353, 1990, 1978, 3353, + 1980, 86, 86, 86, 86, 1981, 86, 86, 1983, 86, + 1999, 3353, 1984, 1987, 2006, 86, 1996, 86, 1989, 86, + 1988, 1986, 1997, 86, 1990, 1992, 1993, 1994, 1998, 2000, + 86, 86, 1995, 2001, 2003, 86, 86, 2005, 2002, 2004, + 86, 2006, 86, 1996, 2008, 2007, 2012, 86, 2014, 1997, + + 2009, 86, 1992, 1993, 1994, 1998, 2000, 86, 3353, 1995, + 2010, 2003, 86, 2011, 2005, 86, 2004, 86, 86, 86, + 2013, 86, 2007, 86, 86, 2014, 86, 2009, 2015, 2016, + 3353, 2017, 2018, 2020, 86, 86, 2019, 2010, 2025, 2021, + 2011, 86, 2024, 86, 2022, 2026, 2023, 2013, 86, 2032, + 2030, 2031, 86, 2028, 2029, 2015, 2016, 86, 2017, 86, + 86, 2027, 86, 2019, 86, 86, 2021, 86, 86, 2024, + 86, 2022, 86, 2023, 86, 86, 2032, 2030, 2031, 2034, + 2028, 2029, 2033, 86, 2036, 2035, 2037, 2039, 2027, 3353, + 86, 2038, 2042, 86, 2041, 2040, 2043, 3353, 3353, 2045, + + 3353, 2046, 86, 2044, 3353, 3353, 2034, 86, 86, 2033, + 2049, 86, 2035, 2037, 2048, 2053, 86, 86, 2038, 86, + 86, 2041, 2040, 86, 86, 86, 2045, 2047, 2046, 86, + 2044, 2050, 2051, 86, 86, 86, 2052, 2049, 2054, 2055, + 86, 2048, 2059, 3353, 2056, 2057, 86, 86, 2060, 86, + 2062, 2061, 2063, 86, 2047, 2064, 86, 2065, 2050, 2051, + 86, 2058, 86, 2052, 2066, 86, 2055, 86, 86, 2059, + 86, 2056, 2057, 86, 2067, 2060, 2068, 86, 2061, 2063, + 2069, 2070, 2064, 2071, 2065, 2074, 2075, 86, 2058, 2072, + 3353, 2066, 86, 2078, 2073, 2079, 2076, 86, 86, 2081, + + 86, 2067, 86, 2068, 2095, 86, 86, 2069, 86, 86, + 2071, 2077, 86, 2075, 2082, 86, 2072, 2080, 2083, 86, + 2078, 2073, 2079, 2076, 86, 2084, 86, 2085, 2086, 2087, + 2088, 86, 2090, 2091, 2092, 2089, 86, 2093, 2077, 86, + 86, 2082, 2094, 2096, 2080, 2083, 86, 86, 3353, 2097, + 86, 86, 86, 86, 2085, 2086, 2087, 2088, 2098, 2090, + 86, 86, 2089, 2099, 2100, 2102, 2101, 2103, 2104, 86, + 86, 2105, 2106, 2107, 3353, 86, 2097, 86, 86, 2108, + 86, 86, 86, 2109, 2115, 2098, 2112, 2110, 86, 2111, + 2099, 2113, 2102, 2101, 2103, 2104, 86, 86, 86, 2106, + + 2114, 170, 86, 86, 2116, 86, 2108, 2119, 86, 2118, + 2109, 86, 2117, 2112, 2110, 86, 2111, 2121, 2113, 86, + 2120, 2123, 2122, 3353, 2126, 3353, 86, 2114, 86, 2124, + 2125, 86, 2129, 2130, 2119, 3353, 3353, 2127, 86, 2117, + 86, 86, 86, 86, 2121, 86, 2128, 2120, 2123, 2122, + 86, 2126, 86, 86, 86, 2132, 2124, 2125, 2131, 2129, + 86, 86, 2133, 2134, 2127, 2135, 2138, 2136, 2137, 2141, + 2139, 2142, 2143, 2128, 86, 86, 86, 86, 86, 2140, + 2144, 86, 2132, 3353, 86, 2131, 86, 86, 2146, 2133, + 2134, 86, 86, 2138, 2136, 2137, 2141, 2139, 86, 2143, + + 2145, 86, 86, 86, 3353, 2147, 2140, 2144, 2149, 86, + 2150, 2151, 3353, 2152, 3353, 2146, 2148, 86, 86, 2154, + 2155, 2158, 2156, 2153, 3353, 2160, 86, 2145, 86, 2164, + 2159, 86, 2147, 2162, 86, 2149, 86, 2150, 2151, 86, + 2152, 86, 2157, 2148, 86, 86, 2154, 2155, 86, 2156, + 2153, 2161, 2160, 2163, 86, 2165, 86, 2159, 2166, 2168, + 2162, 86, 86, 2167, 2169, 86, 86, 2170, 2172, 2157, + 2171, 2173, 86, 2174, 3353, 2178, 2176, 3353, 2161, 2175, + 2163, 86, 2165, 86, 86, 2166, 86, 3353, 86, 2179, + 2167, 2169, 86, 2177, 86, 2172, 86, 2171, 2173, 86, + + 86, 86, 2178, 2176, 2180, 86, 2175, 86, 2181, 2182, + 86, 2184, 2189, 2183, 2185, 86, 2179, 2186, 2190, 86, + 2177, 2187, 86, 86, 86, 86, 86, 2192, 2191, 86, + 3353, 2180, 3353, 2195, 2188, 2181, 2182, 2193, 2184, 2189, + 2183, 2185, 86, 86, 2186, 2190, 86, 2196, 2187, 2194, + 2198, 2197, 2203, 2200, 86, 2191, 86, 86, 86, 2199, + 2195, 2188, 86, 2201, 2193, 2205, 2204, 2202, 2211, 86, + 86, 2207, 86, 2206, 2196, 86, 2194, 2198, 2197, 2203, + 2200, 2208, 2209, 86, 86, 86, 2199, 86, 86, 86, + 2201, 2210, 2205, 2204, 2202, 86, 86, 2213, 2207, 2215, + + 2206, 2212, 86, 2219, 86, 2214, 3353, 86, 2208, 2209, + 2218, 2216, 2220, 2217, 2228, 2221, 2222, 86, 2210, 86, + 2223, 86, 86, 2229, 2213, 2224, 2215, 2225, 2212, 86, + 86, 86, 2214, 86, 86, 86, 2226, 2218, 2216, 2220, + 2217, 86, 2221, 2222, 86, 2227, 86, 2230, 2231, 86, + 2229, 2232, 86, 2234, 2225, 86, 3353, 2233, 86, 86, + 2235, 2238, 2236, 2226, 2240, 3353, 2241, 2239, 2242, 86, + 2237, 3353, 2227, 3353, 2230, 2231, 2243, 3353, 86, 86, + 2234, 86, 86, 86, 2233, 2247, 86, 2235, 86, 2236, + 86, 2240, 86, 2241, 2239, 2242, 2244, 2237, 86, 2245, + + 2248, 2251, 2246, 2243, 2249, 86, 86, 2252, 3353, 2250, + 86, 3353, 2247, 2255, 3353, 2253, 86, 86, 2254, 2256, + 2260, 3353, 3353, 2244, 2257, 86, 2245, 2248, 2251, 2246, + 86, 2259, 2258, 86, 2252, 86, 86, 2263, 86, 86, + 2255, 86, 2253, 2261, 2262, 2254, 2256, 86, 86, 86, + 2264, 2257, 86, 86, 2265, 2268, 2269, 2266, 2259, 2258, + 2267, 2271, 86, 86, 2263, 2274, 86, 2270, 2280, 2275, + 2261, 2262, 86, 86, 3353, 86, 3353, 2264, 86, 86, + 2272, 2265, 2268, 2269, 2266, 2276, 86, 2267, 2271, 86, + 2277, 2279, 2274, 2273, 2270, 86, 2275, 86, 2278, 86, + + 86, 86, 2282, 2281, 2284, 2283, 2285, 2272, 2286, 86, + 2287, 2288, 2276, 86, 2290, 170, 2289, 2277, 2279, 2291, + 2273, 86, 86, 2292, 2304, 2278, 2293, 86, 86, 86, + 2281, 2284, 2283, 2285, 2294, 2286, 2295, 2287, 2309, 3353, + 2296, 86, 2299, 86, 2300, 86, 86, 86, 2301, 2302, + 2292, 86, 2306, 2293, 2297, 2305, 86, 2307, 2308, 2303, + 86, 2294, 3353, 86, 86, 2298, 86, 2296, 86, 2299, + 86, 86, 2310, 2312, 86, 2301, 2302, 86, 86, 2306, + 86, 2297, 2305, 2311, 86, 2308, 2303, 2313, 3353, 2314, + 86, 86, 2298, 2315, 86, 86, 86, 2316, 3353, 2310, + + 2312, 86, 2319, 2318, 2322, 2317, 2321, 2320, 2324, 2326, + 2311, 86, 3353, 86, 2313, 86, 2314, 86, 86, 2325, + 2315, 86, 2323, 2327, 2316, 86, 86, 86, 2330, 2319, + 2318, 2322, 2317, 2321, 2320, 86, 2326, 2328, 86, 2329, + 2332, 2335, 86, 86, 2331, 86, 2325, 2333, 86, 2323, + 2327, 2334, 86, 2336, 2339, 2330, 2340, 2337, 86, 86, + 86, 86, 86, 2345, 2328, 86, 2329, 2332, 86, 2338, + 2342, 2331, 86, 2343, 2333, 86, 86, 86, 2334, 2341, + 2336, 2339, 2347, 2340, 2337, 2344, 2348, 86, 86, 2346, + 2345, 86, 2349, 2350, 3353, 86, 2338, 2342, 2352, 2351, + + 2343, 2353, 2357, 86, 2356, 2354, 2341, 86, 2358, 2347, + 2355, 2359, 2344, 2348, 2362, 86, 2346, 86, 86, 2349, + 86, 86, 86, 2365, 86, 2352, 2351, 2360, 2353, 86, + 86, 2356, 2354, 86, 2361, 2358, 2366, 2355, 86, 86, + 86, 2362, 2363, 2367, 2368, 2364, 2369, 2371, 86, 2370, + 86, 2372, 2373, 86, 2360, 2375, 86, 2377, 2379, 2374, + 86, 2361, 86, 86, 2380, 86, 86, 86, 2376, 2363, + 2367, 2368, 2364, 2369, 2371, 2378, 2370, 86, 86, 86, + 86, 2381, 86, 2382, 86, 2379, 2374, 86, 2383, 2385, + 2384, 86, 2386, 2387, 2389, 2376, 86, 86, 2393, 2388, + + 2390, 2391, 2378, 86, 2395, 2392, 86, 86, 86, 86, + 2382, 3353, 2398, 2394, 86, 2383, 2385, 2384, 3353, 2386, + 86, 86, 86, 2397, 86, 2393, 2388, 2390, 2391, 86, + 2396, 86, 2392, 2399, 2400, 86, 2401, 86, 86, 2398, + 2394, 2402, 86, 2403, 2404, 86, 2405, 86, 86, 2406, + 2397, 2407, 2408, 2409, 2410, 2411, 86, 2396, 3353, 86, + 2399, 2400, 2414, 86, 2424, 86, 86, 2413, 2402, 86, + 2403, 2404, 2418, 2405, 86, 86, 86, 2412, 2407, 2408, + 2409, 2410, 86, 2415, 86, 2419, 2416, 86, 3353, 2414, + 2417, 86, 86, 2420, 2413, 86, 86, 2426, 86, 2418, + + 2425, 2432, 86, 86, 2412, 2436, 2421, 2427, 2429, 2428, + 2415, 86, 2419, 2416, 2435, 86, 2431, 2417, 86, 86, + 2420, 2422, 86, 2423, 2426, 2430, 86, 2425, 2432, 86, + 86, 86, 2433, 2421, 2427, 2429, 2428, 86, 86, 2434, + 2437, 2435, 2438, 2431, 3353, 2441, 86, 86, 2422, 2439, + 2423, 2440, 2430, 2443, 86, 2442, 2449, 2444, 3353, 2433, + 3353, 86, 2450, 2445, 2451, 2446, 2434, 2437, 2447, 86, + 2455, 86, 2441, 86, 86, 86, 2439, 86, 2440, 2453, + 2443, 86, 2442, 86, 2444, 2448, 86, 86, 86, 2452, + 2445, 2451, 2446, 2454, 86, 2447, 86, 86, 86, 2456, + + 2458, 2459, 86, 2460, 2461, 2463, 2453, 2457, 86, 2466, + 2462, 2464, 2448, 3353, 3353, 86, 2452, 2465, 2467, 86, + 2454, 86, 170, 86, 86, 86, 2456, 2458, 2459, 86, + 2460, 2461, 86, 2469, 2457, 86, 2466, 2462, 2464, 2468, + 2470, 2471, 2472, 2473, 2465, 2467, 2474, 2476, 86, 86, + 2475, 86, 2479, 2478, 2477, 2480, 2482, 3353, 86, 2483, + 2469, 2481, 2489, 86, 86, 2484, 2468, 2470, 2471, 2472, + 2473, 3353, 86, 86, 86, 86, 86, 2475, 86, 86, + 2478, 2477, 2485, 86, 86, 2486, 2483, 86, 2481, 2488, + 2490, 86, 2484, 2487, 86, 3353, 2491, 86, 86, 2492, + + 2493, 86, 2494, 86, 3353, 2500, 2495, 2496, 3353, 2485, + 3353, 3353, 2486, 2497, 2498, 86, 2488, 2490, 86, 2499, + 2487, 86, 86, 2491, 86, 86, 2492, 2493, 86, 86, + 2501, 86, 86, 2495, 2496, 2505, 2502, 2506, 2503, 2508, + 2497, 2498, 86, 2504, 86, 86, 2499, 2507, 86, 2509, + 86, 2510, 3353, 2519, 86, 3353, 2529, 2501, 86, 2511, + 86, 86, 2505, 2502, 2506, 2503, 2508, 2512, 86, 2513, + 2504, 2514, 86, 2515, 2507, 86, 2516, 86, 2510, 86, + 2518, 86, 2520, 2521, 2517, 86, 2511, 2522, 86, 2524, + 3353, 86, 2531, 86, 2512, 86, 2513, 2525, 2514, 2523, + + 2515, 86, 86, 2516, 2527, 86, 2528, 2518, 86, 2520, + 2521, 2517, 86, 2530, 2522, 86, 2524, 2526, 86, 86, + 2532, 86, 2533, 2534, 2525, 2536, 2523, 2541, 86, 86, + 86, 2527, 86, 2528, 2537, 2535, 86, 2539, 86, 2542, + 2530, 2538, 86, 2540, 2526, 2543, 2544, 2532, 86, 86, + 2534, 2552, 2536, 2547, 86, 2546, 86, 2549, 2545, 86, + 86, 2537, 2535, 2548, 2539, 86, 86, 2554, 2538, 86, + 2540, 86, 86, 2544, 2550, 86, 2551, 86, 86, 2553, + 2547, 86, 2546, 2555, 2549, 2545, 2556, 2557, 2558, 86, + 2548, 86, 86, 2561, 2559, 2560, 2562, 86, 86, 86, + + 3353, 2550, 86, 2551, 86, 2563, 2553, 2564, 2565, 2566, + 2555, 2568, 86, 2556, 86, 2558, 86, 2567, 2570, 86, + 2561, 2559, 2560, 86, 86, 2571, 86, 86, 2569, 2574, + 2572, 86, 2563, 86, 2564, 2565, 2566, 86, 2568, 2573, + 2575, 86, 86, 2576, 2567, 2570, 86, 86, 2577, 2578, + 2579, 86, 2571, 2580, 3353, 2569, 2574, 2572, 2582, 2581, + 3353, 2583, 86, 2584, 2585, 86, 2573, 86, 2588, 2590, + 86, 2591, 2587, 3353, 3353, 86, 86, 2579, 86, 86, + 2580, 86, 2586, 86, 86, 2582, 2581, 86, 2583, 86, + 2584, 2585, 2589, 2593, 2592, 86, 86, 2594, 86, 2587, + + 86, 2595, 2600, 2597, 2596, 2598, 2599, 3353, 86, 2586, + 86, 86, 86, 86, 2602, 86, 86, 86, 2601, 2589, + 2593, 2592, 2608, 2604, 2594, 86, 2606, 2603, 2595, 86, + 2597, 2596, 2598, 2599, 86, 2605, 86, 86, 86, 86, + 2607, 2602, 2609, 2612, 2610, 2601, 2611, 2614, 86, 2608, + 2604, 86, 86, 2606, 2603, 170, 86, 2615, 86, 2613, + 86, 2617, 2605, 2616, 86, 2618, 2619, 2607, 2620, 2609, + 2612, 2610, 2621, 2611, 2614, 2622, 86, 2623, 2625, 2627, + 2624, 86, 3353, 86, 2615, 3353, 2613, 86, 2617, 86, + 2616, 86, 2618, 86, 86, 86, 2632, 2634, 86, 2621, + + 2626, 86, 2622, 86, 2623, 2625, 2627, 2624, 86, 2628, + 2629, 2631, 2630, 2633, 86, 2638, 86, 86, 86, 86, + 86, 2635, 86, 2632, 2634, 2636, 2637, 2626, 86, 2639, + 2640, 2643, 2642, 2644, 86, 86, 2628, 2629, 2631, 2630, + 2633, 86, 2638, 86, 2641, 2645, 2646, 2648, 2635, 86, + 86, 86, 2636, 2637, 2647, 86, 86, 2640, 86, 2642, + 2644, 2650, 2654, 86, 2649, 2655, 2651, 86, 2652, 2653, + 86, 2641, 86, 2646, 2648, 86, 86, 86, 2656, 86, + 2658, 2647, 2659, 2660, 2661, 86, 2663, 2670, 2650, 86, + 2657, 2649, 86, 2651, 2662, 2652, 2653, 2666, 86, 86, + + 2664, 86, 2665, 86, 2667, 2656, 2669, 2658, 86, 86, + 86, 86, 86, 2663, 2670, 86, 86, 2657, 2668, 86, + 2671, 2662, 2673, 2672, 2666, 86, 2674, 2664, 86, 2665, + 2676, 2667, 2678, 2669, 86, 3353, 2675, 2677, 86, 86, + 2679, 3353, 2684, 3353, 2680, 2668, 2683, 86, 86, 86, + 2672, 86, 86, 2674, 86, 2687, 2686, 2676, 2681, 2678, + 2685, 2682, 86, 2675, 2677, 86, 86, 2679, 86, 86, + 86, 2680, 86, 2683, 2688, 2690, 2692, 2689, 2693, 2691, + 2694, 2695, 86, 2686, 2698, 2681, 3353, 2685, 2682, 86, + 86, 86, 2701, 86, 86, 2700, 2702, 2699, 86, 86, + + 2704, 2688, 2690, 2692, 2689, 86, 2691, 2694, 2695, 2696, + 2697, 86, 86, 86, 2706, 86, 86, 86, 2703, 2701, + 2705, 2710, 2700, 86, 2699, 2708, 86, 86, 2707, 3353, + 2711, 2709, 86, 2713, 3353, 2716, 2696, 2697, 86, 86, + 86, 2706, 86, 2717, 2712, 2703, 2718, 2705, 86, 86, + 2714, 2715, 2708, 86, 2719, 2707, 86, 2711, 2709, 2720, + 86, 86, 2716, 2721, 86, 86, 86, 2722, 2725, 2723, + 2717, 2712, 2726, 86, 2727, 2724, 2729, 2714, 2715, 2728, + 86, 2719, 86, 2730, 2733, 86, 86, 86, 86, 86, + 2721, 2731, 86, 2734, 2722, 2725, 2723, 86, 86, 2726, + + 2732, 2727, 2724, 2729, 2735, 86, 2728, 2737, 2736, 2743, + 2730, 86, 86, 86, 2738, 2739, 2740, 2741, 2731, 2742, + 86, 86, 2745, 86, 86, 2744, 2746, 2732, 86, 86, + 2748, 170, 2749, 2750, 2737, 2736, 2743, 2747, 2751, 86, + 2752, 2738, 2739, 2755, 2741, 86, 2742, 86, 86, 86, + 2753, 86, 2744, 86, 3353, 2754, 86, 86, 2756, 2749, + 2758, 2757, 86, 2761, 2747, 86, 2762, 2752, 86, 86, + 2760, 2763, 86, 2764, 2759, 86, 3353, 2753, 86, 2765, + 2767, 86, 2754, 86, 2766, 2756, 86, 2758, 2757, 86, + 2761, 2768, 2770, 2769, 86, 86, 2772, 2760, 86, 2771, + + 2764, 2759, 86, 86, 86, 86, 2765, 2767, 86, 2774, + 2773, 2766, 2775, 2777, 86, 86, 2776, 2779, 2768, 2770, + 2769, 86, 3353, 2772, 86, 2778, 2771, 86, 2782, 2780, + 86, 86, 2784, 2781, 86, 86, 2774, 2773, 2783, 2775, + 2777, 86, 86, 2776, 2785, 2786, 86, 2789, 2787, 86, + 86, 2788, 2778, 86, 2790, 2782, 2780, 2791, 2794, 86, + 2781, 2792, 86, 86, 86, 2783, 86, 2793, 86, 86, + 2796, 2785, 2786, 2797, 86, 2787, 2798, 2795, 2788, 86, + 2799, 2790, 2800, 2804, 2791, 86, 2803, 3353, 2792, 2801, + 86, 2806, 2802, 2805, 2793, 3353, 2809, 2810, 2811, 2807, + + 86, 86, 86, 2812, 2795, 86, 86, 86, 86, 2800, + 86, 86, 86, 2803, 86, 86, 2801, 86, 2806, 2802, + 2805, 2808, 86, 2809, 2810, 86, 2807, 2813, 2814, 2816, + 86, 2815, 2817, 86, 2819, 2818, 2820, 2822, 2823, 86, + 2824, 2821, 2825, 2826, 3353, 86, 2828, 2827, 2808, 86, + 2831, 86, 86, 86, 86, 2814, 86, 86, 2815, 2817, + 86, 2819, 2818, 2829, 2822, 2823, 86, 2824, 86, 86, + 86, 86, 86, 2828, 2827, 2830, 2833, 86, 2832, 2834, + 2835, 2836, 86, 2837, 2838, 2839, 2840, 2848, 2842, 2841, + 2829, 86, 86, 2843, 2844, 86, 3353, 86, 86, 2849, + + 2850, 86, 2830, 86, 86, 2832, 2834, 86, 2836, 2847, + 2837, 2838, 86, 86, 2851, 2845, 2841, 86, 2846, 86, + 86, 2844, 86, 86, 2852, 86, 2849, 2850, 2853, 2854, + 86, 2855, 3353, 86, 2857, 2856, 2847, 2862, 2858, 2859, + 2864, 86, 2845, 2861, 86, 2846, 86, 86, 86, 2860, + 2863, 2852, 86, 86, 3353, 2853, 2854, 3353, 2855, 86, + 86, 2857, 2856, 86, 2862, 2858, 2859, 86, 2865, 3353, + 2861, 86, 2866, 2868, 2869, 2870, 2860, 2863, 2871, 2873, + 2867, 86, 86, 2872, 2874, 2875, 86, 2876, 3353, 2877, + 3353, 2878, 3353, 86, 86, 2865, 86, 2879, 2881, 2866, + + 2868, 2869, 2870, 2880, 2882, 2885, 2883, 2867, 3353, 86, + 86, 86, 2875, 86, 86, 86, 2877, 86, 2878, 2884, + 86, 2887, 2888, 86, 2879, 2881, 86, 86, 2886, 86, + 2880, 2882, 2885, 2883, 2889, 2890, 86, 2891, 2892, 2893, + 86, 86, 86, 86, 2894, 2895, 2884, 2896, 2887, 2888, + 2897, 2898, 2899, 86, 2904, 2886, 3353, 2900, 2901, 3353, + 2903, 2889, 2890, 86, 86, 86, 2893, 86, 2902, 86, + 2905, 2894, 86, 86, 2896, 86, 86, 86, 2898, 86, + 2906, 86, 2907, 2908, 2900, 2901, 86, 2903, 2909, 2910, + 86, 2912, 2916, 86, 2911, 2902, 2913, 2905, 86, 86, + + 86, 2914, 2917, 2915, 2918, 86, 2919, 2906, 86, 2907, + 2908, 2920, 2921, 2927, 86, 2909, 2922, 86, 2912, 86, + 86, 86, 2923, 2913, 86, 86, 2925, 2937, 2914, 86, + 2915, 2918, 2928, 2919, 86, 2930, 2931, 86, 2920, 86, + 2924, 2926, 86, 2922, 86, 86, 2929, 86, 86, 2923, + 2932, 2933, 86, 2925, 86, 3353, 2938, 86, 86, 2928, + 2934, 2939, 2930, 2931, 2943, 2941, 2940, 2924, 2926, 86, + 2944, 2935, 86, 2929, 2936, 3353, 86, 2932, 2933, 2947, + 3353, 2942, 86, 86, 86, 2945, 86, 2934, 86, 86, + 2948, 2943, 2941, 2940, 2946, 2949, 2951, 86, 2935, 86, + + 2953, 2936, 86, 2950, 2952, 3353, 86, 86, 2942, 86, + 86, 2955, 2945, 86, 2956, 3353, 86, 2948, 86, 2959, + 2957, 2946, 2949, 2951, 2954, 2960, 86, 2958, 2961, 2964, + 2950, 2952, 86, 86, 2967, 2990, 2962, 86, 86, 2965, + 86, 2956, 86, 2963, 2966, 86, 2959, 2957, 86, 86, + 86, 2954, 2960, 86, 2958, 2961, 86, 86, 86, 2968, + 2970, 2967, 2969, 2962, 2971, 3353, 2965, 86, 86, 2973, + 2963, 2966, 2972, 86, 2974, 2975, 2977, 86, 2976, 86, + 2978, 2979, 2980, 86, 86, 2982, 2968, 2970, 86, 2969, + 3353, 2971, 86, 2986, 86, 86, 2973, 2987, 2981, 2972, + + 2983, 2974, 2975, 86, 86, 2976, 2984, 2978, 86, 86, + 2985, 86, 86, 2989, 2991, 86, 2988, 86, 86, 2993, + 2986, 86, 2992, 86, 86, 2981, 2994, 2983, 2995, 2996, + 86, 86, 2998, 2984, 3001, 2997, 86, 2985, 2999, 86, + 2989, 2991, 86, 2988, 3002, 86, 2993, 3000, 3004, 2992, + 3003, 3007, 86, 2994, 3006, 2995, 86, 86, 3009, 3008, + 86, 86, 2997, 3353, 86, 2999, 86, 3005, 3010, 86, + 86, 86, 3011, 3012, 3000, 86, 86, 3003, 3007, 3013, + 86, 3006, 3015, 3014, 3017, 3018, 3008, 86, 3016, 3019, + 86, 86, 3021, 3353, 3005, 3010, 3020, 3027, 3024, 3011, + + 3012, 3353, 3353, 86, 3022, 3023, 86, 86, 86, 3015, + 3014, 3017, 3025, 86, 3026, 3016, 86, 86, 3028, 3029, + 86, 3030, 86, 3020, 86, 86, 3034, 86, 86, 86, + 3035, 3022, 3023, 3032, 86, 3031, 3033, 3039, 86, 3025, + 86, 3026, 86, 3036, 3037, 3028, 3029, 3038, 86, 3040, + 86, 86, 3044, 3034, 3042, 86, 3041, 86, 3043, 3045, + 3032, 3046, 3031, 3033, 86, 86, 3049, 86, 3047, 3050, + 3036, 3037, 3048, 86, 3038, 3051, 86, 3056, 86, 86, + 86, 3042, 86, 3041, 3052, 3043, 86, 3057, 86, 3053, + 3065, 86, 86, 3063, 86, 3047, 3050, 3060, 86, 3048, + + 3054, 3055, 86, 86, 3056, 86, 86, 3058, 86, 3059, + 86, 3052, 3061, 3062, 86, 3064, 3053, 86, 3066, 86, + 86, 3067, 86, 3069, 3060, 86, 3070, 3054, 3055, 86, + 3068, 86, 3071, 3072, 3058, 3073, 3059, 3076, 3353, 3061, + 3062, 3074, 86, 3075, 3077, 3066, 86, 3080, 3067, 3353, + 86, 3078, 86, 86, 86, 3353, 86, 3068, 86, 3071, + 3072, 3081, 86, 3082, 86, 3079, 86, 86, 3074, 86, + 3075, 3077, 86, 3084, 3080, 3083, 86, 3091, 3078, 3085, + 3086, 86, 3087, 86, 86, 3088, 86, 86, 3081, 3092, + 3082, 86, 3079, 3093, 86, 3095, 86, 3096, 3089, 3090, + + 3084, 3100, 3083, 3094, 3091, 3098, 3085, 3086, 86, 3087, + 86, 86, 3088, 3101, 3097, 86, 3092, 3099, 3353, 86, + 3093, 86, 3102, 3103, 3096, 3089, 3090, 86, 86, 86, + 3094, 86, 3098, 3104, 3105, 3106, 3107, 3110, 3111, 3353, + 86, 3097, 86, 3115, 3099, 86, 3112, 3113, 3353, 3102, + 86, 3114, 3117, 3116, 3353, 86, 3119, 3120, 3118, 3123, + 3104, 3105, 86, 86, 86, 86, 86, 86, 3122, 86, + 3115, 86, 3125, 3126, 86, 86, 3127, 3132, 3114, 86, + 3116, 3121, 3129, 3119, 3120, 3118, 86, 3124, 86, 86, + 86, 86, 86, 3128, 86, 3122, 86, 3130, 3133, 3125, + + 3126, 3131, 3353, 3127, 86, 86, 3134, 3135, 3121, 3129, + 3140, 3142, 3138, 3136, 3124, 86, 3137, 3139, 86, 3141, + 3128, 86, 3147, 86, 3130, 86, 3143, 86, 3131, 86, + 3144, 86, 86, 3134, 3135, 3148, 3145, 3146, 3142, 3149, + 3136, 3150, 86, 3137, 86, 86, 3141, 3151, 3153, 86, + 3152, 3154, 86, 3143, 3155, 3156, 3157, 3144, 86, 3158, + 86, 3159, 86, 3145, 3146, 3160, 3149, 86, 86, 3161, + 86, 3162, 3163, 86, 86, 3153, 3164, 3152, 86, 3165, + 86, 86, 3156, 86, 3166, 3167, 86, 3168, 86, 3169, + 3170, 3172, 86, 3171, 3174, 3173, 86, 86, 86, 86, + + 3175, 86, 86, 86, 86, 86, 3165, 86, 86, 3176, + 3178, 3166, 86, 3177, 3168, 86, 3169, 3170, 86, 3179, + 3171, 3174, 3173, 3180, 3183, 86, 3182, 3175, 86, 3181, + 86, 3184, 3185, 86, 3188, 86, 3176, 86, 3187, 3189, + 3177, 3186, 86, 3353, 3192, 3353, 3179, 86, 86, 3193, + 3180, 3183, 86, 3182, 86, 86, 3181, 3191, 3184, 3190, + 86, 3188, 86, 3194, 86, 3187, 3189, 3196, 3186, 3197, + 86, 3192, 86, 3195, 86, 86, 3193, 3198, 86, 3199, + 3200, 3201, 3204, 3202, 3191, 3203, 3190, 86, 3205, 86, + 3194, 86, 3209, 86, 3196, 86, 3197, 3207, 3206, 3353, + + 3195, 86, 3208, 86, 3198, 86, 86, 86, 86, 3204, + 3202, 86, 3203, 3210, 86, 3205, 3211, 3213, 86, 3209, + 3212, 3220, 3214, 3215, 3207, 3206, 3216, 3218, 86, 3208, + 86, 86, 86, 3217, 3219, 86, 86, 86, 86, 86, + 3210, 3221, 3223, 3211, 3213, 3222, 86, 3212, 3220, 3214, + 3215, 86, 86, 3216, 3218, 3224, 3226, 3227, 3225, 3228, + 3217, 3219, 3229, 86, 86, 86, 86, 3231, 3221, 3223, + 86, 3232, 3222, 3230, 3233, 3234, 3353, 3242, 86, 3235, + 3237, 3236, 86, 3226, 3227, 3225, 3228, 86, 86, 86, + 3238, 86, 3239, 3240, 86, 86, 3245, 86, 3232, 3241, + + 3230, 86, 86, 3243, 86, 3246, 3235, 3237, 3236, 86, + 3244, 86, 86, 3248, 86, 3247, 86, 3238, 86, 3239, + 3240, 3249, 86, 3245, 3250, 86, 3241, 3251, 3252, 3253, + 3243, 3255, 86, 3256, 3254, 86, 86, 3244, 3257, 3258, + 86, 86, 3247, 86, 3259, 3260, 3264, 86, 86, 3353, + 3353, 3250, 3265, 3262, 3251, 86, 3253, 86, 86, 86, + 3256, 3254, 3261, 3263, 3266, 3257, 3258, 86, 86, 3269, + 3270, 86, 3267, 3264, 3268, 86, 86, 86, 86, 86, + 3262, 86, 86, 3272, 3274, 3271, 3273, 3276, 3275, 3261, + 3263, 86, 86, 86, 86, 86, 3269, 3270, 86, 3267, + + 3277, 3268, 86, 3278, 3279, 86, 3283, 3284, 3281, 3280, + 3272, 3274, 3271, 3273, 3276, 3275, 86, 86, 3282, 3285, + 3286, 3287, 86, 3353, 3291, 86, 86, 3277, 3288, 86, + 3278, 86, 3289, 86, 3284, 3281, 3280, 3292, 3293, 3294, + 3295, 3290, 3297, 86, 3296, 3282, 86, 3286, 3287, 86, + 86, 86, 86, 3298, 86, 3288, 86, 3300, 3302, 3289, + 86, 86, 86, 86, 86, 3293, 86, 3295, 3290, 3297, + 3299, 3296, 86, 3301, 3353, 3303, 3304, 3307, 86, 3310, + 3298, 86, 3311, 3308, 3309, 3302, 3353, 3305, 3353, 86, + 3306, 86, 86, 86, 3312, 3314, 86, 3299, 3313, 86, + + 3301, 86, 3303, 86, 3307, 86, 3310, 3315, 86, 3311, + 3308, 3309, 86, 3317, 3305, 3316, 86, 3306, 3318, 3319, + 3353, 3312, 3314, 86, 3321, 3313, 3322, 3320, 3323, 3353, + 3325, 3324, 86, 86, 3315, 3331, 3353, 3329, 3353, 86, + 3317, 86, 3316, 3326, 86, 3318, 3319, 86, 3327, 3333, + 86, 3321, 3328, 86, 3320, 3323, 86, 86, 3324, 86, + 86, 3330, 86, 86, 3329, 3332, 3335, 3334, 86, 86, + 3326, 86, 3336, 86, 86, 3327, 3333, 3337, 3338, 3328, + 86, 3341, 3339, 3340, 3342, 3344, 3343, 3345, 3330, 86, + 86, 86, 3332, 3335, 3334, 3346, 3347, 3348, 3353, 3336, + + 3351, 3353, 3352, 86, 3337, 86, 86, 86, 3341, 3339, + 3340, 86, 86, 3343, 86, 86, 3353, 3349, 86, 86, + 3350, 3353, 3346, 3347, 3348, 86, 3353, 86, 86, 86, + 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, + 3353, 3353, 3353, 3353, 3349, 3353, 3353, 3350, 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, 3291, - 89, 89, 89, 89, 158, 158, 3291, 3291, 3291, 158, - 158, 160, 160, 3291, 3291, 160, 3291, 160, 162, 3291, - 3291, 3291, 3291, 3291, 162, 165, 165, 3291, 3291, 3291, - 165, 165, 167, 3291, 3291, 3291, 3291, 3291, 167, 169, - 169, 3291, 169, 169, 169, 169, 172, 3291, 3291, 3291, - 3291, 3291, 172, 175, 175, 3291, 3291, 3291, 175, 175, - 90, 90, 3291, 90, 90, 90, 90, 17, 3291, 3291, - 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, - - 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, - 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, - 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, - 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, - 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, - 3291, 3291, 3291, 3291 + 80, 80, 80, 80, 80, 80, 80, 89, 89, 3353, + + 89, 89, 89, 89, 160, 160, 3353, 3353, 3353, 160, + 160, 162, 162, 3353, 3353, 162, 3353, 162, 164, 3353, + 3353, 3353, 3353, 3353, 164, 167, 167, 3353, 3353, 3353, + 167, 167, 169, 3353, 3353, 3353, 3353, 3353, 169, 171, + 171, 3353, 171, 171, 171, 171, 174, 3353, 3353, 3353, + 3353, 3353, 174, 177, 177, 3353, 3353, 3353, 177, 177, + 90, 90, 3353, 90, 90, 90, 90, 17, 3353, 3353, + 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, + 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, + 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, + + 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, + 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, + 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, + 3353, 3353, 3353, 3353 } ; -static const flex_int16_t yy_chk[9455] = +static const flex_int16_t yy_chk[9635] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2566,1035 +2606,1055 @@ static const flex_int16_t yy_chk[9455] = 7, 7, 7, 33, 7, 8, 8, 8, 8, 32, 8, 9, 9, 9, 10, 10, 10, 19, 51, 51, - 1073, 19, 3299, 3, 32, 33, 4, 67, 67, 5, - 33, 6, 2689, 13, 13, 13, 13, 7, 13, 14, + 1090, 19, 3361, 3, 32, 33, 4, 67, 67, 5, + 33, 6, 2735, 13, 13, 13, 13, 7, 13, 14, 14, 14, 14, 8, 14, 15, 15, 15, 9, 25, - 1073, 10, 11, 11, 11, 11, 11, 11, 12, 12, + 1090, 10, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 16, 16, 16, 34, 28, 84, - 84, 13, 11, 45, 289, 25, 25, 14, 12, 34, - 39, 23, 15, 23, 23, 45, 23, 1082, 28, 175, - 11, 28, 23, 39, 34, 28, 12, 174, 87, 11, - 45, 16, 87, 289, 37, 12, 30, 39, 29, 56, - 37, 172, 56, 72, 30, 28, 26, 167, 100, 23, + 84, 13, 11, 45, 293, 25, 25, 14, 12, 34, + 39, 23, 15, 23, 23, 45, 23, 1099, 28, 177, + 11, 28, 23, 39, 34, 28, 12, 176, 87, 11, + 45, 16, 87, 293, 37, 12, 30, 39, 29, 56, + 37, 174, 56, 72, 30, 28, 26, 169, 100, 23, 24, 24, 29, 26, 24, 30, 72, 26, 99, 24, - 26, 37, 30, 30, 29, 29, 100, 99, 24, 165, - 72, 30, 26, 26, 24, 100, 164, 24, 24, 29, - 26, 24, 30, 162, 26, 99, 24, 26, 46, 161, - 46, 46, 161, 46, 160, 24, 27, 158, 31, 46, - 27, 31, 101, 27, 94, 27, 27, 143, 31, 62, - 31, 62, 62, 193, 62, 101, 27, 70, 27, 70, + 26, 37, 30, 30, 29, 29, 100, 99, 24, 167, + 72, 30, 26, 26, 24, 100, 166, 24, 24, 29, + 26, 24, 30, 164, 26, 99, 24, 26, 46, 163, + 46, 46, 163, 46, 162, 24, 27, 160, 31, 46, + 27, 31, 101, 27, 94, 27, 27, 145, 31, 62, + 31, 62, 62, 195, 62, 101, 27, 70, 27, 70, 70, 31, 70, 27, 94, 31, 35, 27, 31, 101, - 27, 94, 27, 27, 35, 31, 93, 31, 36, 143, - 35, 96, 36, 27, 35, 193, 44, 217, 96, 42, - - 44, 42, 35, 35, 44, 70, 92, 85, 36, 93, - 42, 35, 80, 93, 36, 36, 42, 35, 96, 36, - 75, 35, 44, 44, 43, 42, 42, 44, 42, 217, - 92, 44, 220, 92, 43, 36, 38, 42, 43, 43, - 38, 109, 74, 42, 159, 159, 38, 43, 109, 38, - 73, 43, 73, 73, 97, 73, 38, 79, 38, 79, - 79, 43, 79, 38, 220, 43, 43, 38, 109, 86, - 95, 86, 86, 38, 86, 106, 38, 68, 97, 63, - 86, 97, 98, 38, 40, 95, 58, 111, 40, 89, - 138, 89, 89, 106, 89, 98, 111, 95, 40, 40, - - 89, 40, 138, 103, 103, 57, 98, 106, 105, 98, - 40, 40, 103, 102, 111, 40, 105, 138, 104, 102, - 106, 102, 98, 104, 52, 40, 40, 89, 40, 41, - 103, 103, 41, 47, 102, 105, 107, 108, 112, 41, - 102, 166, 166, 41, 41, 104, 102, 112, 102, 107, - 108, 41, 110, 110, 113, 114, 41, 176, 176, 41, - 110, 115, 114, 107, 108, 112, 41, 119, 110, 118, - 41, 41, 116, 117, 18, 119, 117, 113, 17, 110, - 110, 113, 114, 115, 120, 116, 0, 110, 115, 117, - 117, 0, 124, 118, 119, 0, 123, 117, 121, 116, - - 117, 118, 121, 117, 120, 122, 120, 125, 127, 123, - 122, 120, 126, 122, 129, 124, 117, 117, 121, 124, - 118, 129, 121, 123, 128, 121, 126, 125, 127, 121, - 131, 120, 122, 130, 125, 127, 135, 122, 128, 126, - 132, 129, 130, 133, 0, 121, 140, 133, 134, 132, - 0, 128, 136, 131, 140, 134, 0, 131, 148, 136, - 130, 145, 135, 135, 0, 133, 148, 132, 137, 141, - 133, 139, 139, 140, 133, 134, 142, 137, 145, 136, - 141, 145, 144, 137, 141, 148, 149, 145, 145, 147, - 142, 137, 149, 141, 0, 137, 141, 144, 139, 152, - - 147, 146, 0, 142, 137, 145, 150, 141, 145, 144, - 137, 141, 146, 149, 152, 151, 147, 150, 155, 153, - 154, 146, 156, 930, 151, 157, 152, 155, 146, 163, - 0, 163, 163, 150, 163, 154, 151, 171, 157, 146, - 151, 153, 151, 0, 156, 155, 153, 154, 0, 156, - 177, 151, 157, 168, 930, 168, 168, 169, 168, 169, - 169, 171, 169, 151, 171, 173, 178, 173, 173, 179, - 173, 0, 177, 180, 181, 182, 0, 177, 179, 184, - 178, 181, 185, 186, 183, 180, 188, 184, 0, 0, - 187, 182, 262, 181, 185, 169, 179, 187, 178, 191, - - 180, 181, 182, 183, 188, 186, 184, 178, 181, 185, - 186, 183, 189, 188, 190, 197, 190, 187, 189, 262, - 192, 191, 222, 196, 198, 201, 191, 194, 0, 0, - 197, 194, 198, 225, 199, 200, 202, 204, 0, 203, - 201, 190, 197, 202, 189, 189, 192, 192, 194, 196, - 196, 198, 201, 0, 222, 194, 199, 200, 194, 0, - 204, 199, 200, 202, 204, 225, 0, 203, 205, 206, - 207, 203, 0, 208, 209, 194, 195, 209, 210, 0, - 206, 195, 0, 207, 211, 208, 195, 210, 212, 209, - 205, 215, 195, 195, 203, 205, 206, 207, 215, 195, - - 208, 209, 0, 195, 209, 210, 211, 214, 195, 218, - 212, 211, 216, 195, 219, 212, 224, 223, 215, 195, - 195, 213, 224, 216, 213, 219, 213, 227, 226, 214, - 221, 223, 228, 231, 214, 218, 218, 221, 213, 216, - 213, 229, 230, 224, 0, 233, 219, 213, 213, 223, - 226, 213, 219, 213, 231, 226, 230, 221, 223, 227, - 231, 229, 234, 232, 228, 213, 233, 213, 229, 230, - 232, 234, 233, 235, 236, 237, 234, 238, 241, 239, - 245, 242, 240, 0, 0, 241, 242, 244, 236, 234, - 232, 239, 235, 240, 243, 238, 244, 237, 234, 247, - - 235, 236, 237, 245, 238, 241, 239, 245, 249, 240, - 246, 248, 248, 242, 244, 246, 243, 250, 252, 251, - 248, 243, 253, 255, 250, 256, 257, 254, 258, 260, - 253, 247, 261, 264, 257, 259, 0, 246, 248, 248, - 249, 251, 260, 252, 250, 252, 251, 254, 263, 253, - 259, 265, 267, 257, 254, 255, 260, 256, 261, 261, - 258, 269, 259, 266, 270, 264, 268, 266, 265, 269, - 271, 263, 272, 274, 267, 275, 265, 271, 265, 267, - 263, 268, 273, 270, 276, 278, 273, 0, 269, 279, - 266, 270, 277, 268, 272, 265, 285, 271, 263, 272, - - 280, 279, 282, 281, 283, 274, 276, 275, 284, 273, - 284, 276, 281, 280, 277, 282, 279, 278, 286, 277, - 295, 287, 293, 283, 288, 290, 294, 280, 285, 282, - 281, 283, 291, 293, 290, 284, 292, 296, 294, 297, - 299, 300, 286, 298, 295, 286, 287, 295, 287, 293, - 288, 288, 290, 294, 300, 301, 302, 297, 291, 291, - 296, 298, 292, 292, 296, 303, 297, 304, 300, 305, - 298, 306, 299, 307, 311, 308, 310, 312, 0, 309, - 311, 302, 313, 302, 304, 310, 309, 301, 314, 0, - 304, 312, 323, 306, 304, 305, 305, 303, 306, 308, - - 316, 311, 319, 310, 312, 307, 309, 308, 313, 313, - 315, 304, 314, 317, 351, 314, 318, 321, 322, 315, - 325, 317, 320, 316, 323, 318, 308, 316, 319, 319, - 324, 320, 327, 322, 321, 325, 329, 315, 0, 328, - 317, 321, 0, 318, 321, 322, 351, 325, 328, 320, - 327, 331, 0, 0, 324, 341, 356, 324, 329, 327, - 332, 321, 326, 329, 0, 326, 328, 330, 333, 330, - 326, 326, 326, 326, 332, 331, 334, 334, 331, 335, - 326, 336, 341, 333, 335, 330, 0, 332, 356, 326, - 338, 330, 326, 342, 330, 333, 330, 326, 326, 326, - - 326, 334, 338, 334, 334, 336, 337, 339, 336, 337, - 340, 335, 330, 343, 345, 342, 337, 338, 344, 348, - 342, 346, 349, 347, 364, 339, 345, 348, 340, 349, - 350, 387, 0, 337, 339, 0, 337, 340, 347, 343, - 343, 345, 350, 346, 344, 344, 348, 354, 346, 349, - 347, 352, 360, 352, 354, 0, 364, 350, 362, 355, - 357, 358, 352, 387, 365, 360, 359, 358, 359, 398, - 0, 0, 363, 403, 354, 0, 362, 352, 352, 360, - 352, 355, 357, 358, 361, 362, 355, 357, 358, 352, - 359, 365, 366, 359, 358, 359, 369, 361, 363, 363, - - 361, 398, 361, 369, 0, 403, 371, 367, 361, 424, - 372, 361, 370, 367, 366, 373, 380, 367, 371, 366, - 378, 380, 372, 369, 361, 367, 0, 361, 373, 361, - 370, 367, 378, 371, 367, 375, 370, 372, 383, 370, - 367, 424, 373, 376, 367, 379, 383, 378, 380, 384, - 0, 375, 367, 368, 429, 368, 376, 370, 382, 375, - 381, 384, 375, 379, 382, 383, 385, 389, 368, 386, - 376, 368, 379, 368, 389, 368, 384, 386, 375, 368, - 368, 381, 368, 0, 385, 382, 429, 381, 0, 0, - 391, 388, 388, 385, 389, 368, 386, 390, 368, 391, - - 368, 0, 368, 377, 377, 392, 0, 393, 0, 395, - 390, 396, 394, 377, 393, 377, 377, 377, 388, 394, - 377, 395, 391, 392, 390, 397, 391, 392, 377, 399, - 377, 377, 392, 396, 393, 406, 395, 397, 396, 394, - 377, 400, 377, 377, 377, 401, 402, 377, 400, 404, - 392, 404, 397, 405, 408, 399, 399, 406, 409, 402, - 401, 408, 406, 410, 405, 407, 407, 0, 400, 409, - 411, 412, 401, 402, 410, 0, 404, 413, 413, 417, - 405, 408, 0, 411, 414, 409, 415, 417, 416, 419, - 410, 418, 0, 0, 407, 413, 412, 411, 412, 420, - - 419, 415, 413, 418, 413, 413, 417, 414, 420, 415, - 421, 414, 425, 415, 416, 416, 419, 427, 418, 426, - 422, 430, 413, 421, 428, 433, 420, 430, 415, 431, - 425, 422, 432, 422, 442, 434, 435, 421, 422, 425, - 427, 426, 428, 435, 427, 436, 426, 422, 430, 433, - 431, 428, 433, 437, 438, 432, 431, 434, 422, 432, - 422, 423, 434, 435, 439, 440, 442, 437, 441, 423, - 423, 436, 436, 423, 423, 443, 445, 444, 0, 440, - 437, 438, 445, 423, 446, 447, 439, 0, 423, 444, - 451, 439, 440, 449, 441, 441, 423, 423, 443, 451, - - 423, 423, 443, 445, 444, 448, 446, 447, 449, 450, - 452, 446, 447, 448, 453, 0, 450, 451, 455, 454, - 449, 456, 457, 458, 464, 452, 459, 0, 462, 458, - 460, 448, 448, 455, 0, 460, 450, 452, 453, 473, - 448, 453, 454, 464, 457, 455, 454, 456, 456, 457, - 458, 464, 459, 459, 462, 462, 463, 460, 465, 466, - 467, 469, 463, 469, 470, 471, 466, 472, 475, 0, - 469, 473, 471, 470, 476, 467, 465, 474, 479, 478, - 472, 481, 478, 463, 477, 465, 466, 467, 469, 482, - 469, 470, 471, 481, 472, 474, 476, 477, 478, 480, - - 475, 476, 479, 483, 474, 479, 478, 484, 481, 478, - 483, 477, 480, 485, 486, 487, 490, 488, 0, 489, - 492, 482, 488, 0, 0, 489, 480, 486, 491, 493, - 483, 484, 492, 544, 484, 501, 485, 487, 494, 490, - 495, 486, 487, 490, 488, 485, 489, 492, 495, 494, - 491, 493, 496, 0, 499, 491, 493, 500, 501, 503, - 544, 499, 501, 485, 502, 494, 496, 495, 0, 500, - 503, 0, 502, 504, 0, 507, 509, 506, 0, 496, - 497, 499, 0, 0, 500, 497, 503, 497, 505, 506, - 0, 502, 505, 497, 509, 497, 504, 507, 497, 497, - - 504, 510, 507, 509, 506, 497, 497, 497, 516, 511, - 505, 510, 497, 508, 497, 505, 508, 512, 513, 505, - 497, 511, 497, 514, 508, 497, 497, 514, 512, 517, - 515, 517, 497, 510, 516, 516, 511, 515, 510, 518, - 508, 519, 513, 508, 512, 513, 520, 521, 524, 523, - 514, 525, 522, 519, 523, 526, 517, 515, 0, 521, - 522, 520, 530, 526, 528, 518, 518, 531, 519, 525, - 524, 527, 532, 520, 521, 524, 523, 545, 525, 522, - 530, 533, 526, 527, 535, 528, 538, 534, 536, 530, - 531, 528, 535, 537, 531, 538, 533, 541, 527, 534, - - 539, 536, 540, 542, 532, 537, 542, 543, 533, 545, - 546, 535, 547, 538, 534, 536, 540, 0, 548, 549, - 537, 558, 541, 539, 541, 546, 543, 539, 550, 540, - 542, 552, 553, 548, 543, 551, 0, 546, 559, 555, - 557, 550, 554, 549, 547, 548, 549, 551, 558, 554, - 555, 560, 554, 552, 557, 550, 553, 561, 552, 553, - 554, 562, 551, 556, 563, 559, 555, 557, 556, 554, - 564, 565, 566, 567, 569, 564, 554, 565, 0, 554, - 0, 568, 569, 560, 561, 570, 571, 566, 562, 572, - 573, 576, 575, 0, 573, 556, 563, 567, 565, 566, - - 567, 569, 564, 568, 570, 577, 574, 579, 568, 578, - 571, 572, 570, 571, 574, 575, 572, 573, 578, 575, - 581, 583, 580, 576, 587, 582, 0, 583, 577, 579, - 585, 584, 577, 574, 579, 580, 578, 582, 586, 588, - 0, 585, 589, 0, 592, 586, 581, 581, 583, 580, - 595, 600, 582, 584, 590, 589, 587, 585, 584, 590, - 596, 588, 590, 590, 591, 586, 588, 593, 594, 589, - 592, 592, 595, 591, 602, 597, 593, 595, 590, 594, - 598, 590, 596, 600, 604, 601, 590, 596, 597, 590, - 590, 591, 598, 603, 593, 594, 606, 605, 602, 607, - - 608, 602, 597, 601, 613, 609, 604, 598, 610, 608, - 607, 604, 601, 619, 611, 603, 603, 620, 606, 0, - 603, 605, 610, 606, 605, 609, 607, 608, 614, 616, - 612, 613, 609, 617, 618, 610, 611, 612, 620, 615, - 616, 611, 603, 621, 620, 619, 614, 615, 623, 618, - 625, 617, 622, 622, 627, 614, 616, 612, 624, 625, - 617, 618, 628, 626, 629, 0, 615, 621, 630, 633, - 621, 631, 623, 631, 633, 623, 626, 625, 632, 634, - 624, 622, 637, 635, 628, 624, 627, 645, 0, 628, - 626, 638, 630, 634, 636, 630, 629, 635, 631, 638, - - 632, 633, 639, 640, 641, 632, 634, 642, 636, 636, - 635, 641, 643, 644, 637, 650, 636, 650, 638, 645, - 639, 636, 647, 646, 0, 640, 649, 0, 644, 639, - 640, 641, 643, 642, 642, 636, 636, 644, 646, 643, - 644, 648, 650, 651, 647, 659, 648, 653, 652, 647, - 646, 654, 649, 649, 655, 644, 652, 656, 658, 657, - 654, 661, 0, 655, 660, 658, 656, 657, 651, 668, - 651, 662, 653, 648, 653, 652, 0, 659, 654, 661, - 663, 655, 667, 662, 656, 658, 657, 660, 661, 665, - 664, 660, 663, 666, 667, 670, 671, 665, 662, 664, - - 669, 668, 673, 672, 671, 674, 680, 663, 666, 667, - 670, 672, 676, 669, 674, 675, 665, 664, 679, 680, - 666, 676, 670, 671, 681, 673, 675, 669, 678, 673, - 672, 682, 674, 680, 677, 677, 678, 685, 684, 676, - 679, 687, 675, 677, 683, 679, 684, 686, 688, 0, - 681, 681, 690, 685, 682, 678, 691, 683, 682, 688, - 686, 677, 677, 687, 685, 684, 690, 692, 687, 689, - 693, 683, 696, 694, 686, 688, 691, 689, 697, 690, - 695, 696, 0, 691, 703, 698, 700, 702, 699, 692, - 693, 701, 0, 704, 692, 694, 689, 693, 697, 696, - - 694, 699, 695, 698, 700, 697, 701, 695, 703, 702, - 705, 703, 698, 700, 702, 699, 704, 706, 701, 707, - 704, 708, 709, 705, 710, 712, 0, 0, 709, 717, - 711, 707, 713, 716, 708, 706, 718, 705, 711, 719, - 714, 716, 723, 718, 706, 721, 707, 721, 708, 709, - 724, 710, 712, 720, 713, 722, 711, 711, 714, 713, - 716, 717, 719, 718, 722, 711, 719, 714, 720, 724, - 725, 727, 721, 727, 723, 726, 728, 724, 734, 731, - 720, 737, 722, 728, 726, 742, 0, 0, 734, 738, - 725, 731, 740, 750, 0, 0, 742, 725, 727, 737, - - 741, 0, 726, 728, 729, 734, 731, 729, 737, 743, - 738, 729, 742, 740, 729, 748, 738, 744, 741, 740, - 745, 729, 729, 746, 729, 750, 747, 741, 748, 729, - 749, 729, 743, 752, 729, 747, 743, 749, 729, 746, - 755, 729, 748, 744, 744, 754, 745, 745, 729, 729, - 746, 729, 758, 747, 754, 752, 753, 749, 751, 751, - 752, 751, 753, 755, 751, 756, 757, 755, 756, 751, - 759, 761, 754, 761, 758, 751, 751, 762, 759, 758, - 764, 0, 757, 753, 751, 751, 751, 760, 751, 757, - 763, 751, 756, 757, 765, 763, 751, 759, 761, 760, - - 764, 762, 751, 751, 762, 766, 767, 764, 768, 757, - 0, 0, 770, 772, 760, 769, 771, 766, 777, 773, - 765, 765, 763, 775, 776, 777, 774, 0, 767, 787, - 779, 775, 766, 767, 768, 768, 770, 769, 771, 770, - 772, 774, 769, 771, 773, 777, 773, 776, 778, 779, - 775, 776, 780, 774, 781, 782, 778, 779, 783, 785, - 784, 787, 786, 789, 793, 0, 781, 786, 782, 784, - 788, 790, 792, 794, 785, 778, 790, 796, 780, 780, - 795, 781, 782, 798, 783, 783, 785, 784, 797, 786, - 789, 800, 788, 801, 792, 799, 793, 788, 802, 792, - - 807, 0, 795, 790, 798, 794, 805, 795, 804, 796, - 798, 808, 797, 806, 799, 797, 810, 802, 800, 803, - 801, 806, 799, 809, 811, 802, 805, 807, 803, 808, - 804, 812, 0, 805, 814, 804, 815, 817, 808, 812, - 806, 816, 809, 810, 816, 819, 803, 818, 820, 821, - 809, 822, 814, 822, 815, 823, 811, 824, 812, 817, - 826, 814, 821, 815, 817, 818, 0, 827, 816, 819, - 820, 824, 819, 823, 818, 820, 821, 829, 822, 827, - 825, 828, 823, 834, 824, 825, 826, 826, 830, 828, - 831, 830, 0, 833, 827, 829, 835, 836, 831, 837, - - 838, 0, 835, 0, 829, 837, 839, 838, 828, 844, - 834, 840, 825, 839, 831, 830, 840, 831, 833, 836, - 833, 841, 842, 835, 836, 831, 837, 838, 841, 846, - 843, 847, 844, 839, 843, 845, 844, 846, 840, 849, - 842, 848, 850, 852, 845, 851, 0, 853, 841, 842, - 850, 854, 855, 857, 849, 864, 846, 843, 851, 848, - 853, 865, 845, 847, 852, 859, 849, 867, 848, 850, - 852, 857, 851, 854, 853, 856, 858, 870, 854, 855, - 857, 860, 856, 858, 859, 861, 862, 864, 860, 863, - 861, 866, 859, 865, 862, 871, 863, 868, 869, 867, - - 878, 875, 856, 858, 866, 869, 872, 873, 860, 870, - 868, 874, 861, 862, 876, 873, 863, 877, 866, 874, - 876, 879, 880, 875, 868, 869, 874, 871, 875, 872, - 882, 880, 878, 872, 873, 0, 881, 884, 874, 886, - 883, 876, 885, 877, 877, 879, 874, 883, 879, 880, - 881, 885, 887, 888, 889, 0, 890, 887, 927, 0, - 0, 886, 882, 881, 884, 888, 886, 883, 891, 885, - 893, 892, 896, 891, 899, 896, 897, 889, 892, 894, - 888, 889, 890, 890, 887, 901, 900, 894, 899, 897, - 927, 901, 893, 900, 904, 891, 905, 893, 892, 896, - - 0, 899, 903, 897, 906, 0, 894, 907, 905, 907, - 908, 0, 901, 900, 902, 0, 902, 904, 909, 0, - 902, 904, 902, 905, 911, 0, 910, 902, 903, 903, - 909, 906, 902, 908, 907, 912, 0, 908, 902, 910, - 914, 902, 924, 902, 915, 909, 911, 902, 912, 902, - 913, 911, 916, 910, 902, 913, 917, 915, 914, 902, - 924, 919, 912, 918, 916, 920, 928, 914, 917, 924, - 929, 915, 922, 918, 925, 916, 919, 931, 922, 916, - 921, 923, 913, 917, 926, 918, 953, 920, 919, 947, - 918, 916, 920, 921, 923, 925, 933, 929, 928, 922, - - 918, 925, 936, 934, 933, 932, 926, 921, 923, 931, - 932, 926, 934, 953, 937, 938, 939, 936, 940, 0, - 942, 947, 943, 933, 0, 0, 941, 0, 938, 936, - 934, 939, 932, 935, 0, 943, 937, 0, 935, 942, - 935, 937, 938, 939, 940, 940, 935, 942, 941, 943, - 946, 935, 935, 941, 944, 945, 949, 950, 935, 935, - 935, 946, 944, 945, 948, 935, 950, 935, 957, 951, - 0, 949, 954, 935, 958, 962, 961, 946, 935, 935, - 951, 944, 945, 949, 950, 935, 948, 955, 952, 960, - 961, 948, 0, 969, 955, 954, 951, 952, 958, 954, - - 957, 958, 959, 961, 963, 964, 966, 962, 968, 967, - 959, 960, 970, 964, 955, 952, 960, 0, 972, 968, - 971, 0, 981, 998, 966, 969, 963, 967, 971, 959, - 970, 963, 964, 966, 973, 968, 967, 974, 976, 970, - 972, 973, 975, 985, 977, 972, 979, 971, 978, 975, - 974, 987, 983, 976, 981, 998, 985, 0, 980, 987, - 990, 973, 977, 983, 974, 976, 978, 979, 980, 975, - 985, 977, 990, 979, 986, 978, 988, 989, 987, 983, - 991, 986, 996, 992, 995, 980, 989, 990, 997, 988, - 1002, 1007, 0, 1005, 999, 1002, 1012, 0, 1007, 1014, - - 996, 986, 991, 988, 989, 992, 995, 991, 999, 996, - 992, 995, 1001, 1006, 997, 997, 1004, 1005, 1007, 1004, - 1005, 999, 1002, 1001, 1008, 1009, 1006, 1010, 1012, 1013, - 0, 1014, 1011, 1015, 1009, 1008, 1013, 1017, 1019, 1001, - 1006, 1010, 1004, 1004, 1011, 1015, 1004, 1016, 1021, 1020, - 1017, 1008, 1009, 0, 1010, 1020, 1013, 1022, 1024, 1011, - 1015, 1023, 1019, 1026, 1017, 1019, 1028, 1025, 1031, 1016, - 1021, 1029, 1023, 0, 1016, 1021, 1020, 1032, 1026, 1022, - 1024, 1030, 1029, 1033, 1022, 1024, 1034, 1028, 1023, 1025, - 1026, 1035, 1040, 1028, 1025, 1034, 1036, 1037, 1029, 1038, - - 1031, 1033, 1030, 1041, 1032, 1039, 1037, 1038, 1030, 1042, - 1033, 1043, 1039, 1034, 1047, 1035, 1040, 1041, 1035, 1040, - 1044, 1051, 1036, 1036, 1037, 1049, 1038, 1045, 1046, 1050, - 1041, 1053, 1039, 1054, 1049, 1052, 1050, 1058, 0, 1056, - 0, 1042, 1044, 1043, 1059, 1055, 1047, 1044, 1056, 1045, - 1046, 1054, 1049, 1051, 1045, 1046, 1050, 1052, 1053, 1057, - 1054, 1058, 1052, 1055, 1058, 1060, 1056, 1057, 1059, 1061, - 1062, 1059, 1055, 1063, 1064, 1065, 1066, 1067, 0, 1062, - 0, 1060, 1064, 1068, 1069, 1070, 1057, 1072, 1063, 1067, - 1071, 1061, 1060, 1070, 1080, 1075, 1061, 1062, 0, 0, - - 1063, 1064, 1072, 1071, 1067, 1068, 1074, 1065, 1066, 1086, - 1068, 1069, 1070, 1075, 1072, 1074, 1076, 1071, 1077, 1079, - 1077, 1080, 1075, 1081, 1076, 1083, 1085, 1079, 1084, 1087, - 1081, 1086, 1088, 1074, 1090, 1089, 1086, 1091, 1083, 0, - 1084, 1085, 1089, 1076, 1096, 1077, 1079, 1087, 1093, 1092, - 1081, 1095, 1083, 1085, 1094, 1084, 1087, 1096, 1098, 1088, - 1092, 1097, 1089, 1101, 1100, 1099, 1090, 0, 1161, 1091, - 1093, 1096, 1100, 1095, 1097, 1093, 1092, 1099, 1095, 1094, - 1098, 1094, 1102, 1101, 1105, 1098, 1106, 1103, 1097, 1107, - 1101, 1100, 1099, 1108, 1102, 1103, 1109, 1110, 1107, 1106, - - 1161, 1116, 0, 1113, 1110, 1108, 0, 1114, 1118, 1102, - 0, 1105, 0, 1106, 1103, 1115, 1107, 1109, 1111, 1117, - 1108, 1118, 0, 1109, 1110, 1119, 1113, 1111, 1116, 1111, - 1113, 1123, 1111, 1114, 1114, 1118, 1120, 1115, 1121, 1117, - 1111, 0, 1115, 1122, 1120, 1111, 1117, 1121, 0, 1119, - 1126, 1125, 1119, 1123, 1111, 1128, 1111, 1131, 1123, 1111, - 1124, 1122, 1127, 1120, 1132, 1121, 1125, 1136, 1124, 0, - 1122, 1128, 1126, 1129, 1133, 1127, 1134, 1126, 1125, 1137, - 1135, 1129, 1128, 1134, 1131, 0, 1132, 1124, 0, 1127, - 1136, 1132, 1138, 1139, 1136, 1141, 1133, 1137, 1143, 1142, - - 1129, 1133, 1135, 1134, 1138, 1139, 1137, 1135, 1140, 1144, - 1141, 1142, 1148, 1145, 0, 1149, 1140, 1146, 1143, 1138, - 1139, 1145, 1141, 1146, 1144, 1143, 1142, 1149, 1147, 1152, - 0, 1150, 0, 1148, 1151, 1140, 1144, 1147, 1150, 1148, - 1145, 1151, 1149, 1154, 1146, 1153, 1156, 1152, 1155, 0, - 1157, 1154, 1157, 1158, 1156, 1147, 1152, 1153, 1150, 1159, - 1164, 1151, 1162, 1155, 1165, 1158, 1159, 1166, 1163, 1168, - 1154, 1165, 1153, 1156, 1162, 1155, 1167, 1157, 1166, 1164, - 1158, 1163, 1170, 1169, 1168, 1172, 1159, 1164, 1169, 1162, - 1170, 1165, 1171, 1175, 1166, 1163, 1168, 1173, 1167, 1172, - - 1176, 0, 1177, 1167, 1178, 1171, 1181, 1175, 0, 1170, - 0, 0, 1172, 1179, 1182, 1169, 1201, 1201, 1176, 1171, - 1175, 1180, 1183, 1173, 1173, 1174, 0, 1176, 1184, 1174, - 1178, 1178, 1174, 1174, 1177, 1179, 1182, 1174, 1181, 1180, - 1179, 1182, 1186, 1174, 1183, 1201, 1188, 1174, 1180, 1183, - 1192, 1174, 1174, 1188, 1184, 1184, 1174, 1185, 1190, 1174, - 1174, 0, 0, 1185, 1174, 1187, 1189, 1187, 1186, 1186, - 1174, 1191, 1192, 1188, 1174, 1189, 1190, 1192, 1191, 1194, - 1195, 1196, 1193, 1197, 1185, 1190, 0, 0, 1194, 1187, - 1200, 1198, 1187, 1189, 1187, 1193, 0, 0, 1191, 0, - - 1204, 0, 1206, 1208, 1202, 1197, 1194, 1207, 1208, 1193, - 1197, 1206, 1195, 1196, 1198, 1217, 1200, 1200, 1198, 1199, - 1202, 1205, 1209, 1204, 1199, 1207, 1199, 1204, 1199, 1206, - 1199, 1202, 1211, 1205, 1207, 1208, 1210, 1199, 1213, 1212, - 1209, 1210, 1214, 0, 1218, 1216, 1199, 1217, 1205, 1209, - 1214, 1199, 1212, 1199, 1211, 1199, 1213, 1199, 1216, 1211, - 1215, 1219, 1220, 1210, 1221, 1213, 1212, 1223, 1215, 1214, - 1218, 1218, 1216, 1224, 1225, 1220, 1225, 1222, 1227, 1229, - 1219, 1226, 1224, 1228, 1230, 1223, 1221, 1215, 1219, 1220, - 1222, 1221, 1232, 1233, 1223, 1228, 1235, 1236, 0, 1234, - - 1224, 1225, 1238, 1226, 1222, 1227, 1229, 1234, 1226, 1230, - 1228, 1230, 1239, 1240, 1235, 1233, 1232, 1243, 1237, 1232, - 1233, 1241, 1242, 1235, 1236, 1237, 1234, 1241, 1242, 1238, - 1244, 1245, 1247, 1248, 1246, 1240, 0, 1244, 1239, 1239, - 1240, 1246, 1249, 1250, 1243, 1237, 1254, 1252, 1241, 1242, - 1253, 1248, 1250, 1255, 1247, 1245, 1256, 1244, 1245, 1247, - 1248, 1246, 1253, 1257, 1258, 1259, 1255, 1249, 1254, 1249, - 1250, 1252, 1260, 1254, 1252, 1261, 1262, 1253, 1256, 1263, - 1255, 1266, 1257, 1256, 1264, 1268, 1258, 1265, 1263, 1259, - 1257, 1258, 1259, 1269, 1260, 1266, 1270, 1271, 1262, 1260, - - 1274, 1261, 1261, 1262, 1272, 1264, 1263, 1265, 1266, 1275, - 1281, 1264, 1273, 1282, 1265, 1285, 1274, 1268, 1270, 1276, - 1273, 1278, 1272, 1270, 0, 1269, 1276, 1274, 1279, 1271, - 1280, 1272, 1283, 1278, 1280, 1279, 1275, 1286, 0, 1273, - 0, 1290, 1281, 1286, 1287, 1282, 1276, 1285, 1278, 1288, - 1286, 1287, 1289, 1283, 1290, 1279, 1288, 1280, 1292, 1283, - 1291, 1294, 1297, 1294, 1286, 1293, 1295, 1289, 1290, 1291, - 1286, 1287, 1293, 1296, 1298, 1295, 1288, 1299, 1298, 1289, - 1304, 1302, 1301, 1305, 1292, 1292, 1302, 1291, 1294, 1297, - 1301, 0, 1293, 1295, 1303, 1296, 1307, 1314, 1304, 1299, - - 1296, 1298, 1305, 1303, 1299, 1306, 0, 1304, 1307, 1301, - 1305, 1309, 1308, 1302, 1309, 1308, 1310, 0, 1306, 1311, - 1316, 1303, 1312, 1307, 1308, 1315, 1317, 1319, 1319, 1314, - 0, 1317, 1306, 1309, 1310, 1312, 1316, 1318, 1309, 1308, - 1321, 1309, 1308, 1310, 1311, 1318, 1311, 1316, 1315, 1312, - 1320, 1322, 1315, 1324, 1319, 1335, 1323, 1325, 1317, 1320, - 1324, 1326, 1321, 1328, 1318, 1323, 1329, 1321, 1326, 1331, - 0, 1332, 1330, 1322, 1339, 1329, 1328, 1320, 1322, 1325, - 1324, 1330, 1333, 1323, 1325, 1336, 1339, 1335, 1326, 1334, - 1328, 1333, 1338, 1329, 1332, 1331, 1331, 1334, 1332, 1330, - - 1336, 1339, 1337, 1340, 1342, 1338, 1341, 1343, 0, 1333, - 1337, 1345, 1336, 1344, 1341, 1340, 1334, 1347, 1346, 1338, - 1345, 1349, 1352, 1353, 1351, 1348, 1342, 1343, 0, 1337, - 1340, 1342, 1360, 1341, 1343, 1344, 1346, 1348, 1345, 1349, - 1344, 1355, 1350, 1347, 1347, 1346, 1354, 1361, 1349, 1350, - 1351, 1351, 1348, 1356, 1352, 1353, 1357, 1358, 1362, 1354, - 1359, 0, 1363, 1358, 1360, 1364, 1366, 1357, 1355, 1350, - 1370, 1367, 1369, 1354, 1356, 1374, 0, 1368, 0, 1361, - 1356, 1369, 1359, 1357, 1358, 1370, 1373, 1359, 1363, 1363, - 1362, 1364, 1364, 1366, 1367, 1368, 1371, 1370, 1367, 1369, - - 1372, 1374, 1374, 1375, 1368, 1376, 1373, 1377, 1378, 1371, - 1375, 1379, 1372, 1373, 1383, 1380, 1391, 1381, 1382, 1379, - 1380, 1378, 1381, 1371, 1376, 1382, 1386, 1372, 1384, 1377, - 1375, 1385, 1376, 1394, 1377, 1378, 1384, 1387, 1379, 1385, - 1383, 1383, 1388, 1390, 1386, 1382, 1392, 1380, 1391, 1381, - 1388, 1396, 1390, 1386, 1389, 1384, 1393, 1393, 1385, 1387, - 1397, 1389, 1405, 1395, 1387, 1394, 1398, 1399, 1392, 1388, - 1390, 1395, 1396, 1392, 1398, 1399, 1400, 1401, 1396, 1404, - 1403, 1389, 1402, 1393, 1400, 1401, 1403, 1406, 1405, 1405, - 1395, 1404, 1397, 1398, 1399, 1402, 1408, 1407, 1409, 1410, - - 1413, 0, 1412, 1400, 1401, 1411, 1404, 1403, 1414, 1402, - 1417, 1406, 1407, 1415, 1406, 0, 1412, 1415, 1413, 1417, - 1418, 1410, 1414, 1408, 1407, 1409, 1410, 1413, 1411, 1412, - 1415, 1419, 1411, 1422, 1420, 1414, 1424, 1417, 1415, 1421, - 1415, 1420, 1418, 1419, 1415, 1423, 1428, 1418, 1426, 1427, - 1421, 1425, 1430, 1433, 1429, 1431, 1434, 1415, 1419, 1430, - 1422, 1420, 1426, 1425, 1431, 1436, 1421, 1423, 1424, 1428, - 1440, 1427, 1423, 1428, 1436, 1426, 1427, 1429, 1425, 1430, - 1432, 1429, 1431, 1434, 1438, 1433, 1439, 1432, 1441, 1444, - 1438, 1442, 1436, 0, 1447, 1446, 1440, 1440, 1442, 1448, - - 1451, 1449, 1452, 0, 1454, 1453, 0, 1432, 1439, 1452, - 1448, 1438, 1449, 1439, 1458, 0, 1444, 1460, 1442, 1446, - 1441, 1447, 1446, 1453, 1451, 1455, 1448, 1451, 1449, 1452, - 1454, 1454, 1453, 1456, 1457, 1459, 1458, 1455, 1461, 1456, - 1462, 1458, 1457, 1460, 1460, 1463, 1467, 1465, 1459, 1462, - 1466, 1464, 1455, 1464, 1465, 1468, 1461, 1463, 1469, 1467, - 1456, 1457, 1459, 1470, 1468, 1461, 1471, 1462, 1472, 0, - 1474, 1476, 1463, 1467, 1465, 1470, 1466, 1466, 1464, 1473, - 1469, 1477, 1468, 1475, 1478, 1469, 1473, 1476, 1475, 0, - 1470, 1472, 1478, 1471, 1479, 1472, 1474, 1474, 1476, 1481, - - 1483, 1482, 1484, 1487, 1477, 1487, 1473, 1486, 1477, 1483, - 1475, 1478, 1482, 1488, 1489, 1484, 1479, 1485, 1485, 1492, - 1486, 1479, 0, 0, 1490, 1485, 1481, 1483, 1482, 1484, - 1487, 1490, 1493, 1494, 1486, 1491, 1489, 1498, 1496, 1488, - 1488, 1489, 1491, 0, 1485, 1485, 1492, 1495, 1497, 1499, - 1493, 1490, 1500, 1502, 1495, 1494, 1499, 0, 1503, 1493, - 1494, 1505, 1491, 1496, 1504, 1496, 1502, 1507, 1508, 1498, - 1497, 1508, 1504, 1509, 1495, 1497, 1499, 1510, 1512, 1511, - 1502, 1513, 1505, 1514, 1500, 1503, 1515, 1512, 1505, 1507, - 1518, 1504, 1511, 1513, 1507, 1508, 1524, 1518, 1521, 1509, - - 1509, 1517, 1516, 1510, 1510, 1512, 1511, 1514, 1513, 1520, - 1514, 1516, 1515, 1515, 1524, 1519, 1517, 1518, 1519, 1522, - 1521, 1528, 1525, 1524, 1526, 1521, 1526, 1529, 1517, 1516, - 1519, 1527, 1530, 1534, 1531, 1522, 0, 0, 1541, 1519, - 1532, 1520, 1519, 1522, 1525, 1519, 1522, 1533, 1528, 1525, - 1535, 1526, 1540, 1542, 1536, 1527, 1531, 1519, 1527, 1529, - 1537, 1531, 1522, 1538, 1530, 1534, 1532, 1532, 1536, 1537, - 1541, 1538, 1535, 1533, 1533, 1539, 1540, 1535, 1543, 1540, - 1544, 1536, 1539, 1547, 1545, 1542, 1546, 1537, 1545, 1549, - 1538, 1552, 1548, 1553, 1550, 0, 1551, 0, 1549, 0, - - 1543, 1550, 1539, 1551, 1552, 1543, 1553, 1557, 1546, 1554, - 1547, 1545, 1544, 1546, 1548, 1555, 1549, 1561, 1552, 1548, - 1553, 1550, 1554, 1551, 1555, 1556, 1558, 1556, 1562, 1559, - 1557, 1563, 1561, 1564, 1557, 1571, 1554, 1559, 0, 1565, - 1567, 1568, 1555, 1562, 1561, 1563, 1565, 1567, 1566, 0, - 1573, 1558, 1556, 1558, 1568, 1562, 1559, 1569, 1563, 1566, - 1575, 1574, 1571, 1569, 1572, 1564, 1565, 1567, 1568, 1576, - 1577, 1572, 1573, 1581, 1580, 1566, 1574, 1573, 1582, 1578, - 1579, 1576, 1578, 1577, 1569, 1581, 1575, 1575, 1574, 1579, - 1583, 1572, 1580, 1583, 1589, 1590, 1576, 1577, 1582, 1584, - - 1581, 1580, 1591, 1595, 1586, 1582, 1578, 1579, 1583, 1586, - 1584, 1588, 1592, 1588, 1593, 0, 1586, 1583, 1589, 1594, - 1583, 1589, 1590, 1593, 1597, 1598, 1584, 1592, 1596, 1591, - 1595, 1586, 1597, 1601, 1599, 1602, 1586, 1600, 1588, 1592, - 1603, 1593, 1596, 1594, 1601, 1600, 1594, 1598, 1603, 1607, - 1605, 1597, 1598, 1602, 1604, 1596, 1599, 1604, 1606, 1608, - 1601, 1599, 1602, 0, 1600, 1609, 1608, 1603, 1605, 1610, - 1611, 1612, 1604, 1613, 0, 1618, 1607, 1605, 1610, 1609, - 1617, 1604, 1612, 1611, 1604, 1616, 1608, 1616, 1613, 1617, - 1606, 1620, 1609, 1619, 1621, 1624, 1610, 1611, 1612, 1622, - - 1613, 1618, 1618, 0, 1619, 1623, 1625, 1617, 1623, 1620, - 1627, 0, 1616, 1622, 1630, 1625, 1621, 1624, 1620, 1627, - 1619, 1621, 1624, 1623, 1626, 1622, 1622, 1630, 1633, 1628, - 1626, 1631, 1623, 1625, 1628, 1623, 1634, 1627, 1635, 1632, - 1622, 1630, 1636, 1631, 1632, 1637, 1639, 1635, 1638, 1642, - 1633, 1626, 1640, 1644, 1643, 1633, 1642, 1645, 1631, 1647, - 0, 1628, 0, 1649, 0, 1635, 1632, 1643, 1634, 1636, - 1638, 1645, 1659, 1640, 1646, 1638, 1642, 1637, 1639, 1640, - 1646, 1643, 1649, 1653, 1645, 1644, 1651, 1652, 1654, 1655, - 1649, 1647, 1657, 1659, 1651, 1652, 1658, 1656, 1646, 1659, - - 1660, 1646, 1653, 1655, 1661, 1657, 1654, 1646, 1662, 1658, - 1653, 1656, 1663, 1651, 1652, 1654, 1655, 1665, 1664, 1657, - 1659, 1666, 1662, 1658, 1656, 1664, 1665, 1667, 1668, 1666, - 1669, 1674, 1660, 1670, 1672, 1662, 1661, 0, 1670, 1663, - 1671, 1676, 1668, 1672, 1665, 1664, 1675, 1677, 1666, 1678, - 1679, 1671, 1680, 1675, 1667, 1668, 1685, 1689, 1674, 1681, - 1670, 1672, 1669, 1681, 1676, 1683, 1684, 1671, 1676, 1677, - 1680, 1678, 1679, 1675, 1677, 1687, 1678, 1679, 1684, 1680, - 1683, 1686, 1692, 1685, 1689, 1690, 1681, 1688, 1693, 1686, - 1687, 1691, 1683, 1684, 1696, 1688, 1695, 1692, 1690, 1697, - - 0, 1696, 1687, 1693, 1695, 1698, 1700, 1699, 1686, 1692, - 1701, 1691, 1690, 1703, 1688, 1693, 1699, 1702, 1691, 0, - 1698, 1696, 1707, 1695, 1705, 1706, 1708, 1700, 0, 1712, - 1709, 1697, 1698, 1700, 1699, 1710, 1712, 1701, 0, 1711, - 1703, 1702, 1713, 1706, 1702, 1709, 1705, 1713, 1716, 1714, - 1715, 1705, 1706, 1708, 1707, 1718, 1712, 1709, 1714, 1715, - 1710, 1717, 1710, 1711, 1719, 1721, 1711, 1723, 1720, 1713, - 1716, 1722, 1727, 1718, 1723, 1716, 1714, 1715, 1724, 1719, - 1720, 1725, 1718, 1717, 1722, 1724, 1728, 1721, 1717, 1722, - 1726, 1719, 1721, 0, 1723, 1720, 1731, 1738, 1722, 1727, - - 1724, 1729, 1726, 1725, 1731, 1724, 1732, 1729, 1725, 1733, - 1735, 1722, 1724, 1737, 1732, 1734, 1739, 1726, 1728, 1736, - 1733, 1736, 1734, 1731, 1738, 1741, 1745, 1740, 1729, 1742, - 1747, 1750, 1736, 1732, 1740, 1735, 1733, 1735, 1743, 1737, - 1737, 1744, 1734, 1739, 1743, 0, 1736, 1744, 1736, 1746, - 1748, 1751, 1741, 1745, 1740, 1742, 1742, 1752, 1754, 1753, - 1751, 1753, 1747, 1750, 1755, 1743, 1756, 1758, 1744, 1759, - 1757, 1764, 1746, 1756, 1748, 0, 1746, 1748, 1751, 1761, - 1763, 1759, 1754, 1762, 1760, 1754, 1753, 0, 1766, 1752, - 1760, 1755, 1757, 1756, 1758, 1766, 1759, 1757, 1765, 1765, - - 1765, 1761, 1763, 1764, 1769, 1765, 1761, 1763, 1767, 1762, - 1762, 1760, 1768, 1765, 1770, 1766, 1773, 1767, 1772, 1768, - 1775, 1770, 1774, 1772, 1776, 1765, 1765, 1765, 1778, 1773, - 1777, 1780, 1765, 0, 1774, 1767, 1769, 1779, 1780, 1768, - 1776, 1770, 1777, 1773, 1782, 1775, 1781, 1775, 1784, 1774, - 1772, 1776, 1781, 1783, 1783, 1779, 1785, 1777, 1780, 1787, - 1778, 1786, 1788, 1785, 1779, 1789, 1786, 1792, 1793, 1794, - 1793, 1782, 1789, 1781, 1784, 1784, 1797, 1798, 1799, 1796, - 1783, 1801, 1797, 1785, 1800, 1787, 1787, 1794, 1786, 1788, - 1800, 1810, 1789, 1801, 1792, 1793, 1794, 1796, 1802, 1803, - - 1804, 1804, 1805, 1797, 1807, 1799, 1796, 1811, 1801, 1798, - 1809, 1800, 1806, 1806, 1811, 1807, 1812, 1803, 1802, 1813, - 1814, 1815, 1816, 1810, 0, 1802, 1803, 1804, 1805, 1805, - 1819, 1807, 1809, 1818, 1811, 1817, 1812, 1809, 1819, 1806, - 1818, 1820, 1821, 1812, 1816, 1822, 1823, 1823, 1815, 1816, - 1824, 1813, 1814, 1817, 1822, 1825, 1820, 1819, 1826, 1829, - 1818, 1833, 1817, 0, 1827, 1832, 1821, 1828, 1820, 1821, - 1832, 1827, 1822, 1823, 1831, 1829, 1824, 1824, 1834, 1828, - 1839, 1831, 1829, 1833, 1836, 1835, 1829, 1825, 1833, 1838, - 1826, 1827, 1832, 1835, 1828, 1841, 1836, 1838, 1840, 1842, - - 1843, 1831, 1829, 1839, 1844, 1834, 1845, 1839, 1846, 1844, - 1848, 1836, 1835, 1841, 1846, 1847, 1838, 1849, 1848, 1840, - 1844, 1852, 1841, 1843, 1854, 1840, 1842, 1843, 1847, 1855, - 1859, 1844, 1856, 1845, 1850, 1846, 1844, 1848, 1851, 1849, - 1853, 1850, 1847, 1857, 1849, 1851, 1854, 1861, 1859, 1862, - 1864, 1854, 1853, 1852, 1861, 1860, 1855, 1859, 1856, 1856, - 1860, 1850, 1866, 1865, 1868, 1851, 1857, 1853, 1865, 1872, - 1857, 1860, 1869, 1869, 1861, 1870, 1862, 1864, 1871, 1877, - 1875, 1877, 1860, 1874, 1878, 1876, 1879, 1860, 1880, 0, - 0, 1879, 1881, 1871, 1866, 1865, 1868, 1870, 1874, 1869, - - 1876, 1872, 1870, 1875, 1886, 1871, 1877, 1875, 1882, 1884, - 1874, 1889, 1876, 1879, 1881, 1888, 1878, 1885, 1890, 1881, - 1880, 1891, 1892, 1882, 1884, 1885, 1886, 1893, 1895, 1892, - 1894, 1886, 0, 1896, 1897, 1882, 1884, 1889, 1889, 1888, - 1899, 1901, 1888, 1902, 1885, 1890, 1903, 1907, 1891, 1892, - 1895, 1894, 1897, 1908, 1896, 1895, 1905, 1894, 1902, 1893, - 1896, 1897, 1899, 1906, 1909, 1901, 1910, 1899, 1901, 1907, - 1902, 1905, 1903, 1903, 1907, 1911, 1912, 1913, 1906, 1914, - 1908, 1915, 1909, 1905, 1917, 1916, 1914, 1918, 1910, 1920, - 1906, 1909, 1917, 1910, 1916, 1919, 1921, 1911, 1922, 1915, - - 1912, 0, 1911, 1912, 1913, 1921, 1914, 1924, 1915, 1923, - 1918, 1917, 1916, 1926, 1918, 1928, 1922, 1919, 1923, 1927, - 1924, 1920, 1919, 1921, 1926, 1922, 1930, 1931, 1927, 1932, - 1929, 1938, 1933, 1928, 1924, 1935, 1923, 1929, 1933, 1926, - 1926, 1934, 1928, 1940, 1932, 1931, 1927, 1946, 1944, 1935, - 1941, 1926, 1930, 1930, 1931, 1942, 1932, 1929, 1938, 1933, - 1944, 1941, 1935, 1934, 1947, 1945, 1942, 1940, 1934, 1948, - 1940, 1950, 1949, 0, 1947, 1944, 1953, 1941, 1945, 1946, - 1954, 1951, 1942, 1956, 1957, 1958, 1962, 1956, 1960, 1959, - 0, 1947, 1945, 1960, 1961, 1948, 1948, 1949, 1950, 1949, - - 1951, 1961, 1963, 1953, 1965, 1957, 1954, 1954, 1951, 1959, - 1956, 1957, 1962, 1962, 1967, 1960, 1959, 1958, 1964, 1965, - 1963, 1961, 1966, 1968, 1964, 1973, 1967, 1969, 1969, 1963, - 1970, 1965, 1973, 1975, 1971, 1974, 1976, 1966, 1968, 1974, - 1979, 1967, 1970, 1980, 1977, 1964, 1983, 1971, 1975, 1966, - 1968, 1978, 1973, 1977, 1969, 1971, 1984, 1970, 1978, 1981, - 1975, 1971, 1974, 1976, 1979, 1980, 1981, 1979, 1983, 1986, - 1980, 1977, 1987, 1983, 1971, 1985, 1989, 1992, 1978, 1991, - 1994, 1984, 1993, 1984, 1985, 1995, 1981, 0, 1991, 1997, - 1999, 1986, 1987, 1995, 1989, 1992, 1986, 1993, 1998, 1987, - - 2000, 2000, 1985, 1989, 1992, 1994, 1991, 1994, 2001, 1993, - 2003, 1998, 1995, 2002, 1997, 2005, 1997, 1999, 2007, 2004, - 2009, 2006, 2008, 2018, 2005, 1998, 2010, 2000, 2006, 0, - 2001, 2012, 2003, 2014, 2009, 2001, 2015, 2003, 2002, 2012, - 2002, 2004, 2005, 2013, 2008, 2010, 2004, 2009, 2006, 2008, - 2007, 2019, 2016, 2010, 2017, 2018, 2013, 2020, 2012, 2021, - 2014, 2017, 2015, 2015, 2016, 2023, 2022, 0, 2021, 2025, - 2013, 2026, 2024, 2019, 2022, 0, 2027, 2033, 2019, 2016, - 2028, 2017, 2020, 2033, 2020, 2022, 2021, 2024, 2032, 0, - 2039, 2029, 2023, 2022, 2027, 2025, 2025, 2026, 2026, 2024, - - 2029, 2022, 2028, 2027, 2033, 2031, 2034, 2028, 2031, 2035, - 2036, 2034, 2039, 2032, 2038, 2032, 2042, 2039, 2029, 2043, - 2040, 2044, 2045, 2031, 2046, 2036, 2043, 2035, 2068, 2038, - 2042, 2047, 2031, 2046, 2048, 2031, 2035, 2036, 2034, 2044, - 2047, 2038, 2040, 2042, 2049, 2048, 2043, 2040, 2044, 2045, - 2050, 2046, 2052, 2053, 2055, 2068, 2054, 2049, 2047, 0, - 2056, 2048, 2050, 2054, 2062, 2060, 2057, 2052, 2053, 2063, - 2066, 2049, 2066, 2063, 2070, 2077, 2055, 2050, 2060, 2052, - 2053, 2055, 2056, 2054, 2057, 2062, 2060, 2056, 2064, 2065, - 2067, 2062, 2060, 2057, 2069, 2071, 2063, 2066, 2065, 0, - - 2064, 2070, 2072, 2071, 2073, 2060, 2074, 2077, 2067, 2075, - 2078, 2079, 2069, 2076, 2075, 2064, 2065, 2067, 2076, 2084, - 2074, 2069, 2071, 2081, 2080, 2072, 2073, 2085, 0, 2072, - 2081, 2073, 2087, 2074, 2088, 2079, 2075, 2086, 2079, 2090, - 2091, 2085, 2078, 2080, 0, 2076, 2084, 2089, 2090, 2092, - 2081, 2080, 2085, 2085, 2085, 2086, 2093, 2094, 2095, 2087, - 2088, 2088, 2089, 2096, 2086, 2098, 2090, 2100, 2085, 2104, - 2099, 2092, 2091, 2103, 2089, 2103, 2092, 2099, 2109, 2085, - 2095, 2107, 2093, 2093, 2094, 2095, 2101, 2106, 2098, 2109, - 2100, 2104, 2098, 2101, 2100, 2096, 2104, 2099, 2105, 2106, - - 2103, 2108, 2105, 2107, 2110, 2109, 2113, 2111, 2107, 2114, - 2108, 2110, 2112, 2101, 2106, 2115, 2116, 2112, 2117, 2117, - 2119, 2118, 0, 2122, 2121, 2105, 0, 2115, 2108, 2111, - 2118, 2110, 2114, 2113, 2111, 2119, 2114, 2122, 2116, 2112, - 2124, 2120, 2115, 2116, 2123, 2117, 2121, 2119, 2118, 2120, - 2122, 2121, 2127, 2123, 2126, 2128, 2130, 2129, 2131, 2130, - 2127, 2129, 2133, 2128, 2132, 2139, 2131, 2124, 2120, 2134, - 2132, 2123, 2140, 2126, 2136, 2134, 2138, 2133, 2139, 2127, - 2141, 2126, 2128, 2130, 2129, 2131, 2136, 2142, 2143, 2133, - 2138, 2132, 2139, 2140, 2144, 2145, 2134, 2148, 2146, 2140, - - 2149, 2136, 2147, 2138, 0, 2141, 2150, 2141, 2151, 2145, - 2143, 2146, 2153, 2156, 2142, 2143, 2147, 2154, 2144, 2157, - 2152, 2144, 2145, 2148, 2148, 2146, 2153, 2149, 2158, 2147, - 0, 2150, 2152, 2150, 2155, 2151, 2160, 2155, 2161, 2153, - 2156, 2162, 2163, 2154, 2154, 2161, 2157, 2152, 2162, 2164, - 2158, 2165, 2155, 2167, 2166, 2158, 2169, 2163, 2160, 2170, - 2171, 2155, 2166, 2160, 2155, 2161, 2168, 2172, 2162, 2163, - 2173, 2170, 2174, 2175, 2179, 2168, 2164, 2176, 2165, 2180, - 2167, 2166, 2171, 2169, 2177, 2174, 2170, 2171, 2182, 2183, - 2176, 2175, 2177, 2168, 2172, 2181, 2179, 2173, 2183, 2174, - - 2175, 2179, 2184, 2181, 2176, 2187, 2180, 2185, 0, 2186, - 2188, 2177, 2190, 2189, 2191, 2182, 2183, 2194, 2188, 2193, - 2190, 2194, 2181, 2184, 2186, 2189, 2193, 2196, 2197, 2184, - 2195, 2185, 2187, 0, 2185, 2186, 2186, 2188, 2199, 2190, - 2189, 2191, 2195, 2203, 2194, 2198, 2193, 2200, 2205, 2201, - 2196, 2186, 2255, 2198, 2196, 2197, 2204, 2195, 2206, 2200, - 2199, 2201, 2210, 2204, 2207, 2199, 2209, 2209, 2205, 2208, - 2203, 2206, 2198, 2207, 2200, 2205, 2201, 2211, 2208, 2255, - 2212, 2216, 2213, 2204, 2219, 2206, 2215, 0, 2210, 2210, - 2217, 2207, 2218, 2209, 2218, 2211, 2208, 2213, 2219, 2213, - - 2221, 2215, 2227, 2216, 2211, 2212, 2213, 2212, 2216, 2213, - 2220, 2219, 2217, 2215, 2222, 2222, 2220, 2217, 2224, 2218, - 2225, 2226, 2221, 2228, 2213, 2229, 2213, 2221, 2232, 2228, - 2232, 2230, 2231, 2226, 2227, 2233, 2234, 2220, 2235, 2239, - 2224, 2222, 2225, 2236, 2240, 2224, 2237, 2225, 2226, 2233, - 2228, 2238, 2239, 2230, 2231, 2232, 2235, 2229, 2230, 2231, - 2234, 2236, 2233, 2234, 2237, 2235, 2239, 2241, 2242, 2238, - 2236, 2246, 0, 2237, 2244, 2248, 2240, 2247, 2238, 2249, - 0, 2244, 2253, 2251, 0, 2251, 2250, 2249, 0, 2246, - 2251, 2242, 0, 2253, 2268, 2242, 2269, 2257, 2246, 2241, - - 2254, 2244, 2259, 2247, 2247, 2249, 2249, 2248, 2250, 2253, - 2251, 2254, 2251, 2250, 2249, 2257, 2256, 2259, 2262, 2260, - 2261, 2268, 2269, 2269, 2257, 2264, 2265, 2254, 2256, 2259, - 2260, 2266, 2261, 2262, 2271, 2267, 2272, 2273, 2266, 2274, - 2275, 2277, 0, 2256, 2284, 2262, 2260, 2261, 2265, 2264, - 2267, 2276, 2264, 2265, 2278, 0, 2279, 2281, 2266, 2273, - 2272, 2271, 2267, 2272, 2273, 2280, 2282, 2278, 2277, 2276, - 2281, 2274, 2275, 2283, 2282, 2285, 2284, 2290, 2276, 2286, - 2280, 2278, 2279, 2279, 2281, 2288, 2289, 2291, 2285, 2292, - 0, 2294, 2280, 2282, 2295, 2296, 0, 2293, 2294, 2283, - - 2283, 2286, 2285, 2299, 2290, 2297, 2286, 2292, 2288, 2291, - 2289, 2303, 2288, 2289, 2291, 2293, 2292, 2295, 2294, 2297, - 2300, 2295, 2296, 2302, 2293, 2299, 2301, 2300, 2304, 2305, - 2299, 2306, 2297, 2301, 2303, 2304, 2302, 2307, 2303, 2308, - 2311, 2309, 2314, 2317, 2310, 2331, 2318, 2300, 2308, 2309, - 2302, 2305, 2310, 2301, 2312, 2304, 2305, 2314, 2307, 2315, - 2312, 2316, 2311, 2306, 2307, 2318, 2308, 2311, 2309, 2314, - 2315, 2310, 2319, 2318, 2321, 2317, 2323, 2331, 2324, 0, - 2332, 2312, 2325, 2316, 2326, 2326, 2315, 2327, 2316, 2323, - 2333, 2337, 2321, 2330, 2334, 2332, 0, 2319, 0, 2319, - - 2349, 2321, 2341, 2323, 2324, 2324, 2325, 2332, 2345, 2325, - 2339, 2326, 2334, 2327, 2327, 2341, 2330, 2333, 2337, 2339, - 2330, 2334, 2342, 2346, 2346, 2347, 2348, 2349, 2351, 2341, - 2345, 2353, 2354, 2342, 2355, 2345, 0, 2339, 2356, 2361, - 2357, 2360, 2363, 2356, 2364, 2355, 2359, 2347, 2348, 2342, - 2346, 2368, 2347, 2348, 2359, 2351, 2360, 2369, 2354, 2354, - 2363, 2355, 2357, 2353, 2370, 2356, 2361, 2357, 2360, 2363, - 2365, 2366, 2370, 2359, 2373, 2374, 2364, 2371, 2368, 2365, - 0, 2369, 2380, 2366, 2369, 2375, 2371, 2376, 2377, 2378, - 0, 2370, 2379, 2382, 0, 2380, 2376, 2365, 2366, 2383, - - 2373, 2373, 2374, 2384, 2371, 2381, 2377, 2375, 2382, 2380, - 2384, 2378, 2375, 2385, 2376, 2377, 2378, 2379, 2381, 2379, - 2382, 2383, 2386, 2387, 2388, 2389, 2383, 2390, 2391, 2395, - 2384, 2392, 2381, 2393, 0, 2385, 2394, 2391, 2397, 2399, - 2385, 0, 2390, 2401, 2395, 2397, 2396, 2402, 0, 2386, - 2387, 2388, 2389, 2392, 2390, 2391, 2395, 2398, 2392, 2393, - 2393, 2396, 2394, 2394, 2400, 2397, 2399, 2403, 2398, 2405, - 2401, 2404, 2400, 2396, 2402, 2406, 2411, 2408, 2407, 2412, - 2409, 2410, 0, 2403, 2398, 2407, 2404, 2409, 2410, 2405, - 2406, 2400, 2413, 2413, 2403, 2419, 2405, 2412, 2404, 2408, - - 2415, 0, 2406, 2411, 2408, 2407, 2412, 2409, 2410, 2414, - 2416, 2417, 0, 2416, 2415, 2418, 2414, 2420, 2425, 2413, - 2421, 2419, 2419, 2425, 2417, 2424, 2427, 2415, 2422, 2426, - 2418, 2431, 2421, 2426, 2424, 2420, 2414, 2416, 2417, 2429, - 2422, 2428, 2418, 2430, 2420, 2425, 2432, 2421, 2433, 0, - 2427, 2435, 2424, 2427, 2428, 2422, 2426, 2437, 2431, 2440, - 2438, 2429, 2444, 2439, 2441, 2430, 2429, 2440, 2428, 2438, - 2430, 2444, 0, 2432, 2433, 2433, 2441, 2435, 2435, 2439, - 2445, 2443, 2447, 2437, 2437, 2445, 2440, 2438, 2443, 2444, - 2439, 2441, 2446, 2449, 2448, 2450, 2451, 2452, 2455, 2446, - - 2447, 2448, 2450, 2453, 2456, 2451, 2452, 2445, 2443, 2447, - 2457, 2459, 2462, 2465, 2458, 2457, 2461, 2456, 2449, 2446, - 2449, 2448, 2450, 2451, 2452, 2455, 2463, 2464, 0, 2453, - 2453, 2456, 2458, 2465, 2461, 2463, 2464, 2457, 2459, 2462, - 2465, 2458, 2467, 2461, 2466, 2471, 2468, 2469, 2472, 2470, - 2476, 2467, 2473, 2463, 2464, 2468, 2466, 2470, 2469, 2473, - 2475, 2474, 2477, 2478, 0, 0, 2480, 2482, 0, 2467, - 2474, 2466, 2471, 2468, 2469, 2472, 2470, 2476, 2480, 2473, - 2482, 2475, 2479, 2483, 2481, 2486, 2488, 2475, 2474, 2477, - 2484, 2479, 2481, 2480, 2482, 2478, 2485, 2484, 0, 2487, - - 2489, 2490, 2494, 2485, 2496, 2483, 2492, 2486, 2495, 2479, - 2483, 2481, 2486, 2488, 2492, 2497, 2495, 2484, 2498, 2496, - 2494, 2505, 2497, 2485, 2487, 2489, 2487, 2489, 2490, 2494, - 2499, 2496, 2503, 2492, 2504, 2495, 2500, 2499, 2506, 2503, - 2498, 2508, 2497, 2507, 2500, 2498, 2509, 2513, 2505, 2512, - 2506, 2519, 2507, 2514, 2511, 2517, 0, 2499, 2504, 2503, - 2521, 2504, 2517, 2500, 2524, 2506, 2511, 2514, 2508, 2509, - 2507, 2516, 2512, 2509, 2513, 2521, 2512, 2518, 2519, 2522, - 2514, 2511, 2517, 2516, 2518, 2523, 2525, 2521, 2526, 2527, - 2529, 2524, 2528, 2531, 2525, 2536, 2538, 2522, 2516, 2530, - - 2537, 2529, 2543, 0, 2518, 2537, 2522, 2541, 2523, 2546, - 2528, 2527, 2523, 2525, 2530, 2526, 2527, 2529, 2539, 2528, - 2531, 2536, 2536, 2538, 2540, 2541, 2530, 2537, 2542, 2543, - 2544, 2549, 2539, 2553, 2541, 2551, 2546, 2550, 2540, 2552, - 0, 2554, 2544, 0, 2556, 2539, 2542, 2555, 2551, 2554, - 2559, 2540, 2553, 2549, 2560, 2542, 2562, 2544, 2549, 2550, - 2553, 2552, 2551, 2556, 2550, 2555, 2552, 2558, 2554, 2563, - 2561, 2556, 2559, 2564, 2555, 2565, 2560, 2559, 2567, 2558, - 2568, 2560, 2561, 2562, 2566, 2569, 2570, 2567, 2571, 2568, - 0, 2572, 2574, 0, 2558, 2565, 2563, 2561, 2573, 2575, - - 2564, 2579, 2565, 2572, 0, 2567, 2566, 2568, 2570, 2578, - 2580, 2566, 2586, 2570, 2571, 2571, 2581, 2569, 2572, 2574, - 2573, 2581, 2582, 2578, 2583, 2573, 2575, 2584, 2579, 2585, - 2587, 2589, 2588, 2592, 2580, 2586, 2578, 2580, 2593, 2586, - 2584, 2590, 2594, 2589, 2582, 2598, 2583, 2591, 2581, 2582, - 2588, 2583, 2587, 2591, 2584, 2597, 2595, 2587, 2589, 2588, - 2590, 2585, 2599, 2601, 2594, 2592, 2603, 2598, 2590, 2594, - 2593, 2595, 2598, 2604, 2591, 2597, 2605, 2606, 2601, 2607, - 2608, 2610, 2597, 2595, 2609, 2605, 2599, 2613, 2603, 2599, - 2601, 2606, 2614, 2603, 2615, 2604, 2613, 2607, 2608, 2610, - - 2604, 2618, 2621, 2605, 2606, 2619, 2607, 2608, 2610, 2618, - 2609, 2609, 2619, 2622, 2613, 2615, 2624, 2620, 2623, 2625, - 2626, 2615, 2627, 2629, 2614, 2620, 2623, 2633, 2618, 2621, - 2627, 2625, 2619, 2622, 2624, 2629, 2632, 2634, 2635, 2634, - 2622, 2631, 2636, 2624, 2620, 2623, 2625, 2626, 2631, 2627, - 2629, 2637, 2638, 2639, 2633, 2640, 0, 2642, 2645, 2632, - 2646, 2651, 2643, 2632, 2634, 2649, 2647, 2652, 2631, 2654, - 2635, 2658, 2639, 2646, 2636, 2642, 2643, 2640, 2647, 2638, - 2639, 2645, 2640, 2637, 2642, 2645, 2650, 2646, 2651, 2643, - 2656, 2649, 2649, 2647, 2652, 2650, 2654, 2655, 2658, 2660, - - 2661, 2662, 2663, 2665, 0, 2666, 2660, 2663, 2668, 2669, - 2665, 0, 2656, 2650, 2670, 2671, 2662, 2656, 2675, 0, - 2655, 2676, 2661, 2677, 2655, 2675, 2660, 2661, 2662, 2671, - 2665, 2666, 2666, 2678, 2663, 2668, 2669, 2673, 2670, 2679, - 2680, 2670, 2671, 2681, 2682, 2675, 2673, 2685, 2676, 2677, - 2677, 2679, 2683, 2682, 2684, 2686, 2690, 2681, 2691, 2695, - 2678, 2690, 2691, 2694, 2673, 2683, 2679, 2680, 2692, 2693, - 2681, 2682, 2698, 0, 2685, 2692, 2693, 2697, 2686, 2683, - 2701, 2696, 2686, 2696, 2694, 2691, 2684, 2703, 2690, 2704, - 2694, 2695, 2706, 2707, 2706, 2692, 2693, 2708, 0, 2698, - - 2697, 2711, 2701, 2710, 2697, 2713, 2703, 2701, 2696, 2714, - 2711, 2709, 2709, 2704, 2703, 2712, 2704, 2707, 2713, 2706, - 2707, 2709, 2712, 2708, 2708, 2710, 2716, 2715, 2711, 2718, - 2710, 2717, 2713, 2719, 2716, 2723, 2714, 2718, 2709, 2709, - 2715, 2720, 2712, 2721, 2717, 2724, 2720, 2722, 2721, 0, - 2716, 2725, 2719, 2716, 2715, 2722, 2718, 2726, 2717, 2727, - 2719, 2716, 2723, 2730, 0, 2728, 2729, 2731, 2731, 2732, - 2730, 2724, 2724, 2720, 2722, 2721, 2728, 2725, 2725, 2733, - 2734, 2735, 2736, 2726, 2726, 2727, 2727, 2733, 2729, 2736, - 2730, 2732, 2728, 2729, 2731, 2739, 2732, 2737, 2740, 2735, - - 0, 2742, 2734, 2741, 2737, 2744, 2733, 2734, 2735, 2736, - 2742, 2745, 2746, 2747, 2749, 2750, 2751, 2754, 2752, 2755, - 0, 0, 2739, 0, 2737, 2740, 2754, 2741, 2742, 2756, - 2741, 2745, 2744, 2750, 2751, 2747, 2752, 2757, 2745, 2746, - 2747, 2749, 2750, 2751, 2754, 2752, 2755, 2758, 2759, 2760, - 2761, 2766, 2756, 2759, 0, 2757, 2756, 2767, 2762, 2758, - 2769, 2772, 2770, 2760, 2757, 2771, 0, 2771, 2761, 0, - 2772, 2775, 2774, 2766, 2758, 2770, 2760, 2761, 2766, 2779, - 2759, 2762, 2781, 0, 2767, 2762, 2775, 2769, 2772, 2770, - 2774, 2778, 2771, 2778, 2780, 2783, 2785, 2779, 2775, 2774, - - 0, 2780, 2785, 2787, 2788, 2795, 2779, 2789, 0, 2790, - 2783, 0, 2793, 2792, 2781, 2793, 2796, 2797, 2778, 2798, - 2800, 2780, 2783, 2785, 0, 2787, 2788, 2790, 2800, 2801, - 2787, 2788, 2795, 2789, 2789, 2792, 2790, 2798, 2793, 2793, - 2792, 2799, 2793, 2796, 2797, 2803, 2798, 2800, 2799, 2804, - 0, 2801, 2805, 2806, 2807, 2808, 2801, 2811, 2809, 2812, - 2813, 2810, 2813, 2807, 2809, 2814, 2811, 2816, 2799, 0, - 2808, 2804, 2819, 2817, 2805, 2818, 2804, 2803, 2820, 2805, - 2806, 2807, 2808, 2810, 2811, 2809, 2820, 2813, 2810, 2821, - 2816, 2812, 2814, 2826, 2816, 2817, 2822, 2818, 2819, 2819, - - 2817, 2821, 2818, 2824, 2828, 2820, 2830, 2829, 2822, 2831, - 2824, 2832, 0, 2834, 2840, 2835, 2821, 2833, 2828, 2836, - 2826, 2829, 2832, 2822, 0, 2833, 0, 2831, 2844, 2830, - 2824, 2828, 2834, 2830, 2829, 2837, 2831, 2835, 2832, 2838, - 2834, 2840, 2835, 2841, 2833, 2836, 2836, 2845, 2838, 2839, - 2839, 2841, 2847, 2837, 2849, 2844, 2851, 2852, 2847, 2856, - 2853, 0, 2837, 2854, 2862, 2857, 2838, 2851, 2852, 2858, - 2841, 2853, 2857, 2858, 2845, 2861, 2839, 2862, 2864, 2847, - 2859, 2849, 2868, 2851, 2852, 2854, 2856, 2853, 2859, 2863, - 2854, 2862, 2857, 2867, 2870, 2869, 2858, 2863, 2871, 2870, - - 2867, 2861, 2861, 2872, 2873, 2864, 2876, 2859, 2874, 2878, - 2875, 2873, 2877, 2880, 2868, 2879, 2863, 2869, 2882, 2877, - 2867, 2870, 2869, 2879, 2876, 2871, 2875, 2874, 2880, 2881, - 2872, 2873, 2888, 2876, 2883, 2874, 2881, 2875, 2884, 2877, - 2880, 2878, 2879, 2889, 2890, 2882, 2891, 2888, 2892, 2893, - 2889, 2894, 2896, 2897, 2874, 2898, 2881, 2900, 2883, 2888, - 2894, 2883, 0, 2899, 2884, 2884, 0, 2902, 0, 0, - 2889, 2899, 2892, 2891, 2896, 2892, 2890, 2898, 2894, 2896, - 2897, 2893, 2898, 2901, 2901, 2904, 2905, 2907, 2908, 2900, - 2899, 2909, 2910, 2901, 2902, 2905, 2906, 2913, 2906, 2909, - - 2904, 2907, 2911, 2910, 2914, 2915, 2917, 2918, 2916, 2919, - 2901, 2901, 2904, 2905, 2907, 2908, 2920, 2923, 2909, 2910, - 2911, 2916, 0, 2906, 2913, 2921, 2924, 2915, 2917, 2911, - 2926, 2914, 2915, 2917, 2918, 2916, 2919, 2922, 2922, 2921, - 2931, 2932, 2929, 2920, 2934, 2931, 2932, 2936, 2924, 2923, - 2929, 2933, 2921, 2924, 2938, 2939, 2933, 2926, 2940, 2937, - 2941, 2938, 2943, 2949, 2922, 2951, 2953, 2931, 2932, 2929, - 2934, 2934, 2937, 2939, 2936, 2946, 2944, 2952, 2933, 2953, - 2945, 2938, 2939, 2944, 2954, 2940, 2937, 2941, 2945, 0, - 2949, 2955, 2951, 2953, 2943, 2956, 2957, 2946, 2958, 2952, - - 2963, 2960, 2946, 2944, 2952, 2961, 2955, 2945, 2960, 2962, - 2966, 2967, 2961, 2964, 2956, 2963, 2954, 2968, 2955, 2967, - 2958, 2971, 2956, 2957, 2968, 2958, 2969, 2963, 2960, 2966, - 2971, 2962, 2961, 2969, 2964, 2972, 2962, 2966, 2967, 2974, - 2964, 2973, 2973, 2975, 2968, 2974, 2972, 2978, 2971, 2977, - 2979, 2973, 2982, 2969, 2978, 0, 2980, 2983, 2984, 2982, - 2987, 2988, 2972, 2989, 2993, 2975, 2974, 2994, 2973, 2973, - 2975, 2977, 2984, 0, 2978, 2996, 2977, 2998, 2980, 2982, - 3002, 2983, 2979, 2980, 2983, 2984, 2989, 2987, 2988, 2994, - 2989, 2993, 2995, 3004, 2994, 2999, 2999, 3000, 3000, 0, - - 2995, 3005, 2996, 3002, 2998, 3001, 3001, 3002, 3006, 3009, - 3005, 3010, 3012, 3016, 3018, 3011, 3009, 3019, 3010, 2995, - 3004, 3006, 3017, 3015, 2999, 3015, 3000, 3023, 3005, 3019, - 3022, 3024, 3018, 3016, 3001, 3006, 3009, 3011, 3010, 3012, - 3016, 3018, 3011, 3021, 3019, 3017, 3025, 3026, 3022, 3017, - 3015, 3029, 3021, 3023, 3023, 3027, 3029, 3022, 3024, 3026, - 3028, 3030, 3031, 3028, 3031, 3033, 3038, 3032, 3036, 3034, - 3021, 3033, 3037, 3025, 3026, 3035, 3036, 3027, 3028, 3032, - 3039, 3040, 3027, 3029, 3041, 3046, 3048, 3028, 3042, 3031, - 3028, 3034, 3033, 3030, 3032, 3036, 3034, 3035, 3038, 3037, - - 3042, 3039, 3035, 3043, 3049, 3052, 3053, 3039, 3040, 3054, - 3055, 3041, 3046, 3048, 3056, 3042, 3057, 3058, 3061, 3063, - 3060, 3062, 3049, 0, 3067, 3043, 0, 0, 3064, 0, - 3043, 3049, 3052, 3053, 3063, 3064, 3054, 3055, 3060, 3062, - 3068, 3056, 3066, 3057, 3058, 3061, 3063, 3060, 3062, 3069, - 3066, 3067, 3068, 3070, 3072, 3064, 3071, 3073, 3078, 3078, - 3084, 3076, 3077, 3069, 3079, 3080, 3072, 3068, 3070, 3066, - 3076, 3082, 3083, 3084, 3080, 3085, 3069, 0, 3090, 0, - 3070, 3072, 3071, 3071, 3073, 3078, 3077, 3084, 3076, 3077, - 3079, 3079, 3080, 3086, 3087, 3082, 3088, 3085, 3082, 3090, - - 3091, 3086, 3085, 3087, 3083, 3090, 3094, 3088, 3098, 3098, - 3095, 3108, 3106, 3109, 3110, 3111, 3114, 3117, 3091, 0, - 3086, 3087, 3095, 3088, 3113, 3108, 3115, 3091, 3113, 3094, - 3117, 3120, 3121, 3094, 3114, 3098, 3106, 3095, 3108, 3106, - 3109, 3110, 3111, 3114, 3117, 3116, 3119, 3120, 3123, 3115, - 3119, 3113, 3116, 3115, 3121, 3122, 0, 3124, 3120, 3121, - 3123, 3126, 3125, 3131, 0, 3127, 3128, 3130, 3129, 3126, - 3129, 3132, 3116, 3119, 3127, 3123, 3125, 3128, 3133, 3130, - 3122, 3131, 3122, 3124, 3124, 3134, 3132, 3135, 3126, 3125, - 3131, 3134, 3127, 3128, 3130, 3129, 3136, 3137, 3132, 3142, - - 3133, 3143, 3141, 3136, 3144, 3133, 3142, 3145, 3147, 3135, - 3146, 3148, 3134, 3149, 3135, 3141, 3156, 3151, 3150, 3137, - 3152, 3149, 3144, 3136, 3137, 3150, 3142, 3153, 3143, 3141, - 3154, 3144, 3154, 3157, 3145, 3147, 3146, 3146, 3148, 3155, - 3149, 3151, 3152, 3158, 3151, 3150, 3157, 3152, 3156, 3153, - 3159, 3155, 3160, 3162, 3153, 3161, 3163, 3154, 3158, 3164, - 3157, 3165, 3161, 3166, 3168, 3170, 3155, 3173, 3175, 3165, - 3158, 3164, 3159, 3174, 3170, 3177, 3168, 3159, 3178, 3160, - 3162, 3176, 3161, 3163, 3179, 0, 3164, 3175, 3165, 3176, - 3166, 3168, 3170, 3181, 3173, 3175, 3182, 3179, 3180, 3174, - - 3174, 3181, 3183, 3185, 3191, 3192, 3189, 3177, 3176, 3188, - 3178, 3179, 3180, 3189, 3194, 3188, 3195, 3191, 3182, 3196, - 3181, 3194, 3200, 3182, 3202, 3180, 3197, 3196, 3192, 3183, - 3185, 3191, 3192, 3189, 3198, 3201, 3188, 3199, 3195, 3208, - 3197, 3194, 3211, 3195, 3200, 3199, 3196, 3205, 3198, 3200, - 3206, 3202, 3207, 3197, 3205, 3210, 3209, 3201, 3212, 3206, - 3207, 3198, 3201, 3215, 3199, 0, 3208, 3213, 3211, 3211, - 3214, 3215, 3216, 3218, 3205, 3220, 3219, 3206, 3209, 3207, - 3212, 3224, 3222, 3209, 3227, 3212, 3231, 3210, 3223, 3213, - 3215, 3225, 3214, 3229, 3213, 3233, 3223, 3214, 3219, 3225, - - 3218, 3224, 3220, 3219, 3216, 3222, 3226, 3229, 3224, 3222, - 3235, 3228, 3231, 3231, 3226, 3223, 3227, 3236, 3225, 3228, - 3229, 3234, 3233, 3237, 3234, 3236, 3238, 0, 3239, 3241, - 3240, 3237, 3235, 3226, 3243, 3243, 3244, 3235, 3228, 3234, - 3238, 3245, 3248, 3241, 3236, 3246, 0, 3247, 3234, 3245, - 3237, 3234, 3240, 3238, 3239, 3239, 3241, 3240, 3249, 3250, - 3251, 3243, 3244, 3244, 3248, 3253, 3252, 3250, 3245, 3248, - 3254, 3246, 3246, 3247, 3247, 3255, 3256, 3258, 3249, 3261, - 0, 3257, 0, 3259, 3270, 3249, 3250, 3251, 3252, 3257, - 3253, 3259, 3253, 3252, 3264, 3255, 3256, 3254, 3265, 3258, - - 3268, 3262, 3255, 3256, 3258, 3266, 3261, 3267, 3257, 3262, - 3259, 3270, 3273, 3266, 3271, 3267, 3264, 3274, 3277, 3278, - 3265, 3264, 3271, 3272, 3287, 3265, 3268, 3268, 3262, 3275, - 3281, 3272, 3266, 3279, 3267, 3285, 3284, 3288, 3273, 3273, - 3286, 3271, 0, 3285, 3274, 3277, 3278, 0, 3286, 3275, - 3272, 3287, 3281, 3279, 0, 0, 3275, 3281, 3284, 0, - 3279, 0, 3285, 3284, 3288, 0, 0, 3286, 3292, 3292, - 3292, 3292, 3292, 3292, 3292, 3293, 3293, 3293, 3293, 3293, - 3293, 3293, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3295, - 3295, 3295, 3295, 3295, 3295, 3295, 3296, 3296, 3296, 3296, - - 3296, 3296, 3296, 3297, 3297, 3297, 3297, 3297, 3297, 3297, - 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3300, 3300, 0, - 3300, 3300, 3300, 3300, 3301, 3301, 0, 0, 0, 3301, - 3301, 3302, 3302, 0, 0, 3302, 0, 3302, 3303, 0, - 0, 0, 0, 0, 3303, 3304, 3304, 0, 0, 0, - 3304, 3304, 3305, 0, 0, 0, 0, 0, 3305, 3306, - 3306, 0, 3306, 3306, 3306, 3306, 3307, 0, 0, 0, - 0, 0, 3307, 3308, 3308, 0, 0, 0, 3308, 3308, - 3309, 3309, 0, 3309, 3309, 3309, 3309, 3291, 3291, 3291, - 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, - - 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, - 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, - 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, - 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, - 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, - 3291, 3291, 3291, 3291 + 27, 94, 27, 27, 35, 31, 93, 31, 36, 145, + 35, 85, 36, 27, 35, 195, 44, 161, 161, 42, + + 44, 42, 35, 35, 44, 70, 36, 80, 36, 93, + 42, 35, 75, 93, 36, 36, 42, 35, 92, 36, + 74, 35, 44, 44, 43, 42, 42, 44, 42, 168, + 168, 44, 68, 36, 43, 36, 38, 42, 43, 43, + 38, 95, 92, 42, 38, 92, 219, 43, 63, 111, + 38, 43, 73, 38, 73, 73, 95, 73, 111, 97, + 38, 43, 38, 38, 104, 43, 43, 38, 95, 104, + 79, 38, 79, 79, 58, 79, 111, 38, 219, 86, + 38, 86, 86, 97, 86, 222, 97, 38, 40, 944, + 86, 104, 40, 89, 96, 89, 89, 112, 89, 98, + + 57, 96, 40, 40, 89, 40, 112, 103, 103, 106, + 105, 52, 98, 47, 40, 40, 103, 222, 105, 40, + 944, 96, 18, 98, 112, 137, 98, 106, 17, 40, + 40, 89, 40, 41, 103, 103, 41, 105, 102, 98, + 107, 106, 109, 41, 102, 108, 102, 41, 41, 109, + 224, 137, 137, 107, 106, 41, 113, 0, 108, 102, + 41, 114, 0, 41, 115, 102, 118, 107, 114, 109, + 41, 102, 108, 102, 41, 41, 110, 110, 117, 113, + 116, 117, 224, 113, 110, 126, 115, 0, 114, 119, + 118, 115, 110, 116, 117, 117, 0, 119, 118, 126, + + 123, 0, 117, 110, 110, 117, 120, 116, 117, 124, + 121, 110, 126, 123, 121, 122, 119, 118, 125, 127, + 122, 117, 117, 122, 130, 128, 120, 123, 120, 146, + 121, 130, 124, 120, 121, 129, 124, 121, 125, 127, + 131, 121, 122, 128, 146, 125, 127, 122, 133, 129, + 132, 130, 128, 120, 135, 134, 146, 121, 135, 132, + 0, 136, 129, 131, 134, 138, 140, 131, 136, 141, + 141, 133, 138, 0, 139, 133, 135, 132, 140, 142, + 143, 135, 134, 139, 144, 135, 0, 142, 136, 139, + 0, 143, 138, 140, 148, 143, 141, 139, 144, 0, + + 147, 139, 149, 151, 143, 148, 142, 143, 152, 151, + 139, 144, 155, 149, 148, 150, 139, 147, 143, 152, + 147, 148, 143, 150, 153, 154, 147, 147, 156, 149, + 151, 158, 148, 153, 155, 152, 182, 157, 173, 155, + 154, 159, 150, 156, 147, 153, 157, 147, 182, 153, + 0, 153, 154, 158, 159, 156, 178, 178, 158, 0, + 153, 0, 173, 182, 157, 173, 0, 179, 159, 0, + 0, 165, 153, 165, 165, 170, 165, 170, 170, 171, + 170, 171, 171, 175, 171, 175, 175, 180, 175, 179, + 0, 181, 0, 184, 179, 183, 185, 186, 187, 188, + + 181, 180, 183, 0, 189, 186, 227, 0, 0, 184, + 187, 189, 190, 193, 183, 185, 194, 171, 181, 180, + 184, 188, 183, 185, 186, 187, 188, 191, 180, 183, + 190, 189, 229, 191, 192, 193, 192, 196, 227, 190, + 193, 196, 194, 194, 198, 200, 0, 199, 203, 0, + 204, 201, 205, 200, 202, 210, 206, 204, 196, 191, + 191, 192, 199, 203, 229, 196, 207, 210, 196, 0, + 198, 198, 200, 201, 199, 203, 202, 204, 201, 206, + 205, 202, 210, 206, 205, 196, 197, 208, 207, 213, + 212, 197, 209, 207, 217, 256, 197, 211, 208, 212, + + 211, 217, 197, 197, 214, 209, 216, 205, 0, 197, + 0, 213, 211, 197, 208, 220, 213, 212, 197, 209, + 256, 217, 256, 197, 211, 218, 214, 211, 216, 197, + 197, 214, 215, 216, 221, 215, 218, 215, 226, 225, + 223, 220, 220, 231, 226, 221, 228, 223, 0, 215, + 233, 215, 218, 225, 230, 0, 0, 0, 215, 215, + 234, 0, 215, 232, 215, 226, 221, 223, 228, 239, + 235, 225, 221, 228, 234, 231, 215, 230, 215, 236, + 225, 230, 233, 232, 237, 238, 236, 234, 239, 240, + 232, 235, 241, 244, 238, 242, 239, 235, 243, 238, + + 245, 251, 247, 240, 244, 237, 236, 245, 248, 249, + 243, 237, 238, 242, 241, 253, 240, 248, 246, 241, + 244, 238, 242, 246, 247, 243, 250, 245, 259, 247, + 255, 250, 249, 251, 254, 248, 249, 252, 252, 258, + 257, 254, 260, 261, 262, 264, 252, 253, 257, 0, + 246, 261, 255, 250, 263, 267, 265, 255, 264, 258, + 259, 254, 266, 268, 252, 252, 258, 257, 0, 263, + 261, 269, 264, 270, 260, 271, 262, 270, 267, 272, + 274, 263, 265, 265, 273, 0, 275, 267, 269, 266, + 276, 278, 273, 275, 272, 268, 269, 271, 269, 274, + + 270, 279, 271, 280, 277, 267, 272, 274, 277, 282, + 281, 273, 276, 275, 0, 269, 283, 276, 285, 287, + 289, 284, 286, 278, 288, 280, 288, 285, 283, 290, + 280, 277, 281, 279, 284, 286, 291, 281, 287, 292, + 0, 282, 295, 283, 296, 285, 287, 297, 284, 286, + 294, 288, 289, 290, 299, 298, 290, 300, 297, 294, + 303, 291, 304, 291, 305, 292, 292, 298, 295, 295, + 296, 296, 301, 302, 297, 304, 306, 294, 299, 307, + 300, 299, 298, 309, 300, 308, 311, 313, 0, 304, + 301, 302, 303, 310, 313, 312, 305, 314, 315, 301, + + 302, 306, 308, 306, 315, 317, 314, 316, 308, 309, + 309, 307, 308, 318, 313, 310, 320, 319, 311, 312, + 310, 316, 321, 326, 314, 315, 319, 312, 323, 308, + 321, 317, 317, 322, 316, 325, 324, 318, 326, 320, + 318, 327, 322, 320, 319, 324, 312, 328, 0, 321, + 326, 329, 325, 0, 323, 323, 0, 331, 332, 325, + 322, 0, 325, 324, 0, 333, 329, 332, 0, 335, + 0, 328, 336, 327, 328, 331, 338, 338, 329, 325, + 330, 341, 0, 330, 331, 332, 336, 333, 330, 330, + 330, 330, 333, 335, 337, 334, 335, 334, 330, 336, + + 339, 338, 340, 338, 338, 339, 0, 330, 341, 337, + 330, 347, 0, 334, 348, 330, 330, 330, 330, 334, + 342, 337, 334, 342, 334, 343, 340, 345, 346, 340, + 342, 349, 339, 344, 344, 371, 348, 343, 347, 350, + 334, 348, 352, 344, 351, 345, 346, 342, 353, 357, + 342, 354, 343, 362, 345, 346, 351, 349, 349, 354, + 344, 344, 371, 353, 352, 350, 350, 355, 356, 352, + 361, 351, 369, 0, 355, 353, 0, 358, 354, 358, + 356, 357, 360, 363, 365, 362, 365, 366, 358, 360, + 364, 411, 361, 370, 355, 356, 364, 361, 369, 369, + + 366, 368, 411, 358, 358, 363, 358, 0, 365, 360, + 363, 365, 364, 365, 366, 358, 367, 364, 411, 368, + 372, 373, 379, 364, 377, 370, 375, 373, 368, 367, + 393, 373, 367, 375, 367, 379, 377, 0, 378, 373, + 367, 0, 372, 367, 382, 373, 376, 372, 373, 379, + 378, 377, 381, 375, 373, 0, 367, 382, 373, 367, + 0, 367, 393, 384, 376, 378, 373, 374, 381, 374, + 376, 382, 386, 376, 385, 384, 381, 386, 387, 381, + 388, 402, 374, 0, 391, 374, 388, 374, 390, 374, + 384, 376, 385, 374, 374, 381, 374, 396, 389, 387, + + 390, 385, 391, 402, 386, 387, 389, 388, 402, 374, + 396, 391, 374, 392, 374, 390, 374, 383, 383, 394, + 394, 392, 0, 397, 396, 389, 395, 383, 404, 383, + 383, 383, 397, 395, 383, 0, 399, 401, 409, 403, + 392, 400, 383, 399, 383, 383, 394, 398, 400, 401, + 405, 403, 407, 395, 383, 397, 383, 383, 383, 397, + 404, 383, 408, 399, 401, 398, 403, 407, 400, 398, + 409, 406, 412, 430, 398, 408, 405, 405, 406, 407, + 410, 414, 410, 413, 413, 0, 415, 417, 414, 408, + 416, 418, 398, 0, 412, 422, 420, 415, 406, 412, + + 417, 416, 419, 419, 425, 430, 0, 410, 414, 421, + 0, 0, 413, 415, 417, 425, 418, 416, 418, 420, + 419, 422, 422, 420, 421, 423, 424, 419, 426, 419, + 419, 425, 421, 423, 0, 427, 421, 426, 424, 431, + 434, 432, 433, 428, 435, 444, 0, 419, 427, 0, + 0, 421, 423, 424, 428, 426, 428, 431, 434, 437, + 0, 428, 427, 432, 438, 433, 431, 434, 432, 433, + 428, 436, 444, 440, 443, 439, 435, 436, 441, 0, + 437, 428, 442, 428, 429, 441, 437, 438, 443, 446, + 445, 438, 429, 429, 448, 440, 429, 429, 436, 439, + + 440, 443, 439, 446, 447, 441, 429, 452, 442, 442, + 449, 429, 445, 450, 453, 451, 446, 445, 0, 429, + 429, 451, 459, 429, 429, 450, 448, 454, 455, 452, + 447, 447, 456, 449, 452, 454, 453, 449, 457, 456, + 450, 453, 451, 455, 460, 458, 459, 457, 461, 459, + 462, 463, 464, 454, 454, 455, 465, 0, 464, 456, + 458, 466, 454, 461, 468, 457, 466, 460, 470, 472, + 471, 460, 458, 463, 470, 461, 462, 462, 463, 464, + 473, 474, 465, 465, 476, 475, 473, 472, 466, 471, + 468, 468, 475, 481, 482, 470, 472, 471, 480, 476, + + 478, 479, 478, 474, 483, 480, 481, 473, 474, 478, + 479, 476, 475, 484, 485, 488, 487, 486, 491, 487, + 481, 489, 483, 0, 0, 480, 482, 478, 479, 478, + 486, 483, 493, 492, 489, 487, 485, 490, 494, 488, + 492, 485, 488, 487, 486, 484, 487, 496, 489, 490, + 491, 498, 495, 497, 499, 501, 493, 498, 497, 493, + 492, 494, 500, 502, 490, 495, 0, 501, 504, 496, + 494, 510, 503, 505, 496, 541, 504, 499, 498, 495, + 497, 499, 501, 503, 500, 502, 508, 505, 494, 500, + 502, 509, 0, 508, 510, 504, 511, 515, 510, 503, + + 505, 506, 513, 509, 511, 0, 506, 541, 506, 515, + 512, 0, 0, 508, 506, 0, 506, 516, 509, 506, + 506, 512, 518, 511, 515, 513, 506, 506, 506, 513, + 514, 522, 519, 506, 514, 506, 0, 512, 520, 516, + 518, 506, 519, 506, 516, 517, 506, 506, 517, 518, + 520, 521, 514, 506, 525, 522, 517, 514, 522, 523, + 524, 514, 521, 523, 519, 520, 526, 524, 526, 519, + 527, 528, 517, 529, 531, 517, 534, 530, 521, 532, + 525, 525, 531, 528, 532, 533, 523, 524, 529, 530, + 536, 535, 537, 526, 534, 542, 527, 527, 528, 535, + + 529, 531, 536, 534, 530, 539, 532, 533, 540, 543, + 542, 547, 533, 537, 545, 549, 544, 536, 535, 537, + 547, 543, 542, 539, 544, 546, 548, 545, 0, 549, + 550, 540, 539, 553, 0, 540, 543, 546, 547, 552, + 554, 545, 549, 544, 551, 556, 555, 551, 557, 548, + 0, 0, 546, 548, 558, 550, 559, 550, 552, 0, + 553, 555, 560, 557, 561, 565, 552, 567, 562, 559, + 565, 551, 554, 555, 560, 557, 568, 556, 558, 569, + 563, 558, 564, 559, 572, 566, 561, 563, 570, 560, + 563, 561, 562, 564, 567, 562, 571, 565, 563, 566, + + 573, 576, 574, 568, 575, 573, 580, 563, 574, 564, + 578, 569, 566, 577, 563, 570, 572, 563, 578, 575, + 579, 581, 582, 571, 585, 576, 582, 584, 576, 574, + 580, 575, 573, 580, 583, 577, 586, 578, 588, 579, + 577, 590, 583, 581, 587, 589, 0, 579, 581, 582, + 584, 592, 591, 587, 584, 593, 585, 592, 589, 586, + 588, 583, 594, 586, 591, 588, 596, 590, 590, 595, + 597, 587, 589, 594, 598, 599, 595, 593, 592, 591, + 599, 600, 593, 599, 599, 0, 601, 598, 0, 594, + 600, 602, 597, 603, 604, 605, 595, 597, 596, 599, + + 602, 598, 599, 607, 603, 609, 606, 599, 600, 610, + 599, 599, 601, 601, 611, 607, 604, 605, 602, 606, + 603, 604, 605, 612, 614, 613, 0, 610, 616, 618, + 607, 615, 0, 606, 617, 620, 610, 609, 611, 616, + 619, 611, 622, 617, 628, 612, 612, 613, 614, 618, + 612, 614, 613, 615, 619, 616, 618, 620, 615, 621, + 623, 617, 620, 624, 625, 626, 621, 619, 629, 622, + 627, 624, 612, 637, 630, 625, 628, 633, 623, 631, + 631, 637, 632, 626, 634, 627, 621, 623, 636, 629, + 624, 625, 626, 634, 635, 629, 638, 627, 630, 633, + + 637, 630, 639, 640, 633, 643, 632, 635, 631, 632, + 636, 634, 641, 644, 642, 636, 642, 645, 644, 646, + 648, 635, 656, 0, 639, 0, 0, 643, 638, 639, + 649, 645, 643, 646, 647, 640, 641, 650, 649, 641, + 651, 642, 653, 652, 645, 644, 646, 0, 647, 647, + 652, 654, 648, 660, 656, 650, 647, 649, 655, 657, + 659, 647, 651, 662, 650, 659, 664, 651, 653, 653, + 652, 654, 0, 655, 657, 647, 647, 658, 654, 660, + 660, 661, 655, 661, 721, 655, 657, 658, 662, 663, + 662, 664, 659, 664, 665, 669, 666, 663, 667, 658, + + 655, 668, 669, 665, 658, 666, 670, 667, 661, 668, + 671, 721, 672, 679, 658, 673, 663, 674, 0, 677, + 0, 665, 669, 666, 676, 667, 675, 673, 668, 674, + 672, 678, 676, 671, 677, 675, 680, 671, 670, 672, + 681, 684, 673, 678, 674, 679, 677, 690, 682, 680, + 685, 676, 683, 675, 686, 681, 682, 687, 678, 685, + 683, 688, 688, 680, 684, 686, 687, 681, 684, 690, + 688, 692, 689, 691, 690, 682, 696, 685, 693, 683, + 689, 686, 694, 695, 687, 698, 691, 728, 688, 688, + 734, 695, 696, 697, 701, 694, 700, 692, 692, 689, + + 691, 693, 699, 696, 700, 693, 697, 698, 701, 694, + 695, 702, 698, 699, 703, 704, 707, 705, 706, 728, + 697, 701, 734, 700, 710, 707, 708, 0, 0, 699, + 709, 702, 711, 713, 712, 704, 703, 710, 702, 705, + 706, 703, 704, 707, 705, 706, 708, 714, 709, 712, + 711, 710, 715, 708, 716, 713, 718, 709, 717, 711, + 713, 712, 722, 720, 719, 723, 725, 716, 718, 720, + 722, 714, 724, 729, 714, 715, 717, 719, 727, 715, + 729, 716, 736, 718, 725, 717, 727, 730, 722, 722, + 720, 719, 723, 725, 724, 733, 731, 722, 735, 724, + + 729, 732, 736, 732, 733, 727, 737, 0, 742, 736, + 730, 731, 739, 749, 730, 737, 738, 735, 738, 739, + 742, 745, 733, 731, 0, 735, 753, 0, 732, 0, + 0, 745, 748, 737, 749, 742, 751, 753, 752, 739, + 749, 0, 0, 738, 740, 754, 758, 740, 745, 755, + 748, 740, 0, 753, 740, 758, 752, 751, 756, 748, + 761, 740, 740, 751, 740, 752, 757, 759, 754, 740, + 760, 740, 754, 758, 740, 755, 755, 760, 740, 766, + 759, 740, 757, 763, 756, 756, 765, 783, 740, 740, + 764, 740, 761, 757, 759, 765, 764, 760, 762, 762, + + 767, 762, 766, 767, 762, 763, 766, 768, 773, 762, + 763, 769, 770, 765, 783, 762, 762, 764, 0, 772, + 770, 772, 776, 768, 762, 762, 762, 767, 762, 771, + 768, 762, 773, 769, 768, 773, 762, 775, 769, 770, + 774, 771, 762, 762, 778, 774, 772, 777, 776, 776, + 768, 779, 781, 780, 785, 0, 771, 775, 784, 777, + 782, 787, 786, 0, 775, 789, 778, 0, 791, 785, + 786, 778, 774, 789, 777, 780, 781, 779, 779, 781, + 780, 785, 782, 784, 787, 784, 788, 782, 787, 786, + 790, 792, 789, 788, 791, 791, 794, 793, 795, 796, + + 797, 798, 800, 792, 804, 797, 801, 795, 799, 790, + 793, 801, 803, 788, 796, 805, 807, 790, 792, 806, + 0, 0, 794, 794, 793, 795, 796, 797, 808, 800, + 799, 810, 809, 798, 803, 799, 804, 811, 801, 803, + 812, 806, 813, 815, 0, 814, 806, 805, 807, 818, + 810, 816, 808, 809, 814, 808, 820, 817, 810, 809, + 818, 813, 821, 822, 811, 815, 817, 812, 823, 813, + 815, 816, 814, 819, 824, 827, 818, 825, 816, 0, + 821, 819, 822, 820, 817, 825, 830, 828, 829, 821, + 822, 829, 831, 827, 832, 823, 834, 835, 833, 835, + + 819, 839, 827, 837, 825, 828, 824, 838, 830, 834, + 831, 836, 838, 830, 828, 829, 847, 837, 832, 831, + 833, 832, 840, 834, 835, 833, 842, 839, 839, 836, + 837, 848, 841, 843, 840, 850, 843, 844, 836, 838, + 841, 847, 845, 847, 842, 849, 844, 854, 851, 840, + 845, 849, 854, 842, 851, 856, 852, 850, 848, 841, + 843, 853, 850, 852, 844, 0, 845, 858, 853, 845, + 859, 855, 849, 856, 854, 851, 857, 845, 855, 859, + 857, 860, 856, 852, 861, 863, 862, 864, 853, 860, + 858, 869, 865, 867, 858, 864, 866, 859, 855, 868, + + 863, 0, 870, 857, 862, 865, 867, 871, 860, 870, + 0, 873, 863, 862, 864, 872, 861, 866, 869, 865, + 867, 868, 872, 866, 874, 871, 868, 875, 876, 870, + 873, 874, 875, 877, 871, 878, 876, 879, 873, 880, + 877, 881, 872, 882, 884, 886, 885, 0, 891, 892, + 883, 874, 880, 887, 875, 876, 882, 883, 890, 0, + 877, 887, 889, 893, 890, 0, 880, 878, 886, 879, + 882, 888, 886, 881, 891, 891, 884, 883, 885, 888, + 887, 892, 894, 895, 889, 890, 888, 893, 896, 889, + 893, 894, 897, 0, 898, 899, 900, 895, 888, 897, + + 901, 902, 903, 905, 899, 901, 888, 904, 905, 894, + 895, 0, 910, 902, 907, 910, 920, 906, 900, 897, + 896, 898, 899, 900, 906, 903, 913, 908, 902, 903, + 905, 914, 901, 904, 904, 908, 907, 911, 914, 910, + 913, 907, 915, 920, 906, 0, 0, 917, 915, 0, + 911, 0, 918, 913, 908, 919, 0, 921, 914, 921, + 0, 0, 922, 0, 911, 923, 0, 919, 924, 915, + 916, 925, 916, 917, 917, 918, 916, 923, 916, 918, + 0, 924, 919, 916, 921, 922, 927, 926, 916, 922, + 928, 927, 923, 925, 916, 924, 929, 916, 925, 916, + + 926, 930, 0, 916, 931, 916, 0, 933, 928, 929, + 916, 932, 935, 930, 926, 916, 931, 928, 927, 934, + 936, 932, 933, 929, 930, 935, 936, 938, 930, 937, + 939, 931, 941, 932, 933, 942, 940, 945, 932, 935, + 930, 934, 937, 943, 946, 938, 934, 936, 932, 946, + 948, 939, 947, 0, 938, 952, 937, 939, 940, 948, + 947, 950, 951, 940, 941, 954, 0, 942, 952, 945, + 943, 946, 961, 955, 0, 953, 950, 948, 0, 947, + 949, 0, 952, 957, 951, 949, 0, 949, 950, 951, + 953, 954, 954, 949, 956, 955, 957, 960, 949, 949, + + 955, 958, 953, 959, 961, 949, 949, 949, 960, 958, + 957, 959, 949, 956, 949, 962, 963, 967, 964, 971, + 949, 956, 965, 968, 960, 949, 949, 964, 958, 966, + 959, 963, 949, 965, 969, 972, 974, 962, 966, 973, + 975, 969, 962, 963, 967, 964, 968, 973, 976, 965, + 968, 971, 977, 983, 975, 980, 966, 978, 974, 972, + 981, 969, 972, 974, 982, 978, 973, 975, 984, 985, + 986, 0, 991, 980, 977, 982, 987, 985, 981, 977, + 976, 988, 980, 987, 978, 983, 984, 981, 992, 990, + 991, 982, 986, 989, 988, 984, 985, 986, 993, 991, + + 989, 994, 995, 987, 990, 999, 992, 0, 988, 0, + 997, 994, 1011, 1002, 1001, 992, 990, 1000, 999, 993, + 989, 997, 1001, 1004, 1000, 993, 1002, 1003, 994, 1005, + 1006, 1009, 999, 1012, 995, 1004, 1003, 997, 1011, 1011, + 1002, 1001, 1010, 1013, 1000, 0, 1020, 1014, 1015, 1020, + 1004, 1005, 1006, 1009, 1003, 1017, 1005, 1006, 1009, 1014, + 1010, 1013, 1015, 1018, 1021, 1012, 1017, 1022, 1018, 1010, + 1013, 1023, 1020, 1020, 1014, 1015, 1020, 1025, 1023, 1024, + 1022, 1027, 1017, 1026, 1028, 1029, 1025, 1030, 1021, 0, + 1024, 1021, 1029, 1027, 1022, 1018, 1032, 1026, 1023, 1031, + + 1033, 1035, 1037, 1036, 1025, 0, 1024, 1043, 1027, 1036, + 1026, 1031, 1029, 1033, 1038, 1040, 1028, 1041, 1032, 1030, + 1039, 1042, 1043, 1032, 1037, 1035, 1031, 1033, 1035, 1037, + 1036, 1039, 1045, 1040, 1043, 1046, 1038, 1047, 1048, 1041, + 1049, 1038, 1040, 1042, 1041, 1050, 1046, 1039, 1042, 1052, + 1057, 1051, 1054, 1045, 1053, 1058, 1059, 1055, 1047, 1045, + 1051, 1054, 1046, 1050, 1047, 1055, 1060, 1049, 1056, 1058, + 1048, 1064, 1050, 1052, 1057, 1056, 1052, 1057, 1051, 1054, + 1053, 1053, 1058, 1061, 1055, 1062, 1063, 1066, 1059, 1068, + 1067, 1070, 0, 1069, 0, 1056, 1066, 1067, 1060, 1075, + + 1073, 1071, 0, 1064, 1072, 1061, 1076, 1062, 1063, 1073, + 1061, 0, 1062, 1063, 1066, 1069, 1074, 1067, 1070, 1071, + 1069, 1068, 1072, 1075, 1074, 1077, 1075, 1073, 1071, 1078, + 1076, 1072, 1080, 1076, 1081, 1079, 1082, 1083, 1084, 1086, + 0, 1077, 1081, 1074, 1079, 1085, 1087, 1080, 1089, 1091, + 1084, 1078, 1077, 1092, 1087, 0, 1078, 1088, 1091, 1080, + 1097, 1081, 1079, 1089, 0, 1084, 1086, 1085, 1082, 1083, + 1088, 1092, 1085, 1087, 1093, 1089, 1091, 1094, 1096, 1094, + 1092, 1098, 1093, 1100, 1088, 1101, 1096, 1097, 1098, 1103, + 1105, 1102, 1106, 1107, 1108, 1104, 1100, 1101, 0, 1106, + + 0, 1093, 1110, 1109, 1094, 1096, 1102, 1111, 1098, 1112, + 1100, 1103, 1101, 1104, 1109, 1113, 1103, 1105, 1102, 1106, + 1114, 1115, 1104, 1116, 1110, 1107, 1108, 1119, 1113, 1110, + 1109, 1112, 1111, 1114, 1111, 1116, 1112, 1117, 1118, 1119, + 1122, 1120, 1113, 1115, 1123, 1117, 1124, 1114, 1115, 1120, + 1116, 1125, 1127, 1126, 1119, 1124, 0, 1123, 1118, 1127, + 1131, 1128, 1130, 1125, 1117, 1118, 1133, 1122, 1120, 1132, + 1128, 1123, 1128, 1124, 1126, 1128, 1136, 1135, 1125, 1127, + 1126, 1134, 0, 1128, 1137, 1130, 1131, 1131, 1128, 1130, + 1135, 1132, 1137, 1133, 1139, 1140, 1132, 1128, 1138, 1128, + + 1136, 1134, 1128, 1136, 1135, 1141, 1143, 1138, 1134, 1142, + 1144, 1137, 1139, 1141, 1145, 1148, 1149, 1140, 1146, 0, + 0, 1139, 1140, 1144, 1142, 1138, 1146, 1150, 1143, 1152, + 1145, 0, 1141, 1143, 1153, 1154, 1142, 1144, 1149, 1151, + 1155, 1145, 1148, 1149, 1160, 1146, 1151, 1156, 1158, 1150, + 1157, 1152, 1155, 1154, 1150, 1161, 1152, 1153, 1157, 1156, + 1159, 1153, 1154, 1158, 1160, 1162, 1151, 1155, 1165, 1166, + 1161, 1160, 1159, 1162, 1156, 1158, 1164, 1157, 1163, 1167, + 1169, 1166, 1161, 1168, 1163, 1164, 1167, 1159, 1170, 1165, + 1168, 1171, 1162, 1172, 1173, 1165, 1166, 1176, 1169, 1171, + + 1170, 1175, 1173, 1164, 1176, 1163, 1167, 1169, 1172, 1174, + 1168, 1174, 1178, 1175, 1179, 1170, 1180, 0, 1171, 1181, + 1172, 1173, 1183, 1182, 1176, 1184, 1179, 1185, 1175, 1180, + 1182, 1187, 1186, 1183, 1190, 1188, 1174, 1186, 1181, 1187, + 1195, 1179, 1185, 1180, 1178, 1189, 1181, 1184, 1188, 1183, + 1182, 1192, 1184, 0, 1185, 1194, 1193, 1196, 1187, 1189, + 1190, 1190, 1188, 1224, 1186, 1192, 1195, 1195, 0, 1198, + 1197, 1199, 1189, 1191, 1193, 1224, 1201, 1191, 1192, 1196, + 1191, 1191, 0, 1193, 1196, 1191, 1202, 1194, 1197, 1200, + 1224, 1191, 1202, 1199, 1203, 1191, 1206, 1197, 1199, 1191, + + 1191, 1198, 1201, 1201, 1191, 1206, 1207, 1191, 1191, 1209, + 0, 1200, 1191, 1202, 1210, 1204, 1200, 1204, 1191, 1205, + 1203, 1203, 1191, 1206, 1207, 1208, 1205, 1210, 1211, 1212, + 1213, 1209, 1208, 1207, 0, 0, 1209, 1211, 1214, 1204, + 1215, 1210, 1204, 1218, 1204, 1219, 1205, 1217, 0, 1220, + 1220, 0, 1208, 0, 0, 1211, 1218, 1225, 1223, 0, + 1214, 1212, 1213, 1215, 1221, 1214, 1225, 1215, 1216, 1217, + 1218, 1219, 1219, 1216, 1217, 1216, 1226, 1216, 1220, 1216, + 1221, 1223, 1227, 1228, 1225, 1223, 1216, 1227, 1229, 1230, + 1232, 1221, 1231, 1229, 1226, 1216, 1235, 1236, 1237, 1233, + + 1216, 1228, 1216, 1226, 1216, 1231, 1216, 1233, 1232, 1235, + 1228, 1230, 1234, 1238, 1227, 1229, 1230, 1232, 1239, 1231, + 1234, 1240, 1241, 1235, 1237, 1237, 1233, 1243, 1242, 1236, + 1246, 1239, 1238, 1244, 1245, 1241, 1245, 1247, 1248, 1234, + 1238, 1249, 1244, 1240, 1250, 1239, 1242, 1243, 1240, 1241, + 1248, 1252, 1246, 0, 1243, 1242, 1255, 1246, 1253, 1254, + 1244, 1245, 1256, 1257, 1247, 1248, 1258, 1254, 1249, 1250, + 1257, 1250, 1259, 1260, 1255, 1252, 1261, 1263, 1252, 1268, + 1253, 1262, 1261, 1255, 1264, 1253, 1254, 1262, 1265, 1256, + 1257, 1264, 1267, 1258, 1266, 1260, 1270, 1268, 1259, 1259, + + 1260, 1266, 1269, 1261, 1263, 1270, 1268, 1272, 1262, 1277, + 1273, 1264, 1265, 1274, 1267, 1265, 1276, 1275, 1284, 1267, + 1278, 1266, 1273, 1270, 1279, 1288, 1281, 1269, 1277, 1269, + 1275, 1272, 1280, 1282, 1272, 1274, 1277, 1273, 1276, 1284, + 1274, 1283, 1278, 1276, 1275, 1284, 1285, 1278, 1279, 1286, + 1283, 1279, 1281, 1281, 1280, 1282, 1289, 1288, 1290, 1280, + 1282, 1291, 1293, 1286, 1292, 1294, 1285, 1295, 1283, 1301, + 1293, 1296, 1298, 1285, 0, 1302, 1286, 1305, 1296, 1299, + 1290, 1294, 1292, 1300, 1298, 1290, 1299, 1300, 1289, 1293, + 1303, 1292, 1294, 1291, 1295, 0, 1307, 1308, 1296, 1298, + + 1310, 1301, 1306, 1307, 1308, 1309, 1299, 1302, 1306, 1305, + 1300, 1303, 1311, 1310, 1312, 1306, 1316, 1303, 1313, 1317, + 1309, 1311, 1315, 1307, 1308, 1313, 1314, 1310, 1314, 1306, + 1318, 1315, 1309, 1319, 1318, 1306, 1321, 1322, 1316, 1311, + 1312, 1312, 1322, 1316, 1321, 1313, 1317, 1323, 1324, 1315, + 1327, 1325, 1326, 1314, 1330, 1319, 1323, 1318, 1331, 1335, + 1319, 1328, 1327, 1321, 1328, 1326, 1324, 1332, 1329, 1322, + 1325, 1329, 1330, 1328, 1323, 1324, 1334, 1327, 1325, 1326, + 1332, 1330, 1335, 1331, 1336, 1331, 1335, 1337, 1328, 1338, + 1329, 1328, 1337, 1341, 1332, 1329, 1340, 1338, 1329, 1342, + + 1336, 1339, 1339, 1343, 0, 1340, 1344, 1345, 1334, 1348, + 1346, 1336, 1343, 1344, 1355, 1341, 1338, 1346, 1349, 1337, + 1341, 1342, 1348, 1340, 1351, 1352, 1342, 1349, 1339, 1345, + 1343, 1350, 1353, 1344, 1345, 1354, 1348, 1346, 1356, 1357, + 1350, 1353, 1358, 1354, 1359, 1349, 1355, 1357, 1352, 1360, + 1351, 1351, 1352, 1356, 1363, 1358, 1359, 1362, 1350, 1353, + 1361, 1360, 1354, 1364, 1365, 1356, 1357, 1367, 1361, 1358, + 1366, 1359, 1371, 1365, 1363, 1370, 1360, 1368, 1369, 1362, + 1372, 1363, 1370, 1373, 1362, 1364, 1375, 1361, 1366, 1368, + 1364, 1365, 1377, 1367, 1367, 1374, 1369, 1366, 1371, 1371, + + 1376, 1378, 1370, 1377, 1368, 1369, 1380, 1378, 1374, 1379, + 1381, 1382, 1372, 1375, 1383, 1373, 0, 0, 1384, 1377, + 1386, 1376, 1374, 1387, 1389, 1392, 1391, 1376, 1378, 0, + 1388, 1379, 1394, 1389, 1390, 1393, 1379, 1392, 1380, 1391, + 1383, 1383, 1381, 1382, 1384, 1384, 1387, 1386, 1388, 1390, + 1387, 1389, 1392, 1391, 1396, 1393, 1395, 1388, 1394, 1394, + 1397, 1390, 1393, 1395, 1398, 1400, 1399, 1401, 1402, 1411, + 1400, 1404, 1401, 1396, 1399, 1402, 1403, 1398, 1405, 1404, + 0, 1396, 1397, 1395, 1408, 1407, 1405, 1397, 1406, 1409, + 1414, 1398, 1408, 1399, 0, 1402, 1409, 1400, 1404, 1401, + + 1410, 1411, 1403, 1403, 1412, 1405, 1406, 1407, 1416, 1410, + 1415, 1408, 1407, 1413, 1413, 1406, 1409, 1417, 1415, 1425, + 1418, 1422, 1414, 0, 1419, 1420, 1412, 1410, 1418, 1416, + 1421, 1412, 1419, 1420, 1422, 1416, 1423, 1415, 1421, 1430, + 1413, 1424, 1423, 1426, 1429, 1425, 1425, 1418, 1422, 1417, + 1427, 1419, 1420, 1424, 1428, 1431, 1432, 1421, 1427, 1429, + 1434, 1433, 1428, 1423, 0, 1436, 1430, 1426, 1424, 1437, + 1426, 1429, 1435, 1437, 1434, 1440, 1439, 1427, 1432, 1436, + 1444, 1428, 1431, 1432, 1433, 1439, 1437, 1434, 1433, 1441, + 1435, 1442, 1436, 1443, 1437, 1445, 1437, 1440, 1442, 1435, + + 1437, 1441, 1440, 1439, 1443, 1446, 1449, 1444, 1450, 1447, + 0, 1448, 1457, 1437, 0, 1456, 1441, 1445, 1442, 1451, + 1443, 1447, 1445, 1452, 0, 1448, 1454, 1455, 1449, 1463, + 1452, 1450, 1453, 1449, 1455, 1450, 1447, 1446, 1448, 1457, + 1459, 1453, 1451, 1462, 1454, 1461, 1451, 1456, 1464, 1459, + 1452, 1461, 1467, 1454, 1455, 1463, 1463, 1465, 1469, 1453, + 1470, 0, 1471, 1472, 1465, 1462, 0, 1459, 1474, 1475, + 1462, 1477, 1461, 1471, 1472, 1476, 1475, 1479, 1480, 1467, + 1464, 1481, 1469, 1479, 1465, 1469, 1480, 1470, 1478, 1471, + 1472, 1483, 1474, 1476, 1482, 1474, 1475, 1477, 1477, 1488, + + 1478, 1484, 1476, 1481, 1479, 1480, 1488, 1482, 1481, 1489, + 1486, 1485, 1487, 1493, 1487, 1478, 1490, 1483, 1483, 1484, + 1485, 1482, 1486, 1491, 1492, 1493, 1488, 1494, 1484, 1490, + 1495, 1504, 1491, 1497, 1496, 1489, 1489, 1486, 1485, 1487, + 1493, 1496, 1498, 1490, 1500, 1505, 1492, 1498, 1499, 1507, + 1491, 1492, 1502, 1495, 1494, 1501, 1505, 1495, 1504, 1497, + 1497, 1496, 1507, 1501, 1499, 1508, 1508, 1500, 1506, 1498, + 1509, 1500, 1505, 1508, 1502, 1499, 1507, 1506, 1510, 1502, + 1510, 1511, 1501, 1509, 1512, 1515, 1516, 1513, 1517, 1514, + 0, 1518, 1508, 1508, 1513, 1506, 1514, 1509, 1518, 1519, + + 1520, 1521, 1522, 1523, 1516, 1510, 1512, 1511, 1511, 1522, + 1517, 1512, 1515, 1516, 1513, 1517, 1514, 1525, 1518, 1526, + 1527, 1528, 1520, 1530, 1519, 1532, 1519, 1520, 1527, 1522, + 1525, 1531, 1535, 1521, 1531, 1523, 1533, 1536, 0, 1538, + 1534, 1535, 1528, 1543, 1525, 1530, 1526, 1527, 1528, 1536, + 1530, 1532, 1532, 1534, 1537, 1540, 1545, 1544, 1531, 1535, + 1539, 1541, 1533, 1533, 1536, 1538, 1538, 1534, 1541, 1539, + 1540, 1542, 1545, 1547, 1542, 1543, 1551, 1552, 1537, 1544, + 1545, 1537, 1540, 1545, 1544, 1548, 1542, 1539, 1541, 1554, + 1549, 1547, 1549, 1553, 1550, 1542, 1555, 1558, 1542, 1545, + + 1547, 1542, 1556, 1551, 1557, 1560, 1559, 1548, 1562, 1552, + 1564, 1554, 1548, 1542, 1560, 1562, 1554, 1549, 1550, 1558, + 1559, 1550, 1555, 1555, 1558, 1553, 1561, 1563, 1556, 1556, + 1565, 1567, 1560, 1559, 1561, 1562, 1557, 1566, 1569, 1568, + 1570, 0, 1564, 1568, 1575, 1573, 1571, 1572, 1574, 1578, + 0, 1563, 1573, 1561, 1563, 1574, 1572, 1575, 1578, 1566, + 1569, 1580, 1565, 1567, 1566, 1569, 1568, 1570, 1571, 1576, + 1577, 1575, 1573, 1571, 1572, 1574, 1578, 1579, 1581, 1579, + 1584, 1582, 1576, 1577, 1580, 1585, 1587, 1586, 1580, 1582, + 1594, 0, 1588, 3053, 3053, 1584, 1576, 1577, 1589, 1588, + + 1585, 1586, 1591, 1581, 1579, 1581, 1590, 1584, 1582, 1589, + 1592, 1597, 1585, 1590, 1586, 1591, 1592, 1594, 1587, 1588, + 1595, 1596, 3053, 1598, 1599, 1589, 1597, 1595, 1600, 1591, + 1602, 1601, 1604, 1590, 1601, 1603, 1599, 1592, 1597, 1602, + 1605, 1600, 0, 1596, 1604, 1607, 1612, 1595, 1596, 1598, + 1598, 1599, 1629, 1603, 1613, 1600, 1607, 1602, 1601, 1604, + 1605, 1606, 1603, 1609, 1606, 1614, 1618, 1605, 1609, 1611, + 1612, 1611, 1607, 1612, 1615, 1609, 1616, 1621, 1617, 1606, + 1619, 1613, 0, 0, 1629, 1616, 1622, 1630, 1606, 1615, + 1609, 1606, 1614, 1618, 1619, 1609, 1611, 1625, 1620, 1621, + + 1624, 1615, 1617, 1616, 1621, 1617, 1620, 1619, 1622, 1623, + 1626, 1624, 1628, 1622, 1630, 1625, 1627, 1623, 1626, 1627, + 1633, 1631, 1634, 1637, 1625, 1620, 1632, 1624, 1631, 1633, + 1628, 1635, 0, 1636, 1627, 1634, 1623, 1626, 1636, 1628, + 1632, 1638, 1635, 1627, 1643, 1637, 1627, 1633, 1631, 1634, + 1637, 1642, 1641, 1632, 1641, 1644, 1638, 1645, 1635, 1646, + 1642, 0, 1647, 1649, 1650, 1636, 1644, 0, 1638, 1648, + 1643, 1643, 1648, 1650, 1651, 1645, 1647, 0, 1642, 1641, + 1651, 1646, 1644, 1652, 1645, 1649, 1646, 1648, 1647, 1647, + 1649, 1650, 1652, 1653, 1655, 1657, 1648, 1656, 1653, 1648, + + 1657, 1651, 1659, 1647, 1658, 1660, 1661, 1655, 1662, 1656, + 1652, 0, 1665, 0, 1660, 1663, 1664, 1670, 1666, 1673, + 1668, 1655, 1657, 1669, 1656, 1653, 1658, 1668, 0, 1664, + 0, 1658, 1660, 1661, 1659, 1672, 1669, 1663, 1671, 1666, + 1662, 1672, 1663, 1664, 1665, 1666, 1677, 1668, 1675, 1670, + 1669, 1673, 1671, 1678, 1677, 1679, 1681, 1682, 1680, 1672, + 1685, 1678, 1672, 1686, 1683, 1671, 1684, 1675, 1672, 1687, + 1681, 1682, 1688, 1677, 1679, 1675, 1680, 1683, 1689, 1684, + 1678, 1685, 1679, 1681, 1682, 1680, 1688, 1685, 1691, 1690, + 1692, 1683, 1693, 1684, 1695, 1686, 1690, 1691, 1692, 1688, + + 1694, 1687, 1696, 1698, 1700, 1689, 1701, 1696, 1685, 1697, + 1703, 1702, 1698, 1701, 1694, 1691, 1690, 1692, 1704, 1693, + 1697, 1705, 1711, 1706, 1707, 0, 1695, 1694, 1707, 1696, + 1698, 1700, 1703, 1701, 1702, 1710, 1697, 1703, 1702, 1709, + 1704, 1706, 1713, 1705, 1712, 1704, 1715, 1710, 1705, 1711, + 1706, 1707, 1712, 1714, 1709, 1716, 1717, 1713, 1722, 1718, + 1719, 1714, 1710, 1723, 1721, 1722, 1709, 1726, 1716, 1713, + 1725, 1712, 1721, 1715, 1718, 1719, 1717, 1724, 1727, 1725, + 1714, 1733, 1716, 1717, 1728, 1722, 1718, 1719, 1726, 1729, + 1731, 1721, 1724, 1734, 1726, 1723, 1732, 1725, 1737, 1736, + + 1735, 1739, 1738, 0, 1724, 1727, 1739, 1754, 1728, 1738, + 1740, 1728, 1731, 1733, 1732, 1735, 1729, 1731, 1742, 1740, + 1734, 1741, 1737, 1732, 1736, 1737, 1736, 1735, 1739, 1738, + 1741, 1743, 1744, 1747, 1745, 1746, 1749, 1740, 1748, 1754, + 1742, 1753, 1752, 1749, 1751, 1742, 1755, 1746, 1741, 1745, + 1744, 1748, 1755, 1743, 1752, 1747, 1748, 1750, 1743, 1744, + 1747, 1745, 1746, 1749, 1750, 1748, 1751, 1757, 1753, 1752, + 1759, 1751, 1758, 1755, 1763, 1757, 1760, 1761, 1748, 1750, + 1758, 1759, 1764, 1760, 1750, 1762, 1765, 1762, 1766, 1767, + 1769, 1750, 1768, 1771, 1757, 1766, 1769, 1759, 1762, 1758, + + 1763, 1763, 1761, 1760, 1761, 1770, 1772, 1773, 1776, 1764, + 1774, 1770, 1762, 1765, 1762, 1766, 1767, 1769, 1768, 1768, + 1771, 1777, 1778, 1779, 1781, 1779, 1784, 1790, 1780, 1772, + 1777, 1782, 1770, 1772, 1774, 1783, 1786, 1774, 1782, 1773, + 1776, 1788, 1786, 1787, 1785, 0, 0, 1789, 1777, 0, + 1779, 1781, 1780, 1784, 1778, 1780, 1785, 1783, 1782, 1790, + 1795, 0, 1783, 1786, 1802, 1787, 1792, 1788, 1788, 1789, + 1787, 1785, 1793, 1792, 1789, 1791, 1791, 1791, 1794, 1796, + 1802, 1793, 1791, 1798, 1799, 1794, 1796, 1801, 1798, 1800, + 1791, 1802, 1795, 1792, 1804, 1803, 1808, 1799, 1810, 1793, + + 1805, 1800, 1791, 1791, 1791, 1794, 1796, 1803, 0, 1791, + 1806, 1799, 1801, 1807, 1801, 1798, 1800, 1806, 1805, 1807, + 1809, 1809, 1803, 1808, 1810, 1810, 1804, 1805, 1811, 1812, + 0, 1813, 1814, 1818, 1812, 1811, 1815, 1806, 1824, 1819, + 1807, 1819, 1823, 1815, 1820, 1825, 1822, 1809, 1823, 1831, + 1829, 1830, 1830, 1827, 1828, 1811, 1812, 1813, 1813, 1814, + 1818, 1826, 1820, 1815, 1822, 1827, 1819, 1826, 1829, 1823, + 1824, 1820, 1825, 1822, 1828, 1831, 1831, 1829, 1830, 1833, + 1827, 1828, 1832, 1832, 1836, 1835, 1837, 1839, 1826, 0, + 1833, 1838, 1843, 1837, 1842, 1840, 1844, 0, 0, 1846, + + 0, 1847, 1842, 1845, 0, 0, 1833, 1835, 1847, 1832, + 1850, 1838, 1835, 1837, 1849, 1854, 1836, 1846, 1838, 1839, + 1840, 1842, 1840, 1844, 1843, 1845, 1846, 1848, 1847, 1849, + 1845, 1851, 1852, 1852, 1850, 1848, 1853, 1850, 1855, 1856, + 1851, 1849, 1860, 0, 1857, 1858, 1856, 1854, 1861, 1860, + 1863, 1862, 1864, 1861, 1848, 1865, 1857, 1867, 1851, 1852, + 1864, 1858, 1853, 1853, 1868, 1867, 1856, 1865, 1858, 1860, + 1855, 1857, 1858, 1862, 1869, 1861, 1870, 1863, 1862, 1864, + 1871, 1872, 1865, 1873, 1867, 1875, 1876, 1868, 1858, 1874, + 0, 1868, 1876, 1879, 1874, 1880, 1877, 1870, 1871, 1882, + + 1869, 1869, 1880, 1870, 1896, 1874, 1873, 1871, 1872, 1877, + 1873, 1878, 1875, 1876, 1883, 1879, 1874, 1881, 1884, 1878, + 1879, 1874, 1880, 1877, 1881, 1885, 1883, 1886, 1887, 1889, + 1890, 1882, 1891, 1892, 1894, 1890, 1896, 1895, 1878, 1891, + 1884, 1883, 1895, 1898, 1881, 1884, 1890, 1889, 0, 1899, + 1899, 1887, 1885, 1886, 1886, 1887, 1889, 1890, 1900, 1891, + 1892, 1894, 1890, 1901, 1902, 1905, 1904, 1906, 1907, 1895, + 1907, 1908, 1909, 1910, 0, 1898, 1899, 1909, 1901, 1911, + 1900, 1904, 1906, 1912, 1920, 1900, 1916, 1914, 1905, 1915, + 1901, 1918, 1905, 1904, 1906, 1907, 1902, 1915, 1912, 1909, + + 1919, 1911, 1914, 1908, 1921, 1910, 1911, 1924, 1916, 1923, + 1912, 1920, 1922, 1916, 1914, 1918, 1915, 1926, 1918, 1922, + 1925, 1929, 1927, 0, 1933, 0, 1919, 1919, 1924, 1931, + 1932, 1921, 1937, 1938, 1924, 0, 0, 1935, 1926, 1922, + 1927, 1923, 1925, 1929, 1926, 1932, 1936, 1925, 1929, 1927, + 1933, 1933, 1935, 1931, 1937, 1940, 1931, 1932, 1939, 1937, + 1938, 1936, 1941, 1942, 1935, 1943, 1946, 1944, 1945, 1949, + 1947, 1950, 1951, 1936, 1944, 1946, 1939, 1940, 1947, 1948, + 1952, 1951, 1940, 0, 1941, 1939, 1945, 1942, 1954, 1941, + 1942, 1949, 1943, 1946, 1944, 1945, 1949, 1947, 1952, 1951, + + 1953, 1954, 1948, 1950, 0, 1956, 1948, 1952, 1957, 1953, + 1958, 1959, 0, 1960, 0, 1954, 1956, 1957, 1959, 1962, + 1963, 1968, 1964, 1961, 0, 1971, 1963, 1953, 1958, 1976, + 1970, 1956, 1956, 1974, 1962, 1957, 1971, 1958, 1959, 1960, + 1960, 1961, 1965, 1956, 1964, 1974, 1962, 1963, 1968, 1964, + 1961, 1972, 1971, 1975, 1970, 1977, 1965, 1970, 1978, 1980, + 1974, 1976, 1972, 1979, 1981, 1977, 1975, 1983, 1986, 1965, + 1984, 1987, 1986, 1988, 0, 1992, 1990, 0, 1972, 1989, + 1975, 1990, 1977, 1981, 1978, 1978, 1980, 0, 1979, 1993, + 1979, 1981, 1987, 1991, 1983, 1986, 1984, 1984, 1987, 1989, + + 1991, 1992, 1992, 1990, 1994, 1988, 1989, 1993, 1995, 1996, + 1994, 1998, 2003, 1997, 1999, 1999, 1993, 2000, 2004, 2003, + 1991, 2001, 2004, 1995, 1996, 1997, 1998, 2006, 2005, 2000, + 0, 1994, 0, 2009, 2001, 1995, 1996, 2007, 1998, 2003, + 1997, 1999, 2001, 2005, 2000, 2004, 2007, 2010, 2001, 2008, + 2013, 2011, 2019, 2015, 2006, 2005, 2008, 2009, 2011, 2014, + 2009, 2001, 2015, 2016, 2007, 2022, 2021, 2017, 2029, 2010, + 2019, 2024, 2013, 2023, 2010, 2021, 2008, 2013, 2011, 2019, + 2015, 2025, 2027, 2022, 2014, 2016, 2014, 2017, 2023, 2025, + 2016, 2028, 2022, 2021, 2017, 2029, 2024, 2031, 2024, 2033, + + 2023, 2030, 2030, 2037, 2028, 2032, 0, 2027, 2025, 2027, + 2036, 2034, 2038, 2035, 2046, 2039, 2040, 2036, 2028, 2031, + 2041, 2033, 2035, 2047, 2031, 2041, 2033, 2042, 2030, 2039, + 2032, 2040, 2032, 2034, 2038, 2037, 2044, 2036, 2034, 2038, + 2035, 2046, 2039, 2040, 2044, 2045, 2042, 2048, 2049, 2047, + 2047, 2050, 2041, 2052, 2042, 2049, 0, 2051, 2045, 2048, + 2053, 2055, 2054, 2044, 2057, 0, 2058, 2056, 2059, 2053, + 2054, 0, 2045, 0, 2048, 2049, 2060, 0, 2052, 2051, + 2052, 2054, 2056, 2050, 2051, 2064, 2059, 2053, 2055, 2054, + 2057, 2057, 2058, 2058, 2056, 2059, 2061, 2054, 2060, 2063, + + 2065, 2067, 2063, 2060, 2066, 2061, 2065, 2068, 0, 2066, + 2064, 0, 2064, 2072, 0, 2069, 2067, 2063, 2071, 2073, + 2078, 0, 0, 2061, 2075, 2068, 2063, 2065, 2067, 2063, + 2069, 2077, 2076, 2071, 2068, 2072, 2066, 2081, 2075, 2076, + 2072, 2073, 2069, 2079, 2080, 2071, 2073, 2078, 2081, 2077, + 2082, 2075, 2079, 2080, 2083, 2087, 2088, 2085, 2077, 2076, + 2086, 2090, 2087, 2082, 2081, 2095, 2083, 2089, 2101, 2096, + 2079, 2080, 2085, 2096, 0, 2086, 0, 2082, 2088, 2090, + 2093, 2083, 2087, 2088, 2085, 2097, 2095, 2086, 2090, 2089, + 2098, 2100, 2095, 2093, 2089, 2101, 2096, 2097, 2099, 2098, + + 2099, 2093, 2103, 2102, 2105, 2104, 2106, 2093, 2107, 2100, + 2108, 2109, 2097, 2104, 2110, 2108, 2109, 2098, 2100, 2111, + 2093, 2102, 2107, 2112, 2124, 2099, 2113, 2105, 2106, 2103, + 2102, 2105, 2104, 2106, 2114, 2107, 2117, 2108, 2129, 0, + 2118, 2114, 2119, 2109, 2120, 2113, 2110, 2112, 2121, 2122, + 2112, 2111, 2126, 2113, 2118, 2125, 2124, 2127, 2128, 2123, + 2119, 2114, 0, 2117, 2122, 2118, 2118, 2118, 2123, 2119, + 2129, 2120, 2131, 2133, 2121, 2121, 2122, 2125, 2126, 2126, + 2128, 2118, 2125, 2132, 2127, 2128, 2123, 2134, 0, 2136, + 2132, 2136, 2118, 2137, 2134, 2131, 2133, 2138, 0, 2131, + + 2133, 2138, 2141, 2140, 2144, 2139, 2143, 2142, 2146, 2148, + 2132, 2141, 0, 2143, 2134, 2137, 2136, 2139, 2142, 2147, + 2137, 2148, 2145, 2149, 2138, 2140, 2144, 2145, 2152, 2141, + 2140, 2144, 2139, 2143, 2142, 2146, 2148, 2150, 2150, 2151, + 2154, 2157, 2147, 2152, 2153, 2149, 2147, 2155, 2151, 2145, + 2149, 2156, 2153, 2159, 2162, 2152, 2163, 2160, 2162, 2163, + 2156, 2155, 2154, 2169, 2150, 2160, 2151, 2154, 2157, 2161, + 2165, 2153, 2159, 2166, 2155, 2169, 2165, 2161, 2156, 2164, + 2159, 2162, 2172, 2163, 2160, 2167, 2173, 2164, 2166, 2171, + 2169, 2167, 2174, 2175, 0, 2172, 2161, 2165, 2177, 2176, + + 2166, 2178, 2182, 2171, 2181, 2179, 2164, 2173, 2183, 2172, + 2180, 2184, 2167, 2173, 2187, 2178, 2171, 2174, 2179, 2174, + 2175, 2176, 2177, 2189, 2180, 2177, 2176, 2185, 2178, 2182, + 2181, 2181, 2179, 2183, 2186, 2183, 2190, 2180, 2184, 2185, + 2187, 2187, 2188, 2191, 2193, 2188, 2194, 2196, 2186, 2195, + 2189, 2197, 2198, 2194, 2185, 2200, 2195, 2202, 2204, 2199, + 2188, 2186, 2196, 2190, 2205, 2191, 2193, 2199, 2201, 2188, + 2191, 2193, 2188, 2194, 2196, 2203, 2195, 2201, 2197, 2198, + 2204, 2206, 2200, 2207, 2202, 2204, 2199, 2203, 2208, 2210, + 2209, 2205, 2212, 2213, 2215, 2201, 2207, 2210, 2219, 2214, + + 2216, 2217, 2203, 2209, 2220, 2218, 2208, 2214, 2206, 2216, + 2207, 0, 2223, 2219, 2212, 2208, 2210, 2209, 0, 2212, + 2213, 2215, 2217, 2222, 2219, 2219, 2214, 2216, 2217, 2218, + 2221, 2220, 2218, 2225, 2226, 2222, 2227, 2223, 2221, 2223, + 2219, 2229, 2226, 2230, 2231, 2225, 2232, 2230, 2229, 2233, + 2222, 2234, 2235, 2236, 2237, 2239, 2231, 2221, 0, 2234, + 2225, 2226, 2242, 2227, 2251, 2236, 2237, 2241, 2229, 2232, + 2230, 2231, 2246, 2232, 2235, 2242, 2233, 2240, 2234, 2235, + 2236, 2237, 2239, 2243, 2240, 2247, 2244, 2241, 0, 2242, + 2245, 2245, 2243, 2248, 2241, 2244, 2251, 2253, 2246, 2246, + + 2252, 2259, 2259, 2247, 2240, 2264, 2249, 2254, 2256, 2255, + 2243, 2255, 2247, 2244, 2263, 2252, 2258, 2245, 2248, 2253, + 2248, 2249, 2256, 2249, 2253, 2257, 2263, 2252, 2259, 2254, + 2249, 2257, 2261, 2249, 2254, 2256, 2255, 2264, 2258, 2262, + 2265, 2263, 2266, 2258, 0, 2269, 2265, 2269, 2249, 2267, + 2249, 2268, 2257, 2271, 2261, 2270, 2277, 2272, 0, 2261, + 0, 2262, 2278, 2273, 2279, 2274, 2262, 2265, 2275, 2270, + 2285, 2267, 2269, 2268, 2266, 2272, 2267, 2271, 2268, 2283, + 2271, 2273, 2270, 2274, 2272, 2276, 2275, 2279, 2277, 2281, + 2273, 2279, 2274, 2284, 2278, 2275, 2281, 2283, 2276, 2286, + + 2287, 2288, 2285, 2288, 2290, 2292, 2283, 2286, 2288, 2296, + 2291, 2293, 2276, 0, 0, 2290, 2281, 2294, 2297, 2284, + 2284, 2291, 2287, 2293, 2296, 2286, 2286, 2287, 2288, 2297, + 2288, 2290, 2292, 2299, 2286, 2294, 2296, 2291, 2293, 2298, + 2301, 2302, 2303, 2304, 2294, 2297, 2305, 2308, 2299, 2303, + 2306, 2298, 2311, 2310, 2309, 2312, 2314, 0, 2304, 2315, + 2299, 2313, 2321, 2302, 2301, 2316, 2298, 2301, 2302, 2303, + 2304, 0, 2315, 2305, 2308, 2310, 2306, 2306, 2309, 2313, + 2310, 2309, 2317, 2314, 2311, 2318, 2315, 2312, 2313, 2320, + 2322, 2316, 2316, 2319, 2321, 0, 2323, 2317, 2318, 2325, + + 2326, 2319, 2327, 2322, 0, 2333, 2328, 2329, 0, 2317, + 0, 0, 2318, 2330, 2331, 2320, 2320, 2322, 2323, 2332, + 2319, 2331, 2325, 2323, 2326, 2329, 2325, 2326, 2328, 2327, + 2334, 2330, 2333, 2328, 2329, 2339, 2336, 2340, 2337, 2342, + 2330, 2331, 2332, 2338, 2334, 2337, 2332, 2341, 2339, 2343, + 2338, 2344, 0, 2354, 2341, 0, 2368, 2334, 2336, 2345, + 2340, 2342, 2339, 2336, 2340, 2337, 2342, 2346, 2345, 2347, + 2338, 2348, 2344, 2349, 2341, 2346, 2351, 2347, 2344, 2349, + 2353, 2343, 2355, 2356, 2352, 2354, 2345, 2358, 2368, 2361, + 0, 2351, 2370, 2348, 2346, 2352, 2347, 2362, 2348, 2360, + + 2349, 2355, 2353, 2351, 2364, 2358, 2367, 2353, 2356, 2355, + 2356, 2352, 2360, 2369, 2358, 2361, 2361, 2363, 2363, 2370, + 2371, 2362, 2374, 2376, 2362, 2379, 2360, 2386, 2369, 2367, + 2364, 2364, 2376, 2367, 2382, 2378, 2379, 2384, 2371, 2388, + 2369, 2383, 2383, 2385, 2363, 2390, 2391, 2371, 2378, 2374, + 2376, 2400, 2379, 2394, 2386, 2393, 2382, 2397, 2392, 2384, + 2393, 2382, 2378, 2396, 2384, 2385, 2388, 2403, 2383, 2392, + 2385, 2396, 2391, 2391, 2398, 2394, 2399, 2390, 2400, 2402, + 2394, 2397, 2393, 2404, 2397, 2392, 2405, 2407, 2408, 2398, + 2396, 2399, 2404, 2412, 2409, 2410, 2413, 2402, 2405, 2403, + + 0, 2398, 2409, 2399, 2410, 2414, 2402, 2415, 2416, 2417, + 2404, 2419, 2408, 2405, 2407, 2408, 2415, 2418, 2421, 2412, + 2412, 2409, 2410, 2413, 2419, 2422, 2416, 2414, 2420, 2425, + 2423, 2417, 2414, 2421, 2415, 2416, 2417, 2423, 2419, 2424, + 2426, 2420, 2418, 2427, 2418, 2421, 2424, 2422, 2428, 2429, + 2430, 2425, 2422, 2431, 0, 2420, 2425, 2423, 2433, 2432, + 0, 2434, 2431, 2435, 2436, 2430, 2424, 2426, 2439, 2441, + 2427, 2442, 2438, 0, 0, 2428, 2429, 2430, 2435, 2436, + 2431, 2432, 2437, 2438, 2433, 2433, 2432, 2434, 2434, 2437, + 2435, 2436, 2440, 2444, 2443, 2439, 2441, 2445, 2442, 2438, + + 2440, 2446, 2451, 2448, 2447, 2449, 2450, 0, 2444, 2437, + 2443, 2447, 2449, 2450, 2453, 2453, 2446, 2445, 2452, 2440, + 2444, 2443, 2459, 2455, 2445, 2448, 2457, 2454, 2446, 2451, + 2448, 2447, 2449, 2450, 2454, 2456, 2452, 2455, 2456, 2457, + 2458, 2453, 2460, 2464, 2461, 2452, 2462, 2466, 2459, 2459, + 2455, 2466, 2464, 2457, 2454, 2458, 2461, 2467, 2462, 2465, + 2460, 2469, 2456, 2468, 2465, 2470, 2471, 2458, 2472, 2460, + 2464, 2461, 2473, 2462, 2466, 2475, 2468, 2477, 2479, 2481, + 2478, 2467, 0, 2469, 2467, 0, 2465, 2470, 2469, 2478, + 2468, 2481, 2470, 2471, 2479, 2472, 2487, 2489, 2473, 2473, + + 2480, 2475, 2475, 2477, 2477, 2479, 2481, 2478, 2480, 2483, + 2484, 2486, 2485, 2488, 2487, 2493, 2483, 2485, 2486, 2484, + 2488, 2490, 2489, 2487, 2489, 2491, 2492, 2480, 2490, 2495, + 2496, 2499, 2498, 2501, 2491, 2492, 2483, 2484, 2486, 2485, + 2488, 2493, 2493, 2496, 2497, 2502, 2503, 2505, 2490, 2497, + 2498, 2501, 2491, 2492, 2504, 2503, 2495, 2496, 2499, 2498, + 2501, 2507, 2511, 2504, 2506, 2512, 2508, 2505, 2509, 2510, + 2507, 2497, 2502, 2503, 2505, 2508, 2506, 2510, 2513, 2509, + 2515, 2504, 2516, 2517, 2518, 2513, 2520, 2527, 2507, 2511, + 2514, 2506, 2512, 2508, 2519, 2509, 2510, 2523, 2520, 2514, + + 2521, 2515, 2522, 2519, 2524, 2513, 2526, 2515, 2521, 2516, + 2517, 2524, 2527, 2520, 2527, 2522, 2518, 2514, 2525, 2523, + 2528, 2519, 2530, 2529, 2523, 2525, 2532, 2521, 2526, 2522, + 2535, 2524, 2537, 2526, 2532, 0, 2534, 2536, 2535, 2537, + 2538, 0, 2545, 0, 2539, 2525, 2544, 2528, 2529, 2530, + 2529, 2539, 2536, 2532, 2534, 2548, 2547, 2535, 2540, 2537, + 2546, 2543, 2538, 2534, 2536, 2547, 2540, 2538, 2543, 2545, + 2544, 2539, 2546, 2544, 2549, 2551, 2554, 2550, 2555, 2553, + 2556, 2558, 2548, 2547, 2561, 2540, 0, 2546, 2543, 2550, + 2549, 2553, 2565, 2558, 2556, 2564, 2566, 2563, 2551, 2554, + + 2568, 2549, 2551, 2554, 2550, 2555, 2553, 2556, 2558, 2559, + 2560, 2561, 2563, 2564, 2570, 2565, 2559, 2560, 2567, 2565, + 2569, 2574, 2564, 2566, 2563, 2572, 2567, 2568, 2571, 0, + 2579, 2573, 2570, 2581, 0, 2584, 2559, 2560, 2573, 2571, + 2572, 2570, 2569, 2585, 2580, 2567, 2586, 2569, 2574, 2580, + 2582, 2583, 2572, 2584, 2587, 2571, 2579, 2579, 2573, 2589, + 2581, 2585, 2584, 2592, 2582, 2583, 2587, 2593, 2596, 2594, + 2585, 2580, 2597, 2586, 2598, 2595, 2601, 2582, 2583, 2599, + 2597, 2587, 2594, 2602, 2605, 2592, 2589, 2596, 2601, 2593, + 2592, 2603, 2598, 2606, 2593, 2596, 2594, 2595, 2599, 2597, + + 2604, 2598, 2595, 2601, 2607, 2602, 2599, 2609, 2608, 2615, + 2602, 2605, 2604, 2603, 2610, 2611, 2612, 2613, 2603, 2614, + 2606, 2615, 2617, 2610, 2611, 2616, 2618, 2604, 2608, 2609, + 2622, 2607, 2623, 2624, 2609, 2608, 2615, 2621, 2624, 2613, + 2625, 2610, 2611, 2628, 2613, 2614, 2614, 2616, 2612, 2617, + 2626, 2621, 2616, 2618, 0, 2627, 2623, 2622, 2629, 2623, + 2631, 2630, 2625, 2634, 2621, 2624, 2635, 2625, 2627, 2634, + 2633, 2636, 2626, 2637, 2632, 2628, 0, 2626, 2631, 2638, + 2641, 2629, 2627, 2630, 2640, 2629, 2632, 2631, 2630, 2633, + 2634, 2642, 2646, 2644, 2638, 2637, 2648, 2633, 2635, 2647, + + 2637, 2632, 2641, 2636, 2640, 2648, 2638, 2641, 2644, 2650, + 2649, 2640, 2651, 2653, 2646, 2642, 2652, 2657, 2642, 2646, + 2644, 2647, 0, 2648, 2649, 2656, 2647, 2650, 2662, 2658, + 2651, 2653, 2664, 2661, 2656, 2662, 2650, 2649, 2663, 2651, + 2653, 2661, 2652, 2652, 2665, 2666, 2663, 2669, 2667, 2657, + 2658, 2668, 2656, 2666, 2670, 2662, 2658, 2672, 2676, 2664, + 2661, 2674, 2670, 2668, 2665, 2663, 2667, 2675, 2674, 2672, + 2678, 2665, 2666, 2679, 2669, 2667, 2680, 2677, 2668, 2677, + 2681, 2670, 2682, 2688, 2672, 2676, 2686, 0, 2674, 2683, + 2675, 2690, 2685, 2689, 2675, 0, 2694, 2695, 2696, 2691, + + 2686, 2682, 2678, 2697, 2677, 2679, 2695, 2681, 2680, 2682, + 2685, 2683, 2691, 2686, 2690, 2688, 2683, 2689, 2690, 2685, + 2689, 2692, 2694, 2694, 2695, 2696, 2691, 2699, 2700, 2703, + 2697, 2701, 2705, 2692, 2707, 2706, 2708, 2709, 2711, 2705, + 2712, 2708, 2714, 2715, 0, 2711, 2717, 2716, 2692, 2707, + 2722, 2700, 2709, 2701, 2699, 2700, 2703, 2706, 2701, 2705, + 2717, 2707, 2706, 2719, 2709, 2711, 2712, 2712, 2708, 2714, + 2715, 2716, 2719, 2717, 2716, 2721, 2724, 2722, 2723, 2725, + 2726, 2727, 2721, 2728, 2729, 2730, 2731, 2741, 2736, 2732, + 2719, 2725, 2728, 2736, 2737, 2727, 0, 2729, 2737, 2742, + + 2743, 2742, 2721, 2724, 2723, 2723, 2725, 2726, 2727, 2740, + 2728, 2729, 2732, 2731, 2744, 2738, 2732, 2730, 2739, 2741, + 2736, 2737, 2738, 2743, 2747, 2739, 2742, 2743, 2749, 2750, + 2740, 2752, 0, 2752, 2754, 2753, 2740, 2758, 2755, 2755, + 2760, 2744, 2738, 2757, 2758, 2739, 2747, 2749, 2755, 2756, + 2759, 2747, 2757, 2750, 0, 2749, 2750, 0, 2752, 2753, + 2754, 2754, 2753, 2759, 2758, 2755, 2755, 2760, 2761, 0, + 2757, 2756, 2762, 2763, 2764, 2765, 2756, 2759, 2766, 2767, + 2762, 2761, 2764, 2766, 2767, 2768, 2763, 2769, 0, 2770, + 0, 2771, 0, 2768, 2765, 2761, 2762, 2772, 2774, 2762, + + 2763, 2764, 2765, 2773, 2775, 2778, 2776, 2762, 0, 2774, + 2766, 2767, 2768, 2776, 2769, 2770, 2770, 2771, 2771, 2777, + 2777, 2780, 2781, 2772, 2772, 2774, 2775, 2778, 2779, 2773, + 2773, 2775, 2778, 2776, 2782, 2783, 2779, 2785, 2786, 2787, + 2781, 2782, 2783, 2780, 2788, 2790, 2777, 2791, 2780, 2781, + 2792, 2793, 2795, 2788, 2801, 2779, 0, 2796, 2797, 0, + 2800, 2782, 2783, 2787, 2785, 2786, 2787, 2791, 2798, 2800, + 2802, 2788, 2790, 2793, 2791, 2796, 2797, 2792, 2793, 2795, + 2803, 2801, 2804, 2805, 2796, 2797, 2798, 2800, 2806, 2807, + 2804, 2808, 2815, 2802, 2807, 2798, 2809, 2802, 2803, 2805, + + 2806, 2810, 2817, 2814, 2818, 2808, 2819, 2803, 2819, 2804, + 2805, 2820, 2822, 2830, 2809, 2806, 2823, 2818, 2808, 2815, + 2820, 2807, 2824, 2809, 2810, 2814, 2828, 2844, 2810, 2817, + 2814, 2818, 2832, 2819, 2823, 2836, 2837, 2824, 2820, 2822, + 2827, 2829, 2827, 2823, 2828, 2830, 2834, 2832, 2829, 2824, + 2838, 2839, 2834, 2828, 2844, 0, 2845, 2836, 2837, 2832, + 2841, 2846, 2836, 2837, 2850, 2848, 2847, 2827, 2829, 2839, + 2852, 2842, 2848, 2834, 2842, 0, 2838, 2838, 2839, 2855, + 0, 2849, 2841, 2845, 2847, 2853, 2850, 2841, 2846, 2849, + 2856, 2850, 2848, 2847, 2854, 2857, 2859, 2842, 2842, 2856, + + 2861, 2842, 2852, 2858, 2860, 0, 2855, 2853, 2849, 2858, + 2857, 2863, 2853, 2860, 2865, 0, 2854, 2856, 2859, 2868, + 2866, 2854, 2857, 2859, 2862, 2869, 2862, 2867, 2870, 2875, + 2858, 2860, 2861, 2869, 2879, 2908, 2871, 2865, 2863, 2877, + 2870, 2865, 2866, 2873, 2878, 2868, 2868, 2866, 2871, 2867, + 2873, 2862, 2869, 2877, 2867, 2870, 2875, 2879, 2878, 2880, + 2882, 2879, 2881, 2871, 2883, 0, 2877, 2908, 2882, 2885, + 2873, 2878, 2884, 2881, 2886, 2887, 2889, 2880, 2888, 2888, + 2890, 2893, 2894, 2883, 2887, 2898, 2880, 2882, 2890, 2881, + 0, 2883, 2886, 2903, 2884, 2885, 2885, 2905, 2896, 2884, + + 2900, 2886, 2887, 2889, 2896, 2888, 2901, 2890, 2893, 2894, + 2902, 2900, 2898, 2907, 2909, 2903, 2906, 2901, 2909, 2912, + 2903, 2902, 2910, 2906, 2905, 2896, 2913, 2900, 2914, 2915, + 2910, 2907, 2919, 2901, 2923, 2918, 2914, 2902, 2920, 2913, + 2907, 2909, 2918, 2906, 2924, 2912, 2912, 2922, 2926, 2910, + 2925, 2928, 2922, 2913, 2927, 2914, 2915, 2925, 2930, 2929, + 2920, 2923, 2918, 0, 2919, 2920, 2929, 2926, 2931, 2928, + 2927, 2924, 2932, 2933, 2922, 2926, 2931, 2925, 2928, 2934, + 2933, 2927, 2936, 2935, 2941, 2942, 2929, 2932, 2940, 2943, + 2930, 2941, 2945, 0, 2926, 2931, 2944, 2952, 2949, 2932, + + 2933, 0, 0, 2940, 2946, 2948, 2934, 2935, 2936, 2936, + 2935, 2941, 2950, 2946, 2951, 2940, 2943, 2942, 2953, 2953, + 2944, 2954, 2951, 2944, 2945, 2949, 2959, 2948, 2953, 2952, + 2960, 2946, 2948, 2957, 2950, 2956, 2958, 2965, 2958, 2950, + 2959, 2951, 2957, 2961, 2962, 2953, 2953, 2963, 2954, 2966, + 2956, 2961, 2970, 2959, 2968, 2962, 2967, 2960, 2969, 2971, + 2957, 2972, 2956, 2958, 2965, 2963, 2975, 2968, 2973, 2976, + 2961, 2962, 2974, 2974, 2963, 2978, 2966, 2986, 2967, 2970, + 2969, 2968, 2973, 2967, 2981, 2969, 2971, 2988, 2972, 2983, + 2997, 2976, 2981, 2994, 2983, 2973, 2976, 2991, 2975, 2974, + + 2984, 2985, 2978, 2986, 2986, 2984, 2985, 2989, 2989, 2990, + 2991, 2981, 2992, 2993, 2988, 2995, 2983, 2990, 2998, 2992, + 2994, 2999, 2997, 3003, 2991, 2998, 3005, 2984, 2985, 2999, + 3000, 2993, 3006, 3007, 2989, 3008, 2990, 3011, 0, 2992, + 2993, 3009, 2995, 3010, 3012, 2998, 3007, 3016, 2999, 0, + 3003, 3014, 3000, 3005, 3006, 0, 3009, 3000, 3014, 3006, + 3007, 3017, 3010, 3018, 3011, 3015, 3012, 3008, 3009, 3016, + 3010, 3012, 3015, 3021, 3016, 3020, 3017, 3028, 3014, 3022, + 3023, 3021, 3025, 3028, 3018, 3026, 3022, 3023, 3017, 3029, + 3018, 3025, 3015, 3031, 3020, 3033, 3026, 3034, 3027, 3027, + + 3021, 3041, 3020, 3032, 3028, 3037, 3022, 3023, 3027, 3025, + 3032, 3029, 3026, 3042, 3036, 3031, 3029, 3038, 0, 3034, + 3031, 3036, 3043, 3047, 3034, 3027, 3027, 3033, 3041, 3037, + 3032, 3038, 3037, 3048, 3049, 3050, 3052, 3054, 3054, 0, + 3042, 3036, 3049, 3058, 3038, 3043, 3055, 3055, 0, 3043, + 3047, 3056, 3060, 3059, 0, 3048, 3062, 3065, 3061, 3068, + 3048, 3049, 3050, 3052, 3065, 3058, 3054, 3061, 3067, 3062, + 3058, 3059, 3072, 3073, 3056, 3055, 3074, 3080, 3056, 3060, + 3059, 3066, 3077, 3062, 3065, 3061, 3068, 3071, 3066, 3071, + 3067, 3077, 3072, 3075, 3074, 3067, 3073, 3078, 3081, 3072, + + 3073, 3079, 0, 3074, 3080, 3075, 3082, 3083, 3066, 3077, + 3086, 3088, 3085, 3084, 3071, 3078, 3084, 3085, 3082, 3087, + 3075, 3087, 3093, 3088, 3078, 3081, 3089, 3079, 3079, 3083, + 3090, 3084, 3089, 3082, 3083, 3094, 3091, 3092, 3088, 3095, + 3084, 3096, 3086, 3084, 3085, 3092, 3087, 3097, 3099, 3093, + 3098, 3102, 3090, 3089, 3104, 3105, 3108, 3090, 3091, 3109, + 3095, 3110, 3098, 3091, 3092, 3111, 3095, 3094, 3096, 3112, + 3099, 3113, 3114, 3105, 3097, 3099, 3115, 3098, 3102, 3116, + 3116, 3104, 3105, 3108, 3118, 3119, 3109, 3120, 3110, 3121, + 3122, 3125, 3111, 3124, 3127, 3126, 3112, 3122, 3113, 3114, + + 3128, 3124, 3118, 3115, 3121, 3120, 3116, 3126, 3127, 3129, + 3131, 3118, 3119, 3130, 3120, 3128, 3121, 3122, 3125, 3134, + 3124, 3127, 3126, 3135, 3138, 3130, 3137, 3128, 3134, 3136, + 3136, 3140, 3141, 3138, 3144, 3129, 3129, 3131, 3143, 3145, + 3130, 3142, 3144, 0, 3149, 0, 3134, 3135, 3145, 3152, + 3135, 3138, 3137, 3137, 3142, 3140, 3136, 3148, 3140, 3146, + 3143, 3144, 3149, 3153, 3141, 3143, 3145, 3165, 3142, 3166, + 3146, 3149, 3152, 3156, 3156, 3153, 3152, 3168, 3148, 3169, + 3170, 3171, 3175, 3173, 3148, 3174, 3146, 3173, 3176, 3165, + 3153, 3168, 3181, 3166, 3165, 3176, 3166, 3179, 3177, 0, + + 3156, 3179, 3180, 3174, 3168, 3175, 3169, 3170, 3171, 3175, + 3173, 3177, 3174, 3182, 3181, 3176, 3183, 3185, 3180, 3181, + 3184, 3192, 3186, 3187, 3179, 3177, 3188, 3190, 3183, 3180, + 3186, 3185, 3187, 3189, 3191, 3189, 3192, 3188, 3182, 3190, + 3182, 3193, 3195, 3183, 3185, 3194, 3184, 3184, 3192, 3186, + 3187, 3194, 3191, 3188, 3190, 3196, 3198, 3202, 3197, 3203, + 3189, 3191, 3204, 3193, 3195, 3197, 3203, 3206, 3193, 3195, + 3202, 3207, 3194, 3205, 3208, 3209, 0, 3217, 3198, 3210, + 3212, 3211, 3196, 3198, 3202, 3197, 3203, 3210, 3211, 3204, + 3213, 3205, 3214, 3215, 3206, 3215, 3220, 3207, 3207, 3216, + + 3205, 3208, 3209, 3218, 3212, 3221, 3210, 3212, 3211, 3217, + 3219, 3216, 3213, 3223, 3214, 3222, 3218, 3213, 3220, 3214, + 3215, 3225, 3222, 3220, 3226, 3219, 3216, 3227, 3228, 3230, + 3218, 3235, 3221, 3236, 3232, 3227, 3226, 3219, 3237, 3238, + 3223, 3230, 3222, 3232, 3239, 3240, 3244, 3238, 3225, 0, + 0, 3226, 3245, 3242, 3227, 3228, 3230, 3237, 3235, 3236, + 3236, 3232, 3241, 3243, 3247, 3237, 3238, 3242, 3244, 3253, + 3254, 3243, 3250, 3244, 3251, 3241, 3239, 3240, 3250, 3245, + 3242, 3251, 3253, 3257, 3259, 3256, 3258, 3261, 3260, 3241, + 3243, 3247, 3256, 3254, 3258, 3261, 3253, 3254, 3259, 3250, + + 3262, 3251, 3260, 3263, 3264, 3257, 3270, 3271, 3268, 3267, + 3257, 3259, 3256, 3258, 3261, 3260, 3267, 3268, 3269, 3272, + 3273, 3274, 3262, 0, 3278, 3263, 3269, 3262, 3275, 3271, + 3263, 3264, 3276, 3270, 3271, 3268, 3267, 3280, 3281, 3282, + 3284, 3277, 3286, 3274, 3285, 3269, 3273, 3273, 3274, 3277, + 3275, 3272, 3285, 3287, 3276, 3275, 3278, 3289, 3291, 3276, + 3281, 3287, 3286, 3284, 3280, 3281, 3282, 3284, 3277, 3286, + 3288, 3285, 3291, 3290, 0, 3293, 3295, 3297, 3288, 3300, + 3287, 3290, 3301, 3298, 3299, 3291, 0, 3296, 0, 3289, + 3296, 3298, 3299, 3300, 3302, 3305, 3305, 3288, 3303, 3297, + + 3290, 3293, 3293, 3295, 3297, 3296, 3300, 3306, 3301, 3301, + 3298, 3299, 3303, 3308, 3296, 3307, 3302, 3296, 3309, 3310, + 0, 3302, 3305, 3307, 3312, 3303, 3313, 3311, 3314, 0, + 3316, 3315, 3312, 3306, 3306, 3323, 0, 3320, 0, 3308, + 3308, 3310, 3307, 3317, 3309, 3309, 3310, 3311, 3318, 3326, + 3314, 3312, 3319, 3313, 3311, 3314, 3315, 3316, 3315, 3320, + 3319, 3321, 3323, 3317, 3320, 3324, 3328, 3327, 3318, 3321, + 3317, 3326, 3329, 3324, 3328, 3318, 3326, 3330, 3332, 3319, + 3329, 3335, 3333, 3334, 3336, 3339, 3337, 3340, 3321, 3327, + 3333, 3334, 3324, 3328, 3327, 3341, 3343, 3346, 0, 3329, + + 3349, 0, 3350, 3330, 3330, 3332, 3337, 3335, 3335, 3333, + 3334, 3336, 3339, 3337, 3340, 3341, 0, 3347, 3343, 3346, + 3348, 0, 3341, 3343, 3346, 3347, 0, 3349, 3348, 3350, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3347, 0, 0, 3348, 3354, 3354, + 3354, 3354, 3354, 3354, 3354, 3355, 3355, 3355, 3355, 3355, + 3355, 3355, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3357, + 3357, 3357, 3357, 3357, 3357, 3357, 3358, 3358, 3358, 3358, + 3358, 3358, 3358, 3359, 3359, 3359, 3359, 3359, 3359, 3359, + 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3362, 3362, 0, + + 3362, 3362, 3362, 3362, 3363, 3363, 0, 0, 0, 3363, + 3363, 3364, 3364, 0, 0, 3364, 0, 3364, 3365, 0, + 0, 0, 0, 0, 3365, 3366, 3366, 0, 0, 0, + 3366, 3366, 3367, 0, 0, 0, 0, 0, 3367, 3368, + 3368, 0, 3368, 3368, 3368, 3368, 3369, 0, 0, 0, + 0, 0, 3369, 3370, 3370, 0, 0, 0, 3370, 3370, + 3371, 3371, 0, 3371, 3371, 3371, 3371, 3353, 3353, 3353, + 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, + 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, + 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, + + 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, + 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, + 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, + 3353, 3353, 3353, 3353 } ; static yy_state_type yy_last_accepting_state; @@ -3800,7 +3860,7 @@ static void config_end_include(void) } #endif -#line 3801 "<stdout>" +#line 3861 "<stdout>" #define YY_NO_INPUT 1 #line 191 "util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3809,9 +3869,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3810 "<stdout>" +#line 3870 "<stdout>" -#line 3812 "<stdout>" +#line 3872 "<stdout>" #define INITIAL 0 #define quotedstring 1 @@ -4035,7 +4095,7 @@ YY_DECL { #line 211 "util/configlexer.lex" -#line 4036 "<stdout>" +#line 4096 "<stdout>" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -4068,13 +4128,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 >= 3292 ) + if ( yy_current_state >= 3354 ) 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] != 9388 ); + while ( yy_base[yy_current_state] != 9568 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -5004,466 +5064,466 @@ YY_RULE_SETUP case 181: YY_RULE_SETUP #line 395 "util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_DSA) } +{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } YY_BREAK case 182: YY_RULE_SETUP #line 396 "util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_SHA1) } +{ YDVAR(1, VAR_FAKE_DSA) } YY_BREAK case 183: YY_RULE_SETUP #line 397 "util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_FAKE_SHA1) } YY_BREAK case 184: YY_RULE_SETUP #line 398 "util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 185: YY_RULE_SETUP #line 399 "util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 186: YY_RULE_SETUP #line 400 "util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 187: YY_RULE_SETUP #line 401 "util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 188: YY_RULE_SETUP -#line 403 "util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +#line 402 "util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 189: YY_RULE_SETUP #line 404 "util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 190: YY_RULE_SETUP #line 405 "util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 191: YY_RULE_SETUP #line 406 "util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 192: YY_RULE_SETUP #line 407 "util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 193: YY_RULE_SETUP #line 408 "util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 194: YY_RULE_SETUP #line 409 "util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 195: YY_RULE_SETUP #line 410 "util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 196: YY_RULE_SETUP #line 411 "util/configlexer.lex" -{ YDVAR(1, VAR_LOG_REPLIES) } +{ YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 197: YY_RULE_SETUP #line 412 "util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } +{ YDVAR(1, VAR_LOG_REPLIES) } YY_BREAK case 198: YY_RULE_SETUP #line 413 "util/configlexer.lex" -{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } +{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } YY_BREAK case 199: YY_RULE_SETUP #line 414 "util/configlexer.lex" -{ YDVAR(1, VAR_LOG_SERVFAIL) } +{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } YY_BREAK case 200: YY_RULE_SETUP #line 415 "util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_SERVFAIL) } YY_BREAK case 201: YY_RULE_SETUP #line 416 "util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 202: YY_RULE_SETUP #line 417 "util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 203: YY_RULE_SETUP #line 418 "util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 204: YY_RULE_SETUP #line 419 "util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 205: YY_RULE_SETUP #line 420 "util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 206: YY_RULE_SETUP #line 421 "util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 207: YY_RULE_SETUP #line 422 "util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 208: YY_RULE_SETUP #line 423 "util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 209: YY_RULE_SETUP #line 424 "util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } +{ YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 210: YY_RULE_SETUP #line 425 "util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 211: YY_RULE_SETUP #line 426 "util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 212: YY_RULE_SETUP #line 427 "util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 213: YY_RULE_SETUP #line 428 "util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 214: YY_RULE_SETUP #line 429 "util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 215: YY_RULE_SETUP #line 430 "util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 216: YY_RULE_SETUP #line 431 "util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 217: YY_RULE_SETUP #line 432 "util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 218: YY_RULE_SETUP #line 433 "util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 219: YY_RULE_SETUP #line 434 "util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 220: YY_RULE_SETUP #line 435 "util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 221: YY_RULE_SETUP #line 436 "util/configlexer.lex" -{ YDVAR(1, VAR_DYNLIB_FILE) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 222: YY_RULE_SETUP #line 437 "util/configlexer.lex" -{ YDVAR(0, VAR_DYNLIB) } +{ YDVAR(1, VAR_DYNLIB_FILE) } YY_BREAK case 223: YY_RULE_SETUP #line 438 "util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(0, VAR_DYNLIB) } YY_BREAK case 224: YY_RULE_SETUP #line 439 "util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 225: YY_RULE_SETUP #line 440 "util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 226: YY_RULE_SETUP #line 441 "util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 227: YY_RULE_SETUP #line 442 "util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 228: YY_RULE_SETUP #line 443 "util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 229: YY_RULE_SETUP #line 444 "util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 230: YY_RULE_SETUP #line 445 "util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 231: YY_RULE_SETUP #line 446 "util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 232: YY_RULE_SETUP #line 447 "util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 233: YY_RULE_SETUP #line 448 "util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 234: YY_RULE_SETUP #line 449 "util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 235: YY_RULE_SETUP #line 450 "util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 236: YY_RULE_SETUP #line 451 "util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 237: YY_RULE_SETUP #line 452 "util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 238: YY_RULE_SETUP #line 453 "util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 239: YY_RULE_SETUP #line 454 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 240: YY_RULE_SETUP #line 455 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 241: YY_RULE_SETUP #line 456 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } YY_BREAK case 242: YY_RULE_SETUP #line 457 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 243: YY_RULE_SETUP #line 458 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 244: YY_RULE_SETUP #line 459 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 245: YY_RULE_SETUP #line 460 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 246: YY_RULE_SETUP #line 461 "util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 247: YY_RULE_SETUP -#line 463 "util/configlexer.lex" +#line 462 "util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 248: YY_RULE_SETUP -#line 465 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 464 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 249: YY_RULE_SETUP #line 466 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 250: YY_RULE_SETUP #line 467 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 251: YY_RULE_SETUP #line 468 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 252: YY_RULE_SETUP #line 469 "util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 253: YY_RULE_SETUP -#line 471 "util/configlexer.lex" +#line 470 "util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 254: YY_RULE_SETUP -#line 473 "util/configlexer.lex" +#line 472 "util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 255: YY_RULE_SETUP -#line 475 "util/configlexer.lex" +#line 474 "util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 256: YY_RULE_SETUP -#line 477 "util/configlexer.lex" +#line 476 "util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 257: YY_RULE_SETUP -#line 479 "util/configlexer.lex" +#line 478 "util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 258: YY_RULE_SETUP -#line 481 "util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 480 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 259: YY_RULE_SETUP #line 482 "util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 260: YY_RULE_SETUP #line 483 "util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 261: YY_RULE_SETUP #line 484 "util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 262: YY_RULE_SETUP #line 485 "util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 263: YY_RULE_SETUP #line 486 "util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 264: YY_RULE_SETUP #line 487 "util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 265: YY_RULE_SETUP #line 488 "util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 266: YY_RULE_SETUP #line 489 "util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 267: YY_RULE_SETUP #line 490 "util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 268: YY_RULE_SETUP #line 491 "util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 269: YY_RULE_SETUP #line 492 "util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 270: YY_RULE_SETUP #line 493 "util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 271: YY_RULE_SETUP #line 494 "util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 272: YY_RULE_SETUP @@ -5478,215 +5538,245 @@ YY_RULE_SETUP case 274: YY_RULE_SETUP #line 497 "util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 275: YY_RULE_SETUP #line 498 "util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 276: YY_RULE_SETUP #line 499 "util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 277: YY_RULE_SETUP #line 500 "util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 278: YY_RULE_SETUP #line 501 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 279: YY_RULE_SETUP #line 502 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 280: YY_RULE_SETUP #line 503 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 281: YY_RULE_SETUP #line 504 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 282: YY_RULE_SETUP #line 505 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 283: YY_RULE_SETUP #line 506 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 284: YY_RULE_SETUP #line 507 "util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 285: YY_RULE_SETUP -#line 509 "util/configlexer.lex" +#line 508 "util/configlexer.lex" { - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 286: YY_RULE_SETUP -#line 511 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 510 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 287: YY_RULE_SETUP #line 512 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 288: YY_RULE_SETUP #line 513 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 289: YY_RULE_SETUP #line 514 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_PAD_RESPONSES) } YY_BREAK case 290: YY_RULE_SETUP #line 515 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } YY_BREAK case 291: YY_RULE_SETUP #line 516 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_PAD_QUERIES) } YY_BREAK case 292: YY_RULE_SETUP #line 517 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } YY_BREAK case 293: YY_RULE_SETUP #line 518 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 294: YY_RULE_SETUP #line 519 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 295: YY_RULE_SETUP #line 520 "util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 296: YY_RULE_SETUP #line 521 "util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 297: YY_RULE_SETUP #line 522 "util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 298: YY_RULE_SETUP #line 523 "util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 299: YY_RULE_SETUP #line 524 "util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 300: YY_RULE_SETUP #line 525 "util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 301: YY_RULE_SETUP #line 526 "util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 302: YY_RULE_SETUP #line 527 "util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 303: YY_RULE_SETUP #line 528 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 304: YY_RULE_SETUP #line 529 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 305: YY_RULE_SETUP #line 530 "util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 306: YY_RULE_SETUP #line 531 "util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 307: YY_RULE_SETUP #line 532 "util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 308: YY_RULE_SETUP #line 533 "util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 309: -/* rule 309 can match eol */ YY_RULE_SETUP #line 534 "util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK -/* Quoted strings. Strip leading and ending quotes */ case 310: YY_RULE_SETUP +#line 535 "util/configlexer.lex" +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } + YY_BREAK +case 311: +YY_RULE_SETUP +#line 536 "util/configlexer.lex" +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } + YY_BREAK +case 312: +YY_RULE_SETUP #line 537 "util/configlexer.lex" +{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } + YY_BREAK +case 313: +YY_RULE_SETUP +#line 538 "util/configlexer.lex" +{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } + YY_BREAK +case 314: +YY_RULE_SETUP +#line 539 "util/configlexer.lex" +{ YDVAR(1, VAR_NSID ) } + YY_BREAK +case 315: +/* rule 315 can match eol */ +YY_RULE_SETUP +#line 540 "util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++; } + YY_BREAK +/* Quoted strings. Strip leading and ending quotes */ +case 316: +YY_RULE_SETUP +#line 543 "util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 538 "util/configlexer.lex" +#line 544 "util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 311: +case 317: YY_RULE_SETUP -#line 543 "util/configlexer.lex" +#line 549 "util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 312: -/* rule 312 can match eol */ +case 318: +/* rule 318 can match eol */ YY_RULE_SETUP -#line 544 "util/configlexer.lex" +#line 550 "util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 313: +case 319: YY_RULE_SETUP -#line 546 "util/configlexer.lex" +#line 552 "util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5699,34 +5789,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 314: +case 320: YY_RULE_SETUP -#line 558 "util/configlexer.lex" +#line 564 "util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 559 "util/configlexer.lex" +#line 565 "util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 315: +case 321: YY_RULE_SETUP -#line 564 "util/configlexer.lex" +#line 570 "util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 316: -/* rule 316 can match eol */ +case 322: +/* rule 322 can match eol */ YY_RULE_SETUP -#line 565 "util/configlexer.lex" +#line 571 "util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 317: +case 323: YY_RULE_SETUP -#line 567 "util/configlexer.lex" +#line 573 "util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5739,38 +5829,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 318: +case 324: YY_RULE_SETUP -#line 579 "util/configlexer.lex" +#line 585 "util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 581 "util/configlexer.lex" +#line 587 "util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 319: +case 325: YY_RULE_SETUP -#line 585 "util/configlexer.lex" +#line 591 "util/configlexer.lex" { LEXOUT(("ISP ")); /* ignore */ } YY_BREAK -case 320: -/* rule 320 can match eol */ +case 326: +/* rule 326 can match eol */ YY_RULE_SETUP -#line 586 "util/configlexer.lex" +#line 592 "util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK -case 321: +case 327: YY_RULE_SETUP -#line 587 "util/configlexer.lex" +#line 593 "util/configlexer.lex" { LEXOUT(("IQS ")); BEGIN(include_quoted); } YY_BREAK -case 322: +case 328: YY_RULE_SETUP -#line 588 "util/configlexer.lex" +#line 594 "util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -5778,27 +5868,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 593 "util/configlexer.lex" +#line 599 "util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 323: +case 329: YY_RULE_SETUP -#line 597 "util/configlexer.lex" +#line 603 "util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 324: -/* rule 324 can match eol */ +case 330: +/* rule 330 can match eol */ YY_RULE_SETUP -#line 598 "util/configlexer.lex" +#line 604 "util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 325: +case 331: YY_RULE_SETUP -#line 600 "util/configlexer.lex" +#line 606 "util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -5808,7 +5898,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 606 "util/configlexer.lex" +#line 612 "util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -5823,39 +5913,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 326: +case 332: YY_RULE_SETUP -#line 620 "util/configlexer.lex" +#line 626 "util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 623 "util/configlexer.lex" +#line 629 "util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 327: +case 333: YY_RULE_SETUP -#line 627 "util/configlexer.lex" +#line 633 "util/configlexer.lex" { LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK -case 328: -/* rule 328 can match eol */ +case 334: +/* rule 334 can match eol */ YY_RULE_SETUP -#line 628 "util/configlexer.lex" +#line 634 "util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK -case 329: +case 335: YY_RULE_SETUP -#line 629 "util/configlexer.lex" +#line 635 "util/configlexer.lex" { LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } YY_BREAK -case 330: +case 336: YY_RULE_SETUP -#line 630 "util/configlexer.lex" +#line 636 "util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5864,29 +5954,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 636 "util/configlexer.lex" +#line 642 "util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 331: +case 337: YY_RULE_SETUP -#line 640 "util/configlexer.lex" +#line 646 "util/configlexer.lex" { LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } YY_BREAK -case 332: -/* rule 332 can match eol */ +case 338: +/* rule 338 can match eol */ YY_RULE_SETUP -#line 641 "util/configlexer.lex" +#line 647 "util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 333: +case 339: YY_RULE_SETUP -#line 645 "util/configlexer.lex" +#line 651 "util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5895,33 +5985,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 334: +case 340: YY_RULE_SETUP -#line 653 "util/configlexer.lex" +#line 659 "util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 335: +case 341: YY_RULE_SETUP -#line 657 "util/configlexer.lex" +#line 663 "util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 336: +case 342: YY_RULE_SETUP -#line 661 "util/configlexer.lex" +#line 667 "util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 337: +case 343: YY_RULE_SETUP -#line 665 "util/configlexer.lex" +#line 671 "util/configlexer.lex" ECHO; YY_BREAK -#line 5922 "<stdout>" +#line 6012 "<stdout>" case YY_END_OF_BUFFER: { @@ -6216,7 +6306,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 >= 3292 ) + if ( yy_current_state >= 3354 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -6244,11 +6334,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 >= 3292 ) + if ( yy_current_state >= 3354 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3291); + yy_is_jam = (yy_current_state == 3353); return yy_is_jam ? 0 : yy_current_state; } @@ -6887,6 +6977,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 665 "util/configlexer.lex" +#line 671 "util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 55c584a76c12..bc4e92c7f11c 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -392,6 +392,7 @@ serve-expired-ttl{COLON} { YDVAR(1, VAR_SERVE_EXPIRED_TTL) } serve-expired-ttl-reset{COLON} { YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } serve-expired-reply-ttl{COLON} { YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } serve-expired-client-timeout{COLON} { YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } +serve-original-ttl{COLON} { YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } fake-dsa{COLON} { YDVAR(1, VAR_FAKE_DSA) } fake-sha1{COLON} { YDVAR(1, VAR_FAKE_SHA1) } val-log-level{COLON} { YDVAR(1, VAR_VAL_LOG_LEVEL) } @@ -510,6 +511,10 @@ dnscrypt-shared-secret-cache-slabs{COLON} { YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } dnscrypt-nonce-cache-size{COLON} { YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } dnscrypt-nonce-cache-slabs{COLON} { YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +pad-responses{COLON} { YDVAR(1, VAR_PAD_RESPONSES) } +pad-responses-block-size{COLON} { YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } +pad-queries{COLON} { YDVAR(1, VAR_PAD_QUERIES) } +pad-queries-block-size{COLON} { YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } ipsecmod-enabled{COLON} { YDVAR(1, VAR_IPSECMOD_ENABLED) } ipsecmod-ignore-bogus{COLON} { YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } ipsecmod-hook{COLON} { YDVAR(1, VAR_IPSECMOD_HOOK) } @@ -531,6 +536,7 @@ udp-upstream-without-downstream{COLON} { YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNS tcp-connection-limit{COLON} { YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } edns-client-string{COLON} { YDVAR(2, VAR_EDNS_CLIENT_STRING) } edns-client-string-opcode{COLON} { YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } +nsid{COLON} { YDVAR(1, VAR_NSID ) } <INITIAL,val>{NEWLINE} { LEXOUT(("NL\n")); cfg_parser->line++; } /* Quoted strings. Strip leading and ending quotes */ diff --git a/util/configparser.c b/util/configparser.c index 45f9db0dcc42..8423701db038 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.4.1. */ +/* A Bison parser, made by GNU Bison 3.6.4. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -34,6 +34,10 @@ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. @@ -41,14 +45,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.4.1" +#define YYBISON_VERSION "3.6.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -95,8 +96,17 @@ extern struct config_parser_state* cfg_parser; #endif -#line 99 "util/configparser.c" +#line 100 "util/configparser.c" +# ifndef YY_CAST +# ifdef __cplusplus +# define YY_CAST(Type, Val) static_cast<Type> (Val) +# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (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 @@ -109,14 +119,6 @@ extern struct config_parser_state* cfg_parser; # endif # endif -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - /* Use api.header.include to #include this header instead of duplicating it here. */ #ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED @@ -129,314 +131,328 @@ extern struct config_parser_state* cfg_parser; extern int yydebug; #endif -/* Token type. */ +/* Token kinds. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { - SPACE = 258, - LETTER = 259, - NEWLINE = 260, - COMMENT = 261, - COLON = 262, - ANY = 263, - ZONESTR = 264, - STRING_ARG = 265, - VAR_FORCE_TOPLEVEL = 266, - VAR_SERVER = 267, - VAR_VERBOSITY = 268, - VAR_NUM_THREADS = 269, - VAR_PORT = 270, - VAR_OUTGOING_RANGE = 271, - VAR_INTERFACE = 272, - VAR_PREFER_IP4 = 273, - VAR_DO_IP4 = 274, - VAR_DO_IP6 = 275, - VAR_PREFER_IP6 = 276, - VAR_DO_UDP = 277, - VAR_DO_TCP = 278, - VAR_TCP_MSS = 279, - VAR_OUTGOING_TCP_MSS = 280, - VAR_TCP_IDLE_TIMEOUT = 281, - VAR_EDNS_TCP_KEEPALIVE = 282, - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, - VAR_CHROOT = 284, - VAR_USERNAME = 285, - VAR_DIRECTORY = 286, - VAR_LOGFILE = 287, - VAR_PIDFILE = 288, - VAR_MSG_CACHE_SIZE = 289, - VAR_MSG_CACHE_SLABS = 290, - VAR_NUM_QUERIES_PER_THREAD = 291, - VAR_RRSET_CACHE_SIZE = 292, - VAR_RRSET_CACHE_SLABS = 293, - VAR_OUTGOING_NUM_TCP = 294, - VAR_INFRA_HOST_TTL = 295, - VAR_INFRA_LAME_TTL = 296, - VAR_INFRA_CACHE_SLABS = 297, - VAR_INFRA_CACHE_NUMHOSTS = 298, - VAR_INFRA_CACHE_LAME_SIZE = 299, - VAR_NAME = 300, - VAR_STUB_ZONE = 301, - VAR_STUB_HOST = 302, - VAR_STUB_ADDR = 303, - VAR_TARGET_FETCH_POLICY = 304, - VAR_HARDEN_SHORT_BUFSIZE = 305, - VAR_HARDEN_LARGE_QUERIES = 306, - VAR_FORWARD_ZONE = 307, - VAR_FORWARD_HOST = 308, - VAR_FORWARD_ADDR = 309, - VAR_DO_NOT_QUERY_ADDRESS = 310, - VAR_HIDE_IDENTITY = 311, - VAR_HIDE_VERSION = 312, - VAR_IDENTITY = 313, - VAR_VERSION = 314, - VAR_HARDEN_GLUE = 315, - VAR_MODULE_CONF = 316, - VAR_TRUST_ANCHOR_FILE = 317, - VAR_TRUST_ANCHOR = 318, - VAR_VAL_OVERRIDE_DATE = 319, - VAR_BOGUS_TTL = 320, - VAR_VAL_CLEAN_ADDITIONAL = 321, - VAR_VAL_PERMISSIVE_MODE = 322, - VAR_INCOMING_NUM_TCP = 323, - VAR_MSG_BUFFER_SIZE = 324, - VAR_KEY_CACHE_SIZE = 325, - VAR_KEY_CACHE_SLABS = 326, - VAR_TRUSTED_KEYS_FILE = 327, - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, - VAR_USE_SYSLOG = 329, - VAR_OUTGOING_INTERFACE = 330, - VAR_ROOT_HINTS = 331, - VAR_DO_NOT_QUERY_LOCALHOST = 332, - VAR_CACHE_MAX_TTL = 333, - VAR_HARDEN_DNSSEC_STRIPPED = 334, - VAR_ACCESS_CONTROL = 335, - VAR_LOCAL_ZONE = 336, - VAR_LOCAL_DATA = 337, - VAR_INTERFACE_AUTOMATIC = 338, - VAR_STATISTICS_INTERVAL = 339, - VAR_DO_DAEMONIZE = 340, - VAR_USE_CAPS_FOR_ID = 341, - VAR_STATISTICS_CUMULATIVE = 342, - VAR_OUTGOING_PORT_PERMIT = 343, - VAR_OUTGOING_PORT_AVOID = 344, - VAR_DLV_ANCHOR_FILE = 345, - VAR_DLV_ANCHOR = 346, - VAR_NEG_CACHE_SIZE = 347, - VAR_HARDEN_REFERRAL_PATH = 348, - VAR_PRIVATE_ADDRESS = 349, - VAR_PRIVATE_DOMAIN = 350, - VAR_REMOTE_CONTROL = 351, - VAR_CONTROL_ENABLE = 352, - VAR_CONTROL_INTERFACE = 353, - VAR_CONTROL_PORT = 354, - VAR_SERVER_KEY_FILE = 355, - VAR_SERVER_CERT_FILE = 356, - VAR_CONTROL_KEY_FILE = 357, - VAR_CONTROL_CERT_FILE = 358, - VAR_CONTROL_USE_CERT = 359, - VAR_EXTENDED_STATISTICS = 360, - VAR_LOCAL_DATA_PTR = 361, - VAR_JOSTLE_TIMEOUT = 362, - VAR_STUB_PRIME = 363, - VAR_UNWANTED_REPLY_THRESHOLD = 364, - VAR_LOG_TIME_ASCII = 365, - VAR_DOMAIN_INSECURE = 366, - VAR_PYTHON = 367, - VAR_PYTHON_SCRIPT = 368, - VAR_VAL_SIG_SKEW_MIN = 369, - VAR_VAL_SIG_SKEW_MAX = 370, - VAR_CACHE_MIN_TTL = 371, - VAR_VAL_LOG_LEVEL = 372, - VAR_AUTO_TRUST_ANCHOR_FILE = 373, - VAR_KEEP_MISSING = 374, - VAR_ADD_HOLDDOWN = 375, - VAR_DEL_HOLDDOWN = 376, - VAR_SO_RCVBUF = 377, - VAR_EDNS_BUFFER_SIZE = 378, - VAR_PREFETCH = 379, - VAR_PREFETCH_KEY = 380, - VAR_SO_SNDBUF = 381, - VAR_SO_REUSEPORT = 382, - VAR_HARDEN_BELOW_NXDOMAIN = 383, - VAR_IGNORE_CD_FLAG = 384, - VAR_LOG_QUERIES = 385, - VAR_LOG_REPLIES = 386, - VAR_LOG_LOCAL_ACTIONS = 387, - VAR_TCP_UPSTREAM = 388, - VAR_SSL_UPSTREAM = 389, - VAR_SSL_SERVICE_KEY = 390, - VAR_SSL_SERVICE_PEM = 391, - VAR_SSL_PORT = 392, - VAR_FORWARD_FIRST = 393, - VAR_STUB_SSL_UPSTREAM = 394, - VAR_FORWARD_SSL_UPSTREAM = 395, - VAR_TLS_CERT_BUNDLE = 396, - VAR_HTTPS_PORT = 397, - VAR_HTTP_ENDPOINT = 398, - VAR_HTTP_MAX_STREAMS = 399, - VAR_HTTP_QUERY_BUFFER_SIZE = 400, - VAR_HTTP_RESPONSE_BUFFER_SIZE = 401, - VAR_HTTP_NODELAY = 402, - 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_UDP_CONNECT = 409, - VAR_UNBLOCK_LAN_ZONES = 410, - VAR_INSECURE_LAN_ZONES = 411, - VAR_INFRA_CACHE_MIN_RTT = 412, - VAR_INFRA_KEEP_PROBING = 413, - VAR_DNS64_PREFIX = 414, - VAR_DNS64_SYNTHALL = 415, - VAR_DNS64_IGNORE_AAAA = 416, - VAR_DNSTAP = 417, - VAR_DNSTAP_ENABLE = 418, - VAR_DNSTAP_SOCKET_PATH = 419, - VAR_DNSTAP_IP = 420, - VAR_DNSTAP_TLS = 421, - VAR_DNSTAP_TLS_SERVER_NAME = 422, - VAR_DNSTAP_TLS_CERT_BUNDLE = 423, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 424, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 425, - VAR_DNSTAP_SEND_IDENTITY = 426, - VAR_DNSTAP_SEND_VERSION = 427, - VAR_DNSTAP_BIDIRECTIONAL = 428, - VAR_DNSTAP_IDENTITY = 429, - VAR_DNSTAP_VERSION = 430, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 431, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 432, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 433, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 434, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 435, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 436, - VAR_RESPONSE_IP_TAG = 437, - VAR_RESPONSE_IP = 438, - VAR_RESPONSE_IP_DATA = 439, - VAR_HARDEN_ALGO_DOWNGRADE = 440, - VAR_IP_TRANSPARENT = 441, - VAR_IP_DSCP = 442, - VAR_DISABLE_DNSSEC_LAME_CHECK = 443, - VAR_IP_RATELIMIT = 444, - VAR_IP_RATELIMIT_SLABS = 445, - VAR_IP_RATELIMIT_SIZE = 446, - VAR_RATELIMIT = 447, - VAR_RATELIMIT_SLABS = 448, - VAR_RATELIMIT_SIZE = 449, - VAR_RATELIMIT_FOR_DOMAIN = 450, - VAR_RATELIMIT_BELOW_DOMAIN = 451, - VAR_IP_RATELIMIT_FACTOR = 452, - VAR_RATELIMIT_FACTOR = 453, - VAR_SEND_CLIENT_SUBNET = 454, - VAR_CLIENT_SUBNET_ZONE = 455, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 456, - VAR_CLIENT_SUBNET_OPCODE = 457, - VAR_MAX_CLIENT_SUBNET_IPV4 = 458, - VAR_MAX_CLIENT_SUBNET_IPV6 = 459, - VAR_MIN_CLIENT_SUBNET_IPV4 = 460, - VAR_MIN_CLIENT_SUBNET_IPV6 = 461, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 462, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 463, - VAR_CAPS_WHITELIST = 464, - VAR_CACHE_MAX_NEGATIVE_TTL = 465, - VAR_PERMIT_SMALL_HOLDDOWN = 466, - VAR_QNAME_MINIMISATION = 467, - VAR_QNAME_MINIMISATION_STRICT = 468, - VAR_IP_FREEBIND = 469, - VAR_DEFINE_TAG = 470, - VAR_LOCAL_ZONE_TAG = 471, - VAR_ACCESS_CONTROL_TAG = 472, - VAR_LOCAL_ZONE_OVERRIDE = 473, - VAR_ACCESS_CONTROL_TAG_ACTION = 474, - VAR_ACCESS_CONTROL_TAG_DATA = 475, - VAR_VIEW = 476, - VAR_ACCESS_CONTROL_VIEW = 477, - VAR_VIEW_FIRST = 478, - VAR_SERVE_EXPIRED = 479, - VAR_SERVE_EXPIRED_TTL = 480, - VAR_SERVE_EXPIRED_TTL_RESET = 481, - VAR_SERVE_EXPIRED_REPLY_TTL = 482, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 483, - VAR_FAKE_DSA = 484, - VAR_FAKE_SHA1 = 485, - VAR_LOG_IDENTITY = 486, - VAR_HIDE_TRUSTANCHOR = 487, - VAR_TRUST_ANCHOR_SIGNALING = 488, - VAR_AGGRESSIVE_NSEC = 489, - VAR_USE_SYSTEMD = 490, - VAR_SHM_ENABLE = 491, - VAR_SHM_KEY = 492, - VAR_ROOT_KEY_SENTINEL = 493, - VAR_DNSCRYPT = 494, - VAR_DNSCRYPT_ENABLE = 495, - VAR_DNSCRYPT_PORT = 496, - VAR_DNSCRYPT_PROVIDER = 497, - VAR_DNSCRYPT_SECRET_KEY = 498, - VAR_DNSCRYPT_PROVIDER_CERT = 499, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 500, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 501, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 502, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 503, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 504, - VAR_IPSECMOD_ENABLED = 505, - VAR_IPSECMOD_HOOK = 506, - VAR_IPSECMOD_IGNORE_BOGUS = 507, - VAR_IPSECMOD_MAX_TTL = 508, - VAR_IPSECMOD_WHITELIST = 509, - VAR_IPSECMOD_STRICT = 510, - VAR_CACHEDB = 511, - VAR_CACHEDB_BACKEND = 512, - VAR_CACHEDB_SECRETSEED = 513, - VAR_CACHEDB_REDISHOST = 514, - VAR_CACHEDB_REDISPORT = 515, - VAR_CACHEDB_REDISTIMEOUT = 516, - VAR_CACHEDB_REDISEXPIRERECORDS = 517, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 518, - VAR_FOR_UPSTREAM = 519, - VAR_AUTH_ZONE = 520, - VAR_ZONEFILE = 521, - VAR_MASTER = 522, - VAR_URL = 523, - VAR_FOR_DOWNSTREAM = 524, - VAR_FALLBACK_ENABLED = 525, - VAR_TLS_ADDITIONAL_PORT = 526, - VAR_LOW_RTT = 527, - VAR_LOW_RTT_PERMIL = 528, - VAR_FAST_SERVER_PERMIL = 529, - VAR_FAST_SERVER_NUM = 530, - VAR_ALLOW_NOTIFY = 531, - VAR_TLS_WIN_CERT = 532, - VAR_TCP_CONNECTION_LIMIT = 533, - VAR_FORWARD_NO_CACHE = 534, - VAR_STUB_NO_CACHE = 535, - VAR_LOG_SERVFAIL = 536, - VAR_DENY_ANY = 537, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 538, - VAR_LOG_TAG_QUERYREPLY = 539, - VAR_STREAM_WAIT_SIZE = 540, - VAR_TLS_CIPHERS = 541, - VAR_TLS_CIPHERSUITES = 542, - VAR_TLS_USE_SNI = 543, - VAR_IPSET = 544, - VAR_IPSET_NAME_V4 = 545, - VAR_IPSET_NAME_V6 = 546, - VAR_TLS_SESSION_TICKET_KEYS = 547, - VAR_RPZ = 548, - VAR_TAGS = 549, - VAR_RPZ_ACTION_OVERRIDE = 550, - VAR_RPZ_CNAME_OVERRIDE = 551, - VAR_RPZ_LOG = 552, - VAR_RPZ_LOG_NAME = 553, - VAR_DYNLIB = 554, - VAR_DYNLIB_FILE = 555, - VAR_EDNS_CLIENT_STRING = 556, - VAR_EDNS_CLIENT_STRING_OPCODE = 557 + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + SPACE = 258, /* SPACE */ + LETTER = 259, /* LETTER */ + NEWLINE = 260, /* NEWLINE */ + COMMENT = 261, /* COMMENT */ + COLON = 262, /* COLON */ + ANY = 263, /* ANY */ + ZONESTR = 264, /* ZONESTR */ + STRING_ARG = 265, /* STRING_ARG */ + VAR_FORCE_TOPLEVEL = 266, /* VAR_FORCE_TOPLEVEL */ + VAR_SERVER = 267, /* VAR_SERVER */ + VAR_VERBOSITY = 268, /* VAR_VERBOSITY */ + VAR_NUM_THREADS = 269, /* VAR_NUM_THREADS */ + VAR_PORT = 270, /* VAR_PORT */ + VAR_OUTGOING_RANGE = 271, /* VAR_OUTGOING_RANGE */ + VAR_INTERFACE = 272, /* VAR_INTERFACE */ + VAR_PREFER_IP4 = 273, /* VAR_PREFER_IP4 */ + VAR_DO_IP4 = 274, /* VAR_DO_IP4 */ + VAR_DO_IP6 = 275, /* VAR_DO_IP6 */ + VAR_PREFER_IP6 = 276, /* VAR_PREFER_IP6 */ + VAR_DO_UDP = 277, /* VAR_DO_UDP */ + VAR_DO_TCP = 278, /* VAR_DO_TCP */ + VAR_TCP_MSS = 279, /* VAR_TCP_MSS */ + VAR_OUTGOING_TCP_MSS = 280, /* VAR_OUTGOING_TCP_MSS */ + VAR_TCP_IDLE_TIMEOUT = 281, /* VAR_TCP_IDLE_TIMEOUT */ + VAR_EDNS_TCP_KEEPALIVE = 282, /* VAR_EDNS_TCP_KEEPALIVE */ + VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ + VAR_CHROOT = 284, /* VAR_CHROOT */ + VAR_USERNAME = 285, /* VAR_USERNAME */ + VAR_DIRECTORY = 286, /* VAR_DIRECTORY */ + VAR_LOGFILE = 287, /* VAR_LOGFILE */ + VAR_PIDFILE = 288, /* VAR_PIDFILE */ + VAR_MSG_CACHE_SIZE = 289, /* VAR_MSG_CACHE_SIZE */ + VAR_MSG_CACHE_SLABS = 290, /* VAR_MSG_CACHE_SLABS */ + VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD */ + VAR_RRSET_CACHE_SIZE = 292, /* VAR_RRSET_CACHE_SIZE */ + VAR_RRSET_CACHE_SLABS = 293, /* VAR_RRSET_CACHE_SLABS */ + VAR_OUTGOING_NUM_TCP = 294, /* VAR_OUTGOING_NUM_TCP */ + VAR_INFRA_HOST_TTL = 295, /* VAR_INFRA_HOST_TTL */ + VAR_INFRA_LAME_TTL = 296, /* VAR_INFRA_LAME_TTL */ + VAR_INFRA_CACHE_SLABS = 297, /* VAR_INFRA_CACHE_SLABS */ + VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS */ + VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE */ + VAR_NAME = 300, /* VAR_NAME */ + VAR_STUB_ZONE = 301, /* VAR_STUB_ZONE */ + VAR_STUB_HOST = 302, /* VAR_STUB_HOST */ + VAR_STUB_ADDR = 303, /* VAR_STUB_ADDR */ + VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY */ + VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE */ + VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES */ + VAR_FORWARD_ZONE = 307, /* VAR_FORWARD_ZONE */ + VAR_FORWARD_HOST = 308, /* VAR_FORWARD_HOST */ + VAR_FORWARD_ADDR = 309, /* VAR_FORWARD_ADDR */ + VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS */ + VAR_HIDE_IDENTITY = 311, /* VAR_HIDE_IDENTITY */ + VAR_HIDE_VERSION = 312, /* VAR_HIDE_VERSION */ + VAR_IDENTITY = 313, /* VAR_IDENTITY */ + VAR_VERSION = 314, /* VAR_VERSION */ + VAR_HARDEN_GLUE = 315, /* VAR_HARDEN_GLUE */ + VAR_MODULE_CONF = 316, /* VAR_MODULE_CONF */ + VAR_TRUST_ANCHOR_FILE = 317, /* VAR_TRUST_ANCHOR_FILE */ + VAR_TRUST_ANCHOR = 318, /* VAR_TRUST_ANCHOR */ + VAR_VAL_OVERRIDE_DATE = 319, /* VAR_VAL_OVERRIDE_DATE */ + VAR_BOGUS_TTL = 320, /* VAR_BOGUS_TTL */ + VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL */ + VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE */ + VAR_INCOMING_NUM_TCP = 323, /* VAR_INCOMING_NUM_TCP */ + VAR_MSG_BUFFER_SIZE = 324, /* VAR_MSG_BUFFER_SIZE */ + VAR_KEY_CACHE_SIZE = 325, /* VAR_KEY_CACHE_SIZE */ + VAR_KEY_CACHE_SLABS = 326, /* VAR_KEY_CACHE_SLABS */ + VAR_TRUSTED_KEYS_FILE = 327, /* VAR_TRUSTED_KEYS_FILE */ + VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ + VAR_USE_SYSLOG = 329, /* VAR_USE_SYSLOG */ + VAR_OUTGOING_INTERFACE = 330, /* VAR_OUTGOING_INTERFACE */ + VAR_ROOT_HINTS = 331, /* VAR_ROOT_HINTS */ + VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST */ + VAR_CACHE_MAX_TTL = 333, /* VAR_CACHE_MAX_TTL */ + VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED */ + VAR_ACCESS_CONTROL = 335, /* VAR_ACCESS_CONTROL */ + VAR_LOCAL_ZONE = 336, /* VAR_LOCAL_ZONE */ + VAR_LOCAL_DATA = 337, /* VAR_LOCAL_DATA */ + VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC */ + VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL */ + VAR_DO_DAEMONIZE = 340, /* VAR_DO_DAEMONIZE */ + VAR_USE_CAPS_FOR_ID = 341, /* VAR_USE_CAPS_FOR_ID */ + VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE */ + VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT */ + VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID */ + VAR_DLV_ANCHOR_FILE = 345, /* VAR_DLV_ANCHOR_FILE */ + VAR_DLV_ANCHOR = 346, /* VAR_DLV_ANCHOR */ + VAR_NEG_CACHE_SIZE = 347, /* VAR_NEG_CACHE_SIZE */ + VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH */ + VAR_PRIVATE_ADDRESS = 349, /* VAR_PRIVATE_ADDRESS */ + VAR_PRIVATE_DOMAIN = 350, /* VAR_PRIVATE_DOMAIN */ + VAR_REMOTE_CONTROL = 351, /* VAR_REMOTE_CONTROL */ + VAR_CONTROL_ENABLE = 352, /* VAR_CONTROL_ENABLE */ + VAR_CONTROL_INTERFACE = 353, /* VAR_CONTROL_INTERFACE */ + VAR_CONTROL_PORT = 354, /* VAR_CONTROL_PORT */ + VAR_SERVER_KEY_FILE = 355, /* VAR_SERVER_KEY_FILE */ + VAR_SERVER_CERT_FILE = 356, /* VAR_SERVER_CERT_FILE */ + VAR_CONTROL_KEY_FILE = 357, /* VAR_CONTROL_KEY_FILE */ + VAR_CONTROL_CERT_FILE = 358, /* VAR_CONTROL_CERT_FILE */ + VAR_CONTROL_USE_CERT = 359, /* VAR_CONTROL_USE_CERT */ + VAR_EXTENDED_STATISTICS = 360, /* VAR_EXTENDED_STATISTICS */ + VAR_LOCAL_DATA_PTR = 361, /* VAR_LOCAL_DATA_PTR */ + VAR_JOSTLE_TIMEOUT = 362, /* VAR_JOSTLE_TIMEOUT */ + VAR_STUB_PRIME = 363, /* VAR_STUB_PRIME */ + VAR_UNWANTED_REPLY_THRESHOLD = 364, /* VAR_UNWANTED_REPLY_THRESHOLD */ + VAR_LOG_TIME_ASCII = 365, /* VAR_LOG_TIME_ASCII */ + VAR_DOMAIN_INSECURE = 366, /* VAR_DOMAIN_INSECURE */ + VAR_PYTHON = 367, /* VAR_PYTHON */ + VAR_PYTHON_SCRIPT = 368, /* VAR_PYTHON_SCRIPT */ + VAR_VAL_SIG_SKEW_MIN = 369, /* VAR_VAL_SIG_SKEW_MIN */ + VAR_VAL_SIG_SKEW_MAX = 370, /* VAR_VAL_SIG_SKEW_MAX */ + VAR_CACHE_MIN_TTL = 371, /* VAR_CACHE_MIN_TTL */ + VAR_VAL_LOG_LEVEL = 372, /* VAR_VAL_LOG_LEVEL */ + VAR_AUTO_TRUST_ANCHOR_FILE = 373, /* VAR_AUTO_TRUST_ANCHOR_FILE */ + VAR_KEEP_MISSING = 374, /* VAR_KEEP_MISSING */ + VAR_ADD_HOLDDOWN = 375, /* VAR_ADD_HOLDDOWN */ + VAR_DEL_HOLDDOWN = 376, /* VAR_DEL_HOLDDOWN */ + VAR_SO_RCVBUF = 377, /* VAR_SO_RCVBUF */ + VAR_EDNS_BUFFER_SIZE = 378, /* VAR_EDNS_BUFFER_SIZE */ + VAR_PREFETCH = 379, /* VAR_PREFETCH */ + VAR_PREFETCH_KEY = 380, /* VAR_PREFETCH_KEY */ + VAR_SO_SNDBUF = 381, /* VAR_SO_SNDBUF */ + VAR_SO_REUSEPORT = 382, /* VAR_SO_REUSEPORT */ + VAR_HARDEN_BELOW_NXDOMAIN = 383, /* VAR_HARDEN_BELOW_NXDOMAIN */ + VAR_IGNORE_CD_FLAG = 384, /* VAR_IGNORE_CD_FLAG */ + VAR_LOG_QUERIES = 385, /* VAR_LOG_QUERIES */ + VAR_LOG_REPLIES = 386, /* VAR_LOG_REPLIES */ + VAR_LOG_LOCAL_ACTIONS = 387, /* VAR_LOG_LOCAL_ACTIONS */ + VAR_TCP_UPSTREAM = 388, /* VAR_TCP_UPSTREAM */ + VAR_SSL_UPSTREAM = 389, /* VAR_SSL_UPSTREAM */ + VAR_SSL_SERVICE_KEY = 390, /* VAR_SSL_SERVICE_KEY */ + VAR_SSL_SERVICE_PEM = 391, /* VAR_SSL_SERVICE_PEM */ + VAR_SSL_PORT = 392, /* VAR_SSL_PORT */ + VAR_FORWARD_FIRST = 393, /* VAR_FORWARD_FIRST */ + VAR_STUB_SSL_UPSTREAM = 394, /* VAR_STUB_SSL_UPSTREAM */ + VAR_FORWARD_SSL_UPSTREAM = 395, /* VAR_FORWARD_SSL_UPSTREAM */ + VAR_TLS_CERT_BUNDLE = 396, /* VAR_TLS_CERT_BUNDLE */ + VAR_HTTPS_PORT = 397, /* VAR_HTTPS_PORT */ + VAR_HTTP_ENDPOINT = 398, /* VAR_HTTP_ENDPOINT */ + VAR_HTTP_MAX_STREAMS = 399, /* VAR_HTTP_MAX_STREAMS */ + VAR_HTTP_QUERY_BUFFER_SIZE = 400, /* VAR_HTTP_QUERY_BUFFER_SIZE */ + VAR_HTTP_RESPONSE_BUFFER_SIZE = 401, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ + VAR_HTTP_NODELAY = 402, /* VAR_HTTP_NODELAY */ + VAR_HTTP_NOTLS_DOWNSTREAM = 403, /* VAR_HTTP_NOTLS_DOWNSTREAM */ + VAR_STUB_FIRST = 404, /* VAR_STUB_FIRST */ + VAR_MINIMAL_RESPONSES = 405, /* VAR_MINIMAL_RESPONSES */ + VAR_RRSET_ROUNDROBIN = 406, /* VAR_RRSET_ROUNDROBIN */ + VAR_MAX_UDP_SIZE = 407, /* VAR_MAX_UDP_SIZE */ + VAR_DELAY_CLOSE = 408, /* VAR_DELAY_CLOSE */ + VAR_UDP_CONNECT = 409, /* VAR_UDP_CONNECT */ + VAR_UNBLOCK_LAN_ZONES = 410, /* VAR_UNBLOCK_LAN_ZONES */ + VAR_INSECURE_LAN_ZONES = 411, /* VAR_INSECURE_LAN_ZONES */ + VAR_INFRA_CACHE_MIN_RTT = 412, /* VAR_INFRA_CACHE_MIN_RTT */ + VAR_INFRA_KEEP_PROBING = 413, /* VAR_INFRA_KEEP_PROBING */ + VAR_DNS64_PREFIX = 414, /* VAR_DNS64_PREFIX */ + VAR_DNS64_SYNTHALL = 415, /* VAR_DNS64_SYNTHALL */ + VAR_DNS64_IGNORE_AAAA = 416, /* VAR_DNS64_IGNORE_AAAA */ + VAR_DNSTAP = 417, /* VAR_DNSTAP */ + VAR_DNSTAP_ENABLE = 418, /* VAR_DNSTAP_ENABLE */ + VAR_DNSTAP_SOCKET_PATH = 419, /* VAR_DNSTAP_SOCKET_PATH */ + VAR_DNSTAP_IP = 420, /* VAR_DNSTAP_IP */ + VAR_DNSTAP_TLS = 421, /* VAR_DNSTAP_TLS */ + VAR_DNSTAP_TLS_SERVER_NAME = 422, /* VAR_DNSTAP_TLS_SERVER_NAME */ + VAR_DNSTAP_TLS_CERT_BUNDLE = 423, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 424, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 425, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ + VAR_DNSTAP_SEND_IDENTITY = 426, /* VAR_DNSTAP_SEND_IDENTITY */ + VAR_DNSTAP_SEND_VERSION = 427, /* VAR_DNSTAP_SEND_VERSION */ + VAR_DNSTAP_BIDIRECTIONAL = 428, /* VAR_DNSTAP_BIDIRECTIONAL */ + VAR_DNSTAP_IDENTITY = 429, /* VAR_DNSTAP_IDENTITY */ + VAR_DNSTAP_VERSION = 430, /* VAR_DNSTAP_VERSION */ + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 431, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 432, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 433, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 434, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 435, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 436, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ + VAR_RESPONSE_IP_TAG = 437, /* VAR_RESPONSE_IP_TAG */ + VAR_RESPONSE_IP = 438, /* VAR_RESPONSE_IP */ + VAR_RESPONSE_IP_DATA = 439, /* VAR_RESPONSE_IP_DATA */ + VAR_HARDEN_ALGO_DOWNGRADE = 440, /* VAR_HARDEN_ALGO_DOWNGRADE */ + VAR_IP_TRANSPARENT = 441, /* VAR_IP_TRANSPARENT */ + VAR_IP_DSCP = 442, /* VAR_IP_DSCP */ + VAR_DISABLE_DNSSEC_LAME_CHECK = 443, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ + VAR_IP_RATELIMIT = 444, /* VAR_IP_RATELIMIT */ + VAR_IP_RATELIMIT_SLABS = 445, /* VAR_IP_RATELIMIT_SLABS */ + VAR_IP_RATELIMIT_SIZE = 446, /* VAR_IP_RATELIMIT_SIZE */ + VAR_RATELIMIT = 447, /* VAR_RATELIMIT */ + VAR_RATELIMIT_SLABS = 448, /* VAR_RATELIMIT_SLABS */ + VAR_RATELIMIT_SIZE = 449, /* VAR_RATELIMIT_SIZE */ + VAR_RATELIMIT_FOR_DOMAIN = 450, /* VAR_RATELIMIT_FOR_DOMAIN */ + VAR_RATELIMIT_BELOW_DOMAIN = 451, /* VAR_RATELIMIT_BELOW_DOMAIN */ + VAR_IP_RATELIMIT_FACTOR = 452, /* VAR_IP_RATELIMIT_FACTOR */ + VAR_RATELIMIT_FACTOR = 453, /* VAR_RATELIMIT_FACTOR */ + VAR_SEND_CLIENT_SUBNET = 454, /* VAR_SEND_CLIENT_SUBNET */ + VAR_CLIENT_SUBNET_ZONE = 455, /* VAR_CLIENT_SUBNET_ZONE */ + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 456, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + VAR_CLIENT_SUBNET_OPCODE = 457, /* VAR_CLIENT_SUBNET_OPCODE */ + VAR_MAX_CLIENT_SUBNET_IPV4 = 458, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + VAR_MAX_CLIENT_SUBNET_IPV6 = 459, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + VAR_MIN_CLIENT_SUBNET_IPV4 = 460, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + VAR_MIN_CLIENT_SUBNET_IPV6 = 461, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + VAR_MAX_ECS_TREE_SIZE_IPV4 = 462, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + VAR_MAX_ECS_TREE_SIZE_IPV6 = 463, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + VAR_CAPS_WHITELIST = 464, /* VAR_CAPS_WHITELIST */ + VAR_CACHE_MAX_NEGATIVE_TTL = 465, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + VAR_PERMIT_SMALL_HOLDDOWN = 466, /* VAR_PERMIT_SMALL_HOLDDOWN */ + VAR_QNAME_MINIMISATION = 467, /* VAR_QNAME_MINIMISATION */ + VAR_QNAME_MINIMISATION_STRICT = 468, /* VAR_QNAME_MINIMISATION_STRICT */ + VAR_IP_FREEBIND = 469, /* VAR_IP_FREEBIND */ + VAR_DEFINE_TAG = 470, /* VAR_DEFINE_TAG */ + VAR_LOCAL_ZONE_TAG = 471, /* VAR_LOCAL_ZONE_TAG */ + VAR_ACCESS_CONTROL_TAG = 472, /* VAR_ACCESS_CONTROL_TAG */ + VAR_LOCAL_ZONE_OVERRIDE = 473, /* VAR_LOCAL_ZONE_OVERRIDE */ + VAR_ACCESS_CONTROL_TAG_ACTION = 474, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + VAR_ACCESS_CONTROL_TAG_DATA = 475, /* VAR_ACCESS_CONTROL_TAG_DATA */ + VAR_VIEW = 476, /* VAR_VIEW */ + VAR_ACCESS_CONTROL_VIEW = 477, /* VAR_ACCESS_CONTROL_VIEW */ + VAR_VIEW_FIRST = 478, /* VAR_VIEW_FIRST */ + VAR_SERVE_EXPIRED = 479, /* VAR_SERVE_EXPIRED */ + VAR_SERVE_EXPIRED_TTL = 480, /* VAR_SERVE_EXPIRED_TTL */ + VAR_SERVE_EXPIRED_TTL_RESET = 481, /* VAR_SERVE_EXPIRED_TTL_RESET */ + VAR_SERVE_EXPIRED_REPLY_TTL = 482, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 483, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + VAR_SERVE_ORIGINAL_TTL = 484, /* VAR_SERVE_ORIGINAL_TTL */ + VAR_FAKE_DSA = 485, /* VAR_FAKE_DSA */ + VAR_FAKE_SHA1 = 486, /* VAR_FAKE_SHA1 */ + VAR_LOG_IDENTITY = 487, /* VAR_LOG_IDENTITY */ + VAR_HIDE_TRUSTANCHOR = 488, /* VAR_HIDE_TRUSTANCHOR */ + VAR_TRUST_ANCHOR_SIGNALING = 489, /* VAR_TRUST_ANCHOR_SIGNALING */ + VAR_AGGRESSIVE_NSEC = 490, /* VAR_AGGRESSIVE_NSEC */ + VAR_USE_SYSTEMD = 491, /* VAR_USE_SYSTEMD */ + VAR_SHM_ENABLE = 492, /* VAR_SHM_ENABLE */ + VAR_SHM_KEY = 493, /* VAR_SHM_KEY */ + VAR_ROOT_KEY_SENTINEL = 494, /* VAR_ROOT_KEY_SENTINEL */ + VAR_DNSCRYPT = 495, /* VAR_DNSCRYPT */ + VAR_DNSCRYPT_ENABLE = 496, /* VAR_DNSCRYPT_ENABLE */ + VAR_DNSCRYPT_PORT = 497, /* VAR_DNSCRYPT_PORT */ + VAR_DNSCRYPT_PROVIDER = 498, /* VAR_DNSCRYPT_PROVIDER */ + VAR_DNSCRYPT_SECRET_KEY = 499, /* VAR_DNSCRYPT_SECRET_KEY */ + VAR_DNSCRYPT_PROVIDER_CERT = 500, /* VAR_DNSCRYPT_PROVIDER_CERT */ + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 501, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 502, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 503, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 504, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 505, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + VAR_PAD_RESPONSES = 506, /* VAR_PAD_RESPONSES */ + VAR_PAD_RESPONSES_BLOCK_SIZE = 507, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + VAR_PAD_QUERIES = 508, /* VAR_PAD_QUERIES */ + VAR_PAD_QUERIES_BLOCK_SIZE = 509, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + VAR_IPSECMOD_ENABLED = 510, /* VAR_IPSECMOD_ENABLED */ + VAR_IPSECMOD_HOOK = 511, /* VAR_IPSECMOD_HOOK */ + VAR_IPSECMOD_IGNORE_BOGUS = 512, /* VAR_IPSECMOD_IGNORE_BOGUS */ + VAR_IPSECMOD_MAX_TTL = 513, /* VAR_IPSECMOD_MAX_TTL */ + VAR_IPSECMOD_WHITELIST = 514, /* VAR_IPSECMOD_WHITELIST */ + VAR_IPSECMOD_STRICT = 515, /* VAR_IPSECMOD_STRICT */ + VAR_CACHEDB = 516, /* VAR_CACHEDB */ + VAR_CACHEDB_BACKEND = 517, /* VAR_CACHEDB_BACKEND */ + VAR_CACHEDB_SECRETSEED = 518, /* VAR_CACHEDB_SECRETSEED */ + VAR_CACHEDB_REDISHOST = 519, /* VAR_CACHEDB_REDISHOST */ + VAR_CACHEDB_REDISPORT = 520, /* VAR_CACHEDB_REDISPORT */ + VAR_CACHEDB_REDISTIMEOUT = 521, /* VAR_CACHEDB_REDISTIMEOUT */ + VAR_CACHEDB_REDISEXPIRERECORDS = 522, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 523, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + VAR_FOR_UPSTREAM = 524, /* VAR_FOR_UPSTREAM */ + VAR_AUTH_ZONE = 525, /* VAR_AUTH_ZONE */ + VAR_ZONEFILE = 526, /* VAR_ZONEFILE */ + VAR_MASTER = 527, /* VAR_MASTER */ + VAR_URL = 528, /* VAR_URL */ + VAR_FOR_DOWNSTREAM = 529, /* VAR_FOR_DOWNSTREAM */ + VAR_FALLBACK_ENABLED = 530, /* VAR_FALLBACK_ENABLED */ + VAR_TLS_ADDITIONAL_PORT = 531, /* VAR_TLS_ADDITIONAL_PORT */ + VAR_LOW_RTT = 532, /* VAR_LOW_RTT */ + VAR_LOW_RTT_PERMIL = 533, /* VAR_LOW_RTT_PERMIL */ + VAR_FAST_SERVER_PERMIL = 534, /* VAR_FAST_SERVER_PERMIL */ + VAR_FAST_SERVER_NUM = 535, /* VAR_FAST_SERVER_NUM */ + VAR_ALLOW_NOTIFY = 536, /* VAR_ALLOW_NOTIFY */ + VAR_TLS_WIN_CERT = 537, /* VAR_TLS_WIN_CERT */ + VAR_TCP_CONNECTION_LIMIT = 538, /* VAR_TCP_CONNECTION_LIMIT */ + VAR_FORWARD_NO_CACHE = 539, /* VAR_FORWARD_NO_CACHE */ + VAR_STUB_NO_CACHE = 540, /* VAR_STUB_NO_CACHE */ + VAR_LOG_SERVFAIL = 541, /* VAR_LOG_SERVFAIL */ + VAR_DENY_ANY = 542, /* VAR_DENY_ANY */ + VAR_UNKNOWN_SERVER_TIME_LIMIT = 543, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + VAR_LOG_TAG_QUERYREPLY = 544, /* VAR_LOG_TAG_QUERYREPLY */ + VAR_STREAM_WAIT_SIZE = 545, /* VAR_STREAM_WAIT_SIZE */ + VAR_TLS_CIPHERS = 546, /* VAR_TLS_CIPHERS */ + VAR_TLS_CIPHERSUITES = 547, /* VAR_TLS_CIPHERSUITES */ + VAR_TLS_USE_SNI = 548, /* VAR_TLS_USE_SNI */ + VAR_IPSET = 549, /* VAR_IPSET */ + VAR_IPSET_NAME_V4 = 550, /* VAR_IPSET_NAME_V4 */ + VAR_IPSET_NAME_V6 = 551, /* VAR_IPSET_NAME_V6 */ + VAR_TLS_SESSION_TICKET_KEYS = 552, /* VAR_TLS_SESSION_TICKET_KEYS */ + VAR_RPZ = 553, /* VAR_RPZ */ + VAR_TAGS = 554, /* VAR_TAGS */ + VAR_RPZ_ACTION_OVERRIDE = 555, /* VAR_RPZ_ACTION_OVERRIDE */ + VAR_RPZ_CNAME_OVERRIDE = 556, /* VAR_RPZ_CNAME_OVERRIDE */ + VAR_RPZ_LOG = 557, /* VAR_RPZ_LOG */ + VAR_RPZ_LOG_NAME = 558, /* VAR_RPZ_LOG_NAME */ + VAR_DYNLIB = 559, /* VAR_DYNLIB */ + VAR_DYNLIB_FILE = 560, /* VAR_DYNLIB_FILE */ + VAR_EDNS_CLIENT_STRING = 561, /* VAR_EDNS_CLIENT_STRING */ + VAR_EDNS_CLIENT_STRING_OPCODE = 562, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + VAR_NSID = 563 /* VAR_NSID */ }; + typedef enum yytokentype yytoken_kind_t; #endif -/* Tokens. */ +/* Token kinds. */ +#define YYEOF 0 +#define YYerror 256 +#define YYUNDEF 257 #define SPACE 258 #define LETTER 259 #define NEWLINE 260 @@ -663,80 +679,86 @@ extern int yydebug; #define VAR_SERVE_EXPIRED_TTL_RESET 481 #define VAR_SERVE_EXPIRED_REPLY_TTL 482 #define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 483 -#define VAR_FAKE_DSA 484 -#define VAR_FAKE_SHA1 485 -#define VAR_LOG_IDENTITY 486 -#define VAR_HIDE_TRUSTANCHOR 487 -#define VAR_TRUST_ANCHOR_SIGNALING 488 -#define VAR_AGGRESSIVE_NSEC 489 -#define VAR_USE_SYSTEMD 490 -#define VAR_SHM_ENABLE 491 -#define VAR_SHM_KEY 492 -#define VAR_ROOT_KEY_SENTINEL 493 -#define VAR_DNSCRYPT 494 -#define VAR_DNSCRYPT_ENABLE 495 -#define VAR_DNSCRYPT_PORT 496 -#define VAR_DNSCRYPT_PROVIDER 497 -#define VAR_DNSCRYPT_SECRET_KEY 498 -#define VAR_DNSCRYPT_PROVIDER_CERT 499 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 500 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 501 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 502 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 503 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 504 -#define VAR_IPSECMOD_ENABLED 505 -#define VAR_IPSECMOD_HOOK 506 -#define VAR_IPSECMOD_IGNORE_BOGUS 507 -#define VAR_IPSECMOD_MAX_TTL 508 -#define VAR_IPSECMOD_WHITELIST 509 -#define VAR_IPSECMOD_STRICT 510 -#define VAR_CACHEDB 511 -#define VAR_CACHEDB_BACKEND 512 -#define VAR_CACHEDB_SECRETSEED 513 -#define VAR_CACHEDB_REDISHOST 514 -#define VAR_CACHEDB_REDISPORT 515 -#define VAR_CACHEDB_REDISTIMEOUT 516 -#define VAR_CACHEDB_REDISEXPIRERECORDS 517 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 518 -#define VAR_FOR_UPSTREAM 519 -#define VAR_AUTH_ZONE 520 -#define VAR_ZONEFILE 521 -#define VAR_MASTER 522 -#define VAR_URL 523 -#define VAR_FOR_DOWNSTREAM 524 -#define VAR_FALLBACK_ENABLED 525 -#define VAR_TLS_ADDITIONAL_PORT 526 -#define VAR_LOW_RTT 527 -#define VAR_LOW_RTT_PERMIL 528 -#define VAR_FAST_SERVER_PERMIL 529 -#define VAR_FAST_SERVER_NUM 530 -#define VAR_ALLOW_NOTIFY 531 -#define VAR_TLS_WIN_CERT 532 -#define VAR_TCP_CONNECTION_LIMIT 533 -#define VAR_FORWARD_NO_CACHE 534 -#define VAR_STUB_NO_CACHE 535 -#define VAR_LOG_SERVFAIL 536 -#define VAR_DENY_ANY 537 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 538 -#define VAR_LOG_TAG_QUERYREPLY 539 -#define VAR_STREAM_WAIT_SIZE 540 -#define VAR_TLS_CIPHERS 541 -#define VAR_TLS_CIPHERSUITES 542 -#define VAR_TLS_USE_SNI 543 -#define VAR_IPSET 544 -#define VAR_IPSET_NAME_V4 545 -#define VAR_IPSET_NAME_V6 546 -#define VAR_TLS_SESSION_TICKET_KEYS 547 -#define VAR_RPZ 548 -#define VAR_TAGS 549 -#define VAR_RPZ_ACTION_OVERRIDE 550 -#define VAR_RPZ_CNAME_OVERRIDE 551 -#define VAR_RPZ_LOG 552 -#define VAR_RPZ_LOG_NAME 553 -#define VAR_DYNLIB 554 -#define VAR_DYNLIB_FILE 555 -#define VAR_EDNS_CLIENT_STRING 556 -#define VAR_EDNS_CLIENT_STRING_OPCODE 557 +#define VAR_SERVE_ORIGINAL_TTL 484 +#define VAR_FAKE_DSA 485 +#define VAR_FAKE_SHA1 486 +#define VAR_LOG_IDENTITY 487 +#define VAR_HIDE_TRUSTANCHOR 488 +#define VAR_TRUST_ANCHOR_SIGNALING 489 +#define VAR_AGGRESSIVE_NSEC 490 +#define VAR_USE_SYSTEMD 491 +#define VAR_SHM_ENABLE 492 +#define VAR_SHM_KEY 493 +#define VAR_ROOT_KEY_SENTINEL 494 +#define VAR_DNSCRYPT 495 +#define VAR_DNSCRYPT_ENABLE 496 +#define VAR_DNSCRYPT_PORT 497 +#define VAR_DNSCRYPT_PROVIDER 498 +#define VAR_DNSCRYPT_SECRET_KEY 499 +#define VAR_DNSCRYPT_PROVIDER_CERT 500 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 501 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 502 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 503 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 504 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 505 +#define VAR_PAD_RESPONSES 506 +#define VAR_PAD_RESPONSES_BLOCK_SIZE 507 +#define VAR_PAD_QUERIES 508 +#define VAR_PAD_QUERIES_BLOCK_SIZE 509 +#define VAR_IPSECMOD_ENABLED 510 +#define VAR_IPSECMOD_HOOK 511 +#define VAR_IPSECMOD_IGNORE_BOGUS 512 +#define VAR_IPSECMOD_MAX_TTL 513 +#define VAR_IPSECMOD_WHITELIST 514 +#define VAR_IPSECMOD_STRICT 515 +#define VAR_CACHEDB 516 +#define VAR_CACHEDB_BACKEND 517 +#define VAR_CACHEDB_SECRETSEED 518 +#define VAR_CACHEDB_REDISHOST 519 +#define VAR_CACHEDB_REDISPORT 520 +#define VAR_CACHEDB_REDISTIMEOUT 521 +#define VAR_CACHEDB_REDISEXPIRERECORDS 522 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 523 +#define VAR_FOR_UPSTREAM 524 +#define VAR_AUTH_ZONE 525 +#define VAR_ZONEFILE 526 +#define VAR_MASTER 527 +#define VAR_URL 528 +#define VAR_FOR_DOWNSTREAM 529 +#define VAR_FALLBACK_ENABLED 530 +#define VAR_TLS_ADDITIONAL_PORT 531 +#define VAR_LOW_RTT 532 +#define VAR_LOW_RTT_PERMIL 533 +#define VAR_FAST_SERVER_PERMIL 534 +#define VAR_FAST_SERVER_NUM 535 +#define VAR_ALLOW_NOTIFY 536 +#define VAR_TLS_WIN_CERT 537 +#define VAR_TCP_CONNECTION_LIMIT 538 +#define VAR_FORWARD_NO_CACHE 539 +#define VAR_STUB_NO_CACHE 540 +#define VAR_LOG_SERVFAIL 541 +#define VAR_DENY_ANY 542 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 543 +#define VAR_LOG_TAG_QUERYREPLY 544 +#define VAR_STREAM_WAIT_SIZE 545 +#define VAR_TLS_CIPHERS 546 +#define VAR_TLS_CIPHERSUITES 547 +#define VAR_TLS_USE_SNI 548 +#define VAR_IPSET 549 +#define VAR_IPSET_NAME_V4 550 +#define VAR_IPSET_NAME_V6 551 +#define VAR_TLS_SESSION_TICKET_KEYS 552 +#define VAR_RPZ 553 +#define VAR_TAGS 554 +#define VAR_RPZ_ACTION_OVERRIDE 555 +#define VAR_RPZ_CNAME_OVERRIDE 556 +#define VAR_RPZ_LOG 557 +#define VAR_RPZ_LOG_NAME 558 +#define VAR_DYNLIB 559 +#define VAR_DYNLIB_FILE 560 +#define VAR_EDNS_CLIENT_STRING 561 +#define VAR_EDNS_CLIENT_STRING_OPCODE 562 +#define VAR_NSID 563 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -746,7 +768,7 @@ union YYSTYPE char* str; -#line 750 "util/configparser.c" +#line 772 "util/configparser.c" }; typedef union YYSTYPE YYSTYPE; @@ -760,6 +782,656 @@ extern YYSTYPE yylval; int yyparse (void); #endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ +/* Symbol kind. */ +enum yysymbol_kind_t +{ + YYSYMBOL_YYEMPTY = -2, + YYSYMBOL_YYEOF = 0, /* "end of file" */ + YYSYMBOL_YYerror = 1, /* error */ + YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ + YYSYMBOL_SPACE = 3, /* SPACE */ + YYSYMBOL_LETTER = 4, /* LETTER */ + YYSYMBOL_NEWLINE = 5, /* NEWLINE */ + YYSYMBOL_COMMENT = 6, /* COMMENT */ + YYSYMBOL_COLON = 7, /* COLON */ + YYSYMBOL_ANY = 8, /* ANY */ + YYSYMBOL_ZONESTR = 9, /* ZONESTR */ + YYSYMBOL_STRING_ARG = 10, /* STRING_ARG */ + YYSYMBOL_VAR_FORCE_TOPLEVEL = 11, /* VAR_FORCE_TOPLEVEL */ + YYSYMBOL_VAR_SERVER = 12, /* VAR_SERVER */ + YYSYMBOL_VAR_VERBOSITY = 13, /* VAR_VERBOSITY */ + YYSYMBOL_VAR_NUM_THREADS = 14, /* VAR_NUM_THREADS */ + YYSYMBOL_VAR_PORT = 15, /* VAR_PORT */ + YYSYMBOL_VAR_OUTGOING_RANGE = 16, /* VAR_OUTGOING_RANGE */ + YYSYMBOL_VAR_INTERFACE = 17, /* VAR_INTERFACE */ + YYSYMBOL_VAR_PREFER_IP4 = 18, /* VAR_PREFER_IP4 */ + YYSYMBOL_VAR_DO_IP4 = 19, /* VAR_DO_IP4 */ + YYSYMBOL_VAR_DO_IP6 = 20, /* VAR_DO_IP6 */ + YYSYMBOL_VAR_PREFER_IP6 = 21, /* VAR_PREFER_IP6 */ + YYSYMBOL_VAR_DO_UDP = 22, /* VAR_DO_UDP */ + YYSYMBOL_VAR_DO_TCP = 23, /* VAR_DO_TCP */ + YYSYMBOL_VAR_TCP_MSS = 24, /* VAR_TCP_MSS */ + YYSYMBOL_VAR_OUTGOING_TCP_MSS = 25, /* VAR_OUTGOING_TCP_MSS */ + YYSYMBOL_VAR_TCP_IDLE_TIMEOUT = 26, /* VAR_TCP_IDLE_TIMEOUT */ + YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE = 27, /* VAR_EDNS_TCP_KEEPALIVE */ + YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 28, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ + YYSYMBOL_VAR_CHROOT = 29, /* VAR_CHROOT */ + YYSYMBOL_VAR_USERNAME = 30, /* VAR_USERNAME */ + YYSYMBOL_VAR_DIRECTORY = 31, /* VAR_DIRECTORY */ + YYSYMBOL_VAR_LOGFILE = 32, /* VAR_LOGFILE */ + YYSYMBOL_VAR_PIDFILE = 33, /* VAR_PIDFILE */ + YYSYMBOL_VAR_MSG_CACHE_SIZE = 34, /* VAR_MSG_CACHE_SIZE */ + YYSYMBOL_VAR_MSG_CACHE_SLABS = 35, /* VAR_MSG_CACHE_SLABS */ + YYSYMBOL_VAR_NUM_QUERIES_PER_THREAD = 36, /* VAR_NUM_QUERIES_PER_THREAD */ + YYSYMBOL_VAR_RRSET_CACHE_SIZE = 37, /* VAR_RRSET_CACHE_SIZE */ + YYSYMBOL_VAR_RRSET_CACHE_SLABS = 38, /* VAR_RRSET_CACHE_SLABS */ + YYSYMBOL_VAR_OUTGOING_NUM_TCP = 39, /* VAR_OUTGOING_NUM_TCP */ + YYSYMBOL_VAR_INFRA_HOST_TTL = 40, /* VAR_INFRA_HOST_TTL */ + YYSYMBOL_VAR_INFRA_LAME_TTL = 41, /* VAR_INFRA_LAME_TTL */ + YYSYMBOL_VAR_INFRA_CACHE_SLABS = 42, /* VAR_INFRA_CACHE_SLABS */ + YYSYMBOL_VAR_INFRA_CACHE_NUMHOSTS = 43, /* VAR_INFRA_CACHE_NUMHOSTS */ + YYSYMBOL_VAR_INFRA_CACHE_LAME_SIZE = 44, /* VAR_INFRA_CACHE_LAME_SIZE */ + YYSYMBOL_VAR_NAME = 45, /* VAR_NAME */ + YYSYMBOL_VAR_STUB_ZONE = 46, /* VAR_STUB_ZONE */ + YYSYMBOL_VAR_STUB_HOST = 47, /* VAR_STUB_HOST */ + YYSYMBOL_VAR_STUB_ADDR = 48, /* VAR_STUB_ADDR */ + YYSYMBOL_VAR_TARGET_FETCH_POLICY = 49, /* VAR_TARGET_FETCH_POLICY */ + YYSYMBOL_VAR_HARDEN_SHORT_BUFSIZE = 50, /* VAR_HARDEN_SHORT_BUFSIZE */ + YYSYMBOL_VAR_HARDEN_LARGE_QUERIES = 51, /* VAR_HARDEN_LARGE_QUERIES */ + YYSYMBOL_VAR_FORWARD_ZONE = 52, /* VAR_FORWARD_ZONE */ + YYSYMBOL_VAR_FORWARD_HOST = 53, /* VAR_FORWARD_HOST */ + YYSYMBOL_VAR_FORWARD_ADDR = 54, /* VAR_FORWARD_ADDR */ + YYSYMBOL_VAR_DO_NOT_QUERY_ADDRESS = 55, /* VAR_DO_NOT_QUERY_ADDRESS */ + YYSYMBOL_VAR_HIDE_IDENTITY = 56, /* VAR_HIDE_IDENTITY */ + YYSYMBOL_VAR_HIDE_VERSION = 57, /* VAR_HIDE_VERSION */ + YYSYMBOL_VAR_IDENTITY = 58, /* VAR_IDENTITY */ + YYSYMBOL_VAR_VERSION = 59, /* VAR_VERSION */ + YYSYMBOL_VAR_HARDEN_GLUE = 60, /* VAR_HARDEN_GLUE */ + YYSYMBOL_VAR_MODULE_CONF = 61, /* VAR_MODULE_CONF */ + YYSYMBOL_VAR_TRUST_ANCHOR_FILE = 62, /* VAR_TRUST_ANCHOR_FILE */ + YYSYMBOL_VAR_TRUST_ANCHOR = 63, /* VAR_TRUST_ANCHOR */ + YYSYMBOL_VAR_VAL_OVERRIDE_DATE = 64, /* VAR_VAL_OVERRIDE_DATE */ + YYSYMBOL_VAR_BOGUS_TTL = 65, /* VAR_BOGUS_TTL */ + YYSYMBOL_VAR_VAL_CLEAN_ADDITIONAL = 66, /* VAR_VAL_CLEAN_ADDITIONAL */ + YYSYMBOL_VAR_VAL_PERMISSIVE_MODE = 67, /* VAR_VAL_PERMISSIVE_MODE */ + YYSYMBOL_VAR_INCOMING_NUM_TCP = 68, /* VAR_INCOMING_NUM_TCP */ + YYSYMBOL_VAR_MSG_BUFFER_SIZE = 69, /* VAR_MSG_BUFFER_SIZE */ + YYSYMBOL_VAR_KEY_CACHE_SIZE = 70, /* VAR_KEY_CACHE_SIZE */ + YYSYMBOL_VAR_KEY_CACHE_SLABS = 71, /* VAR_KEY_CACHE_SLABS */ + YYSYMBOL_VAR_TRUSTED_KEYS_FILE = 72, /* VAR_TRUSTED_KEYS_FILE */ + YYSYMBOL_VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 73, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ + YYSYMBOL_VAR_USE_SYSLOG = 74, /* VAR_USE_SYSLOG */ + YYSYMBOL_VAR_OUTGOING_INTERFACE = 75, /* VAR_OUTGOING_INTERFACE */ + YYSYMBOL_VAR_ROOT_HINTS = 76, /* VAR_ROOT_HINTS */ + YYSYMBOL_VAR_DO_NOT_QUERY_LOCALHOST = 77, /* VAR_DO_NOT_QUERY_LOCALHOST */ + YYSYMBOL_VAR_CACHE_MAX_TTL = 78, /* VAR_CACHE_MAX_TTL */ + YYSYMBOL_VAR_HARDEN_DNSSEC_STRIPPED = 79, /* VAR_HARDEN_DNSSEC_STRIPPED */ + YYSYMBOL_VAR_ACCESS_CONTROL = 80, /* VAR_ACCESS_CONTROL */ + YYSYMBOL_VAR_LOCAL_ZONE = 81, /* VAR_LOCAL_ZONE */ + YYSYMBOL_VAR_LOCAL_DATA = 82, /* VAR_LOCAL_DATA */ + YYSYMBOL_VAR_INTERFACE_AUTOMATIC = 83, /* VAR_INTERFACE_AUTOMATIC */ + YYSYMBOL_VAR_STATISTICS_INTERVAL = 84, /* VAR_STATISTICS_INTERVAL */ + YYSYMBOL_VAR_DO_DAEMONIZE = 85, /* VAR_DO_DAEMONIZE */ + YYSYMBOL_VAR_USE_CAPS_FOR_ID = 86, /* VAR_USE_CAPS_FOR_ID */ + YYSYMBOL_VAR_STATISTICS_CUMULATIVE = 87, /* VAR_STATISTICS_CUMULATIVE */ + YYSYMBOL_VAR_OUTGOING_PORT_PERMIT = 88, /* VAR_OUTGOING_PORT_PERMIT */ + YYSYMBOL_VAR_OUTGOING_PORT_AVOID = 89, /* VAR_OUTGOING_PORT_AVOID */ + YYSYMBOL_VAR_DLV_ANCHOR_FILE = 90, /* VAR_DLV_ANCHOR_FILE */ + YYSYMBOL_VAR_DLV_ANCHOR = 91, /* VAR_DLV_ANCHOR */ + YYSYMBOL_VAR_NEG_CACHE_SIZE = 92, /* VAR_NEG_CACHE_SIZE */ + YYSYMBOL_VAR_HARDEN_REFERRAL_PATH = 93, /* VAR_HARDEN_REFERRAL_PATH */ + YYSYMBOL_VAR_PRIVATE_ADDRESS = 94, /* VAR_PRIVATE_ADDRESS */ + YYSYMBOL_VAR_PRIVATE_DOMAIN = 95, /* VAR_PRIVATE_DOMAIN */ + YYSYMBOL_VAR_REMOTE_CONTROL = 96, /* VAR_REMOTE_CONTROL */ + YYSYMBOL_VAR_CONTROL_ENABLE = 97, /* VAR_CONTROL_ENABLE */ + YYSYMBOL_VAR_CONTROL_INTERFACE = 98, /* VAR_CONTROL_INTERFACE */ + YYSYMBOL_VAR_CONTROL_PORT = 99, /* VAR_CONTROL_PORT */ + YYSYMBOL_VAR_SERVER_KEY_FILE = 100, /* VAR_SERVER_KEY_FILE */ + YYSYMBOL_VAR_SERVER_CERT_FILE = 101, /* VAR_SERVER_CERT_FILE */ + YYSYMBOL_VAR_CONTROL_KEY_FILE = 102, /* VAR_CONTROL_KEY_FILE */ + YYSYMBOL_VAR_CONTROL_CERT_FILE = 103, /* VAR_CONTROL_CERT_FILE */ + YYSYMBOL_VAR_CONTROL_USE_CERT = 104, /* VAR_CONTROL_USE_CERT */ + YYSYMBOL_VAR_EXTENDED_STATISTICS = 105, /* VAR_EXTENDED_STATISTICS */ + YYSYMBOL_VAR_LOCAL_DATA_PTR = 106, /* VAR_LOCAL_DATA_PTR */ + YYSYMBOL_VAR_JOSTLE_TIMEOUT = 107, /* VAR_JOSTLE_TIMEOUT */ + YYSYMBOL_VAR_STUB_PRIME = 108, /* VAR_STUB_PRIME */ + YYSYMBOL_VAR_UNWANTED_REPLY_THRESHOLD = 109, /* VAR_UNWANTED_REPLY_THRESHOLD */ + YYSYMBOL_VAR_LOG_TIME_ASCII = 110, /* VAR_LOG_TIME_ASCII */ + YYSYMBOL_VAR_DOMAIN_INSECURE = 111, /* VAR_DOMAIN_INSECURE */ + YYSYMBOL_VAR_PYTHON = 112, /* VAR_PYTHON */ + YYSYMBOL_VAR_PYTHON_SCRIPT = 113, /* VAR_PYTHON_SCRIPT */ + YYSYMBOL_VAR_VAL_SIG_SKEW_MIN = 114, /* VAR_VAL_SIG_SKEW_MIN */ + YYSYMBOL_VAR_VAL_SIG_SKEW_MAX = 115, /* VAR_VAL_SIG_SKEW_MAX */ + YYSYMBOL_VAR_CACHE_MIN_TTL = 116, /* VAR_CACHE_MIN_TTL */ + YYSYMBOL_VAR_VAL_LOG_LEVEL = 117, /* VAR_VAL_LOG_LEVEL */ + YYSYMBOL_VAR_AUTO_TRUST_ANCHOR_FILE = 118, /* VAR_AUTO_TRUST_ANCHOR_FILE */ + YYSYMBOL_VAR_KEEP_MISSING = 119, /* VAR_KEEP_MISSING */ + YYSYMBOL_VAR_ADD_HOLDDOWN = 120, /* VAR_ADD_HOLDDOWN */ + YYSYMBOL_VAR_DEL_HOLDDOWN = 121, /* VAR_DEL_HOLDDOWN */ + YYSYMBOL_VAR_SO_RCVBUF = 122, /* VAR_SO_RCVBUF */ + YYSYMBOL_VAR_EDNS_BUFFER_SIZE = 123, /* VAR_EDNS_BUFFER_SIZE */ + YYSYMBOL_VAR_PREFETCH = 124, /* VAR_PREFETCH */ + YYSYMBOL_VAR_PREFETCH_KEY = 125, /* VAR_PREFETCH_KEY */ + YYSYMBOL_VAR_SO_SNDBUF = 126, /* VAR_SO_SNDBUF */ + YYSYMBOL_VAR_SO_REUSEPORT = 127, /* VAR_SO_REUSEPORT */ + YYSYMBOL_VAR_HARDEN_BELOW_NXDOMAIN = 128, /* VAR_HARDEN_BELOW_NXDOMAIN */ + YYSYMBOL_VAR_IGNORE_CD_FLAG = 129, /* VAR_IGNORE_CD_FLAG */ + YYSYMBOL_VAR_LOG_QUERIES = 130, /* VAR_LOG_QUERIES */ + YYSYMBOL_VAR_LOG_REPLIES = 131, /* VAR_LOG_REPLIES */ + YYSYMBOL_VAR_LOG_LOCAL_ACTIONS = 132, /* VAR_LOG_LOCAL_ACTIONS */ + YYSYMBOL_VAR_TCP_UPSTREAM = 133, /* VAR_TCP_UPSTREAM */ + YYSYMBOL_VAR_SSL_UPSTREAM = 134, /* VAR_SSL_UPSTREAM */ + YYSYMBOL_VAR_SSL_SERVICE_KEY = 135, /* VAR_SSL_SERVICE_KEY */ + YYSYMBOL_VAR_SSL_SERVICE_PEM = 136, /* VAR_SSL_SERVICE_PEM */ + YYSYMBOL_VAR_SSL_PORT = 137, /* VAR_SSL_PORT */ + YYSYMBOL_VAR_FORWARD_FIRST = 138, /* VAR_FORWARD_FIRST */ + YYSYMBOL_VAR_STUB_SSL_UPSTREAM = 139, /* VAR_STUB_SSL_UPSTREAM */ + YYSYMBOL_VAR_FORWARD_SSL_UPSTREAM = 140, /* VAR_FORWARD_SSL_UPSTREAM */ + YYSYMBOL_VAR_TLS_CERT_BUNDLE = 141, /* VAR_TLS_CERT_BUNDLE */ + YYSYMBOL_VAR_HTTPS_PORT = 142, /* VAR_HTTPS_PORT */ + YYSYMBOL_VAR_HTTP_ENDPOINT = 143, /* VAR_HTTP_ENDPOINT */ + YYSYMBOL_VAR_HTTP_MAX_STREAMS = 144, /* VAR_HTTP_MAX_STREAMS */ + YYSYMBOL_VAR_HTTP_QUERY_BUFFER_SIZE = 145, /* VAR_HTTP_QUERY_BUFFER_SIZE */ + YYSYMBOL_VAR_HTTP_RESPONSE_BUFFER_SIZE = 146, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ + YYSYMBOL_VAR_HTTP_NODELAY = 147, /* VAR_HTTP_NODELAY */ + YYSYMBOL_VAR_HTTP_NOTLS_DOWNSTREAM = 148, /* VAR_HTTP_NOTLS_DOWNSTREAM */ + YYSYMBOL_VAR_STUB_FIRST = 149, /* VAR_STUB_FIRST */ + YYSYMBOL_VAR_MINIMAL_RESPONSES = 150, /* VAR_MINIMAL_RESPONSES */ + YYSYMBOL_VAR_RRSET_ROUNDROBIN = 151, /* VAR_RRSET_ROUNDROBIN */ + YYSYMBOL_VAR_MAX_UDP_SIZE = 152, /* VAR_MAX_UDP_SIZE */ + YYSYMBOL_VAR_DELAY_CLOSE = 153, /* VAR_DELAY_CLOSE */ + YYSYMBOL_VAR_UDP_CONNECT = 154, /* VAR_UDP_CONNECT */ + YYSYMBOL_VAR_UNBLOCK_LAN_ZONES = 155, /* VAR_UNBLOCK_LAN_ZONES */ + YYSYMBOL_VAR_INSECURE_LAN_ZONES = 156, /* VAR_INSECURE_LAN_ZONES */ + YYSYMBOL_VAR_INFRA_CACHE_MIN_RTT = 157, /* VAR_INFRA_CACHE_MIN_RTT */ + YYSYMBOL_VAR_INFRA_KEEP_PROBING = 158, /* VAR_INFRA_KEEP_PROBING */ + YYSYMBOL_VAR_DNS64_PREFIX = 159, /* VAR_DNS64_PREFIX */ + YYSYMBOL_VAR_DNS64_SYNTHALL = 160, /* VAR_DNS64_SYNTHALL */ + YYSYMBOL_VAR_DNS64_IGNORE_AAAA = 161, /* VAR_DNS64_IGNORE_AAAA */ + YYSYMBOL_VAR_DNSTAP = 162, /* VAR_DNSTAP */ + YYSYMBOL_VAR_DNSTAP_ENABLE = 163, /* VAR_DNSTAP_ENABLE */ + YYSYMBOL_VAR_DNSTAP_SOCKET_PATH = 164, /* VAR_DNSTAP_SOCKET_PATH */ + YYSYMBOL_VAR_DNSTAP_IP = 165, /* VAR_DNSTAP_IP */ + YYSYMBOL_VAR_DNSTAP_TLS = 166, /* VAR_DNSTAP_TLS */ + YYSYMBOL_VAR_DNSTAP_TLS_SERVER_NAME = 167, /* VAR_DNSTAP_TLS_SERVER_NAME */ + YYSYMBOL_VAR_DNSTAP_TLS_CERT_BUNDLE = 168, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ + YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 169, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ + YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 170, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ + YYSYMBOL_VAR_DNSTAP_SEND_IDENTITY = 171, /* VAR_DNSTAP_SEND_IDENTITY */ + YYSYMBOL_VAR_DNSTAP_SEND_VERSION = 172, /* VAR_DNSTAP_SEND_VERSION */ + YYSYMBOL_VAR_DNSTAP_BIDIRECTIONAL = 173, /* VAR_DNSTAP_BIDIRECTIONAL */ + YYSYMBOL_VAR_DNSTAP_IDENTITY = 174, /* VAR_DNSTAP_IDENTITY */ + YYSYMBOL_VAR_DNSTAP_VERSION = 175, /* VAR_DNSTAP_VERSION */ + YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 176, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 177, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 178, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 179, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 180, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 181, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ + YYSYMBOL_VAR_RESPONSE_IP_TAG = 182, /* VAR_RESPONSE_IP_TAG */ + YYSYMBOL_VAR_RESPONSE_IP = 183, /* VAR_RESPONSE_IP */ + YYSYMBOL_VAR_RESPONSE_IP_DATA = 184, /* VAR_RESPONSE_IP_DATA */ + YYSYMBOL_VAR_HARDEN_ALGO_DOWNGRADE = 185, /* VAR_HARDEN_ALGO_DOWNGRADE */ + YYSYMBOL_VAR_IP_TRANSPARENT = 186, /* VAR_IP_TRANSPARENT */ + YYSYMBOL_VAR_IP_DSCP = 187, /* VAR_IP_DSCP */ + YYSYMBOL_VAR_DISABLE_DNSSEC_LAME_CHECK = 188, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ + YYSYMBOL_VAR_IP_RATELIMIT = 189, /* VAR_IP_RATELIMIT */ + YYSYMBOL_VAR_IP_RATELIMIT_SLABS = 190, /* VAR_IP_RATELIMIT_SLABS */ + YYSYMBOL_VAR_IP_RATELIMIT_SIZE = 191, /* VAR_IP_RATELIMIT_SIZE */ + YYSYMBOL_VAR_RATELIMIT = 192, /* VAR_RATELIMIT */ + YYSYMBOL_VAR_RATELIMIT_SLABS = 193, /* VAR_RATELIMIT_SLABS */ + YYSYMBOL_VAR_RATELIMIT_SIZE = 194, /* VAR_RATELIMIT_SIZE */ + YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 195, /* VAR_RATELIMIT_FOR_DOMAIN */ + YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 196, /* VAR_RATELIMIT_BELOW_DOMAIN */ + YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 197, /* VAR_IP_RATELIMIT_FACTOR */ + YYSYMBOL_VAR_RATELIMIT_FACTOR = 198, /* VAR_RATELIMIT_FACTOR */ + YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 199, /* VAR_SEND_CLIENT_SUBNET */ + YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 200, /* VAR_CLIENT_SUBNET_ZONE */ + YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 201, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 202, /* VAR_CLIENT_SUBNET_OPCODE */ + YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 203, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 204, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 205, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 206, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 207, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 208, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + YYSYMBOL_VAR_CAPS_WHITELIST = 209, /* VAR_CAPS_WHITELIST */ + YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 210, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 211, /* VAR_PERMIT_SMALL_HOLDDOWN */ + YYSYMBOL_VAR_QNAME_MINIMISATION = 212, /* VAR_QNAME_MINIMISATION */ + YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 213, /* VAR_QNAME_MINIMISATION_STRICT */ + YYSYMBOL_VAR_IP_FREEBIND = 214, /* VAR_IP_FREEBIND */ + YYSYMBOL_VAR_DEFINE_TAG = 215, /* VAR_DEFINE_TAG */ + YYSYMBOL_VAR_LOCAL_ZONE_TAG = 216, /* VAR_LOCAL_ZONE_TAG */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 217, /* VAR_ACCESS_CONTROL_TAG */ + YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 218, /* VAR_LOCAL_ZONE_OVERRIDE */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 219, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 220, /* VAR_ACCESS_CONTROL_TAG_DATA */ + YYSYMBOL_VAR_VIEW = 221, /* VAR_VIEW */ + YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 222, /* VAR_ACCESS_CONTROL_VIEW */ + YYSYMBOL_VAR_VIEW_FIRST = 223, /* VAR_VIEW_FIRST */ + YYSYMBOL_VAR_SERVE_EXPIRED = 224, /* VAR_SERVE_EXPIRED */ + YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 225, /* VAR_SERVE_EXPIRED_TTL */ + YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 226, /* VAR_SERVE_EXPIRED_TTL_RESET */ + YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 227, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 228, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 229, /* VAR_SERVE_ORIGINAL_TTL */ + YYSYMBOL_VAR_FAKE_DSA = 230, /* VAR_FAKE_DSA */ + YYSYMBOL_VAR_FAKE_SHA1 = 231, /* VAR_FAKE_SHA1 */ + YYSYMBOL_VAR_LOG_IDENTITY = 232, /* VAR_LOG_IDENTITY */ + YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 233, /* VAR_HIDE_TRUSTANCHOR */ + YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 234, /* VAR_TRUST_ANCHOR_SIGNALING */ + YYSYMBOL_VAR_AGGRESSIVE_NSEC = 235, /* VAR_AGGRESSIVE_NSEC */ + YYSYMBOL_VAR_USE_SYSTEMD = 236, /* VAR_USE_SYSTEMD */ + YYSYMBOL_VAR_SHM_ENABLE = 237, /* VAR_SHM_ENABLE */ + YYSYMBOL_VAR_SHM_KEY = 238, /* VAR_SHM_KEY */ + YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 239, /* VAR_ROOT_KEY_SENTINEL */ + YYSYMBOL_VAR_DNSCRYPT = 240, /* VAR_DNSCRYPT */ + YYSYMBOL_VAR_DNSCRYPT_ENABLE = 241, /* VAR_DNSCRYPT_ENABLE */ + YYSYMBOL_VAR_DNSCRYPT_PORT = 242, /* VAR_DNSCRYPT_PORT */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 243, /* VAR_DNSCRYPT_PROVIDER */ + YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 244, /* VAR_DNSCRYPT_SECRET_KEY */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 245, /* VAR_DNSCRYPT_PROVIDER_CERT */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 246, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 247, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 248, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 249, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 250, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + YYSYMBOL_VAR_PAD_RESPONSES = 251, /* VAR_PAD_RESPONSES */ + YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 252, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + YYSYMBOL_VAR_PAD_QUERIES = 253, /* VAR_PAD_QUERIES */ + YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 254, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + YYSYMBOL_VAR_IPSECMOD_ENABLED = 255, /* VAR_IPSECMOD_ENABLED */ + YYSYMBOL_VAR_IPSECMOD_HOOK = 256, /* VAR_IPSECMOD_HOOK */ + YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 257, /* VAR_IPSECMOD_IGNORE_BOGUS */ + YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 258, /* VAR_IPSECMOD_MAX_TTL */ + YYSYMBOL_VAR_IPSECMOD_WHITELIST = 259, /* VAR_IPSECMOD_WHITELIST */ + YYSYMBOL_VAR_IPSECMOD_STRICT = 260, /* VAR_IPSECMOD_STRICT */ + YYSYMBOL_VAR_CACHEDB = 261, /* VAR_CACHEDB */ + YYSYMBOL_VAR_CACHEDB_BACKEND = 262, /* VAR_CACHEDB_BACKEND */ + YYSYMBOL_VAR_CACHEDB_SECRETSEED = 263, /* VAR_CACHEDB_SECRETSEED */ + YYSYMBOL_VAR_CACHEDB_REDISHOST = 264, /* VAR_CACHEDB_REDISHOST */ + YYSYMBOL_VAR_CACHEDB_REDISPORT = 265, /* VAR_CACHEDB_REDISPORT */ + YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 266, /* VAR_CACHEDB_REDISTIMEOUT */ + YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 267, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 268, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + YYSYMBOL_VAR_FOR_UPSTREAM = 269, /* VAR_FOR_UPSTREAM */ + YYSYMBOL_VAR_AUTH_ZONE = 270, /* VAR_AUTH_ZONE */ + YYSYMBOL_VAR_ZONEFILE = 271, /* VAR_ZONEFILE */ + YYSYMBOL_VAR_MASTER = 272, /* VAR_MASTER */ + YYSYMBOL_VAR_URL = 273, /* VAR_URL */ + YYSYMBOL_VAR_FOR_DOWNSTREAM = 274, /* VAR_FOR_DOWNSTREAM */ + YYSYMBOL_VAR_FALLBACK_ENABLED = 275, /* VAR_FALLBACK_ENABLED */ + YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 276, /* VAR_TLS_ADDITIONAL_PORT */ + YYSYMBOL_VAR_LOW_RTT = 277, /* VAR_LOW_RTT */ + YYSYMBOL_VAR_LOW_RTT_PERMIL = 278, /* VAR_LOW_RTT_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_PERMIL = 279, /* VAR_FAST_SERVER_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_NUM = 280, /* VAR_FAST_SERVER_NUM */ + YYSYMBOL_VAR_ALLOW_NOTIFY = 281, /* VAR_ALLOW_NOTIFY */ + YYSYMBOL_VAR_TLS_WIN_CERT = 282, /* VAR_TLS_WIN_CERT */ + YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 283, /* VAR_TCP_CONNECTION_LIMIT */ + YYSYMBOL_VAR_FORWARD_NO_CACHE = 284, /* VAR_FORWARD_NO_CACHE */ + YYSYMBOL_VAR_STUB_NO_CACHE = 285, /* VAR_STUB_NO_CACHE */ + YYSYMBOL_VAR_LOG_SERVFAIL = 286, /* VAR_LOG_SERVFAIL */ + YYSYMBOL_VAR_DENY_ANY = 287, /* VAR_DENY_ANY */ + YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 288, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 289, /* VAR_LOG_TAG_QUERYREPLY */ + YYSYMBOL_VAR_STREAM_WAIT_SIZE = 290, /* VAR_STREAM_WAIT_SIZE */ + YYSYMBOL_VAR_TLS_CIPHERS = 291, /* VAR_TLS_CIPHERS */ + YYSYMBOL_VAR_TLS_CIPHERSUITES = 292, /* VAR_TLS_CIPHERSUITES */ + YYSYMBOL_VAR_TLS_USE_SNI = 293, /* VAR_TLS_USE_SNI */ + YYSYMBOL_VAR_IPSET = 294, /* VAR_IPSET */ + YYSYMBOL_VAR_IPSET_NAME_V4 = 295, /* VAR_IPSET_NAME_V4 */ + YYSYMBOL_VAR_IPSET_NAME_V6 = 296, /* VAR_IPSET_NAME_V6 */ + YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 297, /* VAR_TLS_SESSION_TICKET_KEYS */ + YYSYMBOL_VAR_RPZ = 298, /* VAR_RPZ */ + YYSYMBOL_VAR_TAGS = 299, /* VAR_TAGS */ + YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 300, /* VAR_RPZ_ACTION_OVERRIDE */ + YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 301, /* VAR_RPZ_CNAME_OVERRIDE */ + YYSYMBOL_VAR_RPZ_LOG = 302, /* VAR_RPZ_LOG */ + YYSYMBOL_VAR_RPZ_LOG_NAME = 303, /* VAR_RPZ_LOG_NAME */ + YYSYMBOL_VAR_DYNLIB = 304, /* VAR_DYNLIB */ + YYSYMBOL_VAR_DYNLIB_FILE = 305, /* VAR_DYNLIB_FILE */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING = 306, /* VAR_EDNS_CLIENT_STRING */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 307, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + YYSYMBOL_VAR_NSID = 308, /* VAR_NSID */ + YYSYMBOL_YYACCEPT = 309, /* $accept */ + YYSYMBOL_toplevelvars = 310, /* toplevelvars */ + YYSYMBOL_toplevelvar = 311, /* toplevelvar */ + YYSYMBOL_force_toplevel = 312, /* force_toplevel */ + YYSYMBOL_serverstart = 313, /* serverstart */ + YYSYMBOL_contents_server = 314, /* contents_server */ + YYSYMBOL_content_server = 315, /* content_server */ + YYSYMBOL_stubstart = 316, /* stubstart */ + YYSYMBOL_contents_stub = 317, /* contents_stub */ + YYSYMBOL_content_stub = 318, /* content_stub */ + YYSYMBOL_forwardstart = 319, /* forwardstart */ + YYSYMBOL_contents_forward = 320, /* contents_forward */ + YYSYMBOL_content_forward = 321, /* content_forward */ + YYSYMBOL_viewstart = 322, /* viewstart */ + YYSYMBOL_contents_view = 323, /* contents_view */ + YYSYMBOL_content_view = 324, /* content_view */ + YYSYMBOL_authstart = 325, /* authstart */ + YYSYMBOL_contents_auth = 326, /* contents_auth */ + YYSYMBOL_content_auth = 327, /* content_auth */ + YYSYMBOL_rpz_tag = 328, /* rpz_tag */ + YYSYMBOL_rpz_action_override = 329, /* rpz_action_override */ + YYSYMBOL_rpz_cname_override = 330, /* rpz_cname_override */ + YYSYMBOL_rpz_log = 331, /* rpz_log */ + YYSYMBOL_rpz_log_name = 332, /* rpz_log_name */ + YYSYMBOL_rpzstart = 333, /* rpzstart */ + YYSYMBOL_contents_rpz = 334, /* contents_rpz */ + YYSYMBOL_content_rpz = 335, /* content_rpz */ + YYSYMBOL_server_num_threads = 336, /* server_num_threads */ + YYSYMBOL_server_verbosity = 337, /* server_verbosity */ + YYSYMBOL_server_statistics_interval = 338, /* server_statistics_interval */ + YYSYMBOL_server_statistics_cumulative = 339, /* server_statistics_cumulative */ + YYSYMBOL_server_extended_statistics = 340, /* server_extended_statistics */ + YYSYMBOL_server_shm_enable = 341, /* server_shm_enable */ + YYSYMBOL_server_shm_key = 342, /* server_shm_key */ + YYSYMBOL_server_port = 343, /* server_port */ + YYSYMBOL_server_send_client_subnet = 344, /* server_send_client_subnet */ + YYSYMBOL_server_client_subnet_zone = 345, /* server_client_subnet_zone */ + YYSYMBOL_server_client_subnet_always_forward = 346, /* server_client_subnet_always_forward */ + YYSYMBOL_server_client_subnet_opcode = 347, /* server_client_subnet_opcode */ + YYSYMBOL_server_max_client_subnet_ipv4 = 348, /* server_max_client_subnet_ipv4 */ + YYSYMBOL_server_max_client_subnet_ipv6 = 349, /* server_max_client_subnet_ipv6 */ + YYSYMBOL_server_min_client_subnet_ipv4 = 350, /* server_min_client_subnet_ipv4 */ + YYSYMBOL_server_min_client_subnet_ipv6 = 351, /* server_min_client_subnet_ipv6 */ + YYSYMBOL_server_max_ecs_tree_size_ipv4 = 352, /* server_max_ecs_tree_size_ipv4 */ + YYSYMBOL_server_max_ecs_tree_size_ipv6 = 353, /* server_max_ecs_tree_size_ipv6 */ + YYSYMBOL_server_interface = 354, /* server_interface */ + YYSYMBOL_server_outgoing_interface = 355, /* server_outgoing_interface */ + YYSYMBOL_server_outgoing_range = 356, /* server_outgoing_range */ + YYSYMBOL_server_outgoing_port_permit = 357, /* server_outgoing_port_permit */ + YYSYMBOL_server_outgoing_port_avoid = 358, /* server_outgoing_port_avoid */ + YYSYMBOL_server_outgoing_num_tcp = 359, /* server_outgoing_num_tcp */ + YYSYMBOL_server_incoming_num_tcp = 360, /* server_incoming_num_tcp */ + YYSYMBOL_server_interface_automatic = 361, /* server_interface_automatic */ + YYSYMBOL_server_do_ip4 = 362, /* server_do_ip4 */ + YYSYMBOL_server_do_ip6 = 363, /* server_do_ip6 */ + YYSYMBOL_server_do_udp = 364, /* server_do_udp */ + YYSYMBOL_server_do_tcp = 365, /* server_do_tcp */ + YYSYMBOL_server_prefer_ip4 = 366, /* server_prefer_ip4 */ + YYSYMBOL_server_prefer_ip6 = 367, /* server_prefer_ip6 */ + YYSYMBOL_server_tcp_mss = 368, /* server_tcp_mss */ + YYSYMBOL_server_outgoing_tcp_mss = 369, /* server_outgoing_tcp_mss */ + YYSYMBOL_server_tcp_idle_timeout = 370, /* server_tcp_idle_timeout */ + YYSYMBOL_server_tcp_keepalive = 371, /* server_tcp_keepalive */ + YYSYMBOL_server_tcp_keepalive_timeout = 372, /* server_tcp_keepalive_timeout */ + YYSYMBOL_server_tcp_upstream = 373, /* server_tcp_upstream */ + YYSYMBOL_server_udp_upstream_without_downstream = 374, /* server_udp_upstream_without_downstream */ + YYSYMBOL_server_ssl_upstream = 375, /* server_ssl_upstream */ + YYSYMBOL_server_ssl_service_key = 376, /* server_ssl_service_key */ + YYSYMBOL_server_ssl_service_pem = 377, /* server_ssl_service_pem */ + YYSYMBOL_server_ssl_port = 378, /* server_ssl_port */ + YYSYMBOL_server_tls_cert_bundle = 379, /* server_tls_cert_bundle */ + YYSYMBOL_server_tls_win_cert = 380, /* server_tls_win_cert */ + YYSYMBOL_server_tls_additional_port = 381, /* server_tls_additional_port */ + YYSYMBOL_server_tls_ciphers = 382, /* server_tls_ciphers */ + YYSYMBOL_server_tls_ciphersuites = 383, /* server_tls_ciphersuites */ + YYSYMBOL_server_tls_session_ticket_keys = 384, /* server_tls_session_ticket_keys */ + YYSYMBOL_server_tls_use_sni = 385, /* server_tls_use_sni */ + YYSYMBOL_server_https_port = 386, /* server_https_port */ + YYSYMBOL_server_http_endpoint = 387, /* server_http_endpoint */ + YYSYMBOL_server_http_max_streams = 388, /* server_http_max_streams */ + YYSYMBOL_server_http_query_buffer_size = 389, /* server_http_query_buffer_size */ + YYSYMBOL_server_http_response_buffer_size = 390, /* server_http_response_buffer_size */ + YYSYMBOL_server_http_nodelay = 391, /* server_http_nodelay */ + YYSYMBOL_server_http_notls_downstream = 392, /* server_http_notls_downstream */ + YYSYMBOL_server_use_systemd = 393, /* server_use_systemd */ + YYSYMBOL_server_do_daemonize = 394, /* server_do_daemonize */ + YYSYMBOL_server_use_syslog = 395, /* server_use_syslog */ + YYSYMBOL_server_log_time_ascii = 396, /* server_log_time_ascii */ + YYSYMBOL_server_log_queries = 397, /* server_log_queries */ + YYSYMBOL_server_log_replies = 398, /* server_log_replies */ + YYSYMBOL_server_log_tag_queryreply = 399, /* server_log_tag_queryreply */ + YYSYMBOL_server_log_servfail = 400, /* server_log_servfail */ + YYSYMBOL_server_log_local_actions = 401, /* server_log_local_actions */ + YYSYMBOL_server_chroot = 402, /* server_chroot */ + YYSYMBOL_server_username = 403, /* server_username */ + YYSYMBOL_server_directory = 404, /* server_directory */ + YYSYMBOL_server_logfile = 405, /* server_logfile */ + YYSYMBOL_server_pidfile = 406, /* server_pidfile */ + YYSYMBOL_server_root_hints = 407, /* server_root_hints */ + YYSYMBOL_server_dlv_anchor_file = 408, /* server_dlv_anchor_file */ + YYSYMBOL_server_dlv_anchor = 409, /* server_dlv_anchor */ + YYSYMBOL_server_auto_trust_anchor_file = 410, /* server_auto_trust_anchor_file */ + YYSYMBOL_server_trust_anchor_file = 411, /* server_trust_anchor_file */ + YYSYMBOL_server_trusted_keys_file = 412, /* server_trusted_keys_file */ + YYSYMBOL_server_trust_anchor = 413, /* server_trust_anchor */ + YYSYMBOL_server_trust_anchor_signaling = 414, /* server_trust_anchor_signaling */ + YYSYMBOL_server_root_key_sentinel = 415, /* server_root_key_sentinel */ + YYSYMBOL_server_domain_insecure = 416, /* server_domain_insecure */ + YYSYMBOL_server_hide_identity = 417, /* server_hide_identity */ + YYSYMBOL_server_hide_version = 418, /* server_hide_version */ + YYSYMBOL_server_hide_trustanchor = 419, /* server_hide_trustanchor */ + YYSYMBOL_server_identity = 420, /* server_identity */ + YYSYMBOL_server_version = 421, /* server_version */ + YYSYMBOL_server_nsid = 422, /* server_nsid */ + YYSYMBOL_server_so_rcvbuf = 423, /* server_so_rcvbuf */ + YYSYMBOL_server_so_sndbuf = 424, /* server_so_sndbuf */ + YYSYMBOL_server_so_reuseport = 425, /* server_so_reuseport */ + YYSYMBOL_server_ip_transparent = 426, /* server_ip_transparent */ + YYSYMBOL_server_ip_freebind = 427, /* server_ip_freebind */ + YYSYMBOL_server_ip_dscp = 428, /* server_ip_dscp */ + YYSYMBOL_server_stream_wait_size = 429, /* server_stream_wait_size */ + YYSYMBOL_server_edns_buffer_size = 430, /* server_edns_buffer_size */ + YYSYMBOL_server_msg_buffer_size = 431, /* server_msg_buffer_size */ + YYSYMBOL_server_msg_cache_size = 432, /* server_msg_cache_size */ + YYSYMBOL_server_msg_cache_slabs = 433, /* server_msg_cache_slabs */ + YYSYMBOL_server_num_queries_per_thread = 434, /* server_num_queries_per_thread */ + YYSYMBOL_server_jostle_timeout = 435, /* server_jostle_timeout */ + YYSYMBOL_server_delay_close = 436, /* server_delay_close */ + YYSYMBOL_server_udp_connect = 437, /* server_udp_connect */ + YYSYMBOL_server_unblock_lan_zones = 438, /* server_unblock_lan_zones */ + YYSYMBOL_server_insecure_lan_zones = 439, /* server_insecure_lan_zones */ + YYSYMBOL_server_rrset_cache_size = 440, /* server_rrset_cache_size */ + YYSYMBOL_server_rrset_cache_slabs = 441, /* server_rrset_cache_slabs */ + YYSYMBOL_server_infra_host_ttl = 442, /* server_infra_host_ttl */ + YYSYMBOL_server_infra_lame_ttl = 443, /* server_infra_lame_ttl */ + YYSYMBOL_server_infra_cache_numhosts = 444, /* server_infra_cache_numhosts */ + YYSYMBOL_server_infra_cache_lame_size = 445, /* server_infra_cache_lame_size */ + YYSYMBOL_server_infra_cache_slabs = 446, /* server_infra_cache_slabs */ + YYSYMBOL_server_infra_cache_min_rtt = 447, /* server_infra_cache_min_rtt */ + YYSYMBOL_server_infra_keep_probing = 448, /* server_infra_keep_probing */ + YYSYMBOL_server_target_fetch_policy = 449, /* server_target_fetch_policy */ + YYSYMBOL_server_harden_short_bufsize = 450, /* server_harden_short_bufsize */ + YYSYMBOL_server_harden_large_queries = 451, /* server_harden_large_queries */ + YYSYMBOL_server_harden_glue = 452, /* server_harden_glue */ + YYSYMBOL_server_harden_dnssec_stripped = 453, /* server_harden_dnssec_stripped */ + YYSYMBOL_server_harden_below_nxdomain = 454, /* server_harden_below_nxdomain */ + YYSYMBOL_server_harden_referral_path = 455, /* server_harden_referral_path */ + YYSYMBOL_server_harden_algo_downgrade = 456, /* server_harden_algo_downgrade */ + YYSYMBOL_server_use_caps_for_id = 457, /* server_use_caps_for_id */ + YYSYMBOL_server_caps_whitelist = 458, /* server_caps_whitelist */ + YYSYMBOL_server_private_address = 459, /* server_private_address */ + YYSYMBOL_server_private_domain = 460, /* server_private_domain */ + YYSYMBOL_server_prefetch = 461, /* server_prefetch */ + YYSYMBOL_server_prefetch_key = 462, /* server_prefetch_key */ + YYSYMBOL_server_deny_any = 463, /* server_deny_any */ + YYSYMBOL_server_unwanted_reply_threshold = 464, /* server_unwanted_reply_threshold */ + YYSYMBOL_server_do_not_query_address = 465, /* server_do_not_query_address */ + YYSYMBOL_server_do_not_query_localhost = 466, /* server_do_not_query_localhost */ + YYSYMBOL_server_access_control = 467, /* server_access_control */ + YYSYMBOL_server_module_conf = 468, /* server_module_conf */ + YYSYMBOL_server_val_override_date = 469, /* server_val_override_date */ + YYSYMBOL_server_val_sig_skew_min = 470, /* server_val_sig_skew_min */ + YYSYMBOL_server_val_sig_skew_max = 471, /* server_val_sig_skew_max */ + YYSYMBOL_server_cache_max_ttl = 472, /* server_cache_max_ttl */ + YYSYMBOL_server_cache_max_negative_ttl = 473, /* server_cache_max_negative_ttl */ + YYSYMBOL_server_cache_min_ttl = 474, /* server_cache_min_ttl */ + YYSYMBOL_server_bogus_ttl = 475, /* server_bogus_ttl */ + YYSYMBOL_server_val_clean_additional = 476, /* server_val_clean_additional */ + YYSYMBOL_server_val_permissive_mode = 477, /* server_val_permissive_mode */ + YYSYMBOL_server_aggressive_nsec = 478, /* server_aggressive_nsec */ + YYSYMBOL_server_ignore_cd_flag = 479, /* server_ignore_cd_flag */ + YYSYMBOL_server_serve_expired = 480, /* server_serve_expired */ + YYSYMBOL_server_serve_expired_ttl = 481, /* server_serve_expired_ttl */ + YYSYMBOL_server_serve_expired_ttl_reset = 482, /* server_serve_expired_ttl_reset */ + YYSYMBOL_server_serve_expired_reply_ttl = 483, /* server_serve_expired_reply_ttl */ + YYSYMBOL_server_serve_expired_client_timeout = 484, /* server_serve_expired_client_timeout */ + YYSYMBOL_server_serve_original_ttl = 485, /* server_serve_original_ttl */ + YYSYMBOL_server_fake_dsa = 486, /* server_fake_dsa */ + YYSYMBOL_server_fake_sha1 = 487, /* server_fake_sha1 */ + YYSYMBOL_server_val_log_level = 488, /* server_val_log_level */ + YYSYMBOL_server_val_nsec3_keysize_iterations = 489, /* server_val_nsec3_keysize_iterations */ + YYSYMBOL_server_add_holddown = 490, /* server_add_holddown */ + YYSYMBOL_server_del_holddown = 491, /* server_del_holddown */ + YYSYMBOL_server_keep_missing = 492, /* server_keep_missing */ + YYSYMBOL_server_permit_small_holddown = 493, /* server_permit_small_holddown */ + YYSYMBOL_server_key_cache_size = 494, /* server_key_cache_size */ + YYSYMBOL_server_key_cache_slabs = 495, /* server_key_cache_slabs */ + YYSYMBOL_server_neg_cache_size = 496, /* server_neg_cache_size */ + YYSYMBOL_server_local_zone = 497, /* server_local_zone */ + YYSYMBOL_server_local_data = 498, /* server_local_data */ + YYSYMBOL_server_local_data_ptr = 499, /* server_local_data_ptr */ + YYSYMBOL_server_minimal_responses = 500, /* server_minimal_responses */ + YYSYMBOL_server_rrset_roundrobin = 501, /* server_rrset_roundrobin */ + YYSYMBOL_server_unknown_server_time_limit = 502, /* server_unknown_server_time_limit */ + YYSYMBOL_server_max_udp_size = 503, /* server_max_udp_size */ + YYSYMBOL_server_dns64_prefix = 504, /* server_dns64_prefix */ + YYSYMBOL_server_dns64_synthall = 505, /* server_dns64_synthall */ + YYSYMBOL_server_dns64_ignore_aaaa = 506, /* server_dns64_ignore_aaaa */ + YYSYMBOL_server_define_tag = 507, /* server_define_tag */ + YYSYMBOL_server_local_zone_tag = 508, /* server_local_zone_tag */ + YYSYMBOL_server_access_control_tag = 509, /* server_access_control_tag */ + YYSYMBOL_server_access_control_tag_action = 510, /* server_access_control_tag_action */ + YYSYMBOL_server_access_control_tag_data = 511, /* server_access_control_tag_data */ + YYSYMBOL_server_local_zone_override = 512, /* server_local_zone_override */ + YYSYMBOL_server_access_control_view = 513, /* server_access_control_view */ + YYSYMBOL_server_response_ip_tag = 514, /* server_response_ip_tag */ + YYSYMBOL_server_ip_ratelimit = 515, /* server_ip_ratelimit */ + YYSYMBOL_server_ratelimit = 516, /* server_ratelimit */ + YYSYMBOL_server_ip_ratelimit_size = 517, /* server_ip_ratelimit_size */ + YYSYMBOL_server_ratelimit_size = 518, /* server_ratelimit_size */ + YYSYMBOL_server_ip_ratelimit_slabs = 519, /* server_ip_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_slabs = 520, /* server_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_for_domain = 521, /* server_ratelimit_for_domain */ + YYSYMBOL_server_ratelimit_below_domain = 522, /* server_ratelimit_below_domain */ + YYSYMBOL_server_ip_ratelimit_factor = 523, /* server_ip_ratelimit_factor */ + YYSYMBOL_server_ratelimit_factor = 524, /* server_ratelimit_factor */ + YYSYMBOL_server_low_rtt = 525, /* server_low_rtt */ + YYSYMBOL_server_fast_server_num = 526, /* server_fast_server_num */ + YYSYMBOL_server_fast_server_permil = 527, /* server_fast_server_permil */ + YYSYMBOL_server_qname_minimisation = 528, /* server_qname_minimisation */ + YYSYMBOL_server_qname_minimisation_strict = 529, /* server_qname_minimisation_strict */ + YYSYMBOL_server_pad_responses = 530, /* server_pad_responses */ + YYSYMBOL_server_pad_responses_block_size = 531, /* server_pad_responses_block_size */ + YYSYMBOL_server_pad_queries = 532, /* server_pad_queries */ + YYSYMBOL_server_pad_queries_block_size = 533, /* server_pad_queries_block_size */ + YYSYMBOL_server_ipsecmod_enabled = 534, /* server_ipsecmod_enabled */ + YYSYMBOL_server_ipsecmod_ignore_bogus = 535, /* server_ipsecmod_ignore_bogus */ + YYSYMBOL_server_ipsecmod_hook = 536, /* server_ipsecmod_hook */ + YYSYMBOL_server_ipsecmod_max_ttl = 537, /* server_ipsecmod_max_ttl */ + YYSYMBOL_server_ipsecmod_whitelist = 538, /* server_ipsecmod_whitelist */ + YYSYMBOL_server_ipsecmod_strict = 539, /* server_ipsecmod_strict */ + YYSYMBOL_server_edns_client_string = 540, /* server_edns_client_string */ + YYSYMBOL_server_edns_client_string_opcode = 541, /* server_edns_client_string_opcode */ + YYSYMBOL_stub_name = 542, /* stub_name */ + YYSYMBOL_stub_host = 543, /* stub_host */ + YYSYMBOL_stub_addr = 544, /* stub_addr */ + YYSYMBOL_stub_first = 545, /* stub_first */ + YYSYMBOL_stub_no_cache = 546, /* stub_no_cache */ + YYSYMBOL_stub_ssl_upstream = 547, /* stub_ssl_upstream */ + YYSYMBOL_stub_prime = 548, /* stub_prime */ + YYSYMBOL_forward_name = 549, /* forward_name */ + YYSYMBOL_forward_host = 550, /* forward_host */ + YYSYMBOL_forward_addr = 551, /* forward_addr */ + YYSYMBOL_forward_first = 552, /* forward_first */ + YYSYMBOL_forward_no_cache = 553, /* forward_no_cache */ + YYSYMBOL_forward_ssl_upstream = 554, /* forward_ssl_upstream */ + YYSYMBOL_auth_name = 555, /* auth_name */ + YYSYMBOL_auth_zonefile = 556, /* auth_zonefile */ + YYSYMBOL_auth_master = 557, /* auth_master */ + YYSYMBOL_auth_url = 558, /* auth_url */ + YYSYMBOL_auth_allow_notify = 559, /* auth_allow_notify */ + YYSYMBOL_auth_for_downstream = 560, /* auth_for_downstream */ + YYSYMBOL_auth_for_upstream = 561, /* auth_for_upstream */ + YYSYMBOL_auth_fallback_enabled = 562, /* auth_fallback_enabled */ + YYSYMBOL_view_name = 563, /* view_name */ + YYSYMBOL_view_local_zone = 564, /* view_local_zone */ + YYSYMBOL_view_response_ip = 565, /* view_response_ip */ + YYSYMBOL_view_response_ip_data = 566, /* view_response_ip_data */ + YYSYMBOL_view_local_data = 567, /* view_local_data */ + YYSYMBOL_view_local_data_ptr = 568, /* view_local_data_ptr */ + YYSYMBOL_view_first = 569, /* view_first */ + YYSYMBOL_rcstart = 570, /* rcstart */ + YYSYMBOL_contents_rc = 571, /* contents_rc */ + YYSYMBOL_content_rc = 572, /* content_rc */ + YYSYMBOL_rc_control_enable = 573, /* rc_control_enable */ + YYSYMBOL_rc_control_port = 574, /* rc_control_port */ + YYSYMBOL_rc_control_interface = 575, /* rc_control_interface */ + YYSYMBOL_rc_control_use_cert = 576, /* rc_control_use_cert */ + YYSYMBOL_rc_server_key_file = 577, /* rc_server_key_file */ + YYSYMBOL_rc_server_cert_file = 578, /* rc_server_cert_file */ + YYSYMBOL_rc_control_key_file = 579, /* rc_control_key_file */ + YYSYMBOL_rc_control_cert_file = 580, /* rc_control_cert_file */ + YYSYMBOL_dtstart = 581, /* dtstart */ + YYSYMBOL_contents_dt = 582, /* contents_dt */ + YYSYMBOL_content_dt = 583, /* content_dt */ + YYSYMBOL_dt_dnstap_enable = 584, /* dt_dnstap_enable */ + YYSYMBOL_dt_dnstap_bidirectional = 585, /* dt_dnstap_bidirectional */ + YYSYMBOL_dt_dnstap_socket_path = 586, /* dt_dnstap_socket_path */ + YYSYMBOL_dt_dnstap_ip = 587, /* dt_dnstap_ip */ + YYSYMBOL_dt_dnstap_tls = 588, /* dt_dnstap_tls */ + YYSYMBOL_dt_dnstap_tls_server_name = 589, /* dt_dnstap_tls_server_name */ + YYSYMBOL_dt_dnstap_tls_cert_bundle = 590, /* dt_dnstap_tls_cert_bundle */ + YYSYMBOL_dt_dnstap_tls_client_key_file = 591, /* dt_dnstap_tls_client_key_file */ + YYSYMBOL_dt_dnstap_tls_client_cert_file = 592, /* dt_dnstap_tls_client_cert_file */ + YYSYMBOL_dt_dnstap_send_identity = 593, /* dt_dnstap_send_identity */ + YYSYMBOL_dt_dnstap_send_version = 594, /* dt_dnstap_send_version */ + YYSYMBOL_dt_dnstap_identity = 595, /* dt_dnstap_identity */ + YYSYMBOL_dt_dnstap_version = 596, /* dt_dnstap_version */ + YYSYMBOL_dt_dnstap_log_resolver_query_messages = 597, /* dt_dnstap_log_resolver_query_messages */ + YYSYMBOL_dt_dnstap_log_resolver_response_messages = 598, /* dt_dnstap_log_resolver_response_messages */ + YYSYMBOL_dt_dnstap_log_client_query_messages = 599, /* dt_dnstap_log_client_query_messages */ + YYSYMBOL_dt_dnstap_log_client_response_messages = 600, /* dt_dnstap_log_client_response_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 601, /* dt_dnstap_log_forwarder_query_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 602, /* dt_dnstap_log_forwarder_response_messages */ + YYSYMBOL_pythonstart = 603, /* pythonstart */ + YYSYMBOL_contents_py = 604, /* contents_py */ + YYSYMBOL_content_py = 605, /* content_py */ + YYSYMBOL_py_script = 606, /* py_script */ + YYSYMBOL_dynlibstart = 607, /* dynlibstart */ + YYSYMBOL_contents_dl = 608, /* contents_dl */ + YYSYMBOL_content_dl = 609, /* content_dl */ + YYSYMBOL_dl_file = 610, /* dl_file */ + YYSYMBOL_server_disable_dnssec_lame_check = 611, /* server_disable_dnssec_lame_check */ + YYSYMBOL_server_log_identity = 612, /* server_log_identity */ + YYSYMBOL_server_response_ip = 613, /* server_response_ip */ + YYSYMBOL_server_response_ip_data = 614, /* server_response_ip_data */ + YYSYMBOL_dnscstart = 615, /* dnscstart */ + YYSYMBOL_contents_dnsc = 616, /* contents_dnsc */ + YYSYMBOL_content_dnsc = 617, /* content_dnsc */ + YYSYMBOL_dnsc_dnscrypt_enable = 618, /* dnsc_dnscrypt_enable */ + YYSYMBOL_dnsc_dnscrypt_port = 619, /* dnsc_dnscrypt_port */ + YYSYMBOL_dnsc_dnscrypt_provider = 620, /* dnsc_dnscrypt_provider */ + YYSYMBOL_dnsc_dnscrypt_provider_cert = 621, /* dnsc_dnscrypt_provider_cert */ + YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 622, /* dnsc_dnscrypt_provider_cert_rotated */ + YYSYMBOL_dnsc_dnscrypt_secret_key = 623, /* dnsc_dnscrypt_secret_key */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 624, /* dnsc_dnscrypt_shared_secret_cache_size */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 625, /* dnsc_dnscrypt_shared_secret_cache_slabs */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 626, /* dnsc_dnscrypt_nonce_cache_size */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 627, /* dnsc_dnscrypt_nonce_cache_slabs */ + YYSYMBOL_cachedbstart = 628, /* cachedbstart */ + YYSYMBOL_contents_cachedb = 629, /* contents_cachedb */ + YYSYMBOL_content_cachedb = 630, /* content_cachedb */ + YYSYMBOL_cachedb_backend_name = 631, /* cachedb_backend_name */ + YYSYMBOL_cachedb_secret_seed = 632, /* cachedb_secret_seed */ + YYSYMBOL_redis_server_host = 633, /* redis_server_host */ + YYSYMBOL_redis_server_port = 634, /* redis_server_port */ + YYSYMBOL_redis_timeout = 635, /* redis_timeout */ + YYSYMBOL_redis_expire_records = 636, /* redis_expire_records */ + YYSYMBOL_server_tcp_connection_limit = 637, /* server_tcp_connection_limit */ + YYSYMBOL_ipsetstart = 638, /* ipsetstart */ + YYSYMBOL_contents_ipset = 639, /* contents_ipset */ + YYSYMBOL_content_ipset = 640, /* content_ipset */ + YYSYMBOL_ipset_name_v4 = 641, /* ipset_name_v4 */ + YYSYMBOL_ipset_name_v6 = 642 /* ipset_name_v6 */ +}; +typedef enum yysymbol_kind_t yysymbol_kind_t; + @@ -767,28 +1439,75 @@ int yyparse (void); # undef short #endif -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; +/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure + <limits.h> and (if available) <stdint.h> are included + so that the code can choose integer types of a good width. */ + +#ifndef __PTRDIFF_MAX__ +# include <limits.h> /* INFRINGES ON USER NAME SPACE */ +# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include <stdint.h> /* INFRINGES ON USER NAME SPACE */ +# define YY_STDINT_H +# endif #endif -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; +/* 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; #else typedef signed char yytype_int8; #endif -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; +#ifdef __INT_LEAST16_MAX__ +typedef __INT_LEAST16_TYPE__ yytype_int16; +#elif defined YY_STDINT_H +typedef int_least16_t yytype_int16; #else -typedef unsigned short yytype_uint16; +typedef short yytype_int16; #endif -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; +#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_int16; +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 <stddef.h> /* 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 @@ -796,7 +1515,7 @@ typedef short yytype_int16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T +# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -804,7 +1523,20 @@ typedef short yytype_int16; # endif #endif -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) +#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; #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS @@ -818,22 +1550,21 @@ typedef short yytype_int16; # endif #endif -#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(Spec) /* empty */ -# endif -#endif #ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define YY_ATTRIBUTE_PURE +# endif #endif #ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define YY_ATTRIBUTE_UNUSED +# endif #endif /* Suppress unused-variable warnings by "using" E. */ @@ -845,11 +1576,11 @@ typedef short yytype_int16; #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 @@ -862,10 +1593,22 @@ typedef short yytype_int16; # 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))) -#if ! defined yyoverflow || YYERROR_VERBOSE +#if !defined yyoverflow /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -930,8 +1673,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif -#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ - +#endif /* !defined yyoverflow */ #if (! defined yyoverflow \ && (! defined __cplusplus \ @@ -940,17 +1682,17 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ /* A type that is properly aligned for any stack member. */ union yyalloc { - yytype_int16 yyss_alloc; + yy_state_t yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) +# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 @@ -963,11 +1705,11 @@ union yyalloc # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ - YYSIZE_T yynewbytes; \ + YYPTRDIFF_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ + yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / YYSIZEOF (*yyptr); \ } \ while (0) @@ -979,12 +1721,12 @@ union yyalloc # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) + __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ - YYSIZE_T yyi; \ + YYPTRDIFF_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ @@ -996,28 +1738,30 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 641 +#define YYLAST 652 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 303 +#define YYNTOKENS 309 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 328 +#define YYNNTS 334 /* YYNRULES -- Number of rules. */ -#define YYNRULES 632 +#define YYNRULES 644 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 939 +#define YYNSTATES 957 + +#define YYMAXUTOK 563 -#define YYUNDEFTOK 2 -#define YYMAXUTOK 557 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ -#define YYTRANSLATE(YYX) \ - ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) +#define YYTRANSLATE(YYX) \ + (0 <= (YYX) && (YYX) <= YYMAXUTOK \ + ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ + : YYSYMBOL_YYUNDEF) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex. */ -static const yytype_uint16 yytranslate[] = +static const yytype_int16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1074,90 +1818,99 @@ 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, 300, 301, 302 + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_uint16 yyrline[] = +static const yytype_int16 yyrline[] = { - 0, 185, 185, 185, 186, 186, 187, 187, 188, 188, - 188, 189, 189, 190, 190, 191, 191, 192, 194, 200, - 205, 206, 207, 207, 207, 208, 208, 209, 209, 209, - 210, 210, 211, 211, 211, 212, 212, 213, 213, 213, - 214, 214, 214, 215, 215, 216, 216, 217, 217, 218, - 218, 219, 219, 220, 220, 221, 221, 222, 222, 223, - 223, 223, 224, 224, 224, 225, 225, 225, 226, 226, - 227, 227, 228, 228, 229, 229, 230, 230, 230, 231, - 231, 232, 232, 233, 233, 233, 234, 234, 235, 235, - 236, 236, 237, 237, 237, 238, 238, 239, 239, 240, - 240, 241, 241, 242, 242, 243, 243, 243, 244, 244, - 245, 245, 245, 246, 246, 246, 247, 247, 247, 248, - 248, 248, 248, 249, 250, 250, 250, 251, 251, 251, - 252, 252, 253, 253, 254, 254, 254, 255, 255, 255, - 256, 256, 257, 257, 257, 258, 258, 259, 259, 259, - 260, 260, 261, 261, 262, 262, 263, 264, 264, 265, - 265, 266, 266, 267, 268, 268, 269, 269, 270, 270, - 271, 271, 272, 272, 273, 273, 273, 274, 274, 275, - 275, 276, 276, 277, 277, 278, 278, 279, 279, 280, - 280, 280, 281, 281, 281, 282, 282, 282, 283, 283, - 284, 285, 285, 286, 286, 287, 287, 288, 288, 289, - 289, 289, 290, 290, 290, 291, 291, 291, 292, 292, - 293, 293, 294, 294, 295, 295, 296, 298, 310, 311, - 312, 312, 312, 312, 312, 313, 313, 315, 327, 328, - 329, 329, 329, 329, 330, 330, 332, 346, 347, 348, - 348, 348, 348, 349, 349, 349, 351, 368, 369, 370, - 370, 370, 370, 371, 371, 371, 372, 375, 394, 411, - 419, 429, 437, 454, 455, 456, 456, 456, 456, 456, - 457, 457, 457, 458, 458, 460, 469, 478, 489, 498, - 507, 516, 527, 536, 548, 562, 577, 588, 605, 622, - 639, 656, 671, 686, 699, 714, 723, 732, 741, 750, - 759, 768, 777, 786, 795, 804, 813, 822, 831, 840, - 853, 862, 875, 884, 893, 902, 909, 916, 925, 932, - 941, 949, 956, 963, 971, 980, 988, 1004, 1012, 1020, - 1028, 1036, 1044, 1053, 1062, 1076, 1085, 1094, 1103, 1112, - 1121, 1130, 1137, 1144, 1170, 1178, 1185, 1192, 1199, 1206, - 1214, 1222, 1230, 1237, 1248, 1259, 1266, 1275, 1284, 1293, - 1300, 1307, 1315, 1323, 1333, 1343, 1353, 1367, 1375, 1388, - 1399, 1407, 1420, 1429, 1438, 1447, 1456, 1466, 1476, 1484, - 1497, 1506, 1514, 1523, 1531, 1544, 1553, 1563, 1570, 1580, - 1590, 1600, 1610, 1620, 1630, 1640, 1650, 1657, 1664, 1671, - 1680, 1689, 1698, 1707, 1714, 1724, 1744, 1751, 1769, 1782, - 1795, 1804, 1813, 1822, 1831, 1841, 1851, 1862, 1871, 1880, - 1889, 1898, 1907, 1916, 1929, 1942, 1951, 1958, 1967, 1976, - 1985, 1994, 2002, 2015, 2023, 2064, 2071, 2086, 2096, 2106, - 2113, 2120, 2127, 2136, 2144, 2158, 2179, 2200, 2212, 2224, - 2236, 2245, 2266, 2276, 2285, 2293, 2301, 2314, 2327, 2342, - 2357, 2366, 2375, 2381, 2390, 2399, 2409, 2419, 2432, 2445, - 2457, 2471, 2483, 2497, 2506, 2518, 2528, 2535, 2542, 2551, - 2560, 2570, 2580, 2590, 2597, 2604, 2613, 2622, 2632, 2642, - 2649, 2656, 2663, 2671, 2681, 2691, 2701, 2711, 2750, 2760, - 2768, 2776, 2791, 2800, 2805, 2806, 2807, 2807, 2807, 2808, - 2808, 2808, 2809, 2809, 2811, 2821, 2830, 2837, 2844, 2851, - 2858, 2865, 2872, 2877, 2878, 2879, 2879, 2879, 2880, 2880, - 2880, 2881, 2882, 2882, 2883, 2883, 2884, 2884, 2885, 2886, - 2887, 2888, 2889, 2890, 2892, 2901, 2911, 2918, 2925, 2934, - 2941, 2948, 2955, 2962, 2971, 2980, 2987, 2994, 3004, 3014, - 3024, 3034, 3044, 3054, 3059, 3060, 3061, 3063, 3069, 3074, - 3075, 3076, 3078, 3084, 3094, 3101, 3110, 3118, 3123, 3124, - 3126, 3126, 3126, 3127, 3127, 3128, 3129, 3130, 3131, 3132, - 3134, 3144, 3153, 3160, 3169, 3176, 3185, 3193, 3206, 3214, - 3227, 3232, 3233, 3234, 3234, 3235, 3235, 3235, 3236, 3238, - 3250, 3262, 3274, 3289, 3302, 3315, 3326, 3331, 3332, 3333, - 3333, 3335, 3350 + 0, 187, 187, 187, 188, 188, 189, 189, 190, 190, + 190, 191, 191, 192, 192, 193, 193, 194, 196, 202, + 207, 208, 209, 209, 209, 210, 210, 211, 211, 211, + 212, 212, 213, 213, 213, 214, 214, 215, 215, 215, + 216, 216, 216, 217, 217, 218, 218, 219, 219, 220, + 220, 221, 221, 222, 222, 223, 223, 224, 224, 225, + 225, 225, 226, 226, 226, 227, 227, 227, 228, 228, + 229, 229, 230, 230, 231, 231, 232, 232, 232, 233, + 233, 234, 234, 235, 235, 235, 236, 236, 237, 237, + 238, 238, 239, 239, 239, 240, 240, 241, 241, 242, + 242, 243, 243, 244, 244, 245, 245, 245, 246, 246, + 247, 247, 247, 248, 248, 248, 249, 249, 249, 250, + 250, 250, 250, 251, 252, 252, 252, 253, 253, 253, + 254, 254, 255, 255, 256, 256, 256, 257, 257, 257, + 258, 258, 259, 259, 259, 260, 260, 261, 261, 261, + 262, 262, 263, 263, 264, 264, 265, 266, 266, 267, + 267, 268, 268, 269, 270, 270, 271, 271, 272, 272, + 273, 273, 274, 274, 275, 275, 275, 276, 276, 277, + 277, 278, 278, 279, 280, 280, 281, 281, 282, 283, + 283, 284, 284, 285, 285, 286, 286, 287, 287, 287, + 288, 288, 288, 289, 289, 290, 291, 291, 292, 292, + 293, 293, 294, 294, 295, 295, 295, 296, 296, 296, + 297, 297, 297, 298, 298, 299, 299, 300, 300, 301, + 301, 302, 302, 304, 316, 317, 318, 318, 318, 318, + 318, 319, 319, 321, 333, 334, 335, 335, 335, 335, + 336, 336, 338, 352, 353, 354, 354, 354, 354, 355, + 355, 355, 357, 374, 375, 376, 376, 376, 376, 377, + 377, 377, 378, 381, 400, 417, 425, 435, 443, 460, + 461, 462, 462, 462, 462, 462, 463, 463, 463, 464, + 464, 466, 475, 484, 495, 504, 513, 522, 533, 542, + 554, 568, 583, 594, 611, 628, 645, 662, 677, 692, + 705, 720, 729, 738, 747, 756, 765, 774, 783, 792, + 801, 810, 819, 828, 837, 846, 859, 868, 881, 890, + 899, 908, 915, 922, 931, 938, 947, 955, 962, 969, + 977, 986, 994, 1010, 1018, 1026, 1034, 1042, 1050, 1059, + 1068, 1082, 1091, 1100, 1109, 1118, 1127, 1136, 1143, 1150, + 1176, 1184, 1191, 1198, 1205, 1212, 1220, 1228, 1236, 1243, + 1254, 1265, 1272, 1281, 1290, 1299, 1306, 1313, 1329, 1337, + 1345, 1355, 1365, 1375, 1389, 1397, 1410, 1421, 1429, 1442, + 1451, 1460, 1469, 1478, 1488, 1498, 1506, 1519, 1528, 1536, + 1545, 1553, 1566, 1575, 1585, 1592, 1602, 1612, 1622, 1632, + 1642, 1652, 1662, 1672, 1679, 1686, 1693, 1702, 1711, 1720, + 1729, 1736, 1746, 1766, 1773, 1791, 1804, 1817, 1826, 1835, + 1844, 1853, 1863, 1873, 1884, 1893, 1902, 1911, 1920, 1929, + 1938, 1947, 1960, 1973, 1982, 1989, 1998, 2007, 2016, 2025, + 2033, 2046, 2054, 2099, 2106, 2121, 2131, 2141, 2148, 2155, + 2162, 2171, 2179, 2193, 2214, 2235, 2247, 2259, 2271, 2280, + 2301, 2311, 2320, 2328, 2336, 2349, 2362, 2377, 2392, 2401, + 2410, 2416, 2425, 2434, 2444, 2454, 2464, 2473, 2483, 2492, + 2505, 2518, 2530, 2544, 2556, 2570, 2579, 2591, 2601, 2608, + 2615, 2624, 2633, 2643, 2653, 2663, 2670, 2677, 2686, 2695, + 2705, 2715, 2722, 2729, 2736, 2744, 2754, 2764, 2774, 2784, + 2823, 2833, 2841, 2849, 2864, 2873, 2878, 2879, 2880, 2880, + 2880, 2881, 2881, 2881, 2882, 2882, 2884, 2894, 2903, 2910, + 2917, 2924, 2931, 2938, 2945, 2950, 2951, 2952, 2952, 2952, + 2953, 2953, 2953, 2954, 2955, 2955, 2956, 2956, 2957, 2957, + 2958, 2959, 2960, 2961, 2962, 2963, 2965, 2974, 2984, 2991, + 2998, 3007, 3014, 3021, 3028, 3035, 3044, 3053, 3060, 3067, + 3077, 3087, 3097, 3107, 3117, 3127, 3132, 3133, 3134, 3136, + 3142, 3147, 3148, 3149, 3151, 3157, 3167, 3174, 3183, 3191, + 3196, 3197, 3199, 3199, 3199, 3200, 3200, 3201, 3202, 3203, + 3204, 3205, 3207, 3217, 3226, 3233, 3242, 3249, 3258, 3266, + 3279, 3287, 3300, 3305, 3306, 3307, 3307, 3308, 3308, 3308, + 3309, 3311, 3323, 3335, 3347, 3362, 3375, 3388, 3399, 3404, + 3405, 3406, 3406, 3408, 3423 }; #endif -#if YYDEBUG || YYERROR_VERBOSE || 0 +/** Accessing symbol of state STATE. */ +#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) + +#if YYDEBUG || 0 +/* The user-facing name of the symbol whose (internal) number is + YYSYMBOL. No bounds checking. */ +static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; + /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "$end", "error", "$undefined", "SPACE", "LETTER", "NEWLINE", "COMMENT", - "COLON", "ANY", "ZONESTR", "STRING_ARG", "VAR_FORCE_TOPLEVEL", - "VAR_SERVER", "VAR_VERBOSITY", "VAR_NUM_THREADS", "VAR_PORT", - "VAR_OUTGOING_RANGE", "VAR_INTERFACE", "VAR_PREFER_IP4", "VAR_DO_IP4", - "VAR_DO_IP6", "VAR_PREFER_IP6", "VAR_DO_UDP", "VAR_DO_TCP", + "\"end of file\"", "error", "\"invalid token\"", "SPACE", "LETTER", + "NEWLINE", "COMMENT", "COLON", "ANY", "ZONESTR", "STRING_ARG", + "VAR_FORCE_TOPLEVEL", "VAR_SERVER", "VAR_VERBOSITY", "VAR_NUM_THREADS", + "VAR_PORT", "VAR_OUTGOING_RANGE", "VAR_INTERFACE", "VAR_PREFER_IP4", + "VAR_DO_IP4", "VAR_DO_IP6", "VAR_PREFER_IP6", "VAR_DO_UDP", "VAR_DO_TCP", "VAR_TCP_MSS", "VAR_OUTGOING_TCP_MSS", "VAR_TCP_IDLE_TIMEOUT", "VAR_EDNS_TCP_KEEPALIVE", "VAR_EDNS_TCP_KEEPALIVE_TIMEOUT", "VAR_CHROOT", "VAR_USERNAME", "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE", @@ -1237,8 +1990,9 @@ static const char *const yytname[] = "VAR_ACCESS_CONTROL_TAG_DATA", "VAR_VIEW", "VAR_ACCESS_CONTROL_VIEW", "VAR_VIEW_FIRST", "VAR_SERVE_EXPIRED", "VAR_SERVE_EXPIRED_TTL", "VAR_SERVE_EXPIRED_TTL_RESET", "VAR_SERVE_EXPIRED_REPLY_TTL", - "VAR_SERVE_EXPIRED_CLIENT_TIMEOUT", "VAR_FAKE_DSA", "VAR_FAKE_SHA1", - "VAR_LOG_IDENTITY", "VAR_HIDE_TRUSTANCHOR", "VAR_TRUST_ANCHOR_SIGNALING", + "VAR_SERVE_EXPIRED_CLIENT_TIMEOUT", "VAR_SERVE_ORIGINAL_TTL", + "VAR_FAKE_DSA", "VAR_FAKE_SHA1", "VAR_LOG_IDENTITY", + "VAR_HIDE_TRUSTANCHOR", "VAR_TRUST_ANCHOR_SIGNALING", "VAR_AGGRESSIVE_NSEC", "VAR_USE_SYSTEMD", "VAR_SHM_ENABLE", "VAR_SHM_KEY", "VAR_ROOT_KEY_SENTINEL", "VAR_DNSCRYPT", "VAR_DNSCRYPT_ENABLE", "VAR_DNSCRYPT_PORT", "VAR_DNSCRYPT_PROVIDER", @@ -1247,32 +2001,34 @@ static const char *const yytname[] = "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE", "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS", "VAR_DNSCRYPT_NONCE_CACHE_SIZE", "VAR_DNSCRYPT_NONCE_CACHE_SLABS", - "VAR_IPSECMOD_ENABLED", "VAR_IPSECMOD_HOOK", "VAR_IPSECMOD_IGNORE_BOGUS", - "VAR_IPSECMOD_MAX_TTL", "VAR_IPSECMOD_WHITELIST", "VAR_IPSECMOD_STRICT", - "VAR_CACHEDB", "VAR_CACHEDB_BACKEND", "VAR_CACHEDB_SECRETSEED", - "VAR_CACHEDB_REDISHOST", "VAR_CACHEDB_REDISPORT", - "VAR_CACHEDB_REDISTIMEOUT", "VAR_CACHEDB_REDISEXPIRERECORDS", - "VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM", "VAR_FOR_UPSTREAM", - "VAR_AUTH_ZONE", "VAR_ZONEFILE", "VAR_MASTER", "VAR_URL", - "VAR_FOR_DOWNSTREAM", "VAR_FALLBACK_ENABLED", "VAR_TLS_ADDITIONAL_PORT", - "VAR_LOW_RTT", "VAR_LOW_RTT_PERMIL", "VAR_FAST_SERVER_PERMIL", - "VAR_FAST_SERVER_NUM", "VAR_ALLOW_NOTIFY", "VAR_TLS_WIN_CERT", - "VAR_TCP_CONNECTION_LIMIT", "VAR_FORWARD_NO_CACHE", "VAR_STUB_NO_CACHE", - "VAR_LOG_SERVFAIL", "VAR_DENY_ANY", "VAR_UNKNOWN_SERVER_TIME_LIMIT", - "VAR_LOG_TAG_QUERYREPLY", "VAR_STREAM_WAIT_SIZE", "VAR_TLS_CIPHERS", - "VAR_TLS_CIPHERSUITES", "VAR_TLS_USE_SNI", "VAR_IPSET", - "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6", "VAR_TLS_SESSION_TICKET_KEYS", - "VAR_RPZ", "VAR_TAGS", "VAR_RPZ_ACTION_OVERRIDE", - "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG", "VAR_RPZ_LOG_NAME", - "VAR_DYNLIB", "VAR_DYNLIB_FILE", "VAR_EDNS_CLIENT_STRING", - "VAR_EDNS_CLIENT_STRING_OPCODE", "$accept", "toplevelvars", - "toplevelvar", "force_toplevel", "serverstart", "contents_server", - "content_server", "stubstart", "contents_stub", "content_stub", - "forwardstart", "contents_forward", "content_forward", "viewstart", - "contents_view", "content_view", "authstart", "contents_auth", - "content_auth", "rpz_tag", "rpz_action_override", "rpz_cname_override", - "rpz_log", "rpz_log_name", "rpzstart", "contents_rpz", "content_rpz", - "server_num_threads", "server_verbosity", "server_statistics_interval", + "VAR_PAD_RESPONSES", "VAR_PAD_RESPONSES_BLOCK_SIZE", "VAR_PAD_QUERIES", + "VAR_PAD_QUERIES_BLOCK_SIZE", "VAR_IPSECMOD_ENABLED", + "VAR_IPSECMOD_HOOK", "VAR_IPSECMOD_IGNORE_BOGUS", "VAR_IPSECMOD_MAX_TTL", + "VAR_IPSECMOD_WHITELIST", "VAR_IPSECMOD_STRICT", "VAR_CACHEDB", + "VAR_CACHEDB_BACKEND", "VAR_CACHEDB_SECRETSEED", "VAR_CACHEDB_REDISHOST", + "VAR_CACHEDB_REDISPORT", "VAR_CACHEDB_REDISTIMEOUT", + "VAR_CACHEDB_REDISEXPIRERECORDS", "VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM", + "VAR_FOR_UPSTREAM", "VAR_AUTH_ZONE", "VAR_ZONEFILE", "VAR_MASTER", + "VAR_URL", "VAR_FOR_DOWNSTREAM", "VAR_FALLBACK_ENABLED", + "VAR_TLS_ADDITIONAL_PORT", "VAR_LOW_RTT", "VAR_LOW_RTT_PERMIL", + "VAR_FAST_SERVER_PERMIL", "VAR_FAST_SERVER_NUM", "VAR_ALLOW_NOTIFY", + "VAR_TLS_WIN_CERT", "VAR_TCP_CONNECTION_LIMIT", "VAR_FORWARD_NO_CACHE", + "VAR_STUB_NO_CACHE", "VAR_LOG_SERVFAIL", "VAR_DENY_ANY", + "VAR_UNKNOWN_SERVER_TIME_LIMIT", "VAR_LOG_TAG_QUERYREPLY", + "VAR_STREAM_WAIT_SIZE", "VAR_TLS_CIPHERS", "VAR_TLS_CIPHERSUITES", + "VAR_TLS_USE_SNI", "VAR_IPSET", "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6", + "VAR_TLS_SESSION_TICKET_KEYS", "VAR_RPZ", "VAR_TAGS", + "VAR_RPZ_ACTION_OVERRIDE", "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG", + "VAR_RPZ_LOG_NAME", "VAR_DYNLIB", "VAR_DYNLIB_FILE", + "VAR_EDNS_CLIENT_STRING", "VAR_EDNS_CLIENT_STRING_OPCODE", "VAR_NSID", + "$accept", "toplevelvars", "toplevelvar", "force_toplevel", + "serverstart", "contents_server", "content_server", "stubstart", + "contents_stub", "content_stub", "forwardstart", "contents_forward", + "content_forward", "viewstart", "contents_view", "content_view", + "authstart", "contents_auth", "content_auth", "rpz_tag", + "rpz_action_override", "rpz_cname_override", "rpz_log", "rpz_log_name", + "rpzstart", "contents_rpz", "content_rpz", "server_num_threads", + "server_verbosity", "server_statistics_interval", "server_statistics_cumulative", "server_extended_statistics", "server_shm_enable", "server_shm_key", "server_port", "server_send_client_subnet", "server_client_subnet_zone", @@ -1307,7 +2063,7 @@ static const char *const yytname[] = "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_identity", "server_version", "server_nsid", "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", @@ -1336,8 +2092,8 @@ static const char *const yytname[] = "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_serve_expired_client_timeout", "server_serve_original_ttl", + "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", @@ -1355,7 +2111,9 @@ static const char *const yytname[] = "server_ratelimit_below_domain", "server_ip_ratelimit_factor", "server_ratelimit_factor", "server_low_rtt", "server_fast_server_num", "server_fast_server_permil", "server_qname_minimisation", - "server_qname_minimisation_strict", "server_ipsecmod_enabled", + "server_qname_minimisation_strict", "server_pad_responses", + "server_pad_responses_block_size", "server_pad_queries", + "server_pad_queries_block_size", "server_ipsecmod_enabled", "server_ipsecmod_ignore_bogus", "server_ipsecmod_hook", "server_ipsecmod_max_ttl", "server_ipsecmod_whitelist", "server_ipsecmod_strict", "server_edns_client_string", @@ -1398,12 +2156,18 @@ static const char *const yytname[] = "server_tcp_connection_limit", "ipsetstart", "contents_ipset", "content_ipset", "ipset_name_v4", "ipset_name_v6", YY_NULLPTR }; + +static const char * +yysymbol_name (yysymbol_kind_t yysymbol) +{ + return yytname[yysymbol]; +} #endif -# ifdef YYPRINT +#ifdef YYPRINT /* YYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ -static const yytype_uint16 yytoknum[] = +static const yytype_int16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, @@ -1435,29 +2199,29 @@ static const yytype_uint16 yytoknum[] = 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 557 + 555, 556, 557, 558, 559, 560, 561, 562, 563 }; -# endif +#endif -#define YYPACT_NINF -291 +#define YYPACT_NINF (-296) -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-291))) +#define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF -1 +#define YYTABLE_NINF (-1) -#define yytable_value_is_error(Yytable_value) \ +#define yytable_value_is_error(Yyn) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - -291, 0, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, 287, -42, -38, -43, -21, -44, -11, -96, - -109, -290, -215, -240, -282, 3, 4, 13, 25, 26, + -296, 0, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, 292, -42, -38, -43, -21, -44, -11, -96, + -109, -295, -216, -245, -287, 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, @@ -1472,92 +2236,94 @@ static const yytype_int16 yypact[] = 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, 215, 216, 217, 218, 219, 220, 221, 223, 224, - 225, 226, 227, 230, 232, 234, 247, 248, 249, 250, - 251, 252, 253, 254, 256, 257, 258, 259, 260, 261, + 210, 212, 213, 214, 215, 216, 220, 221, 222, 223, + 224, 225, 226, 228, 229, 231, 232, 234, 235, 237, + 239, 252, 253, 254, 255, 256, 257, 258, 259, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 280, 281, 282, - 284, 285, 286, 288, 322, 323, 324, 325, 329, 330, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, 331, 373, 374, 375, - 376, 377, 378, -291, -291, -291, -291, -291, -291, -291, - -291, 379, 380, 381, 385, 389, 390, -291, -291, -291, - -291, -291, -291, -291, 415, 416, 417, 426, 439, 440, - 441, -291, -291, -291, -291, -291, -291, -291, -291, 442, - 443, 444, 445, 446, 447, 448, 449, -291, -291, -291, - -291, -291, -291, -291, -291, -291, 450, 451, 452, 453, - 454, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, 455, 456, 457, 458, 498, 500, 516, 517, - -291, -291, -291, -291, -291, -291, -291, -291, -291, 518, - 519, 520, 521, 522, 523, 524, 525, 526, 533, 534, - 535, 536, 537, 538, 539, 541, 542, 543, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, 544, -291, - -291, 545, -291, -291, 546, 547, 550, 553, 556, 557, - 566, 567, 568, 570, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, 571, 572, 573, 574, 575, - 576, -291, -291, -291, -291, -291, -291, -291, 577, 580, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, 581, 582, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, 583, - 584, 585, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, 586, 587, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, 588, 589, 590, 591, 592, 593, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, 594, -291, -291, -291, - -291, -291, -291, -291, -291, -291, 595, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, 596, -291, -291, 597, 598, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, 599, 600, 601, - -291, -291, -291, -291, -291, -291, -291, -291, -291 + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 285, 286, 287, 289, 290, 291, 293, 327, + 328, 329, 330, 334, 335, 336, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, 378, 379, + 380, 381, 382, 383, 384, -296, -296, -296, -296, -296, + -296, -296, -296, 385, 386, 390, 394, 395, 420, -296, + -296, -296, -296, -296, -296, -296, 421, 422, 431, 444, + 445, 446, 447, -296, -296, -296, -296, -296, -296, -296, + -296, 448, 449, 450, 451, 452, 453, 454, 455, -296, + -296, -296, -296, -296, -296, -296, -296, -296, 456, 457, + 458, 459, 460, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, 461, 462, 463, 503, 505, 522, + 523, 524, -296, -296, -296, -296, -296, -296, -296, -296, + -296, 525, 526, 527, 528, 529, 530, 531, 532, 543, + 544, 545, 546, 547, 548, 549, 551, 552, 553, 554, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + 555, -296, -296, 556, -296, -296, 557, 560, 563, 566, + 567, 576, 577, 578, 580, 581, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, 582, 583, 584, + 585, 586, 587, -296, -296, -296, -296, -296, -296, -296, + 591, 592, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, 593, 594, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, 595, 596, 597, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, 598, 599, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, 600, 601, 602, 603, 604, + 605, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, 606, -296, -296, -296, -296, -296, -296, + -296, -296, -296, 607, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + 608, -296, -296, 609, 610, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, 611, 612, 613, -296, -296, + -296, -296, -296, -296, -296, -296, -296 }; /* 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_uint16 yydefact[] = +static const yytype_int16 yydefact[] = { - 2, 0, 1, 18, 19, 227, 237, 513, 573, 532, - 246, 587, 610, 256, 626, 272, 578, 3, 17, 21, - 229, 239, 248, 258, 274, 515, 534, 575, 580, 589, - 612, 628, 4, 5, 6, 10, 14, 15, 8, 9, + 2, 0, 1, 18, 19, 233, 243, 525, 585, 544, + 252, 599, 622, 262, 638, 278, 590, 3, 17, 21, + 235, 245, 254, 264, 280, 527, 546, 587, 592, 601, + 624, 640, 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, @@ -1579,231 +2345,236 @@ 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, - 20, 22, 23, 86, 89, 98, 195, 196, 24, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 37, - 77, 25, 90, 91, 48, 70, 85, 26, 27, 30, - 31, 28, 29, 32, 33, 34, 35, 36, 121, 207, - 122, 124, 125, 126, 209, 214, 210, 221, 222, 223, - 224, 127, 128, 129, 130, 131, 132, 133, 191, 87, - 76, 102, 119, 120, 219, 216, 123, 38, 39, 40, - 41, 42, 78, 92, 93, 108, 64, 74, 65, 199, - 200, 103, 58, 59, 198, 60, 61, 112, 116, 137, - 147, 174, 150, 220, 113, 71, 43, 44, 45, 100, - 138, 139, 140, 141, 46, 47, 49, 50, 52, 53, - 51, 145, 151, 54, 55, 56, 62, 81, 117, 95, - 146, 88, 170, 96, 97, 114, 115, 217, 101, 57, - 79, 82, 63, 66, 104, 105, 80, 171, 106, 67, - 68, 69, 208, 118, 184, 185, 186, 187, 188, 189, - 197, 107, 75, 109, 110, 111, 172, 72, 73, 94, - 83, 84, 99, 134, 135, 218, 136, 142, 143, 144, - 175, 176, 178, 180, 181, 179, 182, 192, 148, 149, - 154, 155, 152, 153, 156, 157, 159, 158, 211, 213, - 212, 173, 183, 201, 203, 202, 204, 205, 206, 225, - 226, 177, 190, 193, 194, 215, 0, 0, 0, 0, - 0, 0, 0, 228, 230, 231, 232, 234, 235, 236, - 233, 0, 0, 0, 0, 0, 0, 238, 240, 241, - 242, 243, 244, 245, 0, 0, 0, 0, 0, 0, - 0, 247, 249, 250, 253, 254, 251, 255, 252, 0, - 0, 0, 0, 0, 0, 0, 0, 257, 259, 260, - 261, 262, 266, 263, 264, 265, 0, 0, 0, 0, - 0, 277, 281, 282, 283, 284, 273, 275, 276, 278, - 279, 280, 0, 0, 0, 0, 0, 0, 0, 0, - 514, 516, 518, 517, 523, 519, 520, 521, 522, 0, + 0, 0, 0, 0, 0, 0, 20, 22, 23, 86, + 89, 98, 200, 201, 24, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 37, 77, 25, 90, 91, + 48, 70, 85, 26, 27, 30, 31, 28, 29, 32, + 33, 34, 35, 36, 121, 212, 122, 124, 125, 126, + 214, 219, 215, 226, 227, 228, 229, 127, 128, 129, + 130, 131, 132, 133, 196, 87, 76, 102, 119, 120, + 224, 221, 123, 38, 39, 40, 41, 42, 78, 92, + 93, 108, 64, 74, 65, 204, 205, 103, 58, 59, + 203, 60, 61, 232, 112, 116, 137, 147, 174, 150, + 225, 113, 71, 43, 44, 45, 100, 138, 139, 140, + 141, 46, 47, 49, 50, 52, 53, 51, 145, 151, + 54, 55, 56, 62, 81, 117, 95, 146, 88, 170, + 96, 97, 114, 115, 222, 101, 57, 79, 82, 63, + 66, 104, 105, 80, 171, 106, 67, 68, 69, 213, + 118, 188, 189, 190, 191, 192, 193, 194, 202, 107, + 75, 109, 110, 111, 172, 72, 73, 94, 83, 84, + 99, 134, 135, 223, 136, 142, 143, 144, 175, 176, + 178, 180, 181, 179, 182, 197, 148, 149, 154, 155, + 152, 153, 156, 157, 159, 158, 216, 218, 217, 173, + 183, 184, 185, 186, 187, 206, 208, 207, 209, 210, + 211, 230, 231, 177, 195, 198, 199, 220, 0, 0, + 0, 0, 0, 0, 0, 234, 236, 237, 238, 240, + 241, 242, 239, 0, 0, 0, 0, 0, 0, 244, + 246, 247, 248, 249, 250, 251, 0, 0, 0, 0, + 0, 0, 0, 253, 255, 256, 259, 260, 257, 261, + 258, 0, 0, 0, 0, 0, 0, 0, 0, 263, + 265, 266, 267, 268, 272, 269, 270, 271, 0, 0, + 0, 0, 0, 283, 287, 288, 289, 290, 279, 281, + 282, 284, 285, 286, 0, 0, 0, 0, 0, 0, + 0, 0, 526, 528, 530, 529, 535, 531, 532, 533, + 534, 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, 533, 535, - 537, 536, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 0, 574, - 576, 0, 579, 581, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 588, 590, 591, 592, 594, 595, - 593, 596, 597, 598, 599, 0, 0, 0, 0, 0, - 0, 611, 613, 614, 615, 616, 617, 618, 0, 0, - 627, 629, 630, 286, 285, 292, 305, 303, 315, 311, - 312, 316, 313, 314, 317, 318, 319, 320, 321, 351, - 352, 353, 354, 355, 380, 381, 382, 388, 389, 308, - 390, 391, 394, 392, 393, 397, 398, 399, 413, 366, - 367, 369, 370, 400, 416, 360, 362, 417, 423, 424, - 425, 309, 379, 441, 442, 361, 436, 344, 304, 356, - 414, 420, 401, 0, 0, 445, 310, 287, 343, 405, - 288, 306, 307, 357, 358, 443, 403, 407, 408, 289, - 446, 383, 412, 345, 365, 418, 419, 422, 435, 359, - 439, 437, 438, 371, 378, 409, 410, 372, 373, 402, - 427, 346, 347, 350, 322, 324, 325, 326, 327, 328, - 335, 336, 337, 338, 339, 340, 341, 447, 448, 450, - 384, 385, 386, 387, 395, 396, 451, 452, 453, 0, - 0, 0, 404, 374, 376, 583, 462, 466, 464, 463, - 467, 465, 0, 0, 470, 471, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 406, 421, 440, 475, - 476, 375, 454, 0, 0, 0, 0, 0, 0, 428, - 429, 430, 431, 432, 433, 434, 584, 368, 363, 426, - 342, 290, 291, 364, 477, 479, 478, 480, 481, 482, - 323, 330, 472, 474, 473, 329, 0, 349, 411, 449, - 348, 377, 331, 332, 334, 333, 0, 484, 485, 486, - 487, 491, 490, 488, 489, 492, 493, 494, 495, 497, - 496, 506, 0, 510, 511, 0, 0, 512, 498, 504, - 499, 500, 501, 503, 505, 502, 267, 268, 269, 270, - 271, 524, 526, 525, 528, 529, 530, 531, 527, 554, - 556, 557, 558, 559, 560, 561, 562, 563, 564, 555, - 565, 566, 567, 568, 569, 570, 571, 572, 577, 582, - 600, 601, 602, 605, 603, 604, 606, 607, 608, 609, - 619, 620, 621, 622, 623, 624, 631, 632, 415, 444, - 461, 585, 586, 468, 469, 455, 456, 0, 0, 0, - 460, 625, 483, 507, 508, 509, 459, 457, 458 + 545, 547, 549, 548, 550, 551, 552, 553, 554, 555, + 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, + 0, 586, 588, 0, 591, 593, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 600, 602, 603, 604, + 606, 607, 605, 608, 609, 610, 611, 0, 0, 0, + 0, 0, 0, 623, 625, 626, 627, 628, 629, 630, + 0, 0, 639, 641, 642, 292, 291, 298, 311, 309, + 321, 317, 318, 322, 319, 320, 323, 324, 325, 326, + 327, 357, 358, 359, 360, 361, 387, 388, 389, 395, + 396, 314, 397, 398, 401, 399, 400, 404, 405, 406, + 420, 372, 373, 375, 376, 407, 423, 366, 368, 424, + 430, 431, 432, 315, 386, 449, 450, 367, 444, 350, + 310, 362, 421, 427, 408, 0, 0, 453, 316, 293, + 349, 412, 294, 312, 313, 363, 364, 451, 410, 414, + 415, 295, 454, 390, 419, 351, 371, 425, 426, 429, + 443, 365, 447, 445, 446, 378, 385, 416, 417, 379, + 380, 409, 434, 352, 353, 356, 328, 330, 331, 332, + 333, 334, 341, 342, 343, 344, 345, 346, 347, 455, + 456, 458, 391, 392, 393, 394, 402, 403, 459, 460, + 461, 0, 0, 0, 411, 381, 383, 595, 470, 474, + 472, 471, 475, 473, 0, 0, 478, 479, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 413, 428, + 448, 483, 484, 382, 462, 0, 0, 0, 0, 0, + 0, 435, 436, 437, 438, 439, 440, 441, 442, 596, + 374, 369, 433, 348, 296, 297, 370, 485, 486, 487, + 488, 489, 491, 490, 492, 493, 494, 329, 336, 480, + 482, 481, 335, 0, 355, 418, 457, 354, 384, 337, + 338, 340, 339, 0, 496, 377, 497, 498, 499, 503, + 502, 500, 501, 504, 505, 506, 507, 509, 508, 518, + 0, 522, 523, 0, 0, 524, 510, 516, 511, 512, + 513, 515, 517, 514, 273, 274, 275, 276, 277, 536, + 538, 537, 540, 541, 542, 543, 539, 566, 568, 569, + 570, 571, 572, 573, 574, 575, 576, 567, 577, 578, + 579, 580, 581, 582, 583, 584, 589, 594, 612, 613, + 614, 617, 615, 616, 618, 619, 620, 621, 631, 632, + 633, 634, 635, 636, 643, 644, 422, 452, 469, 597, + 598, 476, 477, 463, 464, 0, 0, 0, 468, 637, + 495, 519, 520, 521, 467, 465, 466 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - 578, 579, 602, 603, 604, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291 + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, 588, 589, 590, 614, + 615, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 17, 18, 19, 32, 250, 20, 33, 463, - 21, 34, 477, 22, 35, 491, 23, 36, 507, 521, - 522, 523, 524, 525, 24, 37, 526, 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, 447, 448, 449, 450, 464, 465, 466, - 467, 468, 469, 470, 478, 479, 480, 481, 482, 483, - 508, 509, 510, 511, 512, 513, 514, 515, 492, 493, - 494, 495, 496, 497, 498, 25, 38, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 26, 39, 568, 569, - 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, - 580, 581, 582, 583, 584, 585, 586, 587, 27, 40, - 589, 590, 28, 41, 592, 593, 451, 452, 453, 454, - 29, 42, 604, 605, 606, 607, 608, 609, 610, 611, - 612, 613, 614, 30, 43, 621, 622, 623, 624, 625, - 626, 627, 455, 31, 44, 630, 631, 632 + -1, 1, 17, 18, 19, 32, 256, 20, 33, 475, + 21, 34, 489, 22, 35, 503, 23, 36, 519, 533, + 534, 535, 536, 537, 24, 37, 538, 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, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 476, 477, 478, 479, 480, 481, 482, + 490, 491, 492, 493, 494, 495, 520, 521, 522, 523, + 524, 525, 526, 527, 504, 505, 506, 507, 508, 509, + 510, 25, 38, 552, 553, 554, 555, 556, 557, 558, + 559, 560, 26, 39, 580, 581, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, + 596, 597, 598, 599, 27, 40, 601, 602, 28, 41, + 604, 605, 463, 464, 465, 466, 29, 42, 616, 617, + 618, 619, 620, 621, 622, 623, 624, 625, 626, 30, + 43, 633, 634, 635, 636, 637, 638, 639, 467, 31, + 44, 642, 643, 644 }; /* 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_uint16 yytable[] = +static const yytype_int16 yytable[] = { - 2, 499, 484, 456, 588, 457, 458, 471, 628, 629, - 591, 3, 4, 633, 634, 472, 473, 615, 616, 617, - 618, 619, 620, 635, 499, 594, 595, 596, 597, 598, - 599, 600, 601, 602, 603, 636, 637, 638, 485, 486, - 639, 640, 641, 642, 643, 644, 5, 645, 646, 647, - 648, 649, 6, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 487, 660, 661, 459, 549, 550, 551, - 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, - 562, 563, 564, 565, 566, 567, 532, 533, 534, 535, - 536, 537, 538, 539, 662, 663, 7, 460, 664, 665, - 474, 666, 475, 667, 668, 669, 670, 461, 671, 672, - 673, 674, 8, 675, 676, 677, 678, 679, 680, 681, - 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, - 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, - 488, 489, 702, 703, 704, 705, 706, 707, 708, 709, - 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, - 720, 721, 9, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, - 490, 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, 773, 774, 775, 776, 777, - 778, 10, 501, 502, 503, 779, 780, 781, 782, 783, - 784, 785, 506, 786, 787, 788, 789, 790, 462, 11, - 791, 476, 792, 500, 793, 501, 502, 503, 504, 505, - 516, 517, 518, 519, 520, 506, 12, 794, 795, 796, - 797, 798, 799, 800, 801, 13, 802, 803, 804, 805, - 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, - 816, 817, 818, 819, 820, 821, 822, 823, 824, 14, - 825, 826, 827, 15, 828, 829, 830, 0, 831, 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, 832, 833, 834, 835, 77, 78, 79, 836, - 837, 838, 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, 839, 840, 841, 842, 843, 844, 845, - 846, 847, 121, 122, 123, 848, 124, 125, 126, 849, - 850, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 851, 852, 853, 151, 152, - 153, 154, 155, 156, 157, 158, 854, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 855, - 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, - 866, 867, 868, 869, 870, 871, 872, 873, 874, 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, 875, 210, - 876, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 877, 878, 879, 880, - 881, 882, 883, 884, 885, 886, 887, 226, 227, 228, - 229, 230, 231, 888, 889, 890, 891, 892, 893, 894, - 232, 895, 896, 897, 898, 899, 900, 901, 233, 234, - 902, 235, 236, 903, 237, 238, 904, 905, 239, 240, - 241, 242, 243, 244, 245, 246, 906, 907, 908, 247, - 909, 910, 911, 912, 913, 914, 915, 916, 248, 249, - 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, - 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, - 937, 938, 0, 0, 0, 527, 528, 0, 0, 0, + 2, 511, 496, 468, 600, 469, 470, 483, 640, 641, + 603, 3, 4, 645, 646, 484, 485, 627, 628, 629, + 630, 631, 632, 647, 511, 606, 607, 608, 609, 610, + 611, 612, 613, 614, 615, 648, 649, 650, 497, 498, + 651, 652, 653, 654, 655, 656, 5, 657, 658, 659, + 660, 661, 6, 662, 663, 664, 665, 666, 667, 668, + 669, 670, 671, 499, 672, 673, 471, 561, 562, 563, + 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 574, 575, 576, 577, 578, 579, 544, 545, 546, 547, + 548, 549, 550, 551, 674, 675, 7, 472, 676, 677, + 486, 678, 487, 679, 680, 681, 682, 473, 683, 684, + 685, 686, 8, 687, 688, 689, 690, 691, 692, 693, + 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, + 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, + 500, 501, 714, 715, 716, 717, 718, 719, 720, 721, + 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, + 732, 733, 9, 734, 735, 736, 737, 738, 739, 740, + 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, + 502, 751, 752, 753, 754, 755, 756, 757, 758, 759, + 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, + 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, + 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, + 790, 10, 791, 792, 793, 794, 795, 513, 514, 515, + 796, 797, 798, 799, 800, 801, 802, 518, 803, 804, + 11, 805, 806, 474, 807, 808, 488, 809, 512, 810, + 513, 514, 515, 516, 517, 528, 529, 530, 531, 532, + 518, 12, 811, 812, 813, 814, 815, 816, 817, 818, + 13, 819, 820, 821, 822, 823, 824, 825, 826, 827, + 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, + 838, 839, 840, 841, 14, 842, 843, 844, 15, 845, + 846, 847, 0, 848, 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, 849, 850, 851, + 852, 77, 78, 79, 853, 854, 855, 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, 856, 857, + 858, 859, 860, 861, 862, 863, 864, 121, 122, 123, + 865, 124, 125, 126, 866, 867, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 868, 869, 870, 151, 152, 153, 154, 155, 156, 157, + 158, 871, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 872, 873, 874, 875, 876, 877, + 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, + 888, 889, 890, 891, 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, 892, 210, 893, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 894, 895, 896, 897, 898, 899, 900, 901, + 902, 903, 904, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 905, 906, 907, 908, 909, 910, 911, + 237, 912, 913, 914, 915, 916, 917, 918, 238, 239, + 919, 240, 241, 920, 242, 243, 921, 922, 244, 245, + 246, 247, 248, 249, 250, 251, 923, 924, 925, 252, + 926, 927, 928, 929, 930, 931, 932, 933, 253, 254, + 255, 934, 935, 936, 937, 938, 939, 940, 941, 942, + 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, + 953, 954, 955, 956, 0, 539, 540, 541, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 529, - 530, 531 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 542, 543 }; static const yytype_int16 yycheck[] = { - 0, 45, 45, 45, 113, 47, 48, 45, 290, 291, - 300, 11, 12, 10, 10, 53, 54, 257, 258, 259, - 260, 261, 262, 10, 45, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 10, 10, 10, 81, 82, + 0, 45, 45, 45, 113, 47, 48, 45, 295, 296, + 305, 11, 12, 10, 10, 53, 54, 262, 263, 264, + 265, 266, 267, 10, 45, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 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, 163, 164, 165, @@ -1822,60 +2593,61 @@ static const yytype_int16 yycheck[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 221, 266, 267, 268, 10, 10, 10, 10, 10, - 10, 10, 276, 10, 10, 10, 10, 10, 280, 239, - 10, 279, 10, 264, 10, 266, 267, 268, 269, 270, - 294, 295, 296, 297, 298, 276, 256, 10, 10, 10, - 10, 10, 10, 10, 10, 265, 10, 10, 10, 10, + 10, 221, 10, 10, 10, 10, 10, 271, 272, 273, + 10, 10, 10, 10, 10, 10, 10, 281, 10, 10, + 240, 10, 10, 285, 10, 10, 284, 10, 269, 10, + 271, 272, 273, 274, 275, 299, 300, 301, 302, 303, + 281, 261, 10, 10, 10, 10, 10, 10, 10, 10, + 270, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 289, - 10, 10, 10, 293, 10, 10, 10, -1, 10, 299, - 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, 160, 161, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 10, 222, - 10, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 250, 251, 252, - 253, 254, 255, 10, 10, 10, 10, 10, 10, 10, - 263, 10, 10, 10, 10, 10, 10, 10, 271, 272, - 10, 274, 275, 10, 277, 278, 10, 10, 281, 282, - 283, 284, 285, 286, 287, 288, 10, 10, 10, 292, - 10, 10, 10, 10, 10, 10, 10, 10, 301, 302, + 10, 10, 10, 10, 294, 10, 10, 10, 298, 10, + 10, 10, -1, 10, 304, 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, 160, 161, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 10, 222, 10, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 10, 10, 10, 10, 10, 10, 10, + 268, 10, 10, 10, 10, 10, 10, 10, 276, 277, + 10, 279, 280, 10, 282, 283, 10, 10, 286, 287, + 288, 289, 290, 291, 292, 293, 10, 10, 10, 297, + 10, 10, 10, 10, 10, 10, 10, 10, 306, 307, + 308, 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, + 10, 10, 10, 10, -1, 37, 37, 37, -1, -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, -1, -1, -1, -1, -1, + -1, 37, 37 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ -static const yytype_uint16 yystos[] = +static const yytype_int16 yystos[] = { - 0, 304, 0, 11, 12, 46, 52, 96, 112, 162, - 221, 239, 256, 265, 289, 293, 299, 305, 306, 307, - 310, 313, 316, 319, 327, 558, 569, 591, 595, 603, - 616, 626, 308, 311, 314, 317, 320, 328, 559, 570, - 592, 596, 604, 617, 627, 13, 14, 15, 16, 17, + 0, 310, 0, 11, 12, 46, 52, 96, 112, 162, + 221, 240, 261, 270, 294, 298, 304, 311, 312, 313, + 316, 319, 322, 325, 333, 570, 581, 603, 607, 615, + 628, 638, 314, 317, 320, 323, 326, 334, 571, 582, + 604, 608, 616, 629, 639, 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, @@ -1893,10 +2665,10 @@ static const yytype_uint16 yystos[] = 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 222, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 250, 251, 252, 253, - 254, 255, 263, 271, 272, 274, 275, 277, 278, 281, - 282, 283, 284, 285, 286, 287, 288, 292, 301, 302, - 309, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 233, 234, 235, 236, 237, 238, 239, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 268, 276, 277, + 279, 280, 282, 283, 286, 287, 288, 289, 290, 291, + 292, 293, 297, 306, 307, 308, 315, 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, @@ -1916,25 +2688,26 @@ static const yytype_uint16 yystos[] = 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, 524, 525, 526, 527, 528, - 529, 599, 600, 601, 602, 625, 45, 47, 48, 108, - 139, 149, 280, 312, 530, 531, 532, 533, 534, 535, - 536, 45, 53, 54, 138, 140, 279, 315, 537, 538, - 539, 540, 541, 542, 45, 81, 82, 106, 183, 184, - 223, 318, 551, 552, 553, 554, 555, 556, 557, 45, - 264, 266, 267, 268, 269, 270, 276, 321, 543, 544, - 545, 546, 547, 548, 549, 550, 294, 295, 296, 297, - 298, 322, 323, 324, 325, 326, 329, 543, 544, 545, - 546, 547, 97, 98, 99, 100, 101, 102, 103, 104, - 560, 561, 562, 563, 564, 565, 566, 567, 568, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 113, 593, - 594, 300, 597, 598, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 605, 606, 607, 608, 609, 610, - 611, 612, 613, 614, 615, 257, 258, 259, 260, 261, - 262, 618, 619, 620, 621, 622, 623, 624, 290, 291, - 628, 629, 630, 10, 10, 10, 10, 10, 10, 10, + 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, + 539, 540, 541, 611, 612, 613, 614, 637, 45, 47, + 48, 108, 139, 149, 285, 318, 542, 543, 544, 545, + 546, 547, 548, 45, 53, 54, 138, 140, 284, 321, + 549, 550, 551, 552, 553, 554, 45, 81, 82, 106, + 183, 184, 223, 324, 563, 564, 565, 566, 567, 568, + 569, 45, 269, 271, 272, 273, 274, 275, 281, 327, + 555, 556, 557, 558, 559, 560, 561, 562, 299, 300, + 301, 302, 303, 328, 329, 330, 331, 332, 335, 555, + 556, 557, 558, 559, 97, 98, 99, 100, 101, 102, + 103, 104, 572, 573, 574, 575, 576, 577, 578, 579, + 580, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, + 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, + 113, 605, 606, 305, 609, 610, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 617, 618, 619, 620, + 621, 622, 623, 624, 625, 626, 627, 262, 263, 264, + 265, 266, 267, 630, 631, 632, 633, 634, 635, 636, + 295, 296, 640, 641, 642, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1964,41 +2737,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, 10, 10, 10 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint16 yyr1[] = +static const yytype_int16 yyr1[] = { - 0, 303, 304, 304, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 306, 307, - 308, 308, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 310, 311, 311, - 312, 312, 312, 312, 312, 312, 312, 313, 314, 314, - 315, 315, 315, 315, 315, 315, 316, 317, 317, 318, - 318, 318, 318, 318, 318, 318, 319, 320, 320, 321, - 321, 321, 321, 321, 321, 321, 321, 322, 323, 324, - 325, 326, 327, 328, 328, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 330, 331, 332, 333, 334, + 0, 309, 310, 310, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 312, 313, + 314, 314, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 316, 317, 317, 318, 318, 318, 318, + 318, 318, 318, 319, 320, 320, 321, 321, 321, 321, + 321, 321, 322, 323, 323, 324, 324, 324, 324, 324, + 324, 324, 325, 326, 326, 327, 327, 327, 327, 327, + 327, 327, 327, 328, 329, 330, 331, 332, 333, 334, + 334, 335, 335, 335, 335, 335, 335, 335, 335, 335, 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, @@ -2021,23 +2795,24 @@ static const yytype_uint16 yyr1[] = 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 557, 558, 559, 559, 560, 560, 560, 560, - 560, 560, 560, 560, 561, 562, 563, 564, 565, 566, - 567, 568, 569, 570, 570, 571, 571, 571, 571, 571, - 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, - 571, 571, 571, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, - 588, 589, 590, 591, 592, 592, 593, 594, 595, 596, - 596, 597, 598, 599, 600, 601, 602, 603, 604, 604, - 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, - 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, - 616, 617, 617, 618, 618, 618, 618, 618, 618, 619, - 620, 621, 622, 623, 624, 625, 626, 627, 627, 628, - 628, 629, 630 + 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, + 565, 566, 567, 568, 569, 570, 571, 571, 572, 572, + 572, 572, 572, 572, 572, 572, 573, 574, 575, 576, + 577, 578, 579, 580, 581, 582, 582, 583, 583, 583, + 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, + 583, 583, 583, 583, 583, 583, 584, 585, 586, 587, + 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, + 598, 599, 600, 601, 602, 603, 604, 604, 605, 606, + 607, 608, 608, 609, 610, 611, 612, 613, 614, 615, + 616, 616, 617, 617, 617, 617, 617, 617, 617, 617, + 617, 617, 618, 619, 620, 621, 622, 623, 624, 625, + 626, 627, 628, 629, 629, 630, 630, 630, 630, 630, + 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, + 639, 640, 640, 641, 642 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = +static const yytype_int8 yyr2[] = { 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, @@ -2061,14 +2836,14 @@ 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, 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, 2, 2, 2, 2, 2, 2, + 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, 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, @@ -2080,36 +2855,37 @@ static const yytype_uint8 yyr2[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 3, 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, 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, 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, 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, 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, 1, 2, 0, 1, 2, 1, 2, - 0, 1, 2, 2, 2, 3, 3, 1, 2, 0, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, + 3, 3, 2, 2, 2, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 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, 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 }; +enum { YYENOMEM = -2 }; + #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab @@ -2135,10 +2911,9 @@ static const yytype_uint8 yyr2[] = } \ while (0) -/* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 - +/* Backward compatibility with an undocumented macro. + Use YYerror or YYUNDEF. */ +#define YYERRCODE YYUNDEF /* Enable debugging if requested. */ @@ -2156,18 +2931,18 @@ do { \ } while (0) /* This macro is provided for backward compatibility. */ -#ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -#endif +# ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ - Type, Value); \ + Kind, Value); \ YYFPRINTF (stderr, "\n"); \ } \ } while (0) @@ -2178,17 +2953,20 @@ do { \ `-----------------------------------*/ static void -yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) +yy_symbol_value_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) { FILE *yyoutput = yyo; YYUSE (yyoutput); if (!yyvaluep) return; # ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyo, yytoknum[yytype], *yyvaluep); + if (yykind < YYNTOKENS) + YYPRINT (yyo, yytoknum[yykind], *yyvaluep); # endif - YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yykind); + YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -2197,12 +2975,13 @@ yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) `---------------------------*/ static void -yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) +yy_symbol_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) { YYFPRINTF (yyo, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); + yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); - yy_symbol_value_print (yyo, yytype, yyvaluep); + yy_symbol_value_print (yyo, yykind, yyvaluep); YYFPRINTF (yyo, ")"); } @@ -2212,7 +2991,7 @@ yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) `------------------------------------------------------------------*/ static void -yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -2235,21 +3014,21 @@ do { \ `------------------------------------------------*/ static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) +yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, + int yyrule) { - unsigned long yylno = yyrline[yyrule]; + int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\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]], - &yyvsp[(yyi + 1) - (yynrhs)] - ); + YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), + &yyvsp[(yyi + 1) - (yynrhs)]); YYFPRINTF (stderr, "\n"); } } @@ -2264,8 +3043,8 @@ do { \ multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YYDPRINTF(Args) ((void) 0) +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ @@ -2288,253 +3067,29 @@ int yydebug; #endif -#if YYERROR_VERBOSE - -# ifndef yystrlen -# if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -static YYSIZE_T -yystrlen (const char *yystr) -{ - YYSIZE_T yylen; - for (yylen = 0; yystr[yylen]; yylen++) - continue; - return yylen; -} -# endif -# endif - -# ifndef yystpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -yystpcpy (char *yydest, const char *yysrc) -{ - char *yyd = yydest; - const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -# ifndef yytnamerr -/* Copy to YYRES the contents of YYSTR after stripping away unnecessary - quotes and backslashes, so that it's suitable for yyerror. The - heuristic is that double-quoting is unnecessary unless the string - contains an apostrophe, a comma, or backslash (other than - 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 YYSIZE_T -yytnamerr (char *yyres, const char *yystr) -{ - if (*yystr == '"') - { - YYSIZE_T yyn = 0; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - else - goto append; - - append: - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } - do_not_strip_quotes: ; - } - - if (! yyres) - return yystrlen (yystr); - - return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); -} -# endif -/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message - about the unexpected token YYTOKEN for the state stack whose top is - YYSSP. - - Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is - not large enough to hold the message. In that case, also set - *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 (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. */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ - int yycount = 0; - - /* There are many possibilities here to consider: - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[*yyssp]; - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else - return 2; - } - } - } - } - switch (yycount) - { -# define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - default: /* Avoid compiler warnings. */ - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -# undef YYCASE_ - } - { - YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else - return 2; - } - - if (*yymsg_alloc < yysize) - { - *yymsg_alloc = 2 * yysize; - if (! (yysize <= *yymsg_alloc - && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) - *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; - } - - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - { - char *yyp = *yymsg; - int yyi = 0; - while ((*yyp = *yyformat) != '\0') - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } - else - { - yyp++; - yyformat++; - } - } - return 0; -} -#endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +yydestruct (const char *yymsg, + yysymbol_kind_t yykind, YYSTYPE *yyvaluep) { YYUSE (yyvaluep); if (!yymsg) yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); + YYUSE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } - - /* The lookahead symbol. */ int yychar; @@ -2544,6 +3099,8 @@ YYSTYPE yylval; int yynerrs; + + /*----------. | yyparse. | `----------*/ @@ -2551,7 +3108,7 @@ int yynerrs; int yyparse (void) { - int yystate; + yy_state_fast_t yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; @@ -2562,32 +3119,29 @@ yyparse (void) Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ + /* Their size. */ + YYPTRDIFF_T yystacksize; + /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss; - yytype_int16 *yyssp; + yy_state_t yyssa[YYINITDEPTH]; + yy_state_t *yyss; + yy_state_t *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; - YYSIZE_T yystacksize; - int yyn; + /* The return value of yyparse. */ int yyresult; /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; + yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif + #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) @@ -2595,15 +3149,17 @@ yyparse (void) Keep to zero when no symbol should be popped. */ int yylen = 0; + yynerrs = 0; + yystate = 0; + yyerrstatus = 0; + + yystacksize = YYINITDEPTH; yyssp = yyss = yyssa; yyvsp = yyvs = yyvsa; - yystacksize = YYINITDEPTH; + YYDPRINTF ((stderr, "Starting parse\n")); - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; @@ -2618,12 +3174,15 @@ yynewstate: /*--------------------------------------------------------------------. -| yynewstate -- set current state (the top of the stack) to yystate. | +| yysetstate -- set current state (the top of the stack) to yystate. | `--------------------------------------------------------------------*/ yysetstate: YYDPRINTF ((stderr, "Entering state %d\n", yystate)); YY_ASSERT (0 <= yystate && yystate < YYNSTATES); - *yyssp = (yytype_int16) yystate; + YY_IGNORE_USELESS_CAST_BEGIN + *yyssp = YY_CAST (yy_state_t, yystate); + YY_IGNORE_USELESS_CAST_END + YY_STACK_PRINT (yyss, yyssp); if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE @@ -2631,23 +3190,23 @@ yysetstate: #else { /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); + YYPTRDIFF_T yysize = 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 * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), + &yyss1, yysize * YYSIZEOF (*yyssp), + &yyvs1, yysize * YYSIZEOF (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; @@ -2661,14 +3220,15 @@ yysetstate: yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; + yy_state_t *yyss1 = yyss; union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + YY_CAST (union yyalloc *, + YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE +# undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } @@ -2677,8 +3237,10 @@ yysetstate: yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long) yystacksize)); + YY_IGNORE_USELESS_CAST_BEGIN + YYDPRINTF ((stderr, "Stack size increased to %ld\n", + YY_CAST (long, yystacksize))); + YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) YYABORT; @@ -2705,18 +3267,29 @@ yybackup: /* Not known => get a lookahead token if don't already have one. */ - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ if (yychar == YYEMPTY) { - YYDPRINTF ((stderr, "Reading a token: ")); + YYDPRINTF ((stderr, "Reading a token\n")); yychar = yylex (); } if (yychar <= YYEOF) { - yychar = yytoken = YYEOF; + yychar = YYEOF; + yytoken = YYSYMBOL_YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } + else if (yychar == YYerror) + { + /* The scanner already issued an error message, process directly + to error recovery. But do not keep the error token as + lookahead, it is too special and may lead us to an endless + loop in error recovery. */ + yychar = YYUNDEF; + yytoken = YYSYMBOL_YYerror; + goto yyerrlab1; + } else { yytoken = YYTRANSLATE (yychar); @@ -2744,14 +3317,13 @@ 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; @@ -2787,24 +3359,24 @@ yyreduce: switch (yyn) { case 18: -#line 195 "util/configparser.y" - { +#line 197 "util/configparser.y" + { OUTYY(("\nP(force-toplevel)\n")); } -#line 2795 "util/configparser.c" +#line 3367 "util/configparser.c" break; case 19: -#line 201 "util/configparser.y" - { +#line 203 "util/configparser.y" + { OUTYY(("\nP(server:)\n")); } -#line 2803 "util/configparser.c" +#line 3375 "util/configparser.c" break; - case 227: -#line 299 "util/configparser.y" - { + case 233: +#line 305 "util/configparser.y" + { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -2814,12 +3386,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2818 "util/configparser.c" +#line 3390 "util/configparser.c" break; - case 237: -#line 316 "util/configparser.y" - { + case 243: +#line 322 "util/configparser.y" + { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -2829,12 +3401,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2833 "util/configparser.c" +#line 3405 "util/configparser.c" break; - case 246: -#line 333 "util/configparser.y" - { + case 252: +#line 339 "util/configparser.y" + { struct config_view* s; OUTYY(("\nP(view:)\n")); s = (struct config_view*)calloc(1, sizeof(struct config_view)); @@ -2846,12 +3418,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2850 "util/configparser.c" +#line 3422 "util/configparser.c" break; - case 256: -#line 352 "util/configparser.y" - { + case 262: +#line 358 "util/configparser.y" + { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -2866,12 +3438,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2870 "util/configparser.c" +#line 3442 "util/configparser.c" break; - case 267: -#line 376 "util/configparser.y" - { + case 273: +#line 382 "util/configparser.y" + { uint8_t* bitlist; size_t len = 0; OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str))); @@ -2887,12 +3459,12 @@ yyreduce: } } -#line 2891 "util/configparser.c" +#line 3463 "util/configparser.c" break; - case 268: -#line 395 "util/configparser.y" - { + case 274: +#line 401 "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 && @@ -2906,44 +3478,44 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2910 "util/configparser.c" +#line 3482 "util/configparser.c" break; - case 269: -#line 412 "util/configparser.y" - { + case 275: +#line 418 "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 2920 "util/configparser.c" +#line 3492 "util/configparser.c" break; - case 270: -#line 420 "util/configparser.y" - { + case 276: +#line 426 "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 2932 "util/configparser.c" +#line 3504 "util/configparser.c" break; - case 271: -#line 430 "util/configparser.y" - { + case 277: +#line 436 "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 2942 "util/configparser.c" +#line 3514 "util/configparser.c" break; - case 272: -#line 438 "util/configparser.y" - { + case 278: +#line 444 "util/configparser.y" + { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -2958,36 +3530,36 @@ yyreduce: } else yyerror("out of memory"); } -#line 2962 "util/configparser.c" +#line 3534 "util/configparser.c" break; - case 285: -#line 461 "util/configparser.y" - { + case 291: +#line 467 "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 2974 "util/configparser.c" +#line 3546 "util/configparser.c" break; - case 286: -#line 470 "util/configparser.y" - { + case 292: +#line 476 "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 2986 "util/configparser.c" +#line 3558 "util/configparser.c" break; - case 287: -#line 479 "util/configparser.y" - { + case 293: +#line 485 "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; @@ -2996,48 +3568,48 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3000 "util/configparser.c" +#line 3572 "util/configparser.c" break; - case 288: -#line 490 "util/configparser.y" - { + case 294: +#line 496 "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 3012 "util/configparser.c" +#line 3584 "util/configparser.c" break; - case 289: -#line 499 "util/configparser.y" - { + case 295: +#line 505 "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 3024 "util/configparser.c" +#line 3596 "util/configparser.c" break; - case 290: -#line 508 "util/configparser.y" - { + case 296: +#line 514 "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 3036 "util/configparser.c" +#line 3608 "util/configparser.c" break; - case 291: -#line 517 "util/configparser.y" - { + case 297: +#line 523 "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; @@ -3046,24 +3618,24 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3050 "util/configparser.c" +#line 3622 "util/configparser.c" break; - case 292: -#line 528 "util/configparser.y" - { + case 298: +#line 534 "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 3062 "util/configparser.c" +#line 3634 "util/configparser.c" break; - case 293: -#line 537 "util/configparser.y" - { + case 299: +#line 543 "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))) @@ -3073,12 +3645,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3077 "util/configparser.c" +#line 3649 "util/configparser.c" break; - case 294: -#line 549 "util/configparser.y" - { + case 300: +#line 555 "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, @@ -3089,12 +3661,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3093 "util/configparser.c" +#line 3665 "util/configparser.c" break; - case 295: -#line 563 "util/configparser.y" - { + case 301: +#line 569 "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) @@ -3107,12 +3679,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3111 "util/configparser.c" +#line 3683 "util/configparser.c" break; - case 296: -#line 578 "util/configparser.y" - { + case 302: +#line 584 "util/configparser.y" + { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); OUTYY(("P(Deprecated option, ignoring)\n")); @@ -3121,12 +3693,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3125 "util/configparser.c" +#line 3697 "util/configparser.c" break; - case 297: -#line 589 "util/configparser.y" - { + case 303: +#line 595 "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) @@ -3141,12 +3713,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3145 "util/configparser.c" +#line 3717 "util/configparser.c" break; - case 298: -#line 606 "util/configparser.y" - { + case 304: +#line 612 "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) @@ -3161,12 +3733,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3165 "util/configparser.c" +#line 3737 "util/configparser.c" break; - case 299: -#line 623 "util/configparser.y" - { + case 305: +#line 629 "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) @@ -3181,12 +3753,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3185 "util/configparser.c" +#line 3757 "util/configparser.c" break; - case 300: -#line 640 "util/configparser.y" - { + case 306: +#line 646 "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) @@ -3201,12 +3773,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3205 "util/configparser.c" +#line 3777 "util/configparser.c" break; - case 301: -#line 657 "util/configparser.y" - { + case 307: +#line 663 "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) @@ -3219,12 +3791,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3223 "util/configparser.c" +#line 3795 "util/configparser.c" break; - case 302: -#line 672 "util/configparser.y" - { + case 308: +#line 678 "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) @@ -3237,12 +3809,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3241 "util/configparser.c" +#line 3813 "util/configparser.c" break; - case 303: -#line 687 "util/configparser.y" - { + case 309: +#line 693 "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*)); @@ -3253,12 +3825,12 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3257 "util/configparser.c" +#line 3829 "util/configparser.c" break; - case 304: -#line 700 "util/configparser.y" - { + case 310: +#line 706 "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*)); @@ -3271,180 +3843,180 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3275 "util/configparser.c" +#line 3847 "util/configparser.c" break; - case 305: -#line 715 "util/configparser.y" - { + case 311: +#line 721 "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 3287 "util/configparser.c" +#line 3859 "util/configparser.c" break; - case 306: -#line 724 "util/configparser.y" - { + case 312: +#line 730 "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 3299 "util/configparser.c" +#line 3871 "util/configparser.c" break; - case 307: -#line 733 "util/configparser.y" - { + case 313: +#line 739 "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 3311 "util/configparser.c" +#line 3883 "util/configparser.c" break; - case 308: -#line 742 "util/configparser.y" - { + case 314: +#line 748 "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 3323 "util/configparser.c" +#line 3895 "util/configparser.c" break; - case 309: -#line 751 "util/configparser.y" - { + case 315: +#line 757 "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 3335 "util/configparser.c" +#line 3907 "util/configparser.c" break; - case 310: -#line 760 "util/configparser.y" - { + case 316: +#line 766 "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 3347 "util/configparser.c" +#line 3919 "util/configparser.c" break; - case 311: -#line 769 "util/configparser.y" - { + case 317: +#line 775 "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 3359 "util/configparser.c" +#line 3931 "util/configparser.c" break; - case 312: -#line 778 "util/configparser.y" - { + case 318: +#line 784 "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 3371 "util/configparser.c" +#line 3943 "util/configparser.c" break; - case 313: -#line 787 "util/configparser.y" - { + case 319: +#line 793 "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 3383 "util/configparser.c" +#line 3955 "util/configparser.c" break; - case 314: -#line 796 "util/configparser.y" - { + case 320: +#line 802 "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 3395 "util/configparser.c" +#line 3967 "util/configparser.c" break; - case 315: -#line 805 "util/configparser.y" - { + case 321: +#line 811 "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 3407 "util/configparser.c" +#line 3979 "util/configparser.c" break; - case 316: -#line 814 "util/configparser.y" - { + case 322: +#line 820 "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 3419 "util/configparser.c" +#line 3991 "util/configparser.c" break; - case 317: -#line 823 "util/configparser.y" - { + case 323: +#line 829 "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 3431 "util/configparser.c" +#line 4003 "util/configparser.c" break; - case 318: -#line 832 "util/configparser.y" - { + case 324: +#line 838 "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 3443 "util/configparser.c" +#line 4015 "util/configparser.c" break; - case 319: -#line 841 "util/configparser.y" - { + case 325: +#line 847 "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"); @@ -3455,24 +4027,24 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3459 "util/configparser.c" +#line 4031 "util/configparser.c" break; - case 320: -#line 854 "util/configparser.y" - { + case 326: +#line 860 "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 3471 "util/configparser.c" +#line 4043 "util/configparser.c" break; - case 321: -#line 863 "util/configparser.y" - { + case 327: +#line 869 "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"); @@ -3483,168 +4055,168 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3487 "util/configparser.c" +#line 4059 "util/configparser.c" break; - case 322: -#line 876 "util/configparser.y" - { + case 328: +#line 882 "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 3499 "util/configparser.c" +#line 4071 "util/configparser.c" break; - case 323: -#line 885 "util/configparser.y" - { + case 329: +#line 891 "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 3511 "util/configparser.c" +#line 4083 "util/configparser.c" break; - case 324: -#line 894 "util/configparser.y" - { + case 330: +#line 900 "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 3523 "util/configparser.c" +#line 4095 "util/configparser.c" break; - case 325: -#line 903 "util/configparser.y" - { + case 331: +#line 909 "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 3533 "util/configparser.c" +#line 4105 "util/configparser.c" break; - case 326: -#line 910 "util/configparser.y" - { + case 332: +#line 916 "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 3543 "util/configparser.c" +#line 4115 "util/configparser.c" break; - case 327: -#line 917 "util/configparser.y" - { + case 333: +#line 923 "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 3555 "util/configparser.c" +#line 4127 "util/configparser.c" break; - case 328: -#line 926 "util/configparser.y" - { + case 334: +#line 932 "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 3565 "util/configparser.c" +#line 4137 "util/configparser.c" break; - case 329: -#line 933 "util/configparser.y" - { + case 335: +#line 939 "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 3577 "util/configparser.c" +#line 4149 "util/configparser.c" break; - case 330: -#line 942 "util/configparser.y" - { + case 336: +#line 948 "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 3588 "util/configparser.c" +#line 4160 "util/configparser.c" break; - case 331: -#line 950 "util/configparser.y" - { + case 337: +#line 956 "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 3598 "util/configparser.c" +#line 4170 "util/configparser.c" break; - case 332: -#line 957 "util/configparser.y" - { + case 338: +#line 963 "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 3608 "util/configparser.c" +#line 4180 "util/configparser.c" break; - case 333: -#line 964 "util/configparser.y" - { + case 339: +#line 970 "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 3619 "util/configparser.c" +#line 4191 "util/configparser.c" break; - case 334: -#line 972 "util/configparser.y" - { + case 340: +#line 978 "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 3631 "util/configparser.c" +#line 4203 "util/configparser.c" break; - case 335: -#line 981 "util/configparser.y" - { + case 341: +#line 987 "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 3643 "util/configparser.c" +#line 4215 "util/configparser.c" break; - case 336: -#line 989 "util/configparser.y" - { + case 342: +#line 995 "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] != '/') { @@ -3659,96 +4231,96 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 3663 "util/configparser.c" +#line 4235 "util/configparser.c" break; - case 337: -#line 1005 "util/configparser.y" - { + case 343: +#line 1011 "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 3675 "util/configparser.c" +#line 4247 "util/configparser.c" break; - case 338: -#line 1013 "util/configparser.y" - { + case 344: +#line 1019 "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 3687 "util/configparser.c" +#line 4259 "util/configparser.c" break; - case 339: -#line 1021 "util/configparser.y" - { + case 345: +#line 1027 "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 3699 "util/configparser.c" +#line 4271 "util/configparser.c" break; - case 340: -#line 1029 "util/configparser.y" - { + case 346: +#line 1035 "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 3711 "util/configparser.c" +#line 4283 "util/configparser.c" break; - case 341: -#line 1037 "util/configparser.y" - { + case 347: +#line 1043 "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 3723 "util/configparser.c" +#line 4295 "util/configparser.c" break; - case 342: -#line 1045 "util/configparser.y" - { + case 348: +#line 1051 "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 3735 "util/configparser.c" +#line 4307 "util/configparser.c" break; - case 343: -#line 1054 "util/configparser.y" - { + case 349: +#line 1060 "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 3747 "util/configparser.c" +#line 4319 "util/configparser.c" break; - case 344: -#line 1063 "util/configparser.y" - { + case 350: +#line 1069 "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."); @@ -3760,104 +4332,104 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3764 "util/configparser.c" +#line 4336 "util/configparser.c" break; - case 345: -#line 1077 "util/configparser.y" - { + case 351: +#line 1083 "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 3776 "util/configparser.c" +#line 4348 "util/configparser.c" break; - case 346: -#line 1086 "util/configparser.y" - { + case 352: +#line 1092 "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 3788 "util/configparser.c" +#line 4360 "util/configparser.c" break; - case 347: -#line 1095 "util/configparser.y" - { + case 353: +#line 1101 "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 3800 "util/configparser.c" +#line 4372 "util/configparser.c" break; - case 348: -#line 1104 "util/configparser.y" - { + case 354: +#line 1110 "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 3812 "util/configparser.c" +#line 4384 "util/configparser.c" break; - case 349: -#line 1113 "util/configparser.y" - { + case 355: +#line 1119 "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 3824 "util/configparser.c" +#line 4396 "util/configparser.c" break; - case 350: -#line 1122 "util/configparser.y" - { + case 356: +#line 1128 "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 3836 "util/configparser.c" +#line 4408 "util/configparser.c" break; - case 351: -#line 1131 "util/configparser.y" - { + case 357: +#line 1137 "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 3846 "util/configparser.c" +#line 4418 "util/configparser.c" break; - case 352: -#line 1138 "util/configparser.y" - { + case 358: +#line 1144 "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 3856 "util/configparser.c" +#line 4428 "util/configparser.c" break; - case 353: -#line 1145 "util/configparser.y" - { + case 359: +#line 1151 "util/configparser.y" + { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); cfg_parser->cfg->directory = (yyvsp[0].str); @@ -3881,106 +4453,106 @@ yyreduce: } } } -#line 3885 "util/configparser.c" +#line 4457 "util/configparser.c" break; - case 354: -#line 1171 "util/configparser.y" - { + case 360: +#line 1177 "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 3896 "util/configparser.c" +#line 4468 "util/configparser.c" break; - case 355: -#line 1179 "util/configparser.y" - { + case 361: +#line 1185 "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 3906 "util/configparser.c" +#line 4478 "util/configparser.c" break; - case 356: -#line 1186 "util/configparser.y" - { + case 362: +#line 1192 "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 3916 "util/configparser.c" +#line 4488 "util/configparser.c" break; - case 357: -#line 1193 "util/configparser.y" - { + case 363: +#line 1199 "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 3926 "util/configparser.c" +#line 4498 "util/configparser.c" break; - case 358: -#line 1200 "util/configparser.y" - { + case 364: +#line 1206 "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 3936 "util/configparser.c" +#line 4508 "util/configparser.c" break; - case 359: -#line 1207 "util/configparser.y" - { + case 365: +#line 1213 "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 3947 "util/configparser.c" +#line 4519 "util/configparser.c" break; - case 360: -#line 1215 "util/configparser.y" - { + case 366: +#line 1221 "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 3958 "util/configparser.c" +#line 4530 "util/configparser.c" break; - case 361: -#line 1223 "util/configparser.y" - { + case 367: +#line 1229 "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 3969 "util/configparser.c" +#line 4541 "util/configparser.c" break; - case 362: -#line 1231 "util/configparser.y" - { + case 368: +#line 1237 "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 3979 "util/configparser.c" +#line 4551 "util/configparser.c" break; - case 363: -#line 1238 "util/configparser.y" - { + case 369: +#line 1244 "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."); @@ -3989,12 +4561,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3993 "util/configparser.c" +#line 4565 "util/configparser.c" break; - case 364: -#line 1249 "util/configparser.y" - { + case 370: +#line 1255 "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."); @@ -4003,99 +4575,118 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4007 "util/configparser.c" +#line 4579 "util/configparser.c" break; - case 365: -#line 1260 "util/configparser.y" - { + case 371: +#line 1266 "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 4017 "util/configparser.c" +#line 4589 "util/configparser.c" break; - case 366: -#line 1267 "util/configparser.y" - { + case 372: +#line 1273 "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 4029 "util/configparser.c" +#line 4601 "util/configparser.c" break; - case 367: -#line 1276 "util/configparser.y" - { + case 373: +#line 1282 "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 4041 "util/configparser.c" +#line 4613 "util/configparser.c" break; - case 368: -#line 1285 "util/configparser.y" - { + case 374: +#line 1291 "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 4053 "util/configparser.c" +#line 4625 "util/configparser.c" break; - case 369: -#line 1294 "util/configparser.y" - { + case 375: +#line 1300 "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 4063 "util/configparser.c" +#line 4635 "util/configparser.c" break; - case 370: -#line 1301 "util/configparser.y" - { + case 376: +#line 1307 "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 4073 "util/configparser.c" +#line 4645 "util/configparser.c" break; - case 371: -#line 1308 "util/configparser.y" - { + case 377: +#line 1314 "util/configparser.y" + { + OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str))); + free(cfg_parser->cfg->nsid_cfg_str); + cfg_parser->cfg->nsid_cfg_str = (yyvsp[0].str); + free(cfg_parser->cfg->nsid); + cfg_parser->cfg->nsid = NULL; + cfg_parser->cfg->nsid_len = 0; + if (*(yyvsp[0].str) == 0) + ; /* pass; empty string is not setting nsid */ + else if (!(cfg_parser->cfg->nsid = cfg_parse_nsid( + (yyvsp[0].str), &cfg_parser->cfg->nsid_len))) + yyerror("the NSID must be either a hex string or an " + "ascii character string prepended with ascii_."); + } +#line 4664 "util/configparser.c" + break; + + case 378: +#line 1330 "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 4084 "util/configparser.c" +#line 4675 "util/configparser.c" break; - case 372: -#line 1316 "util/configparser.y" - { + case 379: +#line 1338 "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 4095 "util/configparser.c" +#line 4686 "util/configparser.c" break; - case 373: -#line 1324 "util/configparser.y" + case 380: +#line 1346 "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) @@ -4104,11 +4695,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4108 "util/configparser.c" +#line 4699 "util/configparser.c" break; - case 374: -#line 1334 "util/configparser.y" + case 381: +#line 1356 "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) @@ -4117,11 +4708,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4121 "util/configparser.c" +#line 4712 "util/configparser.c" break; - case 375: -#line 1344 "util/configparser.y" + case 382: +#line 1366 "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) @@ -4130,12 +4721,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4134 "util/configparser.c" +#line 4725 "util/configparser.c" break; - case 376: -#line 1354 "util/configparser.y" - { + case 383: +#line 1376 "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"); @@ -4147,23 +4738,23 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4151 "util/configparser.c" +#line 4742 "util/configparser.c" break; - case 377: -#line 1368 "util/configparser.y" - { + case 384: +#line 1390 "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 4162 "util/configparser.c" +#line 4753 "util/configparser.c" break; - case 378: -#line 1376 "util/configparser.y" - { + case 385: +#line 1398 "util/configparser.y" + { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4174,12 +4765,12 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4178 "util/configparser.c" +#line 4769 "util/configparser.c" break; - case 379: -#line 1389 "util/configparser.y" - { + case 386: +#line 1411 "util/configparser.y" + { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4188,23 +4779,23 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4192 "util/configparser.c" +#line 4783 "util/configparser.c" break; - case 380: -#line 1400 "util/configparser.y" - { + case 387: +#line 1422 "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 4203 "util/configparser.c" +#line 4794 "util/configparser.c" break; - case 381: -#line 1408 "util/configparser.y" - { + case 388: +#line 1430 "util/configparser.y" + { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4215,60 +4806,60 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4219 "util/configparser.c" +#line 4810 "util/configparser.c" break; - case 382: -#line 1421 "util/configparser.y" - { + case 389: +#line 1443 "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 4231 "util/configparser.c" +#line 4822 "util/configparser.c" break; - case 383: -#line 1430 "util/configparser.y" - { + case 390: +#line 1452 "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 4243 "util/configparser.c" +#line 4834 "util/configparser.c" break; - case 384: -#line 1439 "util/configparser.y" - { + case 391: +#line 1461 "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 4255 "util/configparser.c" +#line 4846 "util/configparser.c" break; - case 385: -#line 1448 "util/configparser.y" - { + case 392: +#line 1470 "util/configparser.y" + { OUTYY(("P(server_udp_connect:%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_connect = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4267 "util/configparser.c" +#line 4858 "util/configparser.c" break; - case 386: -#line 1457 "util/configparser.y" - { + case 393: +#line 1479 "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."); @@ -4276,12 +4867,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4280 "util/configparser.c" +#line 4871 "util/configparser.c" break; - case 387: -#line 1467 "util/configparser.y" - { + case 394: +#line 1489 "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."); @@ -4289,23 +4880,23 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4293 "util/configparser.c" +#line 4884 "util/configparser.c" break; - case 388: -#line 1477 "util/configparser.y" - { + case 395: +#line 1499 "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 4304 "util/configparser.c" +#line 4895 "util/configparser.c" break; - case 389: -#line 1485 "util/configparser.y" - { + case 396: +#line 1507 "util/configparser.y" + { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4316,58 +4907,58 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4320 "util/configparser.c" +#line 4911 "util/configparser.c" break; - case 390: -#line 1498 "util/configparser.y" - { + case 397: +#line 1520 "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 4332 "util/configparser.c" +#line 4923 "util/configparser.c" break; - case 391: -#line 1507 "util/configparser.y" - { + case 398: +#line 1529 "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 4343 "util/configparser.c" +#line 4934 "util/configparser.c" break; - case 392: -#line 1515 "util/configparser.y" - { + case 399: +#line 1537 "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 4355 "util/configparser.c" +#line 4946 "util/configparser.c" break; - case 393: -#line 1524 "util/configparser.y" - { + case 400: +#line 1546 "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 4366 "util/configparser.c" +#line 4957 "util/configparser.c" break; - case 394: -#line 1532 "util/configparser.y" - { + case 401: +#line 1554 "util/configparser.y" + { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4378,24 +4969,24 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4382 "util/configparser.c" +#line 4973 "util/configparser.c" break; - case 395: -#line 1545 "util/configparser.y" - { + case 402: +#line 1567 "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 4394 "util/configparser.c" +#line 4985 "util/configparser.c" break; - case 396: -#line 1554 "util/configparser.y" - { + case 403: +#line 1576 "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."); @@ -4403,22 +4994,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4407 "util/configparser.c" +#line 4998 "util/configparser.c" break; - case 397: -#line 1564 "util/configparser.y" - { + case 404: +#line 1586 "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 4417 "util/configparser.c" +#line 5008 "util/configparser.c" break; - case 398: -#line 1571 "util/configparser.y" - { + case 405: +#line 1593 "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."); @@ -4426,12 +5017,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4430 "util/configparser.c" +#line 5021 "util/configparser.c" break; - case 399: -#line 1581 "util/configparser.y" - { + case 406: +#line 1603 "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."); @@ -4439,12 +5030,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4443 "util/configparser.c" +#line 5034 "util/configparser.c" break; - case 400: -#line 1591 "util/configparser.y" - { + case 407: +#line 1613 "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."); @@ -4452,12 +5043,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4456 "util/configparser.c" +#line 5047 "util/configparser.c" break; - case 401: -#line 1601 "util/configparser.y" - { + case 408: +#line 1623 "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."); @@ -4465,12 +5056,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4469 "util/configparser.c" +#line 5060 "util/configparser.c" break; - case 402: -#line 1611 "util/configparser.y" - { + case 409: +#line 1633 "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."); @@ -4478,12 +5069,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4482 "util/configparser.c" +#line 5073 "util/configparser.c" break; - case 403: -#line 1621 "util/configparser.y" - { + case 410: +#line 1643 "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."); @@ -4491,12 +5082,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4495 "util/configparser.c" +#line 5086 "util/configparser.c" break; - case 404: -#line 1631 "util/configparser.y" - { + case 411: +#line 1653 "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."); @@ -4504,12 +5095,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4508 "util/configparser.c" +#line 5099 "util/configparser.c" break; - case 405: -#line 1641 "util/configparser.y" - { + case 412: +#line 1663 "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."); @@ -4517,100 +5108,100 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4521 "util/configparser.c" +#line 5112 "util/configparser.c" break; - case 406: -#line 1651 "util/configparser.y" - { + case 413: +#line 1673 "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 4531 "util/configparser.c" +#line 5122 "util/configparser.c" break; - case 407: -#line 1658 "util/configparser.y" - { + case 414: +#line 1680 "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 4541 "util/configparser.c" +#line 5132 "util/configparser.c" break; - case 408: -#line 1665 "util/configparser.y" - { + case 415: +#line 1687 "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 4551 "util/configparser.c" +#line 5142 "util/configparser.c" break; - case 409: -#line 1672 "util/configparser.y" - { + case 416: +#line 1694 "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 4563 "util/configparser.c" +#line 5154 "util/configparser.c" break; - case 410: -#line 1681 "util/configparser.y" - { + case 417: +#line 1703 "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 4575 "util/configparser.c" +#line 5166 "util/configparser.c" break; - case 411: -#line 1690 "util/configparser.y" - { + case 418: +#line 1712 "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 4587 "util/configparser.c" +#line 5178 "util/configparser.c" break; - case 412: -#line 1699 "util/configparser.y" - { + case 419: +#line 1721 "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 4599 "util/configparser.c" +#line 5190 "util/configparser.c" break; - case 413: -#line 1708 "util/configparser.y" - { + case 420: +#line 1730 "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 4609 "util/configparser.c" +#line 5200 "util/configparser.c" break; - case 414: -#line 1715 "util/configparser.y" - { + case 421: +#line 1737 "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."); @@ -4618,12 +5209,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4622 "util/configparser.c" +#line 5213 "util/configparser.c" break; - case 415: -#line 1725 "util/configparser.y" - { + case 422: +#line 1747 "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 && @@ -4641,22 +5232,22 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4645 "util/configparser.c" +#line 5236 "util/configparser.c" break; - case 416: -#line 1745 "util/configparser.y" - { + case 423: +#line 1767 "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 4655 "util/configparser.c" +#line 5246 "util/configparser.c" break; - case 417: -#line 1752 "util/configparser.y" - { + case 424: +#line 1774 "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; @@ -4672,12 +5263,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4676 "util/configparser.c" +#line 5267 "util/configparser.c" break; - case 418: -#line 1770 "util/configparser.y" - { + case 425: +#line 1792 "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; @@ -4688,12 +5279,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4692 "util/configparser.c" +#line 5283 "util/configparser.c" break; - case 419: -#line 1783 "util/configparser.y" - { + case 426: +#line 1805 "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; @@ -4704,60 +5295,60 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4708 "util/configparser.c" +#line 5299 "util/configparser.c" break; - case 420: -#line 1796 "util/configparser.y" - { + case 427: +#line 1818 "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 4720 "util/configparser.c" +#line 5311 "util/configparser.c" break; - case 421: -#line 1805 "util/configparser.y" - { + case 428: +#line 1827 "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 4732 "util/configparser.c" +#line 5323 "util/configparser.c" break; - case 422: -#line 1814 "util/configparser.y" - { + case 429: +#line 1836 "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 4744 "util/configparser.c" +#line 5335 "util/configparser.c" break; - case 423: -#line 1823 "util/configparser.y" - { + case 430: +#line 1845 "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 4756 "util/configparser.c" +#line 5347 "util/configparser.c" break; - case 424: -#line 1832 "util/configparser.y" - { + case 431: +#line 1854 "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."); @@ -4765,12 +5356,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4769 "util/configparser.c" +#line 5360 "util/configparser.c" break; - case 425: -#line 1842 "util/configparser.y" - { + case 432: +#line 1864 "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."); @@ -4778,12 +5369,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4782 "util/configparser.c" +#line 5373 "util/configparser.c" break; - case 426: -#line 1852 "util/configparser.y" - { + case 433: +#line 1874 "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."); @@ -4792,84 +5383,96 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4796 "util/configparser.c" +#line 5387 "util/configparser.c" break; - case 427: -#line 1863 "util/configparser.y" - { + case 434: +#line 1885 "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 4808 "util/configparser.c" +#line 5399 "util/configparser.c" break; - case 428: -#line 1872 "util/configparser.y" - { + case 435: +#line 1894 "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 4820 "util/configparser.c" +#line 5411 "util/configparser.c" break; - case 429: -#line 1881 "util/configparser.y" - { + case 436: +#line 1903 "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 4832 "util/configparser.c" +#line 5423 "util/configparser.c" break; - case 430: -#line 1890 "util/configparser.y" - { + case 437: +#line 1912 "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 4844 "util/configparser.c" +#line 5435 "util/configparser.c" break; - case 431: -#line 1899 "util/configparser.y" - { + case 438: +#line 1921 "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 4856 "util/configparser.c" +#line 5447 "util/configparser.c" break; - case 432: -#line 1908 "util/configparser.y" - { + case 439: +#line 1930 "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 4868 "util/configparser.c" +#line 5459 "util/configparser.c" break; - case 433: -#line 1917 "util/configparser.y" - { + case 440: +#line 1939 "util/configparser.y" + { + OUTYY(("P(server_serve_original_ttl:%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_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 5471 "util/configparser.c" + break; + + case 441: +#line 1948 "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."); @@ -4880,12 +5483,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4884 "util/configparser.c" +#line 5487 "util/configparser.c" break; - case 434: -#line 1930 "util/configparser.y" - { + case 442: +#line 1961 "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."); @@ -4896,70 +5499,70 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4900 "util/configparser.c" +#line 5503 "util/configparser.c" break; - case 435: -#line 1943 "util/configparser.y" - { + case 443: +#line 1974 "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 4912 "util/configparser.c" +#line 5515 "util/configparser.c" break; - case 436: -#line 1952 "util/configparser.y" - { + case 444: +#line 1983 "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 4922 "util/configparser.c" +#line 5525 "util/configparser.c" break; - case 437: -#line 1959 "util/configparser.y" - { + case 445: +#line 1990 "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 4934 "util/configparser.c" +#line 5537 "util/configparser.c" break; - case 438: -#line 1968 "util/configparser.y" - { + case 446: +#line 1999 "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 4946 "util/configparser.c" +#line 5549 "util/configparser.c" break; - case 439: -#line 1977 "util/configparser.y" - { + case 447: +#line 2008 "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 4958 "util/configparser.c" +#line 5561 "util/configparser.c" break; - case 440: -#line 1986 "util/configparser.y" - { + case 448: +#line 2017 "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."); @@ -4967,23 +5570,23 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4971 "util/configparser.c" +#line 5574 "util/configparser.c" break; - case 441: -#line 1995 "util/configparser.y" - { + case 449: +#line 2026 "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 4982 "util/configparser.c" +#line 5585 "util/configparser.c" break; - case 442: -#line 2003 "util/configparser.y" - { + case 450: +#line 2034 "util/configparser.y" + { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4994,23 +5597,23 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4998 "util/configparser.c" +#line 5601 "util/configparser.c" break; - case 443: -#line 2016 "util/configparser.y" - { + case 451: +#line 2047 "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 5009 "util/configparser.c" +#line 5612 "util/configparser.c" break; - case 444: -#line 2024 "util/configparser.y" - { + case 452: +#line 2055 "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 && @@ -5019,6 +5622,9 @@ yyreduce: && strcmp((yyvsp[0].str), "always_transparent")!=0 && strcmp((yyvsp[0].str), "always_refuse")!=0 && strcmp((yyvsp[0].str), "always_nxdomain")!=0 + && strcmp((yyvsp[0].str), "always_nodata")!=0 + && strcmp((yyvsp[0].str), "always_deny")!=0 + && strcmp((yyvsp[0].str), "always_null")!=0 && strcmp((yyvsp[0].str), "noview")!=0 && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0 && strcmp((yyvsp[0].str), "inform_redirect") != 0 @@ -5027,8 +5633,9 @@ yyreduce: "refuse, redirect, transparent, " "typetransparent, inform, inform_deny, " "inform_redirect, always_transparent, " - "always_refuse, always_nxdomain, noview " - ", nodefault or ipset"); + "always_refuse, always_nxdomain, " + "always_nodata, always_deny, always_null, " + "noview, nodefault or ipset"); free((yyvsp[-1].str)); free((yyvsp[0].str)); } else if(strcmp((yyvsp[0].str), "nodefault")==0) { @@ -5049,22 +5656,22 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5053 "util/configparser.c" +#line 5660 "util/configparser.c" break; - case 445: -#line 2065 "util/configparser.y" - { + case 453: +#line 2100 "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 5063 "util/configparser.c" +#line 5670 "util/configparser.c" break; - case 446: -#line 2072 "util/configparser.y" - { + case 454: +#line 2107 "util/configparser.y" + { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); ptr = cfg_ptr_reverse((yyvsp[0].str)); @@ -5077,12 +5684,12 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5081 "util/configparser.c" +#line 5688 "util/configparser.c" break; - case 447: -#line 2087 "util/configparser.y" - { + case 455: +#line 2122 "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."); @@ -5090,12 +5697,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5094 "util/configparser.c" +#line 5701 "util/configparser.c" break; - case 448: -#line 2097 "util/configparser.y" - { + case 456: +#line 2132 "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."); @@ -5103,65 +5710,65 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5107 "util/configparser.c" +#line 5714 "util/configparser.c" break; - case 449: -#line 2107 "util/configparser.y" - { + case 457: +#line 2142 "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 5117 "util/configparser.c" +#line 5724 "util/configparser.c" break; - case 450: -#line 2114 "util/configparser.y" - { + case 458: +#line 2149 "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 5127 "util/configparser.c" +#line 5734 "util/configparser.c" break; - case 451: -#line 2121 "util/configparser.y" - { + case 459: +#line 2156 "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 5137 "util/configparser.c" +#line 5744 "util/configparser.c" break; - case 452: -#line 2128 "util/configparser.y" - { + case 460: +#line 2163 "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 5149 "util/configparser.c" +#line 5756 "util/configparser.c" break; - case 453: -#line 2137 "util/configparser.y" - { + case 461: +#line 2172 "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 5160 "util/configparser.c" +#line 5767 "util/configparser.c" break; - case 454: -#line 2145 "util/configparser.y" - { + case 462: +#line 2180 "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) { @@ -5173,12 +5780,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5177 "util/configparser.c" +#line 5784 "util/configparser.c" break; - case 455: -#line 2159 "util/configparser.y" - { + case 463: +#line 2194 "util/configparser.y" + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5197,12 +5804,12 @@ yyreduce: } } } -#line 5201 "util/configparser.c" +#line 5808 "util/configparser.c" break; - case 456: -#line 2180 "util/configparser.y" - { + case 464: +#line 2215 "util/configparser.y" + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5221,12 +5828,12 @@ yyreduce: } } } -#line 5225 "util/configparser.c" +#line 5832 "util/configparser.c" break; - case 457: -#line 2201 "util/configparser.y" - { + case 465: +#line 2236 "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))) { @@ -5236,12 +5843,12 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5240 "util/configparser.c" +#line 5847 "util/configparser.c" break; - case 458: -#line 2213 "util/configparser.y" - { + case 466: +#line 2248 "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))) { @@ -5251,12 +5858,12 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5255 "util/configparser.c" +#line 5862 "util/configparser.c" break; - case 459: -#line 2225 "util/configparser.y" - { + case 467: +#line 2260 "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))) { @@ -5266,24 +5873,24 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5270 "util/configparser.c" +#line 5877 "util/configparser.c" break; - case 460: -#line 2237 "util/configparser.y" - { + case 468: +#line 2272 "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 5282 "util/configparser.c" +#line 5889 "util/configparser.c" break; - case 461: -#line 2246 "util/configparser.y" - { + case 469: +#line 2281 "util/configparser.y" + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5302,58 +5909,58 @@ yyreduce: } } } -#line 5306 "util/configparser.c" +#line 5913 "util/configparser.c" break; - case 462: -#line 2267 "util/configparser.y" - { + case 470: +#line 2302 "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 5318 "util/configparser.c" +#line 5925 "util/configparser.c" break; - case 463: -#line 2277 "util/configparser.y" - { + case 471: +#line 2312 "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 5330 "util/configparser.c" +#line 5937 "util/configparser.c" break; - case 464: -#line 2286 "util/configparser.y" - { + case 472: +#line 2321 "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 5341 "util/configparser.c" +#line 5948 "util/configparser.c" break; - case 465: -#line 2294 "util/configparser.y" - { + case 473: +#line 2329 "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 5352 "util/configparser.c" +#line 5959 "util/configparser.c" break; - case 466: -#line 2302 "util/configparser.y" - { + case 474: +#line 2337 "util/configparser.y" + { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -5364,12 +5971,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5368 "util/configparser.c" +#line 5975 "util/configparser.c" break; - case 467: -#line 2315 "util/configparser.y" - { + case 475: +#line 2350 "util/configparser.y" + { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -5380,12 +5987,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5384 "util/configparser.c" +#line 5991 "util/configparser.c" break; - case 468: -#line 2328 "util/configparser.y" - { + case 476: +#line 2363 "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"); @@ -5398,12 +6005,12 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5402 "util/configparser.c" +#line 6009 "util/configparser.c" break; - case 469: -#line 2343 "util/configparser.y" - { + case 477: +#line 2378 "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"); @@ -5416,69 +6023,69 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5420 "util/configparser.c" +#line 6027 "util/configparser.c" break; - case 470: -#line 2358 "util/configparser.y" - { + case 478: +#line 2393 "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 5432 "util/configparser.c" +#line 6039 "util/configparser.c" break; - case 471: -#line 2367 "util/configparser.y" - { + case 479: +#line 2402 "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 5444 "util/configparser.c" +#line 6051 "util/configparser.c" break; - case 472: -#line 2376 "util/configparser.y" - { + case 480: +#line 2411 "util/configparser.y" + { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5453 "util/configparser.c" +#line 6060 "util/configparser.c" break; - case 473: -#line 2382 "util/configparser.y" - { + case 481: +#line 2417 "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 5465 "util/configparser.c" +#line 6072 "util/configparser.c" break; - case 474: -#line 2391 "util/configparser.y" - { + case 482: +#line 2426 "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 5477 "util/configparser.c" +#line 6084 "util/configparser.c" break; - case 475: -#line 2400 "util/configparser.y" - { + case 483: +#line 2435 "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."); @@ -5486,12 +6093,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5490 "util/configparser.c" +#line 6097 "util/configparser.c" break; - case 476: -#line 2410 "util/configparser.y" - { + case 484: +#line 2445 "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."); @@ -5499,12 +6106,62 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5503 "util/configparser.c" +#line 6110 "util/configparser.c" break; - case 477: -#line 2420 "util/configparser.y" - { + case 485: +#line 2455 "util/configparser.y" + { + OUTYY(("P(server_pad_responses:%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->pad_responses = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 6123 "util/configparser.c" + break; + + case 486: +#line 2465 "util/configparser.y" + { + OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) + yyerror("number expected"); + else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); + } +#line 6135 "util/configparser.c" + break; + + case 487: +#line 2474 "util/configparser.y" + { + OUTYY(("P(server_pad_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->pad_queries = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 6148 "util/configparser.c" + break; + + case 488: +#line 2484 "util/configparser.y" + { + OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) + yyerror("number expected"); + else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); + } +#line 6160 "util/configparser.c" + break; + + case 489: +#line 2493 "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) @@ -5515,12 +6172,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5519 "util/configparser.c" +#line 6176 "util/configparser.c" break; - case 478: -#line 2433 "util/configparser.y" - { + case 490: +#line 2506 "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) @@ -5531,12 +6188,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5535 "util/configparser.c" +#line 6192 "util/configparser.c" break; - case 479: -#line 2446 "util/configparser.y" - { + case 491: +#line 2519 "util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ipsecmod_hook); @@ -5546,12 +6203,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5550 "util/configparser.c" +#line 6207 "util/configparser.c" break; - case 480: -#line 2458 "util/configparser.y" - { + case 492: +#line 2531 "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) @@ -5563,12 +6220,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5567 "util/configparser.c" +#line 6224 "util/configparser.c" break; - case 481: -#line 2472 "util/configparser.y" - { + case 493: +#line 2545 "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))) @@ -5578,12 +6235,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5582 "util/configparser.c" +#line 6239 "util/configparser.c" break; - case 482: -#line 2484 "util/configparser.y" - { + case 494: +#line 2557 "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) @@ -5595,24 +6252,24 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5599 "util/configparser.c" +#line 6256 "util/configparser.c" break; - case 483: -#line 2498 "util/configparser.y" - { + case 495: +#line 2571 "util/configparser.y" + { OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->edns_client_strings, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding " "edns-client-string"); } -#line 5611 "util/configparser.c" +#line 6268 "util/configparser.c" break; - case 484: -#line 2507 "util/configparser.y" - { + case 496: +#line 2580 "util/configparser.y" + { OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("option code expected"); @@ -5622,12 +6279,12 @@ yyreduce: free((yyvsp[0].str)); } -#line 5626 "util/configparser.c" +#line 6283 "util/configparser.c" break; - case 485: -#line 2519 "util/configparser.y" - { + case 497: +#line 2592 "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 " @@ -5635,56 +6292,56 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5639 "util/configparser.c" +#line 6296 "util/configparser.c" break; - case 486: -#line 2529 "util/configparser.y" - { + case 498: +#line 2602 "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 5649 "util/configparser.c" +#line 6306 "util/configparser.c" break; - case 487: -#line 2536 "util/configparser.y" - { + case 499: +#line 2609 "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 5659 "util/configparser.c" +#line 6316 "util/configparser.c" break; - case 488: -#line 2543 "util/configparser.y" - { + case 500: +#line 2616 "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 5671 "util/configparser.c" +#line 6328 "util/configparser.c" break; - case 489: -#line 2552 "util/configparser.y" - { + case 501: +#line 2625 "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 5683 "util/configparser.c" +#line 6340 "util/configparser.c" break; - case 490: -#line 2561 "util/configparser.y" - { + case 502: +#line 2634 "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."); @@ -5692,12 +6349,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5696 "util/configparser.c" +#line 6353 "util/configparser.c" break; - case 491: -#line 2571 "util/configparser.y" - { + case 503: +#line 2644 "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."); @@ -5705,12 +6362,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5709 "util/configparser.c" +#line 6366 "util/configparser.c" break; - case 492: -#line 2581 "util/configparser.y" - { + case 504: +#line 2654 "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 " @@ -5718,56 +6375,56 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5722 "util/configparser.c" +#line 6379 "util/configparser.c" break; - case 493: -#line 2591 "util/configparser.y" - { + case 505: +#line 2664 "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 5732 "util/configparser.c" +#line 6389 "util/configparser.c" break; - case 494: -#line 2598 "util/configparser.y" - { + case 506: +#line 2671 "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 5742 "util/configparser.c" +#line 6399 "util/configparser.c" break; - case 495: -#line 2605 "util/configparser.y" - { + case 507: +#line 2678 "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 5754 "util/configparser.c" +#line 6411 "util/configparser.c" break; - case 496: -#line 2614 "util/configparser.y" - { + case 508: +#line 2687 "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 5766 "util/configparser.c" +#line 6423 "util/configparser.c" break; - case 497: -#line 2623 "util/configparser.y" - { + case 509: +#line 2696 "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."); @@ -5775,12 +6432,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5779 "util/configparser.c" +#line 6436 "util/configparser.c" break; - case 498: -#line 2633 "util/configparser.y" - { + case 510: +#line 2706 "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 " @@ -5788,53 +6445,53 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5792 "util/configparser.c" +#line 6449 "util/configparser.c" break; - case 499: -#line 2643 "util/configparser.y" - { + case 511: +#line 2716 "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 5802 "util/configparser.c" +#line 6459 "util/configparser.c" break; - case 500: -#line 2650 "util/configparser.y" - { + case 512: +#line 2723 "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 5812 "util/configparser.c" +#line 6469 "util/configparser.c" break; - case 501: -#line 2657 "util/configparser.y" - { + case 513: +#line 2730 "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 5822 "util/configparser.c" +#line 6479 "util/configparser.c" break; - case 502: -#line 2664 "util/configparser.y" - { + case 514: +#line 2737 "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 5833 "util/configparser.c" +#line 6490 "util/configparser.c" break; - case 503: -#line 2672 "util/configparser.y" - { + case 515: +#line 2745 "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."); @@ -5842,12 +6499,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5846 "util/configparser.c" +#line 6503 "util/configparser.c" break; - case 504: -#line 2682 "util/configparser.y" - { + case 516: +#line 2755 "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."); @@ -5855,12 +6512,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5859 "util/configparser.c" +#line 6516 "util/configparser.c" break; - case 505: -#line 2692 "util/configparser.y" - { + case 517: +#line 2765 "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."); @@ -5868,12 +6525,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5872 "util/configparser.c" +#line 6529 "util/configparser.c" break; - case 506: -#line 2702 "util/configparser.y" - { + case 518: +#line 2775 "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 " @@ -5881,12 +6538,12 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5885 "util/configparser.c" +#line 6542 "util/configparser.c" break; - case 507: -#line 2712 "util/configparser.y" - { + case 519: +#line 2785 "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 && @@ -5923,12 +6580,12 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5927 "util/configparser.c" +#line 6584 "util/configparser.c" break; - case 508: -#line 2751 "util/configparser.y" - { + case 520: +#line 2824 "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( @@ -5936,34 +6593,34 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5940 "util/configparser.c" +#line 6597 "util/configparser.c" break; - case 509: -#line 2761 "util/configparser.y" - { + case 521: +#line 2834 "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 5951 "util/configparser.c" +#line 6608 "util/configparser.c" break; - case 510: -#line 2769 "util/configparser.y" - { + case 522: +#line 2842 "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 5962 "util/configparser.c" +#line 6619 "util/configparser.c" break; - case 511: -#line 2777 "util/configparser.y" - { + case 523: +#line 2850 "util/configparser.y" + { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); ptr = cfg_ptr_reverse((yyvsp[0].str)); @@ -5976,32 +6633,32 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5980 "util/configparser.c" +#line 6637 "util/configparser.c" break; - case 512: -#line 2792 "util/configparser.y" - { + case 524: +#line 2865 "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 5992 "util/configparser.c" +#line 6649 "util/configparser.c" break; - case 513: -#line 2801 "util/configparser.y" - { + case 525: +#line 2874 "util/configparser.y" + { OUTYY(("\nP(remote-control:)\n")); } -#line 6000 "util/configparser.c" +#line 6657 "util/configparser.c" break; - case 524: -#line 2812 "util/configparser.y" - { + case 536: +#line 2885 "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."); @@ -6009,104 +6666,104 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6013 "util/configparser.c" +#line 6670 "util/configparser.c" break; - case 525: -#line 2822 "util/configparser.y" - { + case 537: +#line 2895 "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 6025 "util/configparser.c" +#line 6682 "util/configparser.c" break; - case 526: -#line 2831 "util/configparser.y" - { + case 538: +#line 2904 "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 6035 "util/configparser.c" +#line 6692 "util/configparser.c" break; - case 527: -#line 2838 "util/configparser.y" - { + case 539: +#line 2911 "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 6045 "util/configparser.c" +#line 6702 "util/configparser.c" break; - case 528: -#line 2845 "util/configparser.y" - { + case 540: +#line 2918 "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 6055 "util/configparser.c" +#line 6712 "util/configparser.c" break; - case 529: -#line 2852 "util/configparser.y" - { + case 541: +#line 2925 "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 6065 "util/configparser.c" +#line 6722 "util/configparser.c" break; - case 530: -#line 2859 "util/configparser.y" - { + case 542: +#line 2932 "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 6075 "util/configparser.c" +#line 6732 "util/configparser.c" break; - case 531: -#line 2866 "util/configparser.y" - { + case 543: +#line 2939 "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 6085 "util/configparser.c" +#line 6742 "util/configparser.c" break; - case 532: -#line 2873 "util/configparser.y" - { + case 544: +#line 2946 "util/configparser.y" + { OUTYY(("\nP(dnstap:)\n")); } -#line 6093 "util/configparser.c" +#line 6750 "util/configparser.c" break; - case 554: -#line 2893 "util/configparser.y" - { + case 566: +#line 2966 "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 6105 "util/configparser.c" +#line 6762 "util/configparser.c" break; - case 555: -#line 2902 "util/configparser.y" - { + case 567: +#line 2975 "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."); @@ -6114,128 +6771,128 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6118 "util/configparser.c" +#line 6775 "util/configparser.c" break; - case 556: -#line 2912 "util/configparser.y" - { + case 568: +#line 2985 "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 6128 "util/configparser.c" +#line 6785 "util/configparser.c" break; - case 557: -#line 2919 "util/configparser.y" - { + case 569: +#line 2992 "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 6138 "util/configparser.c" +#line 6795 "util/configparser.c" break; - case 558: -#line 2926 "util/configparser.y" - { + case 570: +#line 2999 "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 6150 "util/configparser.c" +#line 6807 "util/configparser.c" break; - case 559: -#line 2935 "util/configparser.y" - { + case 571: +#line 3008 "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 6160 "util/configparser.c" +#line 6817 "util/configparser.c" break; - case 560: -#line 2942 "util/configparser.y" - { + case 572: +#line 3015 "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 6170 "util/configparser.c" +#line 6827 "util/configparser.c" break; - case 561: -#line 2949 "util/configparser.y" - { + case 573: +#line 3022 "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 6180 "util/configparser.c" +#line 6837 "util/configparser.c" break; - case 562: -#line 2956 "util/configparser.y" - { + case 574: +#line 3029 "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 6190 "util/configparser.c" +#line 6847 "util/configparser.c" break; - case 563: -#line 2963 "util/configparser.y" - { + case 575: +#line 3036 "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 6202 "util/configparser.c" +#line 6859 "util/configparser.c" break; - case 564: -#line 2972 "util/configparser.y" - { + case 576: +#line 3045 "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 6214 "util/configparser.c" +#line 6871 "util/configparser.c" break; - case 565: -#line 2981 "util/configparser.y" - { + case 577: +#line 3054 "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 6224 "util/configparser.c" +#line 6881 "util/configparser.c" break; - case 566: -#line 2988 "util/configparser.y" - { + case 578: +#line 3061 "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 6234 "util/configparser.c" +#line 6891 "util/configparser.c" break; - case 567: -#line 2995 "util/configparser.y" - { + case 579: +#line 3068 "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."); @@ -6243,12 +6900,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6247 "util/configparser.c" +#line 6904 "util/configparser.c" break; - case 568: -#line 3005 "util/configparser.y" - { + case 580: +#line 3078 "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."); @@ -6256,12 +6913,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6260 "util/configparser.c" +#line 6917 "util/configparser.c" break; - case 569: -#line 3015 "util/configparser.y" - { + case 581: +#line 3088 "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."); @@ -6269,12 +6926,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6273 "util/configparser.c" +#line 6930 "util/configparser.c" break; - case 570: -#line 3025 "util/configparser.y" - { + case 582: +#line 3098 "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."); @@ -6282,12 +6939,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6286 "util/configparser.c" +#line 6943 "util/configparser.c" break; - case 571: -#line 3035 "util/configparser.y" - { + case 583: +#line 3108 "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."); @@ -6295,12 +6952,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6299 "util/configparser.c" +#line 6956 "util/configparser.c" break; - case 572: -#line 3045 "util/configparser.y" - { + case 584: +#line 3118 "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."); @@ -6308,48 +6965,48 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6312 "util/configparser.c" +#line 6969 "util/configparser.c" break; - case 573: -#line 3055 "util/configparser.y" - { + case 585: +#line 3128 "util/configparser.y" + { OUTYY(("\nP(python:)\n")); } -#line 6320 "util/configparser.c" +#line 6977 "util/configparser.c" break; - case 577: -#line 3064 "util/configparser.y" - { + case 589: +#line 3137 "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 6330 "util/configparser.c" +#line 6987 "util/configparser.c" break; - case 578: -#line 3070 "util/configparser.y" - { + case 590: +#line 3143 "util/configparser.y" + { OUTYY(("\nP(dynlib:)\n")); } -#line 6338 "util/configparser.c" +#line 6995 "util/configparser.c" break; - case 582: -#line 3079 "util/configparser.y" - { + case 594: +#line 3152 "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 6348 "util/configparser.c" +#line 7005 "util/configparser.c" break; - case 583: -#line 3085 "util/configparser.y" - { + case 595: +#line 3158 "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."); @@ -6357,132 +7014,132 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6361 "util/configparser.c" +#line 7018 "util/configparser.c" break; - case 584: -#line 3095 "util/configparser.y" - { + case 596: +#line 3168 "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 6371 "util/configparser.c" +#line 7028 "util/configparser.c" break; - case 585: -#line 3102 "util/configparser.y" - { + case 597: +#line 3175 "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 6383 "util/configparser.c" +#line 7040 "util/configparser.c" break; - case 586: -#line 3111 "util/configparser.y" - { + case 598: +#line 3184 "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 6394 "util/configparser.c" +#line 7051 "util/configparser.c" break; - case 587: -#line 3119 "util/configparser.y" - { + case 599: +#line 3192 "util/configparser.y" + { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6402 "util/configparser.c" +#line 7059 "util/configparser.c" break; - case 600: -#line 3135 "util/configparser.y" - { + case 612: +#line 3208 "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 6414 "util/configparser.c" +#line 7071 "util/configparser.c" break; - case 601: -#line 3145 "util/configparser.y" - { + case 613: +#line 3218 "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 6426 "util/configparser.c" +#line 7083 "util/configparser.c" break; - case 602: -#line 3154 "util/configparser.y" - { + case 614: +#line 3227 "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 6436 "util/configparser.c" +#line 7093 "util/configparser.c" break; - case 603: -#line 3161 "util/configparser.y" - { + case 615: +#line 3234 "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 6448 "util/configparser.c" +#line 7105 "util/configparser.c" break; - case 604: -#line 3170 "util/configparser.y" - { + case 616: +#line 3243 "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 6458 "util/configparser.c" +#line 7115 "util/configparser.c" break; - case 605: -#line 3177 "util/configparser.y" - { + case 617: +#line 3250 "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 6470 "util/configparser.c" +#line 7127 "util/configparser.c" break; - case 606: -#line 3186 "util/configparser.y" - { + case 618: +#line 3259 "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 6481 "util/configparser.c" +#line 7138 "util/configparser.c" break; - case 607: -#line 3194 "util/configparser.y" - { + case 619: +#line 3267 "util/configparser.y" + { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -6493,23 +7150,23 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6497 "util/configparser.c" +#line 7154 "util/configparser.c" break; - case 608: -#line 3207 "util/configparser.y" - { + case 620: +#line 3280 "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 6508 "util/configparser.c" +#line 7165 "util/configparser.c" break; - case 609: -#line 3215 "util/configparser.y" - { + case 621: +#line 3288 "util/configparser.y" + { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -6520,20 +7177,20 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6524 "util/configparser.c" +#line 7181 "util/configparser.c" break; - case 610: -#line 3228 "util/configparser.y" - { + case 622: +#line 3301 "util/configparser.y" + { OUTYY(("\nP(cachedb:)\n")); } -#line 6532 "util/configparser.c" +#line 7189 "util/configparser.c" break; - case 619: -#line 3239 "util/configparser.y" - { + case 631: +#line 3312 "util/configparser.y" + { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->cachedb_backend); @@ -6543,12 +7200,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6547 "util/configparser.c" +#line 7204 "util/configparser.c" break; - case 620: -#line 3251 "util/configparser.y" - { + case 632: +#line 3324 "util/configparser.y" + { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->cachedb_secret); @@ -6558,12 +7215,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6562 "util/configparser.c" +#line 7219 "util/configparser.c" break; - case 621: -#line 3263 "util/configparser.y" - { + case 633: +#line 3336 "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); @@ -6573,12 +7230,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6577 "util/configparser.c" +#line 7234 "util/configparser.c" break; - case 622: -#line 3275 "util/configparser.y" - { + case 634: +#line 3348 "util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str))); @@ -6591,12 +7248,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6595 "util/configparser.c" +#line 7252 "util/configparser.c" break; - case 623: -#line 3290 "util/configparser.y" - { + case 635: +#line 3363 "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) @@ -6607,12 +7264,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6611 "util/configparser.c" +#line 7268 "util/configparser.c" break; - case 624: -#line 3303 "util/configparser.y" - { + case 636: +#line 3376 "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) @@ -6623,12 +7280,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6627 "util/configparser.c" +#line 7284 "util/configparser.c" break; - case 625: -#line 3316 "util/configparser.y" - { + case 637: +#line 3389 "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"); @@ -6637,20 +7294,20 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6641 "util/configparser.c" +#line 7298 "util/configparser.c" break; - case 626: -#line 3327 "util/configparser.y" - { + case 638: +#line 3400 "util/configparser.y" + { OUTYY(("\nP(ipset:)\n")); } -#line 6649 "util/configparser.c" +#line 7306 "util/configparser.c" break; - case 631: -#line 3336 "util/configparser.y" - { + case 643: +#line 3409 "util/configparser.y" + { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->ipset_name_v4) @@ -6663,12 +7320,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6667 "util/configparser.c" +#line 7324 "util/configparser.c" break; - case 632: -#line 3351 "util/configparser.y" - { + case 644: +#line 3424 "util/configparser.y" + { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->ipset_name_v6) @@ -6681,11 +7338,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6685 "util/configparser.c" +#line 7342 "util/configparser.c" break; -#line 6689 "util/configparser.c" +#line 7346 "util/configparser.c" default: break; } @@ -6700,11 +7357,10 @@ yyreduce: case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; - YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; @@ -6728,50 +7384,14 @@ yyreduce: yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - + yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; -#if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); -#else -# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ - yyssp, yytoken) - { - char const *yymsgp = YY_("syntax error"); - int yysyntax_error_status; - yysyntax_error_status = YYSYNTAX_ERROR; - if (yysyntax_error_status == 0) - yymsgp = yymsg; - else if (yysyntax_error_status == 1) - { - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); - if (!yymsg) - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; - } - else - { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; - } - } - yyerror (yymsgp); - if (yysyntax_error_status == 2) - goto yyexhaustedlab; - } -# undef YYSYNTAX_ERROR -#endif } - - if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an @@ -6820,13 +7440,14 @@ yyerrorlab: yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ + /* Pop stack until we find a state that shifts the error token. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + yyn += YYSYMBOL_YYerror; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) { yyn = yytable[yyn]; if (0 < yyn) @@ -6840,7 +7461,7 @@ yyerrlab1: yydestruct ("Error: popping", - yystos[yystate], yyvsp); + YY_ACCESSING_SYMBOL (yystate), yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -6852,7 +7473,7 @@ yyerrlab1: /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); yystate = yyn; goto yynewstate; @@ -6874,7 +7495,7 @@ yyabortlab: goto yyreturn; -#if !defined yyoverflow || YYERROR_VERBOSE +#if !defined yyoverflow /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ @@ -6904,20 +7525,18 @@ yyreturn: while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); + YY_ACCESSING_SYMBOL (+*yyssp), yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif -#if YYERROR_VERBOSE - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); -#endif + return yyresult; } -#line 3365 "util/configparser.y" + +#line 3438 "util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 74f0169ce5b9..baa3bb2d9cc5 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.4.1. */ +/* A Bison parser, made by GNU Bison 3.6.4. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -31,8 +31,9 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ #ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED # define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED @@ -44,314 +45,328 @@ extern int yydebug; #endif -/* Token type. */ +/* Token kinds. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { - SPACE = 258, - LETTER = 259, - NEWLINE = 260, - COMMENT = 261, - COLON = 262, - ANY = 263, - ZONESTR = 264, - STRING_ARG = 265, - VAR_FORCE_TOPLEVEL = 266, - VAR_SERVER = 267, - VAR_VERBOSITY = 268, - VAR_NUM_THREADS = 269, - VAR_PORT = 270, - VAR_OUTGOING_RANGE = 271, - VAR_INTERFACE = 272, - VAR_PREFER_IP4 = 273, - VAR_DO_IP4 = 274, - VAR_DO_IP6 = 275, - VAR_PREFER_IP6 = 276, - VAR_DO_UDP = 277, - VAR_DO_TCP = 278, - VAR_TCP_MSS = 279, - VAR_OUTGOING_TCP_MSS = 280, - VAR_TCP_IDLE_TIMEOUT = 281, - VAR_EDNS_TCP_KEEPALIVE = 282, - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, - VAR_CHROOT = 284, - VAR_USERNAME = 285, - VAR_DIRECTORY = 286, - VAR_LOGFILE = 287, - VAR_PIDFILE = 288, - VAR_MSG_CACHE_SIZE = 289, - VAR_MSG_CACHE_SLABS = 290, - VAR_NUM_QUERIES_PER_THREAD = 291, - VAR_RRSET_CACHE_SIZE = 292, - VAR_RRSET_CACHE_SLABS = 293, - VAR_OUTGOING_NUM_TCP = 294, - VAR_INFRA_HOST_TTL = 295, - VAR_INFRA_LAME_TTL = 296, - VAR_INFRA_CACHE_SLABS = 297, - VAR_INFRA_CACHE_NUMHOSTS = 298, - VAR_INFRA_CACHE_LAME_SIZE = 299, - VAR_NAME = 300, - VAR_STUB_ZONE = 301, - VAR_STUB_HOST = 302, - VAR_STUB_ADDR = 303, - VAR_TARGET_FETCH_POLICY = 304, - VAR_HARDEN_SHORT_BUFSIZE = 305, - VAR_HARDEN_LARGE_QUERIES = 306, - VAR_FORWARD_ZONE = 307, - VAR_FORWARD_HOST = 308, - VAR_FORWARD_ADDR = 309, - VAR_DO_NOT_QUERY_ADDRESS = 310, - VAR_HIDE_IDENTITY = 311, - VAR_HIDE_VERSION = 312, - VAR_IDENTITY = 313, - VAR_VERSION = 314, - VAR_HARDEN_GLUE = 315, - VAR_MODULE_CONF = 316, - VAR_TRUST_ANCHOR_FILE = 317, - VAR_TRUST_ANCHOR = 318, - VAR_VAL_OVERRIDE_DATE = 319, - VAR_BOGUS_TTL = 320, - VAR_VAL_CLEAN_ADDITIONAL = 321, - VAR_VAL_PERMISSIVE_MODE = 322, - VAR_INCOMING_NUM_TCP = 323, - VAR_MSG_BUFFER_SIZE = 324, - VAR_KEY_CACHE_SIZE = 325, - VAR_KEY_CACHE_SLABS = 326, - VAR_TRUSTED_KEYS_FILE = 327, - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, - VAR_USE_SYSLOG = 329, - VAR_OUTGOING_INTERFACE = 330, - VAR_ROOT_HINTS = 331, - VAR_DO_NOT_QUERY_LOCALHOST = 332, - VAR_CACHE_MAX_TTL = 333, - VAR_HARDEN_DNSSEC_STRIPPED = 334, - VAR_ACCESS_CONTROL = 335, - VAR_LOCAL_ZONE = 336, - VAR_LOCAL_DATA = 337, - VAR_INTERFACE_AUTOMATIC = 338, - VAR_STATISTICS_INTERVAL = 339, - VAR_DO_DAEMONIZE = 340, - VAR_USE_CAPS_FOR_ID = 341, - VAR_STATISTICS_CUMULATIVE = 342, - VAR_OUTGOING_PORT_PERMIT = 343, - VAR_OUTGOING_PORT_AVOID = 344, - VAR_DLV_ANCHOR_FILE = 345, - VAR_DLV_ANCHOR = 346, - VAR_NEG_CACHE_SIZE = 347, - VAR_HARDEN_REFERRAL_PATH = 348, - VAR_PRIVATE_ADDRESS = 349, - VAR_PRIVATE_DOMAIN = 350, - VAR_REMOTE_CONTROL = 351, - VAR_CONTROL_ENABLE = 352, - VAR_CONTROL_INTERFACE = 353, - VAR_CONTROL_PORT = 354, - VAR_SERVER_KEY_FILE = 355, - VAR_SERVER_CERT_FILE = 356, - VAR_CONTROL_KEY_FILE = 357, - VAR_CONTROL_CERT_FILE = 358, - VAR_CONTROL_USE_CERT = 359, - VAR_EXTENDED_STATISTICS = 360, - VAR_LOCAL_DATA_PTR = 361, - VAR_JOSTLE_TIMEOUT = 362, - VAR_STUB_PRIME = 363, - VAR_UNWANTED_REPLY_THRESHOLD = 364, - VAR_LOG_TIME_ASCII = 365, - VAR_DOMAIN_INSECURE = 366, - VAR_PYTHON = 367, - VAR_PYTHON_SCRIPT = 368, - VAR_VAL_SIG_SKEW_MIN = 369, - VAR_VAL_SIG_SKEW_MAX = 370, - VAR_CACHE_MIN_TTL = 371, - VAR_VAL_LOG_LEVEL = 372, - VAR_AUTO_TRUST_ANCHOR_FILE = 373, - VAR_KEEP_MISSING = 374, - VAR_ADD_HOLDDOWN = 375, - VAR_DEL_HOLDDOWN = 376, - VAR_SO_RCVBUF = 377, - VAR_EDNS_BUFFER_SIZE = 378, - VAR_PREFETCH = 379, - VAR_PREFETCH_KEY = 380, - VAR_SO_SNDBUF = 381, - VAR_SO_REUSEPORT = 382, - VAR_HARDEN_BELOW_NXDOMAIN = 383, - VAR_IGNORE_CD_FLAG = 384, - VAR_LOG_QUERIES = 385, - VAR_LOG_REPLIES = 386, - VAR_LOG_LOCAL_ACTIONS = 387, - VAR_TCP_UPSTREAM = 388, - VAR_SSL_UPSTREAM = 389, - VAR_SSL_SERVICE_KEY = 390, - VAR_SSL_SERVICE_PEM = 391, - VAR_SSL_PORT = 392, - VAR_FORWARD_FIRST = 393, - VAR_STUB_SSL_UPSTREAM = 394, - VAR_FORWARD_SSL_UPSTREAM = 395, - VAR_TLS_CERT_BUNDLE = 396, - VAR_HTTPS_PORT = 397, - VAR_HTTP_ENDPOINT = 398, - VAR_HTTP_MAX_STREAMS = 399, - VAR_HTTP_QUERY_BUFFER_SIZE = 400, - VAR_HTTP_RESPONSE_BUFFER_SIZE = 401, - VAR_HTTP_NODELAY = 402, - 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_UDP_CONNECT = 409, - VAR_UNBLOCK_LAN_ZONES = 410, - VAR_INSECURE_LAN_ZONES = 411, - VAR_INFRA_CACHE_MIN_RTT = 412, - VAR_INFRA_KEEP_PROBING = 413, - VAR_DNS64_PREFIX = 414, - VAR_DNS64_SYNTHALL = 415, - VAR_DNS64_IGNORE_AAAA = 416, - VAR_DNSTAP = 417, - VAR_DNSTAP_ENABLE = 418, - VAR_DNSTAP_SOCKET_PATH = 419, - VAR_DNSTAP_IP = 420, - VAR_DNSTAP_TLS = 421, - VAR_DNSTAP_TLS_SERVER_NAME = 422, - VAR_DNSTAP_TLS_CERT_BUNDLE = 423, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 424, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 425, - VAR_DNSTAP_SEND_IDENTITY = 426, - VAR_DNSTAP_SEND_VERSION = 427, - VAR_DNSTAP_BIDIRECTIONAL = 428, - VAR_DNSTAP_IDENTITY = 429, - VAR_DNSTAP_VERSION = 430, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 431, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 432, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 433, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 434, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 435, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 436, - VAR_RESPONSE_IP_TAG = 437, - VAR_RESPONSE_IP = 438, - VAR_RESPONSE_IP_DATA = 439, - VAR_HARDEN_ALGO_DOWNGRADE = 440, - VAR_IP_TRANSPARENT = 441, - VAR_IP_DSCP = 442, - VAR_DISABLE_DNSSEC_LAME_CHECK = 443, - VAR_IP_RATELIMIT = 444, - VAR_IP_RATELIMIT_SLABS = 445, - VAR_IP_RATELIMIT_SIZE = 446, - VAR_RATELIMIT = 447, - VAR_RATELIMIT_SLABS = 448, - VAR_RATELIMIT_SIZE = 449, - VAR_RATELIMIT_FOR_DOMAIN = 450, - VAR_RATELIMIT_BELOW_DOMAIN = 451, - VAR_IP_RATELIMIT_FACTOR = 452, - VAR_RATELIMIT_FACTOR = 453, - VAR_SEND_CLIENT_SUBNET = 454, - VAR_CLIENT_SUBNET_ZONE = 455, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 456, - VAR_CLIENT_SUBNET_OPCODE = 457, - VAR_MAX_CLIENT_SUBNET_IPV4 = 458, - VAR_MAX_CLIENT_SUBNET_IPV6 = 459, - VAR_MIN_CLIENT_SUBNET_IPV4 = 460, - VAR_MIN_CLIENT_SUBNET_IPV6 = 461, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 462, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 463, - VAR_CAPS_WHITELIST = 464, - VAR_CACHE_MAX_NEGATIVE_TTL = 465, - VAR_PERMIT_SMALL_HOLDDOWN = 466, - VAR_QNAME_MINIMISATION = 467, - VAR_QNAME_MINIMISATION_STRICT = 468, - VAR_IP_FREEBIND = 469, - VAR_DEFINE_TAG = 470, - VAR_LOCAL_ZONE_TAG = 471, - VAR_ACCESS_CONTROL_TAG = 472, - VAR_LOCAL_ZONE_OVERRIDE = 473, - VAR_ACCESS_CONTROL_TAG_ACTION = 474, - VAR_ACCESS_CONTROL_TAG_DATA = 475, - VAR_VIEW = 476, - VAR_ACCESS_CONTROL_VIEW = 477, - VAR_VIEW_FIRST = 478, - VAR_SERVE_EXPIRED = 479, - VAR_SERVE_EXPIRED_TTL = 480, - VAR_SERVE_EXPIRED_TTL_RESET = 481, - VAR_SERVE_EXPIRED_REPLY_TTL = 482, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 483, - VAR_FAKE_DSA = 484, - VAR_FAKE_SHA1 = 485, - VAR_LOG_IDENTITY = 486, - VAR_HIDE_TRUSTANCHOR = 487, - VAR_TRUST_ANCHOR_SIGNALING = 488, - VAR_AGGRESSIVE_NSEC = 489, - VAR_USE_SYSTEMD = 490, - VAR_SHM_ENABLE = 491, - VAR_SHM_KEY = 492, - VAR_ROOT_KEY_SENTINEL = 493, - VAR_DNSCRYPT = 494, - VAR_DNSCRYPT_ENABLE = 495, - VAR_DNSCRYPT_PORT = 496, - VAR_DNSCRYPT_PROVIDER = 497, - VAR_DNSCRYPT_SECRET_KEY = 498, - VAR_DNSCRYPT_PROVIDER_CERT = 499, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 500, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 501, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 502, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 503, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 504, - VAR_IPSECMOD_ENABLED = 505, - VAR_IPSECMOD_HOOK = 506, - VAR_IPSECMOD_IGNORE_BOGUS = 507, - VAR_IPSECMOD_MAX_TTL = 508, - VAR_IPSECMOD_WHITELIST = 509, - VAR_IPSECMOD_STRICT = 510, - VAR_CACHEDB = 511, - VAR_CACHEDB_BACKEND = 512, - VAR_CACHEDB_SECRETSEED = 513, - VAR_CACHEDB_REDISHOST = 514, - VAR_CACHEDB_REDISPORT = 515, - VAR_CACHEDB_REDISTIMEOUT = 516, - VAR_CACHEDB_REDISEXPIRERECORDS = 517, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 518, - VAR_FOR_UPSTREAM = 519, - VAR_AUTH_ZONE = 520, - VAR_ZONEFILE = 521, - VAR_MASTER = 522, - VAR_URL = 523, - VAR_FOR_DOWNSTREAM = 524, - VAR_FALLBACK_ENABLED = 525, - VAR_TLS_ADDITIONAL_PORT = 526, - VAR_LOW_RTT = 527, - VAR_LOW_RTT_PERMIL = 528, - VAR_FAST_SERVER_PERMIL = 529, - VAR_FAST_SERVER_NUM = 530, - VAR_ALLOW_NOTIFY = 531, - VAR_TLS_WIN_CERT = 532, - VAR_TCP_CONNECTION_LIMIT = 533, - VAR_FORWARD_NO_CACHE = 534, - VAR_STUB_NO_CACHE = 535, - VAR_LOG_SERVFAIL = 536, - VAR_DENY_ANY = 537, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 538, - VAR_LOG_TAG_QUERYREPLY = 539, - VAR_STREAM_WAIT_SIZE = 540, - VAR_TLS_CIPHERS = 541, - VAR_TLS_CIPHERSUITES = 542, - VAR_TLS_USE_SNI = 543, - VAR_IPSET = 544, - VAR_IPSET_NAME_V4 = 545, - VAR_IPSET_NAME_V6 = 546, - VAR_TLS_SESSION_TICKET_KEYS = 547, - VAR_RPZ = 548, - VAR_TAGS = 549, - VAR_RPZ_ACTION_OVERRIDE = 550, - VAR_RPZ_CNAME_OVERRIDE = 551, - VAR_RPZ_LOG = 552, - VAR_RPZ_LOG_NAME = 553, - VAR_DYNLIB = 554, - VAR_DYNLIB_FILE = 555, - VAR_EDNS_CLIENT_STRING = 556, - VAR_EDNS_CLIENT_STRING_OPCODE = 557 + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + SPACE = 258, /* SPACE */ + LETTER = 259, /* LETTER */ + NEWLINE = 260, /* NEWLINE */ + COMMENT = 261, /* COMMENT */ + COLON = 262, /* COLON */ + ANY = 263, /* ANY */ + ZONESTR = 264, /* ZONESTR */ + STRING_ARG = 265, /* STRING_ARG */ + VAR_FORCE_TOPLEVEL = 266, /* VAR_FORCE_TOPLEVEL */ + VAR_SERVER = 267, /* VAR_SERVER */ + VAR_VERBOSITY = 268, /* VAR_VERBOSITY */ + VAR_NUM_THREADS = 269, /* VAR_NUM_THREADS */ + VAR_PORT = 270, /* VAR_PORT */ + VAR_OUTGOING_RANGE = 271, /* VAR_OUTGOING_RANGE */ + VAR_INTERFACE = 272, /* VAR_INTERFACE */ + VAR_PREFER_IP4 = 273, /* VAR_PREFER_IP4 */ + VAR_DO_IP4 = 274, /* VAR_DO_IP4 */ + VAR_DO_IP6 = 275, /* VAR_DO_IP6 */ + VAR_PREFER_IP6 = 276, /* VAR_PREFER_IP6 */ + VAR_DO_UDP = 277, /* VAR_DO_UDP */ + VAR_DO_TCP = 278, /* VAR_DO_TCP */ + VAR_TCP_MSS = 279, /* VAR_TCP_MSS */ + VAR_OUTGOING_TCP_MSS = 280, /* VAR_OUTGOING_TCP_MSS */ + VAR_TCP_IDLE_TIMEOUT = 281, /* VAR_TCP_IDLE_TIMEOUT */ + VAR_EDNS_TCP_KEEPALIVE = 282, /* VAR_EDNS_TCP_KEEPALIVE */ + VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ + VAR_CHROOT = 284, /* VAR_CHROOT */ + VAR_USERNAME = 285, /* VAR_USERNAME */ + VAR_DIRECTORY = 286, /* VAR_DIRECTORY */ + VAR_LOGFILE = 287, /* VAR_LOGFILE */ + VAR_PIDFILE = 288, /* VAR_PIDFILE */ + VAR_MSG_CACHE_SIZE = 289, /* VAR_MSG_CACHE_SIZE */ + VAR_MSG_CACHE_SLABS = 290, /* VAR_MSG_CACHE_SLABS */ + VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD */ + VAR_RRSET_CACHE_SIZE = 292, /* VAR_RRSET_CACHE_SIZE */ + VAR_RRSET_CACHE_SLABS = 293, /* VAR_RRSET_CACHE_SLABS */ + VAR_OUTGOING_NUM_TCP = 294, /* VAR_OUTGOING_NUM_TCP */ + VAR_INFRA_HOST_TTL = 295, /* VAR_INFRA_HOST_TTL */ + VAR_INFRA_LAME_TTL = 296, /* VAR_INFRA_LAME_TTL */ + VAR_INFRA_CACHE_SLABS = 297, /* VAR_INFRA_CACHE_SLABS */ + VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS */ + VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE */ + VAR_NAME = 300, /* VAR_NAME */ + VAR_STUB_ZONE = 301, /* VAR_STUB_ZONE */ + VAR_STUB_HOST = 302, /* VAR_STUB_HOST */ + VAR_STUB_ADDR = 303, /* VAR_STUB_ADDR */ + VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY */ + VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE */ + VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES */ + VAR_FORWARD_ZONE = 307, /* VAR_FORWARD_ZONE */ + VAR_FORWARD_HOST = 308, /* VAR_FORWARD_HOST */ + VAR_FORWARD_ADDR = 309, /* VAR_FORWARD_ADDR */ + VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS */ + VAR_HIDE_IDENTITY = 311, /* VAR_HIDE_IDENTITY */ + VAR_HIDE_VERSION = 312, /* VAR_HIDE_VERSION */ + VAR_IDENTITY = 313, /* VAR_IDENTITY */ + VAR_VERSION = 314, /* VAR_VERSION */ + VAR_HARDEN_GLUE = 315, /* VAR_HARDEN_GLUE */ + VAR_MODULE_CONF = 316, /* VAR_MODULE_CONF */ + VAR_TRUST_ANCHOR_FILE = 317, /* VAR_TRUST_ANCHOR_FILE */ + VAR_TRUST_ANCHOR = 318, /* VAR_TRUST_ANCHOR */ + VAR_VAL_OVERRIDE_DATE = 319, /* VAR_VAL_OVERRIDE_DATE */ + VAR_BOGUS_TTL = 320, /* VAR_BOGUS_TTL */ + VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL */ + VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE */ + VAR_INCOMING_NUM_TCP = 323, /* VAR_INCOMING_NUM_TCP */ + VAR_MSG_BUFFER_SIZE = 324, /* VAR_MSG_BUFFER_SIZE */ + VAR_KEY_CACHE_SIZE = 325, /* VAR_KEY_CACHE_SIZE */ + VAR_KEY_CACHE_SLABS = 326, /* VAR_KEY_CACHE_SLABS */ + VAR_TRUSTED_KEYS_FILE = 327, /* VAR_TRUSTED_KEYS_FILE */ + VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ + VAR_USE_SYSLOG = 329, /* VAR_USE_SYSLOG */ + VAR_OUTGOING_INTERFACE = 330, /* VAR_OUTGOING_INTERFACE */ + VAR_ROOT_HINTS = 331, /* VAR_ROOT_HINTS */ + VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST */ + VAR_CACHE_MAX_TTL = 333, /* VAR_CACHE_MAX_TTL */ + VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED */ + VAR_ACCESS_CONTROL = 335, /* VAR_ACCESS_CONTROL */ + VAR_LOCAL_ZONE = 336, /* VAR_LOCAL_ZONE */ + VAR_LOCAL_DATA = 337, /* VAR_LOCAL_DATA */ + VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC */ + VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL */ + VAR_DO_DAEMONIZE = 340, /* VAR_DO_DAEMONIZE */ + VAR_USE_CAPS_FOR_ID = 341, /* VAR_USE_CAPS_FOR_ID */ + VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE */ + VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT */ + VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID */ + VAR_DLV_ANCHOR_FILE = 345, /* VAR_DLV_ANCHOR_FILE */ + VAR_DLV_ANCHOR = 346, /* VAR_DLV_ANCHOR */ + VAR_NEG_CACHE_SIZE = 347, /* VAR_NEG_CACHE_SIZE */ + VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH */ + VAR_PRIVATE_ADDRESS = 349, /* VAR_PRIVATE_ADDRESS */ + VAR_PRIVATE_DOMAIN = 350, /* VAR_PRIVATE_DOMAIN */ + VAR_REMOTE_CONTROL = 351, /* VAR_REMOTE_CONTROL */ + VAR_CONTROL_ENABLE = 352, /* VAR_CONTROL_ENABLE */ + VAR_CONTROL_INTERFACE = 353, /* VAR_CONTROL_INTERFACE */ + VAR_CONTROL_PORT = 354, /* VAR_CONTROL_PORT */ + VAR_SERVER_KEY_FILE = 355, /* VAR_SERVER_KEY_FILE */ + VAR_SERVER_CERT_FILE = 356, /* VAR_SERVER_CERT_FILE */ + VAR_CONTROL_KEY_FILE = 357, /* VAR_CONTROL_KEY_FILE */ + VAR_CONTROL_CERT_FILE = 358, /* VAR_CONTROL_CERT_FILE */ + VAR_CONTROL_USE_CERT = 359, /* VAR_CONTROL_USE_CERT */ + VAR_EXTENDED_STATISTICS = 360, /* VAR_EXTENDED_STATISTICS */ + VAR_LOCAL_DATA_PTR = 361, /* VAR_LOCAL_DATA_PTR */ + VAR_JOSTLE_TIMEOUT = 362, /* VAR_JOSTLE_TIMEOUT */ + VAR_STUB_PRIME = 363, /* VAR_STUB_PRIME */ + VAR_UNWANTED_REPLY_THRESHOLD = 364, /* VAR_UNWANTED_REPLY_THRESHOLD */ + VAR_LOG_TIME_ASCII = 365, /* VAR_LOG_TIME_ASCII */ + VAR_DOMAIN_INSECURE = 366, /* VAR_DOMAIN_INSECURE */ + VAR_PYTHON = 367, /* VAR_PYTHON */ + VAR_PYTHON_SCRIPT = 368, /* VAR_PYTHON_SCRIPT */ + VAR_VAL_SIG_SKEW_MIN = 369, /* VAR_VAL_SIG_SKEW_MIN */ + VAR_VAL_SIG_SKEW_MAX = 370, /* VAR_VAL_SIG_SKEW_MAX */ + VAR_CACHE_MIN_TTL = 371, /* VAR_CACHE_MIN_TTL */ + VAR_VAL_LOG_LEVEL = 372, /* VAR_VAL_LOG_LEVEL */ + VAR_AUTO_TRUST_ANCHOR_FILE = 373, /* VAR_AUTO_TRUST_ANCHOR_FILE */ + VAR_KEEP_MISSING = 374, /* VAR_KEEP_MISSING */ + VAR_ADD_HOLDDOWN = 375, /* VAR_ADD_HOLDDOWN */ + VAR_DEL_HOLDDOWN = 376, /* VAR_DEL_HOLDDOWN */ + VAR_SO_RCVBUF = 377, /* VAR_SO_RCVBUF */ + VAR_EDNS_BUFFER_SIZE = 378, /* VAR_EDNS_BUFFER_SIZE */ + VAR_PREFETCH = 379, /* VAR_PREFETCH */ + VAR_PREFETCH_KEY = 380, /* VAR_PREFETCH_KEY */ + VAR_SO_SNDBUF = 381, /* VAR_SO_SNDBUF */ + VAR_SO_REUSEPORT = 382, /* VAR_SO_REUSEPORT */ + VAR_HARDEN_BELOW_NXDOMAIN = 383, /* VAR_HARDEN_BELOW_NXDOMAIN */ + VAR_IGNORE_CD_FLAG = 384, /* VAR_IGNORE_CD_FLAG */ + VAR_LOG_QUERIES = 385, /* VAR_LOG_QUERIES */ + VAR_LOG_REPLIES = 386, /* VAR_LOG_REPLIES */ + VAR_LOG_LOCAL_ACTIONS = 387, /* VAR_LOG_LOCAL_ACTIONS */ + VAR_TCP_UPSTREAM = 388, /* VAR_TCP_UPSTREAM */ + VAR_SSL_UPSTREAM = 389, /* VAR_SSL_UPSTREAM */ + VAR_SSL_SERVICE_KEY = 390, /* VAR_SSL_SERVICE_KEY */ + VAR_SSL_SERVICE_PEM = 391, /* VAR_SSL_SERVICE_PEM */ + VAR_SSL_PORT = 392, /* VAR_SSL_PORT */ + VAR_FORWARD_FIRST = 393, /* VAR_FORWARD_FIRST */ + VAR_STUB_SSL_UPSTREAM = 394, /* VAR_STUB_SSL_UPSTREAM */ + VAR_FORWARD_SSL_UPSTREAM = 395, /* VAR_FORWARD_SSL_UPSTREAM */ + VAR_TLS_CERT_BUNDLE = 396, /* VAR_TLS_CERT_BUNDLE */ + VAR_HTTPS_PORT = 397, /* VAR_HTTPS_PORT */ + VAR_HTTP_ENDPOINT = 398, /* VAR_HTTP_ENDPOINT */ + VAR_HTTP_MAX_STREAMS = 399, /* VAR_HTTP_MAX_STREAMS */ + VAR_HTTP_QUERY_BUFFER_SIZE = 400, /* VAR_HTTP_QUERY_BUFFER_SIZE */ + VAR_HTTP_RESPONSE_BUFFER_SIZE = 401, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ + VAR_HTTP_NODELAY = 402, /* VAR_HTTP_NODELAY */ + VAR_HTTP_NOTLS_DOWNSTREAM = 403, /* VAR_HTTP_NOTLS_DOWNSTREAM */ + VAR_STUB_FIRST = 404, /* VAR_STUB_FIRST */ + VAR_MINIMAL_RESPONSES = 405, /* VAR_MINIMAL_RESPONSES */ + VAR_RRSET_ROUNDROBIN = 406, /* VAR_RRSET_ROUNDROBIN */ + VAR_MAX_UDP_SIZE = 407, /* VAR_MAX_UDP_SIZE */ + VAR_DELAY_CLOSE = 408, /* VAR_DELAY_CLOSE */ + VAR_UDP_CONNECT = 409, /* VAR_UDP_CONNECT */ + VAR_UNBLOCK_LAN_ZONES = 410, /* VAR_UNBLOCK_LAN_ZONES */ + VAR_INSECURE_LAN_ZONES = 411, /* VAR_INSECURE_LAN_ZONES */ + VAR_INFRA_CACHE_MIN_RTT = 412, /* VAR_INFRA_CACHE_MIN_RTT */ + VAR_INFRA_KEEP_PROBING = 413, /* VAR_INFRA_KEEP_PROBING */ + VAR_DNS64_PREFIX = 414, /* VAR_DNS64_PREFIX */ + VAR_DNS64_SYNTHALL = 415, /* VAR_DNS64_SYNTHALL */ + VAR_DNS64_IGNORE_AAAA = 416, /* VAR_DNS64_IGNORE_AAAA */ + VAR_DNSTAP = 417, /* VAR_DNSTAP */ + VAR_DNSTAP_ENABLE = 418, /* VAR_DNSTAP_ENABLE */ + VAR_DNSTAP_SOCKET_PATH = 419, /* VAR_DNSTAP_SOCKET_PATH */ + VAR_DNSTAP_IP = 420, /* VAR_DNSTAP_IP */ + VAR_DNSTAP_TLS = 421, /* VAR_DNSTAP_TLS */ + VAR_DNSTAP_TLS_SERVER_NAME = 422, /* VAR_DNSTAP_TLS_SERVER_NAME */ + VAR_DNSTAP_TLS_CERT_BUNDLE = 423, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 424, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 425, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ + VAR_DNSTAP_SEND_IDENTITY = 426, /* VAR_DNSTAP_SEND_IDENTITY */ + VAR_DNSTAP_SEND_VERSION = 427, /* VAR_DNSTAP_SEND_VERSION */ + VAR_DNSTAP_BIDIRECTIONAL = 428, /* VAR_DNSTAP_BIDIRECTIONAL */ + VAR_DNSTAP_IDENTITY = 429, /* VAR_DNSTAP_IDENTITY */ + VAR_DNSTAP_VERSION = 430, /* VAR_DNSTAP_VERSION */ + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 431, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 432, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 433, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 434, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 435, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 436, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ + VAR_RESPONSE_IP_TAG = 437, /* VAR_RESPONSE_IP_TAG */ + VAR_RESPONSE_IP = 438, /* VAR_RESPONSE_IP */ + VAR_RESPONSE_IP_DATA = 439, /* VAR_RESPONSE_IP_DATA */ + VAR_HARDEN_ALGO_DOWNGRADE = 440, /* VAR_HARDEN_ALGO_DOWNGRADE */ + VAR_IP_TRANSPARENT = 441, /* VAR_IP_TRANSPARENT */ + VAR_IP_DSCP = 442, /* VAR_IP_DSCP */ + VAR_DISABLE_DNSSEC_LAME_CHECK = 443, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ + VAR_IP_RATELIMIT = 444, /* VAR_IP_RATELIMIT */ + VAR_IP_RATELIMIT_SLABS = 445, /* VAR_IP_RATELIMIT_SLABS */ + VAR_IP_RATELIMIT_SIZE = 446, /* VAR_IP_RATELIMIT_SIZE */ + VAR_RATELIMIT = 447, /* VAR_RATELIMIT */ + VAR_RATELIMIT_SLABS = 448, /* VAR_RATELIMIT_SLABS */ + VAR_RATELIMIT_SIZE = 449, /* VAR_RATELIMIT_SIZE */ + VAR_RATELIMIT_FOR_DOMAIN = 450, /* VAR_RATELIMIT_FOR_DOMAIN */ + VAR_RATELIMIT_BELOW_DOMAIN = 451, /* VAR_RATELIMIT_BELOW_DOMAIN */ + VAR_IP_RATELIMIT_FACTOR = 452, /* VAR_IP_RATELIMIT_FACTOR */ + VAR_RATELIMIT_FACTOR = 453, /* VAR_RATELIMIT_FACTOR */ + VAR_SEND_CLIENT_SUBNET = 454, /* VAR_SEND_CLIENT_SUBNET */ + VAR_CLIENT_SUBNET_ZONE = 455, /* VAR_CLIENT_SUBNET_ZONE */ + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 456, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + VAR_CLIENT_SUBNET_OPCODE = 457, /* VAR_CLIENT_SUBNET_OPCODE */ + VAR_MAX_CLIENT_SUBNET_IPV4 = 458, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + VAR_MAX_CLIENT_SUBNET_IPV6 = 459, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + VAR_MIN_CLIENT_SUBNET_IPV4 = 460, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + VAR_MIN_CLIENT_SUBNET_IPV6 = 461, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + VAR_MAX_ECS_TREE_SIZE_IPV4 = 462, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + VAR_MAX_ECS_TREE_SIZE_IPV6 = 463, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + VAR_CAPS_WHITELIST = 464, /* VAR_CAPS_WHITELIST */ + VAR_CACHE_MAX_NEGATIVE_TTL = 465, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + VAR_PERMIT_SMALL_HOLDDOWN = 466, /* VAR_PERMIT_SMALL_HOLDDOWN */ + VAR_QNAME_MINIMISATION = 467, /* VAR_QNAME_MINIMISATION */ + VAR_QNAME_MINIMISATION_STRICT = 468, /* VAR_QNAME_MINIMISATION_STRICT */ + VAR_IP_FREEBIND = 469, /* VAR_IP_FREEBIND */ + VAR_DEFINE_TAG = 470, /* VAR_DEFINE_TAG */ + VAR_LOCAL_ZONE_TAG = 471, /* VAR_LOCAL_ZONE_TAG */ + VAR_ACCESS_CONTROL_TAG = 472, /* VAR_ACCESS_CONTROL_TAG */ + VAR_LOCAL_ZONE_OVERRIDE = 473, /* VAR_LOCAL_ZONE_OVERRIDE */ + VAR_ACCESS_CONTROL_TAG_ACTION = 474, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + VAR_ACCESS_CONTROL_TAG_DATA = 475, /* VAR_ACCESS_CONTROL_TAG_DATA */ + VAR_VIEW = 476, /* VAR_VIEW */ + VAR_ACCESS_CONTROL_VIEW = 477, /* VAR_ACCESS_CONTROL_VIEW */ + VAR_VIEW_FIRST = 478, /* VAR_VIEW_FIRST */ + VAR_SERVE_EXPIRED = 479, /* VAR_SERVE_EXPIRED */ + VAR_SERVE_EXPIRED_TTL = 480, /* VAR_SERVE_EXPIRED_TTL */ + VAR_SERVE_EXPIRED_TTL_RESET = 481, /* VAR_SERVE_EXPIRED_TTL_RESET */ + VAR_SERVE_EXPIRED_REPLY_TTL = 482, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 483, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + VAR_SERVE_ORIGINAL_TTL = 484, /* VAR_SERVE_ORIGINAL_TTL */ + VAR_FAKE_DSA = 485, /* VAR_FAKE_DSA */ + VAR_FAKE_SHA1 = 486, /* VAR_FAKE_SHA1 */ + VAR_LOG_IDENTITY = 487, /* VAR_LOG_IDENTITY */ + VAR_HIDE_TRUSTANCHOR = 488, /* VAR_HIDE_TRUSTANCHOR */ + VAR_TRUST_ANCHOR_SIGNALING = 489, /* VAR_TRUST_ANCHOR_SIGNALING */ + VAR_AGGRESSIVE_NSEC = 490, /* VAR_AGGRESSIVE_NSEC */ + VAR_USE_SYSTEMD = 491, /* VAR_USE_SYSTEMD */ + VAR_SHM_ENABLE = 492, /* VAR_SHM_ENABLE */ + VAR_SHM_KEY = 493, /* VAR_SHM_KEY */ + VAR_ROOT_KEY_SENTINEL = 494, /* VAR_ROOT_KEY_SENTINEL */ + VAR_DNSCRYPT = 495, /* VAR_DNSCRYPT */ + VAR_DNSCRYPT_ENABLE = 496, /* VAR_DNSCRYPT_ENABLE */ + VAR_DNSCRYPT_PORT = 497, /* VAR_DNSCRYPT_PORT */ + VAR_DNSCRYPT_PROVIDER = 498, /* VAR_DNSCRYPT_PROVIDER */ + VAR_DNSCRYPT_SECRET_KEY = 499, /* VAR_DNSCRYPT_SECRET_KEY */ + VAR_DNSCRYPT_PROVIDER_CERT = 500, /* VAR_DNSCRYPT_PROVIDER_CERT */ + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 501, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 502, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 503, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 504, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 505, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + VAR_PAD_RESPONSES = 506, /* VAR_PAD_RESPONSES */ + VAR_PAD_RESPONSES_BLOCK_SIZE = 507, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + VAR_PAD_QUERIES = 508, /* VAR_PAD_QUERIES */ + VAR_PAD_QUERIES_BLOCK_SIZE = 509, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + VAR_IPSECMOD_ENABLED = 510, /* VAR_IPSECMOD_ENABLED */ + VAR_IPSECMOD_HOOK = 511, /* VAR_IPSECMOD_HOOK */ + VAR_IPSECMOD_IGNORE_BOGUS = 512, /* VAR_IPSECMOD_IGNORE_BOGUS */ + VAR_IPSECMOD_MAX_TTL = 513, /* VAR_IPSECMOD_MAX_TTL */ + VAR_IPSECMOD_WHITELIST = 514, /* VAR_IPSECMOD_WHITELIST */ + VAR_IPSECMOD_STRICT = 515, /* VAR_IPSECMOD_STRICT */ + VAR_CACHEDB = 516, /* VAR_CACHEDB */ + VAR_CACHEDB_BACKEND = 517, /* VAR_CACHEDB_BACKEND */ + VAR_CACHEDB_SECRETSEED = 518, /* VAR_CACHEDB_SECRETSEED */ + VAR_CACHEDB_REDISHOST = 519, /* VAR_CACHEDB_REDISHOST */ + VAR_CACHEDB_REDISPORT = 520, /* VAR_CACHEDB_REDISPORT */ + VAR_CACHEDB_REDISTIMEOUT = 521, /* VAR_CACHEDB_REDISTIMEOUT */ + VAR_CACHEDB_REDISEXPIRERECORDS = 522, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 523, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + VAR_FOR_UPSTREAM = 524, /* VAR_FOR_UPSTREAM */ + VAR_AUTH_ZONE = 525, /* VAR_AUTH_ZONE */ + VAR_ZONEFILE = 526, /* VAR_ZONEFILE */ + VAR_MASTER = 527, /* VAR_MASTER */ + VAR_URL = 528, /* VAR_URL */ + VAR_FOR_DOWNSTREAM = 529, /* VAR_FOR_DOWNSTREAM */ + VAR_FALLBACK_ENABLED = 530, /* VAR_FALLBACK_ENABLED */ + VAR_TLS_ADDITIONAL_PORT = 531, /* VAR_TLS_ADDITIONAL_PORT */ + VAR_LOW_RTT = 532, /* VAR_LOW_RTT */ + VAR_LOW_RTT_PERMIL = 533, /* VAR_LOW_RTT_PERMIL */ + VAR_FAST_SERVER_PERMIL = 534, /* VAR_FAST_SERVER_PERMIL */ + VAR_FAST_SERVER_NUM = 535, /* VAR_FAST_SERVER_NUM */ + VAR_ALLOW_NOTIFY = 536, /* VAR_ALLOW_NOTIFY */ + VAR_TLS_WIN_CERT = 537, /* VAR_TLS_WIN_CERT */ + VAR_TCP_CONNECTION_LIMIT = 538, /* VAR_TCP_CONNECTION_LIMIT */ + VAR_FORWARD_NO_CACHE = 539, /* VAR_FORWARD_NO_CACHE */ + VAR_STUB_NO_CACHE = 540, /* VAR_STUB_NO_CACHE */ + VAR_LOG_SERVFAIL = 541, /* VAR_LOG_SERVFAIL */ + VAR_DENY_ANY = 542, /* VAR_DENY_ANY */ + VAR_UNKNOWN_SERVER_TIME_LIMIT = 543, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + VAR_LOG_TAG_QUERYREPLY = 544, /* VAR_LOG_TAG_QUERYREPLY */ + VAR_STREAM_WAIT_SIZE = 545, /* VAR_STREAM_WAIT_SIZE */ + VAR_TLS_CIPHERS = 546, /* VAR_TLS_CIPHERS */ + VAR_TLS_CIPHERSUITES = 547, /* VAR_TLS_CIPHERSUITES */ + VAR_TLS_USE_SNI = 548, /* VAR_TLS_USE_SNI */ + VAR_IPSET = 549, /* VAR_IPSET */ + VAR_IPSET_NAME_V4 = 550, /* VAR_IPSET_NAME_V4 */ + VAR_IPSET_NAME_V6 = 551, /* VAR_IPSET_NAME_V6 */ + VAR_TLS_SESSION_TICKET_KEYS = 552, /* VAR_TLS_SESSION_TICKET_KEYS */ + VAR_RPZ = 553, /* VAR_RPZ */ + VAR_TAGS = 554, /* VAR_TAGS */ + VAR_RPZ_ACTION_OVERRIDE = 555, /* VAR_RPZ_ACTION_OVERRIDE */ + VAR_RPZ_CNAME_OVERRIDE = 556, /* VAR_RPZ_CNAME_OVERRIDE */ + VAR_RPZ_LOG = 557, /* VAR_RPZ_LOG */ + VAR_RPZ_LOG_NAME = 558, /* VAR_RPZ_LOG_NAME */ + VAR_DYNLIB = 559, /* VAR_DYNLIB */ + VAR_DYNLIB_FILE = 560, /* VAR_DYNLIB_FILE */ + VAR_EDNS_CLIENT_STRING = 561, /* VAR_EDNS_CLIENT_STRING */ + VAR_EDNS_CLIENT_STRING_OPCODE = 562, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + VAR_NSID = 563 /* VAR_NSID */ }; + typedef enum yytokentype yytoken_kind_t; #endif -/* Tokens. */ +/* Token kinds. */ +#define YYEOF 0 +#define YYerror 256 +#define YYUNDEF 257 #define SPACE 258 #define LETTER 259 #define NEWLINE 260 @@ -578,80 +593,86 @@ extern int yydebug; #define VAR_SERVE_EXPIRED_TTL_RESET 481 #define VAR_SERVE_EXPIRED_REPLY_TTL 482 #define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 483 -#define VAR_FAKE_DSA 484 -#define VAR_FAKE_SHA1 485 -#define VAR_LOG_IDENTITY 486 -#define VAR_HIDE_TRUSTANCHOR 487 -#define VAR_TRUST_ANCHOR_SIGNALING 488 -#define VAR_AGGRESSIVE_NSEC 489 -#define VAR_USE_SYSTEMD 490 -#define VAR_SHM_ENABLE 491 -#define VAR_SHM_KEY 492 -#define VAR_ROOT_KEY_SENTINEL 493 -#define VAR_DNSCRYPT 494 -#define VAR_DNSCRYPT_ENABLE 495 -#define VAR_DNSCRYPT_PORT 496 -#define VAR_DNSCRYPT_PROVIDER 497 -#define VAR_DNSCRYPT_SECRET_KEY 498 -#define VAR_DNSCRYPT_PROVIDER_CERT 499 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 500 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 501 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 502 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 503 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 504 -#define VAR_IPSECMOD_ENABLED 505 -#define VAR_IPSECMOD_HOOK 506 -#define VAR_IPSECMOD_IGNORE_BOGUS 507 -#define VAR_IPSECMOD_MAX_TTL 508 -#define VAR_IPSECMOD_WHITELIST 509 -#define VAR_IPSECMOD_STRICT 510 -#define VAR_CACHEDB 511 -#define VAR_CACHEDB_BACKEND 512 -#define VAR_CACHEDB_SECRETSEED 513 -#define VAR_CACHEDB_REDISHOST 514 -#define VAR_CACHEDB_REDISPORT 515 -#define VAR_CACHEDB_REDISTIMEOUT 516 -#define VAR_CACHEDB_REDISEXPIRERECORDS 517 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 518 -#define VAR_FOR_UPSTREAM 519 -#define VAR_AUTH_ZONE 520 -#define VAR_ZONEFILE 521 -#define VAR_MASTER 522 -#define VAR_URL 523 -#define VAR_FOR_DOWNSTREAM 524 -#define VAR_FALLBACK_ENABLED 525 -#define VAR_TLS_ADDITIONAL_PORT 526 -#define VAR_LOW_RTT 527 -#define VAR_LOW_RTT_PERMIL 528 -#define VAR_FAST_SERVER_PERMIL 529 -#define VAR_FAST_SERVER_NUM 530 -#define VAR_ALLOW_NOTIFY 531 -#define VAR_TLS_WIN_CERT 532 -#define VAR_TCP_CONNECTION_LIMIT 533 -#define VAR_FORWARD_NO_CACHE 534 -#define VAR_STUB_NO_CACHE 535 -#define VAR_LOG_SERVFAIL 536 -#define VAR_DENY_ANY 537 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 538 -#define VAR_LOG_TAG_QUERYREPLY 539 -#define VAR_STREAM_WAIT_SIZE 540 -#define VAR_TLS_CIPHERS 541 -#define VAR_TLS_CIPHERSUITES 542 -#define VAR_TLS_USE_SNI 543 -#define VAR_IPSET 544 -#define VAR_IPSET_NAME_V4 545 -#define VAR_IPSET_NAME_V6 546 -#define VAR_TLS_SESSION_TICKET_KEYS 547 -#define VAR_RPZ 548 -#define VAR_TAGS 549 -#define VAR_RPZ_ACTION_OVERRIDE 550 -#define VAR_RPZ_CNAME_OVERRIDE 551 -#define VAR_RPZ_LOG 552 -#define VAR_RPZ_LOG_NAME 553 -#define VAR_DYNLIB 554 -#define VAR_DYNLIB_FILE 555 -#define VAR_EDNS_CLIENT_STRING 556 -#define VAR_EDNS_CLIENT_STRING_OPCODE 557 +#define VAR_SERVE_ORIGINAL_TTL 484 +#define VAR_FAKE_DSA 485 +#define VAR_FAKE_SHA1 486 +#define VAR_LOG_IDENTITY 487 +#define VAR_HIDE_TRUSTANCHOR 488 +#define VAR_TRUST_ANCHOR_SIGNALING 489 +#define VAR_AGGRESSIVE_NSEC 490 +#define VAR_USE_SYSTEMD 491 +#define VAR_SHM_ENABLE 492 +#define VAR_SHM_KEY 493 +#define VAR_ROOT_KEY_SENTINEL 494 +#define VAR_DNSCRYPT 495 +#define VAR_DNSCRYPT_ENABLE 496 +#define VAR_DNSCRYPT_PORT 497 +#define VAR_DNSCRYPT_PROVIDER 498 +#define VAR_DNSCRYPT_SECRET_KEY 499 +#define VAR_DNSCRYPT_PROVIDER_CERT 500 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 501 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 502 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 503 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 504 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 505 +#define VAR_PAD_RESPONSES 506 +#define VAR_PAD_RESPONSES_BLOCK_SIZE 507 +#define VAR_PAD_QUERIES 508 +#define VAR_PAD_QUERIES_BLOCK_SIZE 509 +#define VAR_IPSECMOD_ENABLED 510 +#define VAR_IPSECMOD_HOOK 511 +#define VAR_IPSECMOD_IGNORE_BOGUS 512 +#define VAR_IPSECMOD_MAX_TTL 513 +#define VAR_IPSECMOD_WHITELIST 514 +#define VAR_IPSECMOD_STRICT 515 +#define VAR_CACHEDB 516 +#define VAR_CACHEDB_BACKEND 517 +#define VAR_CACHEDB_SECRETSEED 518 +#define VAR_CACHEDB_REDISHOST 519 +#define VAR_CACHEDB_REDISPORT 520 +#define VAR_CACHEDB_REDISTIMEOUT 521 +#define VAR_CACHEDB_REDISEXPIRERECORDS 522 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 523 +#define VAR_FOR_UPSTREAM 524 +#define VAR_AUTH_ZONE 525 +#define VAR_ZONEFILE 526 +#define VAR_MASTER 527 +#define VAR_URL 528 +#define VAR_FOR_DOWNSTREAM 529 +#define VAR_FALLBACK_ENABLED 530 +#define VAR_TLS_ADDITIONAL_PORT 531 +#define VAR_LOW_RTT 532 +#define VAR_LOW_RTT_PERMIL 533 +#define VAR_FAST_SERVER_PERMIL 534 +#define VAR_FAST_SERVER_NUM 535 +#define VAR_ALLOW_NOTIFY 536 +#define VAR_TLS_WIN_CERT 537 +#define VAR_TCP_CONNECTION_LIMIT 538 +#define VAR_FORWARD_NO_CACHE 539 +#define VAR_STUB_NO_CACHE 540 +#define VAR_LOG_SERVFAIL 541 +#define VAR_DENY_ANY 542 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 543 +#define VAR_LOG_TAG_QUERYREPLY 544 +#define VAR_STREAM_WAIT_SIZE 545 +#define VAR_TLS_CIPHERS 546 +#define VAR_TLS_CIPHERSUITES 547 +#define VAR_TLS_USE_SNI 548 +#define VAR_IPSET 549 +#define VAR_IPSET_NAME_V4 550 +#define VAR_IPSET_NAME_V6 551 +#define VAR_TLS_SESSION_TICKET_KEYS 552 +#define VAR_RPZ 553 +#define VAR_TAGS 554 +#define VAR_RPZ_ACTION_OVERRIDE 555 +#define VAR_RPZ_CNAME_OVERRIDE 556 +#define VAR_RPZ_LOG 557 +#define VAR_RPZ_LOG_NAME 558 +#define VAR_DYNLIB 559 +#define VAR_DYNLIB_FILE 560 +#define VAR_EDNS_CLIENT_STRING 561 +#define VAR_EDNS_CLIENT_STRING_OPCODE 562 +#define VAR_NSID 563 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -661,7 +682,7 @@ union YYSTYPE char* str; -#line 665 "util/configparser.h" +#line 686 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index 4d6b5e3fba31..272a97969397 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -151,7 +151,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_ACCESS_CONTROL_TAG_DATA VAR_VIEW VAR_ACCESS_CONTROL_VIEW %token VAR_VIEW_FIRST VAR_SERVE_EXPIRED VAR_SERVE_EXPIRED_TTL %token VAR_SERVE_EXPIRED_TTL_RESET VAR_SERVE_EXPIRED_REPLY_TTL -%token VAR_SERVE_EXPIRED_CLIENT_TIMEOUT VAR_FAKE_DSA +%token VAR_SERVE_EXPIRED_CLIENT_TIMEOUT VAR_SERVE_ORIGINAL_TTL VAR_FAKE_DSA %token VAR_FAKE_SHA1 VAR_LOG_IDENTITY VAR_HIDE_TRUSTANCHOR %token VAR_TRUST_ANCHOR_SIGNALING VAR_AGGRESSIVE_NSEC VAR_USE_SYSTEMD %token VAR_SHM_ENABLE VAR_SHM_KEY VAR_ROOT_KEY_SENTINEL @@ -162,6 +162,8 @@ extern struct config_parser_state* cfg_parser; %token VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS %token VAR_DNSCRYPT_NONCE_CACHE_SIZE %token VAR_DNSCRYPT_NONCE_CACHE_SLABS +%token VAR_PAD_RESPONSES VAR_PAD_RESPONSES_BLOCK_SIZE +%token VAR_PAD_QUERIES VAR_PAD_QUERIES_BLOCK_SIZE %token VAR_IPSECMOD_ENABLED VAR_IPSECMOD_HOOK VAR_IPSECMOD_IGNORE_BOGUS %token VAR_IPSECMOD_MAX_TTL VAR_IPSECMOD_WHITELIST VAR_IPSECMOD_STRICT %token VAR_CACHEDB VAR_CACHEDB_BACKEND VAR_CACHEDB_SECRETSEED @@ -179,7 +181,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_TLS_SESSION_TICKET_KEYS VAR_RPZ VAR_TAGS VAR_RPZ_ACTION_OVERRIDE %token VAR_RPZ_CNAME_OVERRIDE VAR_RPZ_LOG VAR_RPZ_LOG_NAME %token VAR_DYNLIB VAR_DYNLIB_FILE VAR_EDNS_CLIENT_STRING -%token VAR_EDNS_CLIENT_STRING_OPCODE +%token VAR_EDNS_CLIENT_STRING_OPCODE VAR_NSID %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -274,10 +276,14 @@ content_server: server_num_threads | server_verbosity | server_port | server_disable_dnssec_lame_check | server_access_control_tag | server_local_zone_override | server_access_control_tag_action | server_access_control_tag_data | server_access_control_view | - server_qname_minimisation_strict | server_serve_expired | + server_qname_minimisation_strict | + server_pad_responses | server_pad_responses_block_size | + server_pad_queries | server_pad_queries_block_size | + 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_log_identity | server_use_systemd | + server_serve_original_ttl | server_fake_dsa | + server_log_identity | server_use_systemd | server_response_ip_tag | server_response_ip | server_response_ip_data | server_shm_enable | server_shm_key | server_fake_sha1 | server_hide_trustanchor | server_trust_anchor_signaling | @@ -293,7 +299,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_stream_wait_size | server_tls_ciphers | server_tls_ciphersuites | server_tls_session_ticket_keys | server_tls_use_sni | server_edns_client_string | - server_edns_client_string_opcode + server_edns_client_string_opcode | server_nsid ; stubstart: VAR_STUB_ZONE { @@ -1304,6 +1310,22 @@ server_version: VAR_VERSION STRING_ARG cfg_parser->cfg->version = $2; } ; +server_nsid: VAR_NSID STRING_ARG + { + OUTYY(("P(server_nsid:%s)\n", $2)); + free(cfg_parser->cfg->nsid_cfg_str); + cfg_parser->cfg->nsid_cfg_str = $2; + free(cfg_parser->cfg->nsid); + cfg_parser->cfg->nsid = NULL; + cfg_parser->cfg->nsid_len = 0; + if (*$2 == 0) + ; /* pass; empty string is not setting nsid */ + else if (!(cfg_parser->cfg->nsid = cfg_parse_nsid( + $2, &cfg_parser->cfg->nsid_len))) + yyerror("the NSID must be either a hex string or an " + "ascii character string prepended with ascii_."); + } + ; server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG { OUTYY(("P(server_so_rcvbuf:%s)\n", $2)); @@ -1913,6 +1935,15 @@ server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG free($2); } ; +server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG + { + OUTYY(("P(server_serve_original_ttl:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->serve_original_ttl = (strcmp($2, "yes")==0); + free($2); + } + ; server_fake_dsa: VAR_FAKE_DSA STRING_ARG { OUTYY(("P(server_fake_dsa:%s)\n", $2)); @@ -2030,6 +2061,9 @@ server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG && strcmp($3, "always_transparent")!=0 && strcmp($3, "always_refuse")!=0 && strcmp($3, "always_nxdomain")!=0 + && strcmp($3, "always_nodata")!=0 + && strcmp($3, "always_deny")!=0 + && strcmp($3, "always_null")!=0 && strcmp($3, "noview")!=0 && strcmp($3, "inform")!=0 && strcmp($3, "inform_deny")!=0 && strcmp($3, "inform_redirect") != 0 @@ -2038,8 +2072,9 @@ server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG "refuse, redirect, transparent, " "typetransparent, inform, inform_deny, " "inform_redirect, always_transparent, " - "always_refuse, always_nxdomain, noview " - ", nodefault or ipset"); + "always_refuse, always_nxdomain, " + "always_nodata, always_deny, always_null, " + "noview, nodefault or ipset"); free($2); free($3); } else if(strcmp($3, "nodefault")==0) { @@ -2416,6 +2451,44 @@ server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG free($2); } ; +server_pad_responses: VAR_PAD_RESPONSES STRING_ARG + { + OUTYY(("P(server_pad_responses:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->pad_responses = + (strcmp($2, "yes")==0); + free($2); + } + ; +server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG + { + OUTYY(("P(server_pad_responses_block_size:%s)\n", $2)); + if(atoi($2) == 0) + yyerror("number expected"); + else cfg_parser->cfg->pad_responses_block_size = atoi($2); + free($2); + } + ; +server_pad_queries: VAR_PAD_QUERIES STRING_ARG + { + OUTYY(("P(server_pad_queries:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->pad_queries = + (strcmp($2, "yes")==0); + free($2); + } + ; +server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG + { + OUTYY(("P(server_pad_queries_block_size:%s)\n", $2)); + if(atoi($2) == 0) + yyerror("number expected"); + else cfg_parser->cfg->pad_queries_block_size = atoi($2); + free($2); + } + ; server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG { #ifdef USE_IPSECMOD diff --git a/util/configyyrename.h b/util/configyyrename.h index f529be577277..8c7ff5b5c95a 100644 --- a/util/configyyrename.h +++ b/util/configyyrename.h @@ -84,5 +84,11 @@ #define yyget_leng ub_c_get_leng #define yylineno ub_c_lineno #define yyget_text ub_c_get_text +#define yyss ub_c_ss +#define yysslim ub_c_sslim +#define yyssp ub_c_ssp +#define yystacksize ub_c_stacksize +#define yyvs ub_c_vs +#define yyvsp ub_c_vsp #endif /* UTIL_CONFIGYYRENAME_H */ diff --git a/util/data/msgencode.c b/util/data/msgencode.c index 1746cfbb8fab..5f297b551bfb 100644 --- a/util/data/msgencode.c +++ b/util/data/msgencode.c @@ -454,6 +454,7 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt, size_t i, j, owner_pos; int r, owner_labs; uint16_t owner_ptr = 0; + time_t adjust = 0; struct packed_rrset_data* data = (struct packed_rrset_data*) key->entry.data; @@ -464,9 +465,12 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt, owner_labs = dname_count_labels(key->rk.dname); owner_pos = sldns_buffer_position(pkt); - /* For an rrset with a fixed TTL, use the rrset's TTL as given */ + /** Determine relative time adjustment for TTL values. + * For an rrset with a fixed TTL, use the rrset's TTL as given. */ if((key->rk.flags & PACKED_RRSET_FIXEDTTL) != 0) - timenow = 0; + adjust = 0; + else + adjust = SERVE_ORIGINAL_TTL ? data->ttl_add : timenow; if(do_data) { const sldns_rr_descriptor* c = type_rdata_compressable(key); @@ -479,11 +483,10 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt, return r; sldns_buffer_write(pkt, &key->rk.type, 2); sldns_buffer_write(pkt, &key->rk.rrset_class, 2); - if(data->rr_ttl[j] < timenow) + if(data->rr_ttl[j] < adjust) sldns_buffer_write_u32(pkt, SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0); - else sldns_buffer_write_u32(pkt, - data->rr_ttl[j]-timenow); + else sldns_buffer_write_u32(pkt, data->rr_ttl[j]-adjust); if(c) { if((r=compress_rdata(pkt, data->rr_data[j], data->rr_len[j], region, tree, c)) @@ -517,11 +520,10 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt, } sldns_buffer_write_u16(pkt, LDNS_RR_TYPE_RRSIG); sldns_buffer_write(pkt, &key->rk.rrset_class, 2); - if(data->rr_ttl[i] < timenow) + if(data->rr_ttl[i] < adjust) sldns_buffer_write_u32(pkt, SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0); - else sldns_buffer_write_u32(pkt, - data->rr_ttl[i]-timenow); + else sldns_buffer_write_u32(pkt, data->rr_ttl[i]-adjust); /* rrsig rdata cannot be compressed, perform 100+ byte * memcopy. */ sldns_buffer_write(pkt, data->rr_data[i], @@ -801,14 +803,14 @@ calc_edns_field_size(struct edns_data* edns) return 1 + 2 + 2 + 4 + 2 + rdatalen; } -void -attach_edns_record(sldns_buffer* pkt, struct edns_data* edns) +static void +attach_edns_record_max_msg_sz(sldns_buffer* pkt, struct edns_data* edns, + uint16_t max_msg_sz) { size_t len; size_t rdatapos; struct edns_option* opt; - if(!edns || !edns->edns_present) - return; + struct edns_option* padding_option = NULL; /* inc additional count */ sldns_buffer_write_u16_at(pkt, 10, sldns_buffer_read_u16_at(pkt, 10) + 1); @@ -826,17 +828,52 @@ attach_edns_record(sldns_buffer* pkt, struct edns_data* edns) sldns_buffer_write_u16(pkt, 0); /* rdatalen */ /* write rdata */ for(opt=edns->opt_list; opt; opt=opt->next) { + if (opt->opt_code == LDNS_EDNS_PADDING) { + padding_option = opt; + continue; + } sldns_buffer_write_u16(pkt, opt->opt_code); sldns_buffer_write_u16(pkt, opt->opt_len); if(opt->opt_len != 0) sldns_buffer_write(pkt, opt->opt_data, opt->opt_len); } + if (padding_option && edns->padding_block_size ) { + size_t pad_pos = sldns_buffer_position(pkt); + size_t msg_sz = ((pad_pos + 3) / edns->padding_block_size + 1) + * edns->padding_block_size; + size_t pad_sz; + + if (msg_sz > max_msg_sz) + msg_sz = max_msg_sz; + + /* By use of calc_edns_field_size, calling functions should + * have made sure that there is enough space for at least a + * zero sized padding option. + */ + log_assert(pad_pos + 4 <= msg_sz); + + pad_sz = msg_sz - pad_pos - 4; + sldns_buffer_write_u16(pkt, LDNS_EDNS_PADDING); + sldns_buffer_write_u16(pkt, pad_sz); + if (pad_sz) { + memset(sldns_buffer_current(pkt), 0, pad_sz); + sldns_buffer_skip(pkt, pad_sz); + } + } if(edns->opt_list) sldns_buffer_write_u16_at(pkt, rdatapos, sldns_buffer_position(pkt)-rdatapos-2); sldns_buffer_flip(pkt); } +void +attach_edns_record(sldns_buffer* pkt, struct edns_data* edns) +{ + if(!edns || !edns->edns_present) + return; + attach_edns_record_max_msg_sz(pkt, edns, edns->udp_size); +} + int reply_info_answer_encode(struct query_info* qinf, struct reply_info* rep, uint16_t id, uint16_t qflags, sldns_buffer* pkt, time_t timenow, @@ -885,7 +922,7 @@ reply_info_answer_encode(struct query_info* qinf, struct reply_info* rep, } if(attach_edns && sldns_buffer_capacity(pkt) >= sldns_buffer_limit(pkt)+attach_edns) - attach_edns_record(pkt, edns); + attach_edns_record_max_msg_sz(pkt, edns, udpsize+attach_edns); return 1; } diff --git a/util/data/msgparse.c b/util/data/msgparse.c index 7c32618a3015..6ee5559db07b 100644 --- a/util/data/msgparse.c +++ b/util/data/msgparse.c @@ -1020,6 +1020,7 @@ parse_extract_edns(struct msg_parse* msg, struct edns_data* edns, edns->bits = sldns_read_uint16(&found->rr_last->ttl_data[2]); edns->udp_size = ntohs(found->rrset_class); edns->opt_list = NULL; + edns->padding_block_size = 0; /* take the options */ rdata_len = found->rr_first->size-2; @@ -1093,6 +1094,7 @@ parse_edns_from_pkt(sldns_buffer* pkt, struct edns_data* edns, edns->edns_version = sldns_buffer_read_u8(pkt); edns->bits = sldns_buffer_read_u16(pkt); edns->opt_list = NULL; + edns->padding_block_size = 0; /* take the options */ rdata_len = sldns_buffer_read_u16(pkt); diff --git a/util/data/msgparse.h b/util/data/msgparse.h index fd04f9f6f071..d2fd9c806657 100644 --- a/util/data/msgparse.h +++ b/util/data/msgparse.h @@ -87,6 +87,8 @@ extern time_t SERVE_EXPIRED_TTL; extern time_t SERVE_EXPIRED_REPLY_TTL; /** Negative cache time (for entries without any RRs.) */ #define NORR_TTL 5 /* seconds */ +/** If we serve the original TTL or decrementing TTLs */ +extern int SERVE_ORIGINAL_TTL; /** * Data stored in scratch pad memory during parsing. @@ -225,6 +227,8 @@ struct edns_data { uint16_t udp_size; /** rdata element list, or NULL if none */ struct edns_option* opt_list; + /** block size to pad */ + uint16_t padding_block_size; }; /** diff --git a/util/data/msgreply.c b/util/data/msgreply.c index 927bf09a29d8..4830b343f0f3 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -67,6 +67,8 @@ int SERVE_EXPIRED = 0; time_t SERVE_EXPIRED_TTL = 0; /** TTL to use for expired records */ time_t SERVE_EXPIRED_REPLY_TTL = 30; +/** If we serve the original TTL or decrementing TTLs */ +int SERVE_ORIGINAL_TTL = 0; /** allocate qinfo, return 0 on error */ static int @@ -197,9 +199,9 @@ rdata_copy(sldns_buffer* pkt, struct packed_rrset_data* data, uint8_t* to, if(*rr_ttl > MAX_NEG_TTL) *rr_ttl = MAX_NEG_TTL; } - if(*rr_ttl < MIN_TTL) + if(!SERVE_ORIGINAL_TTL && (*rr_ttl < MIN_TTL)) *rr_ttl = MIN_TTL; - if(*rr_ttl > MAX_TTL) + if(!SERVE_ORIGINAL_TTL && (*rr_ttl > MAX_TTL)) *rr_ttl = MAX_TTL; if(*rr_ttl < data->ttl) data->ttl = *rr_ttl; @@ -321,8 +323,8 @@ parse_create_rrset(sldns_buffer* pkt, struct rrset_parse* pset, (sizeof(size_t)+sizeof(uint8_t*)+sizeof(time_t)) + pset->size; if(region) - *data = regional_alloc(region, s); - else *data = malloc(s); + *data = regional_alloc_zero(region, s); + else *data = calloc(1, s); if(!*data) return 0; /* copy & decompress */ @@ -526,6 +528,7 @@ reply_info_set_ttls(struct reply_info* rep, time_t timenow) for(j=0; j<data->count + data->rrsig_count; j++) { data->rr_ttl[j] += timenow; } + data->ttl_add = timenow; } } @@ -1035,7 +1038,8 @@ static int inplace_cb_reply_call_generic( struct inplace_cb* callback_list, enum inplace_cb_list_type type, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, - struct comm_reply* repinfo, struct regional* region) + struct comm_reply* repinfo, struct regional* region, + struct timeval* start_time) { struct inplace_cb* cb; struct edns_option* opt_list_out = NULL; @@ -1048,7 +1052,7 @@ static int inplace_cb_reply_call_generic( fptr_ok(fptr_whitelist_inplace_cb_reply_generic( (inplace_cb_reply_func_type*)cb->cb, type)); (void)(*(inplace_cb_reply_func_type*)cb->cb)(qinfo, qstate, rep, - rcode, edns, &opt_list_out, repinfo, region, cb->id, cb->cb_arg); + rcode, edns, &opt_list_out, repinfo, region, start_time, cb->id, cb->cb_arg); } edns->opt_list = opt_list_out; return 1; @@ -1056,37 +1060,41 @@ static int inplace_cb_reply_call_generic( int inplace_cb_reply_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, - struct edns_data* edns, struct comm_reply* repinfo, struct regional* region) + struct edns_data* edns, struct comm_reply* repinfo, struct regional* region, + struct timeval* start_time) { return inplace_cb_reply_call_generic( env->inplace_cb_lists[inplace_cb_reply], inplace_cb_reply, qinfo, - qstate, rep, rcode, edns, repinfo, region); + qstate, rep, rcode, edns, repinfo, region, start_time); } int inplace_cb_reply_cache_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, - struct comm_reply* repinfo, struct regional* region) + struct comm_reply* repinfo, struct regional* region, + struct timeval* start_time) { return inplace_cb_reply_call_generic( env->inplace_cb_lists[inplace_cb_reply_cache], inplace_cb_reply_cache, - qinfo, qstate, rep, rcode, edns, repinfo, region); + qinfo, qstate, rep, rcode, edns, repinfo, region, start_time); } int inplace_cb_reply_local_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, - struct comm_reply* repinfo, struct regional* region) + struct comm_reply* repinfo, struct regional* region, + struct timeval* start_time) { return inplace_cb_reply_call_generic( env->inplace_cb_lists[inplace_cb_reply_local], inplace_cb_reply_local, - qinfo, qstate, rep, rcode, edns, repinfo, region); + qinfo, qstate, rep, rcode, edns, repinfo, region, start_time); } int inplace_cb_reply_servfail_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, - struct comm_reply* repinfo, struct regional* region) + struct comm_reply* repinfo, struct regional* region, + struct timeval* start_time) { /* We are going to servfail. Remove any potential edns options. */ if(qstate) @@ -1094,7 +1102,7 @@ int inplace_cb_reply_servfail_call(struct module_env* env, return inplace_cb_reply_call_generic( env->inplace_cb_lists[inplace_cb_reply_servfail], inplace_cb_reply_servfail, qinfo, qstate, rep, rcode, edns, repinfo, - region); + region, start_time); } int inplace_cb_query_call(struct module_env* env, struct query_info* qinfo, diff --git a/util/data/msgreply.h b/util/data/msgreply.h index 385780268a3c..c6b220ed8d71 100644 --- a/util/data/msgreply.h +++ b/util/data/msgreply.h @@ -554,11 +554,14 @@ struct edns_option* edns_opt_list_find(struct edns_option* list, uint16_t code); * @param edns: edns data of the reply. * @param repinfo: comm_reply. Reply information for a communication point. * @param region: region to store data. + * @param start_time: the start time of recursion, when the packet arrived, + * or the current time for cache responses. * @return false on failure (a callback function returned an error). */ int inplace_cb_reply_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, - struct edns_data* edns, struct comm_reply* repinfo, struct regional* region); + struct edns_data* edns, struct comm_reply* repinfo, struct regional* region, + struct timeval* start_time); /** * Call the registered functions in the inplace_cb_reply_cache linked list. @@ -571,12 +574,15 @@ int inplace_cb_reply_call(struct module_env* env, struct query_info* qinfo, * @param edns: edns data of the reply. Edns input can be found here. * @param repinfo: comm_reply. Reply information for a communication point. * @param region: region to store data. + * @param start_time: the start time of recursion, when the packet arrived, + * or the current time for cache responses. * @return false on failure (a callback function returned an error). */ int inplace_cb_reply_cache_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, - struct comm_reply* repinfo, struct regional* region); + struct comm_reply* repinfo, struct regional* region, + struct timeval* start_time); /** * Call the registered functions in the inplace_cb_reply_local linked list. @@ -589,12 +595,15 @@ int inplace_cb_reply_cache_call(struct module_env* env, * @param edns: edns data of the reply. Edns input can be found here. * @param repinfo: comm_reply. Reply information for a communication point. * @param region: region to store data. + * @param start_time: the start time of recursion, when the packet arrived, + * or the current time for cache responses. * @return false on failure (a callback function returned an error). */ int inplace_cb_reply_local_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, - struct comm_reply* repinfo, struct regional* region); + struct comm_reply* repinfo, struct regional* region, + struct timeval* start_time); /** * Call the registered functions in the inplace_cb_reply linked list. @@ -608,12 +617,15 @@ int inplace_cb_reply_local_call(struct module_env* env, * is NULL. * @param repinfo: comm_reply. Reply information for a communication point. * @param region: region to store data. + * @param start_time: the start time of recursion, when the packet arrived, + * or the current time for cache responses. * @return false on failure (a callback function returned an error). */ int inplace_cb_reply_servfail_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, - struct comm_reply* repinfo, struct regional* region); + struct comm_reply* repinfo, struct regional* region, + struct timeval* start_time); /** * Call the registered functions in the inplace_cb_query linked list. diff --git a/util/data/packed_rrset.c b/util/data/packed_rrset.c index 4b0294f9724b..e1a0833a2098 100644 --- a/util/data/packed_rrset.c +++ b/util/data/packed_rrset.c @@ -220,6 +220,7 @@ packed_rrset_ttl_add(struct packed_rrset_data* data, time_t add) { size_t i; size_t total = data->count + data->rrsig_count; + data->ttl_add = add; data->ttl += add; for(i=0; i<total; i++) data->rr_ttl[i] += add; @@ -275,6 +276,7 @@ int packed_rr_to_string(struct ub_packed_rrset_key* rrset, size_t i, entry.data; uint8_t rr[65535]; size_t rlen = rrset->rk.dname_len + 2 + 2 + 4 + d->rr_len[i]; + time_t adjust = 0; log_assert(dest_len > 0 && dest); if(rlen > dest_len) { dest[0] = 0; @@ -285,8 +287,10 @@ int packed_rr_to_string(struct ub_packed_rrset_key* rrset, size_t i, memmove(rr+rrset->rk.dname_len, &rrset->rk.type, 2); else sldns_write_uint16(rr+rrset->rk.dname_len, LDNS_RR_TYPE_RRSIG); memmove(rr+rrset->rk.dname_len+2, &rrset->rk.rrset_class, 2); + adjust = SERVE_ORIGINAL_TTL ? d->ttl_add : now; + if (d->rr_ttl[i] < adjust) adjust = d->rr_ttl[i]; /* Prevent negative TTL overflow */ sldns_write_uint32(rr+rrset->rk.dname_len+4, - (uint32_t)(d->rr_ttl[i]-now)); + (uint32_t)(d->rr_ttl[i]-adjust)); memmove(rr+rrset->rk.dname_len+8, d->rr_data[i], d->rr_len[i]); if(sldns_wire2str_rr_buf(rr, rlen, dest, dest_len) == -1) { log_info("rrbuf failure %d %s", (int)d->rr_len[i], dest); @@ -332,6 +336,7 @@ packed_rrset_copy_region(struct ub_packed_rrset_key* key, struct packed_rrset_data* data = (struct packed_rrset_data*) key->entry.data; size_t dsize, i; + time_t adjust = 0; if(!ck) return NULL; ck->id = key->id; @@ -350,14 +355,16 @@ packed_rrset_copy_region(struct ub_packed_rrset_key* key, ck->entry.data = d; packed_rrset_ptr_fixup(d); /* make TTLs relative - once per rrset */ + adjust = SERVE_ORIGINAL_TTL ? data->ttl_add : now; for(i=0; i<d->count + d->rrsig_count; i++) { - if(d->rr_ttl[i] < now) + if(d->rr_ttl[i] < adjust) d->rr_ttl[i] = SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0; - else d->rr_ttl[i] -= now; + else d->rr_ttl[i] -= adjust; } - if(d->ttl < now) + if(d->ttl < adjust) d->ttl = SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0; - else d->ttl -= now; + else d->ttl -= adjust; + d->ttl_add = 0; /* TTLs have been made relative */ return ck; } diff --git a/util/data/packed_rrset.h b/util/data/packed_rrset.h index 729877bab5ec..ff95c0af0e8d 100644 --- a/util/data/packed_rrset.h +++ b/util/data/packed_rrset.h @@ -233,6 +233,9 @@ enum sec_status { * the ttl value to send changes due to time. */ struct packed_rrset_data { + /** Timestamp added to TTLs in the packed data. + * Needed to support serving original TTLs. */ + time_t ttl_add; /** TTL (in seconds like time()) of the rrset. * Same for all RRs see rfc2181(5.2). */ time_t ttl; diff --git a/util/edns.c b/util/edns.c index ddbb46e892ce..84308449c7f3 100644 --- a/util/edns.c +++ b/util/edns.c @@ -160,5 +160,21 @@ int apply_edns_options(struct edns_data* edns_out, struct edns_data* edns_in, !edns_keepalive(edns_out, edns_in, c, region)) return 0; + if (cfg->nsid && edns_opt_list_find(edns_in->opt_list, LDNS_EDNS_NSID) + && !edns_opt_list_append(&edns_out->opt_list, + LDNS_EDNS_NSID, cfg->nsid_len, cfg->nsid, region)) + return 0; + + if(!cfg->pad_responses || c->type != comm_tcp || !c->ssl + || !edns_opt_list_find(edns_in->opt_list, LDNS_EDNS_PADDING)) { + ; /* pass */ + } + + else if(!edns_opt_list_append(&edns_out->opt_list, LDNS_EDNS_PADDING + , 0, NULL, region)) + return 0; + else + edns_out->padding_block_size = cfg->pad_responses_block_size; + return 1; } diff --git a/util/iana_ports.inc b/util/iana_ports.inc index d9978f92eda0..875851e6ac6d 100644 --- a/util/iana_ports.inc +++ b/util/iana_ports.inc @@ -2014,6 +2014,7 @@ 2368, 2370, 2372, +2378, 2381, 2382, 2383, @@ -3574,7 +3575,6 @@ 3977, 3978, 3979, -3980, 3981, 3982, 3983, diff --git a/util/module.h b/util/module.h index 7b833f8ade19..81a31a9cca46 100644 --- a/util/module.h +++ b/util/module.h @@ -257,8 +257,8 @@ struct inplace_cb { typedef int inplace_cb_reply_func_type(struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct edns_option** opt_list_out, - struct comm_reply* repinfo, struct regional* region, int id, - void* callback); + struct comm_reply* repinfo, struct regional* region, + struct timeval* start_time, int id, void* callback); /** * Inplace callback function called before sending the query to a nameserver. diff --git a/util/net_help.c b/util/net_help.c index c5216bc2d8c6..3b5527adf430 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -321,7 +321,7 @@ static int ipdnametoaddr(uint8_t* dname, size_t dnamelen, struct sockaddr_storage* addr, socklen_t* addrlen, int* af) { uint8_t* ia; - size_t dnamelabs = dname_count_labels(dname); + int dnamelabs = dname_count_labels(dname); uint8_t lablen; char* e = NULL; int z = 0; diff --git a/util/netevent.c b/util/netevent.c index 3525af39aa30..a2c0e6073e36 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -388,8 +388,9 @@ comm_point_send_udp_msg(struct comm_point *c, sldns_buffer* packet, } else { verbose(VERB_OPS, "send failed: %s", sock_strerror(errno)); } - log_addr(VERB_OPS, "remote address is", - (struct sockaddr_storage*)addr, addrlen); + if(addr) + log_addr(VERB_OPS, "remote address is", + (struct sockaddr_storage*)addr, addrlen); return 0; } else if((size_t)sent != sldns_buffer_remaining(packet)) { log_err("sent %d in place of %d bytes", @@ -592,6 +593,8 @@ comm_point_send_udp_msg_if(struct comm_point *c, sldns_buffer* packet, static int udp_recv_needs_log(int err) { switch(err) { + case EACCES: /* some hosts send ICMP 'Permission Denied' */ +#ifndef USE_WINSOCK case ECONNREFUSED: # ifdef ENETUNREACH case ENETUNREACH: @@ -605,6 +608,13 @@ static int udp_recv_needs_log(int err) # ifdef ENETDOWN case ENETDOWN: # endif +#else /* USE_WINSOCK */ + case WSAECONNREFUSED: + case WSAENETUNREACH: + case WSAEHOSTDOWN: + case WSAEHOSTUNREACH: + case WSAENETDOWN: +#endif if(verbosity >= VERB_ALGO) return 1; return 0; @@ -745,7 +755,8 @@ comm_point_udp_callback(int fd, short event, void* arg) #else if(WSAGetLastError() != WSAEINPROGRESS && WSAGetLastError() != WSAECONNRESET && - WSAGetLastError()!= WSAEWOULDBLOCK) + WSAGetLastError()!= WSAEWOULDBLOCK && + udp_recv_needs_log(WSAGetLastError())) log_err("recvfrom failed: %s", wsa_strerror(WSAGetLastError())); #endif @@ -771,6 +782,13 @@ comm_point_udp_callback(int fd, short event, void* arg) } } +int adjusted_tcp_timeout(struct comm_point* c) +{ + if(c->tcp_timeout_msec < TCP_QUERY_TIMEOUT_MINIMUM) + return TCP_QUERY_TIMEOUT_MINIMUM; + return c->tcp_timeout_msec; +} + /** Use a new tcp handler for new query fd, set to read query */ static void setup_tcp_handler(struct comm_point* c, int fd, int cur, int max) @@ -804,10 +822,7 @@ setup_tcp_handler(struct comm_point* c, int fd, int cur, int max) c->tcp_timeout_msec /= 500; else if (handler_usage > 80) c->tcp_timeout_msec = 0; - comm_point_start_listening(c, fd, - c->tcp_timeout_msec < TCP_QUERY_TIMEOUT_MINIMUM - ? TCP_QUERY_TIMEOUT_MINIMUM - : c->tcp_timeout_msec); + comm_point_start_listening(c, fd, adjusted_tcp_timeout(c)); } void comm_base_handle_slow_accept(int ATTR_UNUSED(fd), @@ -1117,10 +1132,11 @@ tcp_callback_writer(struct comm_point* c) if( (*c->callback)(c, c->cb_arg, NETEVENT_PKT_WRITTEN, &c->repinfo) ) { comm_point_start_listening(c, -1, - c->tcp_timeout_msec); + adjusted_tcp_timeout(c)); } } else { - comm_point_start_listening(c, -1, c->tcp_timeout_msec); + comm_point_start_listening(c, -1, + adjusted_tcp_timeout(c)); } } } @@ -1141,7 +1157,8 @@ tcp_callback_reader(struct comm_point* c) comm_point_stop_listening(c); fptr_ok(fptr_whitelist_comm_point(c->callback)); if( (*c->callback)(c, c->cb_arg, NETEVENT_NOERROR, &c->repinfo) ) { - comm_point_start_listening(c, -1, c->tcp_timeout_msec); + comm_point_start_listening(c, -1, + adjusted_tcp_timeout(c)); } } } @@ -1603,6 +1620,33 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok) if(errno == ECONNRESET && verbosity < 2) return 0; /* silence reset by peer */ #endif +#ifdef ENETUNREACH + if(errno == ENETUNREACH && verbosity < 2) + return 0; /* silence it */ +#endif +#ifdef EHOSTDOWN + if(errno == EHOSTDOWN && verbosity < 2) + return 0; /* silence it */ +#endif +#ifdef EHOSTUNREACH + if(errno == EHOSTUNREACH && verbosity < 2) + return 0; /* silence it */ +#endif +#ifdef ENETDOWN + if(errno == ENETDOWN && verbosity < 2) + return 0; /* silence it */ +#endif +#ifdef EACCES + if(errno == EACCES && verbosity < 2) + return 0; /* silence it */ +#endif +#ifdef ENOTCONN + if(errno == ENOTCONN) { + log_err_addr("read (in tcp s) failed and this could be because TCP Fast Open is enabled [--disable-tfo-client --disable-tfo-server] but does not work", sock_strerror(errno), + &c->repinfo.addr, c->repinfo.addrlen); + return 0; + } +#endif #else /* USE_WINSOCK */ if(WSAGetLastError() == WSAECONNRESET) return 0; @@ -1901,7 +1945,7 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) log_assert(c->tcp_write_and_read || sldns_buffer_remaining(buffer) > 0); log_assert(!c->tcp_write_and_read || c->tcp_write_byte_count < c->tcp_write_pkt_len + 2); if(c->tcp_write_and_read) { - r = send(fd, (void*)c->tcp_write_pkt + c->tcp_write_byte_count - 2, + r = send(fd, (void*)(c->tcp_write_pkt + c->tcp_write_byte_count - 2), c->tcp_write_pkt_len + 2 - c->tcp_write_byte_count, 0); } else { r = send(fd, (void*)sldns_buffer_current(buffer), @@ -2369,7 +2413,7 @@ http_nonchunk_segment(struct comm_point* c) return 1; } -/** handle nonchunked data segment, return 0=fail, 1=wait, 2=process more */ +/** handle chunked data segment, return 0=fail, 1=wait, 2=process more */ static int http_chunked_segment(struct comm_point* c) { @@ -2379,6 +2423,7 @@ http_chunked_segment(struct comm_point* c) */ size_t remainbufferlen; size_t got_now = sldns_buffer_limit(c->buffer) - c->http_stored; + verbose(VERB_ALGO, "http_chunked_segment: got now %d, tcpbytcount %d, http_stored %d, buffer pos %d, buffer limit %d", (int)got_now, (int)c->tcp_byte_count, (int)c->http_stored, (int)sldns_buffer_position(c->buffer), (int)sldns_buffer_limit(c->buffer)); if(c->tcp_byte_count <= got_now) { /* the chunk has completed (with perhaps some extra data * from next chunk header and next chunk) */ @@ -2446,7 +2491,7 @@ http_chunked_segment(struct comm_point* c) #ifdef HAVE_NGHTTP2 /** Create new http2 session. Called when creating handling comm point. */ -struct http2_session* http2_session_create(struct comm_point* c) +static struct http2_session* http2_session_create(struct comm_point* c) { struct http2_session* session = calloc(1, sizeof(*session)); if(!session) { @@ -2460,7 +2505,7 @@ struct http2_session* http2_session_create(struct comm_point* c) #endif /** Delete http2 session. After closing connection or on error */ -void http2_session_delete(struct http2_session* h2_session) +static void http2_session_delete(struct http2_session* h2_session) { #ifdef HAVE_NGHTTP2 if(h2_session->callbacks) @@ -2536,7 +2581,7 @@ void http2_session_add_stream(struct http2_session* h2_session, /** remove stream from session linked list. After stream close callback or * closing connection */ -void http2_session_remove_stream(struct http2_session* h2_session, +static void http2_session_remove_stream(struct http2_session* h2_session, struct http2_stream* h2_stream) { if(h2_stream->prev) @@ -2662,7 +2707,7 @@ comm_point_http2_handle_read(int ATTR_UNUSED(fd), struct comm_point* c) if(nghttp2_session_want_write(c->h2_session->session)) { c->tcp_is_reading = 0; comm_point_stop_listening(c); - comm_point_start_listening(c, -1, c->tcp_timeout_msec); + comm_point_start_listening(c, -1, adjusted_tcp_timeout(c)); } else if(!nghttp2_session_want_read(c->h2_session->session)) return 0; /* connection can be closed */ return 1; @@ -2718,6 +2763,11 @@ comm_point_http_handle_read(int fd, struct comm_point* c) } sldns_buffer_flip(c->buffer); + /* if we are partway in a segment of data, position us at the point + * where we left off previously */ + if(c->http_stored < sldns_buffer_limit(c->buffer)) + sldns_buffer_set_position(c->buffer, c->http_stored); + else sldns_buffer_set_position(c->buffer, sldns_buffer_limit(c->buffer)); while(sldns_buffer_remaining(c->buffer) > 0) { /* Handle HTTP/1.x data */ @@ -2980,7 +3030,7 @@ comm_point_http2_handle_write(int ATTR_UNUSED(fd), struct comm_point* c) if(nghttp2_session_want_read(c->h2_session->session)) { c->tcp_is_reading = 1; comm_point_stop_listening(c); - comm_point_start_listening(c, -1, c->tcp_timeout_msec); + comm_point_start_listening(c, -1, adjusted_tcp_timeout(c)); } else if(!nghttp2_session_want_write(c->h2_session->session)) return 0; /* connection can be closed */ return 1; @@ -3187,6 +3237,7 @@ comm_point_create_udp(struct comm_base *base, int fd, sldns_buffer* buffer, comm_point_delete(c); return NULL; } + c->event_added = 1; return c; } @@ -3246,6 +3297,7 @@ comm_point_create_udp_ancil(struct comm_base *base, int fd, comm_point_delete(c); return NULL; } + c->event_added = 1; return c; } @@ -3530,6 +3582,7 @@ comm_point_create_tcp(struct comm_base *base, int fd, int num, comm_point_delete(c); return NULL; } + c->event_added = 1; /* now prealloc the handlers */ for(i=0; i<num; i++) { if(port_type == listen_type_tcp || @@ -3753,6 +3806,7 @@ comm_point_create_local(struct comm_base *base, int fd, size_t bufsize, free(c); return NULL; } + c->event_added = 1; return c; } @@ -3815,6 +3869,7 @@ comm_point_create_raw(struct comm_base* base, int fd, int writing, free(c); return NULL; } + c->event_added = 1; return c; } @@ -3825,8 +3880,11 @@ comm_point_close(struct comm_point* c) return; if(c->fd != -1) { verbose(5, "comm_point_close of %d: event_del", c->fd); - if(ub_event_del(c->ev->ev) != 0) { - log_err("could not event_del on close"); + if(c->event_added) { + if(ub_event_del(c->ev->ev) != 0) { + log_err("could not event_del on close"); + } + c->event_added = 0; } } tcl_close_connection(c->tcl_addr); @@ -3938,11 +3996,11 @@ comm_point_send_reply(struct comm_reply *repinfo) repinfo->c->tcp_is_reading = 0; comm_point_stop_listening(repinfo->c); comm_point_start_listening(repinfo->c, -1, - repinfo->c->tcp_timeout_msec); + adjusted_tcp_timeout(repinfo->c)); return; } else { comm_point_start_listening(repinfo->c, -1, - repinfo->c->tcp_timeout_msec); + adjusted_tcp_timeout(repinfo->c)); } } } @@ -3975,8 +4033,11 @@ void comm_point_stop_listening(struct comm_point* c) { verbose(VERB_ALGO, "comm point stop listening %d", c->fd); - if(ub_event_del(c->ev->ev) != 0) { - log_err("event_del error to stoplisten"); + if(c->event_added) { + if(ub_event_del(c->ev->ev) != 0) { + log_err("event_del error to stoplisten"); + } + c->event_added = 0; } } @@ -3989,6 +4050,12 @@ comm_point_start_listening(struct comm_point* c, int newfd, int msec) /* no use to start listening no free slots. */ return; } + if(c->event_added) { + if(ub_event_del(c->ev->ev) != 0) { + log_err("event_del error to startlisten"); + } + c->event_added = 0; + } if(msec != -1 && msec != 0) { if(!c->timeout) { c->timeout = (struct timeval*)malloc(sizeof( @@ -4028,13 +4095,17 @@ comm_point_start_listening(struct comm_point* c, int newfd, int msec) if(ub_event_add(c->ev->ev, msec==0?NULL:c->timeout) != 0) { log_err("event_add failed. in cpsl."); } + c->event_added = 1; } void comm_point_listen_for_rw(struct comm_point* c, int rd, int wr) { verbose(VERB_ALGO, "comm point listen_for_rw %d %d", c->fd, wr); - if(ub_event_del(c->ev->ev) != 0) { - log_err("event_del error to cplf"); + if(c->event_added) { + if(ub_event_del(c->ev->ev) != 0) { + log_err("event_del error to cplf"); + } + c->event_added = 0; } ub_event_del_bits(c->ev->ev, UB_EV_READ|UB_EV_WRITE); if(rd) ub_event_add_bits(c->ev->ev, UB_EV_READ); @@ -4042,6 +4113,7 @@ void comm_point_listen_for_rw(struct comm_point* c, int rd, int wr) if(ub_event_add(c->ev->ev, c->timeout) != 0) { log_err("event_add failed. in cplf."); } + c->event_added = 1; } size_t comm_point_get_mem(struct comm_point* c) diff --git a/util/netevent.h b/util/netevent.h index 4c1d9c15b2f2..4a2aa1677c02 100644 --- a/util/netevent.h +++ b/util/netevent.h @@ -166,6 +166,8 @@ struct comm_reply { struct comm_point { /** behind the scenes structure, with say libevent info. alloced. */ struct internal_event* ev; + /** if the event is added or not */ + int event_added; /** file descriptor for communication point */ int fd; @@ -663,6 +665,16 @@ void comm_point_start_listening(struct comm_point* c, int newfd, int msec); void comm_point_listen_for_rw(struct comm_point* c, int rd, int wr); /** + * For TCP handlers that use c->tcp_timeout_msec, this routine adjusts + * it with the minimum. Otherwise, a 0 value advertised without the + * minimum applied moves to a 0 in comm_point_start_listening and that + * routine treats it as no timeout, listen forever, which is not wanted. + * @param c: comm point to use the tcp_timeout_msec of. + * @return adjusted tcp_timeout_msec value with the minimum if smaller. + */ +int adjusted_tcp_timeout(struct comm_point* c); + +/** * Get size of memory used by comm point. * For TCP handlers this includes subhandlers. * For UDP handlers, this does not include the (shared) UDP buffer. diff --git a/util/storage/lruhash.c b/util/storage/lruhash.c index 0003ff491e46..3500a4ef0fe8 100644 --- a/util/storage/lruhash.c +++ b/util/storage/lruhash.c @@ -398,13 +398,13 @@ lruhash_remove(struct lruhash* table, hashvalue_type hash, void* key) return; } table->num--; - table->space_used -= (*table->sizefunc)(entry->key, entry->data); - lock_quick_unlock(&table->lock); + table->space_used -= (*table->sizefunc)(entry->key, entry->data); lock_rw_wrlock(&entry->lock); if(table->markdelfunc) (*table->markdelfunc)(entry->key); lock_rw_unlock(&entry->lock); lock_quick_unlock(&bin->lock); + lock_quick_unlock(&table->lock); /* finish removal */ d = entry->data; (*table->delkeyfunc)(entry->key, table->cb_arg); |
