diff options
author | Dag-Erling Smørgrav <des@FreeBSD.org> | 2015-01-02 17:31:36 +0000 |
---|---|---|
committer | Dag-Erling Smørgrav <des@FreeBSD.org> | 2015-01-02 17:31:36 +0000 |
commit | d433784affd32a879670e66bcf330b2561342f3c (patch) | |
tree | 7e110cb938b4f1a0c7a7f5bbbfc0a682ab32c4b6 /util | |
parent | c40c0dcc50043c1f440bca54c9d731eeec13678a (diff) | |
download | src-test2-d433784affd32a879670e66bcf330b2561342f3c.tar.gz src-test2-d433784affd32a879670e66bcf330b2561342f3c.zip |
Notes
Diffstat (limited to 'util')
-rw-r--r-- | util/config_file.c | 48 | ||||
-rw-r--r-- | util/config_file.h | 46 | ||||
-rw-r--r-- | util/configlexer.c | 3360 | ||||
-rw-r--r-- | util/configlexer.lex | 23 | ||||
-rw-r--r-- | util/configparser.c | 1858 | ||||
-rw-r--r-- | util/configparser.h | 48 | ||||
-rw-r--r-- | util/configparser.y | 159 | ||||
-rw-r--r-- | util/data/dname.c | 30 | ||||
-rw-r--r-- | util/data/msgreply.c | 2 | ||||
-rw-r--r-- | util/data/msgreply.h | 20 | ||||
-rw-r--r-- | util/data/packed_rrset.h | 2 | ||||
-rw-r--r-- | util/fptr_wlist.c | 12 | ||||
-rw-r--r-- | util/fptr_wlist.h | 2 | ||||
-rw-r--r-- | util/iana_ports.inc | 21 | ||||
-rw-r--r-- | util/locks.h | 5 | ||||
-rw-r--r-- | util/log.c | 29 | ||||
-rw-r--r-- | util/mini_event.h | 15 | ||||
-rw-r--r-- | util/module.h | 4 | ||||
-rw-r--r-- | util/net_help.c | 32 | ||||
-rw-r--r-- | util/net_help.h | 10 | ||||
-rw-r--r-- | util/netevent.c | 75 | ||||
-rw-r--r-- | util/netevent.h | 4 | ||||
-rw-r--r-- | util/random.c | 150 | ||||
-rw-r--r-- | util/storage/lookup3.c | 11 | ||||
-rw-r--r-- | util/storage/slabhash.c | 14 | ||||
-rw-r--r-- | util/storage/slabhash.h | 7 | ||||
-rw-r--r-- | util/winsock_event.h | 15 |
27 files changed, 3441 insertions, 2561 deletions
diff --git a/util/config_file.c b/util/config_file.c index 72f71199dab4..35bc6452a0ce 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -63,18 +63,6 @@ /** global config during parsing */ struct config_parser_state* cfg_parser = 0; -/** lex in file */ -extern FILE* ub_c_in; -/** lex out file */ -extern FILE* ub_c_out; -/** the yacc lex generated parse function */ -int ub_c_parse(void); -/** the lexer function */ -int ub_c_lex(void); -/** wrap function */ -int ub_c_wrap(void); -/** init lex state */ -void init_cfg_parse(void); /** init ports possible for use */ static void init_outgoing_availports(int* array, int num); @@ -203,6 +191,7 @@ config_create(void) cfg->local_zones = NULL; cfg->local_zones_nodefault = NULL; cfg->local_data = NULL; + cfg->unblock_lan_zones = 0; cfg->python_script = NULL; cfg->remote_control_enable = 0; cfg->control_ifs = NULL; @@ -222,6 +211,10 @@ config_create(void) if(!(cfg->module_conf = strdup("validator iterator"))) goto error_exit; if(!(cfg->val_nsec3_key_iterations = strdup("1024 150 2048 500 4096 2500"))) goto error_exit; +#if defined(DNSTAP_SOCKET_PATH) + if(!(cfg->dnstap_socket_path = strdup(DNSTAP_SOCKET_PATH))) + goto error_exit; +#endif return cfg; error_exit: config_delete(cfg); @@ -426,6 +419,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_YNO("minimal-responses:", minimal_responses) else S_YNO("rrset-roundrobin:", rrset_roundrobin) else S_STRLIST("local-data:", local_data) + else S_YNO("unblock-lan-zones:", unblock_lan_zones) else S_YNO("control-enable:", remote_control_enable) else S_STRLIST("control-interface:", control_ifs) else S_NUMBER_NONZERO("control-port:", control_port) @@ -690,6 +684,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_UNS(opt, "val-override-date", val_date_override) else O_YNO(opt, "minimal-responses", minimal_responses) else O_YNO(opt, "rrset-roundrobin", rrset_roundrobin) + else O_YNO(opt, "unblock-lan-zones", unblock_lan_zones) else O_DEC(opt, "max-udp-size", max_udp_size) else O_STR(opt, "python-script", python_script) else O_DEC(opt, "val-sig-skew-min", val_sig_skew_min) @@ -800,7 +795,7 @@ config_read(struct config_file* cfg, const char* filename, const char* chroot) if(cfg_parser->errors != 0) { fprintf(stderr, "read %s failed: %d errors in configuration file\n", - cfg_parser->filename, cfg_parser->errors); + fname, cfg_parser->errors); errno=EINVAL; return 0; } @@ -897,6 +892,9 @@ config_delete(struct config_file* cfg) free(cfg->server_cert_file); free(cfg->control_key_file); free(cfg->control_cert_file); + free(cfg->dnstap_socket_path); + free(cfg->dnstap_identity); + free(cfg->dnstap_version); free(cfg); } @@ -1107,7 +1105,7 @@ cfg_count_numbers(const char* s) /* sp ::= (space|tab)* */ int num = 0; while(*s) { - while(*s && isspace((int)*s)) + while(*s && isspace((unsigned char)*s)) s++; if(!*s) /* end of string */ break; @@ -1115,9 +1113,9 @@ cfg_count_numbers(const char* s) s++; if(!*s) /* only - not allowed */ return 0; - if(!isdigit((int)*s)) /* bad character */ + if(!isdigit((unsigned char)*s)) /* bad character */ return 0; - while(*s && isdigit((int)*s)) + while(*s && isdigit((unsigned char)*s)) s++; num++; } @@ -1129,7 +1127,7 @@ static int isalldigit(const char* str, size_t l) { size_t i; for(i=0; i<l; i++) - if(!isdigit(str[i])) + if(!isdigit((unsigned char)str[i])) return 0; return 1; } @@ -1155,13 +1153,13 @@ cfg_parse_memsize(const char* str, size_t* res) else if(len > 1 && str[len-1] == 'B') len--; - if(len > 1 && tolower(str[len-1]) == 'g') + if(len > 1 && tolower((unsigned char)str[len-1]) == 'g') mult = 1024*1024*1024; - else if(len > 1 && tolower(str[len-1]) == 'm') + else if(len > 1 && tolower((unsigned char)str[len-1]) == 'm') mult = 1024*1024; - else if(len > 1 && tolower(str[len-1]) == 'k') + else if(len > 1 && tolower((unsigned char)str[len-1]) == 'k') mult = 1024; - else if(len > 0 && isdigit(str[len-1])) + else if(len > 0 && isdigit((unsigned char)str[len-1])) mult = 1; else { log_err("unknown size specifier: '%s'", str); @@ -1324,7 +1322,7 @@ cfg_parse_local_zone(struct config_file* cfg, const char* val) /* parse it as: [zone_name] [between stuff] [zone_type] */ name = val; - while(*name && isspace(*name)) + while(*name && isspace((unsigned char)*name)) name++; if(!*name) { log_err("syntax error: too short: %s", val); @@ -1343,7 +1341,7 @@ cfg_parse_local_zone(struct config_file* cfg, const char* val) buf[name_end-name] = '\0'; type = last_space_pos(name_end); - while(type && *type && isspace(*type)) + while(type && *type && isspace((unsigned char)*type)) type++; if(!type || !*type) { log_err("syntax error: expected zone type: %s", val); @@ -1370,7 +1368,7 @@ char* cfg_ptr_reverse(char* str) /* parse it as: [IP] [between stuff] [name] */ ip = str; - while(*ip && isspace(*ip)) + while(*ip && isspace((unsigned char)*ip)) ip++; if(!*ip) { log_err("syntax error: too short: %s", str); @@ -1425,7 +1423,7 @@ char* cfg_ptr_reverse(char* str) } /* printed the reverse address, now the between goop and name on end */ - while(*ip_end && isspace(*ip_end)) + while(*ip_end && isspace((unsigned char)*ip_end)) ip_end++; if(name>ip_end) { snprintf(buf+strlen(buf), sizeof(buf)-strlen(buf), "%.*s", diff --git a/util/config_file.h b/util/config_file.h index 7360fd30205e..49ffbdde4a56 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -273,6 +273,8 @@ struct config_file { struct config_strlist* local_zones_nodefault; /** local data RRs configged */ struct config_strlist* local_data; + /** unblock lan zones (reverse lookups for 10/8 and so on) */ + int unblock_lan_zones; /** remote control section. enable toggle. */ int remote_control_enable; @@ -303,6 +305,38 @@ struct config_file { /* maximum UDP response size */ size_t max_udp_size; + + /* DNS64 prefix */ + char* dns64_prefix; + + /* Synthetize all AAAA record despite the presence of an authoritative one */ + int dns64_synthall; + + /** true to enable dnstap support */ + int dnstap; + /** dnstap socket path */ + char* dnstap_socket_path; + /** true to send "identity" via dnstap */ + int dnstap_send_identity; + /** true to send "version" via dnstap */ + int dnstap_send_version; + /** dnstap "identity", hostname is used if "". */ + char* dnstap_identity; + /** dnstap "version", package version is used if "". */ + char* dnstap_version; + + /** true to log dnstap RESOLVER_QUERY message events */ + int dnstap_log_resolver_query_messages; + /** true to log dnstap RESOLVER_RESPONSE message events */ + int dnstap_log_resolver_response_messages; + /** true to log dnstap CLIENT_QUERY message events */ + int dnstap_log_client_query_messages; + /** true to log dnstap CLIENT_RESPONSE message events */ + int dnstap_log_client_response_messages; + /** true to log dnstap FORWARDER_QUERY message events */ + int dnstap_log_forwarder_query_messages; + /** true to log dnstap FORWARDER_RESPONSE message events */ + int dnstap_log_forwarder_response_messages; }; /** @@ -639,6 +673,18 @@ struct config_parser_state { /** global config parser object used during config parsing */ extern struct config_parser_state* cfg_parser; +/** init lex state */ +void init_cfg_parse(void); +/** lex in file */ +extern FILE* ub_c_in; +/** lex out file */ +extern FILE* ub_c_out; +/** the yacc lex generated parse function */ +int ub_c_parse(void); +/** the lexer function */ +int ub_c_lex(void); +/** wrap function */ +int ub_c_wrap(void); /** parsing helpers: print error with file and line numbers */ void ub_c_error(const char* msg); /** parsing helpers: print error with file and line numbers */ diff --git a/util/configlexer.c b/util/configlexer.c index a73adeccea26..3a71d967e687 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -10,7 +10,7 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 36 +#define YY_FLEX_SUBMINOR_VERSION 37 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -363,8 +363,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 146 -#define YY_END_OF_BUFFER 147 +#define YY_NUM_RULES 162 +#define YY_END_OF_BUFFER 163 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -372,160 +372,185 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[1383] = +static yyconst flex_int16_t yy_accept[1611] = { 0, - 1, 1, 128, 128, 132, 132, 136, 136, 140, 140, - 1, 1, 147, 144, 1, 126, 126, 145, 2, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 145, 128, - 129, 129, 130, 145, 132, 133, 133, 134, 145, 139, - 136, 137, 137, 138, 145, 140, 141, 141, 142, 145, - 143, 127, 2, 131, 143, 145, 144, 0, 1, 2, - 2, 2, 2, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 128, 0, 132, 0, 139, 0, 136, 140, 0, - 143, 0, 2, 2, 143, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 143, 144, 144, 144, 144, 144, 144, 144, 144, 144, - - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 143, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 65, 144, 144, - - 144, 144, 144, 6, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 143, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 143, - 144, 144, 144, 144, 29, 144, 144, 144, 144, 144, - 144, 12, 13, 144, 15, 14, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 121, 144, 144, 144, 144, 144, 3, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - - 144, 144, 144, 144, 144, 144, 144, 144, 144, 143, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 135, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 32, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 33, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 80, 135, - - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 79, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 63, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 20, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 30, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - - 144, 144, 144, 144, 144, 144, 31, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 22, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 26, 144, 27, 144, 144, 144, 66, 144, - 67, 144, 64, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 5, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - - 144, 82, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 23, 144, 144, 144, 144, - 107, 106, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 34, 144, 144, 144, 144, 144, 144, 144, 144, - 69, 68, 144, 144, 144, 144, 144, 144, 103, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 50, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - - 54, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 105, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 4, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 100, 144, 144, 144, 144, 144, 144, 144, 115, 101, - 144, 21, 144, 144, 144, 144, 71, 144, 72, 70, - 144, 144, 144, 144, 144, 144, 78, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 102, 144, 144, 144, - - 144, 125, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 62, 144, 144, 144, 144, 144, 144, - 144, 144, 28, 144, 144, 17, 144, 144, 144, 16, - 144, 87, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 41, 42, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 73, 144, 144, 144, - 144, 144, 77, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 81, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 120, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - - 144, 144, 144, 144, 144, 91, 144, 95, 144, 144, - 144, 144, 76, 144, 144, 113, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 94, - 144, 144, 144, 144, 43, 44, 144, 49, 96, 144, - 108, 104, 144, 144, 37, 144, 98, 144, 144, 144, - 144, 144, 7, 144, 61, 112, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 83, 144, 144, 122, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 97, 144, 36, 38, - - 144, 144, 144, 144, 144, 60, 144, 144, 144, 144, - 116, 18, 19, 144, 144, 144, 144, 144, 144, 58, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 118, - 144, 144, 35, 144, 144, 144, 144, 144, 144, 11, - 144, 144, 144, 144, 144, 144, 144, 10, 144, 144, - 39, 144, 124, 117, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 90, 89, 144, 119, 114, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 45, - 144, 123, 144, 144, 144, 144, 40, 144, 144, 144, - 84, 86, 144, 144, 144, 88, 144, 144, 144, 144, - - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 24, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 111, 144, 144, 144, 144, 144, 144, - 144, 25, 144, 9, 144, 144, 109, 51, 144, 144, - 144, 93, 144, 74, 144, 144, 144, 53, 57, 52, - 144, 46, 144, 8, 144, 144, 92, 144, 144, 144, - 56, 144, 47, 144, 110, 144, 144, 85, 75, 55, - 48, 144, 144, 144, 144, 59, 144, 144, 144, 144, - 99, 0 + 1, 1, 144, 144, 148, 148, 152, 152, 156, 156, + 1, 1, 163, 160, 1, 142, 142, 161, 2, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 161, 144, + 145, 145, 146, 161, 148, 149, 149, 150, 161, 155, + 152, 153, 153, 154, 161, 156, 157, 157, 158, 161, + 159, 143, 2, 147, 159, 161, 160, 0, 1, 2, + 2, 2, 2, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 144, 0, 148, 0, 155, 0, 152, 156, + 0, 159, 0, 2, 2, 159, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 159, 160, 160, 160, 160, 160, 160, + + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 159, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + + 160, 160, 160, 160, 160, 65, 160, 160, 160, 160, + 160, 6, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 159, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 159, 160, 160, 160, 160, 29, 160, 160, 160, + 160, 160, 160, 160, 160, 129, 160, 12, 13, 160, + 15, 14, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 122, + 160, 160, 160, 160, 160, 3, 160, 160, 160, 160, + + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 159, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 151, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 32, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 33, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 80, 151, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 79, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 63, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + + 160, 160, 20, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 30, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 31, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 22, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + + 160, 160, 160, 160, 26, 160, 27, 160, 160, 160, + 66, 160, 67, 160, 64, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 5, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 82, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 23, 160, 160, 160, + 160, 107, 106, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + + 160, 160, 34, 160, 160, 160, 160, 160, 160, 160, + 160, 69, 68, 160, 160, 160, 160, 160, 160, 160, + 103, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 50, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 54, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 105, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 4, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 100, 160, 160, 160, 160, 160, 160, + 160, 116, 101, 160, 127, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 21, 160, 160, 160, 160, + 71, 160, 72, 70, 160, 160, 160, 160, 160, 160, + 78, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 102, 160, 160, 160, 160, 126, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 62, 160, 160, + 160, 160, 160, 160, 160, 160, 28, 160, 160, 17, + + 160, 160, 160, 16, 160, 87, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 41, + 42, 160, 160, 160, 160, 160, 160, 130, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 73, 160, 160, 160, 160, 160, 77, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 81, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 121, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 91, 160, 95, 160, 160, 160, 160, 76, 160, + + 160, 114, 160, 160, 160, 128, 160, 160, 160, 160, + 160, 160, 160, 135, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 94, 160, 160, 160, 160, 43, + 44, 160, 49, 96, 160, 108, 104, 160, 160, 37, + 160, 98, 160, 160, 160, 160, 160, 7, 160, 61, + 113, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 83, 134, 160, 160, + 160, 160, 160, 160, 160, 160, 123, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 97, + + 160, 36, 38, 160, 160, 160, 160, 160, 60, 160, + 160, 160, 160, 117, 18, 19, 160, 160, 160, 160, + 160, 160, 160, 58, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 119, 160, 160, 160, 160, 160, 160, + 160, 160, 35, 160, 160, 160, 160, 160, 160, 11, + 160, 160, 160, 160, 160, 160, 160, 10, 160, 160, + 39, 160, 125, 118, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 90, 89, 160, 120, 115, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 45, 160, 124, 160, + + 160, 160, 160, 40, 160, 160, 160, 84, 86, 109, + 160, 160, 160, 88, 160, 160, 160, 160, 160, 160, + 160, 160, 131, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 24, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 133, 160, 160, 112, 160, 160, 160, 160, 160, + 160, 160, 25, 160, 9, 160, 160, 110, 51, 160, + 160, 160, 93, 160, 160, 160, 160, 160, 160, 132, + 74, 160, 160, 160, 53, 57, 52, 160, 46, 160, + 8, 160, 160, 92, 160, 160, 160, 160, 160, 160, + + 160, 160, 160, 56, 160, 47, 160, 111, 160, 160, + 85, 160, 160, 160, 160, 160, 160, 75, 55, 48, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 59, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 99, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 138, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 136, 160, + + 139, 140, 160, 160, 160, 160, 160, 137, 141, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -571,323 +596,373 @@ static yyconst flex_int32_t yy_meta[66] = 1, 1, 1, 1, 1 } ; -static yyconst flex_int16_t yy_base[1397] = +static yyconst flex_int16_t yy_base[1625] = { 0, 0, 0, 63, 66, 69, 71, 77, 83, 88, 91, - 129, 135, 296, 256, 95, 4001, 4001, 4001, 107, 110, - 142, 140, 108, 50, 159, 147, 158, 148, 174, 190, - 192, 175, 212, 220, 226, 248, 215, 254, 116, 253, - 4001, 4001, 4001, 94, 252, 4001, 4001, 4001, 96, 247, - 280, 4001, 4001, 4001, 295, 242, 4001, 4001, 4001, 102, - 233, 4001, 299, 4001, 236, 305, 201, 309, 111, 0, - 313, 0, 0, 180, 240, 287, 293, 188, 297, 298, - 294, 295, 319, 302, 308, 300, 315, 326, 331, 327, - 344, 121, 329, 356, 359, 325, 351, 363, 372, 357, - - 373, 369, 375, 383, 385, 396, 384, 400, 402, 397, - 407, 137, 406, 414, 419, 420, 427, 426, 433, 439, - 432, 195, 154, 187, 216, 171, 477, 204, 165, 211, - 115, 489, 493, 0, 465, 466, 216, 472, 481, 475, - 453, 495, 492, 430, 521, 500, 485, 502, 482, 506, - 513, 512, 479, 531, 520, 539, 548, 534, 540, 555, - 558, 568, 564, 563, 557, 567, 575, 581, 583, 582, - 586, 573, 590, 576, 579, 597, 584, 610, 599, 609, - 622, 613, 630, 631, 626, 616, 640, 634, 648, 644, - 639, 637, 642, 649, 665, 657, 662, 666, 660, 678, - - 687, 690, 679, 667, 683, 692, 689, 704, 697, 701, - 715, 707, 706, 703, 714, 719, 736, 709, 739, 728, - 748, 742, 738, 741, 747, 730, 760, 759, 777, 749, - 778, 772, 767, 775, 790, 786, 794, 788, 800, 797, - 805, 796, 807, 815, 817, 822, 818, 821, 814, 823, - 832, 848, 841, 893, 839, 852, 850, 845, 842, 856, - 884, 866, 872, 874, 894, 877, 888, 901, 919, 910, - 911, 915, 926, 923, 937, 929, 934, 950, 883, 938, - 951, 935, 949, 954, 962, 958, 956, 978, 953, 967, - 964, 980, 991, 983, 993, 976, 1000, 4001, 1003, 981, - - 1005, 1007, 1009, 4001, 1006, 1015, 1023, 1012, 1030, 1018, - 1028, 1025, 1033, 1045, 1036, 1053, 1040, 1042, 1088, 1039, - 1052, 1079, 1050, 1081, 1065, 1092, 1076, 1086, 1085, 1080, - 1083, 1097, 1113, 1109, 1115, 1129, 1138, 1123, 1119, 1126, - 1143, 1132, 1136, 1142, 1146, 1149, 1141, 1147, 1151, 1162, - 1167, 1177, 1184, 1164, 1178, 1182, 1188, 1189, 1187, 1170, - 1191, 1194, 1181, 1220, 1197, 1209, 1204, 1221, 1226, 1234, - 1235, 1224, 1236, 1242, 1254, 1206, 1243, 1268, 1269, 1247, - 1255, 1261, 1278, 1274, 1279, 1207, 1282, 1280, 1294, 1290, - 1301, 1295, 1306, 1300, 1302, 1296, 1299, 1309, 1316, 1317, - - 1330, 1322, 1335, 1331, 1333, 1347, 1349, 1339, 1344, 1340, - 1358, 1364, 1361, 1367, 1374, 1366, 1376, 1377, 1373, 1392, - 1395, 1385, 1381, 1406, 4001, 1409, 1413, 1408, 1400, 1422, - 1411, 4001, 4001, 1404, 4001, 4001, 1414, 1431, 1424, 1436, - 1463, 1434, 1441, 1427, 1453, 1446, 1462, 1471, 1461, 1473, - 1457, 1480, 1484, 1486, 1483, 1492, 1499, 1488, 1490, 1516, - 1525, 1527, 1521, 1522, 1526, 1529, 1512, 1531, 1533, 1535, - 1538, 1542, 1547, 4001, 1541, 1545, 1549, 1555, 1572, 4001, - 1557, 1574, 1560, 1565, 1567, 1568, 1571, 1586, 1573, 1577, - 1594, 1595, 1605, 1599, 1600, 1624, 1621, 1610, 1616, 1626, - - 1612, 1634, 1638, 1637, 1627, 1636, 1646, 1630, 1644, 1647, - 1651, 1655, 1656, 1657, 1665, 1706, 1664, 1670, 1662, 1683, - 1680, 1678, 1686, 1663, 1674, 1729, 1713, 1702, 1692, 1719, - 1727, 1726, 1725, 1731, 1724, 1744, 4001, 1745, 1757, 1746, - 1754, 1758, 1749, 1761, 1759, 1764, 1773, 1775, 1771, 1783, - 4001, 1782, 1781, 1788, 1806, 1807, 1808, 1795, 1816, 1787, - 4001, 1823, 1820, 1815, 1810, 1809, 1838, 1828, 1827, 1848, - 1840, 1842, 1851, 1860, 1852, 1844, 1863, 1854, 1855, 1850, - 1873, 1878, 1887, 1876, 1888, 1884, 1900, 1902, 1889, 1906, - 1890, 1893, 1896, 139, 1910, 1903, 1905, 1913, 4001, 76, - - 1927, 1929, 1922, 1930, 1947, 1920, 1931, 1932, 1943, 1935, - 1949, 1934, 1960, 1961, 1954, 1962, 1959, 1977, 1965, 1981, - 1974, 1980, 1987, 1986, 1996, 1972, 1999, 1991, 2001, 2007, - 1994, 4001, 2004, 2005, 2025, 2018, 2030, 2040, 2020, 2024, - 2032, 2052, 2048, 2045, 2051, 2054, 2044, 2058, 2047, 2066, - 2062, 2073, 2065, 2082, 2085, 2080, 4001, 2083, 2081, 2077, - 2088, 2079, 2097, 2106, 2109, 2092, 2116, 2119, 2131, 4001, - 2132, 2133, 2118, 2139, 2121, 2140, 2144, 2142, 2130, 2146, - 2145, 2147, 2157, 2164, 2156, 4001, 2159, 2160, 2176, 2186, - 2179, 2166, 2178, 2192, 2174, 2172, 2200, 2184, 2187, 2191, - - 2197, 2190, 2201, 2202, 2212, 2218, 4001, 2242, 2206, 2222, - 2225, 2228, 2221, 2239, 2233, 2237, 2244, 2248, 2253, 2249, - 2267, 2260, 2259, 2252, 2269, 2276, 2268, 2286, 2297, 2301, - 2299, 4001, 2298, 2302, 2292, 2293, 2314, 2305, 2296, 2303, - 2309, 2318, 2311, 2325, 2321, 2324, 2327, 2328, 2336, 2332, - 2341, 2330, 2355, 2357, 2352, 2362, 2349, 2366, 2367, 2374, - 2370, 2379, 4001, 2368, 4001, 2376, 2384, 2395, 4001, 2400, - 4001, 2402, 4001, 2401, 2406, 2394, 2389, 2405, 2403, 2415, - 2399, 2422, 2398, 2413, 2431, 2425, 2433, 4001, 2421, 2429, - 2452, 2434, 2437, 2447, 2461, 2450, 2472, 2449, 2445, 2473, - - 2477, 4001, 2470, 2460, 2486, 2482, 2490, 2474, 2476, 2478, - 2488, 2484, 2501, 2508, 2509, 2503, 2504, 2512, 2513, 2511, - 2516, 2530, 2517, 2522, 2525, 4001, 2538, 2540, 2549, 2539, - 4001, 4001, 2545, 2557, 2563, 2554, 2562, 2556, 2582, 2569, - 2566, 2577, 2559, 2586, 2574, 2589, 2583, 2593, 2606, 2596, - 2597, 4001, 2604, 2609, 2618, 2616, 2605, 2621, 2624, 2638, - 4001, 4001, 2632, 2631, 2628, 2634, 2650, 2642, 4001, 2636, - 2658, 2652, 2665, 2667, 2669, 2659, 2661, 2675, 2677, 2683, - 2686, 2654, 2688, 2689, 2684, 2701, 2706, 4001, 2699, 2712, - 2718, 2702, 2705, 2710, 2719, 2711, 2720, 2721, 2740, 2738, - - 4001, 2744, 2725, 2746, 2728, 2749, 2755, 2748, 2747, 2742, - 2752, 2757, 2733, 2763, 2765, 2784, 2767, 4001, 2769, 2795, - 2782, 2793, 2789, 2775, 2802, 2780, 2792, 4001, 2805, 2817, - 2811, 2814, 2815, 2818, 2825, 2816, 2824, 2827, 2832, 2843, - 2844, 2840, 2861, 2855, 2835, 2851, 2830, 2860, 2868, 2873, - 2863, 2883, 2869, 2880, 2874, 2864, 2897, 2876, 2901, 2882, - 4001, 2902, 2885, 2906, 2908, 2910, 2911, 2909, 4001, 4001, - 2907, 4001, 2938, 2904, 2921, 2931, 4001, 2920, 4001, 4001, - 2929, 2927, 2934, 2925, 2953, 2959, 4001, 2956, 2942, 2967, - 2952, 2948, 2964, 2969, 2957, 2965, 4001, 2966, 2986, 2979, - - 2992, 4001, 2990, 3002, 2983, 3000, 3012, 3006, 3013, 2989, - 3003, 3024, 3016, 4001, 3025, 3008, 3026, 3030, 3046, 3035, - 3038, 3048, 4001, 3049, 3051, 4001, 3050, 3039, 3045, 4001, - 3062, 4001, 3064, 3067, 3071, 3079, 3075, 3093, 3077, 3095, - 3098, 3087, 3101, 3097, 4001, 4001, 3104, 3108, 3109, 3106, - 3107, 3111, 3102, 3116, 3120, 3122, 4001, 3126, 3132, 3131, - 3142, 3134, 4001, 3156, 3157, 3149, 3153, 3163, 3165, 3167, - 3158, 3170, 3172, 3169, 3174, 3175, 3176, 4001, 3181, 3200, - 3185, 3205, 3189, 3203, 3208, 3213, 3206, 3191, 3217, 4001, - 3219, 3194, 3222, 3215, 3216, 3221, 3227, 3232, 3236, 3234, - - 3243, 3251, 3253, 3268, 3261, 4001, 3247, 4001, 3264, 3270, - 3272, 3274, 4001, 3254, 3278, 4001, 3279, 3281, 3276, 3289, - 3301, 3307, 3306, 3292, 3310, 3295, 3313, 3325, 3317, 4001, - 3308, 3321, 3319, 3328, 4001, 4001, 3331, 4001, 4001, 3329, - 4001, 4001, 3338, 3336, 4001, 3347, 4001, 3353, 3359, 3345, - 3340, 3363, 4001, 3364, 4001, 4001, 3366, 3367, 3365, 3370, - 3373, 3376, 3377, 3372, 3383, 3393, 3395, 3396, 3389, 3385, - 3404, 3388, 3397, 3406, 3394, 3411, 3412, 3421, 3422, 3429, - 4001, 3424, 3436, 4001, 3443, 3438, 3435, 3440, 3441, 3439, - 3452, 3460, 3465, 3457, 3454, 3456, 4001, 3461, 4001, 4001, - - 3469, 3475, 3490, 3479, 3477, 4001, 3491, 3474, 3497, 3508, - 4001, 4001, 4001, 3509, 3492, 3502, 3507, 3518, 3505, 4001, - 3500, 3520, 3521, 3516, 3528, 3530, 3537, 3544, 3546, 4001, - 3549, 3539, 4001, 3553, 3547, 3550, 3552, 3562, 3558, 4001, - 3565, 3572, 3568, 3566, 3569, 3574, 3592, 4001, 3589, 3587, - 4001, 3603, 4001, 4001, 3585, 3606, 3601, 3608, 3610, 3595, - 3609, 3619, 3617, 3616, 4001, 4001, 3615, 4001, 4001, 3622, - 3618, 3632, 3628, 3636, 3633, 3634, 3631, 3653, 3644, 4001, - 3663, 4001, 3649, 3669, 3668, 3661, 4001, 3665, 3671, 3648, - 4001, 4001, 3677, 3684, 3678, 4001, 3681, 3693, 3688, 3691, - - 3703, 3708, 3700, 3704, 3711, 3720, 3695, 3705, 3726, 3731, - 4001, 3728, 3722, 3718, 3737, 3739, 3735, 3729, 3745, 3757, - 3747, 3760, 3751, 4001, 3761, 3766, 3773, 3776, 3777, 3774, - 3780, 4001, 3781, 4001, 3783, 3784, 4001, 4001, 3786, 3785, - 3790, 4001, 3791, 4001, 3799, 3805, 3810, 4001, 4001, 4001, - 3815, 4001, 3816, 4001, 3824, 3812, 4001, 3807, 3828, 3829, - 4001, 3830, 4001, 3831, 4001, 3821, 3834, 4001, 4001, 4001, - 4001, 3832, 3818, 3840, 3841, 4001, 3849, 3839, 3851, 3844, - 4001, 4001, 3909, 3916, 3923, 3930, 3937, 82, 3944, 3951, - 3958, 3965, 3972, 3979, 3986, 3993 - + 129, 135, 428, 340, 95, 4656, 4656, 4656, 107, 110, + 142, 180, 108, 50, 145, 172, 118, 148, 121, 181, + 197, 166, 217, 223, 251, 230, 164, 262, 116, 312, + 4656, 4656, 4656, 94, 298, 4656, 4656, 4656, 96, 269, + 294, 4656, 4656, 4656, 244, 254, 4656, 4656, 4656, 102, + 249, 4656, 259, 4656, 247, 287, 237, 309, 111, 0, + 313, 0, 0, 284, 170, 265, 288, 289, 296, 305, + 301, 273, 302, 328, 306, 311, 308, 309, 216, 325, + 329, 339, 353, 344, 356, 357, 338, 365, 346, 367, + + 369, 368, 372, 373, 394, 386, 402, 383, 392, 399, + 396, 400, 401, 410, 423, 421, 419, 426, 431, 438, + 428, 434, 203, 159, 177, 169, 141, 483, 165, 122, + 174, 115, 490, 494, 0, 461, 463, 467, 477, 485, + 481, 478, 501, 495, 476, 510, 554, 245, 480, 506, + 490, 512, 509, 504, 517, 534, 497, 545, 551, 533, + 539, 538, 561, 587, 560, 577, 543, 571, 579, 573, + 596, 590, 588, 583, 599, 585, 600, 601, 598, 604, + 611, 621, 623, 602, 349, 630, 645, 625, 634, 641, + 657, 651, 660, 643, 658, 666, 663, 649, 665, 638, + + 678, 669, 685, 690, 213, 696, 698, 684, 693, 692, + 705, 701, 702, 689, 713, 726, 737, 718, 716, 721, + 733, 743, 729, 735, 740, 753, 748, 745, 765, 741, + 760, 763, 771, 786, 759, 790, 774, 780, 787, 797, + 799, 801, 810, 807, 803, 812, 806, 837, 821, 828, + 834, 809, 814, 824, 830, 838, 846, 863, 854, 908, + 864, 869, 865, 856, 870, 874, 862, 887, 873, 889, + 902, 898, 903, 912, 916, 914, 954, 913, 939, 940, + 934, 960, 938, 945, 943, 949, 959, 969, 973, 970, + 982, 985, 976, 983, 981, 992, 996, 978, 1002, 1001, + + 1010, 1015, 1012, 1003, 1021, 4656, 1026, 1004, 1028, 1023, + 1033, 4656, 1037, 1038, 1020, 1041, 1048, 1006, 1044, 1047, + 1049, 1063, 1051, 1072, 1064, 1060, 1107, 1075, 1076, 1104, + 1098, 1085, 1110, 1089, 1116, 1103, 1112, 1131, 1102, 1125, + 1122, 1144, 1136, 1141, 1157, 1130, 1150, 1148, 1151, 899, + 1158, 1160, 1173, 1152, 1178, 1179, 1169, 1177, 1159, 1192, + 1205, 1202, 1207, 1213, 1189, 1206, 1208, 1217, 1214, 1215, + 1201, 1219, 1222, 1209, 1248, 1225, 1237, 1234, 1249, 1240, + 1253, 1254, 1250, 1261, 1246, 1280, 1269, 1268, 1288, 1294, + 1267, 1282, 1284, 1299, 1302, 1303, 1314, 1275, 1307, 1310, + + 1342, 1318, 1317, 1321, 1331, 1333, 1327, 1332, 1335, 1344, + 1341, 1343, 1350, 1337, 1348, 1371, 1370, 1373, 1376, 1366, + 1368, 1377, 1378, 1386, 1389, 1397, 1401, 1392, 1400, 1411, + 1408, 1416, 1412, 1426, 1404, 1431, 4656, 1445, 1442, 1424, + 1437, 1448, 1443, 1435, 1484, 4656, 1439, 4656, 4656, 1451, + 4656, 4656, 1465, 1438, 1473, 1449, 1532, 1475, 1467, 1472, + 1483, 1490, 1491, 1504, 1499, 1518, 1525, 1510, 1502, 1508, + 1513, 1537, 1541, 1535, 1542, 1543, 1561, 1562, 1557, 1566, + 1559, 1565, 1558, 1570, 1574, 1579, 1582, 1586, 1577, 4656, + 1588, 1584, 1594, 1592, 1609, 4656, 1589, 1600, 1603, 1606, + + 1613, 1611, 1619, 1625, 1623, 1630, 1633, 1634, 1637, 1639, + 1640, 1618, 1667, 1661, 1652, 1660, 1668, 1653, 1676, 1682, + 1680, 1666, 1678, 1686, 1669, 1685, 1690, 1687, 1693, 1696, + 1695, 1694, 1744, 1721, 1712, 1705, 1716, 1701, 1723, 1724, + 1732, 1741, 1757, 1761, 1759, 1713, 1763, 1764, 1748, 1795, + 1780, 1765, 1786, 1804, 1797, 1800, 1806, 1790, 1767, 1807, + 4656, 1799, 1812, 1791, 1827, 1814, 1824, 1835, 1826, 1847, + 1829, 1836, 1846, 1861, 4656, 1839, 1841, 1854, 1860, 1870, + 1873, 1871, 1863, 1887, 4656, 1893, 1900, 1881, 1879, 1883, + 1892, 1888, 1907, 1908, 1910, 1902, 1911, 1899, 1914, 1906, + + 1922, 1928, 1929, 1927, 1940, 1937, 1952, 1941, 1955, 1949, + 1950, 1936, 1965, 1951, 1970, 1964, 1967, 1976, 120, 1972, + 1986, 1977, 1973, 4656, 76, 1987, 1991, 1982, 2009, 2011, + 2007, 2005, 2010, 2015, 2016, 2025, 2008, 2021, 2023, 2038, + 2029, 2052, 2050, 2054, 2043, 2042, 2046, 2051, 2058, 2047, + 2070, 2067, 2079, 2080, 2077, 2081, 2087, 2076, 2084, 2082, + 2106, 2102, 2098, 2111, 4656, 2119, 2107, 2116, 2108, 2125, + 2140, 2122, 2129, 2144, 2135, 2136, 2145, 2149, 2157, 2151, + 2156, 2152, 2147, 2163, 2174, 2168, 2171, 2190, 2178, 4656, + 2182, 2176, 2192, 2180, 2193, 2188, 2197, 2207, 2202, 2214, + + 2213, 2222, 4656, 2229, 2231, 2223, 2230, 2224, 2243, 2240, + 2246, 2233, 2256, 2239, 2257, 2263, 2250, 2259, 2269, 4656, + 2252, 2279, 2273, 2285, 2284, 2275, 2271, 2287, 2277, 2290, + 2289, 2281, 2295, 2292, 2298, 2303, 2302, 2314, 2308, 2328, + 4656, 2338, 2309, 2335, 2337, 2330, 2350, 2345, 2336, 2329, + 2325, 2355, 2356, 2362, 2359, 2363, 2366, 2368, 2371, 2354, + 2372, 2392, 2394, 2398, 2386, 2393, 2390, 2409, 2389, 2417, + 2396, 2412, 2425, 4656, 2427, 2428, 2420, 2416, 2445, 2438, + 2421, 2431, 2430, 2432, 2457, 2468, 2447, 2452, 2454, 2461, + 2455, 2449, 2460, 2484, 2481, 2487, 2476, 2483, 2474, 2499, + + 2500, 2502, 2495, 2508, 4656, 2507, 4656, 2504, 2516, 2524, + 4656, 2523, 4656, 2528, 4656, 2527, 2536, 2526, 2513, 2531, + 2534, 2532, 2546, 2529, 2559, 2540, 2558, 2544, 2551, 2572, + 4656, 2561, 2566, 2581, 2563, 2564, 2574, 2590, 2593, 2585, + 2575, 2586, 2603, 2599, 4656, 2591, 2613, 2604, 2608, 2630, + 2627, 2619, 2620, 2632, 2625, 2631, 2642, 2638, 2626, 2643, + 2647, 2663, 2622, 2671, 2673, 2674, 2660, 2661, 2664, 2666, + 2670, 2672, 2687, 2690, 2693, 2675, 4656, 2677, 2708, 2709, + 2700, 4656, 4656, 2722, 2723, 2719, 2712, 2720, 2706, 2732, + 2745, 2734, 2731, 2737, 2747, 2748, 2749, 2740, 2751, 2761, + + 2764, 2752, 4656, 2777, 2767, 2781, 2776, 2775, 2787, 2773, + 2796, 4656, 4656, 2790, 2788, 2792, 2797, 2815, 2802, 2803, + 4656, 2800, 2827, 2828, 2829, 2830, 2832, 2813, 2823, 2839, + 2837, 2840, 2857, 2848, 2858, 2853, 2866, 2846, 2849, 4656, + 2865, 2877, 2875, 2876, 2873, 2878, 2868, 2884, 2885, 2886, + 2900, 2891, 2892, 2899, 2903, 2904, 2923, 2905, 2928, 2929, + 2939, 2933, 4656, 2941, 2926, 2942, 2918, 2940, 2945, 2952, + 2962, 2937, 2938, 2955, 2956, 2959, 2935, 2979, 2967, 4656, + 2969, 2990, 2982, 2984, 2983, 2972, 2994, 2986, 2999, 4656, + 3011, 3004, 3000, 3021, 3023, 3024, 3025, 3010, 3017, 3014, + + 3031, 3039, 3026, 3036, 3038, 3040, 3043, 3055, 3072, 3071, + 3078, 3079, 3057, 3065, 3084, 3073, 3082, 3075, 3063, 3093, + 3081, 3097, 3089, 4656, 3091, 3095, 3107, 3111, 3114, 3120, + 3116, 4656, 4656, 3115, 4656, 3121, 3123, 3109, 3122, 3137, + 3113, 3135, 3140, 3141, 3143, 4656, 3162, 3151, 3152, 3156, + 4656, 3171, 4656, 4656, 3159, 3179, 3160, 3175, 3178, 3181, + 4656, 3184, 3189, 3192, 3194, 3183, 3185, 3187, 3198, 3203, + 4656, 3212, 3225, 3210, 3220, 4656, 3218, 3231, 3207, 3230, + 3236, 3241, 3243, 3249, 3244, 3245, 3256, 4656, 3247, 3255, + 3251, 3265, 3272, 3278, 3270, 3273, 4656, 3282, 3290, 4656, + + 3276, 3293, 3294, 4656, 3292, 4656, 3296, 3300, 3299, 3309, + 3301, 3321, 3331, 3314, 3328, 3329, 3322, 3338, 3336, 4656, + 4656, 3337, 3339, 3342, 3340, 3345, 3347, 4656, 3351, 3348, + 3358, 3367, 3363, 3365, 3370, 3384, 3385, 3372, 3388, 3374, + 3377, 4656, 3378, 3379, 3397, 3395, 3405, 4656, 3417, 3416, + 3408, 3415, 3429, 3431, 3433, 3423, 3437, 3438, 3420, 3440, + 3441, 3432, 4656, 3444, 3452, 3435, 3461, 3455, 3463, 3467, + 3471, 3474, 3456, 3477, 4656, 3480, 3458, 3485, 3482, 3481, + 3490, 3478, 3479, 3489, 3516, 3500, 3514, 3517, 3511, 3528, + 3527, 4656, 3509, 4656, 3524, 3534, 3532, 3538, 4656, 3530, + + 3537, 4656, 3543, 3558, 3540, 4656, 3568, 3555, 3570, 3565, + 3561, 3559, 3579, 4656, 3583, 3581, 3589, 3586, 3573, 3590, + 3592, 3596, 3603, 3609, 4656, 3606, 3619, 3617, 3627, 4656, + 4656, 3630, 4656, 4656, 3626, 4656, 4656, 3632, 3634, 4656, + 3635, 4656, 3613, 3640, 3639, 3616, 3642, 4656, 3645, 4656, + 4656, 3643, 3658, 3636, 3666, 3673, 3676, 3678, 3667, 3662, + 3669, 3672, 3674, 3683, 3670, 3691, 3693, 3695, 3689, 3699, + 3668, 3700, 3705, 3719, 3720, 3704, 4656, 4656, 3708, 3715, + 3716, 3710, 3731, 3729, 3726, 3753, 4656, 3734, 3736, 3747, + 3741, 3746, 3750, 3751, 3769, 3779, 3767, 3765, 3763, 4656, + + 3768, 4656, 4656, 3778, 3785, 3799, 3786, 3789, 4656, 3800, + 3802, 3803, 3804, 4656, 4656, 4656, 3816, 3796, 3810, 3815, + 3827, 3814, 3828, 4656, 3823, 3830, 3834, 3825, 3822, 3824, + 3857, 3856, 3858, 4656, 3868, 3865, 3866, 3861, 3859, 3864, + 3873, 3863, 4656, 3876, 3867, 3895, 3899, 3886, 3900, 4656, + 3891, 3892, 3889, 3903, 3915, 3913, 3918, 4656, 3916, 3907, + 4656, 3917, 4656, 4656, 3926, 3927, 3929, 3924, 3933, 3941, + 3931, 3943, 3965, 3962, 3959, 4656, 4656, 3958, 4656, 4656, + 3954, 3961, 3951, 3947, 3968, 3975, 3960, 3989, 3981, 3976, + 3985, 3978, 3987, 3991, 4002, 3993, 4656, 4012, 4656, 4003, + + 4019, 4018, 4014, 4656, 4016, 4020, 4006, 4656, 4656, 4656, + 4030, 4036, 4042, 4656, 4048, 4045, 4034, 4060, 4049, 4064, + 4041, 4056, 4656, 4052, 4058, 4070, 4068, 4072, 4082, 4076, + 4081, 4063, 4083, 4096, 4100, 4656, 4106, 4087, 4090, 4118, + 4119, 4103, 4108, 4104, 4121, 4113, 4131, 4123, 4130, 4126, + 4137, 4656, 4138, 4135, 4656, 4141, 4151, 4159, 4160, 4161, + 4162, 4166, 4656, 4171, 4656, 4173, 4169, 4656, 4656, 4168, + 4175, 4179, 4656, 4180, 4186, 4181, 4192, 4193, 4200, 4656, + 4656, 4195, 4190, 4212, 4656, 4656, 4656, 4191, 4656, 4217, + 4656, 4223, 4211, 4656, 4207, 4228, 4208, 4230, 4219, 4224, + + 4242, 4235, 4249, 4656, 4258, 4656, 4259, 4656, 4251, 4260, + 4656, 4268, 4252, 4265, 4256, 4253, 4257, 4656, 4656, 4656, + 4278, 4269, 4264, 4280, 4276, 4285, 4281, 4295, 4311, 4304, + 4309, 4312, 4293, 4300, 4323, 4316, 4656, 4319, 4305, 4327, + 4329, 4321, 4336, 4328, 4338, 4339, 4340, 4346, 4341, 4364, + 4365, 4356, 4371, 4373, 4376, 4377, 4374, 4368, 4384, 4383, + 4387, 4388, 4392, 4394, 4399, 4656, 4411, 4403, 4404, 4405, + 4424, 4430, 4409, 4426, 4436, 4439, 4434, 4429, 4442, 4440, + 4451, 4446, 4454, 4453, 4656, 4455, 4471, 4464, 4469, 4478, + 4470, 4474, 4494, 4477, 4500, 4484, 4490, 4501, 4656, 4497, + + 4656, 4656, 4504, 4499, 4506, 4512, 4513, 4656, 4656, 4656, + 4564, 4571, 4578, 4585, 4592, 82, 4599, 4606, 4613, 4620, + 4627, 4634, 4641, 4648 } ; -static yyconst flex_int16_t yy_def[1397] = +static yyconst flex_int16_t yy_def[1625] = { 0, - 1382, 1, 1383, 1383, 1384, 1384, 1385, 1385, 1386, 1386, - 1387, 1387, 1382, 1388, 1382, 1382, 1382, 1382, 1389, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1390, - 1382, 1382, 1382, 1390, 1391, 1382, 1382, 1382, 1391, 1392, - 1382, 1382, 1382, 1382, 1392, 1393, 1382, 1382, 1382, 1393, - 1394, 1382, 1395, 1382, 1394, 1394, 1388, 1388, 1382, 1396, - 1389, 1396, 1389, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1390, 1390, 1391, 1391, 1392, 1392, 1382, 1393, 1393, - 1394, 1394, 1395, 1395, 1394, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1394, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1394, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, - - 1388, 1388, 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1394, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1394, - 1388, 1388, 1388, 1388, 1382, 1388, 1388, 1388, 1388, 1388, - 1388, 1382, 1382, 1388, 1382, 1382, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1382, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1394, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1394, - - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - - 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1382, 1388, 1382, 1388, 1388, 1388, 1382, 1388, - 1382, 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - - 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, 1388, 1388, - 1382, 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1382, 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - - 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1382, - 1388, 1382, 1388, 1388, 1388, 1388, 1382, 1388, 1382, 1382, - 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, 1388, - - 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1382, 1388, 1388, 1382, 1388, 1388, 1388, 1382, - 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1382, 1382, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, 1388, - 1388, 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - - 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1382, 1388, 1388, - 1388, 1388, 1382, 1388, 1388, 1382, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, - 1388, 1388, 1388, 1388, 1382, 1382, 1388, 1382, 1382, 1388, - 1382, 1382, 1388, 1388, 1382, 1388, 1382, 1388, 1388, 1388, - 1388, 1388, 1382, 1388, 1382, 1382, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1382, 1388, 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1382, 1382, - - 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, 1388, 1388, - 1382, 1382, 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1382, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, - 1388, 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1382, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, - 1382, 1388, 1382, 1382, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1382, 1382, 1388, 1382, 1382, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, - 1388, 1382, 1388, 1388, 1388, 1388, 1382, 1388, 1388, 1388, - 1382, 1382, 1388, 1388, 1388, 1382, 1388, 1388, 1388, 1388, - - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1382, 1388, 1382, 1388, 1388, 1382, 1382, 1388, 1388, - 1388, 1382, 1388, 1382, 1388, 1388, 1388, 1382, 1382, 1382, - 1388, 1382, 1388, 1382, 1388, 1388, 1382, 1388, 1388, 1388, - 1382, 1388, 1382, 1388, 1382, 1388, 1388, 1382, 1382, 1382, - 1382, 1388, 1388, 1388, 1388, 1382, 1388, 1388, 1388, 1388, - 1382, 0, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 1382, 1382 - + 1610, 1, 1611, 1611, 1612, 1612, 1613, 1613, 1614, 1614, + 1615, 1615, 1610, 1616, 1610, 1610, 1610, 1610, 1617, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1618, + 1610, 1610, 1610, 1618, 1619, 1610, 1610, 1610, 1619, 1620, + 1610, 1610, 1610, 1610, 1620, 1621, 1610, 1610, 1610, 1621, + 1622, 1610, 1623, 1610, 1622, 1622, 1616, 1616, 1610, 1624, + 1617, 1624, 1617, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1618, 1618, 1619, 1619, 1620, 1620, 1610, 1621, + 1621, 1622, 1622, 1623, 1623, 1622, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1622, 1616, 1616, 1616, 1616, 1616, 1616, + + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1622, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + + 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, + 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1622, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1622, 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1610, 1610, 1616, + 1610, 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1610, + 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, + + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1622, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1610, 1622, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1610, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + + 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1610, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + + 1616, 1616, 1616, 1616, 1610, 1616, 1610, 1616, 1616, 1616, + 1610, 1616, 1610, 1616, 1610, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, + 1616, 1610, 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + + 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1610, 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1610, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1610, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1610, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1610, 1610, 1616, 1610, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, + 1610, 1616, 1610, 1610, 1616, 1616, 1616, 1616, 1616, 1616, + 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1610, 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1610, + + 1616, 1616, 1616, 1610, 1616, 1610, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1610, + 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1610, 1616, 1610, 1616, 1616, 1616, 1616, 1610, 1616, + + 1616, 1610, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1610, + 1610, 1616, 1610, 1610, 1616, 1610, 1610, 1616, 1616, 1610, + 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1610, + 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1610, 1610, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1610, + + 1616, 1610, 1610, 1616, 1616, 1616, 1616, 1616, 1610, 1616, + 1616, 1616, 1616, 1610, 1610, 1610, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1610, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, + 1610, 1616, 1610, 1610, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1610, 1610, 1616, 1610, 1610, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1610, 1616, + + 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1610, 1610, 1610, + 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1610, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1610, 1616, 1610, 1616, 1616, 1610, 1610, 1616, + 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1610, + 1610, 1616, 1616, 1616, 1610, 1610, 1610, 1616, 1610, 1616, + 1610, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, + + 1616, 1616, 1616, 1610, 1616, 1610, 1616, 1610, 1616, 1616, + 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1610, 1610, 1610, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1610, 1616, + + 1610, 1610, 1616, 1616, 1616, 1616, 1616, 1610, 1610, 0, + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + 1610, 1610, 1610, 1610 } ; -static yyconst flex_int16_t yy_nxt[4067] = +static yyconst flex_int16_t yy_nxt[4722] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, 14, 18, 20, 14, 21, 22, 23, 24, 14, 25, @@ -896,449 +971,522 @@ static yyconst flex_int16_t yy_nxt[4067] = 14, 21, 22, 23, 24, 14, 25, 26, 27, 28, 29, 30, 31, 32, 33, 14, 34, 35, 36, 37, 38, 14, 14, 14, 14, 41, 42, 43, 41, 42, - 43, 46, 47, 46, 47, 48, 86, 48, 51, 52, + 43, 46, 47, 46, 47, 48, 87, 48, 51, 52, 53, 54, 67, 18, 51, 52, 53, 54, 68, 18, - 57, 58, 59, 57, 58, 59, 69, 122, 122, 124, + 57, 58, 59, 57, 58, 59, 69, 123, 123, 125, - 70, 44, 124, 86, 44, 129, 129, 49, 72, 49, - 72, 72, 69, 72, 132, 55, 70, 67, 72, 67, - 67, 55, 67, 84, 74, 75, 60, 67, 157, 60, + 70, 44, 125, 87, 44, 130, 130, 49, 72, 49, + 72, 72, 69, 72, 133, 55, 70, 67, 72, 67, + 67, 55, 67, 85, 74, 75, 60, 67, 724, 60, 15, 16, 17, 62, 63, 64, 15, 16, 17, 62, - 63, 64, 76, 85, 180, 73, 68, 690, 68, 65, - 84, 74, 75, 132, 77, 65, 80, 122, 122, 68, - 81, 78, 89, 82, 94, 90, 83, 66, 79, 76, - 85, 87, 91, 66, 92, 68, 65, 68, 68, 88, - 68, 77, 65, 80, 93, 68, 68, 81, 78, 89, - 82, 94, 90, 83, 136, 79, 68, 68, 87, 91, - - 95, 92, 96, 130, 100, 128, 88, 103, 101, 127, - 97, 93, 68, 68, 129, 129, 98, 140, 68, 124, - 99, 136, 124, 193, 102, 125, 68, 95, 68, 96, - 68, 100, 104, 123, 103, 101, 108, 97, 105, 68, - 118, 106, 111, 98, 140, 119, 109, 99, 107, 110, - 68, 102, 112, 68, 68, 137, 113, 114, 68, 104, - 115, 135, 116, 108, 68, 105, 120, 118, 106, 111, - 121, 132, 119, 109, 132, 107, 110, 117, 68, 112, - 130, 128, 137, 113, 114, 127, 68, 115, 135, 116, - 125, 123, 68, 120, 68, 1382, 126, 121, 126, 126, - - 72, 126, 72, 72, 117, 72, 131, 139, 131, 131, - 67, 131, 67, 67, 72, 67, 72, 72, 138, 72, - 67, 142, 141, 143, 72, 68, 145, 147, 144, 149, - 1382, 68, 68, 68, 139, 68, 68, 134, 68, 148, - 68, 151, 1382, 146, 150, 138, 68, 152, 142, 141, - 143, 73, 153, 68, 147, 144, 149, 68, 154, 158, - 163, 155, 1382, 68, 68, 68, 148, 68, 151, 68, - 146, 150, 159, 161, 152, 156, 164, 162, 165, 153, - 1382, 167, 68, 1382, 1382, 154, 158, 163, 155, 68, - 166, 168, 160, 169, 68, 68, 1382, 68, 171, 159, - - 161, 68, 156, 164, 162, 165, 170, 68, 167, 1382, - 68, 68, 173, 68, 172, 175, 174, 166, 168, 160, - 169, 68, 68, 68, 176, 171, 182, 178, 177, 181, - 1382, 1382, 1382, 170, 68, 68, 179, 201, 68, 173, - 68, 172, 175, 174, 68, 68, 183, 185, 184, 188, - 1382, 176, 68, 182, 178, 177, 181, 68, 68, 186, - 187, 190, 189, 179, 68, 68, 1382, 1382, 68, 1382, - 68, 68, 1382, 183, 185, 184, 188, 68, 126, 191, - 126, 126, 192, 126, 197, 1382, 186, 187, 190, 189, - 131, 68, 131, 131, 72, 131, 72, 72, 194, 72, - - 195, 196, 198, 132, 68, 214, 191, 199, 200, 192, - 68, 197, 207, 68, 1382, 208, 210, 68, 209, 68, - 68, 211, 1382, 68, 1382, 194, 1382, 195, 196, 212, - 68, 134, 214, 68, 199, 200, 202, 213, 68, 207, - 68, 203, 208, 210, 68, 209, 204, 1382, 211, 217, - 68, 68, 205, 206, 215, 218, 212, 216, 68, 68, - 219, 1382, 222, 202, 213, 220, 1382, 221, 203, 68, - 223, 226, 68, 204, 229, 224, 217, 68, 68, 205, - 206, 215, 218, 227, 216, 225, 68, 219, 231, 228, - 232, 230, 220, 68, 221, 68, 68, 223, 238, 1382, - - 233, 68, 68, 234, 235, 68, 68, 236, 1382, 237, - 227, 68, 225, 68, 68, 240, 228, 68, 230, 68, - 68, 68, 68, 239, 68, 238, 241, 233, 68, 245, - 234, 235, 242, 249, 236, 68, 237, 68, 243, 244, - 1382, 252, 240, 247, 246, 1382, 250, 68, 68, 248, - 239, 68, 251, 241, 68, 254, 260, 255, 1382, 242, - 68, 259, 257, 253, 68, 243, 244, 258, 68, 68, - 247, 246, 68, 250, 256, 68, 248, 132, 68, 251, - 68, 261, 68, 262, 255, 264, 68, 68, 259, 257, - 253, 263, 266, 270, 258, 68, 265, 271, 68, 267, - - 68, 256, 268, 68, 68, 68, 269, 272, 261, 273, - 262, 274, 264, 276, 278, 1382, 68, 68, 263, 266, - 270, 68, 275, 265, 271, 68, 267, 68, 68, 268, - 68, 277, 280, 269, 272, 68, 273, 279, 284, 68, - 276, 68, 68, 282, 68, 68, 281, 68, 283, 275, - 1382, 286, 68, 68, 285, 287, 288, 68, 277, 280, - 298, 289, 293, 1382, 279, 284, 68, 292, 68, 290, - 282, 1382, 291, 281, 68, 283, 68, 68, 286, 68, - 68, 285, 295, 288, 294, 68, 68, 68, 289, 293, - 296, 297, 299, 302, 292, 303, 290, 68, 68, 291, - - 300, 304, 305, 301, 309, 68, 306, 1382, 1382, 295, - 68, 294, 311, 68, 307, 68, 68, 296, 297, 299, - 302, 312, 303, 313, 68, 319, 68, 300, 68, 305, - 301, 308, 68, 306, 68, 68, 310, 320, 68, 311, - 314, 307, 318, 68, 315, 68, 321, 316, 312, 317, - 313, 1382, 68, 68, 322, 68, 68, 323, 308, 68, - 68, 68, 324, 310, 320, 334, 326, 314, 338, 318, - 68, 315, 335, 321, 316, 337, 317, 68, 325, 68, - 68, 322, 336, 68, 323, 1382, 68, 339, 132, 324, - 68, 340, 334, 326, 68, 338, 1382, 341, 342, 335, - - 343, 344, 337, 360, 68, 325, 327, 328, 345, 336, - 68, 1382, 68, 346, 339, 68, 329, 347, 330, 331, - 332, 68, 68, 333, 341, 342, 68, 343, 348, 349, - 360, 68, 68, 327, 328, 345, 354, 1382, 351, 68, - 346, 350, 352, 329, 347, 330, 331, 332, 68, 68, - 333, 353, 355, 68, 361, 363, 364, 68, 356, 357, - 370, 68, 1382, 354, 68, 351, 362, 68, 350, 352, - 358, 365, 68, 68, 367, 68, 68, 366, 353, 355, - 368, 361, 363, 359, 372, 356, 357, 68, 68, 68, - 369, 68, 68, 362, 68, 375, 68, 358, 365, 371, - - 68, 367, 68, 373, 366, 68, 374, 368, 377, 376, - 359, 372, 378, 380, 68, 379, 68, 369, 68, 68, - 1382, 68, 375, 1382, 381, 389, 371, 382, 387, 68, - 373, 68, 383, 374, 1382, 377, 376, 384, 68, 378, - 380, 68, 379, 68, 68, 68, 385, 68, 386, 388, - 68, 381, 1382, 68, 382, 387, 68, 390, 391, 383, - 393, 68, 394, 68, 384, 392, 68, 396, 68, 395, - 403, 68, 397, 385, 68, 386, 388, 68, 68, 404, - 68, 407, 1382, 68, 390, 391, 405, 393, 68, 394, - 68, 68, 392, 408, 396, 406, 395, 403, 1382, 397, - - 398, 409, 411, 68, 410, 399, 404, 400, 407, 412, - 414, 413, 1382, 416, 68, 401, 415, 68, 68, 68, - 408, 68, 406, 68, 68, 402, 68, 398, 409, 411, - 68, 410, 399, 417, 400, 68, 412, 414, 413, 418, - 416, 419, 401, 415, 420, 421, 422, 68, 423, 1382, - 424, 68, 402, 68, 425, 426, 428, 68, 432, 427, - 417, 68, 433, 430, 68, 431, 418, 132, 419, 434, - 68, 420, 429, 422, 68, 423, 68, 424, 435, 68, - 68, 68, 426, 428, 68, 68, 427, 68, 436, 68, - 430, 437, 431, 1382, 439, 441, 438, 440, 445, 429, - - 68, 444, 68, 443, 442, 68, 447, 1382, 68, 451, - 446, 453, 1382, 463, 473, 68, 68, 1382, 474, 68, - 68, 439, 68, 438, 440, 68, 68, 68, 444, 68, - 443, 442, 68, 447, 448, 68, 451, 446, 452, 449, - 455, 454, 68, 450, 68, 68, 1382, 68, 459, 456, - 1382, 458, 460, 1382, 1382, 1382, 1382, 1382, 68, 68, - 464, 448, 68, 467, 68, 452, 449, 455, 454, 461, - 450, 457, 68, 68, 68, 459, 456, 462, 458, 460, - 68, 68, 465, 466, 468, 68, 469, 464, 471, 475, - 467, 1382, 68, 68, 470, 472, 461, 479, 457, 68, - - 476, 480, 1382, 1382, 462, 1382, 68, 68, 477, 465, - 466, 468, 68, 469, 481, 471, 68, 68, 68, 483, - 68, 470, 472, 478, 488, 482, 486, 476, 68, 484, - 487, 485, 68, 68, 68, 477, 489, 68, 68, 68, - 68, 481, 493, 490, 68, 495, 483, 68, 492, 1382, - 478, 488, 482, 486, 68, 68, 484, 487, 485, 491, - 68, 494, 496, 489, 500, 497, 498, 1382, 68, 68, - 490, 68, 495, 68, 499, 492, 501, 68, 68, 503, - 502, 1382, 68, 504, 1382, 68, 491, 68, 494, 496, - 505, 500, 497, 498, 507, 506, 68, 508, 509, 68, - - 512, 499, 68, 501, 68, 68, 503, 502, 510, 511, - 504, 68, 68, 513, 68, 68, 516, 505, 514, 68, - 1382, 507, 506, 68, 508, 509, 515, 512, 517, 519, - 132, 518, 522, 68, 523, 510, 511, 521, 68, 525, - 513, 520, 68, 526, 68, 514, 68, 68, 524, 68, - 533, 68, 68, 515, 1382, 517, 519, 537, 518, 522, - 68, 523, 68, 535, 521, 68, 525, 536, 520, 68, - 534, 542, 68, 1382, 68, 524, 527, 533, 528, 68, - 538, 529, 1382, 539, 68, 541, 530, 540, 1382, 1382, - 535, 68, 531, 532, 536, 68, 543, 534, 542, 68, - - 68, 68, 546, 527, 547, 528, 550, 538, 529, 68, - 539, 68, 541, 530, 540, 544, 545, 549, 68, 531, - 532, 68, 68, 543, 68, 548, 68, 551, 68, 546, - 68, 547, 552, 550, 553, 554, 1382, 68, 1382, 555, - 1382, 558, 544, 545, 549, 556, 561, 559, 557, 563, - 68, 560, 548, 1382, 68, 565, 1382, 562, 1382, 68, - 68, 567, 554, 68, 68, 68, 555, 68, 558, 68, - 566, 68, 556, 68, 559, 557, 68, 564, 560, 68, - 68, 568, 565, 68, 562, 68, 569, 68, 567, 571, - 572, 577, 573, 68, 570, 68, 574, 566, 68, 576, - - 575, 578, 579, 68, 564, 68, 68, 580, 568, 68, - 68, 68, 68, 569, 581, 68, 571, 572, 577, 573, - 582, 570, 583, 574, 68, 585, 576, 575, 578, 579, - 584, 586, 68, 68, 580, 1382, 587, 68, 68, 589, - 588, 581, 590, 68, 591, 593, 592, 582, 68, 583, - 68, 594, 585, 597, 68, 599, 595, 584, 600, 68, - 596, 598, 68, 587, 68, 68, 589, 588, 68, 590, - 602, 591, 68, 592, 68, 68, 68, 601, 594, 611, - 618, 619, 68, 595, 68, 132, 603, 596, 598, 68, - 605, 1382, 604, 68, 68, 68, 612, 602, 613, 1382, - - 68, 68, 68, 68, 601, 615, 611, 618, 68, 614, - 616, 617, 68, 603, 1382, 626, 68, 605, 68, 604, - 606, 68, 607, 612, 68, 613, 608, 625, 609, 624, - 68, 627, 615, 610, 1382, 632, 614, 616, 617, 1382, - 68, 620, 626, 628, 68, 629, 621, 606, 622, 607, - 630, 68, 634, 608, 625, 609, 624, 68, 627, 633, - 610, 631, 68, 68, 68, 68, 623, 68, 620, 68, - 628, 635, 629, 621, 638, 622, 636, 630, 637, 639, - 642, 640, 68, 68, 68, 1382, 633, 68, 631, 641, - 646, 645, 68, 623, 655, 68, 68, 68, 635, 68, - - 644, 638, 68, 636, 643, 637, 639, 642, 640, 68, - 648, 68, 647, 68, 649, 653, 641, 1382, 645, 68, - 68, 68, 650, 651, 652, 68, 68, 644, 654, 660, - 656, 643, 658, 68, 657, 659, 661, 648, 1382, 647, - 662, 649, 653, 665, 68, 68, 68, 68, 68, 650, - 651, 652, 663, 68, 68, 654, 660, 667, 68, 658, - 664, 68, 659, 661, 666, 68, 68, 662, 669, 668, - 665, 670, 671, 672, 1382, 1382, 68, 673, 68, 663, - 68, 676, 68, 674, 667, 675, 68, 664, 68, 68, - 68, 666, 68, 68, 678, 669, 668, 677, 68, 671, - - 672, 68, 681, 679, 673, 680, 682, 683, 676, 684, - 674, 68, 675, 1382, 68, 685, 68, 686, 688, 689, - 687, 678, 68, 692, 677, 68, 68, 68, 68, 681, - 679, 68, 680, 682, 68, 693, 700, 698, 68, 691, - 68, 68, 685, 68, 68, 688, 689, 687, 68, 694, - 692, 68, 695, 697, 699, 696, 701, 702, 68, 703, - 68, 704, 693, 700, 706, 68, 691, 68, 68, 68, - 68, 707, 68, 68, 709, 705, 694, 1382, 710, 695, - 697, 68, 696, 701, 702, 68, 703, 68, 704, 711, - 708, 706, 68, 712, 715, 713, 714, 68, 68, 68, - - 68, 709, 705, 68, 720, 710, 716, 1382, 722, 718, - 68, 726, 68, 717, 725, 68, 711, 708, 68, 68, - 712, 715, 713, 714, 68, 68, 719, 723, 721, 68, - 727, 720, 68, 716, 68, 722, 718, 68, 724, 68, - 717, 725, 68, 68, 728, 68, 730, 731, 734, 729, - 733, 732, 735, 719, 723, 721, 68, 727, 68, 736, - 737, 738, 68, 68, 741, 724, 740, 739, 68, 745, - 68, 728, 743, 730, 742, 734, 729, 733, 68, 735, - 746, 747, 68, 68, 1382, 68, 68, 737, 738, 68, - 68, 741, 68, 740, 739, 744, 68, 748, 754, 743, - - 68, 742, 753, 68, 68, 749, 756, 755, 747, 758, - 750, 68, 751, 757, 752, 68, 759, 68, 68, 68, - 68, 68, 744, 68, 748, 754, 68, 763, 762, 753, - 68, 760, 749, 756, 755, 68, 758, 750, 761, 751, - 757, 752, 765, 759, 68, 764, 766, 68, 768, 767, - 769, 771, 770, 773, 68, 762, 68, 68, 760, 68, - 772, 774, 775, 777, 776, 761, 781, 782, 68, 68, - 68, 68, 764, 766, 780, 768, 767, 68, 68, 770, - 68, 779, 68, 68, 68, 68, 778, 772, 774, 775, - 777, 776, 783, 784, 68, 68, 786, 68, 68, 785, - - 787, 780, 68, 788, 68, 789, 790, 791, 779, 795, - 68, 1382, 68, 778, 68, 792, 68, 68, 793, 783, - 794, 796, 68, 786, 68, 68, 785, 787, 68, 68, - 68, 798, 789, 790, 800, 68, 795, 797, 68, 68, - 68, 805, 792, 803, 68, 793, 799, 794, 796, 801, - 68, 804, 807, 802, 808, 1382, 68, 806, 798, 68, - 68, 800, 809, 68, 797, 814, 68, 810, 805, 811, - 803, 68, 818, 799, 812, 68, 816, 68, 804, 807, - 68, 808, 68, 813, 806, 815, 68, 68, 817, 809, - 68, 68, 814, 820, 810, 819, 811, 68, 68, 818, - - 821, 812, 822, 816, 823, 68, 68, 68, 824, 826, - 813, 825, 815, 1382, 68, 817, 832, 828, 827, 1382, - 820, 830, 819, 829, 68, 831, 833, 821, 837, 822, - 68, 68, 838, 834, 68, 68, 68, 68, 825, 68, - 68, 68, 846, 68, 828, 827, 835, 68, 836, 68, - 829, 839, 68, 833, 840, 837, 68, 841, 842, 68, - 834, 843, 68, 68, 844, 68, 68, 845, 68, 846, - 68, 847, 848, 835, 68, 836, 849, 852, 839, 68, - 851, 840, 850, 853, 841, 842, 856, 68, 843, 854, - 68, 844, 858, 68, 845, 68, 859, 857, 847, 848, - - 68, 855, 860, 849, 68, 68, 68, 851, 68, 850, - 853, 861, 68, 862, 68, 863, 854, 68, 864, 858, - 865, 867, 68, 859, 857, 866, 869, 68, 855, 868, - 870, 872, 68, 68, 871, 873, 68, 68, 68, 68, - 68, 68, 863, 68, 68, 864, 874, 865, 867, 876, - 877, 68, 866, 68, 878, 875, 868, 870, 872, 68, - 68, 871, 873, 68, 879, 880, 884, 68, 881, 68, - 887, 68, 68, 874, 883, 68, 876, 877, 882, 885, - 886, 878, 875, 68, 888, 68, 890, 68, 68, 893, - 68, 879, 880, 884, 889, 881, 891, 887, 68, 68, - - 892, 883, 894, 895, 898, 882, 896, 886, 68, 897, - 68, 68, 68, 890, 68, 68, 68, 900, 899, 901, - 68, 889, 68, 891, 68, 902, 68, 892, 68, 894, - 895, 898, 903, 896, 907, 904, 897, 909, 906, 68, - 908, 68, 68, 905, 900, 899, 68, 68, 910, 68, - 68, 68, 902, 911, 68, 68, 918, 912, 914, 903, - 68, 907, 904, 68, 913, 906, 917, 908, 68, 915, - 905, 919, 916, 927, 1382, 910, 68, 68, 68, 920, - 911, 921, 922, 68, 912, 914, 923, 68, 928, 926, - 929, 913, 68, 917, 68, 68, 915, 68, 919, 916, - - 68, 68, 924, 931, 68, 925, 920, 68, 921, 922, - 930, 938, 68, 923, 932, 68, 926, 929, 935, 933, - 68, 68, 934, 936, 68, 940, 937, 68, 943, 924, - 931, 68, 925, 941, 68, 68, 942, 930, 939, 1382, - 1382, 932, 68, 68, 68, 935, 933, 68, 944, 934, - 936, 947, 945, 937, 68, 948, 68, 949, 946, 68, - 941, 965, 68, 942, 950, 939, 68, 953, 955, 68, - 68, 952, 68, 954, 68, 944, 68, 951, 947, 945, - 68, 956, 948, 957, 949, 946, 961, 960, 68, 958, - 68, 950, 68, 959, 953, 955, 68, 68, 952, 68, - - 954, 968, 962, 68, 951, 68, 963, 68, 956, 964, - 957, 966, 969, 68, 960, 68, 958, 970, 967, 971, - 959, 68, 68, 972, 68, 973, 68, 68, 968, 962, - 977, 979, 980, 963, 974, 975, 964, 68, 966, 68, - 68, 976, 978, 68, 68, 967, 971, 981, 68, 68, - 68, 983, 982, 985, 984, 989, 68, 68, 68, 68, - 987, 974, 975, 68, 986, 996, 68, 988, 976, 978, - 990, 68, 991, 993, 997, 1382, 68, 992, 68, 982, - 68, 984, 68, 994, 68, 68, 68, 68, 995, 1001, - 68, 986, 996, 68, 988, 68, 999, 990, 1000, 991, - - 993, 68, 998, 68, 992, 68, 1002, 68, 1003, 1005, - 994, 1004, 1006, 68, 1007, 995, 1001, 1008, 68, 1009, - 68, 1010, 68, 999, 1011, 1000, 1014, 68, 1382, 998, - 68, 68, 1013, 68, 1015, 1003, 1005, 1029, 1004, 1006, - 68, 1007, 1012, 68, 1008, 1016, 1009, 1017, 1010, 68, - 1018, 1023, 68, 68, 68, 68, 68, 1019, 1020, 1013, - 1021, 1015, 68, 68, 1022, 68, 1026, 1027, 68, 1012, - 68, 1030, 1016, 68, 1017, 1031, 1028, 1018, 68, 1032, - 1033, 68, 68, 1024, 1019, 1020, 1034, 1021, 1025, 68, - 1035, 1022, 1036, 68, 1027, 1037, 1045, 1038, 68, 68, - - 1039, 68, 68, 1028, 1040, 1043, 68, 68, 1042, 1041, - 1024, 68, 68, 1034, 68, 1025, 1044, 1046, 68, 1036, - 68, 68, 1037, 68, 1038, 1047, 1048, 1039, 1049, 1050, - 1051, 1057, 1043, 1054, 1059, 68, 1041, 1061, 1382, 68, - 68, 1055, 68, 1044, 68, 68, 68, 68, 68, 68, - 1052, 1056, 1047, 1048, 1058, 1049, 1050, 1051, 68, 68, - 1054, 1053, 1060, 68, 1061, 68, 1062, 68, 1055, 68, - 1063, 1068, 68, 1065, 1064, 1382, 68, 1052, 1056, 1066, - 68, 1058, 1073, 1071, 1067, 1382, 68, 1069, 1053, 1060, - 68, 68, 1070, 1062, 68, 68, 1072, 68, 1068, 1074, - - 1065, 1064, 68, 68, 68, 68, 1066, 68, 1075, 1073, - 1071, 1067, 1076, 1078, 1069, 1077, 1080, 68, 1084, 1070, - 1079, 68, 1082, 1072, 68, 1081, 1074, 68, 68, 1083, - 68, 1086, 1087, 1089, 1085, 1075, 1382, 1090, 68, 1076, - 68, 68, 1077, 1080, 68, 1084, 68, 1079, 1094, 1082, - 68, 68, 1081, 1091, 68, 1088, 1083, 1382, 1095, 1087, - 1089, 1085, 68, 68, 68, 1097, 1092, 1098, 68, 1093, - 1100, 1096, 1101, 68, 1099, 1094, 68, 68, 1382, 1102, - 1091, 1103, 1088, 68, 68, 1095, 68, 68, 68, 68, - 1106, 1105, 1097, 1092, 1098, 1107, 1093, 1100, 1096, 1101, - - 68, 1099, 68, 1104, 1108, 68, 1102, 1109, 1103, 68, - 1110, 1112, 1113, 68, 1111, 68, 1114, 68, 1105, 1116, - 1382, 1117, 1107, 1119, 1115, 68, 1120, 1382, 1121, 1118, - 1104, 68, 1122, 68, 1109, 68, 68, 1110, 1112, 68, - 68, 1111, 68, 1114, 68, 68, 68, 68, 1117, 68, - 1119, 1115, 1124, 1120, 68, 1121, 1118, 1123, 68, 1122, - 68, 1125, 1126, 1127, 68, 1128, 1129, 1130, 1382, 68, - 68, 1131, 68, 1132, 1382, 1134, 1135, 1133, 1136, 1124, - 68, 1138, 1137, 1139, 1123, 1141, 1142, 68, 1125, 1126, - 1127, 68, 1128, 1129, 68, 68, 68, 1144, 1131, 1140, - - 1132, 68, 1134, 68, 1133, 68, 1143, 68, 68, 1137, - 68, 1145, 68, 68, 68, 1146, 1147, 1153, 1148, 68, - 1149, 1154, 1150, 68, 1144, 1151, 1140, 68, 1155, 68, - 1156, 1157, 68, 1143, 1158, 1159, 1382, 1161, 68, 1160, - 1152, 68, 1146, 68, 68, 1148, 68, 1149, 1154, 1150, - 1165, 68, 1151, 68, 68, 68, 1163, 68, 1157, 68, - 68, 1158, 1159, 1162, 1161, 68, 1160, 1152, 1164, 1166, - 68, 1167, 68, 1168, 68, 1169, 1170, 1165, 1171, 1174, - 1177, 68, 1173, 1163, 1172, 68, 1175, 1181, 1382, 68, - 1162, 68, 68, 1179, 1176, 1164, 1166, 1180, 1167, 68, - - 1168, 1178, 68, 1170, 1182, 1171, 68, 1177, 68, 1173, - 68, 1172, 68, 1175, 68, 1183, 68, 68, 1184, 68, - 1179, 1176, 1185, 1186, 1180, 1187, 1188, 68, 1178, 1189, - 68, 1182, 1190, 68, 1191, 1192, 1382, 1193, 1194, 68, - 1197, 1195, 1183, 1196, 68, 68, 68, 1199, 68, 1185, - 1186, 68, 1187, 1188, 1198, 68, 1189, 68, 1200, 68, - 1201, 1191, 1192, 68, 1193, 1194, 68, 68, 1195, 68, - 1196, 1202, 1203, 1204, 68, 1206, 68, 1382, 68, 1205, - 1208, 1198, 1207, 68, 1211, 68, 1210, 1212, 1213, 1382, - 1209, 68, 1382, 1382, 1382, 1214, 1220, 68, 1202, 1203, - - 1204, 68, 68, 68, 68, 68, 1205, 1208, 68, 1207, - 68, 68, 1215, 1210, 68, 68, 1216, 1209, 1217, 1218, - 1219, 68, 1214, 68, 1221, 1222, 68, 68, 1223, 1225, - 1224, 68, 68, 68, 68, 68, 1226, 1228, 1229, 1215, - 1230, 1227, 68, 1216, 68, 1217, 1218, 1219, 1232, 68, - 68, 1221, 1222, 1231, 1233, 1223, 1225, 1224, 1234, 68, - 68, 1235, 68, 1226, 1228, 1229, 1238, 68, 1227, 1236, - 1237, 1240, 1241, 68, 68, 1232, 68, 68, 68, 68, - 1231, 68, 1239, 1242, 1243, 1234, 1382, 1244, 1235, 1247, - 68, 1245, 68, 1238, 68, 68, 1236, 1237, 68, 68, - - 1246, 1248, 1251, 68, 1252, 1249, 1250, 68, 1253, 1239, - 1242, 1243, 68, 68, 1244, 68, 1247, 68, 1245, 1254, - 1382, 1255, 1257, 1258, 1260, 1256, 1261, 1246, 68, 68, - 68, 1252, 1249, 1250, 1259, 68, 1262, 1263, 68, 1265, - 68, 1266, 1264, 68, 1267, 68, 68, 68, 1255, 1257, - 1258, 1260, 1256, 1261, 68, 1268, 68, 1269, 68, 68, - 1382, 1259, 1271, 1262, 1263, 1270, 68, 1272, 68, 1264, - 1274, 1273, 1275, 1382, 1276, 68, 1382, 68, 1277, 1280, - 1282, 1382, 68, 1382, 68, 68, 1281, 68, 68, 1271, - 68, 68, 1270, 1283, 1272, 1278, 68, 1274, 1273, 1275, - - 68, 1276, 1279, 68, 68, 1277, 68, 68, 1284, 1285, - 68, 1286, 68, 1281, 1287, 1290, 1288, 1382, 1289, 1291, - 1283, 1292, 1278, 68, 1293, 68, 1295, 68, 1296, 1279, - 68, 1297, 1298, 68, 1294, 1284, 1285, 1300, 1286, 68, - 1302, 68, 1290, 1288, 68, 1289, 68, 68, 68, 1304, - 1382, 1293, 1299, 68, 68, 68, 68, 68, 1297, 1298, - 68, 1294, 1301, 1303, 1300, 1305, 68, 1302, 1306, 68, - 68, 68, 68, 1307, 68, 1308, 1304, 1309, 1310, 1299, - 1311, 1313, 68, 1312, 1316, 1314, 68, 68, 1382, 1301, - 1303, 68, 1305, 1317, 1315, 1306, 1318, 1320, 1319, 68, - - 1307, 68, 1308, 68, 1309, 1310, 68, 68, 1313, 68, - 1312, 1316, 1314, 1321, 1324, 68, 68, 1323, 1322, 68, - 1317, 1315, 68, 1318, 1320, 1319, 68, 1326, 1325, 68, - 1328, 68, 1330, 68, 1327, 1331, 1329, 1332, 68, 1334, - 1321, 68, 68, 68, 1323, 1322, 68, 1333, 1337, 68, - 1338, 1336, 1340, 1335, 1326, 1325, 68, 1328, 68, 1330, - 68, 1327, 1331, 1329, 68, 1339, 68, 68, 1342, 68, - 1343, 1344, 1382, 68, 1333, 68, 1341, 68, 1336, 1340, - 1335, 1345, 1347, 68, 1348, 68, 1346, 1349, 1350, 68, - 1351, 1352, 1339, 1353, 1354, 68, 1357, 1343, 68, 68, - - 1355, 1382, 1382, 1341, 68, 1356, 1358, 1359, 1345, 1347, - 1382, 68, 68, 1346, 68, 68, 1361, 1351, 68, 68, - 1353, 68, 68, 68, 68, 1362, 1363, 1355, 68, 68, - 1360, 1364, 1356, 1358, 1359, 1365, 1367, 68, 1366, 1368, - 1369, 1370, 1371, 68, 1372, 68, 1373, 1374, 68, 1375, - 68, 1376, 1362, 68, 68, 1381, 68, 1360, 1364, 68, - 1382, 1377, 68, 1367, 1379, 1366, 68, 68, 68, 68, - 68, 1372, 68, 1373, 1374, 1378, 1375, 68, 68, 68, - 1382, 1380, 68, 1382, 1382, 1382, 1382, 68, 1377, 68, - 1382, 1379, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - - 1382, 1382, 1378, 1382, 1382, 1382, 1382, 1382, 1380, 40, - 40, 40, 40, 40, 40, 40, 45, 45, 45, 45, - 45, 45, 45, 50, 50, 50, 50, 50, 50, 50, - 56, 56, 56, 56, 56, 56, 56, 61, 61, 61, - 61, 61, 61, 61, 71, 71, 1382, 71, 71, 71, - 71, 122, 122, 1382, 1382, 1382, 122, 122, 124, 124, - 1382, 1382, 124, 1382, 124, 126, 1382, 1382, 1382, 1382, - 1382, 126, 129, 129, 1382, 1382, 1382, 129, 129, 131, - 1382, 1382, 1382, 1382, 1382, 131, 133, 133, 1382, 133, - 133, 133, 133, 72, 72, 1382, 72, 72, 72, 72, - - 13, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 1382, 1382 + 63, 64, 76, 86, 94, 73, 68, 96, 68, 65, + 85, 74, 75, 133, 77, 65, 68, 88, 68, 68, + 131, 78, 123, 123, 95, 89, 129, 66, 79, 76, + 86, 94, 125, 66, 96, 125, 65, 130, 130, 128, + 68, 77, 65, 68, 88, 138, 68, 90, 78, 119, + 91, 95, 89, 97, 120, 79, 80, 92, 104, 93, + + 81, 98, 68, 82, 68, 83, 84, 99, 68, 101, + 68, 100, 138, 102, 90, 126, 119, 91, 68, 68, + 97, 120, 274, 80, 92, 104, 93, 81, 98, 103, + 82, 153, 83, 84, 99, 68, 101, 105, 100, 109, + 102, 124, 116, 106, 117, 127, 107, 127, 127, 110, + 127, 68, 111, 108, 68, 68, 103, 212, 153, 118, + 72, 68, 72, 72, 105, 72, 109, 112, 68, 116, + 106, 117, 136, 107, 121, 68, 110, 113, 122, 111, + 108, 114, 115, 68, 212, 133, 118, 133, 132, 68, + 132, 132, 131, 132, 112, 129, 139, 135, 137, 136, + + 68, 121, 140, 68, 113, 122, 145, 128, 114, 115, + 67, 68, 67, 67, 72, 67, 72, 72, 141, 72, + 67, 142, 68, 139, 72, 137, 68, 68, 143, 140, + 144, 149, 146, 145, 68, 147, 126, 151, 152, 68, + 68, 154, 150, 68, 68, 141, 68, 68, 142, 68, + 124, 73, 148, 156, 155, 143, 157, 144, 149, 146, + 159, 167, 252, 68, 151, 152, 68, 68, 154, 150, + 158, 163, 161, 165, 160, 164, 68, 68, 68, 148, + 156, 155, 68, 157, 68, 168, 170, 68, 167, 252, + 166, 68, 162, 169, 68, 68, 171, 158, 163, 161, + + 165, 160, 164, 68, 172, 68, 68, 68, 182, 173, + 68, 68, 168, 170, 177, 174, 178, 166, 175, 162, + 169, 68, 176, 171, 68, 179, 180, 1610, 1610, 181, + 68, 172, 68, 183, 68, 184, 173, 68, 68, 68, + 68, 177, 174, 178, 189, 175, 187, 1610, 68, 176, + 186, 192, 179, 180, 191, 185, 181, 68, 188, 68, + 183, 68, 184, 193, 68, 190, 68, 1610, 1610, 68, + 1610, 189, 68, 187, 196, 194, 68, 186, 192, 195, + 1610, 191, 185, 204, 127, 188, 127, 127, 1610, 127, + 193, 132, 190, 132, 132, 72, 132, 72, 72, 133, + + 72, 68, 194, 197, 198, 68, 195, 199, 201, 200, + 213, 203, 1610, 202, 68, 68, 68, 1610, 68, 68, + 205, 1610, 214, 68, 215, 217, 222, 216, 68, 218, + 197, 198, 135, 68, 199, 68, 200, 213, 203, 68, + 202, 206, 68, 219, 68, 227, 1610, 68, 68, 214, + 68, 215, 217, 222, 216, 68, 218, 220, 1610, 1610, + 221, 223, 1610, 224, 225, 1610, 226, 231, 206, 207, + 219, 68, 68, 228, 208, 233, 68, 68, 234, 209, + 236, 68, 1610, 68, 220, 210, 211, 221, 223, 68, + 224, 225, 68, 226, 229, 235, 207, 232, 68, 68, + + 228, 208, 233, 237, 230, 239, 209, 1610, 238, 68, + 1610, 68, 210, 211, 240, 68, 241, 68, 242, 243, + 246, 68, 235, 68, 232, 68, 68, 244, 68, 245, + 250, 230, 239, 251, 68, 238, 68, 68, 68, 68, + 68, 240, 68, 241, 247, 242, 243, 246, 253, 68, + 248, 249, 254, 257, 244, 255, 245, 256, 260, 68, + 251, 68, 1610, 68, 258, 267, 263, 269, 68, 1610, + 266, 247, 68, 261, 1610, 253, 68, 248, 249, 68, + 257, 133, 255, 68, 256, 265, 259, 68, 264, 68, + 262, 268, 267, 263, 269, 68, 68, 270, 68, 272, + + 261, 68, 273, 68, 68, 271, 279, 68, 275, 282, + 276, 277, 265, 259, 283, 264, 68, 262, 268, 278, + 280, 281, 68, 68, 270, 284, 272, 68, 68, 273, + 68, 68, 271, 279, 68, 275, 68, 276, 277, 68, + 68, 283, 285, 68, 286, 288, 278, 280, 281, 287, + 293, 68, 284, 289, 68, 291, 68, 290, 292, 68, + 295, 300, 296, 294, 68, 1610, 1610, 68, 297, 285, + 306, 68, 288, 68, 1610, 68, 287, 293, 68, 68, + 289, 68, 291, 68, 290, 292, 68, 302, 300, 296, + 294, 68, 301, 298, 303, 297, 299, 68, 68, 304, + + 305, 68, 308, 68, 307, 309, 310, 311, 312, 68, + 317, 1610, 68, 314, 302, 313, 327, 1610, 68, 301, + 298, 303, 319, 299, 68, 68, 304, 305, 68, 308, + 328, 307, 309, 310, 311, 68, 315, 68, 316, 68, + 314, 68, 313, 318, 68, 68, 322, 68, 68, 319, + 68, 320, 68, 321, 326, 323, 329, 328, 324, 68, + 325, 330, 68, 315, 331, 316, 68, 1610, 68, 349, + 318, 332, 68, 322, 1610, 68, 68, 333, 320, 335, + 321, 326, 323, 329, 68, 324, 346, 325, 330, 344, + 343, 331, 68, 334, 68, 1610, 347, 345, 332, 351, + + 68, 68, 68, 133, 333, 348, 335, 68, 68, 353, + 437, 68, 68, 346, 1610, 352, 344, 343, 350, 356, + 334, 336, 337, 347, 345, 68, 351, 68, 355, 354, + 358, 338, 348, 339, 340, 341, 68, 68, 342, 1610, + 68, 68, 352, 357, 361, 350, 68, 1610, 336, 337, + 68, 68, 68, 366, 68, 355, 354, 358, 338, 364, + 339, 340, 341, 359, 360, 342, 362, 363, 368, 369, + 357, 361, 68, 365, 367, 1610, 68, 68, 68, 371, + 366, 68, 370, 68, 1610, 372, 364, 68, 373, 375, + 374, 377, 68, 362, 363, 368, 369, 68, 68, 378, + + 365, 367, 376, 381, 380, 379, 371, 68, 68, 370, + 382, 68, 372, 400, 68, 373, 68, 374, 377, 68, + 68, 68, 383, 68, 384, 385, 378, 386, 387, 376, + 68, 380, 379, 389, 68, 388, 391, 382, 390, 68, + 68, 68, 68, 393, 68, 397, 1610, 392, 68, 383, + 68, 384, 385, 68, 386, 387, 394, 398, 68, 68, + 389, 68, 388, 391, 68, 390, 68, 399, 395, 396, + 393, 68, 397, 401, 392, 68, 68, 405, 404, 68, + 402, 403, 68, 394, 398, 68, 68, 68, 406, 68, + 408, 407, 1610, 1610, 399, 395, 396, 1610, 68, 1610, + + 401, 68, 68, 415, 405, 404, 414, 402, 403, 1610, + 68, 416, 418, 68, 68, 406, 419, 408, 407, 409, + 417, 1610, 420, 68, 410, 421, 411, 68, 422, 423, + 415, 1610, 426, 414, 412, 424, 68, 433, 428, 418, + 68, 68, 68, 419, 413, 68, 409, 417, 68, 420, + 68, 410, 421, 411, 68, 422, 423, 425, 427, 426, + 68, 412, 424, 68, 429, 428, 430, 431, 68, 68, + 448, 413, 432, 434, 68, 436, 445, 435, 441, 68, + 446, 438, 68, 439, 425, 427, 68, 440, 68, 68, + 68, 429, 442, 430, 431, 133, 68, 68, 68, 432, + + 434, 447, 436, 449, 435, 441, 443, 68, 438, 444, + 439, 68, 450, 451, 440, 68, 68, 68, 452, 442, + 453, 454, 455, 456, 457, 1610, 461, 68, 447, 458, + 68, 459, 460, 443, 463, 1610, 444, 467, 462, 68, + 68, 469, 1610, 68, 68, 68, 68, 68, 454, 455, + 456, 68, 68, 68, 471, 68, 458, 68, 459, 460, + 68, 463, 464, 68, 467, 462, 468, 465, 472, 470, + 474, 466, 68, 477, 475, 68, 479, 476, 68, 1610, + 1610, 471, 491, 483, 68, 480, 68, 68, 68, 464, + 473, 68, 68, 468, 465, 472, 470, 474, 466, 68, + + 477, 475, 481, 478, 476, 68, 68, 68, 482, 485, + 483, 484, 480, 68, 1610, 486, 487, 473, 68, 488, + 68, 489, 68, 1610, 493, 490, 68, 492, 1610, 481, + 478, 497, 68, 1610, 499, 482, 485, 68, 484, 494, + 68, 68, 486, 487, 509, 68, 488, 498, 68, 495, + 504, 493, 68, 496, 492, 68, 68, 502, 497, 68, + 500, 499, 501, 503, 505, 68, 494, 506, 1610, 68, + 68, 68, 507, 68, 498, 68, 508, 504, 510, 68, + 68, 68, 68, 511, 502, 512, 68, 500, 68, 501, + 503, 505, 514, 515, 506, 513, 518, 1610, 516, 507, + + 1610, 517, 519, 508, 68, 510, 68, 520, 68, 68, + 511, 68, 512, 521, 68, 68, 68, 522, 524, 514, + 515, 523, 513, 518, 68, 516, 528, 68, 517, 519, + 68, 525, 527, 526, 520, 68, 530, 1610, 68, 68, + 521, 529, 68, 531, 522, 524, 68, 535, 523, 68, + 68, 532, 533, 528, 133, 548, 550, 534, 525, 527, + 526, 1610, 68, 530, 68, 545, 536, 537, 529, 68, + 531, 539, 538, 68, 535, 68, 68, 68, 532, 546, + 68, 68, 548, 68, 534, 547, 68, 68, 549, 68, + 1610, 557, 545, 536, 537, 1610, 558, 560, 539, 538, + + 540, 561, 1610, 68, 541, 68, 546, 542, 559, 562, + 68, 68, 547, 68, 543, 549, 563, 544, 557, 1610, + 1610, 68, 68, 558, 560, 564, 567, 540, 68, 68, + 565, 541, 570, 568, 542, 559, 562, 68, 569, 566, + 68, 543, 68, 563, 544, 551, 68, 552, 68, 571, + 553, 68, 564, 567, 575, 554, 68, 565, 574, 570, + 568, 555, 556, 68, 573, 569, 566, 572, 576, 577, + 68, 578, 551, 68, 552, 68, 571, 553, 580, 68, + 68, 68, 554, 579, 581, 574, 583, 582, 555, 556, + 585, 573, 584, 587, 572, 68, 68, 68, 578, 68, + + 68, 586, 589, 68, 68, 580, 591, 588, 68, 590, + 579, 581, 68, 583, 582, 68, 596, 68, 592, 584, + 68, 595, 68, 593, 68, 610, 68, 68, 586, 589, + 68, 594, 68, 591, 588, 597, 590, 598, 68, 601, + 602, 68, 600, 596, 68, 592, 599, 68, 595, 68, + 593, 68, 603, 605, 607, 1610, 68, 68, 594, 606, + 604, 68, 597, 68, 598, 609, 601, 602, 68, 600, + 608, 68, 68, 599, 611, 68, 612, 68, 68, 603, + 605, 607, 613, 614, 615, 616, 606, 604, 617, 618, + 68, 68, 609, 622, 619, 620, 624, 608, 68, 68, + + 623, 625, 621, 612, 68, 68, 68, 68, 627, 613, + 614, 615, 616, 626, 68, 617, 68, 640, 68, 630, + 68, 619, 620, 68, 68, 68, 628, 623, 133, 621, + 629, 68, 68, 68, 68, 627, 636, 1610, 637, 68, + 626, 638, 639, 68, 640, 649, 630, 643, 641, 642, + 68, 68, 1610, 628, 68, 652, 1610, 629, 631, 68, + 632, 68, 68, 636, 633, 637, 634, 644, 638, 639, + 68, 635, 649, 645, 643, 641, 642, 647, 665, 68, + 1610, 651, 68, 646, 648, 631, 68, 632, 650, 1610, + 658, 633, 1610, 634, 644, 68, 657, 68, 635, 68, + + 645, 68, 68, 68, 647, 68, 667, 653, 651, 659, + 646, 648, 654, 661, 655, 650, 660, 658, 68, 662, + 664, 669, 666, 657, 68, 1610, 668, 1610, 68, 68, + 671, 663, 656, 68, 653, 68, 659, 68, 68, 654, + 661, 655, 68, 660, 68, 68, 662, 664, 669, 666, + 68, 670, 68, 668, 672, 673, 674, 671, 663, 656, + 676, 677, 68, 675, 68, 68, 678, 68, 679, 680, + 681, 1610, 1610, 68, 68, 687, 683, 68, 670, 68, + 682, 672, 673, 674, 68, 68, 684, 676, 677, 685, + 675, 686, 68, 678, 688, 693, 680, 681, 68, 68, + + 689, 68, 687, 683, 690, 694, 696, 682, 68, 68, + 703, 68, 691, 684, 695, 692, 685, 68, 686, 68, + 697, 68, 693, 698, 699, 68, 68, 700, 702, 701, + 68, 68, 694, 696, 704, 705, 706, 68, 68, 691, + 68, 695, 692, 717, 68, 68, 68, 697, 68, 68, + 698, 699, 68, 711, 700, 702, 701, 707, 709, 708, + 68, 704, 705, 706, 710, 68, 68, 68, 712, 714, + 713, 715, 718, 716, 68, 68, 1610, 719, 68, 68, + 711, 720, 1610, 1610, 707, 709, 708, 68, 68, 68, + 68, 710, 722, 68, 721, 712, 714, 713, 715, 723, + + 716, 725, 68, 68, 719, 68, 726, 727, 68, 728, + 68, 68, 729, 731, 68, 68, 732, 730, 733, 722, + 68, 721, 1610, 734, 68, 68, 723, 1610, 725, 68, + 735, 737, 741, 726, 727, 736, 728, 1610, 740, 729, + 731, 1610, 738, 68, 730, 68, 68, 68, 68, 68, + 734, 739, 742, 68, 68, 743, 749, 735, 737, 68, + 744, 68, 736, 68, 745, 740, 746, 68, 748, 738, + 1610, 751, 747, 1610, 752, 750, 68, 753, 739, 742, + 68, 68, 743, 749, 68, 68, 754, 744, 68, 68, + 68, 745, 68, 746, 756, 748, 68, 755, 751, 747, + + 757, 752, 750, 758, 753, 68, 761, 759, 68, 1610, + 760, 763, 1610, 754, 68, 68, 762, 68, 68, 68, + 68, 756, 68, 764, 755, 68, 768, 757, 765, 766, + 758, 767, 769, 761, 759, 770, 68, 760, 763, 771, + 68, 772, 778, 762, 68, 68, 68, 773, 779, 68, + 764, 774, 775, 776, 68, 765, 766, 68, 767, 769, + 68, 780, 770, 68, 777, 781, 771, 68, 772, 782, + 787, 783, 784, 68, 68, 779, 786, 785, 68, 775, + 776, 788, 68, 68, 789, 68, 790, 68, 780, 68, + 68, 777, 781, 1610, 68, 68, 782, 796, 783, 784, + + 795, 68, 797, 786, 785, 799, 68, 801, 1610, 68, + 791, 789, 68, 790, 68, 792, 68, 793, 68, 794, + 68, 798, 802, 800, 796, 805, 68, 795, 68, 797, + 68, 68, 799, 807, 801, 68, 803, 791, 804, 806, + 68, 811, 792, 808, 793, 68, 794, 809, 798, 802, + 800, 68, 68, 810, 813, 812, 814, 815, 818, 824, + 68, 68, 68, 803, 816, 804, 806, 68, 68, 68, + 808, 68, 817, 819, 809, 820, 822, 68, 68, 821, + 810, 68, 812, 814, 68, 818, 825, 823, 68, 826, + 68, 816, 827, 830, 68, 68, 834, 68, 831, 817, + + 819, 68, 820, 822, 828, 829, 821, 68, 832, 68, + 838, 68, 835, 68, 823, 68, 826, 68, 1610, 68, + 830, 837, 68, 68, 833, 68, 836, 68, 68, 846, + 68, 828, 829, 68, 839, 832, 68, 838, 840, 835, + 68, 68, 842, 841, 843, 844, 68, 68, 837, 845, + 848, 833, 68, 836, 847, 849, 846, 850, 852, 853, + 851, 839, 854, 68, 1610, 840, 68, 68, 68, 842, + 841, 843, 856, 68, 68, 68, 68, 848, 859, 1610, + 863, 847, 849, 68, 855, 852, 853, 851, 68, 854, + 858, 857, 68, 68, 68, 860, 862, 68, 861, 856, + + 68, 68, 864, 874, 68, 859, 68, 863, 865, 68, + 68, 855, 866, 869, 867, 868, 870, 858, 857, 875, + 1610, 872, 860, 862, 68, 861, 871, 68, 68, 864, + 68, 68, 68, 873, 68, 865, 68, 876, 877, 866, + 869, 867, 868, 870, 878, 879, 880, 68, 872, 883, + 68, 884, 881, 871, 68, 68, 882, 1610, 68, 68, + 873, 885, 887, 68, 876, 68, 68, 886, 68, 68, + 68, 878, 879, 880, 888, 889, 68, 890, 884, 1610, + 894, 895, 891, 68, 892, 68, 896, 68, 885, 887, + 68, 893, 68, 68, 886, 68, 897, 898, 68, 68, + + 900, 888, 899, 901, 890, 902, 68, 894, 895, 891, + 903, 892, 68, 896, 68, 907, 904, 905, 893, 68, + 909, 68, 68, 897, 898, 68, 906, 900, 910, 899, + 901, 911, 902, 68, 912, 1610, 908, 68, 68, 913, + 68, 914, 68, 904, 905, 68, 68, 909, 915, 917, + 919, 68, 916, 906, 68, 910, 918, 921, 920, 926, + 922, 68, 68, 908, 68, 68, 68, 68, 914, 68, + 68, 923, 68, 924, 68, 915, 917, 919, 68, 916, + 925, 927, 68, 918, 68, 920, 926, 922, 928, 68, + 929, 930, 937, 931, 932, 933, 68, 68, 923, 68, + + 924, 68, 68, 935, 68, 934, 938, 925, 927, 936, + 68, 939, 68, 68, 940, 928, 941, 929, 930, 68, + 931, 932, 933, 68, 68, 943, 942, 944, 68, 68, + 935, 68, 934, 938, 949, 950, 936, 68, 939, 945, + 951, 68, 68, 941, 946, 954, 68, 947, 952, 955, + 956, 68, 943, 942, 944, 957, 961, 68, 68, 948, + 68, 953, 950, 68, 68, 68, 945, 951, 68, 68, + 68, 946, 954, 958, 947, 952, 68, 956, 959, 960, + 68, 68, 957, 961, 963, 68, 948, 962, 953, 965, + 964, 968, 966, 969, 971, 967, 970, 1610, 68, 68, + + 958, 68, 68, 975, 68, 959, 960, 974, 68, 68, + 68, 68, 68, 68, 962, 68, 965, 964, 968, 966, + 969, 972, 967, 970, 973, 68, 976, 979, 68, 977, + 975, 68, 978, 980, 974, 982, 985, 981, 68, 983, + 984, 989, 990, 1610, 68, 1610, 68, 68, 972, 1610, + 68, 973, 986, 976, 979, 987, 977, 68, 68, 978, + 68, 68, 982, 985, 981, 988, 983, 984, 991, 68, + 68, 992, 68, 997, 994, 68, 995, 993, 68, 986, + 996, 999, 987, 68, 1000, 68, 68, 68, 1002, 68, + 68, 998, 988, 1003, 1005, 991, 1001, 1006, 992, 68, + + 997, 994, 68, 995, 993, 68, 1004, 996, 999, 1009, + 1007, 68, 1010, 68, 68, 68, 1008, 1610, 998, 68, + 1003, 1011, 1013, 1001, 1006, 68, 68, 1012, 68, 1014, + 68, 1016, 1015, 1004, 68, 68, 1009, 1007, 68, 1010, + 68, 68, 1017, 1008, 1018, 1019, 1020, 1022, 1011, 1023, + 1024, 68, 1021, 68, 1012, 1028, 1014, 1032, 1016, 1015, + 1033, 68, 1025, 1026, 1610, 68, 68, 68, 68, 1017, + 68, 1018, 1019, 1020, 1022, 68, 1023, 68, 68, 1021, + 1027, 1029, 1030, 1031, 68, 1034, 68, 68, 1035, 1025, + 1026, 68, 1037, 1038, 1040, 68, 68, 1610, 1036, 1047, + + 1041, 1039, 1046, 68, 68, 1042, 68, 1027, 1029, 1030, + 1031, 68, 1034, 68, 68, 68, 68, 1044, 1043, 1037, + 1038, 1040, 68, 68, 68, 1036, 1045, 1041, 1039, 68, + 68, 1048, 1042, 1049, 1051, 1050, 1052, 68, 68, 1053, + 1054, 68, 68, 68, 1044, 1043, 1055, 1056, 1057, 1059, + 1610, 1061, 1610, 1045, 1060, 1058, 68, 1062, 1048, 1063, + 1049, 68, 1050, 1052, 68, 1610, 68, 68, 1067, 1068, + 1071, 68, 1072, 68, 1056, 68, 68, 68, 68, 68, + 68, 1060, 1058, 68, 1062, 1064, 1069, 1065, 1070, 1075, + 68, 1073, 1066, 68, 68, 1067, 1068, 68, 1074, 1072, + + 68, 1076, 1078, 1079, 1610, 68, 1081, 68, 1077, 1080, + 68, 1085, 1064, 1069, 1065, 1070, 1075, 68, 1073, 1066, + 68, 68, 68, 1082, 68, 1074, 1083, 1084, 68, 1078, + 1079, 1086, 68, 1081, 1088, 1077, 1080, 68, 68, 1087, + 1089, 1091, 68, 1092, 1093, 1090, 1096, 1097, 68, 68, + 1082, 1100, 68, 1083, 1084, 68, 1095, 1094, 1086, 68, + 1098, 68, 68, 68, 68, 1099, 1087, 1089, 1091, 68, + 1092, 1093, 1090, 1096, 68, 1101, 68, 68, 68, 1103, + 1102, 68, 1104, 1095, 1094, 1105, 1107, 1098, 1109, 1106, + 1610, 1110, 1099, 68, 1108, 68, 1111, 1112, 1113, 1114, + + 1115, 68, 1101, 68, 1117, 1119, 1120, 1102, 1610, 68, + 68, 68, 1118, 68, 1116, 1109, 68, 68, 1121, 68, + 68, 1108, 68, 1111, 1112, 1113, 1114, 68, 1122, 68, + 1123, 68, 1119, 68, 1128, 68, 1125, 1124, 1126, 1118, + 1129, 1116, 1130, 1132, 1127, 68, 1610, 68, 1135, 68, + 1133, 68, 68, 68, 68, 1122, 1134, 1123, 68, 68, + 68, 68, 1610, 1125, 1124, 1126, 1131, 1129, 1136, 1130, + 1132, 1127, 1140, 68, 1137, 68, 1141, 1133, 68, 68, + 1139, 68, 1142, 1134, 1143, 1138, 1144, 1146, 1145, 68, + 68, 1147, 1148, 1131, 68, 1136, 1610, 68, 68, 1140, + + 68, 1137, 1149, 1141, 1151, 1610, 1153, 1139, 1154, 68, + 1155, 1143, 1138, 68, 1146, 1145, 68, 68, 1147, 68, + 1150, 68, 68, 68, 1156, 68, 1152, 68, 1158, 1149, + 68, 1151, 68, 1153, 1157, 1154, 68, 1155, 1159, 1160, + 1161, 68, 1163, 1162, 1164, 68, 1165, 1150, 68, 1166, + 68, 1156, 1171, 1152, 1610, 1158, 68, 1167, 68, 1168, + 1610, 1157, 1175, 68, 1610, 1159, 1160, 1161, 68, 68, + 1162, 1164, 1172, 1165, 68, 1170, 1166, 1173, 1169, 68, + 1174, 68, 68, 68, 1167, 68, 1168, 68, 1176, 68, + 1180, 1179, 1177, 68, 68, 1178, 1181, 1610, 1182, 1172, + + 1184, 1610, 1170, 68, 1173, 1169, 1183, 1174, 68, 1187, + 68, 68, 1192, 1188, 68, 1176, 68, 1180, 1179, 1177, + 68, 1186, 1178, 1181, 1185, 1182, 1189, 1184, 68, 1191, + 68, 68, 68, 1183, 68, 1190, 1187, 68, 68, 68, + 1188, 1193, 1194, 1196, 1195, 1197, 1198, 68, 1186, 1199, + 1202, 1185, 68, 1189, 1203, 1200, 1191, 1201, 1206, 68, + 68, 1205, 1190, 1204, 1208, 1610, 68, 68, 1193, 68, + 1196, 1195, 1197, 1198, 68, 68, 68, 68, 68, 1211, + 68, 1203, 1200, 68, 1201, 68, 68, 1207, 1205, 68, + 1204, 1208, 1209, 1210, 1212, 1214, 68, 1213, 1216, 1610, + + 1215, 68, 1610, 68, 1217, 68, 1211, 1219, 68, 1221, + 68, 1218, 68, 1220, 1207, 68, 68, 68, 1223, 1209, + 1210, 1212, 68, 68, 1213, 1216, 68, 1215, 1225, 1222, + 1226, 1217, 1227, 68, 1219, 68, 1221, 1224, 1218, 1228, + 1220, 1229, 1230, 68, 1231, 1223, 68, 1232, 1233, 1234, + 1235, 1236, 1237, 68, 68, 68, 1222, 1226, 68, 1227, + 1239, 68, 1238, 1240, 1224, 1241, 1228, 68, 1229, 68, + 68, 68, 1242, 68, 1232, 68, 68, 1235, 68, 68, + 1244, 1245, 68, 1246, 1243, 1248, 1249, 1239, 1250, 1238, + 68, 1251, 1241, 68, 68, 1252, 68, 1253, 1247, 68, + + 1610, 68, 1254, 1258, 1255, 68, 1256, 1244, 1245, 68, + 1246, 1243, 68, 1249, 1257, 68, 68, 68, 68, 68, + 68, 1259, 1252, 68, 1253, 1247, 1261, 68, 68, 1254, + 1258, 1255, 1260, 1256, 1262, 1265, 1264, 1263, 68, 1270, + 1267, 1257, 1266, 1610, 1268, 1610, 1269, 68, 1259, 68, + 1271, 1277, 68, 1261, 68, 68, 1273, 1275, 1272, 1260, + 1274, 1262, 68, 1264, 1263, 68, 68, 1267, 68, 1266, + 68, 1268, 68, 1269, 1276, 68, 68, 1271, 68, 1278, + 1279, 68, 1280, 1273, 1275, 1272, 1282, 1274, 1281, 1283, + 1610, 1284, 1610, 68, 1610, 1286, 68, 68, 1285, 68, + + 1287, 1276, 1288, 68, 1289, 1290, 68, 1279, 68, 1280, + 1293, 68, 1292, 1282, 1610, 1281, 1283, 68, 1284, 68, + 1304, 68, 1286, 1291, 68, 1285, 1294, 68, 68, 1288, + 68, 1289, 1290, 1295, 68, 1296, 1297, 1300, 1610, 1292, + 1298, 68, 1299, 1610, 68, 1302, 1303, 68, 1301, 1307, + 1291, 68, 1305, 1294, 68, 68, 1309, 68, 1308, 1310, + 1295, 1312, 1296, 1297, 68, 68, 1306, 1298, 68, 1299, + 68, 1311, 68, 68, 68, 1301, 1307, 68, 68, 1305, + 68, 68, 1313, 68, 1314, 1308, 1310, 1315, 1312, 1316, + 1317, 1318, 1319, 1306, 1610, 1320, 68, 1321, 1311, 1322, + + 68, 1323, 1324, 1329, 68, 68, 68, 68, 68, 1313, + 68, 68, 68, 1325, 68, 1334, 68, 1317, 1318, 1319, + 1327, 68, 1320, 1328, 1321, 1330, 1322, 68, 1323, 68, + 1329, 68, 1326, 68, 1331, 1332, 1333, 68, 68, 1335, + 1325, 1338, 68, 68, 1336, 1343, 68, 1327, 68, 1337, + 1328, 1339, 1330, 68, 68, 1341, 1344, 68, 68, 1326, + 1340, 1331, 1332, 1333, 68, 1342, 1335, 68, 1338, 68, + 1346, 1336, 68, 1345, 68, 1347, 1337, 1348, 1339, 68, + 1350, 1349, 1341, 1344, 68, 68, 1351, 1340, 68, 68, + 1610, 68, 1342, 1352, 1354, 1353, 1610, 1346, 1355, 1357, + + 1345, 68, 1347, 68, 1348, 68, 68, 68, 1349, 1356, + 1358, 1361, 1359, 1610, 1363, 1364, 68, 68, 1360, 1610, + 1352, 1354, 1353, 68, 68, 1355, 1357, 68, 1365, 1366, + 1367, 1368, 1362, 1376, 68, 1377, 1356, 68, 68, 1359, + 68, 68, 68, 1369, 1370, 1360, 1373, 1371, 68, 1372, + 1374, 1375, 68, 68, 68, 1365, 1366, 1367, 1368, 1362, + 68, 68, 68, 68, 1378, 68, 68, 1379, 68, 1380, + 1369, 1370, 68, 1373, 1371, 1381, 1372, 1374, 1375, 1610, + 1382, 1384, 1383, 1386, 1610, 1385, 1388, 1610, 1610, 1387, + 1389, 1390, 1610, 1610, 68, 68, 68, 68, 1393, 68, + + 1397, 68, 68, 68, 68, 68, 68, 1382, 1384, 1383, + 1386, 68, 1385, 1388, 68, 1391, 1387, 1389, 1390, 1392, + 1394, 1395, 1396, 1398, 68, 1393, 1399, 68, 1404, 68, + 68, 1403, 1400, 68, 1401, 1408, 1402, 68, 68, 1406, + 1610, 68, 1391, 1407, 1409, 68, 1392, 1394, 1395, 1396, + 1398, 68, 1410, 68, 68, 68, 68, 1405, 1403, 1400, + 1411, 1401, 68, 1402, 68, 68, 1406, 68, 1412, 68, + 1407, 68, 1413, 1414, 1415, 1416, 1610, 1419, 1421, 68, + 1420, 68, 1417, 1418, 1405, 68, 1423, 1411, 1427, 68, + 1424, 1610, 68, 1422, 1429, 1412, 68, 68, 68, 68, + + 68, 1415, 1416, 68, 1419, 1421, 68, 1420, 1425, 1417, + 1418, 1426, 1428, 68, 68, 1427, 68, 1424, 1430, 68, + 1422, 1429, 1432, 68, 1433, 68, 1434, 68, 1431, 68, + 1436, 68, 1435, 1437, 1438, 1425, 1439, 1610, 1426, 1428, + 68, 68, 1441, 1440, 68, 1430, 1442, 1610, 1443, 1432, + 68, 1433, 68, 1434, 68, 1431, 68, 68, 68, 1435, + 1437, 1438, 1444, 1439, 1445, 1446, 1447, 1452, 68, 1441, + 1440, 1450, 68, 1442, 68, 1443, 1448, 1451, 1449, 68, + 68, 1455, 1453, 68, 1454, 1610, 68, 68, 1456, 1444, + 68, 1445, 1446, 1447, 68, 1459, 68, 1460, 68, 1457, + + 1461, 68, 68, 1448, 1451, 1449, 68, 1463, 68, 1453, + 68, 1454, 1458, 1462, 68, 1456, 1464, 1465, 1466, 68, + 68, 68, 1459, 1467, 1460, 68, 1457, 1461, 68, 1468, + 1469, 1471, 1473, 1470, 68, 1472, 1474, 1477, 68, 1458, + 1462, 68, 68, 1464, 68, 1466, 68, 1475, 1480, 1481, + 1467, 68, 1610, 1476, 1478, 1479, 68, 68, 1471, 68, + 1470, 68, 1472, 1474, 68, 1482, 1483, 1484, 68, 68, + 1485, 1486, 1487, 68, 1475, 68, 68, 1489, 1488, 68, + 1476, 1478, 1479, 1490, 1491, 1492, 1494, 1493, 1610, 68, + 1610, 1610, 1482, 1483, 1484, 1495, 1496, 68, 68, 68, + + 68, 1504, 1506, 1610, 68, 1488, 68, 68, 1498, 68, + 1490, 68, 1492, 68, 1493, 1497, 1502, 68, 68, 68, + 1499, 1500, 1495, 1496, 68, 1501, 1503, 1505, 68, 68, + 68, 68, 1507, 68, 1508, 1498, 1510, 1509, 68, 1511, + 1515, 1610, 1497, 1502, 1512, 68, 68, 1499, 1500, 68, + 68, 1514, 1501, 1503, 1505, 68, 1513, 68, 1516, 1507, + 1518, 68, 68, 1510, 1509, 1517, 68, 1515, 68, 1519, + 1520, 1512, 1522, 68, 1521, 1523, 1610, 1524, 1514, 1610, + 68, 1525, 1527, 1513, 1528, 1516, 1526, 68, 1531, 68, + 68, 68, 1517, 1529, 68, 68, 68, 68, 68, 1522, + + 1530, 1521, 68, 68, 1524, 1533, 68, 68, 1525, 1527, + 1532, 1528, 1534, 1526, 68, 1531, 68, 1535, 68, 68, + 1529, 1536, 1537, 68, 1538, 1539, 1542, 1530, 1540, 1541, + 1543, 68, 1533, 68, 1547, 1546, 1548, 1532, 68, 1534, + 1610, 1544, 68, 68, 1535, 1545, 1549, 68, 1536, 68, + 68, 1538, 1539, 1542, 68, 1540, 1541, 68, 1551, 68, + 1550, 68, 1546, 1552, 1554, 68, 68, 68, 1544, 1553, + 1555, 1556, 1545, 1549, 68, 1565, 68, 68, 68, 68, + 1557, 1558, 1610, 1560, 68, 1551, 1559, 1550, 1610, 1561, + 1552, 1554, 1562, 1563, 68, 1566, 1553, 1555, 1556, 1570, + + 1610, 1567, 68, 68, 1564, 1610, 68, 1557, 1558, 68, + 1560, 68, 68, 1559, 68, 68, 1561, 1568, 1569, 1562, + 1563, 68, 68, 1572, 1571, 68, 68, 1573, 1567, 1576, + 68, 1564, 68, 1574, 1575, 1610, 1577, 68, 1580, 1579, + 1610, 68, 68, 68, 1568, 1569, 1578, 68, 1581, 68, + 1572, 1571, 1583, 1585, 1573, 1582, 1576, 1610, 1586, 1584, + 1574, 1575, 68, 1577, 68, 1580, 1579, 68, 68, 1587, + 1589, 1591, 68, 1578, 68, 1581, 1588, 68, 68, 1583, + 68, 1610, 1582, 1590, 68, 1586, 1584, 1592, 1599, 68, + 1595, 68, 68, 68, 1593, 1601, 1587, 1589, 1591, 1594, + + 1596, 1602, 68, 1588, 1597, 1610, 1598, 68, 68, 68, + 1590, 1610, 68, 1604, 1592, 68, 68, 1595, 1600, 1603, + 1605, 1593, 68, 1608, 1609, 1610, 1594, 1596, 68, 1606, + 1610, 1597, 68, 1598, 1610, 68, 1607, 68, 68, 68, + 1604, 1610, 68, 1610, 68, 1600, 1603, 1605, 1610, 1610, + 68, 68, 1610, 1610, 1610, 1610, 1606, 1610, 1610, 1610, + 1610, 1610, 1610, 1607, 40, 40, 40, 40, 40, 40, + 40, 45, 45, 45, 45, 45, 45, 45, 50, 50, + 50, 50, 50, 50, 50, 56, 56, 56, 56, 56, + 56, 56, 61, 61, 61, 61, 61, 61, 61, 71, + + 71, 1610, 71, 71, 71, 71, 123, 123, 1610, 1610, + 1610, 123, 123, 125, 125, 1610, 1610, 125, 1610, 125, + 127, 1610, 1610, 1610, 1610, 1610, 127, 130, 130, 1610, + 1610, 1610, 130, 130, 132, 1610, 1610, 1610, 1610, 1610, + 132, 134, 134, 1610, 134, 134, 134, 134, 72, 72, + 1610, 72, 72, 72, 72, 13, 1610, 1610, 1610, 1610, + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + 1610 } ; -static yyconst flex_int16_t yy_chk[4067] = +static yyconst flex_int16_t yy_chk[4722] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1348,445 +1496,518 @@ static yyconst flex_int16_t yy_chk[4067] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6, 5, 24, 6, 7, 7, - 7, 7, 1388, 7, 8, 8, 8, 8, 24, 8, + 7, 7, 1616, 7, 8, 8, 8, 8, 24, 8, 9, 9, 9, 10, 10, 10, 15, 44, 44, 49, 15, 3, 49, 24, 4, 60, 60, 5, 19, 6, - 19, 19, 69, 19, 600, 7, 69, 39, 19, 39, - 39, 8, 39, 23, 20, 20, 9, 39, 92, 10, + 19, 19, 69, 19, 625, 7, 69, 39, 19, 39, + 39, 8, 39, 23, 20, 20, 9, 39, 619, 10, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, - 12, 12, 20, 23, 112, 19, 23, 594, 20, 11, - 23, 20, 20, 131, 21, 12, 22, 123, 123, 92, - 22, 21, 26, 22, 28, 26, 22, 11, 21, 20, - 23, 25, 26, 12, 26, 112, 11, 594, 22, 25, - 21, 21, 12, 22, 27, 26, 28, 22, 21, 26, - 22, 28, 26, 22, 74, 21, 27, 25, 25, 26, - - 29, 26, 30, 129, 31, 128, 25, 32, 31, 126, - 30, 27, 29, 32, 130, 130, 30, 78, 74, 125, - 30, 74, 125, 137, 31, 124, 78, 29, 30, 30, - 31, 31, 33, 122, 32, 31, 34, 30, 33, 67, - 37, 33, 35, 30, 78, 37, 34, 30, 33, 34, - 33, 31, 35, 37, 137, 75, 35, 35, 34, 33, - 36, 65, 36, 34, 35, 33, 38, 37, 33, 35, - 38, 61, 37, 34, 65, 33, 34, 36, 75, 35, - 56, 51, 75, 35, 35, 50, 36, 36, 65, 36, - 45, 40, 38, 38, 14, 13, 55, 38, 55, 55, - - 63, 55, 63, 63, 36, 63, 66, 77, 66, 66, - 68, 66, 68, 68, 71, 68, 71, 71, 76, 71, - 68, 80, 79, 81, 71, 76, 83, 84, 82, 86, - 0, 77, 81, 82, 77, 79, 80, 63, 86, 85, - 84, 88, 0, 83, 87, 76, 85, 89, 80, 79, - 81, 71, 90, 87, 84, 82, 86, 83, 91, 93, - 96, 91, 0, 96, 88, 90, 85, 93, 88, 89, - 83, 87, 94, 95, 89, 91, 97, 95, 98, 90, - 0, 100, 91, 0, 0, 91, 93, 96, 91, 97, - 99, 101, 94, 102, 94, 100, 0, 95, 104, 94, - - 95, 98, 91, 97, 95, 98, 103, 102, 100, 0, - 99, 101, 106, 103, 105, 107, 106, 99, 101, 94, - 102, 104, 107, 105, 108, 104, 114, 110, 109, 113, - 0, 0, 0, 103, 106, 110, 111, 144, 108, 106, - 109, 105, 107, 106, 113, 111, 114, 116, 115, 119, - 0, 108, 114, 114, 110, 109, 113, 115, 116, 117, - 118, 121, 120, 111, 118, 117, 0, 0, 144, 0, - 121, 119, 0, 114, 116, 115, 119, 120, 127, 135, - 127, 127, 136, 127, 141, 0, 117, 118, 121, 120, - 132, 141, 132, 132, 133, 132, 133, 133, 138, 133, - - 139, 140, 142, 135, 136, 153, 135, 142, 143, 136, - 138, 141, 146, 140, 0, 147, 149, 153, 148, 139, - 149, 150, 0, 147, 0, 138, 0, 139, 140, 151, - 143, 133, 153, 142, 142, 143, 145, 152, 146, 146, - 148, 145, 147, 149, 150, 148, 145, 0, 150, 155, - 152, 151, 145, 145, 154, 156, 151, 154, 155, 145, - 157, 0, 160, 145, 152, 158, 0, 159, 145, 154, - 161, 163, 158, 145, 166, 162, 155, 156, 159, 145, - 145, 154, 156, 164, 154, 162, 157, 157, 168, 165, - 169, 167, 158, 160, 159, 165, 161, 161, 175, 0, - - 170, 164, 163, 171, 172, 166, 162, 173, 0, 174, - 164, 172, 162, 167, 174, 177, 165, 175, 167, 168, - 170, 169, 177, 176, 171, 175, 178, 170, 173, 181, - 171, 172, 179, 185, 173, 176, 174, 179, 180, 180, - 0, 188, 177, 183, 182, 0, 186, 180, 178, 184, - 176, 182, 187, 178, 186, 189, 194, 190, 0, 179, - 181, 193, 191, 188, 185, 180, 180, 192, 183, 184, - 183, 182, 188, 186, 190, 192, 184, 191, 187, 187, - 193, 195, 190, 196, 190, 198, 189, 194, 193, 191, - 188, 197, 200, 204, 192, 196, 199, 205, 199, 201, - - 197, 190, 202, 195, 198, 204, 203, 206, 195, 207, - 196, 208, 198, 210, 212, 0, 200, 203, 197, 200, - 204, 205, 209, 199, 205, 201, 201, 207, 202, 202, - 206, 211, 214, 203, 206, 209, 207, 213, 218, 210, - 210, 214, 208, 216, 213, 212, 215, 218, 217, 209, - 0, 220, 215, 211, 219, 221, 222, 216, 211, 214, - 230, 223, 226, 0, 213, 218, 220, 225, 226, 224, - 216, 0, 224, 215, 217, 217, 223, 219, 220, 224, - 222, 219, 228, 222, 227, 225, 221, 230, 223, 226, - 229, 229, 231, 233, 225, 234, 224, 228, 227, 224, - - 232, 235, 236, 232, 240, 233, 237, 0, 0, 228, - 232, 227, 242, 234, 238, 229, 231, 229, 229, 231, - 233, 243, 234, 243, 236, 247, 238, 232, 235, 236, - 232, 239, 237, 237, 242, 240, 241, 248, 239, 242, - 244, 238, 246, 241, 245, 243, 249, 245, 243, 245, - 243, 0, 249, 244, 250, 245, 247, 251, 239, 248, - 246, 250, 252, 241, 248, 255, 253, 244, 259, 246, - 251, 245, 256, 249, 245, 258, 245, 255, 252, 253, - 259, 250, 257, 258, 251, 0, 252, 260, 257, 252, - 256, 261, 255, 253, 260, 259, 0, 262, 263, 256, - - 264, 265, 258, 279, 262, 252, 254, 254, 266, 257, - 263, 0, 264, 267, 260, 266, 254, 268, 254, 254, - 254, 279, 261, 254, 262, 263, 267, 264, 269, 269, - 279, 254, 265, 254, 254, 266, 274, 0, 271, 268, - 267, 270, 272, 254, 268, 254, 254, 254, 270, 271, - 254, 273, 275, 272, 280, 282, 283, 269, 276, 277, - 289, 274, 0, 274, 273, 271, 281, 276, 270, 272, - 278, 284, 277, 282, 286, 275, 280, 285, 273, 275, - 287, 280, 282, 278, 291, 276, 277, 283, 278, 281, - 288, 289, 284, 281, 287, 294, 286, 278, 284, 290, - - 285, 286, 291, 292, 285, 290, 293, 287, 296, 295, - 278, 291, 297, 300, 296, 299, 288, 288, 292, 300, - 0, 294, 294, 0, 301, 310, 290, 302, 308, 293, - 292, 295, 303, 293, 0, 296, 295, 305, 297, 297, - 300, 299, 299, 301, 305, 302, 306, 303, 307, 309, - 308, 301, 0, 306, 302, 308, 310, 311, 312, 303, - 314, 307, 315, 312, 305, 313, 311, 317, 309, 316, - 320, 313, 318, 306, 315, 307, 309, 320, 317, 321, - 318, 323, 0, 314, 311, 312, 322, 314, 323, 315, - 321, 316, 313, 324, 317, 322, 316, 320, 0, 318, - - 319, 325, 327, 325, 326, 319, 321, 319, 323, 328, - 330, 329, 0, 332, 327, 319, 331, 322, 330, 324, - 324, 331, 322, 329, 328, 319, 319, 319, 325, 327, - 326, 326, 319, 333, 319, 332, 328, 330, 329, 334, - 332, 335, 319, 331, 336, 337, 338, 334, 339, 0, - 340, 333, 319, 335, 341, 342, 344, 339, 348, 343, - 333, 338, 349, 346, 340, 347, 334, 336, 335, 350, - 342, 336, 345, 338, 343, 339, 337, 340, 351, 347, - 344, 341, 342, 344, 345, 348, 343, 346, 352, 349, - 346, 353, 347, 0, 355, 357, 354, 356, 361, 345, - - 350, 360, 354, 359, 358, 351, 363, 0, 360, 365, - 362, 367, 0, 376, 386, 352, 355, 0, 386, 363, - 356, 355, 353, 354, 356, 359, 357, 358, 360, 361, - 359, 358, 362, 363, 364, 365, 365, 362, 366, 364, - 369, 368, 367, 364, 376, 386, 0, 366, 372, 370, - 0, 371, 373, 0, 0, 0, 0, 0, 364, 368, - 377, 364, 372, 380, 369, 366, 364, 369, 368, 374, - 364, 370, 370, 371, 373, 372, 370, 375, 371, 373, - 374, 377, 378, 379, 381, 380, 382, 377, 384, 387, - 380, 0, 375, 381, 383, 385, 374, 390, 370, 382, - - 388, 390, 0, 0, 375, 0, 378, 379, 389, 378, - 379, 381, 384, 382, 391, 384, 383, 385, 388, 393, - 387, 383, 385, 389, 398, 392, 396, 388, 390, 394, - 397, 395, 389, 392, 396, 389, 399, 397, 394, 391, - 395, 391, 403, 400, 393, 405, 393, 398, 402, 0, - 389, 398, 392, 396, 399, 400, 394, 397, 395, 401, - 402, 404, 406, 399, 410, 407, 408, 0, 401, 404, - 400, 405, 405, 403, 409, 402, 411, 408, 410, 413, - 412, 0, 409, 414, 0, 406, 401, 407, 404, 406, - 415, 410, 407, 408, 417, 416, 411, 418, 419, 413, - - 422, 409, 412, 411, 416, 414, 413, 412, 420, 421, - 414, 419, 415, 423, 417, 418, 426, 415, 424, 423, - 0, 417, 416, 422, 418, 419, 424, 422, 427, 429, - 420, 428, 434, 421, 437, 420, 421, 431, 429, 439, - 423, 430, 434, 440, 424, 424, 428, 426, 438, 431, - 442, 427, 437, 424, 0, 427, 429, 446, 428, 434, - 430, 437, 439, 444, 431, 444, 439, 445, 430, 438, - 443, 451, 442, 0, 440, 438, 441, 442, 441, 443, - 447, 441, 0, 448, 446, 450, 441, 449, 0, 0, - 444, 445, 441, 441, 445, 451, 452, 443, 451, 449, - - 447, 441, 455, 441, 456, 441, 459, 447, 441, 448, - 448, 450, 450, 441, 449, 453, 454, 458, 452, 441, - 441, 455, 453, 452, 454, 457, 458, 460, 459, 455, - 456, 456, 461, 459, 462, 463, 0, 457, 0, 464, - 0, 467, 453, 454, 458, 465, 470, 468, 466, 472, - 467, 469, 457, 0, 460, 475, 0, 471, 0, 463, - 464, 477, 463, 461, 465, 462, 464, 466, 467, 468, - 476, 469, 465, 470, 468, 466, 471, 473, 469, 475, - 472, 478, 475, 476, 471, 473, 479, 477, 477, 481, - 482, 487, 483, 478, 479, 481, 484, 476, 483, 486, - - 485, 488, 489, 484, 473, 485, 486, 490, 478, 487, - 479, 489, 482, 479, 491, 490, 481, 482, 487, 483, - 492, 479, 493, 484, 488, 495, 486, 485, 488, 489, - 494, 496, 491, 492, 490, 0, 497, 494, 495, 499, - 498, 491, 500, 493, 501, 503, 502, 492, 498, 493, - 501, 504, 495, 507, 499, 509, 505, 494, 510, 497, - 506, 508, 496, 497, 500, 505, 499, 498, 508, 500, - 512, 501, 502, 502, 506, 504, 503, 511, 504, 517, - 524, 525, 509, 505, 507, 510, 513, 506, 508, 511, - 515, 0, 514, 512, 513, 514, 518, 512, 519, 0, - - 519, 524, 517, 515, 511, 521, 517, 524, 518, 520, - 522, 523, 525, 513, 0, 529, 522, 515, 521, 514, - 516, 520, 516, 518, 523, 519, 516, 528, 516, 527, - 529, 530, 521, 516, 0, 535, 520, 522, 523, 0, - 528, 526, 529, 531, 516, 532, 526, 516, 526, 516, - 533, 527, 538, 516, 528, 516, 527, 530, 530, 536, - 516, 534, 535, 533, 532, 531, 526, 526, 526, 534, - 531, 539, 532, 526, 542, 526, 540, 533, 541, 543, - 546, 544, 536, 538, 540, 0, 536, 543, 534, 545, - 550, 549, 541, 526, 560, 539, 542, 545, 539, 544, - - 548, 542, 546, 540, 547, 541, 543, 546, 544, 549, - 553, 547, 552, 548, 554, 558, 545, 0, 549, 553, - 552, 550, 555, 556, 557, 560, 554, 548, 559, 564, - 562, 547, 563, 558, 562, 563, 565, 553, 0, 552, - 566, 554, 558, 569, 555, 556, 557, 566, 565, 555, - 556, 557, 567, 564, 559, 559, 564, 571, 563, 563, - 568, 562, 563, 565, 570, 569, 568, 566, 573, 572, - 569, 574, 575, 576, 0, 0, 567, 577, 571, 567, - 572, 580, 576, 578, 571, 579, 570, 568, 580, 573, - 575, 570, 578, 579, 582, 573, 572, 581, 574, 575, - - 576, 577, 585, 583, 577, 584, 586, 587, 580, 588, - 578, 581, 579, 0, 584, 589, 582, 590, 592, 593, - 591, 582, 586, 596, 581, 583, 585, 589, 591, 585, - 583, 592, 584, 586, 593, 597, 606, 604, 587, 595, - 588, 596, 589, 597, 590, 592, 593, 591, 595, 598, - 596, 598, 601, 603, 605, 602, 607, 608, 606, 609, - 603, 610, 597, 606, 612, 601, 595, 602, 604, 607, - 608, 613, 612, 610, 615, 611, 598, 0, 616, 601, - 603, 609, 602, 607, 608, 605, 609, 611, 610, 617, - 614, 612, 615, 618, 621, 619, 620, 617, 613, 614, - - 616, 615, 611, 619, 626, 616, 622, 0, 628, 624, - 626, 633, 621, 623, 631, 618, 617, 614, 622, 620, - 618, 621, 619, 620, 624, 623, 625, 629, 627, 628, - 634, 626, 631, 622, 625, 628, 624, 627, 630, 629, - 623, 631, 633, 634, 635, 630, 637, 638, 640, 636, - 639, 638, 641, 625, 629, 627, 636, 634, 639, 642, - 643, 644, 640, 635, 647, 630, 646, 645, 637, 651, - 641, 635, 649, 637, 648, 640, 636, 639, 638, 641, - 652, 653, 647, 644, 0, 649, 643, 643, 644, 645, - 642, 647, 646, 646, 645, 650, 648, 654, 658, 649, - - 651, 648, 656, 653, 650, 655, 660, 659, 653, 662, - 655, 652, 655, 661, 655, 660, 663, 662, 656, 659, - 654, 658, 650, 655, 654, 658, 661, 667, 666, 656, - 666, 664, 655, 660, 659, 663, 662, 655, 665, 655, - 661, 655, 669, 663, 664, 668, 671, 665, 673, 672, - 674, 676, 675, 678, 667, 666, 673, 668, 664, 675, - 677, 679, 680, 682, 681, 665, 687, 688, 679, 669, - 671, 672, 668, 671, 685, 673, 672, 674, 676, 675, - 678, 684, 677, 681, 680, 682, 683, 677, 679, 680, - 682, 681, 689, 690, 685, 683, 692, 687, 688, 691, - - 693, 685, 684, 694, 692, 695, 696, 697, 684, 701, - 696, 0, 695, 683, 689, 698, 693, 691, 699, 689, - 700, 702, 698, 692, 690, 699, 691, 693, 702, 700, - 694, 704, 695, 696, 706, 701, 701, 703, 697, 703, - 704, 711, 698, 709, 709, 699, 705, 700, 702, 708, - 705, 710, 713, 708, 714, 0, 706, 712, 704, 713, - 710, 706, 715, 711, 703, 720, 712, 716, 711, 717, - 709, 715, 724, 705, 718, 716, 722, 714, 710, 713, - 708, 714, 717, 719, 712, 721, 718, 720, 723, 715, - 724, 719, 720, 726, 716, 725, 717, 723, 722, 724, - - 727, 718, 728, 722, 729, 721, 727, 725, 730, 733, - 719, 731, 721, 0, 726, 723, 738, 735, 734, 0, - 726, 737, 725, 736, 728, 737, 739, 727, 743, 728, - 735, 736, 744, 740, 739, 729, 733, 731, 731, 730, - 734, 740, 752, 738, 735, 734, 741, 741, 742, 743, - 736, 745, 737, 739, 746, 743, 742, 747, 748, 745, - 740, 749, 746, 744, 750, 747, 748, 751, 752, 752, - 750, 753, 754, 741, 749, 742, 755, 758, 745, 751, - 757, 746, 756, 759, 747, 748, 762, 757, 749, 760, - 755, 750, 766, 753, 751, 754, 767, 764, 753, 754, - - 756, 761, 768, 755, 758, 759, 764, 757, 761, 756, - 759, 770, 760, 772, 766, 774, 760, 762, 775, 766, - 776, 778, 767, 767, 764, 777, 780, 777, 761, 779, - 781, 783, 776, 768, 782, 784, 783, 781, 770, 774, - 772, 779, 774, 778, 775, 775, 785, 776, 778, 787, - 789, 784, 777, 780, 790, 786, 779, 781, 783, 789, - 782, 782, 784, 786, 791, 792, 796, 790, 793, 785, - 799, 787, 792, 785, 795, 793, 787, 789, 794, 797, - 798, 790, 786, 799, 800, 794, 803, 798, 796, 806, - 791, 791, 792, 796, 801, 793, 804, 799, 804, 795, - - 805, 795, 807, 808, 811, 794, 809, 798, 803, 810, - 797, 800, 808, 803, 809, 801, 810, 813, 812, 814, - 806, 801, 812, 804, 805, 815, 811, 805, 807, 807, - 808, 811, 816, 809, 820, 817, 810, 822, 819, 813, - 821, 816, 817, 818, 813, 812, 814, 815, 823, 820, - 818, 819, 815, 824, 821, 823, 833, 825, 828, 816, - 824, 820, 817, 825, 827, 819, 830, 821, 822, 829, - 818, 834, 829, 841, 0, 823, 827, 830, 828, 835, - 824, 836, 837, 833, 825, 828, 838, 829, 842, 840, - 843, 827, 836, 830, 838, 834, 829, 843, 834, 829, - - 837, 835, 839, 845, 841, 839, 835, 840, 836, 837, - 844, 853, 845, 838, 846, 842, 840, 843, 849, 847, - 839, 847, 848, 850, 844, 855, 851, 846, 858, 839, - 845, 848, 839, 856, 850, 851, 857, 844, 854, 0, - 0, 846, 853, 857, 849, 849, 847, 854, 859, 848, - 850, 863, 860, 851, 856, 864, 855, 865, 860, 858, - 856, 882, 859, 857, 866, 854, 865, 870, 872, 864, - 863, 868, 866, 871, 870, 859, 860, 867, 863, 860, - 868, 873, 864, 874, 865, 860, 878, 877, 867, 875, - 872, 866, 882, 876, 870, 872, 871, 876, 868, 877, - - 871, 885, 879, 873, 867, 874, 880, 875, 873, 881, - 874, 883, 886, 878, 877, 879, 875, 887, 884, 889, - 876, 880, 885, 890, 881, 891, 883, 884, 885, 879, - 895, 897, 898, 880, 892, 893, 881, 889, 883, 886, - 892, 894, 896, 893, 887, 884, 889, 899, 894, 896, - 890, 902, 900, 904, 903, 908, 891, 895, 897, 898, - 906, 892, 893, 903, 905, 913, 905, 907, 894, 896, - 909, 913, 909, 910, 914, 0, 900, 909, 899, 900, - 910, 903, 902, 911, 904, 909, 908, 906, 912, 919, - 911, 905, 913, 907, 907, 912, 916, 909, 917, 909, - - 910, 914, 915, 915, 909, 917, 920, 919, 921, 923, - 911, 922, 924, 924, 925, 912, 919, 926, 926, 927, - 921, 929, 916, 916, 930, 917, 933, 923, 0, 915, - 927, 922, 932, 920, 934, 921, 923, 947, 922, 924, - 925, 925, 931, 929, 926, 935, 927, 936, 929, 931, - 937, 942, 932, 933, 936, 930, 934, 938, 939, 932, - 940, 934, 937, 935, 941, 938, 944, 945, 947, 931, - 939, 948, 935, 945, 936, 949, 946, 937, 942, 949, - 950, 940, 941, 943, 938, 939, 951, 940, 943, 946, - 952, 941, 953, 944, 945, 954, 963, 955, 948, 943, - - 956, 951, 956, 946, 957, 960, 949, 953, 959, 958, - 943, 950, 955, 951, 958, 943, 962, 964, 954, 953, - 960, 952, 954, 963, 955, 965, 966, 956, 967, 968, - 971, 978, 960, 974, 982, 957, 958, 984, 0, 959, - 962, 975, 974, 962, 964, 971, 965, 968, 966, 967, - 973, 976, 965, 966, 981, 967, 968, 971, 978, 975, - 974, 973, 983, 984, 984, 982, 985, 981, 975, 976, - 986, 992, 983, 989, 988, 0, 973, 973, 976, 990, - 989, 981, 998, 995, 991, 0, 992, 993, 973, 983, - 991, 985, 994, 985, 988, 995, 996, 986, 992, 999, - - 989, 988, 993, 996, 998, 990, 990, 994, 1000, 998, - 995, 991, 1001, 1004, 993, 1003, 1006, 1000, 1010, 994, - 1005, 1005, 1008, 996, 999, 1007, 999, 1010, 1003, 1009, - 1001, 1012, 1013, 1016, 1011, 1000, 0, 1017, 1006, 1001, - 1004, 1011, 1003, 1006, 1008, 1010, 1016, 1005, 1020, 1008, - 1007, 1009, 1007, 1018, 1013, 1015, 1009, 0, 1021, 1013, - 1016, 1011, 1012, 1015, 1017, 1024, 1019, 1025, 1018, 1019, - 1028, 1022, 1029, 1020, 1027, 1020, 1021, 1028, 0, 1031, - 1018, 1033, 1015, 1029, 1019, 1021, 1022, 1024, 1027, 1025, - 1036, 1035, 1024, 1019, 1025, 1037, 1019, 1028, 1022, 1029, - - 1031, 1027, 1033, 1034, 1038, 1034, 1031, 1039, 1033, 1035, - 1040, 1042, 1043, 1037, 1041, 1039, 1044, 1036, 1035, 1048, - 0, 1049, 1037, 1051, 1047, 1042, 1052, 0, 1053, 1050, - 1034, 1038, 1054, 1040, 1039, 1044, 1041, 1040, 1042, 1043, - 1053, 1041, 1047, 1044, 1050, 1051, 1048, 1049, 1049, 1052, - 1051, 1047, 1056, 1052, 1054, 1053, 1050, 1055, 1055, 1054, - 1056, 1058, 1059, 1060, 1058, 1061, 1062, 1064, 0, 1060, - 1059, 1065, 1062, 1066, 0, 1068, 1069, 1067, 1070, 1056, - 1061, 1072, 1071, 1073, 1055, 1075, 1076, 1066, 1058, 1059, - 1060, 1067, 1061, 1062, 1064, 1065, 1071, 1079, 1065, 1074, - - 1066, 1068, 1068, 1069, 1067, 1070, 1077, 1074, 1072, 1071, - 1073, 1080, 1075, 1076, 1077, 1081, 1082, 1087, 1083, 1079, - 1084, 1088, 1085, 1081, 1079, 1086, 1074, 1083, 1089, 1088, - 1091, 1092, 1092, 1077, 1093, 1094, 0, 1096, 1080, 1095, - 1086, 1084, 1081, 1082, 1087, 1083, 1085, 1084, 1088, 1085, - 1100, 1086, 1086, 1094, 1095, 1089, 1098, 1091, 1092, 1096, - 1093, 1093, 1094, 1097, 1096, 1097, 1095, 1086, 1099, 1101, - 1098, 1102, 1100, 1103, 1099, 1104, 1105, 1100, 1107, 1111, - 1114, 1101, 1110, 1098, 1109, 1107, 1112, 1119, 0, 1102, - 1097, 1103, 1114, 1117, 1112, 1099, 1101, 1118, 1102, 1105, - - 1103, 1115, 1109, 1105, 1120, 1107, 1104, 1114, 1110, 1110, - 1111, 1109, 1112, 1112, 1119, 1121, 1115, 1117, 1122, 1118, - 1117, 1112, 1123, 1124, 1118, 1125, 1126, 1120, 1115, 1127, - 1124, 1120, 1128, 1126, 1129, 1131, 0, 1132, 1133, 1121, - 1140, 1134, 1121, 1137, 1123, 1122, 1131, 1144, 1125, 1123, - 1124, 1127, 1125, 1126, 1143, 1129, 1127, 1133, 1146, 1132, - 1148, 1129, 1131, 1128, 1132, 1133, 1134, 1140, 1134, 1137, - 1137, 1149, 1150, 1151, 1144, 1154, 1143, 0, 1151, 1152, - 1158, 1143, 1157, 1150, 1161, 1146, 1160, 1162, 1163, 0, - 1159, 1148, 0, 0, 0, 1164, 1170, 1149, 1149, 1150, - - 1151, 1152, 1154, 1159, 1157, 1158, 1152, 1158, 1160, 1157, - 1164, 1161, 1165, 1160, 1162, 1163, 1166, 1159, 1167, 1168, - 1169, 1165, 1164, 1170, 1171, 1172, 1172, 1169, 1173, 1175, - 1174, 1166, 1175, 1167, 1168, 1173, 1176, 1178, 1179, 1165, - 1180, 1177, 1171, 1166, 1174, 1167, 1168, 1169, 1183, 1176, - 1177, 1171, 1172, 1182, 1185, 1173, 1175, 1174, 1186, 1178, - 1179, 1187, 1182, 1176, 1178, 1179, 1190, 1180, 1177, 1188, - 1189, 1192, 1193, 1187, 1183, 1183, 1186, 1190, 1188, 1189, - 1182, 1185, 1191, 1194, 1195, 1186, 0, 1196, 1187, 1202, - 1191, 1198, 1195, 1190, 1196, 1194, 1188, 1189, 1192, 1198, - - 1201, 1203, 1207, 1193, 1208, 1204, 1205, 1201, 1209, 1191, - 1194, 1195, 1208, 1202, 1196, 1205, 1202, 1204, 1198, 1210, - 0, 1214, 1216, 1217, 1219, 1215, 1221, 1201, 1203, 1207, - 1215, 1208, 1204, 1205, 1218, 1209, 1222, 1223, 1221, 1225, - 1216, 1226, 1224, 1219, 1227, 1217, 1210, 1214, 1214, 1216, - 1217, 1219, 1215, 1221, 1224, 1228, 1218, 1229, 1222, 1223, - 0, 1218, 1232, 1222, 1223, 1231, 1225, 1234, 1226, 1224, - 1236, 1235, 1237, 0, 1238, 1227, 0, 1232, 1239, 1243, - 1245, 0, 1228, 0, 1229, 1235, 1244, 1231, 1236, 1232, - 1237, 1234, 1231, 1246, 1234, 1241, 1239, 1236, 1235, 1237, - - 1238, 1238, 1242, 1241, 1244, 1239, 1243, 1245, 1247, 1249, - 1242, 1250, 1246, 1244, 1252, 1257, 1255, 0, 1256, 1258, - 1246, 1259, 1241, 1255, 1260, 1250, 1262, 1249, 1263, 1242, - 1247, 1264, 1267, 1260, 1261, 1247, 1249, 1271, 1250, 1257, - 1273, 1252, 1257, 1255, 1256, 1256, 1258, 1261, 1259, 1275, - 0, 1260, 1270, 1267, 1264, 1263, 1271, 1262, 1264, 1267, - 1270, 1261, 1272, 1274, 1271, 1276, 1273, 1273, 1277, 1277, - 1272, 1275, 1276, 1278, 1274, 1279, 1275, 1281, 1283, 1270, - 1284, 1286, 1279, 1285, 1290, 1288, 1290, 1283, 0, 1272, - 1274, 1278, 1276, 1293, 1289, 1277, 1294, 1297, 1295, 1286, - - 1278, 1281, 1279, 1288, 1281, 1283, 1285, 1284, 1286, 1289, - 1285, 1290, 1288, 1298, 1301, 1293, 1295, 1300, 1299, 1297, - 1293, 1289, 1294, 1294, 1297, 1295, 1299, 1303, 1302, 1300, - 1305, 1298, 1307, 1307, 1304, 1308, 1306, 1309, 1303, 1312, - 1298, 1301, 1304, 1308, 1300, 1299, 1302, 1310, 1315, 1305, - 1316, 1314, 1318, 1313, 1303, 1302, 1314, 1305, 1306, 1307, - 1313, 1304, 1308, 1306, 1309, 1317, 1312, 1318, 1320, 1310, - 1321, 1322, 0, 1317, 1310, 1315, 1319, 1316, 1314, 1318, - 1313, 1323, 1326, 1319, 1327, 1321, 1325, 1328, 1329, 1323, - 1330, 1331, 1317, 1333, 1335, 1320, 1340, 1321, 1322, 1325, - - 1336, 0, 0, 1319, 1326, 1339, 1341, 1343, 1323, 1326, - 0, 1327, 1330, 1325, 1328, 1329, 1346, 1330, 1331, 1333, - 1333, 1335, 1336, 1340, 1339, 1347, 1351, 1336, 1341, 1343, - 1345, 1353, 1339, 1341, 1343, 1355, 1358, 1345, 1356, 1359, - 1360, 1362, 1364, 1346, 1366, 1358, 1367, 1372, 1347, 1373, - 1356, 1374, 1347, 1351, 1353, 1380, 1373, 1345, 1353, 1366, - 0, 1375, 1355, 1358, 1378, 1356, 1359, 1360, 1362, 1364, - 1372, 1366, 1367, 1367, 1372, 1377, 1373, 1378, 1374, 1375, - 0, 1379, 1380, 0, 0, 0, 0, 1377, 1375, 1379, - 0, 1378, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 1377, 0, 0, 0, 0, 0, 1379, 1383, - 1383, 1383, 1383, 1383, 1383, 1383, 1384, 1384, 1384, 1384, - 1384, 1384, 1384, 1385, 1385, 1385, 1385, 1385, 1385, 1385, - 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1387, 1387, 1387, - 1387, 1387, 1387, 1387, 1389, 1389, 0, 1389, 1389, 1389, - 1389, 1390, 1390, 0, 0, 0, 1390, 1390, 1391, 1391, - 0, 0, 1391, 0, 1391, 1392, 0, 0, 0, 0, - 0, 1392, 1393, 1393, 0, 0, 0, 1393, 1393, 1394, - 0, 0, 0, 0, 0, 1394, 1395, 1395, 0, 1395, - 1395, 1395, 1395, 1396, 1396, 0, 1396, 1396, 1396, 1396, - - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 1382, 1382 + 12, 12, 20, 23, 27, 19, 23, 29, 20, 11, + 23, 20, 20, 132, 21, 12, 27, 25, 619, 29, + 130, 21, 124, 124, 28, 25, 129, 11, 21, 20, + 23, 27, 126, 12, 29, 126, 11, 131, 131, 127, + 21, 21, 12, 25, 25, 75, 28, 26, 21, 37, + 26, 28, 25, 30, 37, 21, 22, 26, 32, 26, + + 22, 30, 37, 22, 32, 22, 22, 30, 75, 31, + 26, 30, 75, 31, 26, 125, 37, 26, 22, 30, + 30, 37, 205, 22, 26, 32, 26, 22, 30, 31, + 22, 89, 22, 22, 30, 31, 31, 33, 30, 34, + 31, 123, 36, 33, 36, 55, 33, 55, 55, 34, + 55, 205, 34, 33, 89, 33, 31, 148, 89, 36, + 63, 34, 63, 63, 33, 63, 34, 35, 36, 36, + 33, 36, 65, 33, 38, 67, 34, 35, 38, 34, + 33, 35, 35, 148, 148, 65, 36, 61, 66, 35, + 66, 66, 56, 66, 35, 51, 76, 63, 74, 65, + + 38, 38, 77, 76, 35, 38, 82, 50, 35, 35, + 68, 82, 68, 68, 71, 68, 71, 71, 78, 71, + 68, 79, 74, 76, 71, 74, 77, 78, 80, 77, + 81, 85, 83, 82, 79, 84, 45, 87, 88, 81, + 83, 90, 86, 80, 85, 78, 87, 88, 79, 86, + 40, 71, 84, 92, 91, 80, 92, 81, 85, 83, + 93, 99, 185, 90, 87, 88, 84, 91, 90, 86, + 92, 96, 95, 97, 94, 96, 97, 92, 14, 84, + 92, 91, 94, 92, 99, 100, 102, 185, 99, 185, + 98, 93, 95, 101, 95, 96, 103, 92, 96, 95, + + 97, 94, 96, 98, 104, 100, 102, 101, 113, 105, + 103, 104, 100, 102, 108, 106, 109, 98, 107, 95, + 101, 108, 107, 103, 106, 110, 111, 13, 0, 112, + 109, 104, 105, 114, 111, 115, 105, 110, 112, 113, + 107, 108, 106, 109, 119, 107, 117, 0, 114, 107, + 116, 121, 110, 111, 120, 115, 112, 117, 118, 116, + 114, 115, 115, 122, 118, 119, 121, 0, 0, 119, + 0, 119, 122, 117, 138, 136, 120, 116, 121, 137, + 0, 120, 115, 145, 128, 118, 128, 128, 0, 128, + 122, 133, 119, 133, 133, 134, 133, 134, 134, 136, + + 134, 137, 136, 139, 140, 138, 137, 141, 143, 142, + 149, 144, 0, 143, 145, 139, 142, 0, 149, 141, + 146, 0, 150, 140, 151, 153, 157, 152, 151, 154, + 139, 140, 134, 144, 141, 157, 142, 149, 144, 143, + 143, 146, 154, 155, 150, 162, 0, 153, 146, 150, + 152, 151, 153, 157, 152, 155, 154, 156, 0, 0, + 156, 158, 0, 159, 160, 0, 161, 165, 146, 147, + 155, 160, 156, 163, 147, 167, 162, 161, 168, 147, + 170, 167, 0, 158, 156, 147, 147, 156, 158, 159, + 159, 160, 147, 161, 164, 169, 147, 166, 165, 163, + + 163, 147, 167, 171, 164, 173, 147, 0, 172, 168, + 0, 170, 147, 147, 174, 166, 175, 169, 176, 177, + 180, 174, 169, 176, 166, 164, 173, 178, 172, 179, + 183, 164, 173, 184, 171, 172, 179, 175, 177, 178, + 184, 174, 180, 175, 181, 176, 177, 180, 186, 181, + 182, 182, 187, 190, 178, 188, 179, 189, 192, 182, + 184, 183, 0, 188, 191, 198, 194, 200, 186, 0, + 197, 181, 189, 193, 0, 186, 200, 182, 182, 190, + 190, 194, 188, 187, 189, 196, 191, 198, 195, 192, + 193, 199, 198, 194, 200, 191, 195, 201, 193, 203, + + 193, 197, 204, 199, 196, 202, 210, 202, 206, 213, + 207, 208, 196, 191, 214, 195, 201, 193, 199, 209, + 211, 212, 208, 203, 201, 215, 203, 214, 204, 204, + 210, 209, 202, 210, 206, 206, 207, 207, 208, 212, + 213, 214, 216, 211, 217, 219, 209, 211, 212, 218, + 224, 215, 215, 220, 219, 222, 218, 221, 223, 220, + 226, 230, 227, 225, 216, 0, 0, 223, 228, 216, + 235, 221, 219, 224, 0, 217, 218, 224, 225, 230, + 220, 222, 222, 228, 221, 223, 227, 232, 230, 227, + 225, 226, 231, 229, 233, 228, 229, 235, 231, 234, + + 234, 232, 237, 229, 236, 237, 238, 239, 240, 233, + 245, 0, 237, 242, 232, 241, 252, 0, 238, 231, + 229, 233, 247, 229, 234, 239, 234, 234, 236, 237, + 253, 236, 237, 238, 239, 240, 243, 241, 244, 242, + 242, 245, 241, 246, 247, 244, 249, 252, 243, 247, + 246, 248, 253, 248, 251, 250, 254, 253, 250, 249, + 250, 255, 254, 243, 256, 244, 250, 0, 255, 267, + 246, 257, 251, 249, 0, 248, 256, 258, 248, 259, + 248, 251, 250, 254, 257, 250, 264, 250, 255, 262, + 261, 256, 259, 258, 264, 0, 265, 263, 257, 269, + + 267, 258, 261, 263, 258, 266, 259, 262, 265, 271, + 350, 269, 266, 264, 0, 270, 262, 261, 268, 274, + 258, 260, 260, 265, 263, 268, 269, 270, 273, 272, + 276, 260, 266, 260, 260, 260, 272, 350, 260, 0, + 271, 273, 270, 275, 278, 268, 260, 0, 260, 260, + 274, 278, 276, 283, 275, 273, 272, 276, 260, 281, + 260, 260, 260, 277, 277, 260, 279, 280, 285, 286, + 275, 278, 281, 282, 284, 0, 283, 279, 280, 287, + 283, 285, 286, 284, 0, 288, 281, 286, 289, 291, + 290, 293, 277, 279, 280, 285, 286, 287, 282, 294, + + 282, 284, 292, 297, 296, 295, 287, 288, 290, 286, + 298, 289, 288, 318, 293, 289, 298, 290, 293, 295, + 291, 294, 299, 292, 300, 301, 294, 302, 303, 292, + 296, 296, 295, 305, 297, 304, 308, 298, 307, 300, + 299, 304, 308, 310, 318, 315, 0, 309, 301, 299, + 303, 300, 301, 302, 302, 303, 311, 316, 315, 305, + 305, 310, 304, 308, 307, 307, 309, 317, 313, 314, + 310, 311, 315, 319, 309, 313, 314, 323, 322, 316, + 320, 321, 319, 311, 316, 320, 317, 321, 324, 323, + 326, 325, 0, 0, 317, 313, 314, 0, 326, 0, + + 319, 322, 325, 329, 323, 322, 328, 320, 321, 0, + 324, 330, 331, 328, 329, 324, 332, 326, 325, 327, + 330, 0, 333, 332, 327, 334, 327, 334, 335, 336, + 329, 0, 339, 328, 327, 337, 331, 346, 341, 331, + 339, 336, 330, 332, 327, 327, 327, 330, 333, 333, + 337, 327, 334, 327, 335, 335, 336, 338, 340, 339, + 341, 327, 337, 340, 342, 341, 343, 344, 346, 338, + 359, 327, 345, 347, 343, 349, 357, 348, 354, 344, + 357, 351, 342, 352, 338, 340, 348, 353, 347, 349, + 354, 342, 355, 343, 344, 345, 351, 359, 352, 345, + + 347, 358, 349, 360, 348, 354, 356, 357, 351, 356, + 352, 353, 361, 362, 353, 358, 355, 356, 363, 355, + 364, 365, 366, 367, 368, 0, 372, 365, 358, 369, + 360, 370, 371, 356, 374, 0, 356, 376, 373, 371, + 362, 378, 0, 361, 366, 363, 367, 374, 365, 366, + 367, 364, 369, 370, 380, 368, 369, 372, 370, 371, + 373, 374, 375, 376, 376, 373, 377, 375, 381, 379, + 382, 375, 378, 385, 383, 377, 387, 384, 380, 0, + 0, 380, 398, 391, 385, 388, 375, 379, 383, 375, + 381, 381, 382, 377, 375, 381, 379, 382, 375, 384, + + 385, 383, 389, 386, 384, 391, 388, 387, 390, 393, + 391, 392, 388, 398, 0, 394, 395, 381, 386, 396, + 392, 397, 393, 0, 400, 397, 389, 399, 0, 389, + 386, 402, 390, 0, 404, 390, 393, 394, 392, 400, + 395, 396, 394, 395, 414, 399, 396, 403, 400, 401, + 409, 400, 397, 401, 399, 403, 402, 407, 402, 404, + 405, 404, 406, 408, 410, 407, 400, 411, 0, 405, + 408, 406, 412, 409, 403, 414, 413, 409, 415, 411, + 401, 412, 410, 416, 407, 417, 415, 405, 413, 406, + 408, 410, 419, 420, 411, 418, 423, 0, 421, 412, + + 0, 422, 424, 413, 420, 415, 421, 425, 417, 416, + 416, 418, 417, 426, 419, 422, 423, 427, 429, 419, + 420, 428, 418, 423, 424, 421, 433, 425, 422, 424, + 428, 430, 432, 431, 425, 426, 435, 0, 429, 427, + 426, 434, 435, 436, 427, 429, 431, 440, 428, 430, + 433, 436, 438, 433, 432, 454, 456, 439, 430, 432, + 431, 0, 440, 435, 434, 447, 441, 442, 434, 436, + 436, 444, 443, 444, 440, 441, 454, 447, 436, 450, + 439, 443, 454, 438, 439, 453, 442, 456, 455, 450, + 0, 458, 447, 441, 442, 0, 459, 461, 444, 443, + + 445, 462, 0, 453, 445, 459, 450, 445, 460, 463, + 460, 455, 453, 458, 445, 455, 464, 445, 458, 0, + 0, 461, 445, 459, 461, 465, 468, 445, 462, 463, + 466, 445, 471, 469, 445, 460, 463, 465, 470, 467, + 469, 445, 464, 464, 445, 457, 470, 457, 468, 472, + 457, 471, 465, 468, 476, 457, 466, 466, 475, 471, + 469, 457, 457, 467, 474, 470, 467, 473, 477, 478, + 457, 479, 457, 474, 457, 472, 472, 457, 481, 473, + 475, 476, 457, 480, 482, 475, 484, 483, 457, 457, + 486, 474, 485, 488, 473, 479, 483, 481, 479, 477, + + 478, 487, 491, 482, 480, 481, 493, 489, 484, 492, + 480, 482, 485, 484, 483, 489, 498, 486, 494, 485, + 487, 497, 492, 495, 488, 512, 491, 497, 487, 491, + 494, 495, 493, 493, 489, 499, 492, 500, 498, 503, + 504, 499, 502, 498, 500, 494, 501, 495, 497, 502, + 495, 501, 505, 507, 509, 0, 512, 503, 495, 508, + 506, 505, 499, 504, 500, 511, 503, 504, 506, 502, + 510, 507, 508, 501, 513, 509, 514, 510, 511, 505, + 507, 509, 515, 516, 517, 518, 508, 506, 519, 520, + 515, 518, 511, 524, 521, 522, 526, 510, 516, 514, + + 525, 527, 523, 514, 522, 513, 517, 525, 529, 515, + 516, 517, 518, 528, 519, 519, 523, 538, 521, 532, + 520, 521, 522, 526, 524, 528, 530, 525, 527, 523, + 531, 529, 532, 531, 530, 529, 534, 0, 535, 538, + 528, 536, 537, 536, 538, 546, 532, 541, 539, 540, + 535, 546, 0, 530, 537, 549, 0, 531, 533, 534, + 533, 539, 540, 534, 533, 535, 533, 542, 536, 537, + 541, 533, 546, 543, 541, 539, 540, 544, 559, 542, + 0, 548, 533, 543, 545, 533, 549, 533, 547, 0, + 552, 533, 0, 533, 542, 543, 551, 545, 533, 544, + + 543, 547, 548, 552, 544, 559, 562, 550, 548, 553, + 543, 545, 550, 555, 550, 547, 554, 552, 551, 556, + 558, 564, 560, 551, 553, 0, 563, 0, 558, 564, + 566, 557, 550, 550, 550, 555, 553, 562, 556, 550, + 555, 550, 554, 554, 557, 560, 556, 558, 564, 560, + 563, 565, 566, 563, 567, 568, 569, 566, 557, 550, + 571, 572, 567, 570, 569, 565, 573, 571, 574, 576, + 577, 0, 0, 568, 572, 583, 579, 576, 565, 577, + 578, 567, 568, 569, 573, 570, 580, 571, 572, 581, + 570, 582, 578, 573, 584, 588, 576, 577, 579, 574, + + 586, 583, 583, 579, 586, 589, 591, 578, 580, 582, + 598, 581, 587, 580, 590, 587, 581, 589, 582, 588, + 592, 590, 588, 593, 594, 584, 592, 595, 597, 596, + 591, 586, 589, 591, 599, 600, 601, 598, 587, 587, + 596, 590, 587, 612, 600, 593, 594, 592, 595, 597, + 593, 594, 599, 606, 595, 597, 596, 602, 604, 603, + 601, 599, 600, 601, 605, 604, 602, 603, 607, 609, + 608, 610, 613, 611, 612, 606, 0, 614, 605, 608, + 606, 615, 0, 0, 602, 604, 603, 610, 611, 614, + 607, 605, 617, 609, 616, 607, 609, 608, 610, 618, + + 611, 620, 616, 613, 614, 617, 621, 622, 615, 623, + 620, 623, 626, 628, 618, 622, 629, 627, 630, 617, + 628, 616, 0, 631, 621, 626, 618, 0, 620, 627, + 632, 634, 638, 621, 622, 633, 623, 0, 637, 626, + 628, 0, 635, 632, 627, 631, 637, 629, 633, 630, + 631, 636, 639, 634, 635, 640, 646, 632, 634, 638, + 641, 639, 633, 636, 642, 637, 643, 641, 645, 635, + 0, 648, 644, 0, 649, 647, 640, 650, 636, 639, + 646, 645, 640, 646, 647, 650, 651, 641, 643, 648, + 642, 642, 644, 643, 653, 645, 649, 652, 648, 644, + + 654, 649, 647, 655, 650, 652, 658, 656, 651, 0, + 657, 660, 0, 651, 658, 655, 659, 653, 654, 656, + 660, 653, 659, 661, 652, 657, 666, 654, 662, 663, + 655, 664, 667, 658, 656, 668, 663, 657, 660, 669, + 662, 670, 675, 659, 661, 667, 669, 671, 676, 664, + 661, 671, 672, 673, 668, 662, 663, 666, 664, 667, + 672, 677, 668, 670, 674, 678, 669, 673, 670, 679, + 684, 680, 681, 675, 676, 676, 683, 682, 671, 672, + 673, 685, 674, 677, 686, 683, 687, 678, 677, 680, + 682, 674, 678, 0, 681, 679, 679, 691, 680, 681, + + 689, 684, 692, 683, 682, 694, 686, 696, 0, 687, + 688, 686, 685, 687, 692, 688, 689, 688, 694, 688, + 691, 693, 697, 695, 691, 700, 696, 689, 688, 692, + 693, 695, 694, 702, 696, 697, 698, 688, 699, 701, + 699, 707, 688, 704, 688, 698, 688, 705, 693, 697, + 695, 701, 700, 706, 709, 708, 710, 711, 714, 721, + 702, 706, 708, 698, 712, 699, 701, 704, 707, 705, + 704, 712, 713, 715, 705, 716, 718, 714, 710, 717, + 706, 709, 708, 710, 711, 714, 722, 719, 717, 723, + 721, 712, 724, 727, 713, 715, 731, 718, 728, 713, + + 715, 716, 716, 718, 725, 726, 717, 719, 729, 727, + 735, 723, 732, 726, 719, 729, 723, 722, 0, 732, + 727, 734, 725, 724, 730, 728, 733, 731, 730, 743, + 734, 725, 726, 733, 736, 729, 735, 735, 737, 732, + 737, 736, 739, 738, 740, 742, 739, 743, 734, 742, + 745, 730, 738, 733, 744, 746, 743, 747, 749, 750, + 748, 736, 751, 751, 0, 737, 740, 750, 746, 739, + 738, 740, 753, 744, 749, 745, 742, 745, 756, 0, + 760, 744, 746, 748, 752, 749, 750, 748, 747, 751, + 755, 754, 760, 752, 753, 757, 759, 755, 758, 753, + + 754, 756, 761, 771, 757, 756, 758, 760, 762, 759, + 761, 752, 763, 766, 764, 765, 767, 755, 754, 772, + 0, 769, 757, 759, 765, 758, 768, 769, 767, 761, + 762, 766, 763, 770, 771, 762, 764, 773, 775, 763, + 766, 764, 765, 767, 776, 777, 778, 768, 769, 780, + 772, 781, 779, 768, 778, 770, 779, 0, 777, 781, + 770, 782, 784, 773, 773, 775, 776, 783, 783, 782, + 784, 776, 777, 778, 785, 786, 780, 787, 781, 0, + 791, 792, 788, 779, 789, 787, 793, 792, 782, 784, + 788, 790, 789, 791, 783, 785, 794, 795, 793, 790, + + 797, 785, 796, 798, 787, 799, 786, 791, 792, 788, + 800, 789, 799, 793, 797, 804, 801, 802, 790, 795, + 808, 798, 794, 794, 795, 796, 803, 797, 809, 796, + 798, 810, 799, 803, 812, 0, 806, 800, 801, 814, + 802, 816, 808, 801, 802, 806, 804, 808, 817, 819, + 821, 819, 818, 803, 809, 809, 820, 823, 822, 828, + 824, 812, 810, 806, 818, 816, 814, 824, 816, 820, + 822, 825, 821, 826, 817, 817, 819, 821, 826, 818, + 827, 829, 828, 820, 823, 822, 828, 824, 830, 829, + 832, 833, 840, 834, 835, 836, 827, 825, 825, 832, + + 826, 835, 836, 838, 833, 837, 841, 827, 829, 839, + 830, 842, 837, 841, 843, 830, 844, 832, 833, 834, + 834, 835, 836, 840, 842, 847, 846, 848, 838, 846, + 838, 839, 837, 841, 851, 852, 839, 844, 842, 849, + 853, 843, 848, 844, 850, 856, 849, 850, 854, 857, + 858, 847, 847, 846, 848, 859, 863, 852, 853, 850, + 863, 855, 852, 855, 859, 851, 849, 853, 850, 856, + 854, 850, 856, 860, 850, 854, 858, 858, 861, 862, + 857, 860, 859, 863, 865, 861, 850, 864, 855, 867, + 866, 870, 868, 871, 873, 869, 872, 0, 867, 868, + + 860, 862, 869, 878, 870, 861, 862, 876, 871, 864, + 872, 865, 866, 876, 864, 878, 867, 866, 870, 868, + 871, 874, 869, 872, 875, 873, 879, 881, 874, 880, + 878, 875, 880, 884, 876, 886, 889, 885, 881, 887, + 888, 892, 893, 0, 889, 0, 879, 880, 874, 0, + 887, 875, 890, 879, 881, 890, 880, 886, 888, 880, + 884, 885, 886, 889, 885, 891, 887, 888, 894, 893, + 890, 895, 892, 900, 897, 894, 898, 896, 898, 890, + 899, 902, 890, 891, 904, 895, 896, 897, 906, 899, + 902, 901, 891, 907, 909, 894, 905, 910, 895, 900, + + 900, 897, 901, 898, 896, 905, 908, 899, 902, 914, + 911, 910, 915, 908, 907, 904, 911, 0, 901, 906, + 907, 916, 918, 905, 910, 909, 915, 917, 914, 919, + 916, 922, 920, 908, 911, 917, 914, 911, 922, 915, + 919, 920, 923, 911, 924, 925, 926, 928, 916, 929, + 930, 928, 927, 918, 917, 934, 919, 938, 922, 920, + 939, 929, 931, 932, 0, 923, 924, 925, 926, 923, + 927, 924, 925, 926, 928, 931, 929, 930, 932, 927, + 933, 935, 936, 937, 938, 941, 934, 939, 942, 931, + 932, 936, 944, 945, 947, 933, 935, 0, 943, 953, + + 948, 946, 952, 941, 937, 949, 947, 933, 935, 936, + 937, 945, 941, 943, 944, 942, 946, 950, 949, 944, + 945, 947, 948, 949, 950, 943, 951, 948, 946, 952, + 953, 954, 949, 955, 957, 956, 958, 954, 951, 959, + 960, 955, 956, 958, 950, 949, 961, 962, 964, 966, + 0, 968, 0, 951, 967, 965, 967, 969, 954, 970, + 955, 957, 956, 958, 965, 0, 959, 960, 972, 973, + 976, 962, 977, 977, 962, 972, 973, 961, 968, 964, + 966, 967, 965, 969, 969, 971, 974, 971, 975, 981, + 970, 978, 971, 974, 975, 972, 973, 976, 979, 977, + + 971, 982, 984, 985, 0, 979, 987, 981, 983, 986, + 986, 992, 971, 974, 971, 975, 981, 978, 978, 971, + 983, 985, 984, 988, 988, 979, 989, 991, 982, 984, + 985, 993, 987, 987, 995, 983, 986, 989, 993, 994, + 996, 998, 992, 999, 1000, 997, 1003, 1004, 998, 991, + 988, 1006, 1000, 989, 991, 999, 1002, 1001, 993, 994, + 1005, 995, 996, 997, 1003, 1005, 994, 996, 998, 1001, + 999, 1000, 997, 1003, 1004, 1007, 1005, 1002, 1006, 1009, + 1008, 1007, 1010, 1002, 1001, 1011, 1012, 1005, 1014, 1011, + 0, 1015, 1005, 1008, 1013, 1013, 1016, 1017, 1018, 1019, + + 1020, 1019, 1007, 1014, 1022, 1025, 1026, 1008, 0, 1010, + 1009, 1016, 1023, 1018, 1021, 1014, 1011, 1012, 1027, 1021, + 1017, 1013, 1015, 1016, 1017, 1018, 1019, 1023, 1028, 1025, + 1029, 1020, 1025, 1026, 1037, 1022, 1031, 1030, 1034, 1023, + 1038, 1021, 1039, 1041, 1036, 1027, 0, 1038, 1044, 1028, + 1042, 1041, 1029, 1034, 1031, 1028, 1043, 1029, 1030, 1036, + 1039, 1037, 0, 1031, 1030, 1034, 1040, 1038, 1045, 1039, + 1041, 1036, 1049, 1042, 1047, 1040, 1050, 1042, 1043, 1044, + 1048, 1045, 1052, 1043, 1055, 1047, 1056, 1058, 1057, 1048, + 1049, 1059, 1060, 1040, 1050, 1045, 0, 1055, 1057, 1049, + + 1047, 1047, 1062, 1050, 1064, 0, 1066, 1048, 1067, 1052, + 1068, 1055, 1047, 1058, 1058, 1057, 1059, 1056, 1059, 1060, + 1063, 1066, 1062, 1067, 1069, 1068, 1065, 1063, 1072, 1062, + 1064, 1064, 1065, 1066, 1070, 1067, 1069, 1068, 1073, 1074, + 1075, 1070, 1078, 1077, 1079, 1079, 1080, 1063, 1074, 1081, + 1072, 1069, 1086, 1065, 0, 1072, 1077, 1082, 1075, 1083, + 0, 1070, 1091, 1073, 0, 1073, 1074, 1075, 1080, 1078, + 1077, 1079, 1087, 1080, 1081, 1085, 1081, 1089, 1084, 1082, + 1090, 1083, 1085, 1086, 1082, 1089, 1083, 1084, 1092, 1091, + 1095, 1094, 1093, 1090, 1087, 1093, 1096, 0, 1098, 1087, + + 1101, 0, 1085, 1092, 1089, 1084, 1099, 1090, 1095, 1105, + 1093, 1096, 1111, 1107, 1101, 1092, 1094, 1095, 1094, 1093, + 1098, 1103, 1093, 1096, 1102, 1098, 1108, 1101, 1099, 1110, + 1105, 1102, 1103, 1099, 1107, 1109, 1105, 1109, 1108, 1111, + 1107, 1112, 1113, 1115, 1114, 1116, 1117, 1110, 1103, 1118, + 1123, 1102, 1114, 1108, 1124, 1119, 1110, 1122, 1127, 1112, + 1117, 1126, 1109, 1125, 1130, 0, 1115, 1116, 1112, 1113, + 1115, 1114, 1116, 1117, 1119, 1122, 1118, 1123, 1125, 1133, + 1124, 1124, 1119, 1126, 1122, 1127, 1130, 1129, 1126, 1129, + 1125, 1130, 1131, 1132, 1134, 1136, 1131, 1135, 1138, 0, + + 1137, 1133, 0, 1134, 1139, 1132, 1133, 1141, 1135, 1144, + 1138, 1140, 1140, 1143, 1129, 1141, 1143, 1144, 1146, 1131, + 1132, 1134, 1136, 1137, 1135, 1138, 1139, 1137, 1149, 1145, + 1150, 1139, 1151, 1146, 1141, 1145, 1144, 1147, 1140, 1152, + 1143, 1153, 1154, 1147, 1155, 1146, 1151, 1156, 1157, 1158, + 1159, 1160, 1161, 1152, 1150, 1149, 1145, 1150, 1159, 1151, + 1164, 1156, 1162, 1165, 1147, 1166, 1152, 1153, 1153, 1154, + 1162, 1155, 1167, 1166, 1156, 1157, 1158, 1159, 1160, 1161, + 1169, 1170, 1164, 1171, 1168, 1172, 1173, 1164, 1174, 1162, + 1165, 1176, 1166, 1168, 1173, 1177, 1177, 1178, 1171, 1167, + + 0, 1169, 1179, 1183, 1180, 1170, 1181, 1169, 1170, 1171, + 1171, 1168, 1172, 1173, 1182, 1174, 1182, 1183, 1176, 1180, + 1179, 1184, 1177, 1178, 1178, 1171, 1186, 1184, 1181, 1179, + 1183, 1180, 1185, 1181, 1187, 1190, 1189, 1188, 1186, 1197, + 1193, 1182, 1191, 0, 1195, 0, 1196, 1193, 1184, 1189, + 1198, 1205, 1187, 1186, 1185, 1188, 1200, 1203, 1198, 1185, + 1201, 1187, 1195, 1189, 1188, 1191, 1190, 1193, 1200, 1191, + 1197, 1195, 1196, 1196, 1204, 1201, 1198, 1198, 1205, 1207, + 1208, 1203, 1209, 1200, 1203, 1198, 1211, 1201, 1210, 1212, + 0, 1213, 0, 1208, 0, 1216, 1204, 1212, 1215, 1211, + + 1217, 1204, 1218, 1210, 1219, 1220, 1207, 1208, 1209, 1209, + 1223, 1219, 1222, 1211, 0, 1210, 1212, 1213, 1213, 1216, + 1243, 1215, 1216, 1221, 1218, 1215, 1224, 1217, 1220, 1218, + 1221, 1219, 1220, 1226, 1222, 1227, 1228, 1235, 0, 1222, + 1229, 1223, 1232, 0, 1226, 1239, 1241, 1224, 1238, 1246, + 1221, 1243, 1244, 1224, 1246, 1228, 1249, 1227, 1247, 1252, + 1226, 1254, 1227, 1228, 1235, 1229, 1245, 1229, 1232, 1232, + 1238, 1253, 1239, 1241, 1254, 1238, 1246, 1245, 1244, 1244, + 1247, 1252, 1255, 1249, 1256, 1247, 1252, 1257, 1254, 1258, + 1259, 1260, 1261, 1245, 0, 1262, 1253, 1263, 1253, 1264, + + 1260, 1265, 1266, 1271, 1255, 1259, 1271, 1261, 1265, 1255, + 1262, 1256, 1263, 1267, 1257, 1276, 1258, 1259, 1260, 1261, + 1269, 1264, 1262, 1270, 1263, 1272, 1264, 1269, 1265, 1266, + 1271, 1267, 1268, 1268, 1273, 1274, 1275, 1270, 1272, 1279, + 1267, 1282, 1276, 1273, 1280, 1288, 1279, 1269, 1282, 1281, + 1270, 1283, 1272, 1280, 1281, 1285, 1289, 1274, 1275, 1268, + 1284, 1273, 1274, 1275, 1285, 1286, 1279, 1284, 1282, 1283, + 1291, 1280, 1288, 1290, 1289, 1292, 1281, 1293, 1283, 1291, + 1295, 1294, 1285, 1289, 1292, 1290, 1296, 1284, 1293, 1294, + 0, 1286, 1286, 1297, 1299, 1298, 0, 1291, 1301, 1305, + + 1290, 1299, 1292, 1298, 1293, 1297, 1301, 1295, 1294, 1304, + 1306, 1310, 1307, 0, 1312, 1313, 1304, 1296, 1308, 0, + 1297, 1299, 1298, 1305, 1307, 1301, 1305, 1308, 1317, 1318, + 1319, 1320, 1311, 1329, 1318, 1330, 1304, 1306, 1310, 1307, + 1311, 1312, 1313, 1321, 1322, 1308, 1326, 1323, 1319, 1325, + 1327, 1328, 1322, 1320, 1317, 1317, 1318, 1319, 1320, 1311, + 1329, 1325, 1330, 1328, 1331, 1321, 1323, 1332, 1326, 1333, + 1321, 1322, 1327, 1326, 1323, 1335, 1325, 1327, 1328, 0, + 1336, 1338, 1337, 1340, 0, 1339, 1342, 0, 0, 1341, + 1344, 1345, 0, 0, 1332, 1331, 1333, 1339, 1348, 1338, + + 1353, 1342, 1340, 1336, 1337, 1345, 1335, 1336, 1338, 1337, + 1340, 1341, 1339, 1342, 1344, 1346, 1341, 1344, 1345, 1347, + 1349, 1351, 1352, 1354, 1348, 1348, 1355, 1353, 1362, 1351, + 1352, 1360, 1356, 1346, 1357, 1368, 1359, 1347, 1349, 1366, + 0, 1354, 1346, 1367, 1369, 1360, 1347, 1349, 1351, 1352, + 1354, 1356, 1370, 1355, 1359, 1362, 1357, 1365, 1360, 1356, + 1371, 1357, 1368, 1359, 1365, 1366, 1366, 1367, 1372, 1371, + 1367, 1369, 1373, 1374, 1375, 1378, 0, 1382, 1384, 1370, + 1383, 1372, 1381, 1381, 1365, 1384, 1386, 1371, 1390, 1383, + 1387, 0, 1381, 1385, 1392, 1372, 1378, 1375, 1387, 1382, + + 1374, 1375, 1378, 1373, 1382, 1384, 1385, 1383, 1388, 1381, + 1381, 1389, 1391, 1386, 1390, 1390, 1392, 1387, 1393, 1389, + 1385, 1392, 1395, 1391, 1396, 1393, 1398, 1388, 1394, 1394, + 1401, 1396, 1400, 1402, 1403, 1388, 1405, 0, 1389, 1391, + 1395, 1400, 1407, 1406, 1407, 1393, 1411, 0, 1412, 1395, + 1398, 1396, 1403, 1398, 1405, 1394, 1402, 1401, 1406, 1400, + 1402, 1403, 1413, 1405, 1415, 1416, 1417, 1422, 1411, 1407, + 1406, 1420, 1417, 1411, 1412, 1412, 1418, 1421, 1419, 1421, + 1413, 1426, 1424, 1416, 1425, 0, 1415, 1419, 1427, 1413, + 1424, 1415, 1416, 1417, 1422, 1430, 1425, 1431, 1418, 1428, + + 1432, 1432, 1420, 1418, 1421, 1419, 1427, 1434, 1426, 1424, + 1428, 1425, 1429, 1433, 1430, 1427, 1435, 1437, 1438, 1431, + 1429, 1433, 1430, 1439, 1431, 1438, 1428, 1432, 1439, 1440, + 1441, 1443, 1445, 1442, 1434, 1444, 1446, 1449, 1435, 1429, + 1433, 1442, 1444, 1435, 1437, 1438, 1443, 1447, 1451, 1453, + 1439, 1446, 0, 1448, 1450, 1450, 1440, 1441, 1443, 1445, + 1442, 1448, 1444, 1446, 1450, 1454, 1456, 1457, 1449, 1447, + 1458, 1459, 1460, 1454, 1447, 1451, 1453, 1462, 1461, 1456, + 1448, 1450, 1450, 1464, 1466, 1467, 1471, 1470, 0, 1457, + 0, 0, 1454, 1456, 1457, 1472, 1474, 1458, 1459, 1460, + + 1461, 1483, 1488, 0, 1462, 1461, 1470, 1467, 1476, 1464, + 1464, 1466, 1467, 1471, 1470, 1475, 1479, 1472, 1474, 1476, + 1477, 1477, 1472, 1474, 1475, 1478, 1482, 1484, 1483, 1488, + 1477, 1478, 1490, 1482, 1492, 1476, 1495, 1493, 1479, 1496, + 1500, 0, 1475, 1479, 1497, 1495, 1497, 1477, 1477, 1493, + 1484, 1499, 1478, 1482, 1484, 1490, 1498, 1499, 1501, 1490, + 1503, 1492, 1500, 1495, 1493, 1502, 1496, 1500, 1498, 1505, + 1507, 1497, 1510, 1502, 1509, 1512, 0, 1513, 1499, 0, + 1501, 1514, 1516, 1498, 1517, 1501, 1515, 1503, 1523, 1509, + 1513, 1516, 1502, 1521, 1515, 1517, 1505, 1507, 1510, 1510, + + 1522, 1509, 1523, 1514, 1513, 1525, 1512, 1522, 1514, 1516, + 1524, 1517, 1526, 1515, 1525, 1523, 1521, 1527, 1524, 1527, + 1521, 1528, 1529, 1526, 1530, 1531, 1534, 1522, 1532, 1533, + 1535, 1533, 1525, 1528, 1540, 1539, 1541, 1524, 1534, 1526, + 0, 1536, 1530, 1539, 1527, 1538, 1542, 1531, 1528, 1529, + 1532, 1530, 1531, 1534, 1536, 1532, 1533, 1538, 1544, 1542, + 1543, 1535, 1539, 1545, 1547, 1540, 1544, 1541, 1536, 1546, + 1548, 1549, 1538, 1542, 1543, 1558, 1545, 1546, 1547, 1549, + 1550, 1551, 0, 1553, 1548, 1544, 1552, 1543, 0, 1554, + 1545, 1547, 1555, 1556, 1552, 1559, 1546, 1548, 1549, 1563, + + 0, 1560, 1550, 1551, 1557, 0, 1558, 1550, 1551, 1553, + 1553, 1554, 1557, 1552, 1555, 1556, 1554, 1561, 1562, 1555, + 1556, 1560, 1559, 1565, 1564, 1561, 1562, 1567, 1560, 1570, + 1563, 1557, 1564, 1568, 1569, 0, 1571, 1565, 1574, 1573, + 0, 1568, 1569, 1570, 1561, 1562, 1572, 1573, 1575, 1567, + 1565, 1564, 1577, 1579, 1567, 1576, 1570, 0, 1580, 1578, + 1568, 1569, 1571, 1571, 1574, 1574, 1573, 1578, 1572, 1581, + 1583, 1586, 1577, 1572, 1575, 1575, 1582, 1576, 1580, 1577, + 1579, 0, 1576, 1584, 1582, 1580, 1578, 1587, 1594, 1581, + 1590, 1584, 1583, 1586, 1588, 1596, 1581, 1583, 1586, 1589, + + 1591, 1597, 1588, 1582, 1592, 0, 1593, 1589, 1591, 1587, + 1584, 0, 1592, 1600, 1587, 1594, 1590, 1590, 1595, 1598, + 1603, 1588, 1596, 1606, 1607, 0, 1589, 1591, 1597, 1604, + 0, 1592, 1593, 1593, 0, 1600, 1605, 1604, 1595, 1598, + 1600, 0, 1603, 0, 1605, 1595, 1598, 1603, 0, 0, + 1606, 1607, 0, 0, 0, 0, 1604, 0, 0, 0, + 0, 0, 0, 1605, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1613, 1613, + 1613, 1613, 1613, 1613, 1613, 1614, 1614, 1614, 1614, 1614, + 1614, 1614, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1617, + + 1617, 0, 1617, 1617, 1617, 1617, 1618, 1618, 0, 0, + 0, 1618, 1618, 1619, 1619, 0, 0, 1619, 0, 1619, + 1620, 0, 0, 0, 0, 0, 1620, 1621, 1621, 0, + 0, 0, 1621, 1621, 1622, 0, 0, 0, 0, 0, + 1622, 1623, 1623, 0, 1623, 1623, 1623, 1623, 1624, 1624, + 0, 1624, 1624, 1624, 1624, 1610, 1610, 1610, 1610, 1610, + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + 1610 } ; static yy_state_type yy_last_accepting_state; @@ -1815,7 +2036,6 @@ char *yytext; * See LICENSE for the license. * */ - #include <ctype.h> #include <string.h> #include <strings.h> @@ -1980,7 +2200,7 @@ static void config_end_include(void) #endif #define YY_NO_INPUT 1 -#line 178 "util/configlexer.lex" +#line 177 "util/configlexer.lex" #ifndef YY_NO_UNPUT #define YY_NO_UNPUT 1 #endif @@ -1988,7 +2208,7 @@ static void config_end_include(void) #define YY_NO_INPUT 1 #endif -#line 1990 "<stdout>" +#line 2210 "<stdout>" #define INITIAL 0 #define quotedstring 1 @@ -2173,9 +2393,9 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 198 "util/configlexer.lex" +#line 197 "util/configlexer.lex" -#line 2177 "<stdout>" +#line 2397 "<stdout>" if ( !(yy_init) ) { @@ -2234,13 +2454,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 >= 1383 ) + if ( yy_current_state >= 1611 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 4001 ); + while ( yy_base[yy_current_state] != 4656 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -2266,668 +2486,754 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 199 "util/configlexer.lex" +#line 198 "util/configlexer.lex" { LEXOUT(("SP ")); /* ignore */ } YY_BREAK case 2: YY_RULE_SETUP -#line 201 "util/configlexer.lex" +#line 200 "util/configlexer.lex" { /* note that flex makes the longest match and '.' is any but not nl */ LEXOUT(("comment(%s) ", yytext)); /* ignore */ } YY_BREAK case 3: YY_RULE_SETUP -#line 204 "util/configlexer.lex" +#line 203 "util/configlexer.lex" { YDVAR(0, VAR_SERVER) } YY_BREAK case 4: YY_RULE_SETUP -#line 205 "util/configlexer.lex" +#line 204 "util/configlexer.lex" { YDVAR(1, VAR_NUM_THREADS) } YY_BREAK case 5: YY_RULE_SETUP -#line 206 "util/configlexer.lex" +#line 205 "util/configlexer.lex" { YDVAR(1, VAR_VERBOSITY) } YY_BREAK case 6: YY_RULE_SETUP -#line 207 "util/configlexer.lex" +#line 206 "util/configlexer.lex" { YDVAR(1, VAR_PORT) } YY_BREAK case 7: YY_RULE_SETUP -#line 208 "util/configlexer.lex" +#line 207 "util/configlexer.lex" { YDVAR(1, VAR_OUTGOING_RANGE) } YY_BREAK case 8: YY_RULE_SETUP -#line 209 "util/configlexer.lex" +#line 208 "util/configlexer.lex" { YDVAR(1, VAR_OUTGOING_PORT_PERMIT) } YY_BREAK case 9: YY_RULE_SETUP -#line 210 "util/configlexer.lex" +#line 209 "util/configlexer.lex" { YDVAR(1, VAR_OUTGOING_PORT_AVOID) } YY_BREAK case 10: YY_RULE_SETUP -#line 211 "util/configlexer.lex" +#line 210 "util/configlexer.lex" { YDVAR(1, VAR_OUTGOING_NUM_TCP) } YY_BREAK case 11: YY_RULE_SETUP -#line 212 "util/configlexer.lex" +#line 211 "util/configlexer.lex" { YDVAR(1, VAR_INCOMING_NUM_TCP) } YY_BREAK case 12: YY_RULE_SETUP -#line 213 "util/configlexer.lex" +#line 212 "util/configlexer.lex" { YDVAR(1, VAR_DO_IP4) } YY_BREAK case 13: YY_RULE_SETUP -#line 214 "util/configlexer.lex" +#line 213 "util/configlexer.lex" { YDVAR(1, VAR_DO_IP6) } YY_BREAK case 14: YY_RULE_SETUP -#line 215 "util/configlexer.lex" +#line 214 "util/configlexer.lex" { YDVAR(1, VAR_DO_UDP) } YY_BREAK case 15: YY_RULE_SETUP -#line 216 "util/configlexer.lex" +#line 215 "util/configlexer.lex" { YDVAR(1, VAR_DO_TCP) } YY_BREAK case 16: YY_RULE_SETUP -#line 217 "util/configlexer.lex" +#line 216 "util/configlexer.lex" { YDVAR(1, VAR_TCP_UPSTREAM) } YY_BREAK case 17: YY_RULE_SETUP -#line 218 "util/configlexer.lex" +#line 217 "util/configlexer.lex" { YDVAR(1, VAR_SSL_UPSTREAM) } YY_BREAK case 18: YY_RULE_SETUP -#line 219 "util/configlexer.lex" +#line 218 "util/configlexer.lex" { YDVAR(1, VAR_SSL_SERVICE_KEY) } YY_BREAK case 19: YY_RULE_SETUP -#line 220 "util/configlexer.lex" +#line 219 "util/configlexer.lex" { YDVAR(1, VAR_SSL_SERVICE_PEM) } YY_BREAK case 20: YY_RULE_SETUP -#line 221 "util/configlexer.lex" +#line 220 "util/configlexer.lex" { YDVAR(1, VAR_SSL_PORT) } YY_BREAK case 21: YY_RULE_SETUP -#line 222 "util/configlexer.lex" +#line 221 "util/configlexer.lex" { YDVAR(1, VAR_DO_DAEMONIZE) } YY_BREAK case 22: YY_RULE_SETUP -#line 223 "util/configlexer.lex" +#line 222 "util/configlexer.lex" { YDVAR(1, VAR_INTERFACE) } YY_BREAK case 23: YY_RULE_SETUP -#line 224 "util/configlexer.lex" +#line 223 "util/configlexer.lex" { YDVAR(1, VAR_INTERFACE) } YY_BREAK case 24: YY_RULE_SETUP -#line 225 "util/configlexer.lex" +#line 224 "util/configlexer.lex" { YDVAR(1, VAR_OUTGOING_INTERFACE) } YY_BREAK case 25: YY_RULE_SETUP -#line 226 "util/configlexer.lex" +#line 225 "util/configlexer.lex" { YDVAR(1, VAR_INTERFACE_AUTOMATIC) } YY_BREAK case 26: YY_RULE_SETUP -#line 227 "util/configlexer.lex" +#line 226 "util/configlexer.lex" { YDVAR(1, VAR_SO_RCVBUF) } YY_BREAK case 27: YY_RULE_SETUP -#line 228 "util/configlexer.lex" +#line 227 "util/configlexer.lex" { YDVAR(1, VAR_SO_SNDBUF) } YY_BREAK case 28: YY_RULE_SETUP -#line 229 "util/configlexer.lex" +#line 228 "util/configlexer.lex" { YDVAR(1, VAR_SO_REUSEPORT) } YY_BREAK case 29: YY_RULE_SETUP -#line 230 "util/configlexer.lex" +#line 229 "util/configlexer.lex" { YDVAR(1, VAR_CHROOT) } YY_BREAK case 30: YY_RULE_SETUP -#line 231 "util/configlexer.lex" +#line 230 "util/configlexer.lex" { YDVAR(1, VAR_USERNAME) } YY_BREAK case 31: YY_RULE_SETUP -#line 232 "util/configlexer.lex" +#line 231 "util/configlexer.lex" { YDVAR(1, VAR_DIRECTORY) } YY_BREAK case 32: YY_RULE_SETUP -#line 233 "util/configlexer.lex" +#line 232 "util/configlexer.lex" { YDVAR(1, VAR_LOGFILE) } YY_BREAK case 33: YY_RULE_SETUP -#line 234 "util/configlexer.lex" +#line 233 "util/configlexer.lex" { YDVAR(1, VAR_PIDFILE) } YY_BREAK case 34: YY_RULE_SETUP -#line 235 "util/configlexer.lex" +#line 234 "util/configlexer.lex" { YDVAR(1, VAR_ROOT_HINTS) } YY_BREAK case 35: YY_RULE_SETUP -#line 236 "util/configlexer.lex" +#line 235 "util/configlexer.lex" { YDVAR(1, VAR_EDNS_BUFFER_SIZE) } YY_BREAK case 36: YY_RULE_SETUP -#line 237 "util/configlexer.lex" +#line 236 "util/configlexer.lex" { YDVAR(1, VAR_MSG_BUFFER_SIZE) } YY_BREAK case 37: YY_RULE_SETUP -#line 238 "util/configlexer.lex" +#line 237 "util/configlexer.lex" { YDVAR(1, VAR_MSG_CACHE_SIZE) } YY_BREAK case 38: YY_RULE_SETUP -#line 239 "util/configlexer.lex" +#line 238 "util/configlexer.lex" { YDVAR(1, VAR_MSG_CACHE_SLABS) } YY_BREAK case 39: YY_RULE_SETUP -#line 240 "util/configlexer.lex" +#line 239 "util/configlexer.lex" { YDVAR(1, VAR_RRSET_CACHE_SIZE) } YY_BREAK case 40: YY_RULE_SETUP -#line 241 "util/configlexer.lex" +#line 240 "util/configlexer.lex" { YDVAR(1, VAR_RRSET_CACHE_SLABS) } YY_BREAK case 41: YY_RULE_SETUP -#line 242 "util/configlexer.lex" +#line 241 "util/configlexer.lex" { YDVAR(1, VAR_CACHE_MAX_TTL) } YY_BREAK case 42: YY_RULE_SETUP -#line 243 "util/configlexer.lex" +#line 242 "util/configlexer.lex" { YDVAR(1, VAR_CACHE_MIN_TTL) } YY_BREAK case 43: YY_RULE_SETUP -#line 244 "util/configlexer.lex" +#line 243 "util/configlexer.lex" { YDVAR(1, VAR_INFRA_HOST_TTL) } YY_BREAK case 44: YY_RULE_SETUP -#line 245 "util/configlexer.lex" +#line 244 "util/configlexer.lex" { YDVAR(1, VAR_INFRA_LAME_TTL) } YY_BREAK case 45: YY_RULE_SETUP -#line 246 "util/configlexer.lex" +#line 245 "util/configlexer.lex" { YDVAR(1, VAR_INFRA_CACHE_SLABS) } YY_BREAK case 46: YY_RULE_SETUP -#line 247 "util/configlexer.lex" +#line 246 "util/configlexer.lex" { YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } YY_BREAK case 47: YY_RULE_SETUP -#line 248 "util/configlexer.lex" +#line 247 "util/configlexer.lex" { YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } YY_BREAK case 48: YY_RULE_SETUP -#line 249 "util/configlexer.lex" +#line 248 "util/configlexer.lex" { YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } YY_BREAK case 49: YY_RULE_SETUP -#line 250 "util/configlexer.lex" +#line 249 "util/configlexer.lex" { YDVAR(1, VAR_JOSTLE_TIMEOUT) } YY_BREAK case 50: YY_RULE_SETUP -#line 251 "util/configlexer.lex" +#line 250 "util/configlexer.lex" { YDVAR(1, VAR_DELAY_CLOSE) } YY_BREAK case 51: YY_RULE_SETUP -#line 252 "util/configlexer.lex" +#line 251 "util/configlexer.lex" { YDVAR(1, VAR_TARGET_FETCH_POLICY) } YY_BREAK case 52: YY_RULE_SETUP -#line 253 "util/configlexer.lex" +#line 252 "util/configlexer.lex" { YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } YY_BREAK case 53: YY_RULE_SETUP -#line 254 "util/configlexer.lex" +#line 253 "util/configlexer.lex" { YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } YY_BREAK case 54: YY_RULE_SETUP -#line 255 "util/configlexer.lex" +#line 254 "util/configlexer.lex" { YDVAR(1, VAR_HARDEN_GLUE) } YY_BREAK case 55: YY_RULE_SETUP -#line 256 "util/configlexer.lex" +#line 255 "util/configlexer.lex" { YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } YY_BREAK case 56: YY_RULE_SETUP -#line 257 "util/configlexer.lex" +#line 256 "util/configlexer.lex" { YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } YY_BREAK case 57: YY_RULE_SETUP -#line 258 "util/configlexer.lex" +#line 257 "util/configlexer.lex" { YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } YY_BREAK case 58: YY_RULE_SETUP -#line 259 "util/configlexer.lex" +#line 258 "util/configlexer.lex" { YDVAR(1, VAR_USE_CAPS_FOR_ID) } YY_BREAK case 59: YY_RULE_SETUP -#line 260 "util/configlexer.lex" +#line 259 "util/configlexer.lex" { YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } YY_BREAK case 60: YY_RULE_SETUP -#line 261 "util/configlexer.lex" +#line 260 "util/configlexer.lex" { YDVAR(1, VAR_PRIVATE_ADDRESS) } YY_BREAK case 61: YY_RULE_SETUP -#line 262 "util/configlexer.lex" +#line 261 "util/configlexer.lex" { YDVAR(1, VAR_PRIVATE_DOMAIN) } YY_BREAK case 62: YY_RULE_SETUP -#line 263 "util/configlexer.lex" +#line 262 "util/configlexer.lex" { YDVAR(1, VAR_PREFETCH_KEY) } YY_BREAK case 63: YY_RULE_SETUP -#line 264 "util/configlexer.lex" +#line 263 "util/configlexer.lex" { YDVAR(1, VAR_PREFETCH) } YY_BREAK case 64: YY_RULE_SETUP -#line 265 "util/configlexer.lex" +#line 264 "util/configlexer.lex" { YDVAR(0, VAR_STUB_ZONE) } YY_BREAK case 65: YY_RULE_SETUP -#line 266 "util/configlexer.lex" +#line 265 "util/configlexer.lex" { YDVAR(1, VAR_NAME) } YY_BREAK case 66: YY_RULE_SETUP -#line 267 "util/configlexer.lex" +#line 266 "util/configlexer.lex" { YDVAR(1, VAR_STUB_ADDR) } YY_BREAK case 67: YY_RULE_SETUP -#line 268 "util/configlexer.lex" +#line 267 "util/configlexer.lex" { YDVAR(1, VAR_STUB_HOST) } YY_BREAK case 68: YY_RULE_SETUP -#line 269 "util/configlexer.lex" +#line 268 "util/configlexer.lex" { YDVAR(1, VAR_STUB_PRIME) } YY_BREAK case 69: YY_RULE_SETUP -#line 270 "util/configlexer.lex" +#line 269 "util/configlexer.lex" { YDVAR(1, VAR_STUB_FIRST) } YY_BREAK case 70: YY_RULE_SETUP -#line 271 "util/configlexer.lex" +#line 270 "util/configlexer.lex" { YDVAR(0, VAR_FORWARD_ZONE) } YY_BREAK case 71: YY_RULE_SETUP -#line 272 "util/configlexer.lex" +#line 271 "util/configlexer.lex" { YDVAR(1, VAR_FORWARD_ADDR) } YY_BREAK case 72: YY_RULE_SETUP -#line 273 "util/configlexer.lex" +#line 272 "util/configlexer.lex" { YDVAR(1, VAR_FORWARD_HOST) } YY_BREAK case 73: YY_RULE_SETUP -#line 274 "util/configlexer.lex" +#line 273 "util/configlexer.lex" { YDVAR(1, VAR_FORWARD_FIRST) } YY_BREAK case 74: YY_RULE_SETUP -#line 275 "util/configlexer.lex" +#line 274 "util/configlexer.lex" { YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } YY_BREAK case 75: YY_RULE_SETUP -#line 276 "util/configlexer.lex" +#line 275 "util/configlexer.lex" { YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } YY_BREAK case 76: YY_RULE_SETUP -#line 277 "util/configlexer.lex" +#line 276 "util/configlexer.lex" { YDVAR(2, VAR_ACCESS_CONTROL) } YY_BREAK case 77: YY_RULE_SETUP -#line 278 "util/configlexer.lex" +#line 277 "util/configlexer.lex" { YDVAR(1, VAR_HIDE_IDENTITY) } YY_BREAK case 78: YY_RULE_SETUP -#line 279 "util/configlexer.lex" +#line 278 "util/configlexer.lex" { YDVAR(1, VAR_HIDE_VERSION) } YY_BREAK case 79: YY_RULE_SETUP -#line 280 "util/configlexer.lex" +#line 279 "util/configlexer.lex" { YDVAR(1, VAR_IDENTITY) } YY_BREAK case 80: YY_RULE_SETUP -#line 281 "util/configlexer.lex" +#line 280 "util/configlexer.lex" { YDVAR(1, VAR_VERSION) } YY_BREAK case 81: YY_RULE_SETUP -#line 282 "util/configlexer.lex" +#line 281 "util/configlexer.lex" { YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 82: YY_RULE_SETUP -#line 283 "util/configlexer.lex" +#line 282 "util/configlexer.lex" { YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 83: YY_RULE_SETUP -#line 284 "util/configlexer.lex" +#line 283 "util/configlexer.lex" { YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 84: YY_RULE_SETUP -#line 285 "util/configlexer.lex" +#line 284 "util/configlexer.lex" { YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 85: YY_RULE_SETUP -#line 286 "util/configlexer.lex" +#line 285 "util/configlexer.lex" { YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 86: YY_RULE_SETUP -#line 287 "util/configlexer.lex" +#line 286 "util/configlexer.lex" { YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 87: YY_RULE_SETUP -#line 288 "util/configlexer.lex" +#line 287 "util/configlexer.lex" { YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 88: YY_RULE_SETUP -#line 289 "util/configlexer.lex" +#line 288 "util/configlexer.lex" { YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 89: YY_RULE_SETUP -#line 290 "util/configlexer.lex" +#line 289 "util/configlexer.lex" { YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 90: YY_RULE_SETUP -#line 291 "util/configlexer.lex" +#line 290 "util/configlexer.lex" { YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 91: YY_RULE_SETUP -#line 292 "util/configlexer.lex" +#line 291 "util/configlexer.lex" { YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 92: YY_RULE_SETUP -#line 293 "util/configlexer.lex" +#line 292 "util/configlexer.lex" { YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 93: YY_RULE_SETUP -#line 294 "util/configlexer.lex" +#line 293 "util/configlexer.lex" { YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 94: YY_RULE_SETUP -#line 295 "util/configlexer.lex" +#line 294 "util/configlexer.lex" { YDVAR(1, VAR_IGNORE_CD_FLAG) } YY_BREAK case 95: YY_RULE_SETUP -#line 296 "util/configlexer.lex" +#line 295 "util/configlexer.lex" { YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 96: YY_RULE_SETUP -#line 297 "util/configlexer.lex" +#line 296 "util/configlexer.lex" { YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 97: YY_RULE_SETUP -#line 298 "util/configlexer.lex" +#line 297 "util/configlexer.lex" { YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 98: YY_RULE_SETUP -#line 299 "util/configlexer.lex" +#line 298 "util/configlexer.lex" { YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 99: YY_RULE_SETUP -#line 300 "util/configlexer.lex" +#line 299 "util/configlexer.lex" { YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 100: YY_RULE_SETUP -#line 302 "util/configlexer.lex" +#line 301 "util/configlexer.lex" { YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 101: YY_RULE_SETUP -#line 303 "util/configlexer.lex" +#line 302 "util/configlexer.lex" { YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 102: YY_RULE_SETUP -#line 304 "util/configlexer.lex" +#line 303 "util/configlexer.lex" { YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 103: YY_RULE_SETUP -#line 305 "util/configlexer.lex" +#line 304 "util/configlexer.lex" { YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 104: YY_RULE_SETUP -#line 306 "util/configlexer.lex" +#line 305 "util/configlexer.lex" { YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 105: YY_RULE_SETUP -#line 307 "util/configlexer.lex" +#line 306 "util/configlexer.lex" { YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 106: YY_RULE_SETUP -#line 308 "util/configlexer.lex" +#line 307 "util/configlexer.lex" { YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 107: YY_RULE_SETUP -#line 309 "util/configlexer.lex" +#line 308 "util/configlexer.lex" { YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 108: YY_RULE_SETUP -#line 310 "util/configlexer.lex" +#line 309 "util/configlexer.lex" { YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 109: YY_RULE_SETUP +#line 310 "util/configlexer.lex" +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } + YY_BREAK +case 110: +YY_RULE_SETUP #line 311 "util/configlexer.lex" { YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK -case 110: +case 111: YY_RULE_SETUP #line 312 "util/configlexer.lex" { YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK -case 111: +case 112: YY_RULE_SETUP #line 313 "util/configlexer.lex" { YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK -case 112: +case 113: YY_RULE_SETUP #line 314 "util/configlexer.lex" { YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK -case 113: +case 114: YY_RULE_SETUP #line 315 "util/configlexer.lex" { YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK -case 114: +case 115: YY_RULE_SETUP #line 316 "util/configlexer.lex" { YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK -case 115: +case 116: YY_RULE_SETUP #line 317 "util/configlexer.lex" { YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK -case 116: +case 117: YY_RULE_SETUP #line 318 "util/configlexer.lex" { YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK -case 117: +case 118: YY_RULE_SETUP #line 319 "util/configlexer.lex" { YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK -case 118: +case 119: YY_RULE_SETUP #line 320 "util/configlexer.lex" { YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK -case 119: +case 120: YY_RULE_SETUP #line 321 "util/configlexer.lex" { YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK -case 120: +case 121: YY_RULE_SETUP #line 322 "util/configlexer.lex" { YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK -case 121: +case 122: YY_RULE_SETUP #line 323 "util/configlexer.lex" { YDVAR(0, VAR_PYTHON) } YY_BREAK -case 122: +case 123: YY_RULE_SETUP #line 324 "util/configlexer.lex" { YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK -case 123: +case 124: YY_RULE_SETUP #line 325 "util/configlexer.lex" { YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK -case 124: +case 125: YY_RULE_SETUP #line 326 "util/configlexer.lex" { YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK -case 125: +case 126: YY_RULE_SETUP #line 327 "util/configlexer.lex" { YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK -case 126: -/* rule 126 can match eol */ +case 127: YY_RULE_SETUP #line 328 "util/configlexer.lex" +{ YDVAR(1, VAR_DNS64_PREFIX) } + YY_BREAK +case 128: +YY_RULE_SETUP +#line 329 "util/configlexer.lex" +{ YDVAR(1, VAR_DNS64_SYNTHALL) } + YY_BREAK +case 129: +YY_RULE_SETUP +#line 330 "util/configlexer.lex" +{ YDVAR(0, VAR_DNSTAP) } + YY_BREAK +case 130: +YY_RULE_SETUP +#line 331 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_ENABLE) } + YY_BREAK +case 131: +YY_RULE_SETUP +#line 332 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } + YY_BREAK +case 132: +YY_RULE_SETUP +#line 333 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } + YY_BREAK +case 133: +YY_RULE_SETUP +#line 334 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } + YY_BREAK +case 134: +YY_RULE_SETUP +#line 335 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } + YY_BREAK +case 135: +YY_RULE_SETUP +#line 336 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_VERSION) } + YY_BREAK +case 136: +YY_RULE_SETUP +#line 337 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } + YY_BREAK +case 137: +YY_RULE_SETUP +#line 339 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } + YY_BREAK +case 138: +YY_RULE_SETUP +#line 341 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YY_BREAK +case 139: +YY_RULE_SETUP +#line 343 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YY_BREAK +case 140: +YY_RULE_SETUP +#line 345 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YY_BREAK +case 141: +YY_RULE_SETUP +#line 347 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YY_BREAK +case 142: +/* rule 142 can match eol */ +YY_RULE_SETUP +#line 349 "util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 127: +case 143: YY_RULE_SETUP -#line 331 "util/configlexer.lex" +#line 352 "util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 332 "util/configlexer.lex" +#line 353 "util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 128: +case 144: YY_RULE_SETUP -#line 337 "util/configlexer.lex" +#line 358 "util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 129: -/* rule 129 can match eol */ +case 145: +/* rule 145 can match eol */ YY_RULE_SETUP -#line 338 "util/configlexer.lex" +#line 359 "util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 130: +case 146: YY_RULE_SETUP -#line 340 "util/configlexer.lex" +#line 361 "util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -2940,34 +3246,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 131: +case 147: YY_RULE_SETUP -#line 352 "util/configlexer.lex" +#line 373 "util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 353 "util/configlexer.lex" +#line 374 "util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 132: +case 148: YY_RULE_SETUP -#line 358 "util/configlexer.lex" +#line 379 "util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 133: -/* rule 133 can match eol */ +case 149: +/* rule 149 can match eol */ YY_RULE_SETUP -#line 359 "util/configlexer.lex" +#line 380 "util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 134: +case 150: YY_RULE_SETUP -#line 361 "util/configlexer.lex" +#line 382 "util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -2980,38 +3286,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 135: +case 151: YY_RULE_SETUP -#line 373 "util/configlexer.lex" +#line 394 "util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 375 "util/configlexer.lex" +#line 396 "util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 136: +case 152: YY_RULE_SETUP -#line 379 "util/configlexer.lex" +#line 400 "util/configlexer.lex" { LEXOUT(("ISP ")); /* ignore */ } YY_BREAK -case 137: -/* rule 137 can match eol */ +case 153: +/* rule 153 can match eol */ YY_RULE_SETUP -#line 380 "util/configlexer.lex" +#line 401 "util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK -case 138: +case 154: YY_RULE_SETUP -#line 381 "util/configlexer.lex" +#line 402 "util/configlexer.lex" { LEXOUT(("IQS ")); BEGIN(include_quoted); } YY_BREAK -case 139: +case 155: YY_RULE_SETUP -#line 382 "util/configlexer.lex" +#line 403 "util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext); @@ -3019,27 +3325,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 387 "util/configlexer.lex" +#line 408 "util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 140: +case 156: YY_RULE_SETUP -#line 391 "util/configlexer.lex" +#line 412 "util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 141: -/* rule 141 can match eol */ +case 157: +/* rule 157 can match eol */ YY_RULE_SETUP -#line 392 "util/configlexer.lex" +#line 413 "util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 142: +case 158: YY_RULE_SETUP -#line 394 "util/configlexer.lex" +#line 415 "util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -3049,7 +3355,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 400 "util/configlexer.lex" +#line 421 "util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -3061,33 +3367,33 @@ case YY_STATE_EOF(val): } } YY_BREAK -case 143: +case 159: YY_RULE_SETUP -#line 411 "util/configlexer.lex" +#line 432 "util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 144: +case 160: YY_RULE_SETUP -#line 415 "util/configlexer.lex" +#line 436 "util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 145: +case 161: YY_RULE_SETUP -#line 419 "util/configlexer.lex" +#line 440 "util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 146: +case 162: YY_RULE_SETUP -#line 423 "util/configlexer.lex" +#line 444 "util/configlexer.lex" ECHO; YY_BREAK -#line 3089 "<stdout>" +#line 3395 "<stdout>" case YY_END_OF_BUFFER: { @@ -3377,7 +3683,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 >= 1383 ) + if ( yy_current_state >= 1611 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -3405,11 +3711,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 >= 1383 ) + if ( yy_current_state >= 1611 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 1382); + yy_is_jam = (yy_current_state == 1610); return yy_is_jam ? 0 : yy_current_state; } @@ -3812,7 +4118,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len YY_BUFFER_STATE b; char *buf; yy_size_t n; - int i; + yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; @@ -4042,7 +4348,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 423 "util/configlexer.lex" +#line 444 "util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index b36c8af88427..7ee7b9bd9a92 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -7,7 +7,6 @@ * See LICENSE for the license. * */ - #include <ctype.h> #include <string.h> #include <strings.h> @@ -308,6 +307,7 @@ log-queries{COLON} { YDVAR(1, VAR_LOG_QUERIES) } local-zone{COLON} { YDVAR(2, VAR_LOCAL_ZONE) } local-data{COLON} { YDVAR(1, VAR_LOCAL_DATA) } local-data-ptr{COLON} { YDVAR(1, VAR_LOCAL_DATA_PTR) } +unblock-lan-zones{COLON} { YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } statistics-interval{COLON} { YDVAR(1, VAR_STATISTICS_INTERVAL) } statistics-cumulative{COLON} { YDVAR(1, VAR_STATISTICS_CUMULATIVE) } extended-statistics{COLON} { YDVAR(1, VAR_EXTENDED_STATISTICS) } @@ -325,6 +325,27 @@ domain-insecure{COLON} { YDVAR(1, VAR_DOMAIN_INSECURE) } minimal-responses{COLON} { YDVAR(1, VAR_MINIMAL_RESPONSES) } rrset-roundrobin{COLON} { YDVAR(1, VAR_RRSET_ROUNDROBIN) } max-udp-size{COLON} { YDVAR(1, VAR_MAX_UDP_SIZE) } +dns64-prefix{COLON} { YDVAR(1, VAR_DNS64_PREFIX) } +dns64-synthall{COLON} { YDVAR(1, VAR_DNS64_SYNTHALL) } +dnstap{COLON} { YDVAR(0, VAR_DNSTAP) } +dnstap-enable{COLON} { YDVAR(1, VAR_DNSTAP_ENABLE) } +dnstap-socket-path{COLON} { YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +dnstap-send-identity{COLON} { YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +dnstap-send-version{COLON} { YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +dnstap-identity{COLON} { YDVAR(1, VAR_DNSTAP_IDENTITY) } +dnstap-version{COLON} { YDVAR(1, VAR_DNSTAP_VERSION) } +dnstap-log-resolver-query-messages{COLON} { + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +dnstap-log-resolver-response-messages{COLON} { + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } +dnstap-log-client-query-messages{COLON} { + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } +dnstap-log-client-response-messages{COLON} { + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } +dnstap-log-forwarder-query-messages{COLON} { + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } +dnstap-log-forwarder-response-messages{COLON} { + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } <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 3ea82b20a54c..6aa5646fad57 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 2.6.1. */ +/* A Bison parser, made by GNU Bison 2.7. */ /* Bison implementation for Yacc-like parsers in C @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.6.1" +#define YYBISON_VERSION "2.7" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -62,7 +62,7 @@ /* Copy the first part of user declarations. */ -/* Line 336 of yacc.c */ +/* Line 371 of yacc.c */ #line 38 "util/configparser.y" #include "config.h" @@ -90,7 +90,7 @@ extern struct config_parser_state* cfg_parser; #endif -/* Line 336 of yacc.c */ +/* Line 371 of yacc.c */ #line 95 "util/configparser.c" # ifndef YY_NULL @@ -111,8 +111,8 @@ extern struct config_parser_state* cfg_parser; /* In a future release of Bison, this section will be replaced by #include "configparser.h". */ -#ifndef YY_UTIL_CONFIGPARSER_H -# define YY_UTIL_CONFIGPARSER_H +#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED +# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 @@ -256,7 +256,23 @@ extern int yydebug; VAR_MINIMAL_RESPONSES = 384, VAR_RRSET_ROUNDROBIN = 385, VAR_MAX_UDP_SIZE = 386, - VAR_DELAY_CLOSE = 387 + VAR_DELAY_CLOSE = 387, + VAR_UNBLOCK_LAN_ZONES = 388, + VAR_DNS64_PREFIX = 389, + VAR_DNS64_SYNTHALL = 390, + VAR_DNSTAP = 391, + VAR_DNSTAP_ENABLE = 392, + VAR_DNSTAP_SOCKET_PATH = 393, + VAR_DNSTAP_SEND_IDENTITY = 394, + VAR_DNSTAP_SEND_VERSION = 395, + VAR_DNSTAP_IDENTITY = 396, + VAR_DNSTAP_VERSION = 397, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 398, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 399, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 400, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 401, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 402, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 403 }; #endif /* Tokens. */ @@ -390,20 +406,36 @@ extern int yydebug; #define VAR_RRSET_ROUNDROBIN 385 #define VAR_MAX_UDP_SIZE 386 #define VAR_DELAY_CLOSE 387 +#define VAR_UNBLOCK_LAN_ZONES 388 +#define VAR_DNS64_PREFIX 389 +#define VAR_DNS64_SYNTHALL 390 +#define VAR_DNSTAP 391 +#define VAR_DNSTAP_ENABLE 392 +#define VAR_DNSTAP_SOCKET_PATH 393 +#define VAR_DNSTAP_SEND_IDENTITY 394 +#define VAR_DNSTAP_SEND_VERSION 395 +#define VAR_DNSTAP_IDENTITY 396 +#define VAR_DNSTAP_VERSION 397 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 398 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 399 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 400 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 401 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 402 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 403 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE { -/* Line 350 of yacc.c */ +/* Line 387 of yacc.c */ #line 64 "util/configparser.y" char* str; -/* Line 350 of yacc.c */ -#line 407 "util/configparser.c" +/* Line 387 of yacc.c */ +#line 439 "util/configparser.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -426,12 +458,12 @@ int yyparse (); #endif #endif /* ! YYPARSE_PARAM */ -#endif /* !YY_UTIL_CONFIGPARSER_H */ +#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ /* Copy the second part of user declarations. */ -/* Line 353 of yacc.c */ -#line 435 "util/configparser.c" +/* Line 390 of yacc.c */ +#line 467 "util/configparser.c" #ifdef short # undef short @@ -484,24 +516,24 @@ typedef short int yytype_int16; # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ -# define YY_(msgid) dgettext ("bison-runtime", msgid) +# define YY_(Msgid) dgettext ("bison-runtime", Msgid) # endif # endif # ifndef YY_ -# define YY_(msgid) msgid +# define YY_(Msgid) Msgid # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define YYUSE(e) ((void) (e)) +# define YYUSE(E) ((void) (E)) #else -# define YYUSE(e) /* empty */ +# define YYUSE(E) /* empty */ #endif /* Identity function, used to suppress warnings about constant conditions. */ #ifndef lint -# define YYID(n) (n) +# define YYID(N) (N) #else #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) @@ -651,20 +683,20 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 244 +#define YYLAST 276 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 133 +#define YYNTOKENS 149 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 136 +#define YYNNTS 154 /* YYNRULES -- Number of rules. */ -#define YYNRULES 259 +#define YYNRULES 293 /* YYNRULES -- Number of states. */ -#define YYNSTATES 380 +#define YYNSTATES 429 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 387 +#define YYMAXUTOK 403 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -710,7 +742,9 @@ static const yytype_uint8 yytranslate[] = 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, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132 + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148 }; #if YYDEBUG @@ -719,132 +753,148 @@ static const yytype_uint8 yytranslate[] = static const yytype_uint16 yyprhs[] = { 0, 0, 3, 4, 7, 10, 13, 16, 19, 22, - 24, 27, 28, 30, 32, 34, 36, 38, 40, 42, - 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, - 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, - 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, - 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, - 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, - 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, - 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, - 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, - 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, - 224, 226, 228, 230, 232, 235, 236, 238, 240, 242, - 244, 246, 248, 251, 252, 254, 256, 258, 260, 263, - 266, 269, 272, 275, 278, 281, 284, 287, 290, 293, - 296, 299, 302, 305, 308, 311, 314, 317, 320, 323, - 326, 329, 332, 335, 338, 341, 344, 347, 350, 353, - 356, 359, 362, 365, 368, 371, 374, 377, 380, 383, - 386, 389, 392, 395, 398, 401, 404, 407, 410, 413, - 416, 419, 422, 425, 428, 431, 434, 437, 440, 443, - 446, 449, 452, 455, 458, 461, 464, 467, 470, 473, - 476, 479, 482, 485, 488, 492, 495, 498, 501, 504, - 507, 510, 513, 516, 519, 522, 525, 528, 531, 534, - 537, 540, 543, 546, 550, 553, 556, 559, 562, 565, - 568, 571, 574, 577, 580, 583, 586, 589, 592, 594, - 597, 598, 600, 602, 604, 606, 608, 610, 612, 615, - 618, 621, 624, 627, 630, 633, 635, 638, 639, 641 + 25, 27, 30, 31, 33, 35, 37, 39, 41, 43, + 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, + 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, + 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, + 105, 107, 109, 111, 113, 115, 117, 119, 121, 123, + 125, 127, 129, 131, 133, 135, 137, 139, 141, 143, + 145, 147, 149, 151, 153, 155, 157, 159, 161, 163, + 165, 167, 169, 171, 173, 175, 177, 179, 181, 183, + 185, 187, 189, 191, 193, 195, 197, 199, 201, 203, + 205, 207, 209, 211, 213, 215, 217, 219, 221, 223, + 225, 227, 229, 231, 233, 235, 237, 239, 241, 244, + 245, 247, 249, 251, 253, 255, 257, 260, 261, 263, + 265, 267, 269, 272, 275, 278, 281, 284, 287, 290, + 293, 296, 299, 302, 305, 308, 311, 314, 317, 320, + 323, 326, 329, 332, 335, 338, 341, 344, 347, 350, + 353, 356, 359, 362, 365, 368, 371, 374, 377, 380, + 383, 386, 389, 392, 395, 398, 401, 404, 407, 410, + 413, 416, 419, 422, 425, 428, 431, 434, 437, 440, + 443, 446, 449, 452, 455, 458, 461, 464, 467, 470, + 473, 476, 479, 482, 485, 488, 491, 494, 497, 500, + 504, 507, 510, 513, 516, 519, 522, 525, 528, 531, + 534, 537, 540, 543, 546, 549, 552, 555, 558, 562, + 565, 568, 571, 574, 577, 580, 583, 586, 589, 592, + 595, 598, 601, 604, 607, 610, 612, 615, 616, 618, + 620, 622, 624, 626, 628, 630, 633, 636, 639, 642, + 645, 648, 651, 653, 656, 657, 659, 661, 663, 665, + 667, 669, 671, 673, 675, 677, 679, 681, 684, 687, + 690, 693, 696, 699, 702, 705, 708, 711, 714, 717, + 719, 722, 723, 725 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 134, 0, -1, -1, 134, 135, -1, 136, 137, -1, - 139, 140, -1, 142, 143, -1, 265, 266, -1, 255, - 256, -1, 11, -1, 137, 138, -1, -1, 145, -1, - 146, -1, 150, -1, 153, -1, 159, -1, 160, -1, - 161, -1, 162, -1, 151, -1, 172, -1, 173, -1, - 174, -1, 175, -1, 176, -1, 194, -1, 195, -1, - 196, -1, 199, -1, 200, -1, 156, -1, 201, -1, - 202, -1, 205, -1, 203, -1, 204, -1, 206, -1, - 207, -1, 208, -1, 219, -1, 185, -1, 186, -1, - 187, -1, 188, -1, 209, -1, 222, -1, 181, -1, - 183, -1, 223, -1, 228, -1, 229, -1, 230, -1, - 157, -1, 193, -1, 237, -1, 238, -1, 182, -1, - 233, -1, 169, -1, 152, -1, 177, -1, 220, -1, - 226, -1, 210, -1, 221, -1, 240, -1, 241, -1, - 158, -1, 147, -1, 168, -1, 213, -1, 148, -1, - 154, -1, 155, -1, 178, -1, 179, -1, 239, -1, - 212, -1, 214, -1, 215, -1, 149, -1, 242, -1, - 197, -1, 218, -1, 170, -1, 184, -1, 224, -1, - 225, -1, 227, -1, 232, -1, 180, -1, 234, -1, - 235, -1, 236, -1, 189, -1, 192, -1, 216, -1, - 217, -1, 190, -1, 211, -1, 231, -1, 171, -1, - 163, -1, 164, -1, 165, -1, 166, -1, 167, -1, - 243, -1, 244, -1, 245, -1, 191, -1, 198, -1, - 38, -1, 140, 141, -1, -1, 246, -1, 247, -1, - 248, -1, 250, -1, 249, -1, 44, -1, 143, 144, - -1, -1, 251, -1, 252, -1, 253, -1, 254, -1, - 13, 10, -1, 12, 10, -1, 76, 10, -1, 79, - 10, -1, 96, 10, -1, 14, 10, -1, 16, 10, - -1, 67, 10, -1, 15, 10, -1, 80, 10, -1, - 81, 10, -1, 31, 10, -1, 60, 10, -1, 75, - 10, -1, 17, 10, -1, 18, 10, -1, 19, 10, - -1, 20, 10, -1, 122, 10, -1, 123, 10, -1, - 124, 10, -1, 125, 10, -1, 126, 10, -1, 77, - 10, -1, 66, 10, -1, 101, 10, -1, 121, 10, - -1, 21, 10, -1, 22, 10, -1, 23, 10, -1, - 24, 10, -1, 25, 10, -1, 68, 10, -1, 82, - 10, -1, 83, 10, -1, 109, 10, -1, 54, 10, - -1, 64, 10, -1, 55, 10, -1, 102, 10, -1, - 48, 10, -1, 49, 10, -1, 50, 10, -1, 51, - 10, -1, 113, 10, -1, 117, 10, -1, 118, 10, - -1, 114, 10, -1, 61, 10, -1, 26, 10, -1, - 27, 10, -1, 28, 10, -1, 98, 10, -1, 132, - 10, -1, 29, 10, -1, 30, 10, -1, 32, 10, - -1, 33, 10, -1, 35, 10, -1, 36, 10, -1, - 34, 10, -1, 41, 10, -1, 42, 10, -1, 43, - 10, -1, 52, 10, -1, 71, 10, -1, 119, 10, - -1, 85, 10, -1, 78, 10, -1, 86, 10, -1, - 87, 10, -1, 115, 10, -1, 116, 10, -1, 100, - 10, -1, 47, 10, -1, 69, 10, -1, 72, 10, - 10, -1, 53, 10, -1, 56, 10, -1, 105, 10, - -1, 106, 10, -1, 70, 10, -1, 107, 10, -1, - 57, 10, -1, 58, 10, -1, 59, 10, -1, 120, - 10, -1, 108, 10, -1, 65, 10, -1, 111, 10, - -1, 112, 10, -1, 110, 10, -1, 62, 10, -1, - 63, 10, -1, 84, 10, -1, 73, 10, 10, -1, - 74, 10, -1, 97, 10, -1, 129, 10, -1, 130, - 10, -1, 131, 10, -1, 37, 10, -1, 39, 10, - -1, 40, 10, -1, 128, 10, -1, 99, 10, -1, - 37, 10, -1, 45, 10, -1, 46, 10, -1, 127, - 10, -1, 88, -1, 256, 257, -1, -1, 258, -1, - 260, -1, 259, -1, 261, -1, 262, -1, 263, -1, - 264, -1, 89, 10, -1, 91, 10, -1, 90, 10, - -1, 92, 10, -1, 93, 10, -1, 94, 10, -1, - 95, 10, -1, 103, -1, 266, 267, -1, -1, 268, - -1, 104, 10, -1 + 150, 0, -1, -1, 150, 151, -1, 152, 153, -1, + 155, 156, -1, 158, 159, -1, 299, 300, -1, 274, + 275, -1, 284, 285, -1, 11, -1, 153, 154, -1, + -1, 161, -1, 162, -1, 166, -1, 169, -1, 175, + -1, 176, -1, 177, -1, 178, -1, 167, -1, 188, + -1, 189, -1, 190, -1, 191, -1, 192, -1, 210, + -1, 211, -1, 212, -1, 216, -1, 217, -1, 172, + -1, 218, -1, 219, -1, 222, -1, 220, -1, 221, + -1, 223, -1, 224, -1, 225, -1, 236, -1, 201, + -1, 202, -1, 203, -1, 204, -1, 226, -1, 239, + -1, 197, -1, 199, -1, 240, -1, 245, -1, 246, + -1, 247, -1, 173, -1, 209, -1, 254, -1, 255, + -1, 198, -1, 250, -1, 185, -1, 168, -1, 193, + -1, 237, -1, 243, -1, 227, -1, 238, -1, 257, + -1, 258, -1, 174, -1, 163, -1, 184, -1, 230, + -1, 164, -1, 170, -1, 171, -1, 194, -1, 195, + -1, 256, -1, 229, -1, 231, -1, 232, -1, 165, + -1, 259, -1, 213, -1, 235, -1, 186, -1, 200, + -1, 241, -1, 242, -1, 244, -1, 249, -1, 196, + -1, 251, -1, 252, -1, 253, -1, 205, -1, 208, + -1, 233, -1, 234, -1, 206, -1, 228, -1, 248, + -1, 187, -1, 179, -1, 180, -1, 181, -1, 182, + -1, 183, -1, 260, -1, 261, -1, 262, -1, 207, + -1, 214, -1, 215, -1, 263, -1, 264, -1, 38, + -1, 156, 157, -1, -1, 265, -1, 266, -1, 267, + -1, 269, -1, 268, -1, 44, -1, 159, 160, -1, + -1, 270, -1, 271, -1, 272, -1, 273, -1, 13, + 10, -1, 12, 10, -1, 76, 10, -1, 79, 10, + -1, 96, 10, -1, 14, 10, -1, 16, 10, -1, + 67, 10, -1, 15, 10, -1, 80, 10, -1, 81, + 10, -1, 31, 10, -1, 60, 10, -1, 75, 10, + -1, 17, 10, -1, 18, 10, -1, 19, 10, -1, + 20, 10, -1, 122, 10, -1, 123, 10, -1, 124, + 10, -1, 125, 10, -1, 126, 10, -1, 77, 10, + -1, 66, 10, -1, 101, 10, -1, 121, 10, -1, + 21, 10, -1, 22, 10, -1, 23, 10, -1, 24, + 10, -1, 25, 10, -1, 68, 10, -1, 82, 10, + -1, 83, 10, -1, 109, 10, -1, 54, 10, -1, + 64, 10, -1, 55, 10, -1, 102, 10, -1, 48, + 10, -1, 49, 10, -1, 50, 10, -1, 51, 10, + -1, 113, 10, -1, 117, 10, -1, 118, 10, -1, + 114, 10, -1, 61, 10, -1, 26, 10, -1, 27, + 10, -1, 28, 10, -1, 98, 10, -1, 132, 10, + -1, 133, 10, -1, 29, 10, -1, 30, 10, -1, + 32, 10, -1, 33, 10, -1, 35, 10, -1, 36, + 10, -1, 34, 10, -1, 41, 10, -1, 42, 10, + -1, 43, 10, -1, 52, 10, -1, 71, 10, -1, + 119, 10, -1, 85, 10, -1, 78, 10, -1, 86, + 10, -1, 87, 10, -1, 115, 10, -1, 116, 10, + -1, 100, 10, -1, 47, 10, -1, 69, 10, -1, + 72, 10, 10, -1, 53, 10, -1, 56, 10, -1, + 105, 10, -1, 106, 10, -1, 70, 10, -1, 107, + 10, -1, 57, 10, -1, 58, 10, -1, 59, 10, + -1, 120, 10, -1, 108, 10, -1, 65, 10, -1, + 111, 10, -1, 112, 10, -1, 110, 10, -1, 62, + 10, -1, 63, 10, -1, 84, 10, -1, 73, 10, + 10, -1, 74, 10, -1, 97, 10, -1, 129, 10, + -1, 130, 10, -1, 131, 10, -1, 134, 10, -1, + 135, 10, -1, 37, 10, -1, 39, 10, -1, 40, + 10, -1, 128, 10, -1, 99, 10, -1, 37, 10, + -1, 45, 10, -1, 46, 10, -1, 127, 10, -1, + 88, -1, 275, 276, -1, -1, 277, -1, 279, -1, + 278, -1, 280, -1, 281, -1, 282, -1, 283, -1, + 89, 10, -1, 91, 10, -1, 90, 10, -1, 92, + 10, -1, 93, 10, -1, 94, 10, -1, 95, 10, + -1, 136, -1, 285, 286, -1, -1, 287, -1, 288, + -1, 289, -1, 290, -1, 291, -1, 292, -1, 293, + -1, 294, -1, 295, -1, 296, -1, 297, -1, 298, + -1, 137, 10, -1, 138, 10, -1, 139, 10, -1, + 140, 10, -1, 141, 10, -1, 142, 10, -1, 143, + 10, -1, 144, 10, -1, 145, 10, -1, 146, 10, + -1, 147, 10, -1, 148, 10, -1, 103, -1, 300, + 301, -1, -1, 302, -1, 104, 10, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 111, 111, 111, 112, 112, 113, 113, 114, 118, - 123, 124, 125, 125, 125, 126, 126, 127, 127, 127, - 128, 128, 128, 129, 129, 129, 130, 130, 131, 131, - 132, 132, 133, 133, 134, 134, 135, 135, 136, 136, - 137, 137, 138, 138, 138, 139, 139, 139, 140, 140, - 140, 141, 141, 142, 142, 143, 143, 144, 144, 145, - 145, 145, 146, 146, 147, 147, 148, 148, 148, 149, - 149, 150, 150, 151, 151, 152, 152, 152, 153, 153, - 154, 154, 155, 155, 156, 156, 157, 157, 158, 158, - 158, 159, 159, 160, 160, 160, 161, 161, 161, 162, - 162, 162, 163, 163, 163, 164, 164, 164, 165, 165, - 165, 166, 166, 168, 180, 181, 182, 182, 182, 182, - 182, 184, 196, 197, 198, 198, 198, 198, 200, 209, - 218, 229, 238, 247, 256, 269, 284, 293, 302, 311, - 320, 329, 338, 347, 356, 365, 374, 383, 392, 399, - 406, 415, 424, 438, 447, 456, 463, 470, 477, 485, - 492, 499, 506, 513, 521, 529, 537, 544, 551, 560, - 569, 576, 583, 591, 599, 609, 622, 633, 641, 654, - 663, 672, 681, 689, 702, 711, 719, 728, 736, 749, - 756, 766, 776, 786, 796, 806, 816, 826, 833, 840, - 849, 858, 867, 874, 884, 901, 908, 926, 939, 952, - 961, 970, 979, 989, 999, 1008, 1017, 1024, 1033, 1042, - 1051, 1059, 1072, 1080, 1102, 1109, 1124, 1134, 1144, 1151, - 1161, 1168, 1175, 1184, 1194, 1204, 1211, 1218, 1227, 1232, - 1233, 1234, 1234, 1234, 1235, 1235, 1235, 1236, 1238, 1248, - 1257, 1264, 1271, 1278, 1285, 1292, 1297, 1298, 1299, 1301 + 0, 121, 121, 121, 122, 122, 123, 123, 124, 124, + 128, 133, 134, 135, 135, 135, 136, 136, 137, 137, + 137, 138, 138, 138, 139, 139, 139, 140, 140, 141, + 141, 142, 142, 143, 143, 144, 144, 145, 145, 146, + 146, 147, 147, 148, 148, 148, 149, 149, 149, 150, + 150, 150, 151, 151, 152, 152, 153, 153, 154, 154, + 155, 155, 155, 156, 156, 157, 157, 158, 158, 158, + 159, 159, 160, 160, 161, 161, 162, 162, 162, 163, + 163, 164, 164, 165, 165, 166, 166, 167, 167, 168, + 168, 168, 169, 169, 170, 170, 170, 171, 171, 171, + 172, 172, 172, 173, 173, 173, 174, 174, 174, 175, + 175, 175, 176, 176, 176, 177, 177, 179, 191, 192, + 193, 193, 193, 193, 193, 195, 207, 208, 209, 209, + 209, 209, 211, 220, 229, 240, 249, 258, 267, 280, + 295, 304, 313, 322, 331, 340, 349, 358, 367, 376, + 385, 394, 403, 410, 417, 426, 435, 449, 458, 467, + 474, 481, 488, 496, 503, 510, 517, 524, 532, 540, + 548, 555, 562, 571, 580, 587, 594, 602, 610, 620, + 633, 644, 652, 665, 674, 683, 692, 702, 710, 723, + 732, 740, 749, 757, 770, 777, 787, 797, 807, 817, + 827, 837, 847, 854, 861, 870, 879, 888, 895, 905, + 922, 929, 947, 960, 973, 982, 991, 1000, 1010, 1020, + 1029, 1038, 1045, 1054, 1063, 1072, 1080, 1093, 1101, 1123, + 1130, 1145, 1155, 1165, 1172, 1179, 1188, 1198, 1205, 1212, + 1221, 1231, 1241, 1248, 1255, 1264, 1269, 1270, 1271, 1271, + 1271, 1272, 1272, 1272, 1273, 1275, 1285, 1294, 1301, 1308, + 1315, 1322, 1329, 1334, 1335, 1336, 1336, 1337, 1337, 1338, + 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1346, 1354, 1361, + 1369, 1377, 1384, 1391, 1400, 1409, 1418, 1427, 1436, 1445, + 1450, 1451, 1452, 1454 }; #endif @@ -895,17 +945,26 @@ static const char *const yytname[] = "VAR_SSL_UPSTREAM", "VAR_SSL_SERVICE_KEY", "VAR_SSL_SERVICE_PEM", "VAR_SSL_PORT", "VAR_FORWARD_FIRST", "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES", "VAR_RRSET_ROUNDROBIN", "VAR_MAX_UDP_SIZE", - "VAR_DELAY_CLOSE", "$accept", "toplevelvars", "toplevelvar", - "serverstart", "contents_server", "content_server", "stubstart", - "contents_stub", "content_stub", "forwardstart", "contents_forward", - "content_forward", "server_num_threads", "server_verbosity", - "server_statistics_interval", "server_statistics_cumulative", - "server_extended_statistics", "server_port", "server_interface", - "server_outgoing_interface", "server_outgoing_range", - "server_outgoing_port_permit", "server_outgoing_port_avoid", - "server_outgoing_num_tcp", "server_incoming_num_tcp", - "server_interface_automatic", "server_do_ip4", "server_do_ip6", - "server_do_udp", "server_do_tcp", "server_tcp_upstream", + "VAR_DELAY_CLOSE", "VAR_UNBLOCK_LAN_ZONES", "VAR_DNS64_PREFIX", + "VAR_DNS64_SYNTHALL", "VAR_DNSTAP", "VAR_DNSTAP_ENABLE", + "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_SEND_IDENTITY", + "VAR_DNSTAP_SEND_VERSION", "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION", + "VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES", + "VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES", + "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES", + "VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES", + "VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES", + "VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES", "$accept", "toplevelvars", + "toplevelvar", "serverstart", "contents_server", "content_server", + "stubstart", "contents_stub", "content_stub", "forwardstart", + "contents_forward", "content_forward", "server_num_threads", + "server_verbosity", "server_statistics_interval", + "server_statistics_cumulative", "server_extended_statistics", + "server_port", "server_interface", "server_outgoing_interface", + "server_outgoing_range", "server_outgoing_port_permit", + "server_outgoing_port_avoid", "server_outgoing_num_tcp", + "server_incoming_num_tcp", "server_interface_automatic", "server_do_ip4", + "server_do_ip6", "server_do_udp", "server_do_tcp", "server_tcp_upstream", "server_ssl_upstream", "server_ssl_service_key", "server_ssl_service_pem", "server_ssl_port", "server_do_daemonize", "server_use_syslog", "server_log_time_ascii", "server_log_queries", @@ -919,33 +978,42 @@ static const char *const yytname[] = "server_edns_buffer_size", "server_msg_buffer_size", "server_msg_cache_size", "server_msg_cache_slabs", "server_num_queries_per_thread", "server_jostle_timeout", - "server_delay_close", "server_rrset_cache_size", - "server_rrset_cache_slabs", "server_infra_host_ttl", - "server_infra_lame_ttl", "server_infra_cache_numhosts", - "server_infra_cache_lame_size", "server_infra_cache_slabs", - "server_target_fetch_policy", "server_harden_short_bufsize", - "server_harden_large_queries", "server_harden_glue", - "server_harden_dnssec_stripped", "server_harden_below_nxdomain", - "server_harden_referral_path", "server_use_caps_for_id", - "server_private_address", "server_private_domain", "server_prefetch", - "server_prefetch_key", "server_unwanted_reply_threshold", - "server_do_not_query_address", "server_do_not_query_localhost", - "server_access_control", "server_module_conf", - "server_val_override_date", "server_val_sig_skew_min", - "server_val_sig_skew_max", "server_cache_max_ttl", - "server_cache_min_ttl", "server_bogus_ttl", + "server_delay_close", "server_unblock_lan_zones", + "server_rrset_cache_size", "server_rrset_cache_slabs", + "server_infra_host_ttl", "server_infra_lame_ttl", + "server_infra_cache_numhosts", "server_infra_cache_lame_size", + "server_infra_cache_slabs", "server_target_fetch_policy", + "server_harden_short_bufsize", "server_harden_large_queries", + "server_harden_glue", "server_harden_dnssec_stripped", + "server_harden_below_nxdomain", "server_harden_referral_path", + "server_use_caps_for_id", "server_private_address", + "server_private_domain", "server_prefetch", "server_prefetch_key", + "server_unwanted_reply_threshold", "server_do_not_query_address", + "server_do_not_query_localhost", "server_access_control", + "server_module_conf", "server_val_override_date", + "server_val_sig_skew_min", "server_val_sig_skew_max", + "server_cache_max_ttl", "server_cache_min_ttl", "server_bogus_ttl", "server_val_clean_additional", "server_val_permissive_mode", "server_ignore_cd_flag", "server_val_log_level", "server_val_nsec3_keysize_iterations", "server_add_holddown", "server_del_holddown", "server_keep_missing", "server_key_cache_size", "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone", "server_local_data", "server_local_data_ptr", "server_minimal_responses", - "server_rrset_roundrobin", "server_max_udp_size", "stub_name", - "stub_host", "stub_addr", "stub_first", "stub_prime", "forward_name", - "forward_host", "forward_addr", "forward_first", "rcstart", - "contents_rc", "content_rc", "rc_control_enable", "rc_control_port", - "rc_control_interface", "rc_server_key_file", "rc_server_cert_file", - "rc_control_key_file", "rc_control_cert_file", "pythonstart", + "server_rrset_roundrobin", "server_max_udp_size", "server_dns64_prefix", + "server_dns64_synthall", "stub_name", "stub_host", "stub_addr", + "stub_first", "stub_prime", "forward_name", "forward_host", + "forward_addr", "forward_first", "rcstart", "contents_rc", "content_rc", + "rc_control_enable", "rc_control_port", "rc_control_interface", + "rc_server_key_file", "rc_server_cert_file", "rc_control_key_file", + "rc_control_cert_file", "dtstart", "contents_dt", "content_dt", + "dt_dnstap_enable", "dt_dnstap_socket_path", "dt_dnstap_send_identity", + "dt_dnstap_send_version", "dt_dnstap_identity", "dt_dnstap_version", + "dt_dnstap_log_resolver_query_messages", + "dt_dnstap_log_resolver_response_messages", + "dt_dnstap_log_client_query_messages", + "dt_dnstap_log_client_response_messages", + "dt_dnstap_log_forwarder_query_messages", + "dt_dnstap_log_forwarder_response_messages", "pythonstart", "contents_py", "content_py", "py_script", YY_NULL }; #endif @@ -968,46 +1036,51 @@ static const yytype_uint16 yytoknum[] = 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 + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 133, 134, 134, 135, 135, 135, 135, 135, 136, - 137, 137, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 139, 140, 140, 141, 141, 141, 141, - 141, 142, 143, 143, 144, 144, 144, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 256, 257, 257, 257, 257, 257, 257, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 266, 267, 268 + 0, 149, 150, 150, 151, 151, 151, 151, 151, 151, + 152, 153, 153, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 155, 156, 156, + 157, 157, 157, 157, 157, 158, 159, 159, 160, 160, + 160, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 275, 276, 276, + 276, 276, 276, 276, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 285, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 300, 301, 302 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { - 0, 2, 0, 2, 2, 2, 2, 2, 2, 1, - 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1017,21 +1090,25 @@ 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, 2, 0, 1, 1, 1, 1, - 1, 1, 2, 0, 1, 1, 1, 1, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, + 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 3, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 0, 1, 2 + 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, + 2, 0, 1, 2 }; /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. @@ -1039,9 +1116,9 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 1, 9, 113, 121, 238, 255, 3, 11, - 115, 123, 240, 257, 4, 5, 6, 8, 7, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 1, 10, 117, 125, 245, 289, 262, 3, + 12, 119, 127, 247, 264, 291, 4, 5, 6, 8, + 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1051,115 +1128,129 @@ 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, - 10, 12, 13, 69, 72, 81, 14, 20, 60, 15, - 73, 74, 31, 53, 68, 16, 17, 18, 19, 103, - 104, 105, 106, 107, 70, 59, 85, 102, 21, 22, - 23, 24, 25, 61, 75, 76, 91, 47, 57, 48, - 86, 41, 42, 43, 44, 95, 99, 111, 96, 54, - 26, 27, 28, 83, 112, 29, 30, 32, 33, 35, - 36, 34, 37, 38, 39, 45, 64, 100, 78, 71, - 79, 80, 97, 98, 84, 40, 62, 65, 46, 49, - 87, 88, 63, 89, 50, 51, 52, 101, 90, 58, - 92, 93, 94, 55, 56, 77, 66, 67, 82, 108, - 109, 110, 0, 0, 0, 0, 0, 114, 116, 117, - 118, 120, 119, 0, 0, 0, 0, 122, 124, 125, - 126, 127, 0, 0, 0, 0, 0, 0, 0, 239, - 241, 243, 242, 244, 245, 246, 247, 0, 256, 258, - 129, 128, 133, 136, 134, 142, 143, 144, 145, 155, - 156, 157, 158, 159, 177, 178, 179, 182, 183, 139, - 184, 185, 188, 186, 187, 189, 190, 191, 202, 168, - 169, 170, 171, 192, 205, 164, 166, 206, 211, 212, - 213, 140, 176, 220, 221, 165, 216, 152, 135, 160, - 203, 209, 193, 0, 0, 224, 141, 130, 151, 196, - 131, 137, 138, 161, 162, 222, 195, 197, 198, 132, - 225, 180, 201, 153, 167, 207, 208, 210, 215, 163, - 219, 217, 218, 172, 175, 199, 200, 173, 174, 194, - 214, 154, 146, 147, 148, 149, 150, 226, 227, 228, - 181, 229, 230, 231, 233, 232, 234, 235, 236, 237, - 248, 250, 249, 251, 252, 253, 254, 259, 204, 223 + 0, 0, 0, 0, 0, 0, 11, 13, 14, 70, + 73, 82, 15, 21, 61, 16, 74, 75, 32, 54, + 69, 17, 18, 19, 20, 104, 105, 106, 107, 108, + 71, 60, 86, 103, 22, 23, 24, 25, 26, 62, + 76, 77, 92, 48, 58, 49, 87, 42, 43, 44, + 45, 96, 100, 112, 97, 55, 27, 28, 29, 84, + 113, 114, 30, 31, 33, 34, 36, 37, 35, 38, + 39, 40, 46, 65, 101, 79, 72, 80, 81, 98, + 99, 85, 41, 63, 66, 47, 50, 88, 89, 64, + 90, 51, 52, 53, 102, 91, 59, 93, 94, 95, + 56, 57, 78, 67, 68, 83, 109, 110, 111, 115, + 116, 0, 0, 0, 0, 0, 118, 120, 121, 122, + 124, 123, 0, 0, 0, 0, 126, 128, 129, 130, + 131, 0, 0, 0, 0, 0, 0, 0, 246, 248, + 250, 249, 251, 252, 253, 254, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 263, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 0, 290, 292, 133, 132, 137, 140, 138, 146, + 147, 148, 149, 159, 160, 161, 162, 163, 181, 182, + 183, 187, 188, 143, 189, 190, 193, 191, 192, 194, + 195, 196, 207, 172, 173, 174, 175, 197, 210, 168, + 170, 211, 216, 217, 218, 144, 180, 225, 226, 169, + 221, 156, 139, 164, 208, 214, 198, 0, 0, 229, + 145, 134, 155, 201, 135, 141, 142, 165, 166, 227, + 200, 202, 203, 136, 230, 184, 206, 157, 171, 212, + 213, 215, 220, 167, 224, 222, 223, 176, 179, 204, + 205, 177, 178, 199, 219, 158, 150, 151, 152, 153, + 154, 231, 232, 233, 185, 186, 234, 235, 236, 237, + 238, 240, 239, 241, 242, 243, 244, 255, 257, 256, + 258, 259, 260, 261, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 293, 209, 228 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 8, 9, 14, 120, 10, 15, 227, 11, - 16, 237, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 228, 229, 230, 231, 232, 238, 239, - 240, 241, 12, 17, 249, 250, 251, 252, 253, 254, - 255, 256, 13, 18, 258, 259 + -1, 1, 9, 10, 16, 126, 11, 17, 236, 12, + 18, 246, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 237, 238, 239, 240, + 241, 247, 248, 249, 250, 13, 19, 258, 259, 260, + 261, 262, 263, 264, 265, 14, 20, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 15, 21, 292, 293 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -80 +#define YYPACT_NINF -123 static const yytype_int16 yypact[] = { - -80, 115, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -12, 39, 46, 38, -79, 16, - 17, 18, 22, 23, 24, 67, 70, 71, 72, 77, - 106, 111, 112, 113, 114, 124, 125, 126, 127, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 144, 145, 146, 147, 148, 150, 151, - 152, 153, 154, 155, 156, 158, 159, 160, 161, 162, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 209, 210, 211, 212, 213, 214, 215, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, 216, 217, 218, 219, 220, -80, -80, -80, - -80, -80, -80, 221, 222, 223, 224, -80, -80, -80, - -80, -80, 225, 226, 227, 228, 229, 230, 231, -80, - -80, -80, -80, -80, -80, -80, -80, 232, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, 233, 234, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80 + -123, 0, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, 92, -36, -32, -62, + -122, -102, -4, -3, -2, -1, 2, 24, 25, 26, + 27, 29, 30, 31, 32, 33, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 79, 80, + 81, 83, 84, 86, 87, 88, 89, 90, 91, 119, + 120, 121, 122, 127, 128, 170, 171, 172, 173, 174, + 175, 176, 177, 181, 185, 186, 209, 210, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, 236, 237, 238, 239, 240, -123, -123, -123, -123, + -123, -123, 241, 242, 243, 244, -123, -123, -123, -123, + -123, 245, 246, 247, 248, 249, 250, 251, -123, -123, + -123, -123, -123, -123, -123, -123, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, 264, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, 265, 266, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80 + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, + -123, -123, -123, -123 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -1168,86 +1259,91 @@ static const yytype_int8 yypgoto[] = #define YYTABLE_NINF -1 static const yytype_uint16 yytable[] = { - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 257, 260, 261, 262, 44, - 45, 46, 263, 264, 265, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 222, 266, 223, 224, - 267, 268, 269, 233, 88, 89, 90, 270, 91, 92, - 93, 234, 235, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 2, 271, 116, 117, 118, - 119, 272, 273, 274, 275, 0, 3, 242, 243, 244, - 245, 246, 247, 248, 276, 277, 278, 279, 225, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 4, 294, 295, 296, 297, 298, 5, - 299, 300, 301, 302, 303, 304, 305, 226, 306, 307, - 308, 309, 310, 236, 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, 6, 340, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 7, 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 + 2, 231, 291, 232, 233, 242, 294, 295, 296, 297, + 0, 3, 298, 243, 244, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 251, 252, 253, + 254, 255, 256, 257, 299, 300, 301, 302, 4, 303, + 304, 305, 306, 307, 5, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 234, 326, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 6, 350, + 351, 352, 235, 353, 354, 245, 355, 356, 357, 358, + 359, 360, 0, 7, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 361, + 362, 363, 364, 47, 48, 49, 8, 365, 366, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 367, 368, 369, 370, 371, 372, 373, 374, 91, 92, + 93, 375, 94, 95, 96, 376, 377, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 378, + 379, 119, 120, 121, 122, 123, 124, 125, 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 }; -#define yypact_value_is_default(yystate) \ - ((yystate) == (-80)) +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-123))) -#define yytable_value_is_error(yytable_value) \ +#define yytable_value_is_error(Yytable_value) \ YYID (0) static const yytype_int16 yycheck[] = { - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 104, 10, 10, 10, 41, - 42, 43, 10, 10, 10, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 37, 10, 39, 40, - 10, 10, 10, 37, 96, 97, 98, 10, 100, 101, - 102, 45, 46, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 0, 10, 129, 130, 131, - 132, 10, 10, 10, 10, -1, 11, 89, 90, 91, - 92, 93, 94, 95, 10, 10, 10, 10, 99, 10, + 0, 37, 104, 39, 40, 37, 10, 10, 10, 10, + -1, 11, 10, 45, 46, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 89, 90, 91, + 92, 93, 94, 95, 10, 10, 10, 10, 38, 10, + 10, 10, 10, 10, 44, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 99, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 38, 10, 10, 10, 10, 10, 44, - 10, 10, 10, 10, 10, 10, 10, 128, 10, 10, - 10, 10, 10, 127, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 88, 10, + 10, 10, 128, 10, 10, 127, 10, 10, 10, 10, + 10, 10, -1, 103, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 10, + 10, 10, 10, 41, 42, 43, 136, 10, 10, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 10, 10, 10, 10, 10, 10, 10, 10, 96, 97, + 98, 10, 100, 101, 102, 10, 10, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 10, + 10, 129, 130, 131, 132, 133, 134, 135, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 88, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 103, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10 + 10, 10, 10, 10, 10, 10, 10 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 134, 0, 11, 38, 44, 88, 103, 135, 136, - 139, 142, 255, 265, 137, 140, 143, 256, 266, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 41, 42, 43, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 96, 97, - 98, 100, 101, 102, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 129, 130, 131, 132, - 138, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 0, 150, 0, 11, 38, 44, 88, 103, 136, 151, + 152, 155, 158, 274, 284, 299, 153, 156, 159, 275, + 285, 300, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 41, 42, 43, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 96, 97, 98, 100, 101, 102, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 129, + 130, 131, 132, 133, 134, 135, 154, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, @@ -1256,10 +1352,16 @@ static const yytype_uint16 yystos[] = 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 37, 39, 40, 99, 128, 141, 246, 247, - 248, 249, 250, 37, 45, 46, 127, 144, 251, 252, - 253, 254, 89, 90, 91, 92, 93, 94, 95, 257, - 258, 259, 260, 261, 262, 263, 264, 104, 267, 268, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 37, 39, 40, 99, 128, 157, 265, 266, 267, + 268, 269, 37, 45, 46, 127, 160, 270, 271, 272, + 273, 89, 90, 91, 92, 93, 94, 95, 276, 277, + 278, 279, 280, 281, 282, 283, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 104, 301, 302, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1271,7 +1373,7 @@ 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 }; #define yyerrok (yyerrstatus = 0) @@ -1318,47 +1420,18 @@ do \ } \ while (YYID (0)) - +/* Error token number */ #define YYTERROR 1 #define YYERRCODE 256 -/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. - If N is 0, then set CURRENT to the empty location which ends - the previous symbol: RHS[0] (always defined). */ - -#ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - do \ - if (YYID (N)) \ - { \ - (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ - (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ - (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ - (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ - } \ - else \ - { \ - (Current).first_line = (Current).last_line = \ - YYRHSLOC (Rhs, 0).last_line; \ - (Current).first_column = (Current).last_column = \ - YYRHSLOC (Rhs, 0).last_column; \ - } \ - while (YYID (0)) -#endif - -#define YYRHSLOC(Rhs, K) ((Rhs)[K]) - - /* This macro is provided for backward compatibility. */ - #ifndef YY_LOCATION_PRINT # define YY_LOCATION_PRINT(File, Loc) ((void) 0) #endif /* YYLEX -- calling `yylex' with the right arguments. */ - #ifdef YYLEX_PARAM # define YYLEX yylex (YYLEX_PARAM) #else @@ -1421,7 +1494,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep) switch (yytype) { default: - break; + break; } } @@ -1663,7 +1736,6 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, { YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); YYSIZE_T yysize = yysize0; - YYSIZE_T yysize1; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULL; @@ -1726,11 +1798,13 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, break; } yyarg[yycount++] = yytname[yyx]; - yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); - if (! (yysize <= yysize1 - && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; + { + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } } } } @@ -1750,10 +1824,12 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, # undef YYCASE_ } - yysize1 = yysize + yystrlen (yyformat); - if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; + { + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } if (*yymsg_alloc < yysize) { @@ -1813,7 +1889,7 @@ yydestruct (yymsg, yytype, yyvaluep) { default: - break; + break; } } @@ -1823,8 +1899,17 @@ yydestruct (yymsg, yytype, yyvaluep) /* The lookahead symbol. */ int yychar; + +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + /* The semantic value of the lookahead symbol. */ -YYSTYPE yylval; +YYSTYPE yylval YY_INITIAL_VALUE(yyval_default); /* Number of syntax errors so far. */ int yynerrs; @@ -1882,7 +1967,7 @@ yyparse () int yyn; int yyresult; /* Lookahead token as an internal (translated) token number. */ - int yytoken; + int yytoken = 0; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; @@ -1900,9 +1985,8 @@ yyparse () Keep to zero when no symbol should be popped. */ int yylen = 0; - yytoken = 0; - yyss = yyssa; - yyvs = yyvsa; + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; yystacksize = YYINITDEPTH; YYDPRINTF ((stderr, "Starting parse\n")); @@ -1911,13 +1995,6 @@ yyparse () yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ - - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ - yyssp = yyss; - yyvsp = yyvs; goto yysetstate; /*------------------------------------------------------------. @@ -2058,7 +2135,9 @@ yybackup: yychar = YYEMPTY; yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END goto yynewstate; @@ -2094,17 +2173,17 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 9: -/* Line 1787 of yacc.c */ -#line 119 "util/configparser.y" + case 10: +/* Line 1792 of yacc.c */ +#line 129 "util/configparser.y" { OUTYY(("\nP(server:)\n")); } break; - case 113: -/* Line 1787 of yacc.c */ -#line 169 "util/configparser.y" + case 117: +/* Line 1792 of yacc.c */ +#line 180 "util/configparser.y" { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2117,9 +2196,9 @@ yyreduce: } break; - case 121: -/* Line 1787 of yacc.c */ -#line 185 "util/configparser.y" + case 125: +/* Line 1792 of yacc.c */ +#line 196 "util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2132,9 +2211,9 @@ yyreduce: } break; - case 128: -/* Line 1787 of yacc.c */ -#line 201 "util/configparser.y" + case 132: +/* Line 1792 of yacc.c */ +#line 212 "util/configparser.y" { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2144,9 +2223,9 @@ yyreduce: } break; - case 129: -/* Line 1787 of yacc.c */ -#line 210 "util/configparser.y" + case 133: +/* Line 1792 of yacc.c */ +#line 221 "util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2156,9 +2235,9 @@ yyreduce: } break; - case 130: -/* Line 1787 of yacc.c */ -#line 219 "util/configparser.y" + case 134: +/* Line 1792 of yacc.c */ +#line 230 "util/configparser.y" { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "") == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) @@ -2170,9 +2249,9 @@ yyreduce: } break; - case 131: -/* Line 1787 of yacc.c */ -#line 230 "util/configparser.y" + case 135: +/* Line 1792 of yacc.c */ +#line 241 "util/configparser.y" { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2182,9 +2261,9 @@ yyreduce: } break; - case 132: -/* Line 1787 of yacc.c */ -#line 239 "util/configparser.y" + case 136: +/* Line 1792 of yacc.c */ +#line 250 "util/configparser.y" { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2194,9 +2273,9 @@ yyreduce: } break; - case 133: -/* Line 1787 of yacc.c */ -#line 248 "util/configparser.y" + case 137: +/* Line 1792 of yacc.c */ +#line 259 "util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2206,9 +2285,9 @@ yyreduce: } break; - case 134: -/* Line 1787 of yacc.c */ -#line 257 "util/configparser.y" + case 138: +/* Line 1792 of yacc.c */ +#line 268 "util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -2222,9 +2301,9 @@ yyreduce: } break; - case 135: -/* Line 1787 of yacc.c */ -#line 270 "util/configparser.y" + case 139: +/* Line 1792 of yacc.c */ +#line 281 "util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -2240,9 +2319,9 @@ yyreduce: } break; - case 136: -/* Line 1787 of yacc.c */ -#line 285 "util/configparser.y" + case 140: +/* Line 1792 of yacc.c */ +#line 296 "util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2252,9 +2331,9 @@ yyreduce: } break; - case 137: -/* Line 1787 of yacc.c */ -#line 294 "util/configparser.y" + case 141: +/* Line 1792 of yacc.c */ +#line 305 "util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 1, @@ -2264,9 +2343,9 @@ yyreduce: } break; - case 138: -/* Line 1787 of yacc.c */ -#line 303 "util/configparser.y" + case 142: +/* Line 1792 of yacc.c */ +#line 314 "util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 0, @@ -2276,9 +2355,9 @@ yyreduce: } break; - case 139: -/* Line 1787 of yacc.c */ -#line 312 "util/configparser.y" + case 143: +/* Line 1792 of yacc.c */ +#line 323 "util/configparser.y" { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2288,9 +2367,9 @@ yyreduce: } break; - case 140: -/* Line 1787 of yacc.c */ -#line 321 "util/configparser.y" + case 144: +/* Line 1792 of yacc.c */ +#line 332 "util/configparser.y" { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2300,9 +2379,9 @@ yyreduce: } break; - case 141: -/* Line 1787 of yacc.c */ -#line 330 "util/configparser.y" + case 145: +/* Line 1792 of yacc.c */ +#line 341 "util/configparser.y" { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2312,9 +2391,9 @@ yyreduce: } break; - case 142: -/* Line 1787 of yacc.c */ -#line 339 "util/configparser.y" + case 146: +/* Line 1792 of yacc.c */ +#line 350 "util/configparser.y" { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2324,9 +2403,9 @@ yyreduce: } break; - case 143: -/* Line 1787 of yacc.c */ -#line 348 "util/configparser.y" + case 147: +/* Line 1792 of yacc.c */ +#line 359 "util/configparser.y" { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2336,9 +2415,9 @@ yyreduce: } break; - case 144: -/* Line 1787 of yacc.c */ -#line 357 "util/configparser.y" + case 148: +/* Line 1792 of yacc.c */ +#line 368 "util/configparser.y" { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2348,9 +2427,9 @@ yyreduce: } break; - case 145: -/* Line 1787 of yacc.c */ -#line 366 "util/configparser.y" + case 149: +/* Line 1792 of yacc.c */ +#line 377 "util/configparser.y" { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2360,9 +2439,9 @@ yyreduce: } break; - case 146: -/* Line 1787 of yacc.c */ -#line 375 "util/configparser.y" + case 150: +/* Line 1792 of yacc.c */ +#line 386 "util/configparser.y" { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2372,9 +2451,9 @@ yyreduce: } break; - case 147: -/* Line 1787 of yacc.c */ -#line 384 "util/configparser.y" + case 151: +/* Line 1792 of yacc.c */ +#line 395 "util/configparser.y" { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2384,9 +2463,9 @@ yyreduce: } break; - case 148: -/* Line 1787 of yacc.c */ -#line 393 "util/configparser.y" + case 152: +/* Line 1792 of yacc.c */ +#line 404 "util/configparser.y" { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->ssl_service_key); @@ -2394,9 +2473,9 @@ yyreduce: } break; - case 149: -/* Line 1787 of yacc.c */ -#line 400 "util/configparser.y" + case 153: +/* Line 1792 of yacc.c */ +#line 411 "util/configparser.y" { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->ssl_service_pem); @@ -2404,9 +2483,9 @@ yyreduce: } break; - case 150: -/* Line 1787 of yacc.c */ -#line 407 "util/configparser.y" + case 154: +/* Line 1792 of yacc.c */ +#line 418 "util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2416,9 +2495,9 @@ yyreduce: } break; - case 151: -/* Line 1787 of yacc.c */ -#line 416 "util/configparser.y" + case 155: +/* Line 1792 of yacc.c */ +#line 427 "util/configparser.y" { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2428,9 +2507,9 @@ yyreduce: } break; - case 152: -/* Line 1787 of yacc.c */ -#line 425 "util/configparser.y" + case 156: +/* Line 1792 of yacc.c */ +#line 436 "util/configparser.y" { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2445,9 +2524,9 @@ yyreduce: } break; - case 153: -/* Line 1787 of yacc.c */ -#line 439 "util/configparser.y" + case 157: +/* Line 1792 of yacc.c */ +#line 450 "util/configparser.y" { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2457,9 +2536,9 @@ yyreduce: } break; - case 154: -/* Line 1787 of yacc.c */ -#line 448 "util/configparser.y" + case 158: +/* Line 1792 of yacc.c */ +#line 459 "util/configparser.y" { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2469,9 +2548,9 @@ yyreduce: } break; - case 155: -/* Line 1787 of yacc.c */ -#line 457 "util/configparser.y" + case 159: +/* Line 1792 of yacc.c */ +#line 468 "util/configparser.y" { OUTYY(("P(server_chroot:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->chrootdir); @@ -2479,9 +2558,9 @@ yyreduce: } break; - case 156: -/* Line 1787 of yacc.c */ -#line 464 "util/configparser.y" + case 160: +/* Line 1792 of yacc.c */ +#line 475 "util/configparser.y" { OUTYY(("P(server_username:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->username); @@ -2489,9 +2568,9 @@ yyreduce: } break; - case 157: -/* Line 1787 of yacc.c */ -#line 471 "util/configparser.y" + case 161: +/* Line 1792 of yacc.c */ +#line 482 "util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->directory); @@ -2499,9 +2578,9 @@ yyreduce: } break; - case 158: -/* Line 1787 of yacc.c */ -#line 478 "util/configparser.y" + case 162: +/* Line 1792 of yacc.c */ +#line 489 "util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->logfile); @@ -2510,9 +2589,9 @@ yyreduce: } break; - case 159: -/* Line 1787 of yacc.c */ -#line 486 "util/configparser.y" + case 163: +/* Line 1792 of yacc.c */ +#line 497 "util/configparser.y" { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->pidfile); @@ -2520,9 +2599,9 @@ yyreduce: } break; - case 160: -/* Line 1787 of yacc.c */ -#line 493 "util/configparser.y" + case 164: +/* Line 1792 of yacc.c */ +#line 504 "util/configparser.y" { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[(2) - (2)].str))) @@ -2530,9 +2609,9 @@ yyreduce: } break; - case 161: -/* Line 1787 of yacc.c */ -#line 500 "util/configparser.y" + case 165: +/* Line 1792 of yacc.c */ +#line 511 "util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->dlv_anchor_file); @@ -2540,9 +2619,9 @@ yyreduce: } break; - case 162: -/* Line 1787 of yacc.c */ -#line 507 "util/configparser.y" + case 166: +/* Line 1792 of yacc.c */ +#line 518 "util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[(2) - (2)].str))) @@ -2550,9 +2629,9 @@ yyreduce: } break; - case 163: -/* Line 1787 of yacc.c */ -#line 514 "util/configparser.y" + case 167: +/* Line 1792 of yacc.c */ +#line 525 "util/configparser.y" { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> @@ -2561,9 +2640,9 @@ yyreduce: } break; - case 164: -/* Line 1787 of yacc.c */ -#line 522 "util/configparser.y" + case 168: +/* Line 1792 of yacc.c */ +#line 533 "util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> @@ -2572,9 +2651,9 @@ yyreduce: } break; - case 165: -/* Line 1787 of yacc.c */ -#line 530 "util/configparser.y" + case 169: +/* Line 1792 of yacc.c */ +#line 541 "util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> @@ -2583,9 +2662,9 @@ yyreduce: } break; - case 166: -/* Line 1787 of yacc.c */ -#line 538 "util/configparser.y" + case 170: +/* Line 1792 of yacc.c */ +#line 549 "util/configparser.y" { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[(2) - (2)].str))) @@ -2593,9 +2672,9 @@ yyreduce: } break; - case 167: -/* Line 1787 of yacc.c */ -#line 545 "util/configparser.y" + case 171: +/* Line 1792 of yacc.c */ +#line 556 "util/configparser.y" { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[(2) - (2)].str))) @@ -2603,9 +2682,9 @@ yyreduce: } break; - case 168: -/* Line 1787 of yacc.c */ -#line 552 "util/configparser.y" + case 172: +/* Line 1792 of yacc.c */ +#line 563 "util/configparser.y" { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2615,9 +2694,9 @@ yyreduce: } break; - case 169: -/* Line 1787 of yacc.c */ -#line 561 "util/configparser.y" + case 173: +/* Line 1792 of yacc.c */ +#line 572 "util/configparser.y" { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2627,9 +2706,9 @@ yyreduce: } break; - case 170: -/* Line 1787 of yacc.c */ -#line 570 "util/configparser.y" + case 174: +/* Line 1792 of yacc.c */ +#line 581 "util/configparser.y" { OUTYY(("P(server_identity:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->identity); @@ -2637,9 +2716,9 @@ yyreduce: } break; - case 171: -/* Line 1787 of yacc.c */ -#line 577 "util/configparser.y" + case 175: +/* Line 1792 of yacc.c */ +#line 588 "util/configparser.y" { OUTYY(("P(server_version:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->version); @@ -2647,9 +2726,9 @@ yyreduce: } break; - case 172: -/* Line 1787 of yacc.c */ -#line 584 "util/configparser.y" + case 176: +/* Line 1792 of yacc.c */ +#line 595 "util/configparser.y" { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_rcvbuf)) @@ -2658,9 +2737,9 @@ yyreduce: } break; - case 173: -/* Line 1787 of yacc.c */ -#line 592 "util/configparser.y" + case 177: +/* Line 1792 of yacc.c */ +#line 603 "util/configparser.y" { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_sndbuf)) @@ -2669,9 +2748,9 @@ yyreduce: } break; - case 174: -/* Line 1787 of yacc.c */ -#line 600 "util/configparser.y" + case 178: +/* Line 1792 of yacc.c */ +#line 611 "util/configparser.y" { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2682,9 +2761,9 @@ yyreduce: } break; - case 175: -/* Line 1787 of yacc.c */ -#line 610 "util/configparser.y" + case 179: +/* Line 1792 of yacc.c */ +#line 621 "util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2698,9 +2777,9 @@ yyreduce: } break; - case 176: -/* Line 1787 of yacc.c */ -#line 623 "util/configparser.y" + case 180: +/* Line 1792 of yacc.c */ +#line 634 "util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2712,9 +2791,9 @@ yyreduce: } break; - case 177: -/* Line 1787 of yacc.c */ -#line 634 "util/configparser.y" + case 181: +/* Line 1792 of yacc.c */ +#line 645 "util/configparser.y" { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->msg_cache_size)) @@ -2723,9 +2802,9 @@ yyreduce: } break; - case 178: -/* Line 1787 of yacc.c */ -#line 642 "util/configparser.y" + case 182: +/* Line 1792 of yacc.c */ +#line 653 "util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2739,9 +2818,9 @@ yyreduce: } break; - case 179: -/* Line 1787 of yacc.c */ -#line 655 "util/configparser.y" + case 183: +/* Line 1792 of yacc.c */ +#line 666 "util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2751,9 +2830,9 @@ yyreduce: } break; - case 180: -/* Line 1787 of yacc.c */ -#line 664 "util/configparser.y" + case 184: +/* Line 1792 of yacc.c */ +#line 675 "util/configparser.y" { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2763,9 +2842,9 @@ yyreduce: } break; - case 181: -/* Line 1787 of yacc.c */ -#line 673 "util/configparser.y" + case 185: +/* Line 1792 of yacc.c */ +#line 684 "util/configparser.y" { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2775,9 +2854,22 @@ yyreduce: } break; - case 182: -/* Line 1787 of yacc.c */ -#line 682 "util/configparser.y" + case 186: +/* Line 1792 of yacc.c */ +#line 693 "util/configparser.y" + { + OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->unblock_lan_zones = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); + } + break; + + case 187: +/* Line 1792 of yacc.c */ +#line 703 "util/configparser.y" { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->rrset_cache_size)) @@ -2786,9 +2878,9 @@ yyreduce: } break; - case 183: -/* Line 1787 of yacc.c */ -#line 690 "util/configparser.y" + case 188: +/* Line 1792 of yacc.c */ +#line 711 "util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2802,9 +2894,9 @@ yyreduce: } break; - case 184: -/* Line 1787 of yacc.c */ -#line 703 "util/configparser.y" + case 189: +/* Line 1792 of yacc.c */ +#line 724 "util/configparser.y" { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2814,9 +2906,9 @@ yyreduce: } break; - case 185: -/* Line 1787 of yacc.c */ -#line 712 "util/configparser.y" + case 190: +/* Line 1792 of yacc.c */ +#line 733 "util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[(2) - (2)].str))); verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " @@ -2825,9 +2917,9 @@ yyreduce: } break; - case 186: -/* Line 1787 of yacc.c */ -#line 720 "util/configparser.y" + case 191: +/* Line 1792 of yacc.c */ +#line 741 "util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2837,9 +2929,9 @@ yyreduce: } break; - case 187: -/* Line 1787 of yacc.c */ -#line 729 "util/configparser.y" + case 192: +/* Line 1792 of yacc.c */ +#line 750 "util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[(2) - (2)].str))); verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " @@ -2848,9 +2940,9 @@ yyreduce: } break; - case 188: -/* Line 1787 of yacc.c */ -#line 737 "util/configparser.y" + case 193: +/* Line 1792 of yacc.c */ +#line 758 "util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2864,9 +2956,9 @@ yyreduce: } break; - case 189: -/* Line 1787 of yacc.c */ -#line 750 "util/configparser.y" + case 194: +/* Line 1792 of yacc.c */ +#line 771 "util/configparser.y" { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->target_fetch_policy); @@ -2874,9 +2966,9 @@ yyreduce: } break; - case 190: -/* Line 1787 of yacc.c */ -#line 757 "util/configparser.y" + case 195: +/* Line 1792 of yacc.c */ +#line 778 "util/configparser.y" { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2887,9 +2979,9 @@ yyreduce: } break; - case 191: -/* Line 1787 of yacc.c */ -#line 767 "util/configparser.y" + case 196: +/* Line 1792 of yacc.c */ +#line 788 "util/configparser.y" { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2900,9 +2992,9 @@ yyreduce: } break; - case 192: -/* Line 1787 of yacc.c */ -#line 777 "util/configparser.y" + case 197: +/* Line 1792 of yacc.c */ +#line 798 "util/configparser.y" { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2913,9 +3005,9 @@ yyreduce: } break; - case 193: -/* Line 1787 of yacc.c */ -#line 787 "util/configparser.y" + case 198: +/* Line 1792 of yacc.c */ +#line 808 "util/configparser.y" { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2926,9 +3018,9 @@ yyreduce: } break; - case 194: -/* Line 1787 of yacc.c */ -#line 797 "util/configparser.y" + case 199: +/* Line 1792 of yacc.c */ +#line 818 "util/configparser.y" { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2939,9 +3031,9 @@ yyreduce: } break; - case 195: -/* Line 1787 of yacc.c */ -#line 807 "util/configparser.y" + case 200: +/* Line 1792 of yacc.c */ +#line 828 "util/configparser.y" { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2952,9 +3044,9 @@ yyreduce: } break; - case 196: -/* Line 1787 of yacc.c */ -#line 817 "util/configparser.y" + case 201: +/* Line 1792 of yacc.c */ +#line 838 "util/configparser.y" { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2965,9 +3057,9 @@ yyreduce: } break; - case 197: -/* Line 1787 of yacc.c */ -#line 827 "util/configparser.y" + case 202: +/* Line 1792 of yacc.c */ +#line 848 "util/configparser.y" { OUTYY(("P(server_private_address:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[(2) - (2)].str))) @@ -2975,9 +3067,9 @@ yyreduce: } break; - case 198: -/* Line 1787 of yacc.c */ -#line 834 "util/configparser.y" + case 203: +/* Line 1792 of yacc.c */ +#line 855 "util/configparser.y" { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[(2) - (2)].str))) @@ -2985,9 +3077,9 @@ yyreduce: } break; - case 199: -/* Line 1787 of yacc.c */ -#line 841 "util/configparser.y" + case 204: +/* Line 1792 of yacc.c */ +#line 862 "util/configparser.y" { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2997,9 +3089,9 @@ yyreduce: } break; - case 200: -/* Line 1787 of yacc.c */ -#line 850 "util/configparser.y" + case 205: +/* Line 1792 of yacc.c */ +#line 871 "util/configparser.y" { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3009,9 +3101,9 @@ yyreduce: } break; - case 201: -/* Line 1787 of yacc.c */ -#line 859 "util/configparser.y" + case 206: +/* Line 1792 of yacc.c */ +#line 880 "util/configparser.y" { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3021,9 +3113,9 @@ yyreduce: } break; - case 202: -/* Line 1787 of yacc.c */ -#line 868 "util/configparser.y" + case 207: +/* Line 1792 of yacc.c */ +#line 889 "util/configparser.y" { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[(2) - (2)].str))) @@ -3031,9 +3123,9 @@ yyreduce: } break; - case 203: -/* Line 1787 of yacc.c */ -#line 875 "util/configparser.y" + case 208: +/* Line 1792 of yacc.c */ +#line 896 "util/configparser.y" { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3044,9 +3136,9 @@ yyreduce: } break; - case 204: -/* Line 1787 of yacc.c */ -#line 885 "util/configparser.y" + case 209: +/* Line 1792 of yacc.c */ +#line 906 "util/configparser.y" { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); if(strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 && @@ -3064,9 +3156,9 @@ yyreduce: } break; - case 205: -/* Line 1787 of yacc.c */ -#line 902 "util/configparser.y" + case 210: +/* Line 1792 of yacc.c */ +#line 923 "util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->module_conf); @@ -3074,9 +3166,9 @@ yyreduce: } break; - case 206: -/* Line 1787 of yacc.c */ -#line 909 "util/configparser.y" + case 211: +/* Line 1792 of yacc.c */ +#line 930 "util/configparser.y" { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[(2) - (2)].str))); if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { @@ -3095,9 +3187,9 @@ yyreduce: } break; - case 207: -/* Line 1787 of yacc.c */ -#line 927 "util/configparser.y" + case 212: +/* Line 1792 of yacc.c */ +#line 948 "util/configparser.y" { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[(2) - (2)].str))); if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { @@ -3111,9 +3203,9 @@ yyreduce: } break; - case 208: -/* Line 1787 of yacc.c */ -#line 940 "util/configparser.y" + case 213: +/* Line 1792 of yacc.c */ +#line 961 "util/configparser.y" { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[(2) - (2)].str))); if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { @@ -3127,9 +3219,9 @@ yyreduce: } break; - case 209: -/* Line 1787 of yacc.c */ -#line 953 "util/configparser.y" + case 214: +/* Line 1792 of yacc.c */ +#line 974 "util/configparser.y" { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3139,9 +3231,9 @@ yyreduce: } break; - case 210: -/* Line 1787 of yacc.c */ -#line 962 "util/configparser.y" + case 215: +/* Line 1792 of yacc.c */ +#line 983 "util/configparser.y" { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3151,9 +3243,9 @@ yyreduce: } break; - case 211: -/* Line 1787 of yacc.c */ -#line 971 "util/configparser.y" + case 216: +/* Line 1792 of yacc.c */ +#line 992 "util/configparser.y" { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3163,9 +3255,9 @@ yyreduce: } break; - case 212: -/* Line 1787 of yacc.c */ -#line 980 "util/configparser.y" + case 217: +/* Line 1792 of yacc.c */ +#line 1001 "util/configparser.y" { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3176,9 +3268,9 @@ yyreduce: } break; - case 213: -/* Line 1787 of yacc.c */ -#line 990 "util/configparser.y" + case 218: +/* Line 1792 of yacc.c */ +#line 1011 "util/configparser.y" { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3189,9 +3281,9 @@ yyreduce: } break; - case 214: -/* Line 1787 of yacc.c */ -#line 1000 "util/configparser.y" + case 219: +/* Line 1792 of yacc.c */ +#line 1021 "util/configparser.y" { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3201,9 +3293,9 @@ yyreduce: } break; - case 215: -/* Line 1787 of yacc.c */ -#line 1009 "util/configparser.y" + case 220: +/* Line 1792 of yacc.c */ +#line 1030 "util/configparser.y" { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3213,9 +3305,9 @@ yyreduce: } break; - case 216: -/* Line 1787 of yacc.c */ -#line 1018 "util/configparser.y" + case 221: +/* Line 1792 of yacc.c */ +#line 1039 "util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); @@ -3223,9 +3315,9 @@ yyreduce: } break; - case 217: -/* Line 1787 of yacc.c */ -#line 1025 "util/configparser.y" + case 222: +/* Line 1792 of yacc.c */ +#line 1046 "util/configparser.y" { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3235,9 +3327,9 @@ yyreduce: } break; - case 218: -/* Line 1787 of yacc.c */ -#line 1034 "util/configparser.y" + case 223: +/* Line 1792 of yacc.c */ +#line 1055 "util/configparser.y" { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3247,9 +3339,9 @@ yyreduce: } break; - case 219: -/* Line 1787 of yacc.c */ -#line 1043 "util/configparser.y" + case 224: +/* Line 1792 of yacc.c */ +#line 1064 "util/configparser.y" { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3259,9 +3351,9 @@ yyreduce: } break; - case 220: -/* Line 1787 of yacc.c */ -#line 1052 "util/configparser.y" + case 225: +/* Line 1792 of yacc.c */ +#line 1073 "util/configparser.y" { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->key_cache_size)) @@ -3270,9 +3362,9 @@ yyreduce: } break; - case 221: -/* Line 1787 of yacc.c */ -#line 1060 "util/configparser.y" + case 226: +/* Line 1792 of yacc.c */ +#line 1081 "util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -3286,9 +3378,9 @@ yyreduce: } break; - case 222: -/* Line 1787 of yacc.c */ -#line 1073 "util/configparser.y" + case 227: +/* Line 1792 of yacc.c */ +#line 1094 "util/configparser.y" { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->neg_cache_size)) @@ -3297,9 +3389,9 @@ yyreduce: } break; - case 223: -/* Line 1787 of yacc.c */ -#line 1081 "util/configparser.y" + case 228: +/* Line 1792 of yacc.c */ +#line 1102 "util/configparser.y" { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && @@ -3322,9 +3414,9 @@ yyreduce: } break; - case 224: -/* Line 1787 of yacc.c */ -#line 1103 "util/configparser.y" + case 229: +/* Line 1792 of yacc.c */ +#line 1124 "util/configparser.y" { OUTYY(("P(server_local_data:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[(2) - (2)].str))) @@ -3332,9 +3424,9 @@ yyreduce: } break; - case 225: -/* Line 1787 of yacc.c */ -#line 1110 "util/configparser.y" + case 230: +/* Line 1792 of yacc.c */ +#line 1131 "util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str))); @@ -3350,9 +3442,9 @@ yyreduce: } break; - case 226: -/* Line 1787 of yacc.c */ -#line 1125 "util/configparser.y" + case 231: +/* Line 1792 of yacc.c */ +#line 1146 "util/configparser.y" { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3363,9 +3455,9 @@ yyreduce: } break; - case 227: -/* Line 1787 of yacc.c */ -#line 1135 "util/configparser.y" + case 232: +/* Line 1792 of yacc.c */ +#line 1156 "util/configparser.y" { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3376,9 +3468,9 @@ yyreduce: } break; - case 228: -/* Line 1787 of yacc.c */ -#line 1145 "util/configparser.y" + case 233: +/* Line 1792 of yacc.c */ +#line 1166 "util/configparser.y" { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[(2) - (2)].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[(2) - (2)].str)); @@ -3386,9 +3478,31 @@ yyreduce: } break; - case 229: -/* Line 1787 of yacc.c */ -#line 1152 "util/configparser.y" + case 234: +/* Line 1792 of yacc.c */ +#line 1173 "util/configparser.y" + { + OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->dns64_prefix); + cfg_parser->cfg->dns64_prefix = (yyvsp[(2) - (2)].str); + } + break; + + case 235: +/* Line 1792 of yacc.c */ +#line 1180 "util/configparser.y" + { + OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); + } + break; + + case 236: +/* Line 1792 of yacc.c */ +#line 1189 "util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->stubs->name) @@ -3399,9 +3513,9 @@ yyreduce: } break; - case 230: -/* Line 1787 of yacc.c */ -#line 1162 "util/configparser.y" + case 237: +/* Line 1792 of yacc.c */ +#line 1199 "util/configparser.y" { OUTYY(("P(stub-host:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[(2) - (2)].str))) @@ -3409,9 +3523,9 @@ yyreduce: } break; - case 231: -/* Line 1787 of yacc.c */ -#line 1169 "util/configparser.y" + case 238: +/* Line 1792 of yacc.c */ +#line 1206 "util/configparser.y" { OUTYY(("P(stub-addr:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[(2) - (2)].str))) @@ -3419,9 +3533,9 @@ yyreduce: } break; - case 232: -/* Line 1787 of yacc.c */ -#line 1176 "util/configparser.y" + case 239: +/* Line 1792 of yacc.c */ +#line 1213 "util/configparser.y" { OUTYY(("P(stub-first:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3431,9 +3545,9 @@ yyreduce: } break; - case 233: -/* Line 1787 of yacc.c */ -#line 1185 "util/configparser.y" + case 240: +/* Line 1792 of yacc.c */ +#line 1222 "util/configparser.y" { OUTYY(("P(stub-prime:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3444,9 +3558,9 @@ yyreduce: } break; - case 234: -/* Line 1787 of yacc.c */ -#line 1195 "util/configparser.y" + case 241: +/* Line 1792 of yacc.c */ +#line 1232 "util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->forwards->name) @@ -3457,9 +3571,9 @@ yyreduce: } break; - case 235: -/* Line 1787 of yacc.c */ -#line 1205 "util/configparser.y" + case 242: +/* Line 1792 of yacc.c */ +#line 1242 "util/configparser.y" { OUTYY(("P(forward-host:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[(2) - (2)].str))) @@ -3467,9 +3581,9 @@ yyreduce: } break; - case 236: -/* Line 1787 of yacc.c */ -#line 1212 "util/configparser.y" + case 243: +/* Line 1792 of yacc.c */ +#line 1249 "util/configparser.y" { OUTYY(("P(forward-addr:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[(2) - (2)].str))) @@ -3477,9 +3591,9 @@ yyreduce: } break; - case 237: -/* Line 1787 of yacc.c */ -#line 1219 "util/configparser.y" + case 244: +/* Line 1792 of yacc.c */ +#line 1256 "util/configparser.y" { OUTYY(("P(forward-first:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3489,17 +3603,17 @@ yyreduce: } break; - case 238: -/* Line 1787 of yacc.c */ -#line 1228 "util/configparser.y" + case 245: +/* Line 1792 of yacc.c */ +#line 1265 "util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } break; - case 248: -/* Line 1787 of yacc.c */ -#line 1239 "util/configparser.y" + case 255: +/* Line 1792 of yacc.c */ +#line 1276 "util/configparser.y" { OUTYY(("P(control_enable:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3510,9 +3624,9 @@ yyreduce: } break; - case 249: -/* Line 1787 of yacc.c */ -#line 1249 "util/configparser.y" + case 256: +/* Line 1792 of yacc.c */ +#line 1286 "util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -3522,9 +3636,9 @@ yyreduce: } break; - case 250: -/* Line 1787 of yacc.c */ -#line 1258 "util/configparser.y" + case 257: +/* Line 1792 of yacc.c */ +#line 1295 "util/configparser.y" { OUTYY(("P(control_interface:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[(2) - (2)].str))) @@ -3532,9 +3646,9 @@ yyreduce: } break; - case 251: -/* Line 1787 of yacc.c */ -#line 1265 "util/configparser.y" + case 258: +/* Line 1792 of yacc.c */ +#line 1302 "util/configparser.y" { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->server_key_file); @@ -3542,9 +3656,9 @@ yyreduce: } break; - case 252: -/* Line 1787 of yacc.c */ -#line 1272 "util/configparser.y" + case 259: +/* Line 1792 of yacc.c */ +#line 1309 "util/configparser.y" { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->server_cert_file); @@ -3552,9 +3666,9 @@ yyreduce: } break; - case 253: -/* Line 1787 of yacc.c */ -#line 1279 "util/configparser.y" + case 260: +/* Line 1792 of yacc.c */ +#line 1316 "util/configparser.y" { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->control_key_file); @@ -3562,9 +3676,9 @@ yyreduce: } break; - case 254: -/* Line 1787 of yacc.c */ -#line 1286 "util/configparser.y" + case 261: +/* Line 1792 of yacc.c */ +#line 1323 "util/configparser.y" { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->control_cert_file); @@ -3572,17 +3686,160 @@ yyreduce: } break; - case 255: -/* Line 1787 of yacc.c */ -#line 1293 "util/configparser.y" + case 262: +/* Line 1792 of yacc.c */ +#line 1330 "util/configparser.y" + { + OUTYY(("\nP(dnstap:)\n")); + } + break; + + case 277: +/* Line 1792 of yacc.c */ +#line 1347 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + } + break; + + case 278: +/* Line 1792 of yacc.c */ +#line 1355 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->dnstap_socket_path); + cfg_parser->cfg->dnstap_socket_path = (yyvsp[(2) - (2)].str); + } + break; + + case 279: +/* Line 1792 of yacc.c */ +#line 1362 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + } + break; + + case 280: +/* Line 1792 of yacc.c */ +#line 1370 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + } + break; + + case 281: +/* Line 1792 of yacc.c */ +#line 1378 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->dnstap_identity); + cfg_parser->cfg->dnstap_identity = (yyvsp[(2) - (2)].str); + } + break; + + case 282: +/* Line 1792 of yacc.c */ +#line 1385 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->dnstap_version); + cfg_parser->cfg->dnstap_version = (yyvsp[(2) - (2)].str); + } + break; + + case 283: +/* Line 1792 of yacc.c */ +#line 1392 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_resolver_query_messages = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + } + break; + + case 284: +/* Line 1792 of yacc.c */ +#line 1401 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_resolver_response_messages = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + } + break; + + case 285: +/* Line 1792 of yacc.c */ +#line 1410 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_client_query_messages = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + } + break; + + case 286: +/* Line 1792 of yacc.c */ +#line 1419 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_client_response_messages = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + } + break; + + case 287: +/* Line 1792 of yacc.c */ +#line 1428 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_forwarder_query_messages = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + } + break; + + case 288: +/* Line 1792 of yacc.c */ +#line 1437 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_forwarder_response_messages = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + } + break; + + case 289: +/* Line 1792 of yacc.c */ +#line 1446 "util/configparser.y" { OUTYY(("\nP(python:)\n")); } break; - case 259: -/* Line 1787 of yacc.c */ -#line 1302 "util/configparser.y" + case 293: +/* Line 1792 of yacc.c */ +#line 1455 "util/configparser.y" { OUTYY(("P(python-script:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->python_script); @@ -3591,8 +3848,8 @@ yyreduce: break; -/* Line 1787 of yacc.c */ -#line 3596 "util/configparser.c" +/* Line 1792 of yacc.c */ +#line 3853 "util/configparser.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -3755,7 +4012,9 @@ yyerrlab1: YY_STACK_PRINT (yyss, yyssp); } + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END /* Shift the error token. */ @@ -3821,9 +4080,8 @@ yyreturn: } -/* Line 2048 of yacc.c */ -#line 1307 "util/configparser.y" +/* Line 2055 of yacc.c */ +#line 1460 "util/configparser.y" /* parse helper routines could be here */ - diff --git a/util/configparser.h b/util/configparser.h index 3a7f74ea4e99..e0a2b4f78bf4 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 2.6.1. */ +/* A Bison parser, made by GNU Bison 2.7. */ /* Bison interface for Yacc-like parsers in C @@ -30,8 +30,8 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -#ifndef YY_UTIL_CONFIGPARSER_H -# define YY_UTIL_CONFIGPARSER_H +#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED +# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 @@ -175,7 +175,23 @@ extern int yydebug; VAR_MINIMAL_RESPONSES = 384, VAR_RRSET_ROUNDROBIN = 385, VAR_MAX_UDP_SIZE = 386, - VAR_DELAY_CLOSE = 387 + VAR_DELAY_CLOSE = 387, + VAR_UNBLOCK_LAN_ZONES = 388, + VAR_DNS64_PREFIX = 389, + VAR_DNS64_SYNTHALL = 390, + VAR_DNSTAP = 391, + VAR_DNSTAP_ENABLE = 392, + VAR_DNSTAP_SOCKET_PATH = 393, + VAR_DNSTAP_SEND_IDENTITY = 394, + VAR_DNSTAP_SEND_VERSION = 395, + VAR_DNSTAP_IDENTITY = 396, + VAR_DNSTAP_VERSION = 397, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 398, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 399, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 400, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 401, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 402, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 403 }; #endif /* Tokens. */ @@ -309,20 +325,36 @@ extern int yydebug; #define VAR_RRSET_ROUNDROBIN 385 #define VAR_MAX_UDP_SIZE 386 #define VAR_DELAY_CLOSE 387 +#define VAR_UNBLOCK_LAN_ZONES 388 +#define VAR_DNS64_PREFIX 389 +#define VAR_DNS64_SYNTHALL 390 +#define VAR_DNSTAP 391 +#define VAR_DNSTAP_ENABLE 392 +#define VAR_DNSTAP_SOCKET_PATH 393 +#define VAR_DNSTAP_SEND_IDENTITY 394 +#define VAR_DNSTAP_SEND_VERSION 395 +#define VAR_DNSTAP_IDENTITY 396 +#define VAR_DNSTAP_VERSION 397 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 398 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 399 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 400 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 401 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 402 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 403 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE { -/* Line 2049 of yacc.c */ +/* Line 2058 of yacc.c */ #line 64 "util/configparser.y" char* str; -/* Line 2049 of yacc.c */ -#line 326 "util/configparser.h" +/* Line 2058 of yacc.c */ +#line 358 "util/configparser.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -345,4 +377,4 @@ int yyparse (); #endif #endif /* ! YYPARSE_PARAM */ -#endif /* !YY_UTIL_CONFIGPARSER_H */ +#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ diff --git a/util/configparser.y b/util/configparser.y index 74b5b79ee83a..7a92d9ee7899 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -105,13 +105,23 @@ extern struct config_parser_state* cfg_parser; %token VAR_IGNORE_CD_FLAG VAR_LOG_QUERIES VAR_TCP_UPSTREAM VAR_SSL_UPSTREAM %token VAR_SSL_SERVICE_KEY VAR_SSL_SERVICE_PEM VAR_SSL_PORT VAR_FORWARD_FIRST %token VAR_STUB_FIRST VAR_MINIMAL_RESPONSES VAR_RRSET_ROUNDROBIN -%token VAR_MAX_UDP_SIZE VAR_DELAY_CLOSE +%token VAR_MAX_UDP_SIZE VAR_DELAY_CLOSE VAR_UNBLOCK_LAN_ZONES +%token VAR_DNS64_PREFIX VAR_DNS64_SYNTHALL +%token VAR_DNSTAP VAR_DNSTAP_ENABLE VAR_DNSTAP_SOCKET_PATH +%token VAR_DNSTAP_SEND_IDENTITY VAR_DNSTAP_SEND_VERSION +%token VAR_DNSTAP_IDENTITY VAR_DNSTAP_VERSION +%token VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES +%token VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES +%token VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES +%token VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES +%token VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES +%token VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; toplevelvar: serverstart contents_server | stubstart contents_stub | forwardstart contents_forward | pythonstart contents_py | - rcstart contents_rc + rcstart contents_rc | dtstart contents_dt ; /* server: declaration */ @@ -163,7 +173,8 @@ content_server: server_num_threads | server_verbosity | server_port | server_log_queries | server_tcp_upstream | server_ssl_upstream | server_ssl_service_key | server_ssl_service_pem | server_ssl_port | server_minimal_responses | server_rrset_roundrobin | server_max_udp_size | - server_so_reuseport | server_delay_close + server_so_reuseport | server_delay_close | server_unblock_lan_zones | + server_dns64_prefix | server_dns64_synthall ; stubstart: VAR_STUB_ZONE { @@ -678,6 +689,16 @@ server_delay_close: VAR_DELAY_CLOSE STRING_ARG free($2); } ; +server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG + { + OUTYY(("P(server_unblock_lan_zones:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->unblock_lan_zones = + (strcmp($2, "yes")==0); + free($2); + } + ; server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG { OUTYY(("P(server_rrset_cache_size:%s)\n", $2)); @@ -1148,6 +1169,22 @@ server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG free($2); } ; +server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG + { + OUTYY(("P(dns64_prefix:%s)\n", $2)); + free(cfg_parser->cfg->dns64_prefix); + cfg_parser->cfg->dns64_prefix = $2; + } + ; +server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG + { + OUTYY(("P(server_dns64_synthall:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dns64_synthall = (strcmp($2, "yes")==0); + free($2); + } + ; stub_name: VAR_NAME STRING_ARG { OUTYY(("P(name:%s)\n", $2)); @@ -1289,6 +1326,122 @@ rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG cfg_parser->cfg->control_cert_file = $2; } ; +dtstart: VAR_DNSTAP + { + OUTYY(("\nP(dnstap:)\n")); + } + ; +contents_dt: contents_dt content_dt + | ; +content_dt: dt_dnstap_enable | dt_dnstap_socket_path | + dt_dnstap_send_identity | dt_dnstap_send_version | + dt_dnstap_identity | dt_dnstap_version | + dt_dnstap_log_resolver_query_messages | + dt_dnstap_log_resolver_response_messages | + dt_dnstap_log_client_query_messages | + dt_dnstap_log_client_response_messages | + dt_dnstap_log_forwarder_query_messages | + dt_dnstap_log_forwarder_response_messages + ; +dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG + { + OUTYY(("P(dt_dnstap_enable:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap = (strcmp($2, "yes")==0); + } + ; +dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG + { + OUTYY(("P(dt_dnstap_socket_path:%s)\n", $2)); + free(cfg_parser->cfg->dnstap_socket_path); + cfg_parser->cfg->dnstap_socket_path = $2; + } + ; +dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG + { + OUTYY(("P(dt_dnstap_send_identity:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_send_identity = (strcmp($2, "yes")==0); + } + ; +dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG + { + OUTYY(("P(dt_dnstap_send_version:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_send_version = (strcmp($2, "yes")==0); + } + ; +dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG + { + OUTYY(("P(dt_dnstap_identity:%s)\n", $2)); + free(cfg_parser->cfg->dnstap_identity); + cfg_parser->cfg->dnstap_identity = $2; + } + ; +dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG + { + OUTYY(("P(dt_dnstap_version:%s)\n", $2)); + free(cfg_parser->cfg->dnstap_version); + cfg_parser->cfg->dnstap_version = $2; + } + ; +dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG + { + OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_resolver_query_messages = + (strcmp($2, "yes")==0); + } + ; +dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG + { + OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_resolver_response_messages = + (strcmp($2, "yes")==0); + } + ; +dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG + { + OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_client_query_messages = + (strcmp($2, "yes")==0); + } + ; +dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG + { + OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_client_response_messages = + (strcmp($2, "yes")==0); + } + ; +dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG + { + OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_forwarder_query_messages = + (strcmp($2, "yes")==0); + } + ; +dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG + { + OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_forwarder_response_messages = + (strcmp($2, "yes")==0); + } + ; pythonstart: VAR_PYTHON { OUTYY(("\nP(python:)\n")); diff --git a/util/data/dname.c b/util/data/dname.c index 76f2e6458264..d43bbf6d2407 100644 --- a/util/data/dname.c +++ b/util/data/dname.c @@ -114,8 +114,8 @@ query_dname_compare(register uint8_t* d1, register uint8_t* d2) while(lab1--) { /* compare bytes first for speed */ if(*d1 != *d2 && - tolower((int)*d1) != tolower((int)*d2)) { - if(tolower((int)*d1) < tolower((int)*d2)) + tolower((unsigned char)*d1) != tolower((unsigned char)*d2)) { + if(tolower((unsigned char)*d1) < tolower((unsigned char)*d2)) return -1; return 1; } @@ -138,7 +138,7 @@ query_dname_tolower(uint8_t* dname) while(labellen) { dname++; while(labellen--) { - *dname = (uint8_t)tolower((int)*dname); + *dname = (uint8_t)tolower((unsigned char)*dname); dname++; } labellen = *dname; @@ -167,7 +167,7 @@ pkt_dname_tolower(sldns_buffer* pkt, uint8_t* dname) if(dname+lablen >= sldns_buffer_end(pkt)) return; while(lablen--) { - *dname = (uint8_t)tolower((int)*dname); + *dname = (uint8_t)tolower((unsigned char)*dname); dname++; } if(dname >= sldns_buffer_end(pkt)) @@ -256,8 +256,8 @@ dname_pkt_compare(sldns_buffer* pkt, uint8_t* d1, uint8_t* d2) log_assert(len1 == len2 && len1 != 0); /* compare labels */ while(len1--) { - if(tolower((int)*d1++) != tolower((int)*d2++)) { - if(tolower((int)d1[-1]) < tolower((int)d2[-1])) + if(tolower((unsigned char)*d1++) != tolower((unsigned char)*d2++)) { + if(tolower((unsigned char)d1[-1]) < tolower((unsigned char)d2[-1])) return -1; return 1; } @@ -282,7 +282,7 @@ dname_query_hash(uint8_t* dname, hashvalue_t h) labuf[0] = lablen; i=0; while(lablen--) - labuf[++i] = (uint8_t)tolower((int)*dname++); + labuf[++i] = (uint8_t)tolower((unsigned char)*dname++); h = hashlittle(labuf, labuf[0] + 1, h); lablen = *dname++; } @@ -310,7 +310,7 @@ dname_pkt_hash(sldns_buffer* pkt, uint8_t* dname, hashvalue_t h) labuf[0] = lablen; i=0; while(lablen--) - labuf[++i] = (uint8_t)tolower((int)*dname++); + labuf[++i] = (uint8_t)tolower((unsigned char)*dname++); h = hashlittle(labuf, labuf[0] + 1, h); lablen = *dname++; } @@ -423,8 +423,8 @@ static int memlowercmp(uint8_t* p1, uint8_t* p2, uint8_t len) { while(len--) { - if(*p1 != *p2 && tolower((int)*p1) != tolower((int)*p2)) { - if(tolower((int)*p1) < tolower((int)*p2)) + if(*p1 != *p2 && tolower((unsigned char)*p1) != tolower((unsigned char)*p2)) { + if(tolower((unsigned char)*p1) < tolower((unsigned char)*p2)) return -1; return 1; } @@ -480,10 +480,10 @@ dname_lab_cmp(uint8_t* d1, int labs1, uint8_t* d2, int labs2, int* mlabs) * lastdiff = c; * lastmlabs = atlabel; } apart from d1++,d2++ */ while(len1) { - if(*d1 != *d2 && tolower((int)*d1) - != tolower((int)*d2)) { - if(tolower((int)*d1) < - tolower((int)*d2)) { + if(*d1 != *d2 && tolower((unsigned char)*d1) + != tolower((unsigned char)*d2)) { + if(tolower((unsigned char)*d1) < + tolower((unsigned char)*d2)) { lastdiff = -1; lastmlabs = atlabel; d1 += len1; @@ -561,7 +561,7 @@ void dname_str(uint8_t* dname, char* str) return; } while(lablen--) { - if(isalnum((int)*dname) + if(isalnum((unsigned char)*dname) || *dname == '-' || *dname == '_' || *dname == '*') *s++ = *(char*)dname++; diff --git a/util/data/msgreply.c b/util/data/msgreply.c index cfdf3fe11031..126e7bef45b7 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -78,7 +78,7 @@ parse_create_qinfo(sldns_buffer* pkt, struct msg_parse* msg, } /** constructor for replyinfo */ -static struct reply_info* +struct reply_info* construct_reply_info_base(struct regional* region, uint16_t flags, size_t qd, time_t ttl, time_t prettl, size_t an, size_t ns, size_t ar, size_t total, enum sec_status sec) diff --git a/util/data/msgreply.h b/util/data/msgreply.h index f920108f952d..ccbd0d748381 100644 --- a/util/data/msgreply.h +++ b/util/data/msgreply.h @@ -192,6 +192,26 @@ struct msgreply_entry { struct lruhash_entry entry; }; +/** + * Constructor for replyinfo. + * @param region: where to allocate the results, pass NULL to use malloc. + * @param flags: flags for the replyinfo. + * @param qd: qd count + * @param ttl: TTL of replyinfo + * @param prettl: prefetch ttl + * @param an: an count + * @param ns: ns count + * @param ar: ar count + * @param total: total rrset count (presumably an+ns+ar). + * @param sec: security status of the reply info. + * @return the reply_info base struct with the array for putting the rrsets + * in. The array has been zeroed. Returns NULL on malloc failure. + */ +struct reply_info* +construct_reply_info_base(struct regional* region, uint16_t flags, size_t qd, + time_t ttl, time_t prettl, size_t an, size_t ns, size_t ar, + size_t total, enum sec_status sec); + /** * Parse wire query into a queryinfo structure, return 0 on parse error. * initialises the (prealloced) queryinfo structure as well. diff --git a/util/data/packed_rrset.h b/util/data/packed_rrset.h index 4b0ef80cd747..5d7990a2b0b1 100644 --- a/util/data/packed_rrset.h +++ b/util/data/packed_rrset.h @@ -189,7 +189,7 @@ enum sec_status { * o base struct * o rr_len size_t array * o rr_data uint8_t* array - * o rr_ttl uint32_t array (after size_t and ptrs because those may be + * o rr_ttl time_t array (after size_t and ptrs because those may be * 64bit and this array before those would make them unaligned). * Since the stuff before is 32/64bit, rr_ttl is 32 bit aligned. * o rr_data rdata wireformats diff --git a/util/fptr_wlist.c b/util/fptr_wlist.c index c8d3e5e9f351..3a5fc5f0611a 100644 --- a/util/fptr_wlist.c +++ b/util/fptr_wlist.c @@ -46,13 +46,12 @@ #include "config.h" #include "util/fptr_wlist.h" #include "util/mini_event.h" -#include "daemon/worker.h" -#include "daemon/remote.h" #include "services/outside_network.h" #include "services/mesh.h" #include "services/localzone.h" #include "services/cache/infra.h" #include "services/cache/rrset.h" +#include "dns64/dns64.h" #include "iterator/iterator.h" #include "iterator/iter_fwd.h" #include "validator/validator.h" @@ -69,6 +68,7 @@ #include "util/locks.h" #include "libunbound/libworker.h" #include "libunbound/context.h" +#include "libunbound/worker.h" #include "util/tube.h" #include "util/config_file.h" #ifdef UB_ON_WINDOWS @@ -259,7 +259,7 @@ fptr_whitelist_hash_markdelfunc(lruhash_markdelfunc_t fptr) int fptr_whitelist_modenv_send_query(struct outbound_entry* (*fptr)( uint8_t* qname, size_t qnamelen, uint16_t qtype, uint16_t qclass, - uint16_t flags, int dnssec, int want_dnssec, + uint16_t flags, int dnssec, int want_dnssec, int nocaps, struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* zone, size_t zonelen, struct module_qstate* q)) @@ -307,6 +307,7 @@ fptr_whitelist_mod_init(int (*fptr)(struct module_env* env, int id)) { if(fptr == &iter_init) return 1; else if(fptr == &val_init) return 1; + else if(fptr == &dns64_init) return 1; #ifdef WITH_PYTHONMODULE else if(fptr == &pythonmod_init) return 1; #endif @@ -318,6 +319,7 @@ fptr_whitelist_mod_deinit(void (*fptr)(struct module_env* env, int id)) { if(fptr == &iter_deinit) return 1; else if(fptr == &val_deinit) return 1; + else if(fptr == &dns64_deinit) return 1; #ifdef WITH_PYTHONMODULE else if(fptr == &pythonmod_deinit) return 1; #endif @@ -330,6 +332,7 @@ fptr_whitelist_mod_operate(void (*fptr)(struct module_qstate* qstate, { if(fptr == &iter_operate) return 1; else if(fptr == &val_operate) return 1; + else if(fptr == &dns64_operate) return 1; #ifdef WITH_PYTHONMODULE else if(fptr == &pythonmod_operate) return 1; #endif @@ -342,6 +345,7 @@ fptr_whitelist_mod_inform_super(void (*fptr)( { if(fptr == &iter_inform_super) return 1; else if(fptr == &val_inform_super) return 1; + else if(fptr == &dns64_inform_super) return 1; #ifdef WITH_PYTHONMODULE else if(fptr == &pythonmod_inform_super) return 1; #endif @@ -354,6 +358,7 @@ fptr_whitelist_mod_clear(void (*fptr)(struct module_qstate* qstate, { if(fptr == &iter_clear) return 1; else if(fptr == &val_clear) return 1; + else if(fptr == &dns64_clear) return 1; #ifdef WITH_PYTHONMODULE else if(fptr == &pythonmod_clear) return 1; #endif @@ -365,6 +370,7 @@ fptr_whitelist_mod_get_mem(size_t (*fptr)(struct module_env* env, int id)) { if(fptr == &iter_get_mem) return 1; else if(fptr == &val_get_mem) return 1; + else if(fptr == &dns64_get_mem) return 1; #ifdef WITH_PYTHONMODULE else if(fptr == &pythonmod_get_mem) return 1; #endif diff --git a/util/fptr_wlist.h b/util/fptr_wlist.h index b2925d6755d5..62692ba8b530 100644 --- a/util/fptr_wlist.h +++ b/util/fptr_wlist.h @@ -211,7 +211,7 @@ int fptr_whitelist_hash_markdelfunc(lruhash_markdelfunc_t fptr); */ int fptr_whitelist_modenv_send_query(struct outbound_entry* (*fptr)( uint8_t* qname, size_t qnamelen, uint16_t qtype, uint16_t qclass, - uint16_t flags, int dnssec, int want_dnssec, + uint16_t flags, int dnssec, int want_dnssec, int nocaps, struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* zone, size_t zonelen, struct module_qstate* q)); diff --git a/util/iana_ports.inc b/util/iana_ports.inc index 252203033ff6..ff971293fe9e 100644 --- a/util/iana_ports.inc +++ b/util/iana_ports.inc @@ -650,6 +650,7 @@ 780, 800, 801, +802, 810, 828, 829, @@ -935,7 +936,6 @@ 1273, 1274, 1275, -1276, 1277, 1278, 1279, @@ -2016,7 +2016,6 @@ 2367, 2368, 2370, -2371, 2372, 2381, 2382, @@ -2486,7 +2485,6 @@ 2852, 2853, 2854, -2855, 2856, 2857, 2858, @@ -3443,7 +3441,6 @@ 3838, 3839, 3840, -3841, 3842, 3843, 3844, @@ -3798,6 +3795,7 @@ 4326, 4327, 4328, +4333, 4340, 4341, 4342, @@ -3965,6 +3963,8 @@ 4784, 4785, 4789, +4790, +4791, 4800, 4801, 4802, @@ -4002,6 +4002,7 @@ 4899, 4900, 4914, +4936, 4937, 4940, 4941, @@ -4073,6 +4074,7 @@ 5072, 5073, 5074, +5078, 5079, 5080, 5081, @@ -4157,6 +4159,7 @@ 5315, 5343, 5344, +5349, 5350, 5351, 5352, @@ -4223,6 +4226,7 @@ 5463, 5464, 5465, +5474, 5500, 5501, 5502, @@ -4276,6 +4280,7 @@ 5682, 5683, 5684, +5687, 5688, 5689, 5713, @@ -4352,6 +4357,7 @@ 6072, 6073, 6074, +6081, 6082, 6083, 6085, @@ -4632,6 +4638,7 @@ 7560, 7566, 7570, +7574, 7588, 7624, 7627, @@ -4686,6 +4693,7 @@ 7913, 7932, 7933, +7962, 7967, 7979, 7980, @@ -5017,6 +5025,7 @@ 10252, 10260, 10288, +10439, 10500, 10540, 10541, @@ -5050,6 +5059,7 @@ 11321, 11367, 11371, +11430, 11600, 11720, 11723, @@ -5144,6 +5154,7 @@ 17007, 17185, 17219, +17220, 17221, 17222, 17234, @@ -5170,6 +5181,7 @@ 18881, 18888, 19000, +19007, 19191, 19194, 19283, @@ -5249,6 +5261,7 @@ 24386, 24465, 24554, +24577, 24676, 24677, 24678, diff --git a/util/locks.h b/util/locks.h index d63e5f03201e..3776912aaca2 100644 --- a/util/locks.h +++ b/util/locks.h @@ -55,8 +55,10 @@ * Also thread creation and deletion functions are defined here. */ +/* if you define your own LOCKRET before including locks.h, you can get most + * locking functions without the dependency on log_err. */ +#ifndef LOCKRET #include "util/log.h" - /** * The following macro is used to check the return value of the * pthread calls. They return 0 on success and an errno on error. @@ -68,6 +70,7 @@ log_err("%s at %d could not " #func ": %s", \ __FILE__, __LINE__, strerror(lockret_err)); \ } while(0) +#endif /** DEBUG: use thread debug whenever possible */ #if defined(HAVE_PTHREAD) && defined(HAVE_PTHREAD_SPINLOCK_T) && defined(ENABLE_LOCK_CHECKS) diff --git a/util/log.c b/util/log.c index 39d3118a0000..f90efa71c75f 100644 --- a/util/log.c +++ b/util/log.c @@ -68,6 +68,10 @@ static FILE* logfile = 0; static int key_created = 0; /** pthread key for thread ids in logfile */ static ub_thread_key_t logkey; +#ifndef THREADS_DISABLED +/** pthread mutex to protect FILE* */ +static lock_quick_t log_lock; +#endif /** the identity of this executable/process */ static const char* ident="unbound"; #if defined(HAVE_SYSLOG_H) || defined(UB_ON_WINDOWS) @@ -86,14 +90,19 @@ log_init(const char* filename, int use_syslog, const char* chrootdir) if(!key_created) { key_created = 1; ub_thread_key_create(&logkey, NULL); + lock_quick_init(&log_lock); } + lock_quick_lock(&log_lock); if(logfile #if defined(HAVE_SYSLOG_H) || defined(UB_ON_WINDOWS) || logging_to_syslog #endif - ) - verbose(VERB_QUERY, "switching log to %s", - use_syslog?"syslog":(filename&&filename[0]?filename:"stderr")); + ) { + lock_quick_unlock(&log_lock); /* verbose() needs the lock */ + verbose(VERB_QUERY, "switching log to %s", + use_syslog?"syslog":(filename&&filename[0]?filename:"stderr")); + lock_quick_lock(&log_lock); + } if(logfile && logfile != stderr) fclose(logfile); #ifdef HAVE_SYSLOG_H @@ -106,6 +115,7 @@ log_init(const char* filename, int use_syslog, const char* chrootdir) * chroot and no longer be able to access dev/log and so on */ openlog(ident, LOG_NDELAY, LOG_DAEMON); logging_to_syslog = 1; + lock_quick_unlock(&log_lock); return; } #elif defined(UB_ON_WINDOWS) @@ -114,11 +124,13 @@ log_init(const char* filename, int use_syslog, const char* chrootdir) } if(use_syslog) { logging_to_syslog = 1; + lock_quick_unlock(&log_lock); return; } #endif /* HAVE_SYSLOG_H */ if(!filename || !filename[0]) { logfile = stderr; + lock_quick_unlock(&log_lock); return; } /* open the file for logging */ @@ -127,6 +139,7 @@ log_init(const char* filename, int use_syslog, const char* chrootdir) filename += strlen(chrootdir); f = fopen(filename, "a"); if(!f) { + lock_quick_unlock(&log_lock); log_err("Could not open logfile %s: %s", filename, strerror(errno)); return; @@ -136,11 +149,14 @@ log_init(const char* filename, int use_syslog, const char* chrootdir) setvbuf(f, NULL, (int)_IOLBF, 0); #endif logfile = f; + lock_quick_unlock(&log_lock); } void log_file(FILE *f) { + lock_quick_lock(&log_lock); logfile = f; + lock_quick_unlock(&log_lock); } void log_thread_set(int* num) @@ -211,7 +227,11 @@ log_vmsg(int pri, const char* type, return; } #endif /* HAVE_SYSLOG_H */ - if(!logfile) return; + lock_quick_lock(&log_lock); + if(!logfile) { + lock_quick_unlock(&log_lock); + return; + } if(log_now) now = (time_t)*log_now; else now = (time_t)time(NULL); @@ -236,6 +256,7 @@ log_vmsg(int pri, const char* type, /* line buffering does not work on windows */ fflush(logfile); #endif + lock_quick_unlock(&log_lock); } /** diff --git a/util/mini_event.h b/util/mini_event.h index 58bbc8073938..1a5bcb445ae0 100644 --- a/util/mini_event.h +++ b/util/mini_event.h @@ -58,6 +58,21 @@ #define HAVE_EVENT_BASE_FREE #endif +/* redefine to use our own namespace so that on platforms where + * linkers crosslink library-private symbols with other symbols, it works */ +#define event_init minievent_init +#define event_get_version minievent_get_version +#define event_get_method minievent_get_method +#define event_base_dispatch minievent_base_dispatch +#define event_base_loopexit minievent_base_loopexit +#define event_base_free minievent_base_free +#define event_set minievent_set +#define event_base_set minievent_base_set +#define event_add minievent_add +#define event_del minievent_del +#define signal_add minisignal_add +#define signal_del minisignal_del + /** event timeout */ #define EV_TIMEOUT 0x01 /** event fd readable */ diff --git a/util/module.h b/util/module.h index dace1cf6ba24..f95ff6dc8372 100644 --- a/util/module.h +++ b/util/module.h @@ -212,6 +212,8 @@ struct module_env { * If BIT_CD is set, CD bit is set in queries with EDNS records. * @param want_dnssec: if set, the validator wants DNSSEC. Without * EDNS, the answer is likely to be useless for this domain. + * @param nocaps: do not use caps_for_id, use the qname as given. + * (ignored if caps_for_id is disabled). * @param addr: where to. * @param addrlen: length of addr. * @param zone: delegation point name. @@ -224,7 +226,7 @@ struct module_env { */ struct outbound_entry* (*send_query)(uint8_t* qname, size_t qnamelen, uint16_t qtype, uint16_t qclass, uint16_t flags, int dnssec, - int want_dnssec, struct sockaddr_storage* addr, + int want_dnssec, int nocaps, struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* zone, size_t zonelen, struct module_qstate* q); diff --git a/util/net_help.c b/util/net_help.c index 7f6daab4a1b4..49ce677f4aa0 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -329,6 +329,26 @@ void log_name_addr(enum verbosity_value v, const char* str, uint8_t* zone, str, namebuf, family, dest, (int)port); } +void log_err_addr(const char* str, const char* err, + struct sockaddr_storage* addr, socklen_t addrlen) +{ + uint16_t port; + char dest[100]; + int af = (int)((struct sockaddr_in*)addr)->sin_family; + void* sinaddr = &((struct sockaddr_in*)addr)->sin_addr; + if(af == AF_INET6) + sinaddr = &((struct sockaddr_in6*)addr)->sin6_addr; + if(inet_ntop(af, sinaddr, dest, (socklen_t)sizeof(dest)) == 0) { + (void)strlcpy(dest, "(inet_ntop error)", sizeof(dest)); + } + dest[sizeof(dest)-1] = 0; + port = ntohs(((struct sockaddr_in*)addr)->sin_port); + if(verbosity >= 4) + log_err("%s: %s for %s port %d (len %d)", str, err, dest, + (int)port, (int)addrlen); + else log_err("%s: %s for %s", str, err, dest); +} + int sockaddr_cmp(struct sockaddr_storage* addr1, socklen_t len1, struct sockaddr_storage* addr2, socklen_t len2) @@ -593,12 +613,17 @@ void* listen_sslctx_create(char* key, char* pem, char* verifypem) log_crypto_err("could not SSL_CTX_new"); return NULL; } - /* no SSLv2 because has defects */ + /* no SSLv2, SSLv3 because has defects */ if(!(SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2) & SSL_OP_NO_SSLv2)){ log_crypto_err("could not set SSL_OP_NO_SSLv2"); SSL_CTX_free(ctx); return NULL; } + if(!(SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv3) & SSL_OP_NO_SSLv3)){ + log_crypto_err("could not set SSL_OP_NO_SSLv3"); + SSL_CTX_free(ctx); + return NULL; + } if(!SSL_CTX_use_certificate_file(ctx, pem, SSL_FILETYPE_PEM)) { log_err("error for cert file: %s", pem); log_crypto_err("error in SSL_CTX use_certificate_file"); @@ -648,6 +673,11 @@ void* connect_sslctx_create(char* key, char* pem, char* verifypem) SSL_CTX_free(ctx); return NULL; } + if(!(SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv3) & SSL_OP_NO_SSLv3)) { + log_crypto_err("could not set SSL_OP_NO_SSLv3"); + SSL_CTX_free(ctx); + return NULL; + } if(key && key[0]) { if(!SSL_CTX_use_certificate_file(ctx, pem, SSL_FILETYPE_PEM)) { log_err("error in client certificate %s", pem); diff --git a/util/net_help.h b/util/net_help.h index b92dd40e85d9..54f4c9c0e7cd 100644 --- a/util/net_help.h +++ b/util/net_help.h @@ -157,6 +157,16 @@ void log_name_addr(enum verbosity_value v, const char* str, uint8_t* zone, struct sockaddr_storage* addr, socklen_t addrlen); /** + * Log errno and addr. + * @param str: descriptive string printed with it. + * @param err: errno string to print, i.e. strerror(errno). + * @param addr: the sockaddr to print. Can be ip4 or ip6. + * @param addrlen: length of addr. + */ +void log_err_addr(const char* str, const char* err, + struct sockaddr_storage* addr, socklen_t addrlen); + +/** * Convert address string, with "@port" appendix, to sockaddr. * Uses DNS port by default. * @param str: the string diff --git a/util/netevent.c b/util/netevent.c index 189aaa4e4ea0..c7ed30e6cd45 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -45,6 +45,7 @@ #include "util/fptr_wlist.h" #include "ldns/pkthdr.h" #include "ldns/sbuffer.h" +#include "dnstap/dnstap.h" #ifdef HAVE_OPENSSL_SSL_H #include <openssl/ssl.h> #endif @@ -785,7 +786,7 @@ int comm_point_perform_accept(struct comm_point* c, return -1; } #endif - log_err("accept failed: %s", strerror(errno)); + log_err_addr("accept failed", strerror(errno), addr, *addrlen); #else /* USE_WINSOCK */ if(WSAGetLastError() == WSAEINPROGRESS || WSAGetLastError() == WSAECONNRESET) @@ -794,9 +795,9 @@ int comm_point_perform_accept(struct comm_point* c, winsock_tcp_wouldblock(&c->ev->ev, EV_READ); return -1; } - log_err("accept failed: %s", wsa_strerror(WSAGetLastError())); + log_err_addr("accept failed", wsa_strerror(WSAGetLastError()), + addr, *addrlen); #endif - log_addr(0, "remote address is", addr, *addrlen); return -1; } fd_set_nonblock(new_fd); @@ -1218,7 +1219,8 @@ 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 - log_err("read (in tcp s): %s", strerror(errno)); + log_err_addr("read (in tcp s)", strerror(errno), + &c->repinfo.addr, c->repinfo.addrlen); #else /* USE_WINSOCK */ if(WSAGetLastError() == WSAECONNRESET) return 0; @@ -1228,11 +1230,10 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok) winsock_tcp_wouldblock(&c->ev->ev, EV_READ); return 1; } - log_err("read (in tcp s): %s", - wsa_strerror(WSAGetLastError())); + log_err_addr("read (in tcp s)", + wsa_strerror(WSAGetLastError()), + &c->repinfo.addr, c->repinfo.addrlen); #endif - log_addr(0, "remote address is", &c->repinfo.addr, - c->repinfo.addrlen); return 0; } c->tcp_byte_count += r; @@ -1263,7 +1264,8 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok) #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) return 1; - log_err("read (in tcp r): %s", strerror(errno)); + log_err_addr("read (in tcp r)", strerror(errno), + &c->repinfo.addr, c->repinfo.addrlen); #else /* USE_WINSOCK */ if(WSAGetLastError() == WSAECONNRESET) return 0; @@ -1273,11 +1275,10 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok) winsock_tcp_wouldblock(&c->ev->ev, EV_READ); return 1; } - log_err("read (in tcp r): %s", - wsa_strerror(WSAGetLastError())); + log_err_addr("read (in tcp r)", + wsa_strerror(WSAGetLastError()), + &c->repinfo.addr, c->repinfo.addrlen); #endif - log_addr(0, "remote address is", &c->repinfo.addr, - c->repinfo.addrlen); return 0; } sldns_buffer_skip(c->buffer, r); @@ -1323,7 +1324,8 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) if(error != 0 && verbosity < 2) return 0; /* silence lots of chatter in the logs */ else if(error != 0) { - log_err("tcp connect: %s", strerror(error)); + log_err_addr("tcp connect", strerror(error), + &c->repinfo.addr, c->repinfo.addrlen); #else /* USE_WINSOCK */ /* examine error */ if(error == WSAEINPROGRESS) @@ -1334,10 +1336,9 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) } else if(error != 0 && verbosity < 2) return 0; else if(error != 0) { - log_err("tcp connect: %s", wsa_strerror(error)); + log_err_addr("tcp connect", wsa_strerror(error), + &c->repinfo.addr, c->repinfo.addrlen); #endif /* USE_WINSOCK */ - log_addr(0, "remote address is", &c->repinfo.addr, - c->repinfo.addrlen); return 0; } } @@ -1361,13 +1362,19 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) #endif /* HAVE_WRITEV */ if(r == -1) { #ifndef USE_WINSOCK -#ifdef EPIPE +# ifdef EPIPE if(errno == EPIPE && verbosity < 2) return 0; /* silence 'broken pipe' */ -#endif + #endif if(errno == EINTR || errno == EAGAIN) return 1; - log_err("tcp writev: %s", strerror(errno)); +# ifdef HAVE_WRITEV + log_err_addr("tcp writev", strerror(errno), + &c->repinfo.addr, c->repinfo.addrlen); +# else /* HAVE_WRITEV */ + log_err_addr("tcp send s", strerror(errno), + &c->repinfo.addr, c->repinfo.addrlen); +# endif /* HAVE_WRITEV */ #else if(WSAGetLastError() == WSAENOTCONN) return 1; @@ -1377,11 +1384,10 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) winsock_tcp_wouldblock(&c->ev->ev, EV_WRITE); return 1; } - log_err("tcp send s: %s", - wsa_strerror(WSAGetLastError())); + log_err_addr("tcp send s", + wsa_strerror(WSAGetLastError()), + &c->repinfo.addr, c->repinfo.addrlen); #endif - log_addr(0, "remote address is", &c->repinfo.addr, - c->repinfo.addrlen); return 0; } c->tcp_byte_count += r; @@ -1401,7 +1407,8 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) return 1; - log_err("tcp send r: %s", strerror(errno)); + log_err_addr("tcp send r", strerror(errno), + &c->repinfo.addr, c->repinfo.addrlen); #else if(WSAGetLastError() == WSAEINPROGRESS) return 1; @@ -1409,11 +1416,9 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) winsock_tcp_wouldblock(&c->ev->ev, EV_WRITE); return 1; } - log_err("tcp send r: %s", - wsa_strerror(WSAGetLastError())); + log_err_addr("tcp send r", wsa_strerror(WSAGetLastError()), + &c->repinfo.addr, c->repinfo.addrlen); #endif - log_addr(0, "remote address is", &c->repinfo.addr, - c->repinfo.addrlen); return 0; } sldns_buffer_skip(c->buffer, r); @@ -1936,7 +1941,19 @@ comm_point_send_reply(struct comm_reply *repinfo) else comm_point_send_udp_msg(repinfo->c, repinfo->c->buffer, (struct sockaddr*)&repinfo->addr, repinfo->addrlen); +#ifdef USE_DNSTAP + if(repinfo->c->dtenv != NULL && + repinfo->c->dtenv->log_client_response_messages) + dt_msg_send_client_response(repinfo->c->dtenv, + &repinfo->addr, repinfo->c->type, repinfo->c->buffer); +#endif } else { +#ifdef USE_DNSTAP + if(repinfo->c->tcp_parent->dtenv != NULL && + repinfo->c->tcp_parent->dtenv->log_client_response_messages) + dt_msg_send_client_response(repinfo->c->tcp_parent->dtenv, + &repinfo->addr, repinfo->c->type, repinfo->c->buffer); +#endif comm_point_start_listening(repinfo->c, -1, TCP_QUERY_TIMEOUT); } } diff --git a/util/netevent.h b/util/netevent.h index fe28ca5dd75a..37322ab933f0 100644 --- a/util/netevent.h +++ b/util/netevent.h @@ -188,6 +188,10 @@ struct comm_point { comm_ssl_shake_hs_write } ssl_shake_state; + /* -------- dnstap ------- */ + /** the dnstap environment */ + struct dt_env* dtenv; + /** is this a UDP, TCP-accept or TCP socket. */ enum comm_point_type { /** UDP socket - handle datagrams. */ diff --git a/util/random.c b/util/random.c index 8a24ff04d990..71f0ba53e480 100644 --- a/util/random.c +++ b/util/random.c @@ -61,11 +61,8 @@ #include "util/random.h" #include "util/log.h" #include <time.h> -#ifdef HAVE_SSL -#include <openssl/rand.h> -#include <openssl/rc4.h> -#include <openssl/err.h> -#elif defined(HAVE_NSS) + +#ifdef HAVE_NSS /* nspr4 */ #include "prerror.h" /* nss3 */ @@ -79,147 +76,41 @@ */ #define MAX_VALUE 0x7fffffff -#ifdef HAVE_SSL -/** - * Struct with per-thread random state. - * Keeps SSL types away from the header file. - */ -struct ub_randstate { - /** key used for arc4random generation */ - RC4_KEY rc4; - /** keeps track of key usage */ - int rc4_ready; -}; - -/** Size of key to use (must be multiple of 8) */ -#define SEED_SIZE 24 - -/** Number of bytes to reseed after */ -#define REKEY_BYTES (1 << 24) - -/* (re)setup system seed */ +#ifndef HAVE_NSS void -ub_systemseed(unsigned int seed) +ub_systemseed(unsigned int ATTR_UNUSED(seed)) { - /* RAND_ is threadsafe, by the way */ - if(!RAND_status()) { - /* try to seed it */ - unsigned char buf[256]; - unsigned int v = seed; - size_t i; - for(i=0; i<256/sizeof(seed); i++) { - memmove(buf+i*sizeof(seed), &v, sizeof(seed)); - v = v*seed + (unsigned int)i; - } - RAND_seed(buf, 256); - if(!RAND_status()) { - log_err("Random generator has no entropy " - "(error %ld)", ERR_get_error()); - } else { - verbose(VERB_OPS, "openssl has no entropy, " - "seeding with time and pid"); - } - } -} - -/** reseed random generator */ -static void -ub_arc4random_stir(struct ub_randstate* s, struct ub_randstate* from) -{ - /* not as unsigned char, but longerint so that it is - aligned properly on alignment sensitive platforms */ - uint64_t rand_buf[SEED_SIZE/sizeof(uint64_t)]; - int i; - - memset(&s->rc4, 0, sizeof(s->rc4)); - memset(rand_buf, 0xc, sizeof(rand_buf)); - if (from) { - uint8_t* rbuf = (uint8_t*)rand_buf; - for(i=0; i<SEED_SIZE; i++) - rbuf[i] = (uint8_t)ub_random(from); - } else { - if(!RAND_status()) - ub_systemseed((unsigned)getpid()^(unsigned)time(NULL)); - if (RAND_bytes((unsigned char*)rand_buf, - (int)sizeof(rand_buf)) <= 0) { - /* very unlikely that this happens, since we seeded - * above, if it does; complain and keep going */ - log_err("Couldn't obtain random bytes (error %ld)", - ERR_get_error()); - s->rc4_ready = 256; - return; - } - } -#ifdef HAVE_FIPS_MODE - if(FIPS_mode()) { - /* RC4 is not allowed, get some trustworthy randomness */ - /* double certainty here, this routine should not be - * called in FIPS_mode */ - memset(rand_buf, 0, sizeof(rand_buf)); - s->rc4_ready = REKEY_BYTES; - return; - } -#endif /* FIPS_MODE */ - RC4_set_key(&s->rc4, SEED_SIZE, (unsigned char*)rand_buf); - - /* - * Discard early keystream, as per recommendations in: - * http://www.wisdom.weizmann.ac.il/~itsik/RC4/Papers/Rc4_ksa.ps - */ - for(i = 0; i <= 256; i += sizeof(rand_buf)) - RC4(&s->rc4, sizeof(rand_buf), (unsigned char*)rand_buf, - (unsigned char*)rand_buf); - - memset(rand_buf, 0, sizeof(rand_buf)); - - s->rc4_ready = REKEY_BYTES; + /* arc4random_uniform does not need seeds, it gets kernel entropy */ } struct ub_randstate* -ub_initstate(unsigned int seed, struct ub_randstate* from) +ub_initstate(unsigned int ATTR_UNUSED(seed), + struct ub_randstate* ATTR_UNUSED(from)) { - struct ub_randstate* s = (struct ub_randstate*)calloc(1, sizeof(*s)); + struct ub_randstate* s = (struct ub_randstate*)malloc(1); if(!s) { log_err("malloc failure in random init"); return NULL; } - ub_systemseed(seed); -#ifdef HAVE_FIPS_MODE - if(!FIPS_mode()) -#endif - ub_arc4random_stir(s, from); return s; } long int -ub_random(struct ub_randstate* s) +ub_random(struct ub_randstate* ATTR_UNUSED(s)) { - unsigned int r = 0; -#ifdef HAVE_FIPS_MODE - if(FIPS_mode()) { - /* RC4 is not allowed, get some trustworthy randomness */ - /* we use pseudo bytes: it tries to return secure randomness - * but returns 'something' if that fails. We need something - * else if it fails, because we cannot block here */ - if(RAND_pseudo_bytes((unsigned char*)&r, (int)sizeof(r)) - == -1) { - log_err("FIPSmode, no arc4random but RAND failed " - "(error %ld)", ERR_get_error()); - } - return (long int)((r) % (((unsigned)MAX_VALUE + 1))); - } -#endif /* FIPS_MODE */ - if (s->rc4_ready <= 0) { - ub_arc4random_stir(s, NULL); - } + /* This relies on MAX_VALUE being 0x7fffffff. */ + return (long)arc4random() & MAX_VALUE; +} - RC4(&s->rc4, sizeof(r), - (unsigned char *)&r, (unsigned char *)&r); - s->rc4_ready -= sizeof(r); - return (long int)((r) % (((unsigned)MAX_VALUE + 1))); +long int +ub_random_max(struct ub_randstate* state, long int x) +{ + (void)state; + /* on OpenBSD, this does not need _seed(), or _stir() calls */ + return (long)arc4random_uniform((uint32_t)x); } -#elif defined(HAVE_NSS) +#else /* not much to remember for NSS since we use its pk11_random, placeholder */ struct ub_randstate { @@ -253,8 +144,6 @@ long int ub_random(struct ub_randstate* ATTR_UNUSED(state)) return x & MAX_VALUE; } -#endif /* HAVE_SSL or HAVE_NSS */ - long int ub_random_max(struct ub_randstate* state, long int x) { @@ -266,6 +155,7 @@ ub_random_max(struct ub_randstate* state, long int x) v = ub_random(state); return (v % x); } +#endif /* HAVE_NSS */ void ub_randfree(struct ub_randstate* s) diff --git a/util/storage/lookup3.c b/util/storage/lookup3.c index 7596033bdee2..de288587bdbf 100644 --- a/util/storage/lookup3.c +++ b/util/storage/lookup3.c @@ -53,15 +53,16 @@ on 1 byte), but shoehorning those bytes into integers efficiently is messy. #ifdef HAVE_SYS_TYPES_H # include <sys/types.h> /* attempt to define endianness (solaris) */ #endif -#ifdef linux -# include <endian.h> /* attempt to define endianness */ +#if defined(linux) || defined(__OpenBSD__) +# ifdef HAVE_ENDIAN_H +# include <endian.h> /* attempt to define endianness */ +# else +# include <machine/endian.h> /* on older OpenBSD */ +# endif #endif #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) #include <sys/endian.h> /* attempt to define endianness */ #endif -#ifdef __OpenBSD__ -#include <machine/endian.h> /* attempt to define endianness */ -#endif /* random initial value */ static uint32_t raninit = (uint32_t)0xdeadbeef; diff --git a/util/storage/slabhash.c b/util/storage/slabhash.c index 128edd84ad75..0618b4c7295c 100644 --- a/util/storage/slabhash.c +++ b/util/storage/slabhash.c @@ -211,9 +211,21 @@ void slabhash_setmarkdel(struct slabhash* sl, lruhash_markdelfunc_t md) } void slabhash_traverse(struct slabhash* sh, int wr, - void (*func)(struct lruhash_entry*, void*), void* arg) + void (*func)(struct lruhash_entry*, void*), void* arg) { size_t i; for(i=0; i<sh->size; i++) lruhash_traverse(sh->array[i], wr, func, arg); } + +size_t count_slabhash_entries(struct slabhash* sh) +{ + size_t slab, cnt = 0; + + for(slab=0; slab<sh->size; slab++) { + lock_quick_lock(&sh->array[slab]->lock); + cnt += sh->array[slab]->num; + lock_quick_unlock(&sh->array[slab]->lock); + } + return cnt; +} diff --git a/util/storage/slabhash.h b/util/storage/slabhash.h index cf968f9653d4..031a9da0fac6 100644 --- a/util/storage/slabhash.h +++ b/util/storage/slabhash.h @@ -184,6 +184,13 @@ void slabhash_setmarkdel(struct slabhash* table, lruhash_markdelfunc_t md); void slabhash_traverse(struct slabhash* table, int wr, void (*func)(struct lruhash_entry*, void*), void* arg); +/* + * Count entries in slabhash. + * @param table: slabbed hash table; + * @return the number of items + */ +size_t count_slabhash_entries(struct slabhash* table); + /* --- test representation --- */ /** test structure contains test key */ struct slabhash_testkey { diff --git a/util/winsock_event.h b/util/winsock_event.h index 40892c14b1c0..f6426574347b 100644 --- a/util/winsock_event.h +++ b/util/winsock_event.h @@ -90,6 +90,21 @@ #define HAVE_EVENT_BASE_FREE #endif +/* redefine the calls to different names so that there is no name + * collision with other code that uses libevent names. (that uses libunbound)*/ +#define event_init winsockevent_init +#define event_get_version winsockevent_get_version +#define event_get_method winsockevent_get_method +#define event_base_dispatch winsockevent_base_dispatch +#define event_base_loopexit winsockevent_base_loopexit +#define event_base_free winsockevent_base_free +#define event_set winsockevent_set +#define event_base_set winsockevent_base_set +#define event_add winsockevent_add +#define event_del winsockevent_del +#define signal_add winsocksignal_add +#define signal_del winsocksignal_del + /** event timeout */ #define EV_TIMEOUT 0x01 /** event fd readable */ |