From: André Cruz Date: Tue, 27 Apr 2021 17:43:19 +0000 (+0100) Subject: Allow configuration of TCP timeout while waiting for response X-Git-Tag: release-1.13.2rc1~181^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e07f973938b12577701374da7e606490c1e5afcc;p=thirdparty%2Funbound.git Allow configuration of TCP timeout while waiting for response This allows us to configure how long Unbound will wait for a response on a TCP connection. --- diff --git a/daemon/worker.c b/daemon/worker.c index b560e4493..7537bd33d 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1795,7 +1795,8 @@ worker_init(struct worker* worker, struct config_file *cfg, cfg->do_udp || cfg->udp_upstream_without_downstream, worker->daemon->connect_sslctx, cfg->delay_close, cfg->tls_use_sni, dtenv, cfg->udp_connect, - cfg->max_reuse_tcp_queries, cfg->tcp_reuse_timeout); + cfg->max_reuse_tcp_queries, cfg->tcp_reuse_timeout, + cfg->tcp_auth_query_timeout); if(!worker->back) { log_err("could not create outgoing sockets"); worker_delete(worker); diff --git a/doc/example.conf.in b/doc/example.conf.in index 17b1b7741..3a9e50144 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -905,6 +905,9 @@ server: # tcp-reuse-timeout: 60000 # Max number of queries on a reuse connection. # max-reuse-tcp-queries: 200 + # Timeout in milliseconds for TCP queries to auth servers. + # tcp-auth-query-timeout: 3000 + # Python config section. To enable: # o use --with-pythonmodule to configure before compiling. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index e58d3533a..9aa12c65c 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -460,6 +460,10 @@ The maximum number of queries that can be sent on a persistent TCP connection. This option defaults to 200 queries. .TP +.B tcp-auth-query-timeout: \fI\fR +Timeout in milliseconds for TCP queries to auth servers. +This option defaults to 3000 milliseconds. +.TP .B edns-tcp-keepalive: \fI\fR Enable or disable EDNS TCP Keepalive. Default is no. .TP diff --git a/libunbound/libworker.c b/libunbound/libworker.c index 0c43a4110..4733eb464 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -242,7 +242,8 @@ libworker_setup(struct ub_ctx* ctx, int is_bg, struct ub_event_base* eb) cfg->outgoing_tcp_mss, &libworker_alloc_cleanup, w, cfg->do_udp || cfg->udp_upstream_without_downstream, w->sslctx, cfg->delay_close, cfg->tls_use_sni, NULL, cfg->udp_connect, - cfg->max_reuse_tcp_queries, cfg->tcp_reuse_timeout); + cfg->max_reuse_tcp_queries, cfg->tcp_reuse_timeout, + cfg->tcp_auth_query_timeout); w->env->outnet = w->back; if(!w->is_bg || w->is_bg_thread) { lock_basic_unlock(&ctx->cfglock); diff --git a/services/outside_network.c b/services/outside_network.c index 353809759..5fb4f3faa 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1404,7 +1404,8 @@ outside_network_create(struct comm_base *base, size_t bufsize, int numavailports, size_t unwanted_threshold, int tcp_mss, void (*unwanted_action)(void*), void* unwanted_param, int do_udp, void* sslctx, int delayclose, int tls_use_sni, struct dt_env* dtenv, - int udp_connect, int max_reuse_tcp_queries, int tcp_reuse_timeout) + int udp_connect, int max_reuse_tcp_queries, int tcp_reuse_timeout, + int tcp_auth_query_timeout) { struct outside_network* outnet = (struct outside_network*) calloc(1, sizeof(struct outside_network)); @@ -1418,6 +1419,7 @@ outside_network_create(struct comm_base *base, size_t bufsize, outnet->num_tcp = num_tcp; outnet->max_reuse_tcp_queries = max_reuse_tcp_queries; outnet->tcp_reuse_timeout= tcp_reuse_timeout; + outnet->tcp_auth_query_timeout = tcp_auth_query_timeout; outnet->num_tcp_outgoing = 0; outnet->infra = infra; outnet->rnd = rnd; @@ -2875,7 +2877,7 @@ serviced_tcp_initiate(struct serviced_query* sq, sldns_buffer* buff) sq->status==serviced_query_TCP_EDNS?"EDNS":""); serviced_encode(sq, buff, sq->status == serviced_query_TCP_EDNS); sq->last_sent_time = *sq->outnet->now_tv; - sq->pending = pending_tcp_query(sq, buff, TCP_AUTH_QUERY_TIMEOUT, + sq->pending = pending_tcp_query(sq, buff, sq->outnet->tcp_auth_query_timeout, serviced_tcp_callback, sq); if(!sq->pending) { /* delete from tree so that a retry by above layer does not @@ -2903,10 +2905,10 @@ serviced_tcp_send(struct serviced_query* sq, sldns_buffer* buff) sq->last_sent_time = *sq->outnet->now_tv; if(sq->tcp_upstream || sq->ssl_upstream) { timeout = rtt; - if(rtt >= UNKNOWN_SERVER_NICENESS && rtt < TCP_AUTH_QUERY_TIMEOUT) - timeout = TCP_AUTH_QUERY_TIMEOUT; + if(rtt >= UNKNOWN_SERVER_NICENESS && rtt < sq->outnet->tcp_auth_query_timeout) + timeout = sq->outnet->tcp_auth_query_timeout; } else { - timeout = TCP_AUTH_QUERY_TIMEOUT; + timeout = sq->outnet->tcp_auth_query_timeout; } sq->pending = pending_tcp_query(sq, buff, timeout, serviced_tcp_callback, sq); diff --git a/services/outside_network.h b/services/outside_network.h index b71469372..071f37dde 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -162,6 +162,8 @@ struct outside_network { size_t max_reuse_tcp_queries; /** timeout for REUSE entries in milliseconds. */ int tcp_reuse_timeout; + /** timeout in milliseconds for TCP queries to auth servers. */ + int tcp_auth_query_timeout; /** * tree of still-open and waiting tcp connections for reuse. * can be closed and reopened to get a new tcp connection. @@ -541,6 +543,7 @@ struct serviced_query { * @param udp_connect: if the udp_connect option is enabled. * @param max_reuse_tcp_queries: max number of queries on a reuse connection. * @param tcp_reuse_timeout: timeout for REUSE entries in milliseconds. + * @param tcp_auth_query_timeout: timeout in milliseconds for TCP queries to auth servers. * @return: the new structure (with no pending answers) or NULL on error. */ struct outside_network* outside_network_create(struct comm_base* base, @@ -550,7 +553,8 @@ struct outside_network* outside_network_create(struct comm_base* base, int numavailports, size_t unwanted_threshold, int tcp_mss, void (*unwanted_action)(void*), void* unwanted_param, int do_udp, void* sslctx, int delayclose, int tls_use_sni, struct dt_env *dtenv, - int udp_connect, int max_reuse_tcp_queries, int tcp_reuse_timeout); + int udp_connect, int max_reuse_tcp_queries, int tcp_reuse_timeout, + int tcp_auth_query_timeout); /** * Delete outside_network structure. diff --git a/testcode/fake_event.c b/testcode/fake_event.c index d0bd14ecb..125355f05 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -1047,7 +1047,8 @@ outside_network_create(struct comm_base* base, size_t bufsize, int ATTR_UNUSED(do_udp), void* ATTR_UNUSED(sslctx), int ATTR_UNUSED(delayclose), int ATTR_UNUSED(tls_use_sni), struct dt_env* ATTR_UNUSED(dtenv), int ATTR_UNUSED(udp_connect), - int ATTR_UNUSED(max_reuse_tcp_queries), int ATTR_UNUSED(tcp_reuse_timeout)) + int ATTR_UNUSED(max_reuse_tcp_queries), int ATTR_UNUSED(tcp_reuse_timeout), + int ATTR_UNUSED(tcp_auth_query_timeout)) { struct replay_runtime* runtime = (struct replay_runtime*)base; struct outside_network* outnet = calloc(1, diff --git a/util/config_file.c b/util/config_file.c index 938f6748e..1d6374156 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -112,6 +112,7 @@ config_create(void) cfg->tcp_mss = 0; cfg->outgoing_tcp_mss = 0; cfg->tcp_idle_timeout = 30 * 1000; /* 30s in millisecs */ + cfg->tcp_auth_query_timeout = 3 * 1000; /* 3s in millisecs */ cfg->do_tcp_keepalive = 0; cfg->tcp_keepalive_timeout = 120 * 1000; /* 120s in millisecs */ cfg->ssl_service_key = NULL; @@ -519,6 +520,7 @@ int config_set_option(struct config_file* cfg, const char* opt, udp_upstream_without_downstream) else S_NUMBER_NONZERO("tcp-mss:", tcp_mss) else S_NUMBER_NONZERO("outgoing-tcp-mss:", outgoing_tcp_mss) + else S_NUMBER_NONZERO("tcp-auth-query-timeout:", tcp_auth_query_timeout) else S_NUMBER_NONZERO("tcp-idle-timeout:", tcp_idle_timeout) else S_NUMBER_NONZERO("max-reuse-tcp-queries:", max_reuse_tcp_queries) else S_NUMBER_NONZERO("tcp-reuse-timeout:", tcp_reuse_timeout) @@ -1011,6 +1013,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_YNO(opt, "udp-upstream-without-downstream", udp_upstream_without_downstream) else O_DEC(opt, "tcp-mss", tcp_mss) else O_DEC(opt, "outgoing-tcp-mss", outgoing_tcp_mss) + else O_DEC(opt, "tcp-auth-query-timeout", tcp_auth_query_timeout) else O_DEC(opt, "tcp-idle-timeout", tcp_idle_timeout) else O_DEC(opt, "max-reuse-tcp-queries", max_reuse_tcp_queries) else O_DEC(opt, "tcp-reuse-timeout", tcp_reuse_timeout) diff --git a/util/config_file.h b/util/config_file.h index 8b629d1dd..524e648fe 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -97,6 +97,8 @@ struct config_file { size_t max_reuse_tcp_queries; /** timeout for REUSE entries in milliseconds. */ int tcp_reuse_timeout; + /** timeout in milliseconds for TCP queries to auth servers. */ + int tcp_auth_query_timeout; /** tcp upstream queries (no UDP upstream queries) */ int tcp_upstream; /** udp upstream enabled when no UDP downstream is enabled (do_udp no)*/ diff --git a/util/configlexer.c b/util/configlexer.c index 6f6dc4f45..fac54a193 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -6378,3 +6378,7084 @@ void yyfree (void * ptr ) #line 675 "./util/configlexer.lex" + +#line 3 "" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +typedef uint64_t flex_uint64_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart(yyin ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#define YY_BUF_SIZE 16384 +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +extern yy_size_t yyleng; + +extern FILE *yyin, *yyout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + #define YY_LESS_LINENO(n) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, (yytext_ptr) ) + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + yy_size_t yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when yytext is formed. */ +static char yy_hold_char; +static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ +yy_size_t yyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = (char *) 0; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void yyrestart (FILE *input_file ); +void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); +void yy_delete_buffer (YY_BUFFER_STATE b ); +void yy_flush_buffer (YY_BUFFER_STATE b ); +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state (void ); + +static void yyensure_buffer_stack (void ); +static void yy_load_buffer_state (void ); +static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); + +#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); +YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); + +void *yyalloc (yy_size_t ); +void *yyrealloc (void *,yy_size_t ); +void yyfree (void * ); + +#define yy_new_buffer yy_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer(yyin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer(yyin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +typedef unsigned char YY_CHAR; + +FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; + +typedef int yy_state_type; + +extern int yylineno; + +int yylineno = 1; + +extern char *yytext; +#define yytext_ptr yytext + +static yy_state_type yy_get_previous_state (void ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +static int yy_get_next_buffer (void ); +static void yy_fatal_error (yyconst char msg[] ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + (yytext_ptr) -= (yy_more_len); \ + yyleng = (yy_size_t) (yy_cp - (yytext_ptr)); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; + +#define YY_NUM_RULES 348 +#define YY_END_OF_BUFFER 349 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static yyconst flex_int16_t yy_accept[3439] = + { 0, + 1, 1, 322, 322, 326, 326, 330, 330, 334, 334, + 1, 1, 338, 338, 342, 342, 349, 346, 1, 320, + 320, 347, 2, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 347, 322, 323, 323, 324, + 347, 326, 327, 327, 328, 347, 333, 330, 331, 331, + 332, 347, 334, 335, 335, 336, 347, 345, 321, 2, + 325, 345, 347, 341, 338, 339, 339, 340, 347, 342, + 343, 343, 344, 347, 346, 0, 1, 2, 2, 2, + 2, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 322, + 0, 326, 0, 333, 0, 330, 334, 0, 345, 0, + 2, 2, 345, 341, 0, 338, 342, 0, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 345, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 128, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 137, + 346, 346, 346, 346, 346, 346, 346, 345, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 112, 346, 319, + 346, 346, 346, 346, 346, 346, 346, 8, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 129, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 142, 346, 346, 345, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 312, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 345, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 67, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 244, 346, + 14, 15, 346, 19, 18, 346, 346, 228, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 135, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 226, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 3, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 345, 346, 346, 346, 346, 346, 346, 346, + 306, 346, 346, 305, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 329, 346, 346, 346, 346, 346, 346, 346, 346, + 66, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 70, 346, 275, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 313, + 314, 346, 346, 346, 346, 346, 346, 346, 71, 346, + 346, 136, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 132, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 215, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 21, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 161, + 346, 346, 346, 346, 345, 329, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 110, 346, 346, + 346, 346, 346, 346, 346, 283, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 185, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 160, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 109, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 35, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 36, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 68, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 134, 346, 346, 345, + 346, 346, 346, 346, 346, 127, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 69, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 248, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 186, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 57, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 266, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 61, 346, 62, 346, 346, 346, 346, 346, 113, 346, + 114, 346, 346, 346, 346, 111, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 7, 346, 346, + 346, 345, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 237, 346, 346, 346, 346, 163, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 249, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 48, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 58, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 207, 346, 206, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 16, 17, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 72, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 214, 346, 346, 346, 346, 346, + + 346, 116, 346, 115, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 198, 346, + 346, 346, 346, 346, 346, 346, 346, 143, 346, 346, + 345, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 104, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 92, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 227, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 97, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 65, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 201, 202, 346, + 346, 346, 277, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 6, 346, 346, 346, + 346, 346, 346, 296, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 281, 346, 346, 346, 346, 346, 346, 307, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 45, 346, 346, 346, 346, 47, 346, 346, + 346, 93, 346, 346, 346, 346, 346, 55, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 345, 346, 194, + 346, 346, 346, 138, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 219, 346, 195, 346, 346, 346, + 234, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 56, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 140, 121, 346, 122, 346, 346, 346, 120, + 346, 346, 346, 346, 346, 346, 346, 346, 158, 346, + 346, 53, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 265, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 196, 346, + 346, 346, 346, 346, 199, 346, 205, 346, 346, 346, + 346, 346, 346, 233, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 108, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 133, + + 346, 346, 346, 346, 346, 346, 346, 63, 346, 346, + 346, 29, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 20, 346, 346, 346, 346, 346, 346, + 30, 39, 346, 168, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 345, + 346, 346, 346, 346, 346, 346, 80, 82, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 285, 346, 346, 346, 346, 245, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 123, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 157, + 346, 49, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 300, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 162, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 294, 346, 346, 346, + 225, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 310, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 179, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 117, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 174, 346, 187, 346, 346, 346, + 346, 346, 346, 345, 346, 146, 346, 346, 346, 346, + 346, 103, 346, 346, 346, 346, 217, 346, 346, 346, + 346, 346, 346, 235, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 257, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 139, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 178, 346, 346, 346, + + 346, 346, 346, 83, 346, 84, 346, 346, 346, 346, + 346, 64, 303, 346, 346, 346, 346, 346, 91, 188, + 346, 208, 346, 238, 346, 346, 200, 278, 346, 346, + 346, 346, 346, 346, 76, 346, 190, 346, 346, 346, + 346, 346, 9, 346, 346, 346, 346, 346, 107, 346, + 346, 346, 346, 270, 346, 346, 346, 346, 216, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 345, + 346, 346, 346, 346, 177, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 164, 346, 284, 346, 346, + 346, 346, 346, 256, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 229, 346, 346, 346, 346, + 346, 276, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 304, 346, 189, 346, 346, 346, 346, 346, + 346, 346, 346, 75, 77, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 106, 346, 346, 346, 346, 268, + 346, 346, 346, 346, 280, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 221, 37, 31, + 33, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 38, 346, 32, 34, 346, 346, 346, 346, + 346, 346, 346, 346, 102, 346, 346, 346, 346, 346, + 346, 346, 346, 345, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 223, 220, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 74, 346, 346, 346, 141, + + 346, 124, 346, 346, 346, 346, 346, 346, 346, 346, + 159, 50, 346, 346, 346, 337, 13, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 298, 346, 301, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 12, 346, 346, 22, 346, 346, 346, 346, 346, + 274, 346, 346, 346, 346, 282, 346, 346, 346, 78, + 346, 231, 346, 346, 346, 346, 346, 222, 346, 346, + 73, 346, 346, 346, 346, 346, 23, 346, 346, 46, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 173, 172, 346, 346, 337, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 224, 218, 346, 236, + 346, 346, 286, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 85, 346, 346, 346, 346, + 269, 346, 346, 346, 346, 204, 346, 346, 346, 346, + 346, 230, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 308, 309, 170, 346, 346, 79, 346, + 346, 346, 346, 180, 346, 346, 346, 118, 119, 346, + 346, 346, 25, 346, 346, 165, 346, 167, 346, 209, + + 346, 346, 346, 346, 171, 346, 346, 346, 346, 239, + 346, 346, 346, 346, 346, 346, 346, 148, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 247, 346, 346, 346, 346, 346, 346, 346, 317, 346, + 27, 346, 279, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 89, 210, 346, + 346, 267, 346, 302, 346, 203, 346, 346, 346, 346, + 346, 59, 346, 346, 346, 346, 346, 346, 4, 346, + 346, 346, 346, 131, 147, 346, 346, 346, 184, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 242, 40, 41, + 346, 346, 346, 346, 346, 346, 346, 287, 346, 346, + 346, 346, 346, 346, 346, 255, 346, 346, 346, 346, + 346, 346, 346, 346, 213, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 88, 346, 60, + 273, 346, 243, 346, 346, 346, 346, 346, 11, 346, + 346, 346, 346, 346, 346, 346, 346, 130, 346, 346, + 346, 346, 211, 94, 346, 346, 43, 346, 346, 346, + 346, 346, 346, 346, 346, 176, 346, 346, 346, 346, + 346, 346, 346, 150, 346, 346, 346, 346, 246, 346, + + 346, 346, 346, 346, 254, 346, 346, 346, 346, 144, + 346, 346, 346, 125, 126, 346, 346, 346, 96, 100, + 95, 346, 346, 346, 346, 86, 346, 346, 346, 346, + 346, 346, 10, 346, 346, 346, 346, 346, 271, 311, + 346, 346, 346, 346, 346, 316, 42, 346, 346, 346, + 346, 346, 175, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 101, 99, + 346, 54, 346, 346, 87, 299, 346, 346, 346, 346, + 24, 346, 346, 346, 346, 346, 197, 346, 346, 346, + + 346, 346, 212, 346, 346, 346, 346, 346, 346, 346, + 346, 193, 346, 346, 166, 81, 346, 346, 346, 346, + 346, 288, 346, 346, 346, 346, 346, 346, 346, 251, + 346, 346, 250, 145, 346, 346, 98, 51, 346, 151, + 152, 155, 156, 153, 154, 90, 297, 346, 346, 272, + 346, 346, 346, 26, 346, 169, 346, 346, 346, 346, + 192, 346, 241, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 182, 181, 44, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 295, 346, + 346, 346, 346, 105, 346, 240, 346, 264, 292, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 318, 346, 52, 5, 346, 346, 232, 346, 346, 293, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 252, + 28, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 253, 346, 346, 346, 149, 346, 346, + 346, 346, 346, 346, 346, 346, 183, 346, 191, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 289, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 315, 346, 346, 260, + 346, 346, 346, 346, 346, 290, 346, 346, 346, 346, + 346, 346, 291, 346, 346, 346, 258, 346, 261, 262, + 346, 346, 346, 346, 346, 259, 263, 0 + } ; + +static yyconst flex_int32_t yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 5, 6, 1, 1, 1, 7, 1, + 1, 1, 1, 1, 8, 1, 1, 1, 9, 1, + 10, 11, 1, 12, 1, 1, 1, 13, 1, 1, + 1, 1, 1, 1, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 1, 40, 1, 1, 1, 1, 41, 42, 43, 44, + + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static yyconst flex_int32_t yy_meta[67] = + { 0, + 1, 2, 3, 4, 5, 1, 6, 1, 1, 1, + 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1 + } ; + +static yyconst flex_int16_t yy_base[3457] = + { 0, + 0, 0, 64, 67, 70, 72, 78, 84, 89, 92, + 131, 137, 112, 118, 123, 142, 429, 383, 96, 9825, + 9825, 9825, 160, 185, 116, 183, 229, 132, 175, 173, + 232, 50, 66, 120, 263, 275, 151, 323, 134, 375, + 416, 286, 308, 283, 126, 237, 374, 9825, 9825, 9825, + 95, 372, 9825, 9825, 9825, 186, 361, 373, 9825, 9825, + 9825, 258, 309, 9825, 9825, 9825, 104, 293, 9825, 266, + 9825, 167, 351, 281, 311, 9825, 9825, 9825, 369, 268, + 9825, 9825, 9825, 146, 252, 378, 177, 0, 392, 0, + 0, 303, 270, 235, 317, 362, 344, 384, 178, 177, + + 226, 420, 377, 330, 379, 402, 414, 419, 410, 453, + 319, 367, 440, 429, 447, 454, 463, 459, 458, 489, + 495, 484, 474, 493, 499, 460, 500, 504, 510, 492, + 524, 520, 532, 525, 537, 529, 412, 533, 558, 539, + 531, 548, 565, 559, 250, 505, 587, 575, 574, 584, + 570, 580, 610, 601, 595, 604, 607, 614, 615, 208, + 294, 205, 236, 194, 670, 225, 180, 326, 158, 674, + 678, 0, 623, 152, 682, 176, 130, 653, 650, 680, + 661, 609, 675, 670, 676, 666, 671, 682, 672, 691, + 720, 697, 696, 703, 256, 726, 770, 731, 723, 714, + + 734, 737, 724, 718, 745, 740, 749, 759, 766, 728, + 773, 760, 772, 787, 819, 789, 762, 797, 339, 802, + 827, 378, 808, 443, 832, 805, 699, 829, 725, 838, + 836, 844, 843, 835, 852, 847, 866, 860, 849, 864, + 875, 874, 871, 865, 868, 911, 885, 878, 893, 892, + 894, 907, 908, 902, 913, 781, 909, 920, 921, 935, + 912, 937, 930, 919, 943, 950, 948, 956, 957, 938, + 958, 955, 953, 960, 954, 973, 969, 984, 994, 986, + 993, 1002, 989, 995, 988, 996, 999, 987, 1013, 1014, + 1022, 1026, 144, 1020, 1029, 1031, 1019, 1028, 1039, 1041, + + 1051, 1052, 1053, 1036, 1057, 1062, 1072, 1069, 1070, 1076, + 1079, 1088, 1055, 1067, 1065, 1082, 1092, 1098, 1087, 1100, + 1091, 1103, 1115, 1106, 1120, 1099, 1134, 1132, 1127, 1159, + 1136, 1128, 1148, 1189, 1154, 1143, 1162, 1185, 1169, 1155, + 1190, 1182, 1193, 1205, 1191, 1204, 1197, 1206, 1224, 1227, + 1215, 1231, 1229, 1220, 1226, 1233, 1249, 1258, 9825, 1242, + 1240, 1269, 1260, 1266, 1275, 1267, 1296, 1273, 1283, 1279, + 1291, 1298, 1344, 1392, 1293, 1311, 1301, 1304, 1307, 9825, + 1333, 1308, 1441, 1339, 1328, 1329, 1363, 1340, 1331, 1355, + 1364, 1356, 1300, 1359, 1367, 1390, 1403, 1400, 1379, 1389, + + 1406, 1419, 1410, 1306, 1438, 1427, 1437, 1431, 1383, 1434, + 1446, 1458, 1479, 1461, 1475, 1476, 1480, 1493, 1496, 1497, + 1508, 1503, 1486, 1502, 1518, 1515, 1522, 1528, 1573, 1484, + 1529, 1535, 1542, 1532, 1520, 1448, 1547, 1554, 1549, 1561, + 1562, 1556, 1579, 1401, 1567, 1583, 1570, 1575, 1597, 1580, + 1594, 1598, 1599, 1607, 1600, 1609, 1593, 1620, 1630, 1635, + 1637, 1634, 1643, 1645, 1627, 1651, 1631, 9825, 1654, 9825, + 1642, 1657, 1667, 1662, 1661, 1671, 1673, 9825, 1677, 1669, + 1679, 1688, 1706, 1696, 1712, 1681, 1703, 1708, 1718, 1711, + 1713, 1714, 1700, 1731, 1736, 1723, 1744, 1729, 1732, 1738, + + 1752, 1745, 1761, 1746, 1748, 1755, 1795, 9825, 1750, 1764, + 1771, 1779, 1773, 1797, 1789, 1800, 1828, 1793, 1812, 1824, + 1798, 1851, 1830, 1831, 1823, 1836, 1834, 1848, 1841, 1861, + 1850, 1857, 1858, 1852, 1860, 1875, 1881, 1872, 1879, 1889, + 9825, 1888, 1899, 1900, 1906, 1893, 1896, 1909, 1898, 1914, + 1892, 1930, 1922, 1938, 1918, 1936, 1943, 1919, 1939, 1952, + 1941, 1945, 1946, 1949, 1954, 1947, 1973, 1967, 1990, 1971, + 1988, 1993, 2000, 1996, 1997, 2004, 2006, 1981, 1991, 2009, + 2008, 1995, 1999, 2018, 2020, 2005, 2019, 2033, 2047, 2039, + 2026, 2045, 2035, 2053, 2036, 2040, 2052, 2042, 2048, 2064, + + 2077, 2059, 2086, 2065, 2092, 2069, 2074, 2100, 2101, 2085, + 2088, 9825, 2107, 2102, 2115, 2127, 2117, 2120, 2130, 2121, + 2125, 2129, 2128, 2134, 2140, 2146, 2142, 2152, 2138, 2156, + 2165, 2163, 2113, 2170, 2178, 2186, 2179, 2183, 2173, 2180, + 2184, 2177, 2198, 2190, 2217, 2211, 2199, 2215, 2232, 2206, + 2216, 2230, 2233, 2212, 2225, 2240, 2228, 2236, 2246, 2251, + 2241, 2258, 2274, 2271, 2264, 2257, 2281, 2267, 2285, 2272, + 2275, 2277, 2284, 2280, 2310, 2311, 2309, 2304, 2306, 2305, + 2307, 2312, 2313, 2330, 2327, 2329, 2332, 2322, 2331, 2342, + 2356, 2345, 2346, 2348, 2358, 2359, 2375, 2367, 2364, 2391, + + 2370, 2379, 2385, 2386, 2394, 2393, 2397, 2388, 2403, 2412, + 2407, 2424, 2426, 2415, 2425, 2436, 2421, 2437, 2428, 2340, + 2442, 2451, 2434, 2443, 2441, 2456, 2452, 2455, 2475, 2479, + 2485, 2481, 2478, 9825, 2470, 2495, 2472, 2490, 2484, 2493, + 2482, 2506, 2502, 2497, 2507, 2501, 2512, 2558, 9825, 2515, + 9825, 9825, 2521, 9825, 9825, 2535, 2541, 9825, 2548, 2537, + 2539, 2545, 2568, 2582, 2573, 2561, 2572, 2571, 2566, 2618, + 2596, 2581, 2594, 2611, 2565, 2613, 2621, 2605, 2616, 2629, + 2632, 2655, 2607, 2660, 2650, 2662, 2668, 2666, 2670, 2674, + 2672, 2676, 2663, 2664, 2680, 2688, 2685, 2701, 2712, 2699, + + 2702, 2717, 2703, 2707, 2698, 2690, 2722, 2723, 2737, 9825, + 2728, 2729, 2732, 2743, 2747, 2758, 2739, 2755, 2749, 2762, + 2763, 2759, 2750, 2760, 2764, 2754, 2777, 2756, 2773, 2787, + 2789, 2780, 2806, 2784, 9825, 2799, 2800, 2786, 2807, 2813, + 2802, 2814, 2801, 2818, 2829, 2804, 2852, 2847, 2835, 2832, + 2844, 2830, 2837, 2857, 9825, 2856, 2861, 2842, 2862, 2845, + 2871, 2872, 2874, 2877, 2893, 2880, 2882, 2887, 2881, 2911, + 2901, 2904, 2898, 2907, 2906, 2914, 2926, 2930, 2915, 2927, + 2925, 2938, 2931, 2928, 2939, 2934, 2941, 2944, 2955, 2974, + 2961, 2981, 2963, 2965, 2984, 2986, 2966, 2976, 2987, 2989, + + 2979, 2997, 3001, 3002, 2991, 3004, 3015, 3003, 3019, 3020, + 3028, 3021, 3040, 3026, 3045, 3042, 3029, 3032, 3053, 3035, + 9825, 3047, 3059, 9825, 3048, 3057, 3062, 3108, 3081, 3087, + 3078, 3063, 3069, 3095, 3088, 3098, 3096, 3118, 3107, 3122, + 3123, 3138, 3121, 3128, 3135, 3148, 3152, 3140, 3157, 3159, + 3167, 3172, 3100, 3162, 3176, 381, 3183, 3160, 3178, 3174, + 3224, 3179, 3180, 3188, 3184, 3189, 3208, 3206, 3207, 3201, + 3212, 3210, 3227, 3237, 3233, 3228, 3240, 3248, 3236, 3257, + 3254, 9825, 3267, 3265, 3259, 3271, 3269, 3284, 3275, 3270, + 9825, 3281, 3291, 3283, 3292, 3295, 3287, 3307, 3293, 3301, + + 3303, 3309, 3316, 3320, 3318, 3327, 3337, 9825, 3319, 9825, + 3339, 3338, 3336, 3330, 3345, 3342, 3340, 3356, 3365, 9825, + 9825, 3368, 3366, 3376, 3379, 3369, 3374, 3371, 9825, 3383, + 3412, 9825, 3390, 3405, 3395, 3393, 3398, 3397, 3406, 3416, + 3428, 3407, 3433, 3422, 3424, 3430, 9825, 3435, 3426, 3440, + 3443, 3434, 3454, 3461, 3464, 3456, 9825, 3446, 3460, 3453, + 3483, 3482, 3475, 3467, 3486, 3491, 3479, 3480, 3478, 3501, + 3487, 3506, 3513, 3510, 3512, 3525, 3516, 3527, 9825, 3518, + 3511, 3514, 3535, 3531, 3532, 3537, 3538, 3533, 3530, 3550, + 3552, 3556, 3561, 3554, 3557, 3568, 3573, 3575, 3570, 3581, + + 3571, 3582, 3576, 3577, 91, 3588, 3583, 3599, 3580, 9825, + 3602, 3611, 3615, 3617, 3603, 128, 3610, 3612, 3613, 3626, + 3632, 3634, 3616, 3640, 3651, 3639, 3652, 3654, 3659, 3646, + 3648, 3665, 3661, 3650, 3667, 3675, 3653, 9825, 3671, 3679, + 3677, 3685, 3699, 3687, 3714, 9825, 3704, 3709, 3711, 3713, + 3717, 3715, 3718, 3720, 3731, 3741, 3747, 3734, 3742, 3757, + 3745, 3756, 3744, 9825, 3764, 3760, 3768, 3755, 3780, 3766, + 3769, 3783, 3784, 3782, 3776, 3789, 3806, 3796, 3795, 3797, + 3802, 3811, 3812, 3810, 3816, 3823, 3819, 3829, 3837, 3833, + 3826, 3840, 3838, 9825, 3847, 3853, 3856, 3854, 3846, 3861, + + 3864, 3859, 3892, 3875, 3876, 3886, 3883, 3926, 3888, 3896, + 3911, 3913, 3915, 3916, 3917, 3919, 3928, 3929, 3938, 3936, + 3964, 3889, 3950, 3923, 3961, 3951, 3974, 3966, 3955, 3986, + 3988, 3982, 3981, 4007, 3997, 3976, 3947, 4006, 3999, 9825, + 4014, 4004, 3993, 4013, 4035, 4030, 4020, 4031, 4037, 4044, + 4040, 4041, 4047, 4049, 4054, 4048, 4058, 4065, 4063, 4064, + 4082, 4066, 4069, 4074, 4095, 4083, 4102, 4101, 9825, 4104, + 4100, 4093, 4099, 4113, 4097, 4114, 4118, 4110, 4122, 4126, + 4123, 4128, 4134, 4130, 4132, 4141, 4149, 4129, 4156, 4144, + 9825, 4160, 4157, 4159, 4153, 4161, 4165, 4177, 4192, 4191, + + 4197, 4200, 4183, 4202, 4199, 4190, 9825, 4207, 4212, 4209, + 4216, 4204, 4218, 4227, 4215, 4224, 9825, 4228, 4239, 4232, + 4230, 4225, 4226, 4261, 4252, 9825, 4265, 4264, 4242, 4243, + 4255, 4254, 4269, 4271, 4266, 4275, 4279, 4296, 4280, 4281, + 4298, 9825, 4290, 4315, 4294, 4307, 4310, 4305, 4311, 4329, + 4343, 4313, 4331, 4327, 9825, 4325, 4346, 4352, 4362, 4340, + 4338, 4354, 4356, 4371, 4366, 4360, 4377, 4365, 9825, 4381, + 4378, 4379, 4393, 4398, 4383, 4399, 4405, 4403, 4400, 4417, + 4420, 4421, 4414, 4411, 4427, 4432, 4422, 4430, 4449, 4438, + 4442, 4448, 4454, 4457, 4461, 4456, 4471, 4466, 4458, 4452, + + 4481, 4492, 4494, 4495, 4490, 4501, 9825, 4496, 4499, 4497, + 4487, 4498, 4493, 4489, 4508, 4511, 4516, 4519, 4535, 4530, + 4522, 4550, 4552, 4528, 4555, 4532, 4534, 4549, 4559, 4546, + 4554, 4542, 4571, 4567, 4568, 4563, 4575, 4577, 4578, 4598, + 4581, 4587, 4590, 4591, 4593, 4576, 4604, 4611, 4618, 4603, + 4613, 4614, 4628, 4629, 4630, 4638, 4631, 4634, 4637, 4661, + 9825, 4633, 4647, 4639, 4648, 4656, 4673, 4671, 4687, 4669, + 4678, 4681, 4685, 4688, 4677, 4675, 4700, 4690, 4706, 4721, + 9825, 4704, 9825, 4702, 4720, 4727, 4711, 4712, 9825, 4726, + 9825, 4731, 4730, 4719, 4724, 9825, 4738, 4739, 4736, 4755, + + 4749, 4743, 4757, 4752, 4758, 4770, 4766, 4785, 4765, 4763, + 4779, 4778, 4768, 4797, 4795, 4792, 4784, 4799, 4817, 4816, + 4807, 4822, 4806, 4818, 4831, 4813, 4833, 9825, 4839, 4840, + 4837, 4830, 4834, 4849, 4851, 4854, 4847, 4874, 4877, 4864, + 4865, 4883, 4878, 4881, 4869, 4891, 4895, 4899, 4897, 4908, + 9825, 4892, 4888, 4902, 4901, 9825, 4918, 4912, 4924, 4929, + 4926, 4914, 4916, 4934, 4941, 4920, 4943, 4946, 4968, 4951, + 4949, 4969, 9825, 4953, 4970, 4952, 4957, 4983, 4990, 4995, + 4987, 4993, 4999, 4996, 4998, 5005, 4989, 5009, 5004, 5008, + 5010, 5013, 5034, 5014, 5006, 5037, 5043, 5041, 5026, 5027, + + 5030, 5035, 5038, 5045, 5040, 5053, 5056, 5061, 5062, 9825, + 5070, 5072, 5079, 5080, 5071, 5077, 5074, 5086, 5075, 9825, + 5095, 5083, 5107, 5102, 5115, 5109, 5111, 5104, 5099, 5123, + 5118, 5130, 5144, 5119, 9825, 5134, 9825, 5138, 5145, 5140, + 5147, 5146, 5150, 5166, 5170, 5165, 5160, 5177, 5181, 5183, + 5167, 5173, 5190, 5193, 5209, 5192, 5171, 5202, 5187, 5210, + 5204, 5211, 5208, 5232, 5228, 5229, 9825, 9825, 5215, 5226, + 5242, 5230, 5238, 5249, 5257, 5252, 5270, 5259, 5262, 5260, + 5295, 9825, 5266, 5267, 5274, 5287, 5235, 5285, 5298, 5305, + 5301, 5294, 5316, 5307, 9825, 5297, 5304, 5320, 5314, 5333, + + 5321, 9825, 5329, 9825, 5319, 5330, 5331, 5345, 5343, 5340, + 5346, 5348, 5354, 5357, 5362, 5364, 5379, 5365, 5385, 5366, + 5369, 5375, 5390, 5384, 5404, 5381, 5391, 5382, 9825, 5401, + 5395, 5412, 5414, 5418, 5420, 5417, 5406, 9825, 5427, 5432, + 5428, 5422, 5438, 5439, 5445, 5441, 5448, 5447, 5444, 5464, + 5465, 9825, 5454, 5459, 5474, 5468, 5471, 5484, 5470, 5491, + 5482, 9825, 5478, 5487, 5498, 5499, 5500, 5506, 5510, 5495, + 5497, 5502, 5514, 5523, 5525, 5522, 5524, 5529, 5533, 5539, + 5542, 5565, 5540, 5549, 5553, 5507, 5547, 9825, 5554, 5559, + 5563, 5567, 5580, 5569, 5592, 5584, 5598, 5581, 5599, 5602, + + 5594, 5595, 5613, 5614, 5607, 5620, 9825, 5622, 5606, 5632, + 5610, 5628, 5636, 5619, 5633, 5644, 5637, 5627, 5651, 5660, + 5662, 5658, 5678, 5649, 5650, 5653, 5675, 5654, 9825, 5698, + 5672, 5688, 5655, 5693, 5694, 5711, 5699, 5687, 5689, 5712, + 5696, 5726, 5713, 5719, 5728, 5732, 5723, 9825, 9825, 5742, + 5720, 5735, 9825, 5739, 5730, 5757, 5747, 5758, 5740, 5749, + 5766, 5756, 5753, 5776, 5755, 5770, 9825, 5782, 5794, 5775, + 5789, 5799, 5803, 9825, 5788, 5804, 5798, 5806, 5792, 5790, + 5793, 5815, 5821, 5817, 5814, 5828, 5823, 5841, 5825, 5831, + 5839, 9825, 5833, 5842, 5844, 5847, 5838, 5848, 9825, 5858, + + 5874, 5860, 5873, 5872, 5882, 5885, 5886, 5883, 5871, 5880, + 5876, 5888, 5891, 5903, 5901, 5899, 5910, 5909, 5918, 5927, + 5932, 5930, 9825, 5926, 5940, 5919, 5942, 9825, 5943, 5968, + 5937, 9825, 5945, 5921, 5944, 5953, 5960, 9825, 5961, 5971, + 5967, 5957, 5986, 5963, 5991, 5970, 5976, 5972, 5981, 9825, + 5995, 5992, 6000, 9825, 5998, 6009, 6014, 6015, 5997, 6026, + 6023, 6025, 6027, 6022, 9825, 6034, 9825, 6032, 6028, 6042, + 9825, 6036, 6052, 6041, 6045, 6038, 6066, 6072, 6073, 6051, + 6060, 6074, 6063, 6065, 6078, 6089, 6090, 6068, 6079, 6096, + 6098, 9825, 6117, 6101, 6111, 6104, 6121, 6123, 6115, 6109, + + 6128, 6113, 9825, 9825, 6134, 9825, 6140, 6136, 6142, 9825, + 6147, 6150, 6170, 6149, 6167, 6169, 6172, 6165, 9825, 6175, + 6177, 9825, 6157, 6176, 6186, 6181, 6179, 6163, 6210, 6203, + 6193, 6204, 6205, 6206, 6207, 6196, 6209, 6223, 9825, 6198, + 6230, 6228, 6227, 6234, 6238, 6232, 6255, 6243, 9825, 6259, + 6245, 6248, 6268, 6269, 9825, 6262, 9825, 6265, 6272, 6282, + 6275, 6278, 6289, 9825, 6286, 6287, 6306, 6285, 6302, 6315, + 6313, 6314, 6304, 6300, 6328, 6321, 6312, 6323, 6337, 6343, + 9825, 6338, 6340, 6336, 6355, 6344, 6341, 6348, 6353, 6364, + 6342, 6381, 6372, 6365, 6373, 6375, 6385, 6390, 6378, 9825, + + 6398, 6404, 6388, 6418, 6399, 6405, 6408, 9825, 6415, 6423, + 6424, 9825, 6417, 6419, 6431, 6443, 6434, 6435, 6432, 6438, + 6446, 6449, 6466, 9825, 6456, 6457, 6454, 6467, 6473, 6476, + 9825, 9825, 6483, 9825, 6480, 6465, 6482, 6490, 6479, 6505, + 6511, 6509, 6519, 6501, 6517, 6522, 6510, 6506, 6531, 6512, + 6556, 6535, 6545, 6539, 6547, 6533, 9825, 9825, 6543, 6558, + 6554, 6564, 6566, 6565, 6560, 6562, 6570, 6587, 6568, 6571, + 6601, 9825, 6595, 6586, 6603, 6589, 9825, 6583, 6612, 6596, + 6605, 6613, 6611, 6615, 6621, 6622, 6628, 6624, 6633, 6638, + 6647, 6635, 6639, 6651, 6640, 6664, 6658, 6654, 6643, 9825, + + 6665, 6656, 6668, 6666, 6670, 6682, 6655, 6692, 6684, 9825, + 6691, 9825, 6695, 6693, 6709, 6710, 6713, 6718, 6714, 6711, + 6716, 6733, 6725, 6727, 6745, 6729, 6734, 6735, 6754, 6756, + 6758, 6759, 6761, 9825, 6762, 6743, 6744, 6757, 6777, 6778, + 6760, 6780, 6781, 6797, 6783, 6795, 6801, 6802, 6789, 6804, + 6792, 6806, 6796, 9825, 6807, 6811, 6816, 6814, 6819, 6826, + 6818, 6849, 6817, 6833, 6836, 6853, 9825, 6839, 6842, 6856, + 9825, 6847, 6845, 6843, 6869, 6857, 6870, 6866, 6860, 6876, + 9825, 6886, 6879, 6883, 6887, 6893, 6894, 6878, 6906, 6900, + 6913, 6905, 9825, 6924, 6910, 6936, 6938, 6919, 6932, 6926, + + 6949, 6903, 9825, 6950, 6952, 6933, 6963, 6966, 6946, 6965, + 6969, 6973, 6981, 6958, 6974, 6985, 6982, 6989, 6990, 6993, + 6992, 6994, 7000, 7007, 9825, 6977, 9825, 7013, 7027, 7008, + 7030, 7014, 7035, 7032, 7024, 9825, 7026, 7029, 7043, 7033, + 7038, 9825, 7040, 7060, 7053, 7065, 9825, 7058, 7073, 7062, + 7069, 7083, 7085, 9825, 7084, 7087, 7088, 7096, 7099, 7089, + 7097, 7092, 7100, 7095, 7104, 7102, 7129, 7137, 7122, 7133, + 9825, 7131, 7139, 7140, 7141, 7134, 7144, 7127, 7148, 7150, + 7159, 9825, 7171, 7158, 7161, 7168, 7179, 7164, 7185, 7160, + 7186, 7175, 7170, 7177, 7195, 7180, 9825, 7202, 7199, 7213, + + 7226, 7216, 7223, 9825, 7221, 9825, 7217, 7232, 7234, 7209, + 7238, 9825, 9825, 7242, 7243, 7244, 7247, 7240, 9825, 9825, + 7254, 9825, 7245, 9825, 7241, 7259, 9825, 9825, 7272, 7252, + 7264, 7279, 7282, 7280, 9825, 7288, 9825, 7294, 7291, 7281, + 7271, 7290, 9825, 7304, 7298, 7314, 7315, 7303, 9825, 7307, + 7305, 7311, 7318, 9825, 7310, 7332, 7317, 7321, 9825, 7345, + 7313, 7342, 7331, 7343, 7350, 7359, 7337, 7353, 7356, 7360, + 7364, 7369, 7366, 7375, 7381, 7385, 7390, 7387, 7379, 7395, + 7402, 7404, 7398, 7393, 7406, 7401, 7388, 7407, 7419, 7416, + 7438, 7439, 7430, 7432, 7440, 7437, 7431, 7448, 7434, 7436, + + 7442, 7443, 7446, 7457, 7469, 7461, 7473, 7464, 7488, 7480, + 7493, 7489, 7491, 7495, 9825, 7484, 7481, 7474, 7520, 7512, + 7500, 7529, 7528, 7531, 7535, 9825, 7537, 9825, 7539, 7524, + 7530, 7525, 7533, 9825, 7550, 7527, 7551, 7554, 7567, 7559, + 7578, 7562, 7565, 7566, 7586, 9825, 7585, 7577, 7568, 7589, + 7588, 9825, 7593, 7596, 7581, 7601, 7614, 7607, 7606, 7609, + 7615, 7611, 7632, 7635, 7617, 7625, 7633, 7640, 7645, 7652, + 7638, 7646, 7636, 7654, 7648, 7649, 7651, 7672, 7682, 7674, + 7683, 7686, 9825, 7670, 9825, 7678, 7673, 7679, 7688, 7697, + 7698, 7700, 7704, 9825, 9825, 7701, 7714, 7707, 7711, 7715, + + 7722, 7725, 7724, 7728, 9825, 7730, 7742, 7737, 7727, 9825, + 7741, 7738, 7750, 7761, 9825, 7759, 7753, 7772, 7774, 7760, + 7775, 7773, 7781, 7766, 7780, 7764, 7794, 9825, 9825, 9825, + 9825, 7795, 7788, 7804, 7799, 7800, 7805, 7807, 7809, 7820, + 7808, 7815, 9825, 7824, 9825, 9825, 7833, 7839, 7832, 7843, + 7841, 7806, 7845, 7842, 9825, 7847, 7851, 7853, 7852, 7861, + 7863, 7859, 7865, 7882, 7880, 7888, 7877, 7878, 7902, 7894, + 7897, 7885, 7901, 7903, 7908, 9825, 9825, 7904, 7910, 7913, + 7918, 7914, 7927, 7920, 7941, 7935, 7933, 7940, 7936, 7942, + 7931, 7947, 7953, 7959, 7943, 9825, 7965, 7966, 7954, 9825, + + 7961, 9825, 7970, 7978, 7967, 7974, 7980, 7981, 7994, 7997, + 9825, 9825, 7986, 8001, 8003, 9825, 9825, 7992, 7998, 7996, + 8020, 8019, 8008, 8023, 8014, 8034, 8021, 9825, 8022, 9825, + 8024, 8035, 8043, 8030, 8057, 8063, 8042, 8068, 8065, 8064, + 8069, 9825, 8066, 8067, 9825, 8073, 8076, 8077, 8071, 8082, + 9825, 8087, 8092, 8078, 8086, 9825, 8089, 8107, 8112, 9825, + 8118, 9825, 8100, 8116, 8113, 8128, 8114, 9825, 8102, 8129, + 9825, 8131, 8132, 8133, 8137, 8138, 9825, 8135, 8143, 9825, + 8146, 8142, 8153, 8167, 8156, 8168, 8159, 8157, 8160, 8181, + 8179, 8178, 9825, 9825, 8190, 8184, 73, 8196, 8177, 8183, + + 8187, 8186, 8195, 8193, 8208, 8197, 9825, 9825, 8210, 9825, + 8213, 8222, 9825, 8201, 8228, 8232, 8229, 8236, 8239, 8223, + 8224, 8244, 8240, 8258, 8248, 8245, 8268, 8282, 8283, 8260, + 8280, 8285, 8289, 8291, 8293, 8281, 8295, 8278, 8275, 8299, + 8296, 8306, 8305, 8309, 8310, 9825, 8334, 8335, 8336, 8322, + 9825, 8343, 8337, 8345, 8341, 9825, 8347, 8342, 8349, 8350, + 8356, 9825, 8357, 8352, 8376, 8372, 8363, 8377, 8374, 8360, + 8378, 8384, 8390, 9825, 9825, 9825, 8392, 8395, 9825, 8396, + 8386, 8385, 8407, 9825, 8406, 8405, 8416, 9825, 9825, 8404, + 8421, 8427, 9825, 8415, 8403, 9825, 8432, 9825, 8418, 9825, + + 8433, 8441, 8448, 8431, 9825, 8442, 8437, 8443, 8477, 9825, + 8461, 8472, 8479, 8471, 8462, 8464, 8485, 9825, 8491, 8487, + 8488, 8494, 8484, 8489, 8476, 8495, 8505, 8518, 8506, 8525, + 9825, 8522, 8529, 8530, 8536, 8519, 8524, 8527, 9825, 8520, + 9825, 8541, 9825, 8546, 8547, 8544, 8561, 8556, 8557, 8569, + 8573, 8554, 8571, 8567, 8563, 8579, 8574, 9825, 9825, 8591, + 8592, 9825, 8581, 9825, 8595, 9825, 8594, 8597, 8604, 8598, + 8606, 9825, 8615, 8603, 8608, 8631, 8605, 8620, 9825, 8626, + 8629, 8630, 8634, 9825, 9825, 8625, 8651, 8654, 9825, 8638, + 8648, 8662, 8652, 8644, 8663, 8657, 8665, 8653, 8656, 8650, + + 8676, 8677, 8685, 8678, 8695, 8696, 8701, 9825, 9825, 9825, + 8694, 8687, 8713, 8710, 8708, 8718, 8709, 9825, 8712, 8716, + 8714, 8723, 8735, 8730, 8731, 9825, 8737, 8733, 8728, 8739, + 8732, 8744, 8740, 8759, 9825, 8761, 8765, 8767, 8770, 8776, + 8773, 8777, 8782, 8774, 8779, 8775, 8780, 9825, 8789, 9825, + 9825, 8791, 9825, 8771, 8795, 8794, 8797, 8814, 9825, 8796, + 8799, 8808, 8816, 8809, 8822, 8828, 8833, 9825, 8839, 8818, + 8832, 8842, 9825, 9825, 8840, 8848, 9825, 8850, 8857, 8849, + 8844, 8841, 8856, 8870, 8867, 9825, 8869, 8874, 8865, 8866, + 8876, 8875, 8889, 9825, 8890, 8888, 8884, 8899, 9825, 8891, + + 8894, 8906, 8908, 8900, 9825, 8915, 8918, 8933, 8925, 9825, + 8921, 8936, 8927, 9825, 9825, 8943, 8944, 8945, 9825, 9825, + 9825, 8953, 8950, 8942, 8958, 9825, 8959, 8975, 8980, 8962, + 8985, 8960, 9825, 8976, 8983, 8990, 8977, 8979, 9825, 9825, + 8974, 8978, 8991, 8997, 8989, 9825, 9825, 8986, 9007, 9022, + 9006, 9012, 9825, 9010, 9024, 9030, 9023, 9034, 9031, 9040, + 9033, 9038, 9054, 9052, 9049, 9044, 9053, 9051, 9059, 9077, + 9065, 9046, 9050, 9079, 9074, 9083, 9073, 9089, 9825, 9825, + 9087, 9825, 9097, 9093, 9825, 9825, 9098, 9103, 9105, 9107, + 9825, 9108, 9113, 9117, 9118, 9096, 9825, 9110, 9126, 9124, + + 9115, 9111, 9825, 9128, 9120, 9136, 9135, 9130, 9129, 9147, + 9152, 9825, 9144, 9161, 9825, 9825, 9146, 9162, 9154, 9166, + 9151, 9825, 9173, 9177, 9168, 9178, 9171, 9179, 9185, 9825, + 9181, 9175, 9825, 9825, 9195, 9198, 9825, 9825, 9189, 9825, + 9825, 9825, 9825, 9825, 9825, 9825, 9825, 9214, 9217, 9825, + 9205, 9221, 9223, 9825, 9227, 9825, 9206, 9222, 9226, 9216, + 9825, 9224, 9825, 9212, 9241, 9232, 9253, 9245, 9265, 9248, + 9250, 9249, 9254, 9246, 9259, 9275, 9273, 9278, 9268, 9286, + 9290, 9279, 9298, 9825, 9825, 9825, 9293, 9288, 9304, 9300, + 9314, 9318, 9321, 9322, 9305, 9313, 9320, 9332, 9334, 9317, + + 9328, 9357, 9340, 9326, 9351, 9358, 9348, 9362, 9825, 9363, + 9359, 9352, 9372, 9825, 9361, 9825, 9355, 9825, 9825, 9377, + 9379, 9383, 9375, 9392, 9397, 9382, 9395, 9386, 9388, 9411, + 9825, 9412, 9825, 9825, 9404, 9406, 9825, 9400, 9413, 9825, + 9409, 9423, 9415, 9403, 9424, 9427, 9440, 9442, 9448, 9825, + 9825, 9438, 9439, 9441, 9449, 9454, 9467, 9462, 9465, 9466, + 9472, 9461, 9483, 9825, 9479, 9486, 9482, 9825, 9492, 9476, + 9493, 9489, 9498, 9488, 9502, 9499, 9825, 9504, 9825, 9501, + 9524, 9525, 9515, 9518, 9527, 9542, 9541, 9545, 9825, 9523, + 9552, 9528, 9555, 9561, 9554, 9564, 9565, 9511, 9570, 9576, + + 9514, 9580, 9583, 9574, 9572, 9581, 9825, 9594, 9596, 9825, + 9601, 9604, 9597, 9599, 9611, 9825, 9595, 9610, 9613, 9624, + 9619, 9623, 9825, 9634, 9635, 9637, 9825, 9636, 9825, 9825, + 9642, 9639, 9646, 9648, 9649, 9825, 9825, 9825, 9705, 9712, + 9719, 9726, 9733, 9740, 9747, 102, 9754, 9761, 9768, 9775, + 9782, 9789, 9796, 9803, 9810, 9817 + } ; + +static yyconst flex_int16_t yy_def[3457] = + { 0, + 3438, 1, 3439, 3439, 3440, 3440, 3441, 3441, 3442, 3442, + 3443, 3443, 3444, 3444, 3445, 3445, 3438, 3446, 3438, 3438, + 3438, 3438, 3447, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3448, 3438, 3438, 3438, + 3448, 3449, 3438, 3438, 3438, 3449, 3450, 3438, 3438, 3438, + 3438, 3450, 3451, 3438, 3438, 3438, 3451, 3452, 3438, 3453, + 3438, 3452, 3452, 3454, 3438, 3438, 3438, 3438, 3454, 3455, + 3438, 3438, 3438, 3455, 3446, 3446, 3438, 3456, 3447, 3456, + 3447, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3448, + 3448, 3449, 3449, 3450, 3450, 3438, 3451, 3451, 3452, 3452, + 3453, 3453, 3452, 3454, 3454, 3438, 3455, 3455, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3452, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3438, 3438, 3446, 3438, 3438, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3452, 3452, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3452, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + + 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3452, 3446, 3438, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3438, 3438, 3446, 3438, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3452, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3452, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + + 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3438, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3438, + 3446, 3438, 3446, 3438, 3446, 3446, 3438, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3452, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3438, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3438, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3438, + + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3438, 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3438, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3438, 3438, 3446, 3446, 3452, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3438, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3438, 3438, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3438, 3438, 3446, + 3446, 3446, 3438, 3446, 3446, 3438, 3446, 3438, 3446, 3438, + + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, + 3446, 3438, 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, + 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3438, 3438, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, + + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3438, 3438, + 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3438, + 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, + 3446, 3438, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3438, 3438, 3446, 3446, 3438, 3438, 3446, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3446, 3446, 3438, + 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, + 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3438, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3438, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3438, 3438, 3446, 3446, 3438, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3446, 3446, 3438, 3446, 3438, 3438, + 3446, 3446, 3446, 3446, 3446, 3438, 3438, 0, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438 + } ; + +static yyconst flex_int16_t yy_nxt[9892] = + { 0, + 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, + 18, 18, 22, 24, 25, 26, 27, 28, 29, 18, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 18, 18, 18, 45, 46, + 24, 25, 26, 27, 28, 29, 18, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 18, 18, 18, 45, 48, 49, 50, 48, + 49, 50, 53, 54, 53, 54, 55, 119, 55, 58, + 59, 60, 61, 120, 22, 58, 59, 60, 61, 86, + 22, 64, 65, 66, 64, 65, 66, 87, 160, 160, + + 1311, 88, 85, 51, 119, 86, 51, 167, 167, 56, + 120, 56, 170, 75, 76, 77, 78, 62, 22, 75, + 76, 77, 78, 62, 22, 81, 82, 83, 67, 97, + 86, 67, 19, 20, 21, 69, 70, 71, 19, 20, + 21, 69, 70, 71, 81, 82, 83, 121, 108, 177, + 177, 79, 72, 159, 409, 86, 97, 79, 72, 86, + 137, 90, 84, 90, 90, 86, 90, 170, 109, 178, + 73, 86, 90, 86, 121, 108, 73, 176, 87, 72, + 159, 84, 88, 86, 130, 72, 112, 137, 110, 162, + 86, 175, 162, 173, 113, 109, 98, 170, 188, 91, + + 92, 93, 111, 99, 94, 114, 170, 100, 187, 95, + 101, 130, 86, 112, 86, 110, 86, 86, 96, 168, + 173, 113, 86, 98, 86, 188, 166, 92, 93, 111, + 99, 94, 114, 165, 100, 187, 95, 101, 85, 162, + 85, 85, 162, 85, 163, 96, 102, 161, 115, 85, + 103, 116, 189, 104, 181, 105, 106, 252, 117, 164, + 118, 164, 164, 292, 164, 86, 107, 90, 86, 90, + 90, 86, 90, 102, 86, 115, 122, 103, 116, 189, + 104, 181, 105, 106, 123, 117, 180, 118, 126, 86, + 124, 86, 127, 107, 125, 86, 156, 160, 160, 148, + + 157, 149, 86, 122, 158, 172, 128, 178, 129, 86, + 150, 123, 176, 180, 86, 126, 151, 124, 179, 127, + 175, 125, 86, 156, 152, 86, 148, 157, 149, 167, + 167, 158, 170, 128, 153, 129, 131, 150, 154, 155, + 132, 182, 86, 151, 133, 179, 328, 86, 168, 205, + 134, 152, 169, 135, 169, 169, 86, 169, 86, 184, + 136, 153, 86, 131, 195, 154, 155, 132, 182, 86, + 174, 133, 174, 174, 166, 174, 205, 134, 86, 85, + 135, 85, 85, 86, 85, 332, 184, 136, 138, 1165, + 85, 195, 139, 90, 183, 90, 90, 206, 90, 185, + + 165, 86, 140, 141, 90, 142, 86, 193, 194, 197, + 196, 163, 186, 161, 86, 138, 86, 86, 86, 139, + 86, 183, 86, 86, 206, 240, 185, 198, 3438, 140, + 141, 91, 142, 143, 193, 194, 144, 196, 190, 186, + 199, 86, 201, 145, 191, 200, 192, 146, 147, 86, + 334, 86, 240, 86, 198, 86, 207, 3438, 86, 86, + 143, 208, 3438, 144, 209, 190, 215, 199, 86, 201, + 145, 191, 200, 192, 146, 147, 202, 203, 211, 86, + 210, 212, 86, 207, 204, 228, 86, 3438, 208, 217, + 216, 209, 86, 86, 213, 214, 3438, 86, 86, 86, + + 225, 3438, 86, 202, 203, 211, 218, 210, 212, 226, + 220, 204, 228, 86, 221, 223, 217, 216, 227, 229, + 224, 213, 214, 86, 232, 230, 219, 225, 86, 253, + 222, 86, 86, 218, 86, 231, 226, 220, 86, 86, + 233, 221, 223, 86, 86, 227, 229, 224, 235, 86, + 234, 232, 230, 219, 237, 236, 253, 222, 238, 86, + 3438, 239, 231, 86, 86, 241, 245, 233, 86, 246, + 86, 86, 86, 3438, 242, 235, 86, 234, 86, 247, + 248, 237, 236, 243, 251, 238, 3438, 86, 239, 244, + 3438, 249, 241, 245, 257, 250, 246, 86, 86, 3438, + + 254, 242, 259, 261, 86, 258, 247, 248, 262, 86, + 243, 251, 267, 86, 86, 260, 244, 255, 249, 86, + 256, 257, 250, 86, 263, 266, 86, 254, 268, 259, + 261, 270, 258, 264, 86, 262, 277, 269, 272, 267, + 86, 271, 260, 86, 255, 265, 86, 256, 86, 86, + 3438, 263, 266, 86, 86, 268, 177, 177, 270, 3438, + 264, 3438, 170, 277, 269, 272, 3438, 273, 271, 3438, + 3438, 164, 265, 164, 164, 169, 164, 169, 169, 90, + 169, 90, 90, 174, 90, 174, 174, 274, 174, 86, + 3438, 276, 3438, 280, 273, 278, 281, 282, 283, 284, + + 86, 275, 279, 3438, 285, 86, 338, 3438, 3438, 86, + 86, 86, 286, 290, 86, 86, 291, 172, 276, 86, + 280, 86, 278, 281, 282, 283, 284, 287, 275, 279, + 86, 285, 340, 288, 289, 86, 86, 293, 86, 286, + 290, 294, 86, 291, 301, 303, 3438, 302, 306, 3438, + 307, 304, 308, 86, 305, 314, 310, 86, 295, 86, + 288, 289, 86, 86, 86, 86, 311, 86, 294, 3438, + 86, 301, 303, 86, 302, 306, 86, 307, 304, 86, + 309, 305, 314, 310, 86, 295, 296, 312, 86, 318, + 317, 297, 313, 311, 326, 370, 298, 315, 86, 86, + + 316, 86, 299, 300, 319, 86, 325, 309, 3438, 86, + 3438, 86, 86, 296, 312, 329, 318, 317, 297, 313, + 86, 326, 370, 298, 315, 327, 86, 316, 86, 299, + 300, 319, 320, 325, 330, 321, 86, 322, 337, 335, + 333, 86, 329, 342, 86, 331, 339, 86, 3438, 323, + 344, 324, 327, 336, 341, 3438, 3438, 3438, 86, 320, + 345, 3438, 321, 343, 322, 337, 86, 333, 86, 351, + 346, 86, 331, 339, 86, 86, 323, 86, 324, 347, + 336, 341, 86, 86, 348, 349, 86, 345, 86, 352, + 343, 86, 353, 356, 350, 354, 351, 346, 355, 86, + + 357, 364, 360, 86, 86, 86, 347, 86, 361, 362, + 86, 348, 349, 86, 86, 367, 352, 86, 358, 353, + 356, 350, 354, 359, 86, 355, 363, 357, 373, 360, + 369, 86, 86, 86, 368, 361, 362, 365, 366, 372, + 371, 86, 374, 375, 376, 378, 86, 86, 86, 3438, + 86, 86, 86, 363, 377, 381, 379, 369, 86, 86, + 86, 368, 380, 383, 365, 366, 372, 371, 3438, 86, + 375, 384, 378, 386, 86, 387, 86, 86, 382, 388, + 390, 377, 86, 379, 389, 3438, 391, 86, 385, 86, + 392, 394, 86, 86, 170, 86, 86, 86, 384, 86, + + 386, 395, 387, 396, 393, 382, 388, 390, 86, 398, + 397, 389, 86, 391, 3438, 385, 399, 392, 401, 403, + 405, 400, 402, 86, 404, 86, 86, 86, 86, 406, + 396, 393, 86, 86, 86, 86, 407, 397, 86, 408, + 3438, 86, 411, 399, 412, 401, 403, 413, 400, 402, + 410, 404, 86, 86, 415, 414, 406, 416, 86, 86, + 419, 86, 420, 407, 421, 86, 408, 86, 86, 411, + 86, 412, 417, 418, 413, 86, 422, 410, 86, 423, + 86, 415, 414, 426, 416, 424, 428, 431, 3438, 420, + 86, 86, 86, 427, 86, 429, 86, 432, 433, 417, + + 418, 86, 425, 422, 86, 435, 86, 434, 86, 86, + 426, 86, 424, 436, 431, 86, 438, 437, 86, 430, + 427, 86, 439, 445, 432, 433, 86, 86, 441, 425, + 86, 86, 435, 440, 434, 443, 442, 86, 86, 86, + 436, 446, 86, 438, 437, 86, 430, 447, 3438, 439, + 445, 448, 444, 3438, 86, 441, 3438, 455, 456, 86, + 440, 3438, 443, 442, 3438, 457, 86, 86, 463, 462, + 469, 86, 3438, 86, 447, 86, 467, 3438, 448, 444, + 449, 468, 86, 450, 455, 456, 464, 86, 451, 452, + 453, 454, 457, 86, 86, 463, 462, 469, 86, 465, + + 466, 86, 470, 3438, 458, 3438, 459, 449, 86, 478, + 450, 471, 476, 464, 472, 451, 452, 453, 454, 460, + 473, 86, 461, 479, 86, 477, 465, 466, 86, 86, + 86, 458, 86, 459, 474, 475, 86, 480, 471, 476, + 481, 472, 482, 86, 86, 86, 460, 473, 483, 461, + 479, 485, 477, 484, 86, 3438, 488, 493, 486, 86, + 487, 474, 475, 86, 480, 86, 86, 481, 86, 482, + 86, 489, 86, 490, 492, 483, 494, 495, 485, 86, + 484, 86, 491, 496, 493, 486, 507, 487, 86, 497, + 498, 3438, 499, 500, 505, 3438, 506, 86, 489, 86, + + 490, 492, 3438, 508, 495, 86, 86, 549, 86, 491, + 496, 501, 86, 562, 86, 509, 497, 498, 86, 499, + 500, 505, 86, 506, 502, 522, 523, 503, 525, 504, + 86, 526, 86, 527, 530, 86, 540, 86, 501, 86, + 86, 541, 509, 86, 524, 86, 86, 86, 528, 539, + 86, 502, 522, 523, 503, 525, 504, 510, 526, 511, + 527, 530, 545, 3438, 529, 512, 538, 86, 86, 513, + 86, 524, 86, 544, 514, 528, 539, 515, 86, 170, + 3438, 542, 546, 86, 510, 547, 511, 548, 543, 545, + 567, 529, 512, 538, 86, 86, 513, 550, 86, 551, + + 544, 514, 86, 86, 515, 516, 86, 517, 542, 546, + 553, 557, 547, 612, 548, 543, 552, 555, 86, 554, + 518, 558, 86, 519, 550, 520, 551, 521, 86, 86, + 3438, 86, 516, 559, 517, 556, 560, 561, 557, 86, + 86, 3438, 86, 552, 555, 86, 554, 518, 558, 86, + 519, 563, 520, 3438, 521, 531, 532, 566, 86, 564, + 559, 565, 556, 560, 561, 533, 86, 534, 535, 536, + 86, 568, 537, 86, 569, 570, 86, 86, 563, 3438, + 86, 604, 531, 532, 566, 86, 564, 86, 565, 571, + 572, 598, 533, 573, 534, 535, 536, 86, 568, 537, + + 86, 569, 570, 574, 575, 3438, 576, 577, 604, 3438, + 578, 579, 3438, 581, 86, 86, 584, 585, 86, 86, + 573, 3438, 3438, 86, 582, 86, 3438, 603, 580, 586, + 574, 575, 86, 576, 577, 86, 86, 578, 579, 583, + 581, 86, 86, 584, 585, 588, 587, 86, 589, 590, + 599, 582, 600, 602, 86, 580, 586, 86, 601, 86, + 591, 86, 592, 3438, 607, 605, 583, 86, 86, 610, + 606, 86, 588, 587, 86, 589, 590, 599, 608, 600, + 602, 86, 616, 615, 613, 601, 86, 591, 86, 592, + 593, 607, 605, 86, 609, 86, 610, 606, 594, 595, + + 86, 86, 596, 597, 611, 608, 86, 618, 614, 86, + 615, 613, 86, 617, 86, 620, 621, 593, 86, 86, + 622, 609, 86, 626, 624, 594, 595, 619, 623, 596, + 597, 611, 86, 86, 618, 614, 86, 86, 86, 86, + 617, 625, 620, 621, 627, 628, 86, 622, 86, 3438, + 626, 624, 629, 630, 619, 623, 632, 3438, 631, 86, + 634, 3438, 633, 3438, 635, 636, 86, 637, 625, 86, + 86, 627, 628, 86, 86, 638, 86, 639, 642, 629, + 630, 86, 86, 632, 86, 631, 3438, 634, 640, 633, + 86, 635, 636, 86, 637, 641, 86, 644, 653, 647, + + 86, 86, 638, 643, 639, 642, 86, 645, 86, 646, + 86, 648, 86, 650, 649, 640, 86, 651, 86, 652, + 86, 660, 641, 3438, 644, 653, 647, 86, 655, 654, + 643, 656, 661, 657, 645, 86, 646, 658, 648, 86, + 659, 649, 86, 663, 651, 86, 662, 86, 3438, 665, + 86, 86, 86, 86, 669, 655, 654, 86, 656, 661, + 657, 666, 86, 667, 658, 668, 664, 659, 86, 670, + 86, 86, 671, 662, 673, 86, 665, 86, 672, 674, + 675, 669, 684, 86, 86, 86, 3438, 86, 666, 86, + 667, 86, 668, 664, 86, 687, 670, 685, 686, 671, + + 86, 673, 3438, 86, 688, 672, 674, 675, 676, 684, + 86, 3438, 86, 677, 689, 678, 691, 690, 86, 698, + 694, 679, 687, 680, 685, 686, 681, 682, 86, 695, + 3438, 688, 86, 683, 86, 676, 86, 86, 703, 86, + 677, 689, 678, 691, 690, 692, 698, 694, 679, 693, + 680, 86, 696, 681, 682, 697, 695, 701, 699, 702, + 683, 706, 86, 86, 3438, 703, 705, 86, 700, 86, + 86, 704, 692, 86, 708, 86, 693, 709, 707, 696, + 86, 710, 697, 712, 701, 711, 702, 86, 706, 86, + 86, 86, 714, 705, 713, 700, 86, 86, 704, 86, + + 86, 708, 715, 716, 709, 707, 717, 718, 710, 719, + 712, 86, 711, 722, 86, 720, 721, 723, 86, 714, + 86, 713, 728, 724, 726, 3438, 735, 86, 86, 715, + 716, 86, 86, 717, 718, 86, 719, 86, 86, 170, + 725, 727, 720, 721, 723, 86, 729, 730, 86, 728, + 724, 726, 731, 86, 732, 734, 733, 86, 86, 737, + 739, 86, 743, 736, 3438, 738, 3438, 725, 727, 86, + 3438, 742, 740, 729, 730, 86, 741, 86, 86, 731, + 86, 732, 86, 733, 86, 86, 86, 739, 86, 743, + 736, 86, 738, 86, 744, 747, 750, 748, 742, 740, + + 751, 745, 749, 741, 746, 752, 86, 753, 754, 755, + 86, 756, 86, 757, 759, 760, 3438, 3438, 758, 764, + 86, 744, 747, 750, 761, 762, 763, 86, 745, 86, + 86, 746, 86, 765, 86, 86, 86, 766, 86, 86, + 767, 759, 760, 86, 86, 86, 764, 86, 86, 769, + 768, 761, 762, 763, 770, 771, 772, 86, 86, 86, + 765, 774, 773, 776, 766, 86, 775, 767, 3438, 778, + 779, 781, 86, 777, 86, 86, 769, 768, 86, 86, + 780, 86, 771, 772, 86, 783, 86, 86, 774, 773, + 776, 86, 86, 775, 782, 788, 778, 779, 86, 790, + + 777, 784, 791, 86, 86, 789, 785, 780, 86, 786, + 787, 794, 783, 86, 796, 795, 86, 792, 793, 3438, + 817, 782, 788, 797, 86, 86, 790, 86, 784, 791, + 798, 86, 789, 785, 801, 802, 786, 787, 794, 86, + 86, 86, 795, 799, 792, 793, 86, 803, 806, 804, + 797, 808, 86, 807, 86, 805, 86, 798, 810, 86, + 86, 801, 802, 811, 86, 800, 86, 86, 86, 86, + 799, 813, 809, 86, 803, 806, 804, 86, 808, 86, + 807, 86, 805, 812, 814, 86, 815, 816, 818, 3438, + 811, 86, 800, 819, 822, 86, 820, 821, 813, 809, + + 823, 826, 86, 824, 86, 828, 825, 829, 827, 86, + 812, 814, 86, 815, 816, 818, 86, 86, 86, 86, + 819, 822, 86, 86, 830, 86, 831, 823, 826, 86, + 824, 836, 833, 825, 829, 827, 832, 86, 86, 834, + 841, 837, 3438, 842, 835, 86, 843, 838, 850, 846, + 86, 86, 3438, 831, 86, 86, 86, 844, 836, 833, + 845, 839, 840, 832, 86, 847, 848, 86, 837, 86, + 842, 86, 86, 843, 838, 86, 846, 856, 854, 86, + 86, 849, 851, 855, 844, 86, 3438, 845, 839, 840, + 86, 852, 847, 848, 857, 858, 86, 86, 859, 860, + + 3438, 853, 861, 86, 856, 862, 86, 863, 849, 851, + 86, 86, 865, 86, 86, 864, 86, 866, 852, 86, + 86, 857, 858, 86, 86, 859, 860, 867, 853, 861, + 868, 869, 862, 870, 863, 871, 873, 875, 872, 865, + 874, 3438, 864, 86, 86, 86, 86, 912, 86, 86, + 86, 86, 86, 879, 867, 877, 878, 868, 869, 876, + 870, 86, 871, 873, 880, 872, 86, 874, 86, 86, + 86, 86, 882, 881, 884, 883, 3438, 891, 885, 86, + 879, 86, 877, 878, 86, 86, 876, 86, 886, 887, + 888, 880, 889, 890, 3438, 86, 893, 86, 86, 882, + + 881, 884, 883, 86, 891, 885, 86, 892, 895, 86, + 894, 897, 896, 900, 86, 886, 887, 888, 86, 889, + 890, 898, 901, 893, 86, 86, 903, 86, 899, 902, + 86, 3438, 86, 86, 892, 895, 86, 894, 897, 896, + 900, 904, 86, 905, 907, 906, 86, 909, 898, 901, + 915, 86, 911, 903, 86, 899, 902, 908, 910, 913, + 86, 3438, 917, 86, 86, 86, 914, 86, 904, 916, + 905, 907, 906, 86, 909, 86, 86, 915, 919, 911, + 86, 170, 86, 918, 908, 910, 913, 921, 920, 917, + 86, 86, 922, 914, 86, 86, 916, 924, 925, 926, + + 923, 927, 928, 3438, 929, 919, 930, 3438, 931, 86, + 918, 86, 933, 934, 86, 920, 936, 86, 86, 922, + 86, 86, 935, 86, 86, 925, 926, 923, 927, 86, + 932, 929, 86, 930, 86, 931, 86, 937, 938, 933, + 86, 86, 947, 936, 939, 86, 86, 3438, 3438, 935, + 948, 86, 3438, 3438, 86, 3438, 949, 932, 952, 950, + 86, 954, 3438, 3438, 937, 938, 951, 953, 3438, 947, + 3438, 939, 940, 961, 86, 941, 86, 948, 86, 942, + 86, 955, 943, 949, 86, 952, 950, 86, 954, 944, + 945, 958, 946, 951, 953, 956, 957, 86, 959, 940, + + 86, 973, 941, 960, 86, 86, 942, 86, 955, 943, + 86, 86, 86, 969, 970, 3438, 944, 945, 958, 946, + 86, 86, 956, 957, 971, 959, 983, 972, 973, 974, + 960, 962, 963, 86, 964, 86, 977, 965, 976, 3438, + 969, 970, 966, 978, 86, 975, 86, 980, 967, 968, + 86, 971, 86, 983, 972, 86, 974, 86, 962, 963, + 86, 964, 981, 977, 965, 976, 979, 982, 86, 966, + 978, 86, 975, 984, 980, 967, 968, 985, 3438, 986, + 3438, 987, 3438, 988, 991, 989, 3438, 993, 3438, 86, + 992, 990, 3438, 979, 86, 994, 995, 1006, 3438, 86, + + 984, 86, 86, 86, 985, 86, 986, 86, 987, 86, + 988, 86, 989, 86, 993, 86, 997, 992, 990, 86, + 996, 998, 994, 995, 86, 999, 1000, 86, 1001, 86, + 1002, 1004, 1005, 1003, 3438, 1008, 1012, 86, 86, 1007, + 86, 86, 86, 997, 1009, 1011, 86, 996, 998, 1010, + 1014, 86, 999, 1000, 1017, 1001, 86, 1002, 1004, 1005, + 1003, 86, 86, 1013, 1015, 1016, 1007, 86, 86, 1019, + 3438, 86, 1011, 1018, 1020, 1021, 86, 1024, 86, 1022, + 1023, 1017, 86, 1025, 1026, 1029, 86, 1028, 86, 86, + 1013, 1015, 1032, 86, 86, 86, 1019, 86, 86, 86, + + 1018, 86, 86, 86, 1024, 1027, 1022, 1023, 1030, 1031, + 1025, 1026, 86, 1033, 1028, 1034, 86, 1040, 3438, 86, + 1035, 1036, 1037, 86, 1038, 86, 86, 1042, 86, 1045, + 3438, 1041, 1027, 3438, 1039, 1030, 1031, 3438, 86, 86, + 86, 86, 1034, 86, 1040, 86, 86, 1035, 1036, 1037, + 1044, 1038, 86, 86, 1042, 1043, 1045, 86, 1041, 1046, + 1048, 1039, 1049, 1050, 1047, 1051, 1052, 1053, 86, 86, + 1056, 86, 1054, 1057, 86, 1058, 86, 1044, 1060, 1059, + 1055, 86, 1043, 86, 86, 3438, 86, 1048, 3438, 1049, + 1050, 86, 1051, 1052, 1053, 86, 86, 1056, 1067, 1054, + + 86, 86, 1058, 1061, 1062, 1060, 1059, 1055, 1063, 1064, + 86, 86, 1069, 86, 1065, 1066, 86, 1068, 1070, 86, + 86, 86, 1071, 3438, 1075, 1067, 86, 1079, 1072, 1073, + 1061, 1062, 86, 1074, 1076, 1063, 1064, 86, 3438, 1069, + 86, 1065, 1066, 86, 1068, 86, 86, 1078, 1084, 1071, + 86, 1075, 1077, 86, 86, 1072, 1073, 1081, 1080, 1082, + 1074, 1076, 1089, 1083, 86, 86, 86, 86, 1086, 86, + 86, 1085, 1087, 86, 1078, 1084, 1088, 86, 86, 1077, + 86, 1090, 1097, 86, 1081, 1080, 1082, 1091, 1092, 1093, + 1083, 1095, 3438, 1096, 86, 1086, 3438, 1094, 1085, 1087, + + 86, 3438, 86, 1088, 86, 86, 1101, 1098, 1104, 1097, + 1103, 1099, 1102, 86, 1091, 86, 1093, 1105, 86, 1100, + 86, 1106, 1108, 86, 1094, 86, 86, 3438, 86, 1107, + 86, 1110, 3438, 1101, 1098, 1109, 86, 1103, 1099, 1102, + 86, 86, 86, 86, 1105, 1112, 1100, 1115, 1106, 1113, + 1111, 1114, 1116, 1117, 86, 1119, 1107, 3438, 86, 86, + 86, 1118, 1109, 1120, 1121, 86, 1123, 86, 86, 3438, + 1122, 86, 1112, 1126, 86, 1138, 1113, 1111, 1114, 170, + 1117, 86, 1119, 1124, 86, 1125, 86, 86, 1118, 1127, + 1120, 1121, 86, 1123, 1135, 1128, 86, 1122, 86, 3438, + + 1126, 86, 86, 1136, 3438, 1137, 1139, 1162, 86, 3438, + 1124, 1140, 1125, 1143, 1145, 1141, 1127, 86, 3438, 1146, + 86, 1135, 1128, 1129, 1142, 1130, 86, 86, 3438, 1131, + 1136, 1132, 1137, 1139, 86, 86, 1133, 86, 1140, 86, + 1143, 1134, 1141, 1147, 1144, 1152, 86, 86, 1151, 1148, + 1129, 1142, 1130, 3438, 1149, 1153, 1131, 86, 1132, 1154, + 86, 86, 86, 1133, 3438, 1155, 1150, 86, 1134, 1163, + 1147, 1144, 1152, 1157, 86, 1151, 1148, 86, 1156, 86, + 1159, 1149, 1153, 1158, 3438, 1160, 1154, 86, 1164, 1161, + 1166, 86, 1155, 1150, 1167, 3438, 86, 1178, 86, 86, + + 1157, 86, 1181, 1177, 1169, 1156, 86, 1159, 1180, 1168, + 1158, 86, 1160, 86, 1179, 86, 1161, 86, 86, 86, + 3438, 1167, 86, 86, 1178, 1182, 1183, 86, 86, 1181, + 1177, 1169, 1185, 1184, 1188, 1180, 1168, 1170, 1187, 3438, + 86, 1179, 1171, 1186, 1172, 86, 86, 86, 1194, 86, + 1173, 86, 1182, 1183, 1189, 1174, 1175, 1190, 1191, 1185, + 1184, 3438, 1176, 86, 1170, 1187, 86, 86, 1192, 1171, + 1186, 1172, 86, 1195, 1197, 86, 86, 1173, 1193, 86, + 1198, 1189, 1174, 1175, 1190, 1191, 1196, 86, 1200, 1176, + 1199, 1202, 1203, 86, 1201, 1192, 86, 3438, 86, 1208, + + 1195, 1204, 1205, 3438, 86, 1193, 86, 1198, 86, 86, + 86, 1207, 1206, 1196, 86, 1200, 1209, 1199, 1210, 1203, + 86, 1201, 86, 86, 1211, 1212, 86, 1213, 1204, 1205, + 86, 86, 86, 1215, 86, 1214, 1218, 1216, 1207, 1206, + 86, 1217, 86, 1209, 1220, 1210, 86, 1221, 86, 3438, + 3438, 1211, 1212, 1224, 1213, 86, 1219, 86, 86, 86, + 1215, 1225, 1214, 1218, 1216, 1222, 86, 1228, 1217, 86, + 1223, 1226, 1227, 1229, 1221, 86, 86, 86, 86, 86, + 1224, 86, 1230, 1219, 86, 1231, 1234, 1232, 1225, 1233, + 1235, 3438, 1222, 3438, 1228, 86, 1237, 1223, 1226, 1227, + + 1229, 1236, 3438, 1241, 86, 86, 1242, 86, 86, 1230, + 86, 1238, 1231, 86, 1232, 86, 1233, 1235, 86, 1239, + 1243, 1244, 86, 1237, 1240, 1245, 1246, 1247, 1236, 86, + 1241, 1248, 86, 1242, 86, 1250, 86, 86, 1238, 1251, + 1252, 1254, 3438, 1249, 86, 86, 86, 1243, 1244, 1253, + 1256, 86, 1245, 1246, 1247, 86, 1255, 1258, 1248, 1257, + 1259, 86, 1260, 86, 1265, 86, 1251, 86, 1254, 86, + 1249, 1267, 86, 86, 86, 1261, 1253, 1256, 1262, 86, + 1264, 1263, 86, 1255, 1258, 86, 1257, 1259, 1266, 1260, + 1268, 1265, 86, 86, 1269, 86, 1270, 1271, 1267, 86, + + 86, 1272, 1261, 86, 1273, 1262, 86, 1264, 1263, 1274, + 1276, 1275, 1278, 1279, 86, 1266, 1277, 86, 86, 86, + 1280, 86, 86, 1270, 1271, 86, 86, 1281, 1272, 1282, + 86, 1273, 1283, 1284, 1285, 1286, 1274, 1276, 1275, 1278, + 86, 1287, 1289, 1277, 1291, 86, 1288, 3438, 1290, 86, + 86, 86, 86, 86, 1281, 86, 1282, 86, 1292, 1293, + 1284, 1295, 1286, 1294, 86, 1296, 86, 1297, 1287, 86, + 86, 86, 86, 1288, 86, 1290, 86, 86, 1299, 1298, + 1303, 1301, 1304, 1307, 1300, 1292, 1293, 3438, 1295, 86, + 1294, 86, 1296, 86, 1297, 86, 86, 1305, 1306, 1302, + + 86, 1310, 1309, 3438, 1313, 1299, 1298, 86, 1301, 86, + 86, 1300, 86, 1308, 86, 86, 86, 1315, 1312, 86, + 86, 86, 86, 1317, 1305, 1306, 1302, 86, 1310, 1309, + 1314, 1313, 1318, 1316, 1319, 1320, 1321, 1323, 86, 1322, + 1308, 86, 170, 1324, 1315, 1312, 1326, 1328, 1327, 86, + 86, 86, 86, 1325, 86, 86, 86, 1314, 1329, 1318, + 1316, 1319, 1320, 1321, 1323, 86, 1322, 1330, 1332, 1331, + 1324, 86, 1334, 86, 1335, 1327, 1333, 3438, 86, 86, + 1325, 1338, 1336, 1342, 1341, 86, 1339, 86, 1337, 86, + 86, 86, 86, 86, 1330, 1332, 1331, 3438, 86, 1334, + + 86, 1335, 1340, 1333, 86, 1343, 86, 1344, 1338, 1336, + 86, 1341, 1345, 1339, 86, 1337, 86, 1346, 86, 1347, + 1352, 3438, 1353, 3438, 86, 1355, 86, 3438, 1354, 1340, + 3438, 1348, 1343, 1358, 1344, 3438, 1356, 3438, 86, 1345, + 1349, 1357, 1350, 86, 1346, 1351, 1347, 1352, 86, 1353, + 86, 1359, 86, 86, 86, 1354, 86, 86, 1348, 86, + 1358, 1360, 1361, 1356, 1362, 1363, 1364, 1349, 1357, 1350, + 86, 1366, 1351, 86, 1365, 1368, 1369, 1370, 1359, 1367, + 86, 86, 1374, 86, 86, 1371, 86, 1372, 1360, 1361, + 1375, 1362, 1363, 1364, 86, 86, 86, 1373, 1366, 86, + + 1379, 1365, 1368, 86, 1370, 86, 1367, 86, 86, 1374, + 1376, 1377, 1371, 1378, 1372, 86, 1380, 1375, 3438, 86, + 1382, 86, 86, 86, 1373, 1381, 1383, 1379, 86, 1386, + 1384, 3438, 1385, 3438, 86, 86, 86, 1376, 1377, 1387, + 1378, 86, 1388, 1380, 1390, 86, 1391, 1382, 1389, 86, + 86, 86, 1381, 1383, 1398, 86, 1386, 1384, 86, 1385, + 1392, 1393, 86, 1395, 1394, 86, 1387, 1396, 86, 1388, + 1397, 1390, 86, 1391, 1401, 1389, 86, 86, 1402, 86, + 1399, 1404, 1400, 1405, 3438, 86, 86, 1392, 1393, 1403, + 1395, 1394, 86, 86, 1396, 86, 1411, 1397, 86, 1406, + + 86, 1401, 1409, 86, 1407, 1402, 1408, 1399, 1404, 1400, + 1405, 1410, 3438, 1419, 86, 86, 1403, 1420, 1421, 3438, + 3438, 1433, 86, 1411, 1425, 86, 1422, 86, 86, 1409, + 1435, 86, 1423, 1408, 3438, 86, 1426, 1424, 1410, 1412, + 1419, 3438, 1428, 1413, 1420, 1427, 1414, 1415, 1433, 1430, + 86, 1416, 86, 1422, 86, 86, 86, 1417, 86, 1423, + 1452, 1418, 86, 1426, 1424, 86, 1412, 86, 86, 1428, + 1413, 1429, 1427, 1414, 1415, 86, 1430, 86, 1416, 1431, + 1434, 1432, 1436, 1437, 1417, 1440, 86, 1452, 1418, 86, + 86, 1438, 1439, 1441, 86, 1442, 3438, 1444, 1429, 1443, + + 86, 3438, 1451, 86, 3438, 86, 1431, 1434, 1432, 1436, + 1437, 3438, 1440, 86, 1450, 86, 1453, 1454, 1438, 1439, + 86, 86, 1455, 1458, 1444, 86, 1443, 86, 1445, 1451, + 1456, 1457, 86, 1446, 1459, 1447, 86, 1448, 86, 1449, + 3438, 1450, 1460, 86, 3438, 86, 86, 1461, 1464, 1455, + 1458, 1462, 86, 86, 1463, 1445, 1470, 1456, 1457, 86, + 1446, 1459, 1447, 1465, 1448, 1466, 1449, 1471, 1472, 86, + 86, 1467, 1468, 1469, 86, 1464, 86, 3438, 1462, 86, + 86, 1463, 1474, 86, 1473, 1476, 86, 86, 86, 1475, + 1465, 1480, 1466, 86, 1471, 1472, 1478, 86, 1467, 1468, + + 1469, 1477, 86, 86, 86, 86, 1479, 1481, 86, 1474, + 1482, 1473, 1476, 86, 1483, 1484, 1475, 1486, 1480, 1485, + 1488, 86, 86, 1478, 1487, 1489, 1491, 1493, 1477, 1490, + 3438, 1492, 86, 1479, 86, 1496, 86, 1482, 86, 86, + 86, 86, 1484, 86, 1486, 1499, 1485, 1488, 1501, 86, + 1503, 1487, 86, 86, 1493, 1494, 1490, 86, 1492, 1495, + 1497, 86, 86, 1498, 1500, 86, 1502, 86, 86, 86, + 1504, 86, 1499, 86, 1505, 1506, 1508, 1503, 1510, 1509, + 86, 3438, 1494, 86, 1507, 1511, 1495, 1497, 86, 3438, + 1498, 1500, 86, 1502, 1512, 86, 86, 1504, 86, 86, + + 86, 1505, 1506, 1508, 86, 1510, 1509, 1513, 1514, 3438, + 1515, 1507, 1511, 1517, 1521, 1520, 86, 1516, 1519, 1522, + 1518, 1512, 86, 1524, 3438, 1525, 1523, 1528, 3438, 86, + 86, 86, 3438, 1535, 1513, 1514, 86, 1515, 86, 86, + 1517, 86, 1520, 86, 1516, 1519, 86, 1518, 86, 1526, + 1527, 86, 1525, 1523, 86, 86, 1529, 86, 1530, 1532, + 1534, 1531, 1533, 86, 86, 86, 86, 86, 1536, 86, + 1537, 170, 1538, 3438, 1541, 1542, 1526, 1527, 86, 1543, + 1544, 86, 86, 1529, 1546, 1530, 1532, 1534, 1531, 1533, + 1539, 86, 1551, 86, 86, 3438, 1540, 1537, 1547, 1545, + + 86, 1541, 1542, 86, 86, 86, 1543, 1544, 86, 1549, + 86, 1546, 1548, 1550, 86, 1553, 1552, 1539, 86, 86, + 86, 1554, 1555, 1540, 1557, 1547, 1545, 1556, 1558, 86, + 1559, 1560, 1569, 86, 1566, 86, 1549, 86, 1561, 1548, + 1550, 3438, 1553, 1552, 86, 1567, 86, 3438, 1554, 86, + 86, 1557, 86, 1568, 86, 1558, 1562, 1559, 1560, 1563, + 1564, 1566, 1570, 1565, 86, 1561, 86, 3438, 86, 1572, + 86, 1574, 1567, 1577, 1573, 1571, 1575, 86, 3438, 86, + 1568, 3438, 86, 1562, 1576, 86, 1563, 1564, 1578, 1570, + 1565, 86, 1580, 86, 1581, 86, 1579, 1582, 1574, 86, + + 1577, 86, 1571, 1575, 86, 86, 1586, 1583, 1584, 1585, + 86, 1576, 1590, 1588, 1587, 1578, 86, 86, 86, 1580, + 86, 1581, 86, 1579, 1582, 3438, 3438, 1591, 1597, 3438, + 1589, 1592, 86, 1586, 1583, 1584, 1585, 86, 86, 86, + 1588, 1587, 86, 1593, 86, 1596, 1598, 1594, 1595, 1599, + 86, 1601, 1600, 86, 1591, 1597, 86, 1589, 1592, 86, + 86, 86, 1602, 1604, 1607, 1603, 86, 1606, 1608, 86, + 1593, 86, 1596, 1598, 1594, 1595, 1599, 86, 1601, 1600, + 1605, 86, 1609, 1610, 1611, 1613, 1612, 86, 86, 1602, + 1604, 86, 1603, 86, 1606, 86, 86, 86, 1614, 1615, + + 86, 1616, 1617, 1618, 3438, 86, 3438, 1605, 1620, 1609, + 86, 1611, 1613, 1612, 1619, 1621, 1626, 1623, 1622, 1625, + 86, 3438, 1624, 3438, 1628, 1614, 86, 1627, 86, 86, + 1618, 86, 86, 86, 86, 86, 86, 86, 86, 1630, + 86, 1619, 1621, 1626, 1623, 1622, 1625, 86, 1629, 1624, + 86, 1628, 1631, 1633, 1627, 86, 1632, 1634, 86, 1636, + 1638, 86, 1635, 1640, 1637, 1641, 1630, 86, 1639, 86, + 1642, 86, 1646, 86, 86, 1629, 1643, 1644, 1647, 1631, + 1633, 86, 1651, 1632, 1648, 86, 1645, 1638, 86, 86, + 1640, 86, 1641, 86, 86, 1639, 1653, 1642, 86, 1646, + + 1649, 1650, 86, 1643, 1644, 1654, 86, 86, 1652, 1660, + 86, 1648, 1655, 1645, 86, 86, 86, 86, 1656, 1659, + 86, 1657, 1658, 1653, 1662, 3438, 86, 1649, 1650, 86, + 86, 1661, 86, 1663, 1664, 1652, 1660, 86, 1666, 1655, + 1667, 1668, 86, 86, 1665, 1656, 1659, 1669, 1657, 1658, + 86, 1662, 86, 86, 1670, 1672, 1671, 86, 1661, 3438, + 1663, 1664, 1673, 1677, 1678, 1666, 1679, 86, 86, 86, + 86, 1665, 86, 86, 1669, 1674, 86, 86, 86, 1675, + 1680, 1670, 1672, 1671, 1681, 1682, 86, 86, 1683, 1673, + 1677, 1678, 1676, 1679, 1684, 86, 1685, 3438, 1687, 3438, + + 86, 1688, 1674, 1686, 1689, 1691, 1675, 1680, 86, 1690, + 86, 1681, 86, 1694, 86, 1683, 86, 86, 1700, 1676, + 86, 1692, 1693, 1685, 86, 1687, 86, 86, 1688, 86, + 1686, 1689, 1691, 1695, 1696, 1697, 1690, 1698, 1702, 86, + 1699, 86, 1704, 86, 1701, 86, 1703, 1705, 1692, 1693, + 86, 86, 1706, 1707, 3438, 3438, 1712, 3438, 86, 86, + 86, 1696, 1697, 86, 1698, 86, 86, 1699, 1709, 86, + 86, 1701, 1708, 1703, 1705, 86, 1710, 86, 86, 1706, + 1707, 1711, 86, 1712, 1713, 1714, 1719, 1716, 86, 1715, + 3438, 86, 1717, 1720, 86, 1709, 86, 86, 1718, 1708, + + 1723, 1727, 86, 1710, 86, 86, 1721, 86, 1711, 86, + 1724, 1713, 1714, 1719, 1716, 1722, 1715, 86, 86, 1717, + 1720, 1725, 1726, 86, 86, 1718, 1728, 1723, 1727, 1729, + 3438, 86, 1730, 1721, 86, 1732, 86, 1724, 86, 1731, + 1733, 1734, 1722, 3438, 1736, 86, 86, 1735, 1725, 1726, + 1737, 1738, 86, 1728, 1740, 86, 86, 86, 1741, 1730, + 3438, 86, 1732, 3438, 1742, 1739, 1731, 1733, 1734, 170, + 86, 1736, 86, 86, 1735, 1743, 86, 1737, 86, 86, + 1746, 1740, 1744, 1745, 1747, 1741, 86, 1748, 86, 3438, + 86, 1742, 1739, 86, 1749, 1752, 1750, 1751, 1754, 1753, + + 1762, 1755, 1743, 86, 86, 1756, 1758, 1746, 86, 1744, + 1745, 1747, 1757, 86, 1748, 1760, 86, 86, 1761, 1764, + 86, 1749, 86, 1750, 1751, 1754, 1753, 86, 1755, 1759, + 86, 86, 1756, 1763, 86, 1765, 86, 1767, 86, 1757, + 86, 86, 1768, 1771, 1770, 1761, 1764, 86, 1766, 1772, + 1774, 86, 1769, 86, 1773, 86, 1759, 86, 1780, 86, + 1763, 3438, 1765, 86, 1767, 86, 1781, 1775, 86, 1768, + 1771, 1770, 1787, 86, 1784, 1766, 1772, 1774, 1776, 1769, + 86, 1773, 86, 1777, 1782, 86, 1778, 1785, 86, 1786, + 86, 86, 86, 1781, 1775, 1788, 86, 1789, 1779, 1787, + + 1783, 1784, 1790, 1794, 1791, 1776, 1792, 86, 86, 86, + 1777, 1782, 1793, 1778, 1785, 1795, 1786, 1801, 3438, 1797, + 1802, 1804, 86, 1800, 3438, 1779, 86, 1783, 86, 86, + 1796, 1791, 86, 1792, 86, 86, 1799, 86, 86, 1793, + 1798, 1805, 1795, 86, 86, 86, 1797, 86, 86, 86, + 1800, 1803, 86, 86, 1806, 1807, 1809, 1796, 1808, 1810, + 3438, 1812, 1811, 1799, 1813, 86, 86, 1798, 1805, 86, + 1815, 1814, 1817, 86, 86, 1818, 86, 86, 1803, 86, + 86, 1806, 86, 1809, 86, 1808, 1810, 1823, 1812, 1811, + 1816, 1813, 86, 1819, 1820, 86, 1821, 1815, 1814, 1817, + + 86, 86, 1818, 1824, 1822, 1825, 1826, 1829, 1828, 86, + 86, 86, 1827, 86, 86, 1830, 86, 1816, 86, 86, + 1819, 1820, 86, 1821, 1831, 86, 1832, 3438, 1833, 1837, + 1824, 1822, 1825, 1826, 86, 1828, 1834, 1835, 86, 1827, + 1836, 86, 1830, 86, 1838, 1839, 86, 1843, 86, 1840, + 86, 1831, 1848, 1832, 86, 1833, 1837, 86, 86, 1849, + 1847, 1844, 86, 1834, 1835, 1841, 1845, 1836, 1842, 86, + 1850, 1838, 1839, 86, 1843, 1846, 1840, 86, 1866, 86, + 1851, 1852, 1853, 86, 86, 86, 86, 1847, 1844, 86, + 1854, 1855, 1841, 1845, 1856, 1842, 1857, 1850, 1859, 86, + + 1858, 1860, 1846, 3438, 86, 86, 86, 1851, 1852, 86, + 86, 1861, 86, 1865, 1867, 3438, 86, 1854, 1855, 1868, + 86, 1856, 86, 1857, 1862, 1859, 86, 1858, 1860, 86, + 1863, 86, 86, 1864, 1870, 1869, 1872, 1871, 1861, 1873, + 1865, 86, 1897, 86, 1874, 1875, 1868, 86, 86, 86, + 86, 1862, 1877, 1876, 86, 1879, 1878, 1863, 1880, 1881, + 1864, 1870, 1869, 1872, 1871, 86, 1882, 86, 86, 86, + 1883, 86, 1875, 1885, 86, 3438, 1886, 86, 3438, 1877, + 1876, 86, 1879, 1878, 1884, 1880, 1881, 1887, 86, 1888, + 1890, 86, 1893, 1882, 1894, 1889, 86, 1883, 86, 86, + + 1885, 86, 1891, 1886, 1896, 86, 86, 1892, 1895, 86, + 1899, 1884, 1900, 86, 1887, 1898, 1888, 1890, 1901, 1893, + 1902, 1894, 1889, 1903, 86, 1904, 86, 1907, 1911, 1905, + 1906, 1896, 3438, 86, 86, 1895, 86, 86, 3438, 1908, + 86, 3438, 1898, 86, 86, 1901, 86, 1902, 1909, 1912, + 1913, 1915, 1904, 86, 1910, 86, 1905, 1906, 86, 86, + 86, 1914, 1916, 3438, 1917, 1918, 1908, 1919, 86, 86, + 86, 1925, 86, 1920, 1923, 1909, 1912, 1913, 1915, 86, + 1921, 1910, 86, 1922, 86, 86, 1926, 86, 1914, 1916, + 1927, 1917, 1918, 86, 1919, 1924, 86, 1928, 1929, 1930, + + 1920, 86, 1932, 86, 86, 86, 1931, 1921, 86, 1933, + 1922, 1934, 1937, 1938, 86, 1935, 3438, 1927, 86, 1936, + 86, 86, 1924, 86, 86, 1929, 1930, 1939, 1940, 86, + 86, 1941, 3438, 1931, 86, 1942, 1933, 1943, 1944, 1937, + 86, 1945, 1935, 86, 3438, 86, 1936, 1947, 1946, 1949, + 1950, 86, 1948, 86, 1939, 1940, 86, 86, 1941, 86, + 1954, 86, 1942, 1956, 1943, 1944, 86, 170, 1945, 1952, + 1951, 86, 1953, 1955, 1947, 1946, 1949, 86, 86, 1948, + 86, 1961, 1965, 86, 86, 1959, 86, 86, 1957, 1958, + 1956, 1960, 1962, 86, 1967, 1968, 1952, 1951, 86, 1953, + + 1955, 1963, 1964, 86, 86, 1970, 1966, 86, 1969, 86, + 86, 1971, 1959, 86, 1993, 1957, 1958, 86, 1960, 1962, + 1973, 86, 1968, 86, 1972, 1974, 86, 1975, 1963, 1964, + 86, 1976, 1977, 1966, 86, 1969, 86, 86, 86, 86, + 1979, 86, 1980, 1981, 1978, 86, 86, 1973, 1982, 86, + 1984, 1972, 1974, 86, 1975, 3438, 1983, 1990, 1976, 1977, + 1985, 86, 86, 86, 86, 1992, 3438, 1979, 86, 1980, + 1981, 1978, 86, 1986, 1987, 1982, 1991, 1984, 86, 86, + 1994, 86, 1988, 1983, 1990, 1995, 86, 1985, 86, 1989, + 1996, 1997, 86, 86, 1999, 2000, 2003, 2001, 86, 1998, + + 1986, 1987, 86, 1991, 86, 2002, 86, 1994, 86, 1988, + 2004, 2006, 1995, 2005, 2012, 2007, 1989, 1996, 1997, 86, + 86, 1999, 2000, 86, 2001, 2010, 1998, 2008, 2009, 2014, + 2011, 86, 2002, 86, 86, 2013, 2015, 86, 86, 2016, + 2005, 86, 2007, 2018, 3438, 86, 86, 2017, 2019, 86, + 2021, 2020, 86, 86, 2008, 2009, 2022, 2011, 86, 86, + 2024, 86, 2013, 2015, 2023, 2028, 86, 86, 2025, 2042, + 2018, 86, 86, 2026, 2017, 86, 86, 2021, 2020, 2027, + 2034, 2033, 2036, 86, 3438, 2035, 2037, 2024, 86, 86, + 86, 2023, 86, 86, 86, 2025, 2042, 86, 2040, 86, + + 2026, 86, 2029, 2030, 2031, 2038, 2027, 2034, 2033, 2032, + 2039, 86, 2035, 2037, 86, 2041, 2043, 86, 2045, 2047, + 2046, 2044, 2048, 3438, 2049, 2040, 86, 86, 86, 2029, + 2030, 2031, 86, 86, 2050, 86, 2032, 86, 86, 2051, + 3438, 2054, 2041, 2043, 2055, 2052, 2047, 2046, 2044, 2048, + 86, 86, 86, 2053, 2057, 2056, 2059, 2058, 86, 86, + 2060, 2050, 86, 2061, 2062, 86, 2051, 86, 2054, 86, + 2064, 86, 2052, 2065, 86, 2063, 2066, 2068, 86, 86, + 2053, 86, 2056, 2059, 2058, 2067, 86, 2060, 86, 2070, + 2061, 2069, 86, 2071, 86, 86, 86, 86, 2072, 2073, + + 2065, 2074, 2063, 2066, 2068, 86, 2077, 2075, 2076, 86, + 2081, 2080, 2067, 2083, 86, 86, 2070, 2078, 2069, 2079, + 2071, 86, 2084, 2082, 2085, 2072, 2073, 86, 86, 86, + 2091, 86, 86, 86, 2075, 2076, 2087, 86, 86, 2086, + 2083, 2090, 86, 86, 2078, 86, 2079, 2088, 2092, 2084, + 2082, 2085, 2089, 86, 86, 2095, 86, 2093, 2094, 2100, + 86, 2099, 86, 2087, 86, 2097, 2086, 86, 2090, 2101, + 86, 2096, 86, 2105, 2088, 2102, 2098, 86, 86, 2089, + 86, 86, 2095, 86, 2093, 2094, 86, 86, 2099, 2103, + 2104, 2106, 2097, 2107, 2108, 2112, 2101, 86, 2096, 86, + + 2105, 2109, 2102, 2098, 2113, 2116, 2114, 2115, 2119, 2110, + 86, 86, 86, 86, 2111, 86, 2103, 2104, 2106, 86, + 2107, 86, 86, 2117, 86, 86, 2122, 86, 2109, 2120, + 86, 2113, 2116, 2114, 2115, 2118, 2110, 2121, 86, 2124, + 86, 2111, 86, 2123, 2135, 2125, 2126, 2127, 86, 86, + 2117, 2130, 2136, 2122, 2131, 2132, 2120, 86, 86, 2137, + 86, 2138, 2118, 2128, 2121, 86, 86, 2140, 2129, 86, + 2123, 86, 2125, 2126, 2127, 2133, 86, 2139, 2130, 86, + 2134, 86, 86, 86, 86, 2141, 2137, 2142, 2138, 2150, + 2128, 2143, 86, 2145, 2144, 2129, 86, 2146, 2147, 86, + + 86, 2148, 86, 3438, 2139, 2151, 86, 86, 2149, 86, + 86, 170, 2141, 2155, 2142, 86, 2150, 2154, 2143, 2152, + 86, 2144, 2156, 2153, 2146, 86, 2157, 2158, 2148, 2159, + 86, 86, 2151, 2160, 86, 2149, 86, 86, 3438, 86, + 2155, 2161, 2162, 2164, 2154, 2163, 2152, 2166, 86, 2156, + 2153, 2165, 2167, 86, 86, 2168, 2159, 2172, 2171, 2173, + 2169, 86, 86, 2177, 86, 86, 86, 86, 2161, 2162, + 2164, 86, 2163, 86, 2166, 86, 2170, 86, 2165, 2167, + 86, 86, 2168, 2174, 86, 2171, 2173, 2169, 2176, 2175, + 86, 86, 2178, 2180, 2182, 2179, 2181, 2184, 2185, 86, + + 2186, 3438, 86, 2170, 86, 86, 2183, 86, 3438, 3438, + 2174, 86, 86, 86, 3438, 2176, 2175, 86, 86, 2178, + 2180, 2182, 2179, 2181, 2188, 2185, 2187, 2186, 86, 86, + 2189, 2191, 2192, 2183, 2194, 86, 2193, 86, 2199, 2196, + 86, 2190, 2197, 86, 2195, 2198, 2200, 3438, 86, 3438, + 86, 2188, 86, 2187, 86, 2201, 86, 2189, 2191, 2192, + 86, 2194, 86, 2193, 2202, 2199, 2196, 86, 2190, 2197, + 2203, 2195, 2198, 86, 2204, 86, 2205, 2206, 2207, 86, + 2208, 86, 2201, 2209, 2210, 2211, 86, 2212, 86, 86, + 2213, 2202, 2214, 2216, 2215, 2219, 86, 2203, 3438, 3438, + + 2217, 2204, 86, 2205, 86, 2207, 86, 2208, 86, 86, + 2209, 86, 2211, 2218, 86, 86, 86, 2213, 86, 2214, + 86, 2215, 2219, 2220, 2221, 86, 2222, 2217, 2223, 2224, + 2231, 2226, 86, 2225, 2227, 86, 2228, 86, 3438, 2234, + 2218, 2229, 86, 86, 86, 86, 86, 2237, 86, 86, + 2220, 2221, 2233, 2222, 2230, 2223, 2224, 2231, 2226, 2241, + 2225, 2227, 86, 2228, 2235, 2232, 86, 86, 2229, 86, + 2236, 86, 2238, 86, 2237, 2239, 2240, 86, 2242, 2233, + 3438, 2230, 86, 2245, 86, 2243, 2241, 86, 2244, 2249, + 3438, 2235, 2232, 2247, 86, 2246, 2251, 2236, 86, 2238, + + 2252, 86, 2239, 2240, 86, 2242, 2248, 86, 86, 2250, + 2245, 86, 2243, 2253, 86, 2244, 2249, 86, 2254, 2256, + 2247, 86, 2246, 2255, 86, 86, 86, 2252, 86, 2257, + 2258, 2259, 2261, 2248, 2260, 2262, 2250, 2264, 2263, 86, + 2253, 86, 3438, 86, 2266, 86, 2256, 2265, 2271, 2267, + 2255, 86, 86, 86, 86, 2275, 2257, 2258, 2259, 2261, + 86, 2260, 86, 2268, 2264, 2263, 2270, 86, 2272, 2269, + 2276, 2273, 2278, 2274, 2265, 86, 86, 86, 2277, 86, + 86, 86, 86, 86, 2281, 3438, 2283, 86, 2284, 2282, + 2268, 3438, 86, 2270, 86, 2272, 2269, 2276, 2273, 2278, + + 2274, 2279, 3438, 86, 86, 2277, 2285, 2286, 2287, 2280, + 3438, 86, 86, 2283, 86, 2284, 2282, 86, 2290, 2288, + 86, 2291, 2289, 2294, 86, 2292, 2295, 86, 2279, 86, + 2293, 3438, 2296, 2285, 2286, 2287, 2280, 86, 86, 2297, + 2298, 2299, 2300, 86, 86, 2290, 2288, 86, 2291, 2289, + 2294, 2301, 2302, 2295, 86, 2303, 86, 86, 86, 2296, + 2306, 3438, 86, 86, 2304, 2305, 2297, 2298, 2299, 2300, + 86, 86, 2308, 86, 86, 2307, 2309, 86, 2301, 2302, + 2311, 2312, 86, 2310, 2314, 86, 2313, 2306, 86, 3438, + 2315, 2304, 2305, 86, 3438, 86, 86, 2316, 2319, 2308, + + 2320, 2317, 2307, 2309, 86, 86, 86, 2311, 2312, 2321, + 2310, 2314, 86, 2313, 2318, 86, 2323, 2315, 86, 86, + 2322, 86, 86, 2325, 2316, 2319, 2324, 2320, 2317, 86, + 2326, 2327, 2328, 2329, 3438, 2331, 2321, 2332, 2333, 2330, + 86, 2318, 2337, 2323, 86, 86, 2334, 2322, 86, 86, + 86, 170, 2338, 2324, 2339, 2342, 86, 2326, 86, 2328, + 2329, 86, 2331, 2335, 2332, 2341, 2330, 2340, 2336, 2351, + 86, 2343, 86, 2334, 86, 2346, 2347, 3438, 86, 2348, + 2354, 2339, 86, 3438, 86, 2344, 86, 2352, 2355, 2349, + 2350, 3438, 2341, 86, 2340, 86, 2345, 86, 2343, 86, + + 2353, 86, 2346, 86, 86, 86, 2348, 86, 2356, 86, + 86, 2357, 2344, 3438, 2352, 2355, 2349, 2350, 2358, 2359, + 2361, 2360, 86, 2345, 3438, 86, 86, 2353, 86, 2362, + 2365, 2363, 2364, 3438, 86, 86, 2371, 3438, 2357, 2369, + 86, 2366, 86, 2367, 86, 2358, 2359, 2361, 2360, 2372, + 86, 86, 86, 2368, 86, 2382, 2362, 2365, 2363, 2364, + 86, 86, 2370, 86, 2374, 2373, 2369, 86, 2366, 2376, + 2367, 2378, 86, 2375, 86, 2377, 2372, 86, 86, 86, + 2368, 2379, 86, 2380, 2381, 2383, 86, 2384, 2389, 2370, + 86, 2374, 2373, 86, 86, 86, 2376, 86, 2378, 2385, + + 2375, 2386, 2377, 86, 86, 86, 2387, 86, 2379, 86, + 2380, 2381, 2383, 2388, 2384, 2389, 2390, 2391, 2392, 2394, + 2393, 86, 3438, 86, 2396, 2397, 2385, 2395, 2386, 2399, + 86, 86, 86, 2387, 86, 2398, 2400, 3438, 2403, 2404, + 2388, 2406, 2401, 2390, 2391, 2392, 2394, 2393, 86, 86, + 86, 2396, 86, 86, 2395, 86, 2399, 86, 2402, 2405, + 2408, 2407, 2398, 2400, 86, 2403, 86, 2409, 86, 2401, + 2412, 2413, 86, 86, 86, 2416, 2417, 2410, 2414, 2415, + 2411, 2418, 86, 86, 86, 2402, 2405, 2408, 2407, 2419, + 2420, 2421, 2422, 86, 2409, 86, 86, 86, 86, 86, + + 86, 86, 2416, 2417, 2410, 2414, 2415, 2411, 2418, 2424, + 2425, 2423, 2426, 2427, 2428, 2429, 86, 86, 2421, 86, + 86, 2431, 86, 2435, 2434, 2430, 2437, 2433, 86, 2443, + 3438, 86, 2432, 2440, 86, 86, 86, 2425, 2423, 2426, + 86, 86, 2429, 86, 2439, 86, 86, 2436, 2431, 2438, + 86, 2434, 2430, 86, 2433, 86, 86, 86, 86, 2432, + 2440, 3438, 2441, 2445, 2444, 86, 2447, 2446, 2449, 2454, + 2452, 2439, 86, 2448, 2436, 86, 2438, 2442, 86, 2450, + 2451, 86, 86, 2456, 86, 2453, 86, 2457, 86, 2441, + 2445, 2444, 86, 2447, 2446, 86, 86, 2452, 2459, 86, + + 2448, 2455, 2461, 2458, 2442, 86, 2450, 2451, 86, 86, + 2456, 2460, 2453, 2462, 2457, 86, 2465, 86, 86, 2466, + 2469, 2467, 86, 2463, 2464, 86, 86, 2468, 2455, 2461, + 2458, 2472, 86, 86, 2473, 2470, 3438, 2471, 2460, 86, + 2462, 2480, 86, 2465, 86, 86, 2466, 2469, 2467, 86, + 2463, 2464, 86, 2474, 2468, 2475, 2476, 2477, 86, 2478, + 2483, 2473, 2470, 86, 2471, 86, 2479, 2481, 2480, 2482, + 2484, 86, 86, 2485, 3438, 86, 2488, 86, 3438, 2486, + 2474, 3438, 2475, 2476, 2477, 86, 2478, 2483, 86, 86, + 2489, 86, 2487, 2479, 2481, 2491, 2482, 86, 2490, 2492, + + 2493, 2499, 86, 2494, 86, 86, 2486, 2500, 86, 2502, + 2495, 2496, 86, 86, 2497, 2505, 86, 2489, 2498, 2487, + 86, 86, 2491, 2501, 86, 2490, 2492, 2493, 86, 86, + 2494, 86, 86, 86, 2503, 2508, 2502, 2495, 2496, 86, + 2504, 2497, 3438, 2506, 3438, 2498, 86, 86, 2509, 2510, + 2501, 2507, 86, 86, 2513, 2515, 2511, 2514, 2512, 2517, + 2516, 2503, 2508, 86, 2518, 86, 86, 2504, 86, 86, + 2506, 170, 86, 2522, 86, 2509, 2510, 86, 2507, 86, + 2520, 2513, 86, 2511, 2514, 2512, 2517, 2516, 2519, 2521, + 2523, 2518, 86, 2525, 2524, 2526, 2528, 86, 2527, 86, + + 2522, 86, 2529, 2531, 86, 2530, 2532, 2520, 86, 2534, + 2533, 3438, 86, 2536, 3438, 2519, 2521, 2523, 2535, 2537, + 2525, 2524, 86, 86, 86, 2527, 86, 86, 86, 2529, + 2538, 86, 2530, 2539, 86, 86, 86, 2533, 86, 86, + 2536, 86, 2540, 86, 2541, 2535, 2537, 2544, 2542, 3438, + 2543, 3438, 2546, 3438, 2545, 2548, 3438, 2538, 2547, 2550, + 2539, 86, 2552, 3438, 2551, 2549, 86, 2561, 86, 2540, + 86, 3438, 86, 86, 2544, 2542, 86, 2543, 86, 86, + 86, 2545, 2548, 86, 2553, 2547, 2550, 86, 2554, 86, + 2555, 2551, 2549, 2556, 2557, 2558, 2559, 86, 86, 86, + + 86, 2564, 2560, 86, 2562, 2563, 3438, 86, 2565, 86, + 86, 2553, 2566, 2567, 86, 2554, 86, 2555, 86, 86, + 2556, 2557, 2558, 2559, 86, 86, 2568, 2569, 2564, 2560, + 2570, 2562, 2563, 2571, 86, 2565, 2572, 2573, 86, 2566, + 2567, 86, 2574, 2575, 3438, 2576, 3438, 2578, 86, 2577, + 2581, 2579, 86, 2568, 2569, 86, 86, 2570, 2580, 2583, + 86, 2584, 86, 2572, 2573, 86, 2585, 2587, 2582, 2574, + 2575, 86, 2576, 86, 2578, 2586, 2577, 86, 2579, 86, + 86, 86, 86, 86, 86, 2580, 86, 2588, 2584, 2589, + 2590, 86, 2594, 86, 2587, 2582, 2592, 2591, 86, 2593, + + 2595, 2596, 2586, 86, 2597, 2599, 3438, 2600, 3438, 2598, + 86, 86, 2607, 2602, 2588, 2605, 2589, 2590, 86, 86, + 86, 86, 2610, 2592, 2591, 2615, 2593, 86, 2606, 86, + 86, 2597, 2599, 86, 2600, 2601, 2598, 86, 2603, 2604, + 2602, 2608, 86, 86, 86, 2609, 86, 2611, 2612, 86, + 86, 2613, 86, 86, 86, 2606, 86, 86, 2614, 2616, + 86, 2617, 2601, 2621, 2618, 2603, 2604, 2619, 2608, 3438, + 86, 86, 2609, 2620, 2611, 2612, 86, 2624, 2613, 2622, + 2623, 86, 86, 2627, 86, 2614, 2616, 2628, 2617, 86, + 2621, 2618, 86, 2629, 2619, 86, 2625, 2630, 86, 86, + + 2620, 2626, 2631, 86, 2624, 86, 2622, 2623, 86, 2633, + 2627, 2632, 2634, 3438, 86, 2635, 3438, 2636, 86, 3438, + 86, 2641, 2637, 2625, 86, 2638, 86, 86, 2626, 86, + 2639, 2643, 86, 2640, 86, 2642, 2633, 86, 2632, 2634, + 86, 86, 2635, 86, 2636, 86, 86, 2644, 2641, 2637, + 2645, 2646, 2638, 2647, 2655, 86, 2648, 2639, 86, 2649, + 2640, 2650, 2642, 2651, 2656, 2652, 2653, 3438, 2654, 86, + 86, 86, 3438, 86, 2644, 86, 86, 86, 86, 86, + 2647, 86, 86, 2648, 2657, 86, 2649, 86, 2650, 2658, + 2651, 2656, 2652, 2653, 2659, 2654, 86, 2660, 2662, 2661, + + 86, 3438, 2663, 86, 2664, 3438, 2665, 3438, 86, 2671, + 2666, 2657, 86, 86, 2669, 2670, 2658, 2674, 2667, 170, + 86, 2659, 2668, 86, 2660, 2662, 2661, 86, 86, 2663, + 86, 2664, 86, 2665, 86, 2672, 2671, 2666, 2673, 86, + 2676, 2669, 2670, 2677, 2674, 2667, 2675, 3438, 2678, 2668, + 2679, 86, 2680, 2682, 2681, 3438, 2683, 2686, 3438, 86, + 2684, 3438, 2672, 86, 86, 2673, 86, 86, 86, 86, + 86, 3438, 86, 2675, 86, 2678, 86, 2679, 86, 2680, + 2682, 2681, 2685, 2683, 2686, 2687, 2688, 2684, 2689, 86, + 86, 2690, 2691, 86, 2692, 2693, 2694, 2696, 86, 2695, + + 2700, 86, 2698, 2697, 86, 86, 86, 86, 2702, 2685, + 2699, 2703, 2687, 2688, 2701, 2689, 86, 86, 2690, 2691, + 86, 2692, 2693, 2694, 86, 86, 2695, 86, 86, 2698, + 2697, 2704, 86, 2705, 2706, 86, 2707, 2699, 2703, 2708, + 86, 2701, 2710, 2709, 2711, 86, 86, 2712, 86, 2713, + 86, 2715, 2716, 86, 86, 2714, 86, 2717, 2704, 2718, + 2705, 2706, 3438, 2707, 86, 2723, 2708, 2721, 2719, 2710, + 2709, 86, 86, 2720, 86, 86, 2713, 86, 2715, 86, + 2722, 2724, 2714, 2725, 86, 86, 2728, 86, 86, 2726, + 86, 86, 2723, 86, 2721, 2719, 2727, 2729, 2730, 2732, + + 2720, 2731, 3438, 2734, 2733, 3438, 3438, 2722, 2724, 86, + 2725, 86, 86, 86, 2736, 2737, 2726, 86, 86, 2742, + 2735, 86, 86, 2727, 2729, 86, 2732, 86, 2731, 2741, + 2734, 2733, 2738, 2740, 2745, 2739, 86, 86, 2743, 86, + 86, 2736, 2737, 86, 2748, 2744, 86, 2735, 2746, 2751, + 86, 2747, 2752, 86, 86, 3438, 2741, 2749, 2750, 2738, + 2740, 86, 2739, 86, 86, 2743, 86, 86, 2753, 86, + 2754, 2748, 2744, 2756, 2758, 2746, 86, 86, 2747, 2752, + 86, 86, 2755, 2757, 2749, 2750, 2760, 2762, 2759, 86, + 2763, 2761, 86, 3438, 2765, 2753, 2767, 2754, 86, 86, + + 86, 2758, 2764, 86, 2766, 86, 2768, 3438, 2769, 2755, + 2757, 86, 86, 86, 86, 2759, 2771, 2763, 2761, 86, + 86, 2765, 2770, 2767, 2772, 2773, 2774, 86, 2775, 2764, + 2776, 2766, 2777, 86, 86, 2769, 2780, 2786, 86, 86, + 2778, 3438, 2779, 86, 86, 86, 86, 86, 86, 2770, + 2781, 2772, 2773, 2774, 86, 2775, 2782, 2776, 2783, 86, + 2784, 2785, 2788, 86, 2786, 3438, 2787, 2778, 2790, 2779, + 2791, 86, 86, 2793, 2789, 2794, 2795, 2781, 86, 2792, + 86, 86, 86, 2782, 86, 2783, 86, 2784, 2785, 2788, + 86, 86, 86, 2787, 2797, 2790, 2796, 2791, 86, 2798, + + 86, 2789, 86, 2795, 86, 2799, 2792, 2800, 2801, 2802, + 2804, 2803, 2805, 3438, 3438, 2807, 86, 86, 2806, 86, + 2808, 170, 2810, 2796, 86, 2812, 2798, 86, 2811, 2809, + 2813, 2814, 2799, 86, 2800, 2801, 86, 2804, 2803, 2805, + 86, 86, 86, 86, 2815, 2806, 2816, 86, 2817, 86, + 2819, 2818, 86, 86, 2824, 2811, 2809, 86, 2814, 86, + 2825, 2820, 2822, 2821, 2823, 3438, 86, 2827, 3438, 2830, + 86, 2815, 86, 2816, 86, 86, 2826, 2819, 2818, 86, + 86, 86, 86, 2829, 2828, 2831, 86, 2832, 2820, 2822, + 2821, 2823, 86, 86, 2827, 2833, 2830, 2834, 86, 2835, + + 86, 2836, 2837, 2826, 86, 86, 86, 2838, 2841, 86, + 2829, 2828, 2831, 86, 2832, 3438, 2840, 86, 2839, 86, + 86, 2842, 2833, 2843, 2834, 86, 2835, 2845, 2836, 2837, + 2844, 86, 2846, 86, 2838, 86, 86, 86, 2847, 2848, + 86, 2850, 86, 2840, 2849, 2839, 2851, 86, 2842, 2853, + 2843, 2855, 2852, 86, 2845, 2856, 2854, 2844, 86, 86, + 86, 86, 86, 86, 2858, 2847, 2848, 2857, 2850, 86, + 2859, 2849, 2860, 86, 86, 2861, 2853, 2862, 2855, 2852, + 2867, 86, 86, 2854, 2863, 3438, 2864, 2865, 3438, 3438, + 2874, 2868, 2866, 2869, 2857, 3438, 86, 2870, 2875, 2860, + + 2872, 2876, 86, 86, 86, 86, 86, 86, 86, 2871, + 86, 2863, 86, 2864, 2865, 86, 86, 86, 2868, 2866, + 2869, 86, 2873, 2877, 2870, 86, 86, 2872, 86, 2878, + 2879, 86, 2880, 2881, 2886, 2883, 2871, 2882, 2885, 86, + 2884, 86, 2887, 2888, 2889, 3438, 86, 2893, 2890, 2873, + 2877, 86, 86, 86, 2896, 86, 2878, 86, 3438, 2880, + 2881, 2886, 2891, 2892, 2882, 2885, 2897, 86, 86, 2887, + 86, 86, 86, 2894, 86, 2890, 86, 86, 2895, 2898, + 2900, 86, 86, 2899, 2901, 86, 2903, 2902, 2904, 2891, + 2892, 2905, 86, 2897, 2906, 86, 86, 2907, 86, 86, + + 2894, 2908, 2915, 2909, 2914, 2895, 86, 86, 2910, 2918, + 2899, 2901, 2911, 2903, 2902, 2912, 86, 86, 86, 2913, + 86, 2906, 86, 86, 2917, 86, 86, 2919, 2908, 86, + 2916, 2914, 86, 2920, 86, 86, 86, 2921, 2922, 2911, + 86, 3438, 2912, 2923, 3438, 2924, 2913, 86, 3438, 86, + 2930, 2917, 86, 2927, 2919, 2929, 2931, 2916, 2925, 2926, + 2920, 86, 86, 86, 2921, 2922, 2932, 86, 86, 2928, + 2923, 86, 2924, 2933, 2935, 86, 2936, 2930, 86, 86, + 2927, 2934, 2929, 86, 86, 2925, 2926, 86, 2937, 2938, + 2940, 2942, 2943, 2932, 2939, 2941, 2928, 86, 2944, 86, + + 2933, 2935, 2945, 2936, 2946, 3438, 2947, 86, 2934, 2948, + 2950, 3438, 2949, 2951, 86, 2937, 2952, 86, 2942, 86, + 86, 86, 86, 2954, 86, 2944, 2955, 2953, 86, 2945, + 86, 2946, 86, 2947, 86, 86, 2948, 2950, 86, 2949, + 2951, 2956, 2957, 2952, 86, 86, 2958, 2959, 86, 86, + 2954, 2960, 2961, 2955, 2953, 2962, 2963, 2964, 2965, 2966, + 3438, 86, 3438, 2967, 2972, 3438, 3438, 2978, 2956, 2957, + 2968, 2969, 2979, 86, 86, 86, 86, 2970, 2960, 2961, + 86, 86, 86, 2963, 86, 2965, 86, 2971, 86, 86, + 2967, 86, 2973, 2974, 2975, 86, 86, 2968, 2969, 86, + + 2976, 2977, 86, 2980, 2970, 2981, 2982, 2984, 2985, 2983, + 2996, 86, 2986, 86, 2971, 86, 86, 86, 2989, 2973, + 2974, 2975, 2987, 86, 86, 86, 2990, 2976, 2977, 86, + 2980, 86, 2981, 2982, 86, 86, 2983, 2988, 2993, 2986, + 2991, 2992, 86, 86, 86, 86, 86, 2995, 2994, 2987, + 2999, 2998, 3002, 2990, 86, 86, 2997, 86, 3000, 3003, + 86, 3001, 3004, 3438, 2988, 2993, 86, 2991, 2992, 3005, + 86, 86, 86, 3008, 2995, 2994, 86, 2999, 2998, 3002, + 86, 86, 86, 2997, 3009, 3000, 3003, 86, 3001, 3004, + 3006, 3010, 3011, 3007, 3012, 3013, 3005, 3438, 3015, 3438, + + 86, 86, 3014, 86, 3016, 3017, 3018, 3438, 3438, 3021, + 86, 86, 3022, 3020, 3019, 86, 86, 3006, 86, 3011, + 3007, 3012, 3013, 86, 86, 3024, 86, 86, 86, 3014, + 86, 3016, 3017, 86, 86, 3023, 3021, 3026, 3027, 3022, + 3020, 3019, 3438, 3025, 86, 86, 3028, 3029, 3438, 3030, + 3031, 3032, 3034, 3035, 3033, 3438, 3438, 86, 86, 86, + 3038, 86, 3023, 86, 86, 3027, 86, 3044, 86, 86, + 3025, 3036, 3037, 3028, 3029, 86, 3030, 3031, 3032, 3034, + 86, 3033, 3039, 86, 3040, 86, 86, 3038, 3041, 3042, + 3043, 3048, 3045, 86, 3044, 86, 86, 3046, 3036, 3037, + + 86, 3047, 86, 3050, 3051, 3049, 86, 3053, 86, 3039, + 86, 3040, 86, 86, 3052, 3041, 3042, 3043, 86, 3045, + 86, 3056, 3054, 3058, 3046, 3055, 3057, 3059, 3047, 3061, + 86, 86, 3049, 86, 86, 3060, 86, 86, 3062, 3065, + 3063, 3052, 86, 86, 86, 86, 3068, 86, 3056, 3054, + 3058, 3064, 3055, 3057, 86, 3066, 3061, 3069, 3070, 86, + 3073, 3067, 3060, 3082, 86, 86, 3065, 3063, 86, 86, + 86, 3071, 3072, 86, 3074, 3077, 3076, 86, 3064, 3075, + 3079, 3083, 3066, 86, 3069, 3081, 3080, 86, 3067, 86, + 86, 86, 86, 86, 3078, 86, 86, 3086, 3071, 3072, + + 3084, 86, 86, 3076, 86, 3087, 3075, 3079, 3083, 3085, + 3088, 3089, 3081, 3080, 3090, 86, 86, 86, 3091, 3092, + 3093, 3078, 3094, 3095, 86, 3096, 86, 3084, 3099, 3098, + 3438, 3100, 3087, 86, 86, 86, 3085, 3088, 3089, 3097, + 86, 3090, 3102, 3105, 3110, 3091, 3092, 86, 86, 86, + 3095, 86, 86, 86, 3101, 86, 3098, 86, 3100, 3103, + 3104, 3106, 86, 3107, 3109, 3108, 3097, 86, 3112, 86, + 86, 86, 86, 3114, 86, 3111, 86, 3115, 86, 86, + 3113, 3101, 3124, 86, 3116, 3119, 3103, 3104, 3106, 3120, + 3107, 3109, 3108, 3118, 3121, 3112, 3117, 3125, 86, 3122, + + 86, 3126, 3111, 3438, 86, 3128, 86, 3113, 3133, 86, + 86, 3116, 86, 86, 86, 86, 86, 3123, 86, 86, + 3118, 86, 3127, 3117, 3125, 3130, 3122, 3132, 86, 3129, + 86, 3131, 3128, 86, 86, 86, 86, 3134, 86, 3135, + 3139, 3137, 3136, 3138, 3123, 3140, 3141, 86, 86, 3127, + 3142, 3150, 3130, 86, 3132, 86, 3129, 86, 3131, 3144, + 3146, 86, 3147, 3143, 3134, 3151, 3135, 86, 3137, 3136, + 3138, 86, 86, 3145, 3148, 3149, 3152, 3142, 86, 86, + 86, 86, 3153, 86, 3154, 3155, 3144, 86, 86, 86, + 3143, 3156, 3151, 3159, 3438, 86, 86, 3157, 3158, 3160, + + 3145, 3148, 3149, 3152, 86, 86, 86, 3161, 86, 86, + 3162, 3154, 3155, 86, 86, 86, 3164, 3171, 3156, 3163, + 3159, 3166, 3167, 86, 3157, 3158, 3160, 86, 86, 86, + 86, 3165, 3172, 86, 3161, 3168, 3169, 3162, 86, 86, + 3174, 3170, 3175, 3164, 3171, 86, 3163, 86, 3166, 3167, + 3173, 3177, 3178, 3176, 86, 3179, 3180, 86, 3165, 3172, + 86, 3181, 3168, 3169, 86, 3182, 86, 3183, 3170, 3175, + 3185, 3186, 86, 3184, 3191, 86, 3194, 3173, 3177, 3178, + 3176, 86, 86, 86, 86, 3187, 3188, 3438, 3181, 86, + 3189, 3190, 86, 3195, 3183, 3192, 3193, 86, 86, 86, + + 3184, 86, 3197, 3194, 3196, 3199, 3200, 3198, 3202, 3203, + 3201, 3438, 3438, 86, 86, 86, 86, 86, 86, 86, + 3195, 3204, 86, 3205, 86, 86, 3206, 3208, 86, 86, + 86, 3196, 3199, 3200, 3198, 3202, 86, 3201, 3207, 3209, + 3210, 3211, 3212, 3215, 3213, 86, 86, 3214, 3204, 86, + 3205, 86, 3216, 3206, 3208, 3218, 3223, 3231, 3230, 3221, + 3217, 86, 86, 86, 3222, 3207, 3209, 3210, 3211, 86, + 86, 3213, 86, 86, 3214, 3219, 3227, 86, 3220, 86, + 3225, 3224, 3218, 86, 3226, 86, 3233, 3217, 86, 86, + 86, 86, 86, 86, 3228, 3234, 3229, 3232, 86, 3237, + + 3235, 3438, 3219, 3227, 86, 3220, 3236, 3225, 3224, 3238, + 3240, 3226, 86, 86, 3239, 3241, 86, 3242, 86, 3243, + 3244, 3228, 86, 3229, 3232, 3245, 86, 3235, 86, 3246, + 3247, 3249, 86, 3236, 3248, 86, 86, 86, 3250, 3252, + 3254, 3239, 86, 3253, 86, 3251, 86, 86, 3256, 86, + 86, 3255, 86, 3259, 86, 3258, 86, 86, 3249, 86, + 3260, 3248, 3257, 86, 3261, 86, 3252, 86, 86, 86, + 3253, 3262, 3251, 3263, 86, 86, 3264, 3265, 3255, 3267, + 3259, 3268, 3258, 86, 3270, 86, 86, 3260, 3269, 3257, + 86, 86, 3266, 86, 3271, 3272, 3277, 3438, 3262, 3276, + + 86, 86, 3273, 3264, 3265, 86, 3267, 86, 3268, 3274, + 86, 3278, 86, 3275, 86, 3269, 86, 86, 86, 3266, + 86, 3271, 3272, 3277, 86, 3279, 3276, 3280, 86, 3273, + 3283, 3281, 3282, 3284, 86, 3285, 3274, 86, 3278, 3286, + 3275, 3287, 3289, 3288, 86, 86, 3438, 3292, 3290, 3294, + 3291, 86, 3279, 86, 3280, 86, 86, 3283, 3281, 3282, + 86, 86, 86, 86, 3293, 86, 86, 3295, 3287, 3289, + 3288, 86, 3296, 3298, 3292, 3290, 3294, 3291, 3297, 3300, + 86, 3299, 3301, 3302, 86, 86, 3303, 86, 86, 86, + 3438, 3293, 86, 86, 3295, 3306, 3304, 3305, 86, 3296, + + 3298, 3307, 3309, 3308, 86, 3297, 3300, 86, 3299, 3301, + 3302, 3310, 86, 3303, 86, 3311, 3314, 86, 86, 3312, + 3313, 3315, 3306, 3304, 3305, 86, 3316, 86, 3307, 86, + 3308, 3317, 86, 3318, 3319, 3322, 3320, 86, 3310, 86, + 3438, 3438, 3311, 86, 86, 3321, 3312, 3313, 3315, 3323, + 3329, 3324, 86, 86, 3325, 3326, 86, 86, 3317, 86, + 86, 86, 3322, 3320, 3327, 86, 3328, 86, 3330, 3438, + 3331, 86, 3321, 86, 3333, 3334, 3323, 3329, 3324, 86, + 3332, 3325, 3326, 3336, 3337, 3339, 3335, 86, 3338, 3340, + 86, 86, 3341, 3328, 86, 3330, 86, 86, 86, 3344, + + 86, 86, 86, 3342, 3345, 3349, 3343, 3332, 3346, 3438, + 3336, 86, 3339, 3335, 86, 3338, 86, 3348, 86, 3341, + 3347, 86, 86, 3350, 3351, 86, 3354, 86, 3359, 3355, + 3342, 86, 3349, 3343, 86, 3346, 86, 3352, 3353, 86, + 3357, 3356, 86, 86, 3348, 86, 3358, 3347, 86, 3360, + 86, 86, 86, 3354, 86, 3359, 3355, 3362, 3361, 3363, + 3364, 3368, 86, 86, 3352, 3353, 86, 3357, 3356, 3366, + 3365, 3369, 3367, 3358, 3370, 3371, 3360, 86, 86, 86, + 86, 86, 3372, 3373, 3362, 3361, 3363, 86, 86, 3374, + 3376, 3377, 3375, 86, 3379, 3385, 3366, 3365, 3369, 3367, + + 86, 86, 3371, 3378, 86, 86, 86, 3381, 3380, 3372, + 3373, 86, 3382, 3389, 3438, 86, 3374, 3388, 86, 3375, + 3383, 86, 86, 3407, 3387, 86, 3410, 86, 86, 3384, + 3378, 86, 86, 3386, 3381, 3380, 3438, 86, 86, 3382, + 86, 86, 3392, 86, 3388, 3390, 3393, 3383, 3391, 3394, + 86, 3387, 3395, 86, 86, 3396, 3384, 86, 3397, 3401, + 3386, 3399, 86, 86, 86, 3400, 86, 86, 3402, 3392, + 3398, 3404, 3390, 3393, 3403, 3391, 3394, 3438, 3438, 3395, + 86, 86, 3396, 3405, 86, 3397, 3401, 3408, 3399, 3414, + 3409, 86, 3400, 86, 86, 3402, 3406, 3398, 3404, 3411, + + 86, 3403, 3412, 86, 86, 3413, 3416, 3423, 3438, 86, + 3405, 86, 3415, 86, 3408, 86, 3414, 3409, 3418, 86, + 86, 3419, 86, 3406, 3422, 3438, 3411, 3417, 3420, 3412, + 3421, 3427, 3413, 86, 86, 86, 86, 3426, 86, 3415, + 86, 3424, 3428, 86, 3425, 3418, 3429, 3430, 3419, 86, + 86, 3422, 86, 3432, 3417, 3420, 3431, 3421, 86, 3433, + 3436, 3437, 86, 86, 3426, 3438, 3438, 3438, 3424, 3428, + 3434, 3425, 3438, 86, 86, 86, 86, 3435, 86, 3438, + 3432, 86, 3438, 3431, 3438, 86, 3433, 86, 86, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3434, 3438, 3438, + + 3438, 3438, 3438, 3438, 3435, 47, 47, 47, 47, 47, + 47, 47, 52, 52, 52, 52, 52, 52, 52, 57, + 57, 57, 57, 57, 57, 57, 63, 63, 63, 63, + 63, 63, 63, 68, 68, 68, 68, 68, 68, 68, + 74, 74, 74, 74, 74, 74, 74, 80, 80, 80, + 80, 80, 80, 80, 89, 89, 3438, 89, 89, 89, + 89, 160, 160, 3438, 3438, 3438, 160, 160, 162, 162, + 3438, 3438, 162, 3438, 162, 164, 3438, 3438, 3438, 3438, + 3438, 164, 167, 167, 3438, 3438, 3438, 167, 167, 169, + 3438, 3438, 3438, 3438, 3438, 169, 171, 171, 3438, 171, + + 171, 171, 171, 174, 3438, 3438, 3438, 3438, 3438, 174, + 177, 177, 3438, 3438, 3438, 177, 177, 90, 90, 3438, + 90, 90, 90, 90, 17, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438 + + } ; + +static yyconst flex_int16_t yy_chk[9892] = + { 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, 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, 3, 3, 3, 4, + 4, 4, 5, 5, 6, 6, 5, 32, 6, 7, + 7, 7, 7, 33, 7, 8, 8, 8, 8, 32, + 8, 9, 9, 9, 10, 10, 10, 19, 51, 51, + + 1105, 19, 3446, 3, 32, 33, 4, 67, 67, 5, + 33, 6, 2797, 13, 13, 13, 13, 7, 13, 14, + 14, 14, 14, 8, 14, 15, 15, 15, 9, 25, + 1105, 10, 11, 11, 11, 11, 11, 11, 12, 12, + 12, 12, 12, 12, 16, 16, 16, 34, 28, 84, + 84, 13, 11, 45, 293, 25, 25, 14, 12, 34, + 39, 23, 15, 23, 23, 45, 23, 1116, 28, 177, + 11, 28, 23, 39, 34, 28, 12, 176, 87, 11, + 45, 16, 87, 293, 37, 12, 30, 39, 29, 56, + 37, 174, 56, 72, 30, 28, 26, 169, 100, 23, + + 24, 24, 29, 26, 24, 30, 72, 26, 99, 24, + 26, 37, 30, 30, 29, 29, 100, 99, 24, 167, + 72, 30, 26, 26, 24, 100, 166, 24, 24, 29, + 26, 24, 30, 164, 26, 99, 24, 26, 46, 163, + 46, 46, 163, 46, 162, 24, 27, 160, 31, 46, + 27, 31, 101, 27, 94, 27, 27, 145, 31, 62, + 31, 62, 62, 195, 62, 101, 27, 70, 27, 70, + 70, 31, 70, 27, 94, 31, 35, 27, 31, 101, + 27, 94, 27, 27, 35, 31, 93, 31, 36, 145, + 35, 85, 36, 27, 35, 195, 44, 161, 161, 42, + + 44, 42, 35, 35, 44, 70, 36, 80, 36, 93, + 42, 35, 75, 93, 36, 36, 42, 35, 92, 36, + 74, 35, 44, 44, 43, 42, 42, 44, 42, 168, + 168, 44, 68, 36, 43, 36, 38, 42, 43, 43, + 38, 95, 92, 42, 38, 92, 219, 43, 63, 111, + 38, 43, 73, 38, 73, 73, 95, 73, 111, 97, + 38, 43, 38, 38, 104, 43, 43, 38, 95, 104, + 79, 38, 79, 79, 58, 79, 111, 38, 219, 86, + 38, 86, 86, 97, 86, 222, 97, 38, 40, 956, + 86, 104, 40, 89, 96, 89, 89, 112, 89, 98, + + 57, 96, 40, 40, 89, 40, 112, 103, 103, 106, + 105, 52, 98, 47, 40, 40, 103, 222, 105, 40, + 956, 96, 18, 98, 112, 137, 98, 106, 17, 40, + 40, 89, 40, 41, 103, 103, 41, 105, 102, 98, + 107, 106, 109, 41, 102, 108, 102, 41, 41, 109, + 224, 137, 137, 107, 106, 41, 113, 0, 108, 102, + 41, 114, 0, 41, 115, 102, 118, 107, 114, 109, + 41, 102, 108, 102, 41, 41, 110, 110, 117, 113, + 116, 117, 224, 113, 110, 126, 115, 0, 114, 119, + 118, 115, 110, 116, 117, 117, 0, 119, 118, 126, + + 123, 0, 117, 110, 110, 117, 120, 116, 117, 124, + 121, 110, 126, 123, 121, 122, 119, 118, 125, 127, + 122, 117, 117, 122, 130, 128, 120, 123, 120, 146, + 121, 130, 124, 120, 121, 129, 124, 121, 125, 127, + 131, 121, 122, 128, 146, 125, 127, 122, 133, 129, + 132, 130, 128, 120, 135, 134, 146, 121, 135, 132, + 0, 136, 129, 131, 134, 138, 140, 131, 136, 141, + 141, 133, 138, 0, 139, 133, 135, 132, 140, 142, + 143, 135, 134, 139, 144, 135, 0, 142, 136, 139, + 0, 143, 138, 140, 148, 143, 141, 139, 144, 0, + + 147, 139, 149, 151, 143, 148, 142, 143, 152, 151, + 139, 144, 155, 149, 148, 150, 139, 147, 143, 152, + 147, 148, 143, 150, 153, 154, 147, 147, 156, 149, + 151, 158, 148, 153, 155, 152, 182, 157, 173, 155, + 154, 159, 150, 156, 147, 153, 157, 147, 182, 153, + 0, 153, 154, 158, 159, 156, 178, 178, 158, 0, + 153, 0, 173, 182, 157, 173, 0, 179, 159, 0, + 0, 165, 153, 165, 165, 170, 165, 170, 170, 171, + 170, 171, 171, 175, 171, 175, 175, 180, 175, 179, + 0, 181, 0, 184, 179, 183, 185, 186, 187, 188, + + 181, 180, 183, 0, 189, 186, 227, 0, 0, 184, + 187, 189, 190, 193, 183, 185, 194, 171, 181, 180, + 184, 188, 183, 185, 186, 187, 188, 191, 180, 183, + 190, 189, 229, 191, 192, 193, 192, 196, 227, 190, + 193, 196, 194, 194, 198, 200, 0, 199, 203, 0, + 204, 201, 205, 200, 202, 210, 206, 204, 196, 191, + 191, 192, 199, 203, 229, 196, 207, 210, 196, 0, + 198, 198, 200, 201, 199, 203, 202, 204, 201, 206, + 205, 202, 210, 206, 205, 196, 197, 208, 207, 213, + 212, 197, 209, 207, 217, 256, 197, 211, 208, 212, + + 211, 217, 197, 197, 214, 209, 216, 205, 0, 197, + 0, 213, 211, 197, 208, 220, 213, 212, 197, 209, + 256, 217, 256, 197, 211, 218, 214, 211, 216, 197, + 197, 214, 215, 216, 221, 215, 218, 215, 226, 225, + 223, 220, 220, 231, 226, 221, 228, 223, 0, 215, + 233, 215, 218, 225, 230, 0, 0, 0, 215, 215, + 234, 0, 215, 232, 215, 226, 221, 223, 228, 239, + 235, 225, 221, 228, 234, 231, 215, 230, 215, 236, + 225, 230, 233, 232, 237, 238, 236, 234, 239, 240, + 232, 235, 241, 244, 238, 242, 239, 235, 243, 238, + + 245, 251, 247, 240, 244, 237, 236, 245, 248, 249, + 243, 237, 238, 242, 241, 253, 240, 248, 246, 241, + 244, 238, 242, 246, 247, 243, 250, 245, 259, 247, + 255, 250, 249, 251, 254, 248, 249, 252, 252, 258, + 257, 254, 260, 261, 262, 264, 252, 253, 257, 0, + 246, 261, 255, 250, 263, 267, 265, 255, 264, 258, + 259, 254, 266, 268, 252, 252, 258, 257, 0, 263, + 261, 269, 264, 270, 260, 271, 262, 270, 267, 272, + 274, 263, 265, 265, 273, 0, 275, 267, 269, 266, + 276, 278, 273, 275, 272, 268, 269, 271, 269, 274, + + 270, 279, 271, 280, 277, 267, 272, 274, 277, 282, + 281, 273, 276, 275, 0, 269, 283, 276, 285, 287, + 289, 284, 286, 278, 288, 280, 288, 285, 283, 290, + 280, 277, 281, 279, 284, 286, 291, 281, 287, 292, + 0, 282, 295, 283, 296, 285, 287, 297, 284, 286, + 294, 288, 289, 290, 299, 298, 290, 300, 297, 294, + 303, 291, 304, 291, 305, 292, 292, 298, 295, 295, + 296, 296, 301, 302, 297, 304, 306, 294, 299, 307, + 300, 299, 298, 309, 300, 308, 311, 313, 0, 304, + 301, 302, 303, 310, 313, 312, 305, 314, 315, 301, + + 302, 306, 308, 306, 315, 317, 314, 316, 308, 309, + 309, 307, 308, 318, 313, 310, 320, 319, 311, 312, + 310, 316, 321, 326, 314, 315, 319, 312, 323, 308, + 321, 317, 317, 322, 316, 325, 324, 318, 326, 320, + 318, 327, 322, 320, 319, 324, 312, 328, 0, 321, + 326, 329, 325, 0, 323, 323, 0, 331, 332, 325, + 322, 0, 325, 324, 0, 333, 329, 332, 336, 335, + 340, 328, 0, 327, 328, 331, 339, 0, 329, 325, + 330, 339, 336, 330, 331, 332, 337, 333, 330, 330, + 330, 330, 333, 335, 340, 336, 335, 340, 330, 338, + + 338, 337, 341, 0, 334, 0, 334, 330, 339, 347, + 330, 342, 345, 337, 342, 330, 330, 330, 330, 334, + 343, 342, 334, 348, 338, 346, 338, 338, 334, 341, + 345, 334, 343, 334, 344, 344, 347, 349, 342, 345, + 350, 342, 351, 346, 344, 348, 334, 343, 352, 334, + 348, 354, 346, 353, 351, 0, 357, 361, 355, 354, + 356, 344, 344, 349, 349, 355, 350, 350, 353, 351, + 352, 358, 356, 358, 360, 352, 362, 363, 354, 361, + 353, 360, 358, 364, 361, 355, 370, 356, 357, 364, + 365, 0, 365, 366, 368, 0, 369, 358, 358, 363, + + 358, 360, 0, 371, 363, 364, 366, 393, 362, 358, + 364, 367, 368, 404, 365, 372, 364, 365, 370, 365, + 366, 368, 369, 369, 367, 375, 376, 367, 377, 367, + 371, 378, 375, 379, 382, 367, 386, 372, 367, 393, + 377, 386, 372, 378, 376, 404, 379, 382, 381, 385, + 376, 367, 375, 376, 367, 377, 367, 373, 378, 373, + 379, 382, 389, 0, 381, 373, 384, 385, 386, 373, + 389, 376, 381, 388, 373, 381, 385, 373, 384, 388, + 0, 387, 390, 373, 373, 391, 373, 392, 387, 389, + 409, 381, 373, 384, 390, 392, 373, 394, 394, 395, + + 388, 373, 387, 391, 373, 374, 395, 374, 387, 390, + 397, 399, 391, 444, 392, 387, 396, 398, 399, 397, + 374, 400, 409, 374, 394, 374, 395, 374, 400, 396, + 0, 374, 374, 401, 374, 398, 402, 403, 399, 398, + 444, 0, 397, 396, 398, 401, 397, 374, 400, 403, + 374, 405, 374, 0, 374, 383, 383, 408, 402, 406, + 401, 407, 398, 402, 403, 383, 406, 383, 383, 383, + 408, 410, 383, 410, 411, 412, 407, 405, 405, 0, + 383, 436, 383, 383, 408, 411, 406, 436, 407, 413, + 413, 430, 383, 414, 383, 383, 383, 412, 410, 383, + + 414, 411, 412, 415, 416, 0, 417, 418, 436, 0, + 419, 419, 0, 420, 415, 416, 422, 423, 413, 417, + 414, 0, 0, 430, 421, 423, 0, 435, 419, 424, + 415, 416, 418, 417, 418, 419, 420, 419, 419, 421, + 420, 424, 422, 422, 423, 426, 425, 421, 427, 428, + 431, 421, 432, 434, 426, 419, 424, 425, 433, 435, + 428, 427, 428, 0, 439, 437, 421, 428, 431, 442, + 438, 434, 426, 425, 432, 427, 428, 431, 440, 432, + 434, 433, 448, 447, 445, 433, 437, 428, 439, 428, + 429, 439, 437, 438, 441, 442, 442, 438, 429, 429, + + 440, 441, 429, 429, 443, 440, 445, 450, 446, 447, + 447, 445, 429, 449, 448, 452, 453, 429, 443, 450, + 454, 441, 446, 457, 455, 429, 429, 451, 454, 429, + 429, 443, 457, 451, 450, 446, 449, 452, 453, 455, + 449, 456, 452, 453, 458, 459, 454, 454, 456, 0, + 457, 455, 460, 461, 451, 454, 463, 0, 462, 458, + 465, 0, 464, 0, 466, 467, 465, 469, 456, 459, + 467, 458, 459, 462, 460, 471, 461, 472, 475, 460, + 461, 471, 463, 463, 464, 462, 0, 465, 473, 464, + 466, 466, 467, 469, 469, 474, 472, 477, 486, 480, + + 475, 474, 471, 476, 472, 475, 473, 479, 480, 479, + 476, 481, 477, 483, 482, 473, 479, 484, 481, 485, + 486, 492, 474, 0, 477, 486, 480, 482, 488, 487, + 476, 488, 493, 489, 479, 484, 479, 490, 481, 493, + 491, 482, 487, 495, 484, 483, 494, 488, 0, 496, + 490, 485, 491, 492, 500, 488, 487, 489, 488, 493, + 489, 497, 496, 498, 490, 499, 495, 491, 498, 501, + 494, 499, 502, 494, 504, 495, 496, 500, 503, 505, + 506, 500, 509, 497, 502, 504, 0, 505, 497, 509, + 498, 501, 499, 495, 506, 512, 501, 510, 511, 502, + + 503, 504, 0, 510, 513, 503, 505, 506, 507, 509, + 511, 0, 513, 507, 514, 507, 516, 515, 512, 521, + 518, 507, 512, 507, 510, 511, 507, 507, 515, 519, + 0, 513, 518, 507, 507, 507, 514, 521, 525, 516, + 507, 514, 507, 516, 515, 517, 521, 518, 507, 517, + 507, 519, 520, 507, 507, 520, 519, 523, 522, 524, + 507, 528, 525, 520, 0, 525, 527, 517, 522, 523, + 524, 526, 517, 527, 530, 526, 517, 531, 529, 520, + 529, 532, 520, 534, 523, 533, 524, 528, 528, 531, + 522, 534, 536, 527, 535, 522, 532, 533, 526, 535, + + 530, 530, 537, 538, 531, 529, 539, 540, 532, 542, + 534, 538, 533, 545, 536, 543, 544, 546, 539, 536, + 537, 535, 551, 547, 549, 0, 558, 542, 540, 537, + 538, 551, 546, 539, 540, 547, 542, 549, 543, 544, + 548, 550, 543, 544, 546, 545, 552, 553, 548, 551, + 547, 549, 554, 550, 555, 557, 556, 555, 558, 560, + 562, 553, 566, 559, 0, 561, 0, 548, 550, 552, + 0, 565, 563, 552, 553, 556, 564, 554, 559, 554, + 561, 555, 557, 556, 562, 563, 566, 562, 564, 566, + 559, 560, 561, 565, 567, 568, 570, 569, 565, 563, + + 571, 567, 569, 564, 567, 572, 568, 573, 574, 575, + 570, 576, 567, 577, 578, 579, 0, 0, 577, 583, + 578, 567, 568, 570, 580, 581, 582, 571, 567, 569, + 579, 567, 572, 584, 582, 574, 575, 585, 583, 573, + 586, 578, 579, 576, 586, 577, 583, 581, 580, 588, + 587, 580, 581, 582, 589, 590, 591, 584, 587, 585, + 584, 593, 592, 595, 585, 591, 594, 586, 0, 597, + 598, 600, 588, 596, 593, 595, 588, 587, 590, 596, + 599, 598, 590, 591, 592, 602, 589, 599, 593, 592, + 595, 597, 594, 594, 601, 604, 597, 598, 602, 606, + + 596, 603, 607, 600, 604, 605, 603, 599, 606, 603, + 603, 610, 602, 607, 613, 611, 601, 608, 609, 0, + 633, 601, 604, 614, 610, 603, 606, 611, 603, 607, + 615, 605, 605, 603, 617, 618, 603, 603, 610, 608, + 609, 614, 611, 616, 608, 609, 613, 619, 622, 620, + 614, 624, 633, 623, 615, 621, 617, 615, 626, 618, + 620, 617, 618, 627, 621, 616, 616, 623, 622, 619, + 616, 629, 625, 624, 619, 622, 620, 629, 624, 625, + 623, 627, 621, 628, 630, 626, 631, 632, 634, 0, + 627, 628, 616, 635, 637, 630, 636, 636, 629, 625, + + 638, 641, 632, 639, 631, 643, 640, 644, 642, 634, + 628, 630, 639, 631, 632, 634, 642, 635, 637, 640, + 635, 637, 638, 641, 645, 636, 646, 638, 641, 644, + 639, 650, 648, 640, 644, 642, 647, 643, 647, 649, + 653, 651, 0, 654, 649, 650, 655, 652, 661, 658, + 646, 654, 0, 646, 648, 651, 645, 656, 650, 648, + 657, 652, 652, 647, 655, 659, 660, 657, 651, 652, + 654, 649, 653, 655, 652, 658, 658, 665, 664, 656, + 661, 660, 662, 664, 656, 659, 0, 657, 652, 652, + 660, 663, 659, 660, 666, 667, 666, 662, 668, 669, + + 0, 663, 670, 665, 665, 671, 668, 672, 660, 662, + 664, 670, 674, 663, 671, 673, 672, 675, 663, 674, + 667, 666, 667, 673, 669, 668, 669, 676, 663, 670, + 677, 678, 671, 679, 672, 680, 682, 684, 681, 674, + 683, 0, 673, 678, 680, 679, 681, 720, 677, 675, + 676, 682, 683, 688, 676, 686, 687, 677, 678, 685, + 679, 688, 680, 682, 689, 681, 685, 683, 686, 684, + 689, 687, 691, 690, 693, 692, 0, 699, 694, 720, + 688, 690, 686, 687, 692, 693, 685, 694, 695, 695, + 696, 689, 697, 698, 0, 691, 701, 695, 696, 691, + + 690, 693, 692, 699, 699, 694, 698, 700, 703, 701, + 702, 705, 704, 708, 697, 695, 695, 696, 702, 697, + 698, 706, 709, 701, 703, 704, 711, 708, 707, 710, + 700, 0, 706, 705, 700, 703, 707, 702, 705, 704, + 708, 712, 709, 713, 715, 714, 711, 717, 706, 709, + 723, 710, 719, 711, 714, 707, 710, 716, 718, 721, + 717, 0, 725, 712, 715, 713, 722, 719, 712, 724, + 713, 715, 714, 723, 717, 716, 718, 723, 727, 719, + 725, 721, 724, 726, 716, 718, 721, 729, 728, 725, + 722, 727, 730, 722, 728, 726, 724, 731, 732, 733, + + 730, 735, 736, 0, 737, 727, 738, 0, 739, 735, + 726, 737, 741, 742, 729, 728, 744, 733, 730, 730, + 732, 741, 743, 739, 731, 732, 733, 730, 735, 738, + 740, 737, 740, 738, 736, 739, 744, 745, 746, 741, + 746, 743, 750, 744, 747, 742, 745, 0, 0, 743, + 753, 747, 0, 0, 750, 0, 756, 740, 760, 757, + 753, 762, 0, 0, 745, 746, 759, 761, 0, 750, + 0, 747, 748, 769, 756, 748, 760, 753, 761, 748, + 757, 763, 748, 756, 762, 760, 757, 759, 762, 748, + 748, 766, 748, 759, 761, 764, 765, 748, 767, 748, + + 766, 775, 748, 768, 775, 769, 748, 763, 763, 748, + 768, 767, 765, 771, 772, 0, 748, 748, 766, 748, + 772, 764, 764, 765, 773, 767, 783, 774, 775, 776, + 768, 770, 770, 773, 770, 771, 778, 770, 777, 0, + 771, 772, 770, 779, 778, 776, 783, 781, 770, 770, + 774, 773, 776, 783, 774, 779, 776, 770, 770, 770, + 777, 770, 782, 778, 770, 777, 780, 782, 780, 770, + 779, 781, 776, 784, 781, 770, 770, 785, 0, 786, + 0, 787, 0, 788, 791, 789, 0, 793, 0, 785, + 792, 790, 0, 780, 782, 794, 795, 806, 0, 784, + + 784, 786, 793, 794, 785, 788, 786, 787, 787, 789, + 788, 791, 789, 790, 793, 792, 797, 792, 790, 795, + 796, 798, 794, 795, 797, 799, 800, 796, 801, 806, + 802, 804, 805, 803, 0, 808, 812, 805, 800, 807, + 798, 801, 803, 797, 809, 811, 804, 796, 798, 809, + 814, 799, 799, 800, 817, 801, 802, 802, 804, 805, + 803, 807, 808, 813, 815, 816, 807, 811, 812, 819, + 0, 813, 811, 818, 820, 821, 809, 824, 817, 822, + 823, 817, 814, 825, 826, 829, 815, 828, 819, 823, + 813, 815, 832, 826, 818, 828, 819, 816, 822, 824, + + 818, 820, 821, 825, 824, 827, 822, 823, 830, 831, + 825, 826, 829, 833, 828, 834, 827, 841, 0, 832, + 836, 837, 838, 834, 839, 838, 830, 843, 831, 846, + 0, 842, 827, 0, 840, 830, 831, 0, 836, 837, + 843, 841, 834, 846, 841, 833, 839, 836, 837, 838, + 845, 839, 840, 842, 843, 844, 846, 844, 842, 847, + 848, 840, 849, 850, 847, 851, 852, 853, 845, 852, + 856, 850, 854, 857, 849, 858, 853, 845, 860, 859, + 854, 858, 844, 851, 860, 0, 848, 848, 0, 849, + 850, 847, 851, 852, 853, 856, 854, 856, 867, 854, + + 857, 859, 858, 861, 862, 860, 859, 854, 863, 864, + 861, 862, 869, 863, 865, 866, 864, 868, 870, 866, + 869, 867, 871, 0, 875, 867, 868, 879, 872, 873, + 861, 862, 865, 874, 876, 863, 864, 873, 0, 869, + 871, 865, 866, 872, 868, 875, 874, 878, 884, 871, + 870, 875, 877, 876, 879, 872, 873, 881, 880, 882, + 874, 876, 889, 883, 881, 877, 880, 884, 886, 878, + 883, 885, 887, 886, 878, 884, 888, 882, 885, 877, + 887, 890, 897, 888, 881, 880, 882, 891, 892, 893, + 883, 895, 0, 896, 889, 886, 0, 894, 885, 887, + + 891, 0, 893, 888, 894, 897, 900, 898, 903, 897, + 902, 899, 901, 890, 891, 898, 893, 904, 901, 899, + 892, 905, 907, 895, 894, 896, 899, 0, 900, 906, + 905, 909, 0, 900, 898, 908, 902, 902, 899, 901, + 903, 904, 908, 906, 904, 911, 899, 913, 905, 912, + 910, 912, 913, 914, 907, 916, 906, 0, 909, 910, + 912, 915, 908, 917, 918, 914, 920, 911, 917, 0, + 919, 918, 911, 925, 920, 932, 912, 910, 912, 913, + 914, 916, 916, 922, 915, 923, 922, 925, 915, 926, + 917, 918, 919, 920, 929, 927, 926, 919, 923, 0, + + 925, 927, 932, 930, 0, 931, 933, 953, 933, 0, + 922, 934, 923, 937, 939, 935, 926, 931, 0, 939, + 929, 929, 927, 928, 936, 928, 930, 935, 0, 928, + 930, 928, 931, 933, 934, 937, 928, 936, 934, 953, + 937, 928, 935, 940, 938, 944, 939, 928, 943, 941, + 928, 936, 928, 0, 942, 944, 928, 938, 928, 945, + 943, 940, 941, 928, 0, 946, 942, 944, 928, 954, + 940, 938, 944, 948, 945, 943, 941, 942, 947, 948, + 950, 942, 944, 949, 0, 951, 945, 946, 955, 952, + 957, 947, 946, 942, 958, 0, 949, 963, 950, 958, + + 948, 954, 966, 962, 960, 947, 951, 950, 965, 959, + 949, 952, 951, 960, 964, 955, 952, 959, 962, 963, + 0, 958, 957, 965, 963, 967, 968, 964, 966, 966, + 962, 960, 970, 969, 973, 965, 959, 961, 972, 0, + 970, 964, 961, 971, 961, 968, 969, 967, 979, 972, + 961, 971, 967, 968, 974, 961, 961, 975, 976, 970, + 969, 0, 961, 961, 961, 972, 973, 976, 977, 961, + 971, 961, 975, 980, 983, 979, 974, 961, 978, 977, + 984, 974, 961, 961, 975, 976, 981, 978, 986, 961, + 985, 988, 989, 981, 987, 977, 980, 0, 985, 995, + + 980, 990, 992, 0, 984, 978, 983, 984, 987, 990, + 986, 994, 993, 981, 989, 986, 996, 985, 997, 989, + 992, 987, 994, 988, 998, 999, 997, 1000, 990, 992, + 993, 995, 999, 1002, 996, 1001, 1005, 1003, 994, 993, + 1000, 1004, 1001, 996, 1007, 997, 998, 1009, 1002, 0, + 0, 998, 999, 1013, 1000, 1003, 1006, 1005, 1009, 1004, + 1002, 1014, 1001, 1005, 1003, 1011, 1006, 1017, 1004, 1014, + 1012, 1015, 1016, 1018, 1009, 1013, 1007, 1012, 1011, 1017, + 1013, 1016, 1019, 1006, 1015, 1022, 1025, 1023, 1014, 1024, + 1026, 0, 1011, 0, 1017, 1018, 1028, 1012, 1015, 1016, + + 1018, 1027, 0, 1033, 1019, 1023, 1033, 1022, 1026, 1019, + 1028, 1030, 1022, 1027, 1023, 1024, 1024, 1026, 1025, 1031, + 1034, 1035, 1030, 1028, 1031, 1036, 1037, 1038, 1027, 1033, + 1033, 1039, 1036, 1033, 1035, 1041, 1038, 1037, 1030, 1042, + 1043, 1045, 0, 1040, 1034, 1039, 1042, 1034, 1035, 1044, + 1048, 1031, 1036, 1037, 1038, 1040, 1046, 1050, 1039, 1049, + 1051, 1044, 1052, 1045, 1058, 1049, 1042, 1041, 1045, 1046, + 1040, 1060, 1043, 1052, 1048, 1053, 1044, 1048, 1054, 1050, + 1056, 1055, 1051, 1046, 1050, 1058, 1049, 1051, 1059, 1052, + 1061, 1058, 1060, 1053, 1062, 1056, 1063, 1064, 1060, 1059, + + 1054, 1065, 1053, 1055, 1066, 1054, 1064, 1056, 1055, 1067, + 1069, 1068, 1071, 1072, 1063, 1059, 1070, 1069, 1067, 1068, + 1073, 1062, 1061, 1063, 1064, 1065, 1071, 1074, 1065, 1075, + 1066, 1066, 1076, 1077, 1078, 1080, 1067, 1069, 1068, 1071, + 1070, 1081, 1083, 1070, 1085, 1072, 1082, 0, 1084, 1074, + 1081, 1075, 1073, 1082, 1074, 1077, 1075, 1080, 1086, 1087, + 1077, 1089, 1080, 1088, 1076, 1090, 1078, 1091, 1081, 1089, + 1084, 1085, 1088, 1082, 1083, 1084, 1086, 1087, 1093, 1092, + 1097, 1095, 1098, 1101, 1094, 1086, 1087, 0, 1089, 1090, + 1088, 1091, 1090, 1094, 1091, 1092, 1095, 1099, 1100, 1096, + + 1093, 1104, 1103, 0, 1107, 1093, 1092, 1096, 1095, 1099, + 1101, 1094, 1097, 1102, 1098, 1103, 1104, 1109, 1106, 1109, + 1100, 1102, 1107, 1112, 1099, 1100, 1096, 1106, 1104, 1103, + 1108, 1107, 1113, 1111, 1114, 1115, 1117, 1119, 1108, 1118, + 1102, 1111, 1115, 1120, 1109, 1106, 1122, 1124, 1123, 1117, + 1112, 1118, 1119, 1121, 1113, 1123, 1114, 1108, 1125, 1113, + 1111, 1114, 1115, 1117, 1119, 1120, 1118, 1126, 1128, 1127, + 1120, 1121, 1130, 1122, 1131, 1123, 1129, 0, 1126, 1124, + 1121, 1134, 1132, 1139, 1137, 1130, 1135, 1131, 1133, 1134, + 1125, 1127, 1137, 1128, 1126, 1128, 1127, 0, 1129, 1130, + + 1133, 1131, 1136, 1129, 1132, 1140, 1135, 1141, 1134, 1132, + 1139, 1137, 1142, 1135, 1136, 1133, 1141, 1143, 1140, 1144, + 1147, 0, 1148, 0, 1142, 1150, 1144, 0, 1149, 1136, + 0, 1145, 1140, 1153, 1141, 0, 1151, 0, 1143, 1142, + 1145, 1152, 1145, 1147, 1143, 1145, 1144, 1147, 1148, 1148, + 1149, 1154, 1150, 1145, 1152, 1149, 1151, 1153, 1145, 1154, + 1153, 1155, 1156, 1151, 1157, 1158, 1159, 1145, 1152, 1145, + 1155, 1161, 1145, 1158, 1160, 1163, 1165, 1166, 1154, 1162, + 1156, 1159, 1170, 1163, 1161, 1167, 1157, 1168, 1155, 1156, + 1171, 1157, 1158, 1159, 1168, 1162, 1160, 1169, 1161, 1166, + + 1175, 1160, 1163, 1165, 1166, 1170, 1162, 1167, 1171, 1170, + 1172, 1173, 1167, 1174, 1168, 1175, 1176, 1171, 0, 1169, + 1178, 1174, 1172, 1173, 1169, 1177, 1179, 1175, 1176, 1182, + 1180, 0, 1181, 0, 1179, 1178, 1180, 1172, 1173, 1183, + 1174, 1181, 1184, 1176, 1186, 1177, 1187, 1178, 1185, 1184, + 1182, 1183, 1177, 1179, 1195, 1185, 1182, 1180, 1187, 1181, + 1188, 1189, 1186, 1191, 1190, 1191, 1183, 1192, 1188, 1184, + 1193, 1186, 1190, 1187, 1198, 1185, 1189, 1193, 1199, 1192, + 1196, 1201, 1197, 1202, 0, 1199, 1195, 1188, 1189, 1200, + 1191, 1190, 1196, 1198, 1192, 1197, 1207, 1193, 1202, 1203, + + 1200, 1198, 1205, 1201, 1203, 1199, 1204, 1196, 1201, 1197, + 1202, 1206, 0, 1209, 1204, 1205, 1200, 1210, 1211, 0, + 0, 1222, 1207, 1207, 1215, 1206, 1212, 1209, 1222, 1205, + 1224, 1203, 1213, 1204, 0, 1210, 1216, 1214, 1206, 1208, + 1209, 0, 1218, 1208, 1210, 1217, 1208, 1208, 1222, 1220, + 1211, 1208, 1212, 1212, 1213, 1214, 1215, 1208, 1216, 1213, + 1237, 1208, 1224, 1216, 1214, 1208, 1208, 1217, 1218, 1218, + 1208, 1219, 1217, 1208, 1208, 1220, 1220, 1219, 1208, 1221, + 1223, 1221, 1225, 1226, 1208, 1229, 1237, 1237, 1208, 1223, + 1226, 1227, 1228, 1230, 1229, 1231, 0, 1233, 1219, 1232, + + 1225, 0, 1236, 1221, 0, 1228, 1221, 1223, 1221, 1225, + 1226, 0, 1229, 1227, 1235, 1236, 1238, 1238, 1227, 1228, + 1233, 1232, 1239, 1243, 1233, 1230, 1232, 1231, 1234, 1236, + 1241, 1242, 1243, 1234, 1244, 1234, 1235, 1234, 1239, 1234, + 0, 1235, 1245, 1242, 0, 1238, 1234, 1245, 1248, 1239, + 1243, 1246, 1244, 1241, 1247, 1234, 1254, 1241, 1242, 1247, + 1234, 1244, 1234, 1249, 1234, 1250, 1234, 1255, 1256, 1246, + 1248, 1251, 1252, 1253, 1245, 1248, 1249, 0, 1246, 1251, + 1252, 1247, 1258, 1250, 1257, 1260, 1253, 1256, 1254, 1259, + 1249, 1264, 1250, 1255, 1255, 1256, 1262, 1257, 1251, 1252, + + 1253, 1261, 1259, 1260, 1258, 1262, 1263, 1265, 1263, 1258, + 1266, 1257, 1260, 1264, 1267, 1268, 1259, 1271, 1264, 1270, + 1273, 1261, 1266, 1262, 1272, 1274, 1276, 1278, 1261, 1275, + 0, 1277, 1272, 1263, 1265, 1281, 1275, 1266, 1273, 1271, + 1268, 1267, 1268, 1270, 1271, 1284, 1270, 1273, 1286, 1278, + 1288, 1272, 1274, 1276, 1278, 1279, 1275, 1277, 1277, 1280, + 1282, 1279, 1281, 1283, 1285, 1280, 1287, 1282, 1288, 1284, + 1289, 1285, 1284, 1283, 1290, 1292, 1294, 1288, 1296, 1295, + 1286, 0, 1279, 1290, 1293, 1297, 1280, 1282, 1287, 0, + 1283, 1285, 1295, 1287, 1298, 1289, 1293, 1289, 1294, 1292, + + 1296, 1290, 1292, 1294, 1297, 1296, 1295, 1299, 1300, 0, + 1301, 1293, 1297, 1303, 1308, 1306, 1298, 1302, 1305, 1309, + 1304, 1298, 1303, 1311, 0, 1312, 1310, 1315, 0, 1306, + 1300, 1299, 0, 1323, 1299, 1300, 1301, 1301, 1305, 1302, + 1303, 1304, 1306, 1312, 1302, 1305, 1308, 1304, 1310, 1313, + 1314, 1309, 1312, 1310, 1315, 1311, 1316, 1313, 1318, 1320, + 1322, 1319, 1321, 1316, 1322, 1323, 1314, 1318, 1324, 1321, + 1325, 1320, 1327, 0, 1329, 1330, 1313, 1314, 1319, 1331, + 1332, 1329, 1330, 1316, 1334, 1318, 1320, 1322, 1319, 1321, + 1328, 1325, 1339, 1332, 1331, 0, 1328, 1325, 1335, 1333, + + 1324, 1329, 1330, 1328, 1327, 1335, 1331, 1332, 1333, 1337, + 1334, 1334, 1336, 1338, 1336, 1341, 1340, 1328, 1337, 1339, + 1340, 1343, 1344, 1328, 1345, 1335, 1333, 1344, 1346, 1343, + 1347, 1348, 1356, 1345, 1352, 1338, 1337, 1341, 1349, 1336, + 1338, 0, 1341, 1340, 1348, 1353, 1346, 0, 1343, 1347, + 1349, 1345, 1352, 1354, 1344, 1346, 1350, 1347, 1348, 1350, + 1351, 1352, 1357, 1351, 1356, 1349, 1354, 0, 1350, 1359, + 1353, 1360, 1353, 1363, 1359, 1358, 1361, 1361, 0, 1360, + 1354, 0, 1351, 1350, 1362, 1357, 1350, 1351, 1364, 1357, + 1351, 1358, 1366, 1362, 1367, 1363, 1365, 1368, 1360, 1366, + + 1363, 1359, 1358, 1361, 1368, 1365, 1373, 1370, 1371, 1372, + 1364, 1362, 1377, 1375, 1374, 1364, 1367, 1371, 1372, 1366, + 1370, 1367, 1375, 1365, 1368, 0, 0, 1378, 1384, 0, + 1376, 1379, 1373, 1373, 1370, 1371, 1372, 1374, 1376, 1379, + 1375, 1374, 1378, 1380, 1377, 1383, 1385, 1381, 1382, 1386, + 1384, 1388, 1387, 1383, 1378, 1384, 1380, 1376, 1379, 1381, + 1382, 1387, 1389, 1391, 1394, 1390, 1385, 1393, 1395, 1388, + 1380, 1386, 1383, 1385, 1381, 1382, 1386, 1390, 1388, 1387, + 1392, 1391, 1396, 1397, 1398, 1400, 1399, 1392, 1389, 1389, + 1391, 1400, 1390, 1393, 1393, 1396, 1394, 1399, 1401, 1402, + + 1395, 1403, 1404, 1405, 0, 1398, 0, 1392, 1408, 1396, + 1397, 1398, 1400, 1399, 1406, 1409, 1414, 1411, 1410, 1413, + 1401, 0, 1412, 0, 1416, 1401, 1411, 1415, 1414, 1405, + 1405, 1402, 1413, 1403, 1404, 1408, 1410, 1412, 1409, 1418, + 1406, 1406, 1409, 1414, 1411, 1410, 1413, 1415, 1417, 1412, + 1416, 1416, 1419, 1421, 1415, 1417, 1420, 1422, 1418, 1423, + 1424, 1421, 1422, 1426, 1423, 1427, 1418, 1424, 1425, 1420, + 1428, 1426, 1432, 1427, 1419, 1417, 1429, 1430, 1433, 1419, + 1421, 1432, 1437, 1420, 1434, 1430, 1431, 1424, 1428, 1422, + 1426, 1423, 1427, 1431, 1425, 1425, 1439, 1428, 1429, 1432, + + 1435, 1436, 1436, 1429, 1430, 1440, 1434, 1435, 1438, 1446, + 1433, 1434, 1441, 1431, 1437, 1446, 1438, 1439, 1442, 1445, + 1441, 1443, 1444, 1439, 1448, 0, 1442, 1435, 1436, 1443, + 1444, 1447, 1445, 1449, 1450, 1438, 1446, 1440, 1452, 1441, + 1453, 1454, 1450, 1447, 1451, 1442, 1445, 1455, 1443, 1444, + 1448, 1448, 1451, 1452, 1456, 1458, 1457, 1449, 1447, 0, + 1449, 1450, 1459, 1462, 1463, 1452, 1464, 1453, 1454, 1455, + 1457, 1451, 1462, 1458, 1455, 1460, 1459, 1456, 1464, 1460, + 1465, 1456, 1458, 1457, 1466, 1467, 1463, 1465, 1468, 1459, + 1462, 1463, 1460, 1464, 1469, 1466, 1470, 0, 1472, 0, + + 1460, 1473, 1460, 1471, 1474, 1476, 1460, 1465, 1470, 1475, + 1468, 1466, 1467, 1479, 1476, 1468, 1475, 1471, 1487, 1460, + 1472, 1477, 1478, 1470, 1473, 1472, 1469, 1474, 1473, 1478, + 1471, 1474, 1476, 1480, 1482, 1484, 1475, 1485, 1490, 1477, + 1486, 1484, 1493, 1482, 1488, 1479, 1492, 1494, 1477, 1478, + 1487, 1488, 1495, 1497, 0, 0, 1502, 0, 1494, 1485, + 1480, 1482, 1484, 1495, 1485, 1490, 1486, 1486, 1499, 1493, + 1492, 1488, 1498, 1492, 1494, 1499, 1500, 1497, 1498, 1495, + 1497, 1501, 1502, 1502, 1503, 1504, 1509, 1506, 1501, 1505, + 0, 1504, 1507, 1510, 1500, 1499, 1503, 1505, 1508, 1498, + + 1513, 1517, 1510, 1500, 1509, 1507, 1511, 1513, 1501, 1506, + 1514, 1503, 1504, 1509, 1506, 1512, 1505, 1512, 1511, 1507, + 1510, 1515, 1516, 1517, 1508, 1508, 1518, 1513, 1517, 1519, + 0, 1516, 1520, 1511, 1515, 1522, 1514, 1514, 1518, 1521, + 1523, 1524, 1512, 0, 1526, 1523, 1521, 1525, 1515, 1516, + 1527, 1529, 1526, 1518, 1531, 1520, 1519, 1524, 1532, 1520, + 0, 1522, 1522, 0, 1533, 1530, 1521, 1523, 1524, 1532, + 1525, 1526, 1527, 1533, 1525, 1534, 1531, 1527, 1529, 1530, + 1536, 1531, 1535, 1535, 1537, 1532, 1537, 1538, 1534, 0, + 1535, 1533, 1530, 1536, 1539, 1542, 1540, 1541, 1544, 1543, + + 1553, 1545, 1534, 1540, 1541, 1546, 1548, 1536, 1545, 1535, + 1535, 1537, 1547, 1538, 1538, 1550, 1539, 1543, 1552, 1555, + 1544, 1539, 1542, 1540, 1541, 1544, 1543, 1553, 1545, 1549, + 1546, 1552, 1546, 1554, 1547, 1557, 1549, 1559, 1548, 1547, + 1555, 1554, 1560, 1563, 1562, 1552, 1555, 1550, 1558, 1564, + 1566, 1558, 1561, 1562, 1565, 1563, 1549, 1557, 1570, 1566, + 1554, 0, 1557, 1559, 1559, 1561, 1571, 1567, 1560, 1560, + 1563, 1562, 1577, 1564, 1574, 1558, 1564, 1566, 1568, 1561, + 1565, 1565, 1567, 1569, 1572, 1568, 1569, 1575, 1571, 1576, + 1570, 1576, 1574, 1571, 1567, 1578, 1577, 1579, 1569, 1577, + + 1572, 1574, 1580, 1584, 1581, 1568, 1582, 1569, 1572, 1575, + 1569, 1572, 1583, 1569, 1575, 1585, 1576, 1591, 0, 1587, + 1592, 1594, 1578, 1590, 0, 1569, 1581, 1572, 1587, 1579, + 1586, 1581, 1582, 1582, 1580, 1584, 1589, 1585, 1583, 1583, + 1588, 1595, 1585, 1589, 1586, 1595, 1587, 1590, 1588, 1591, + 1590, 1593, 1592, 1594, 1596, 1597, 1599, 1586, 1598, 1600, + 0, 1602, 1601, 1589, 1603, 1599, 1600, 1588, 1595, 1601, + 1605, 1604, 1607, 1593, 1602, 1608, 1596, 1603, 1593, 1605, + 1598, 1596, 1597, 1599, 1604, 1598, 1600, 1614, 1602, 1601, + 1606, 1603, 1606, 1609, 1611, 1607, 1612, 1605, 1604, 1607, + + 1608, 1609, 1608, 1615, 1613, 1616, 1617, 1621, 1619, 1611, + 1615, 1612, 1618, 1617, 1619, 1622, 1616, 1606, 1613, 1614, + 1609, 1611, 1622, 1612, 1623, 1618, 1624, 0, 1625, 1629, + 1615, 1613, 1616, 1617, 1621, 1619, 1626, 1627, 1629, 1618, + 1628, 1624, 1622, 1628, 1630, 1631, 1623, 1634, 1626, 1632, + 1627, 1623, 1640, 1624, 1625, 1625, 1629, 1631, 1634, 1641, + 1639, 1636, 1630, 1626, 1627, 1633, 1636, 1628, 1633, 1632, + 1642, 1630, 1631, 1636, 1634, 1638, 1632, 1638, 1657, 1640, + 1643, 1644, 1645, 1633, 1639, 1642, 1641, 1639, 1636, 1643, + 1646, 1647, 1633, 1636, 1648, 1633, 1649, 1642, 1651, 1647, + + 1650, 1652, 1638, 0, 1646, 1644, 1651, 1643, 1644, 1645, + 1657, 1653, 1652, 1656, 1658, 0, 1648, 1646, 1647, 1659, + 1649, 1648, 1650, 1649, 1654, 1651, 1659, 1650, 1652, 1653, + 1655, 1656, 1654, 1655, 1661, 1660, 1663, 1662, 1653, 1664, + 1656, 1658, 1687, 1661, 1664, 1665, 1659, 1663, 1655, 1660, + 1662, 1654, 1669, 1666, 1669, 1671, 1670, 1655, 1672, 1673, + 1655, 1661, 1660, 1663, 1662, 1670, 1674, 1665, 1666, 1672, + 1675, 1664, 1665, 1676, 1687, 0, 1676, 1673, 0, 1669, + 1666, 1671, 1671, 1670, 1675, 1672, 1673, 1677, 1674, 1678, + 1680, 1676, 1683, 1674, 1684, 1679, 1675, 1675, 1678, 1680, + + 1676, 1679, 1681, 1676, 1686, 1683, 1684, 1681, 1685, 1677, + 1689, 1675, 1690, 1685, 1677, 1688, 1678, 1680, 1691, 1683, + 1692, 1684, 1679, 1693, 1688, 1694, 1686, 1698, 1701, 1696, + 1697, 1686, 0, 1692, 1681, 1685, 1696, 1689, 0, 1699, + 1691, 0, 1688, 1697, 1690, 1691, 1694, 1692, 1700, 1703, + 1705, 1707, 1694, 1699, 1700, 1693, 1696, 1697, 1705, 1698, + 1701, 1706, 1708, 0, 1709, 1710, 1699, 1711, 1703, 1706, + 1707, 1716, 1700, 1712, 1715, 1700, 1703, 1705, 1707, 1710, + 1713, 1700, 1709, 1714, 1708, 1711, 1717, 1712, 1706, 1708, + 1718, 1709, 1710, 1713, 1711, 1715, 1714, 1719, 1720, 1721, + + 1712, 1715, 1723, 1716, 1718, 1720, 1722, 1713, 1721, 1724, + 1714, 1725, 1728, 1730, 1722, 1726, 0, 1718, 1717, 1727, + 1726, 1728, 1715, 1724, 1719, 1720, 1721, 1731, 1732, 1723, + 1727, 1733, 0, 1722, 1731, 1734, 1724, 1735, 1736, 1728, + 1730, 1737, 1726, 1725, 0, 1737, 1727, 1740, 1739, 1742, + 1743, 1732, 1741, 1733, 1731, 1732, 1736, 1734, 1733, 1735, + 1747, 1742, 1734, 1749, 1735, 1736, 1739, 1741, 1737, 1745, + 1744, 1740, 1746, 1748, 1740, 1739, 1742, 1743, 1744, 1741, + 1746, 1755, 1759, 1749, 1745, 1753, 1748, 1747, 1750, 1751, + 1749, 1754, 1756, 1753, 1761, 1763, 1745, 1744, 1754, 1746, + + 1748, 1757, 1758, 1750, 1751, 1765, 1760, 1756, 1764, 1759, + 1757, 1766, 1753, 1755, 1786, 1750, 1751, 1763, 1754, 1756, + 1768, 1761, 1763, 1758, 1767, 1769, 1764, 1770, 1757, 1758, + 1760, 1771, 1772, 1760, 1770, 1764, 1771, 1765, 1766, 1767, + 1774, 1772, 1775, 1776, 1773, 1768, 1786, 1768, 1777, 1769, + 1779, 1767, 1769, 1773, 1770, 0, 1778, 1783, 1771, 1772, + 1780, 1776, 1774, 1777, 1775, 1785, 0, 1774, 1778, 1775, + 1776, 1773, 1779, 1780, 1781, 1777, 1784, 1779, 1780, 1783, + 1787, 1781, 1782, 1778, 1783, 1789, 1787, 1780, 1784, 1782, + 1790, 1791, 1785, 1789, 1793, 1794, 1796, 1794, 1790, 1792, + + 1780, 1781, 1791, 1784, 1782, 1795, 1792, 1787, 1794, 1782, + 1797, 1799, 1789, 1798, 1805, 1800, 1782, 1790, 1791, 1793, + 1798, 1793, 1794, 1796, 1794, 1803, 1792, 1801, 1802, 1808, + 1804, 1795, 1795, 1801, 1802, 1806, 1809, 1797, 1799, 1810, + 1798, 1800, 1800, 1812, 0, 1809, 1805, 1811, 1813, 1811, + 1815, 1814, 1803, 1804, 1801, 1802, 1816, 1804, 1814, 1806, + 1818, 1808, 1806, 1809, 1817, 1822, 1818, 1812, 1819, 1833, + 1812, 1810, 1815, 1820, 1811, 1813, 1817, 1815, 1814, 1821, + 1825, 1824, 1827, 1816, 0, 1826, 1828, 1818, 1824, 1825, + 1819, 1817, 1826, 1828, 1833, 1819, 1833, 1822, 1831, 1820, + + 1820, 1821, 1823, 1823, 1823, 1830, 1821, 1825, 1824, 1823, + 1830, 1831, 1826, 1828, 1827, 1832, 1834, 1823, 1836, 1838, + 1837, 1835, 1839, 0, 1840, 1831, 1838, 1832, 1839, 1823, + 1823, 1823, 1834, 1835, 1841, 1841, 1823, 1830, 1837, 1842, + 0, 1845, 1832, 1834, 1846, 1843, 1838, 1837, 1835, 1839, + 1836, 1840, 1843, 1844, 1850, 1847, 1852, 1851, 1844, 1851, + 1854, 1841, 1847, 1855, 1856, 1842, 1842, 1845, 1845, 1855, + 1858, 1846, 1843, 1859, 1852, 1857, 1860, 1862, 1854, 1859, + 1844, 1850, 1847, 1852, 1851, 1861, 1857, 1854, 1860, 1864, + 1855, 1863, 1863, 1865, 1865, 1862, 1856, 1858, 1866, 1868, + + 1859, 1869, 1857, 1860, 1862, 1861, 1872, 1870, 1871, 1866, + 1877, 1876, 1861, 1879, 1870, 1864, 1864, 1873, 1863, 1875, + 1865, 1868, 1880, 1878, 1881, 1866, 1868, 1875, 1871, 1880, + 1887, 1879, 1881, 1869, 1870, 1871, 1883, 1877, 1872, 1882, + 1879, 1886, 1873, 1876, 1873, 1878, 1875, 1884, 1888, 1880, + 1878, 1881, 1885, 1885, 1882, 1891, 1884, 1889, 1890, 1896, + 1883, 1895, 1887, 1883, 1889, 1893, 1882, 1886, 1886, 1897, + 1890, 1891, 1893, 1902, 1884, 1898, 1894, 1897, 1891, 1885, + 1888, 1894, 1891, 1895, 1889, 1890, 1896, 1898, 1895, 1900, + 1901, 1903, 1893, 1904, 1905, 1908, 1897, 1900, 1891, 1902, + + 1902, 1906, 1898, 1894, 1909, 1912, 1910, 1911, 1915, 1907, + 1909, 1904, 1903, 1901, 1907, 1911, 1900, 1901, 1903, 1910, + 1904, 1905, 1908, 1913, 1906, 1907, 1918, 1912, 1906, 1916, + 1913, 1909, 1912, 1910, 1911, 1914, 1907, 1917, 1916, 1920, + 1915, 1907, 1914, 1919, 1931, 1921, 1922, 1924, 1918, 1917, + 1913, 1926, 1933, 1918, 1927, 1929, 1916, 1919, 1926, 1934, + 1934, 1935, 1914, 1925, 1917, 1924, 1920, 1937, 1925, 1922, + 1919, 1921, 1921, 1922, 1924, 1930, 1931, 1936, 1926, 1925, + 1930, 1927, 1929, 1935, 1933, 1939, 1934, 1940, 1935, 1948, + 1925, 1941, 1936, 1943, 1942, 1925, 1942, 1944, 1945, 1937, + + 1939, 1946, 1944, 0, 1936, 1949, 1941, 1930, 1947, 1946, + 1940, 1948, 1939, 1955, 1940, 1947, 1948, 1953, 1941, 1951, + 1949, 1942, 1956, 1952, 1944, 1943, 1957, 1958, 1946, 1959, + 1945, 1952, 1949, 1960, 1951, 1947, 1959, 1955, 0, 1953, + 1955, 1961, 1962, 1964, 1953, 1963, 1951, 1968, 1956, 1956, + 1952, 1966, 1969, 1957, 1958, 1970, 1959, 1975, 1974, 1976, + 1972, 1964, 1961, 1980, 1962, 1960, 1963, 1969, 1961, 1962, + 1964, 1968, 1963, 1966, 1968, 1972, 1973, 1976, 1966, 1969, + 1974, 1970, 1970, 1977, 1975, 1974, 1976, 1972, 1979, 1978, + 1980, 1973, 1981, 1983, 1985, 1982, 1984, 1987, 1988, 1981, + + 1989, 0, 1983, 1973, 1984, 1977, 1986, 1988, 0, 0, + 1977, 1978, 1979, 1982, 0, 1979, 1978, 1985, 1989, 1981, + 1983, 1985, 1982, 1984, 1991, 1988, 1990, 1989, 1986, 1987, + 1993, 1994, 1995, 1986, 1997, 1990, 1996, 1991, 2002, 1999, + 1994, 1993, 2000, 1996, 1998, 2001, 2005, 0, 2000, 0, + 1995, 1991, 2002, 1990, 1999, 2007, 1993, 1993, 1994, 1995, + 1997, 1997, 1998, 1996, 2008, 2002, 1999, 2001, 1993, 2000, + 2009, 1998, 2001, 2005, 2011, 2008, 2012, 2013, 2014, 2007, + 2015, 2009, 2007, 2016, 2017, 2018, 2011, 2020, 2014, 2012, + 2021, 2008, 2023, 2025, 2024, 2028, 2023, 2009, 0, 0, + + 2026, 2011, 2028, 2012, 2018, 2014, 2015, 2015, 2016, 2013, + 2016, 2017, 2018, 2027, 2020, 2024, 2021, 2021, 2027, 2023, + 2026, 2024, 2028, 2029, 2030, 2025, 2031, 2026, 2032, 2033, + 2040, 2035, 2031, 2034, 2036, 2036, 2037, 2040, 0, 2043, + 2027, 2038, 2030, 2032, 2033, 2034, 2035, 2046, 2037, 2029, + 2029, 2030, 2042, 2031, 2038, 2032, 2033, 2040, 2035, 2051, + 2034, 2036, 2038, 2037, 2044, 2041, 2043, 2042, 2038, 2041, + 2045, 2046, 2047, 2044, 2046, 2048, 2050, 2045, 2052, 2042, + 0, 2038, 2048, 2056, 2051, 2053, 2051, 2052, 2054, 2061, + 0, 2044, 2041, 2059, 2047, 2058, 2063, 2045, 2050, 2047, + + 2065, 2056, 2048, 2050, 2058, 2052, 2060, 2053, 2054, 2062, + 2056, 2059, 2053, 2066, 2061, 2054, 2061, 2062, 2067, 2069, + 2059, 2060, 2058, 2068, 2068, 2065, 2066, 2065, 2063, 2070, + 2071, 2072, 2074, 2060, 2073, 2075, 2062, 2077, 2076, 2074, + 2066, 2069, 0, 2073, 2079, 2067, 2069, 2078, 2084, 2079, + 2068, 2077, 2071, 2072, 2070, 2088, 2070, 2071, 2072, 2074, + 2076, 2073, 2078, 2080, 2077, 2076, 2083, 2075, 2085, 2082, + 2089, 2086, 2091, 2087, 2078, 2084, 2079, 2082, 2090, 2083, + 2087, 2091, 2080, 2086, 2093, 0, 2095, 2088, 2096, 2094, + 2080, 0, 2089, 2083, 2085, 2085, 2082, 2089, 2086, 2091, + + 2087, 2092, 0, 2090, 2094, 2090, 2097, 2098, 2099, 2092, + 0, 2093, 2095, 2095, 2096, 2096, 2094, 2099, 2102, 2101, + 2092, 2103, 2101, 2105, 2097, 2104, 2106, 2103, 2092, 2098, + 2104, 0, 2107, 2097, 2098, 2099, 2092, 2101, 2105, 2109, + 2110, 2111, 2113, 2102, 2106, 2102, 2101, 2107, 2103, 2101, + 2105, 2114, 2115, 2106, 2109, 2116, 2113, 2104, 2114, 2107, + 2119, 0, 2110, 2111, 2117, 2118, 2109, 2110, 2111, 2113, + 2115, 2119, 2121, 2117, 2118, 2120, 2122, 2120, 2114, 2115, + 2125, 2126, 2116, 2123, 2128, 2121, 2127, 2119, 2122, 0, + 2129, 2117, 2118, 2127, 0, 2125, 2126, 2130, 2135, 2121, + + 2136, 2133, 2120, 2122, 2136, 2123, 2128, 2125, 2126, 2137, + 2123, 2128, 2129, 2127, 2133, 2130, 2139, 2129, 2139, 2135, + 2138, 2137, 2133, 2141, 2130, 2135, 2140, 2136, 2133, 2138, + 2142, 2143, 2144, 2145, 0, 2147, 2137, 2148, 2149, 2146, + 2144, 2133, 2152, 2139, 2140, 2148, 2150, 2138, 2142, 2147, + 2141, 2150, 2153, 2140, 2154, 2159, 2145, 2142, 2143, 2144, + 2145, 2146, 2147, 2151, 2148, 2156, 2146, 2155, 2151, 2166, + 2149, 2160, 2156, 2150, 2152, 2161, 2162, 0, 2154, 2163, + 2169, 2154, 2159, 0, 2153, 2160, 2155, 2167, 2170, 2164, + 2165, 0, 2156, 2161, 2155, 2151, 2160, 2160, 2160, 2165, + + 2168, 2166, 2161, 2162, 2164, 2163, 2163, 2169, 2171, 2167, + 2170, 2173, 2160, 0, 2167, 2170, 2164, 2165, 2174, 2175, + 2178, 2176, 2178, 2160, 0, 2174, 2168, 2168, 2176, 2179, + 2182, 2180, 2181, 0, 2173, 2180, 2188, 0, 2173, 2186, + 2171, 2183, 2175, 2184, 2181, 2174, 2175, 2178, 2176, 2189, + 2183, 2179, 2182, 2185, 2184, 2199, 2179, 2182, 2180, 2181, + 2185, 2186, 2187, 2188, 2191, 2190, 2186, 2187, 2183, 2193, + 2184, 2195, 2189, 2192, 2192, 2194, 2189, 2190, 2193, 2195, + 2185, 2196, 2199, 2197, 2198, 2201, 2191, 2202, 2207, 2187, + 2194, 2191, 2190, 2198, 2207, 2202, 2193, 2197, 2195, 2203, + + 2192, 2204, 2194, 2196, 2201, 2204, 2205, 2203, 2196, 2205, + 2197, 2198, 2201, 2206, 2202, 2207, 2208, 2209, 2211, 2214, + 2213, 2206, 0, 2209, 2216, 2217, 2203, 2215, 2204, 2219, + 2211, 2208, 2214, 2205, 2213, 2218, 2220, 0, 2223, 2224, + 2206, 2226, 2221, 2208, 2209, 2211, 2214, 2213, 2215, 2216, + 2220, 2216, 2217, 2219, 2215, 2221, 2219, 2218, 2222, 2225, + 2228, 2227, 2218, 2220, 2223, 2223, 2224, 2229, 2226, 2221, + 2231, 2232, 2222, 2227, 2228, 2236, 2237, 2230, 2233, 2235, + 2230, 2238, 2236, 2237, 2225, 2222, 2225, 2228, 2227, 2239, + 2240, 2241, 2242, 2229, 2229, 2230, 2238, 2231, 2232, 2241, + + 2233, 2235, 2236, 2237, 2230, 2233, 2235, 2230, 2238, 2244, + 2245, 2243, 2246, 2247, 2248, 2249, 2239, 2240, 2241, 2242, + 2243, 2251, 2245, 2256, 2255, 2250, 2258, 2253, 2249, 2263, + 0, 2251, 2252, 2261, 2246, 2253, 2244, 2245, 2243, 2246, + 2247, 2248, 2249, 2250, 2260, 2252, 2255, 2257, 2251, 2259, + 2256, 2255, 2250, 2258, 2253, 2257, 2263, 2261, 2259, 2252, + 2261, 0, 2262, 2265, 2264, 2260, 2268, 2266, 2270, 2276, + 2274, 2260, 2264, 2269, 2257, 2265, 2259, 2262, 2268, 2272, + 2273, 2269, 2274, 2278, 2273, 2275, 2272, 2279, 2262, 2262, + 2265, 2264, 2266, 2268, 2266, 2270, 2276, 2274, 2282, 2279, + + 2269, 2277, 2284, 2280, 2262, 2278, 2272, 2273, 2275, 2277, + 2278, 2283, 2275, 2285, 2279, 2280, 2288, 2288, 2283, 2289, + 2292, 2290, 2284, 2286, 2287, 2282, 2285, 2291, 2277, 2284, + 2280, 2294, 2286, 2287, 2295, 2292, 0, 2292, 2283, 2290, + 2285, 2302, 2302, 2288, 2292, 2289, 2289, 2292, 2290, 2295, + 2286, 2287, 2291, 2296, 2291, 2297, 2298, 2299, 2298, 2300, + 2306, 2295, 2292, 2294, 2292, 2300, 2301, 2304, 2302, 2305, + 2307, 2299, 2306, 2308, 0, 2296, 2311, 2297, 0, 2309, + 2296, 0, 2297, 2298, 2299, 2309, 2300, 2306, 2301, 2304, + 2312, 2305, 2310, 2301, 2304, 2314, 2305, 2314, 2313, 2315, + + 2316, 2322, 2307, 2317, 2310, 2308, 2309, 2323, 2311, 2326, + 2318, 2319, 2312, 2315, 2320, 2330, 2326, 2312, 2321, 2310, + 2313, 2317, 2314, 2324, 2316, 2313, 2315, 2316, 2318, 2319, + 2317, 2321, 2320, 2322, 2328, 2332, 2326, 2318, 2319, 2323, + 2329, 2320, 0, 2331, 0, 2321, 2324, 2330, 2333, 2334, + 2324, 2331, 2328, 2332, 2337, 2339, 2335, 2338, 2335, 2341, + 2340, 2328, 2332, 2335, 2343, 2337, 2329, 2329, 2338, 2331, + 2331, 2334, 2340, 2348, 2333, 2333, 2334, 2341, 2331, 2343, + 2345, 2337, 2339, 2335, 2338, 2335, 2341, 2340, 2344, 2346, + 2349, 2343, 2345, 2351, 2350, 2352, 2355, 2348, 2353, 2344, + + 2348, 2350, 2356, 2358, 2346, 2357, 2359, 2345, 2351, 2361, + 2360, 0, 2349, 2363, 0, 2344, 2346, 2349, 2362, 2364, + 2351, 2350, 2352, 2355, 2353, 2353, 2356, 2357, 2360, 2356, + 2365, 2362, 2357, 2366, 2364, 2358, 2361, 2360, 2359, 2363, + 2363, 2366, 2367, 2365, 2368, 2362, 2364, 2372, 2369, 0, + 2370, 0, 2374, 0, 2373, 2376, 0, 2365, 2375, 2378, + 2366, 2369, 2380, 0, 2379, 2377, 2378, 2390, 2367, 2367, + 2372, 0, 2370, 2376, 2372, 2369, 2368, 2370, 2373, 2374, + 2375, 2373, 2376, 2377, 2381, 2375, 2378, 2379, 2383, 2380, + 2384, 2379, 2377, 2385, 2386, 2387, 2388, 2384, 2381, 2390, + + 2385, 2393, 2389, 2388, 2391, 2392, 0, 2386, 2394, 2393, + 2383, 2381, 2395, 2396, 2392, 2383, 2394, 2384, 2387, 2396, + 2385, 2386, 2387, 2388, 2389, 2391, 2398, 2399, 2393, 2389, + 2400, 2391, 2392, 2401, 2395, 2394, 2402, 2403, 2399, 2395, + 2396, 2398, 2405, 2407, 0, 2408, 0, 2410, 2410, 2409, + 2415, 2411, 2400, 2398, 2399, 2402, 2407, 2400, 2414, 2417, + 2405, 2418, 2403, 2402, 2403, 2401, 2421, 2425, 2416, 2405, + 2407, 2408, 2408, 2409, 2410, 2423, 2409, 2411, 2411, 2418, + 2425, 2414, 2415, 2416, 2423, 2414, 2417, 2426, 2418, 2429, + 2430, 2430, 2434, 2421, 2425, 2416, 2432, 2431, 2426, 2433, + + 2436, 2438, 2423, 2431, 2439, 2441, 0, 2442, 0, 2440, + 2441, 2429, 2451, 2445, 2426, 2448, 2429, 2430, 2432, 2434, + 2440, 2433, 2455, 2432, 2431, 2461, 2433, 2436, 2450, 2442, + 2439, 2439, 2441, 2438, 2442, 2444, 2440, 2445, 2446, 2447, + 2445, 2452, 2448, 2444, 2451, 2453, 2450, 2456, 2457, 2455, + 2452, 2458, 2461, 2446, 2447, 2450, 2457, 2453, 2460, 2462, + 2458, 2463, 2444, 2467, 2464, 2446, 2447, 2465, 2452, 0, + 2463, 2456, 2453, 2466, 2456, 2457, 2467, 2470, 2458, 2468, + 2469, 2462, 2464, 2473, 2460, 2460, 2462, 2474, 2463, 2465, + 2467, 2464, 2468, 2475, 2465, 2469, 2471, 2476, 2466, 2470, + + 2466, 2472, 2477, 2471, 2470, 2473, 2468, 2469, 2472, 2479, + 2473, 2478, 2480, 0, 2474, 2481, 0, 2482, 2479, 0, + 2475, 2487, 2483, 2471, 2476, 2484, 2478, 2487, 2472, 2477, + 2485, 2489, 2484, 2486, 2480, 2488, 2479, 2483, 2478, 2480, + 2486, 2481, 2481, 2482, 2482, 2485, 2488, 2490, 2487, 2483, + 2491, 2492, 2484, 2493, 2501, 2490, 2494, 2485, 2489, 2495, + 2486, 2496, 2488, 2497, 2502, 2498, 2499, 0, 2500, 2493, + 2497, 2494, 0, 2499, 2490, 2500, 2496, 2491, 2492, 2495, + 2493, 2501, 2502, 2494, 2503, 2503, 2495, 2498, 2496, 2504, + 2497, 2502, 2498, 2499, 2505, 2500, 2504, 2506, 2508, 2507, + + 2506, 0, 2509, 2508, 2510, 0, 2511, 0, 2505, 2518, + 2512, 2503, 2507, 2518, 2516, 2517, 2504, 2521, 2513, 2510, + 2517, 2505, 2514, 2516, 2506, 2508, 2507, 2509, 2512, 2509, + 2513, 2510, 2511, 2511, 2514, 2519, 2518, 2512, 2520, 2521, + 2523, 2516, 2517, 2524, 2521, 2513, 2522, 0, 2525, 2514, + 2527, 2520, 2529, 2531, 2530, 0, 2532, 2536, 0, 2519, + 2533, 0, 2519, 2530, 2532, 2520, 2536, 2523, 2522, 2531, + 2524, 0, 2533, 2522, 2525, 2525, 2527, 2527, 2529, 2529, + 2531, 2530, 2535, 2532, 2536, 2537, 2538, 2533, 2539, 2535, + 2537, 2540, 2541, 2538, 2542, 2543, 2544, 2547, 2540, 2545, + + 2551, 2542, 2549, 2548, 2543, 2544, 2539, 2549, 2554, 2535, + 2550, 2555, 2537, 2538, 2553, 2539, 2548, 2541, 2540, 2541, + 2555, 2542, 2543, 2544, 2547, 2545, 2545, 2551, 2550, 2549, + 2548, 2556, 2553, 2557, 2558, 2554, 2559, 2550, 2555, 2560, + 2556, 2553, 2562, 2561, 2563, 2559, 2558, 2564, 2560, 2565, + 2562, 2567, 2568, 2557, 2561, 2566, 2565, 2569, 2556, 2570, + 2557, 2558, 0, 2559, 2566, 2575, 2560, 2573, 2571, 2562, + 2561, 2563, 2567, 2572, 2564, 2573, 2565, 2571, 2567, 2568, + 2574, 2576, 2566, 2577, 2569, 2572, 2580, 2575, 2576, 2578, + 2577, 2570, 2575, 2574, 2573, 2571, 2579, 2581, 2582, 2586, + + 2572, 2584, 0, 2588, 2587, 0, 0, 2574, 2576, 2584, + 2577, 2578, 2587, 2580, 2590, 2591, 2578, 2586, 2588, 2598, + 2589, 2579, 2581, 2579, 2581, 2582, 2586, 2589, 2584, 2597, + 2588, 2587, 2592, 2596, 2601, 2593, 2590, 2591, 2599, 2592, + 2596, 2590, 2591, 2593, 2604, 2600, 2598, 2589, 2602, 2608, + 2599, 2603, 2609, 2597, 2600, 0, 2597, 2606, 2607, 2592, + 2596, 2601, 2593, 2603, 2602, 2599, 2609, 2604, 2611, 2606, + 2612, 2604, 2600, 2614, 2617, 2602, 2608, 2612, 2603, 2609, + 2611, 2607, 2613, 2616, 2606, 2607, 2619, 2621, 2618, 2613, + 2622, 2620, 2617, 0, 2624, 2611, 2626, 2612, 2616, 2620, + + 2614, 2617, 2623, 2626, 2625, 2624, 2627, 0, 2632, 2613, + 2616, 2618, 2622, 2619, 2621, 2618, 2634, 2622, 2620, 2625, + 2623, 2624, 2633, 2626, 2635, 2636, 2637, 2633, 2638, 2623, + 2639, 2625, 2640, 2627, 2632, 2632, 2644, 2652, 2635, 2636, + 2641, 0, 2642, 2634, 2637, 2652, 2638, 2641, 2639, 2633, + 2647, 2635, 2636, 2637, 2642, 2638, 2648, 2639, 2649, 2640, + 2650, 2651, 2654, 2644, 2652, 0, 2653, 2641, 2657, 2642, + 2658, 2649, 2647, 2660, 2656, 2661, 2662, 2647, 2648, 2659, + 2651, 2654, 2650, 2648, 2653, 2649, 2656, 2650, 2651, 2654, + 2657, 2659, 2658, 2653, 2664, 2657, 2663, 2658, 2662, 2665, + + 2660, 2656, 2661, 2662, 2663, 2666, 2659, 2667, 2668, 2669, + 2671, 2670, 2672, 0, 0, 2674, 2667, 2668, 2673, 2665, + 2675, 2664, 2679, 2663, 2672, 2681, 2665, 2666, 2680, 2678, + 2681, 2682, 2666, 2670, 2667, 2668, 2671, 2671, 2670, 2672, + 2673, 2669, 2674, 2678, 2683, 2673, 2684, 2675, 2685, 2679, + 2687, 2686, 2680, 2682, 2692, 2680, 2678, 2681, 2682, 2684, + 2693, 2688, 2690, 2689, 2691, 0, 2683, 2695, 0, 2699, + 2691, 2683, 2687, 2684, 2686, 2689, 2694, 2687, 2686, 2688, + 2685, 2690, 2695, 2698, 2697, 2701, 2692, 2703, 2688, 2690, + 2689, 2691, 2693, 2699, 2695, 2704, 2699, 2705, 2694, 2706, + + 2701, 2707, 2708, 2694, 2697, 2698, 2705, 2709, 2714, 2703, + 2698, 2697, 2701, 2706, 2703, 0, 2713, 2704, 2710, 2707, + 2708, 2715, 2704, 2718, 2705, 2713, 2706, 2720, 2707, 2708, + 2719, 2718, 2721, 2709, 2709, 2720, 2710, 2719, 2722, 2723, + 2714, 2725, 2715, 2713, 2724, 2710, 2726, 2723, 2715, 2729, + 2718, 2732, 2727, 2725, 2720, 2733, 2731, 2719, 2722, 2721, + 2727, 2729, 2724, 2731, 2735, 2722, 2723, 2734, 2725, 2734, + 2736, 2724, 2737, 2726, 2732, 2738, 2729, 2739, 2732, 2727, + 2746, 2737, 2733, 2731, 2740, 0, 2741, 2743, 0, 0, + 2754, 2747, 2744, 2748, 2734, 0, 2735, 2749, 2755, 2737, + + 2752, 2757, 2736, 2740, 2739, 2743, 2744, 2738, 2741, 2750, + 2749, 2740, 2746, 2741, 2743, 2747, 2748, 2754, 2747, 2744, + 2748, 2750, 2753, 2758, 2749, 2755, 2752, 2752, 2757, 2759, + 2761, 2753, 2763, 2764, 2769, 2766, 2750, 2765, 2767, 2763, + 2766, 2769, 2770, 2772, 2773, 0, 2758, 2778, 2774, 2753, + 2758, 2759, 2765, 2767, 2782, 2764, 2759, 2761, 0, 2763, + 2764, 2769, 2775, 2776, 2765, 2767, 2783, 2766, 2770, 2770, + 2772, 2773, 2774, 2779, 2778, 2774, 2775, 2776, 2781, 2784, + 2786, 2782, 2779, 2785, 2787, 2781, 2789, 2788, 2790, 2775, + 2776, 2791, 2783, 2783, 2792, 2785, 2788, 2795, 2787, 2789, + + 2779, 2796, 2803, 2798, 2802, 2781, 2784, 2786, 2798, 2806, + 2785, 2787, 2799, 2789, 2788, 2800, 2799, 2792, 2791, 2801, + 2790, 2792, 2800, 2796, 2805, 2802, 2801, 2809, 2796, 2795, + 2804, 2802, 2804, 2811, 2803, 2798, 2806, 2812, 2814, 2799, + 2814, 0, 2800, 2815, 0, 2816, 2801, 2805, 0, 2809, + 2821, 2805, 2811, 2818, 2809, 2820, 2822, 2804, 2817, 2817, + 2811, 2812, 2820, 2821, 2812, 2814, 2823, 2815, 2817, 2819, + 2815, 2816, 2816, 2824, 2825, 2818, 2826, 2821, 2819, 2823, + 2818, 2824, 2820, 2822, 2826, 2817, 2817, 2825, 2827, 2828, + 2829, 2830, 2831, 2823, 2828, 2829, 2819, 2824, 2832, 2830, + + 2824, 2825, 2833, 2826, 2834, 0, 2835, 2827, 2824, 2836, + 2838, 0, 2837, 2839, 2839, 2827, 2840, 2838, 2830, 2831, + 2836, 2828, 2829, 2842, 2832, 2832, 2843, 2841, 2833, 2833, + 2834, 2834, 2835, 2835, 2837, 2841, 2836, 2838, 2840, 2837, + 2839, 2844, 2845, 2840, 2843, 2842, 2847, 2848, 2844, 2845, + 2842, 2849, 2850, 2843, 2841, 2852, 2853, 2854, 2855, 2857, + 0, 2850, 0, 2858, 2864, 0, 0, 2870, 2844, 2845, + 2859, 2860, 2870, 2847, 2848, 2849, 2853, 2861, 2849, 2850, + 2855, 2858, 2852, 2853, 2854, 2855, 2857, 2863, 2859, 2860, + 2858, 2864, 2865, 2866, 2867, 2861, 2863, 2859, 2860, 2870, + + 2868, 2869, 2867, 2871, 2861, 2872, 2873, 2878, 2880, 2877, + 2895, 2866, 2881, 2869, 2863, 2865, 2868, 2871, 2885, 2865, + 2866, 2867, 2882, 2872, 2882, 2881, 2886, 2868, 2869, 2873, + 2871, 2877, 2872, 2873, 2878, 2880, 2877, 2883, 2891, 2881, + 2887, 2890, 2895, 2890, 2886, 2885, 2883, 2894, 2892, 2882, + 2901, 2899, 2904, 2886, 2894, 2887, 2897, 2899, 2902, 2906, + 2891, 2903, 2907, 0, 2883, 2891, 2892, 2887, 2890, 2908, + 2904, 2897, 2901, 2911, 2894, 2892, 2907, 2901, 2899, 2904, + 2902, 2906, 2908, 2897, 2912, 2902, 2906, 2903, 2903, 2907, + 2909, 2913, 2914, 2909, 2915, 2916, 2908, 0, 2919, 0, + + 2911, 2915, 2917, 2916, 2920, 2921, 2922, 0, 0, 2925, + 2914, 2912, 2926, 2924, 2923, 2925, 2909, 2909, 2913, 2914, + 2909, 2915, 2916, 2923, 2917, 2928, 2920, 2921, 2924, 2917, + 2919, 2920, 2921, 2922, 2926, 2927, 2925, 2930, 2932, 2926, + 2924, 2923, 0, 2929, 2927, 2929, 2933, 2934, 0, 2935, + 2936, 2937, 2940, 2942, 2938, 0, 0, 2928, 2936, 2940, + 2946, 2932, 2927, 2937, 2930, 2932, 2938, 2952, 2933, 2934, + 2929, 2944, 2945, 2933, 2934, 2935, 2935, 2936, 2937, 2940, + 2942, 2938, 2947, 2946, 2948, 2944, 2945, 2946, 2949, 2950, + 2951, 2956, 2953, 2952, 2952, 2948, 2949, 2954, 2944, 2945, + + 2947, 2955, 2955, 2960, 2961, 2957, 2954, 2965, 2950, 2947, + 2953, 2948, 2951, 2957, 2963, 2949, 2950, 2951, 2956, 2953, + 2963, 2969, 2967, 2971, 2954, 2968, 2970, 2973, 2955, 2975, + 2960, 2961, 2957, 2967, 2965, 2974, 2968, 2970, 2976, 2980, + 2977, 2963, 2974, 2969, 2977, 2971, 2983, 2975, 2969, 2967, + 2971, 2978, 2968, 2970, 2973, 2981, 2975, 2986, 2987, 2978, + 2991, 2982, 2974, 2999, 2986, 2980, 2980, 2977, 2981, 2982, + 2976, 2988, 2990, 2983, 2992, 2995, 2994, 2990, 2978, 2993, + 2996, 3000, 2981, 2994, 2986, 2998, 2997, 2991, 2982, 3000, + 2987, 2993, 2998, 2988, 2995, 2999, 2996, 3003, 2988, 2990, + + 3001, 2992, 2995, 2994, 2997, 3004, 2993, 2996, 3000, 3002, + 3005, 3006, 2998, 2997, 3007, 3001, 3002, 3004, 3011, 3012, + 3013, 2995, 3014, 3015, 3003, 3016, 3012, 3001, 3020, 3019, + 0, 3021, 3004, 3011, 3005, 3006, 3002, 3005, 3006, 3017, + 3007, 3007, 3023, 3025, 3031, 3011, 3012, 3015, 3017, 3014, + 3015, 3019, 3013, 3021, 3022, 3020, 3019, 3016, 3021, 3024, + 3024, 3027, 3022, 3028, 3030, 3029, 3017, 3029, 3033, 3024, + 3025, 3031, 3028, 3036, 3023, 3032, 3027, 3037, 3030, 3033, + 3034, 3022, 3046, 3032, 3038, 3041, 3024, 3024, 3027, 3042, + 3028, 3030, 3029, 3040, 3043, 3033, 3039, 3047, 3034, 3044, + + 3036, 3049, 3032, 0, 3037, 3054, 3038, 3034, 3060, 3039, + 3054, 3038, 3041, 3044, 3046, 3040, 3042, 3045, 3045, 3047, + 3040, 3043, 3052, 3039, 3047, 3056, 3044, 3058, 3049, 3055, + 3052, 3057, 3054, 3056, 3055, 3060, 3057, 3061, 3061, 3062, + 3066, 3064, 3063, 3065, 3045, 3067, 3069, 3062, 3064, 3052, + 3070, 3081, 3056, 3058, 3058, 3063, 3055, 3070, 3057, 3072, + 3076, 3065, 3078, 3071, 3061, 3082, 3062, 3066, 3064, 3063, + 3065, 3071, 3067, 3075, 3079, 3080, 3083, 3070, 3069, 3075, + 3082, 3072, 3084, 3081, 3085, 3087, 3072, 3076, 3080, 3078, + 3071, 3088, 3082, 3091, 0, 3083, 3079, 3089, 3090, 3092, + + 3075, 3079, 3080, 3083, 3089, 3090, 3085, 3093, 3087, 3084, + 3095, 3085, 3087, 3088, 3092, 3091, 3097, 3104, 3088, 3096, + 3091, 3100, 3101, 3097, 3089, 3090, 3092, 3096, 3093, 3095, + 3100, 3098, 3106, 3101, 3093, 3102, 3102, 3095, 3098, 3104, + 3108, 3103, 3109, 3097, 3104, 3102, 3096, 3103, 3100, 3101, + 3107, 3112, 3113, 3111, 3106, 3116, 3117, 3107, 3098, 3106, + 3111, 3118, 3102, 3102, 3109, 3122, 3113, 3123, 3103, 3109, + 3125, 3127, 3108, 3124, 3130, 3112, 3132, 3107, 3112, 3113, + 3111, 3124, 3116, 3117, 3118, 3128, 3128, 0, 3118, 3123, + 3129, 3129, 3122, 3134, 3123, 3131, 3131, 3125, 3127, 3132, + + 3124, 3130, 3136, 3132, 3135, 3138, 3141, 3137, 3143, 3144, + 3142, 0, 0, 3141, 3128, 3134, 3137, 3142, 3138, 3129, + 3134, 3145, 3135, 3148, 3131, 3148, 3149, 3151, 3145, 3136, + 3143, 3135, 3138, 3141, 3137, 3143, 3144, 3142, 3150, 3152, + 3154, 3155, 3156, 3159, 3157, 3151, 3149, 3158, 3145, 3154, + 3148, 3152, 3160, 3149, 3151, 3162, 3165, 3173, 3172, 3164, + 3161, 3150, 3157, 3155, 3164, 3150, 3152, 3154, 3155, 3156, + 3159, 3157, 3161, 3158, 3158, 3163, 3169, 3162, 3163, 3160, + 3167, 3166, 3162, 3166, 3168, 3172, 3175, 3161, 3165, 3173, + 3168, 3164, 3167, 3163, 3170, 3176, 3171, 3174, 3169, 3181, + + 3177, 0, 3163, 3169, 3171, 3163, 3178, 3167, 3166, 3183, + 3187, 3168, 3177, 3175, 3184, 3188, 3170, 3189, 3174, 3190, + 3192, 3170, 3176, 3171, 3174, 3193, 3181, 3177, 3178, 3194, + 3195, 3198, 3184, 3178, 3196, 3196, 3183, 3187, 3199, 3201, + 3204, 3184, 3188, 3202, 3189, 3200, 3190, 3192, 3206, 3198, + 3202, 3205, 3193, 3209, 3201, 3208, 3194, 3195, 3198, 3205, + 3210, 3196, 3207, 3200, 3211, 3199, 3201, 3204, 3209, 3208, + 3202, 3213, 3200, 3214, 3207, 3206, 3217, 3218, 3205, 3220, + 3209, 3221, 3208, 3213, 3224, 3217, 3210, 3210, 3223, 3207, + 3221, 3211, 3219, 3219, 3225, 3226, 3232, 0, 3213, 3231, + + 3214, 3218, 3227, 3217, 3218, 3220, 3220, 3225, 3221, 3228, + 3227, 3235, 3223, 3229, 3232, 3223, 3224, 3226, 3228, 3219, + 3231, 3225, 3226, 3232, 3229, 3236, 3231, 3239, 3239, 3227, + 3251, 3248, 3249, 3252, 3235, 3253, 3228, 3236, 3235, 3255, + 3229, 3257, 3259, 3258, 3251, 3257, 0, 3264, 3260, 3266, + 3262, 3264, 3236, 3248, 3239, 3260, 3249, 3251, 3248, 3249, + 3252, 3258, 3253, 3262, 3265, 3259, 3255, 3267, 3257, 3259, + 3258, 3266, 3268, 3270, 3264, 3260, 3266, 3262, 3269, 3272, + 3265, 3271, 3273, 3274, 3268, 3274, 3275, 3270, 3272, 3271, + 0, 3265, 3267, 3273, 3267, 3278, 3276, 3277, 3275, 3268, + + 3270, 3279, 3281, 3280, 3269, 3269, 3272, 3279, 3271, 3273, + 3274, 3282, 3277, 3275, 3276, 3283, 3289, 3278, 3282, 3287, + 3288, 3290, 3278, 3276, 3277, 3280, 3291, 3288, 3279, 3281, + 3280, 3292, 3287, 3293, 3294, 3297, 3295, 3283, 3282, 3290, + 0, 0, 3283, 3289, 3295, 3296, 3287, 3288, 3290, 3298, + 3304, 3299, 3296, 3291, 3300, 3301, 3300, 3292, 3292, 3297, + 3293, 3294, 3297, 3295, 3302, 3304, 3303, 3301, 3305, 0, + 3306, 3298, 3296, 3299, 3308, 3310, 3298, 3304, 3299, 3303, + 3307, 3300, 3301, 3312, 3313, 3317, 3311, 3307, 3315, 3320, + 3305, 3312, 3321, 3303, 3317, 3305, 3302, 3306, 3311, 3324, + + 3315, 3308, 3310, 3322, 3325, 3329, 3323, 3307, 3326, 0, + 3312, 3313, 3317, 3311, 3323, 3315, 3320, 3328, 3321, 3321, + 3327, 3326, 3322, 3330, 3332, 3328, 3338, 3329, 3344, 3339, + 3322, 3324, 3329, 3323, 3327, 3326, 3325, 3335, 3336, 3338, + 3342, 3341, 3344, 3335, 3328, 3336, 3343, 3327, 3341, 3345, + 3330, 3332, 3339, 3338, 3343, 3344, 3339, 3347, 3346, 3348, + 3349, 3355, 3342, 3345, 3335, 3336, 3346, 3342, 3341, 3353, + 3352, 3356, 3354, 3343, 3357, 3358, 3345, 3352, 3353, 3347, + 3354, 3348, 3359, 3360, 3347, 3346, 3348, 3349, 3355, 3361, + 3363, 3365, 3362, 3356, 3367, 3374, 3353, 3352, 3356, 3354, + + 3362, 3358, 3358, 3366, 3359, 3360, 3357, 3370, 3369, 3359, + 3360, 3361, 3371, 3380, 0, 3370, 3361, 3378, 3365, 3362, + 3372, 3367, 3363, 3398, 3376, 3366, 3401, 3374, 3372, 3373, + 3366, 3369, 3371, 3375, 3370, 3369, 0, 3373, 3376, 3371, + 3380, 3375, 3382, 3378, 3378, 3381, 3383, 3372, 3381, 3384, + 3398, 3376, 3385, 3401, 3383, 3386, 3373, 3384, 3387, 3392, + 3375, 3390, 3390, 3381, 3382, 3391, 3385, 3392, 3393, 3382, + 3388, 3395, 3381, 3383, 3394, 3381, 3384, 0, 0, 3385, + 3387, 3386, 3386, 3396, 3388, 3387, 3392, 3399, 3390, 3405, + 3400, 3391, 3391, 3395, 3393, 3393, 3397, 3388, 3395, 3402, + + 3394, 3394, 3403, 3396, 3397, 3404, 3408, 3417, 0, 3399, + 3396, 3405, 3406, 3404, 3399, 3400, 3405, 3400, 3411, 3402, + 3406, 3412, 3403, 3397, 3415, 0, 3402, 3409, 3413, 3403, + 3414, 3421, 3404, 3408, 3417, 3409, 3413, 3420, 3414, 3406, + 3411, 3418, 3422, 3412, 3419, 3411, 3424, 3425, 3412, 3418, + 3415, 3415, 3419, 3428, 3409, 3413, 3426, 3414, 3421, 3431, + 3434, 3435, 3422, 3420, 3420, 0, 0, 0, 3418, 3422, + 3432, 3419, 0, 3424, 3425, 3428, 3426, 3433, 3432, 0, + 3428, 3431, 0, 3426, 0, 3433, 3431, 3434, 3435, 0, + 0, 0, 0, 0, 0, 0, 0, 3432, 0, 0, + + 0, 0, 0, 0, 3433, 3439, 3439, 3439, 3439, 3439, + 3439, 3439, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3441, + 3441, 3441, 3441, 3441, 3441, 3441, 3442, 3442, 3442, 3442, + 3442, 3442, 3442, 3443, 3443, 3443, 3443, 3443, 3443, 3443, + 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3445, 3445, 3445, + 3445, 3445, 3445, 3445, 3447, 3447, 0, 3447, 3447, 3447, + 3447, 3448, 3448, 0, 0, 0, 3448, 3448, 3449, 3449, + 0, 0, 3449, 0, 3449, 3450, 0, 0, 0, 0, + 0, 3450, 3451, 3451, 0, 0, 0, 3451, 3451, 3452, + 0, 0, 0, 0, 0, 3452, 3453, 3453, 0, 3453, + + 3453, 3453, 3453, 3454, 0, 0, 0, 0, 0, 3454, + 3455, 3455, 0, 0, 0, 3455, 3455, 3456, 3456, 0, + 3456, 3456, 3456, 3456, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438 + + } ; + +static yy_state_type yy_last_accepting_state; +static char *yy_last_accepting_cpos; + +extern int yy_flex_debug; +int yy_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +static int yy_more_flag = 0; +static int yy_more_len = 0; +#define yymore() ((yy_more_flag) = 1) +#define YY_MORE_ADJ (yy_more_len) +#define YY_RESTORE_YY_MORE_OFFSET +char *yytext; +#line 1 "util/configlexer.lex" +#line 2 "util/configlexer.lex" +/* + * configlexer.lex - lexical analyzer for unbound config file + * + * Copyright (c) 2001-2006, NLnet Labs. All rights reserved + * + * See LICENSE for the license. + * + */ + +/* because flex keeps having sign-unsigned compare problems that are unfixed*/ +#if defined(__clang__)||(defined(__GNUC__)&&((__GNUC__ >4)||(defined(__GNUC_MINOR__)&&(__GNUC__ ==4)&&(__GNUC_MINOR__ >=2)))) +#pragma GCC diagnostic ignored "-Wsign-compare" +#endif + +#include +#include +#ifdef HAVE_GLOB_H +# include +#endif + +#include "util/config_file.h" +#include "util/configparser.h" +void ub_c_error(const char *message); + +#if 0 +#define LEXOUT(s) printf s /* used ONLY when debugging */ +#else +#define LEXOUT(s) +#endif + +/** avoid warning in about fwrite return value */ +#define ECHO ub_c_error_msg("syntax error at text: %s", yytext) + +/** A parser variable, this is a statement in the config file which is + * of the form variable: value1 value2 ... nargs is the number of values. */ +#define YDVAR(nargs, var) \ + num_args=(nargs); \ + LEXOUT(("v(%s%d) ", yytext, num_args)); \ + if(num_args > 0) { BEGIN(val); } \ + return (var); + +struct inc_state { + char* filename; + int line; + YY_BUFFER_STATE buffer; + struct inc_state* next; + int inc_toplevel; +}; +static struct inc_state* config_include_stack = NULL; +static int inc_depth = 0; +static int inc_prev = 0; +static int num_args = 0; +static int inc_toplevel = 0; + +void init_cfg_parse(void) +{ + config_include_stack = NULL; + inc_depth = 0; + inc_prev = 0; + num_args = 0; + inc_toplevel = 0; +} + +static void config_start_include(const char* filename, int toplevel) +{ + FILE *input; + struct inc_state* s; + char* nm; + if(inc_depth+1 > 100000) { + ub_c_error_msg("too many include files"); + return; + } + if(*filename == '\0') { + ub_c_error_msg("empty include file name"); + return; + } + s = (struct inc_state*)malloc(sizeof(*s)); + if(!s) { + ub_c_error_msg("include %s: malloc failure", filename); + return; + } + if(cfg_parser->chroot && strncmp(filename, cfg_parser->chroot, + strlen(cfg_parser->chroot)) == 0) { + filename += strlen(cfg_parser->chroot); + } + nm = strdup(filename); + if(!nm) { + ub_c_error_msg("include %s: strdup failure", filename); + free(s); + return; + } + input = fopen(filename, "r"); + if(!input) { + ub_c_error_msg("cannot open include file '%s': %s", + filename, strerror(errno)); + free(s); + free(nm); + return; + } + LEXOUT(("switch_to_include_file(%s)\n", filename)); + inc_depth++; + s->filename = cfg_parser->filename; + s->line = cfg_parser->line; + s->buffer = YY_CURRENT_BUFFER; + s->inc_toplevel = inc_toplevel; + s->next = config_include_stack; + config_include_stack = s; + cfg_parser->filename = nm; + cfg_parser->line = 1; + inc_toplevel = toplevel; + yy_switch_to_buffer(yy_create_buffer(input,YY_BUF_SIZE)); +} + +static void config_start_include_glob(const char* filename, int toplevel) +{ + + /* check for wildcards */ +#ifdef HAVE_GLOB + glob_t g; + int i, r, flags; + if(!(!strchr(filename, '*') && !strchr(filename, '?') && !strchr(filename, '[') && + !strchr(filename, '{') && !strchr(filename, '~'))) { + flags = 0 +#ifdef GLOB_ERR + | GLOB_ERR +#endif + /* do not set GLOB_NOSORT so the results are sorted + and in a predictable order. */ +#ifdef GLOB_BRACE + | GLOB_BRACE +#endif +#ifdef GLOB_TILDE + | GLOB_TILDE +#endif + ; + memset(&g, 0, sizeof(g)); + if(cfg_parser->chroot && strncmp(filename, cfg_parser->chroot, + strlen(cfg_parser->chroot)) == 0) { + filename += strlen(cfg_parser->chroot); + } + r = glob(filename, flags, NULL, &g); + if(r) { + /* some error */ + globfree(&g); + if(r == GLOB_NOMATCH) + return; /* no matches for pattern */ + config_start_include(filename, toplevel); /* let original deal with it */ + return; + } + /* process files found, if any */ + for(i=(int)g.gl_pathc-1; i>=0; i--) { + config_start_include(g.gl_pathv[i], toplevel); + } + globfree(&g); + return; + } +#endif /* HAVE_GLOB */ + + config_start_include(filename, toplevel); +} + +static void config_end_include(void) +{ + struct inc_state* s = config_include_stack; + --inc_depth; + if(!s) return; + free(cfg_parser->filename); + cfg_parser->filename = s->filename; + cfg_parser->line = s->line; + yy_delete_buffer(YY_CURRENT_BUFFER); + yy_switch_to_buffer(s->buffer); + config_include_stack = s->next; + inc_toplevel = s->inc_toplevel; + free(s); +} + +#ifndef yy_set_bol /* compat definition, for flex 2.4.6 */ +#define yy_set_bol(at_bol) \ + { \ + if ( ! yy_current_buffer ) \ + yy_current_buffer = yy_create_buffer(yyin,YY_BUF_SIZE ); \ + yy_current_buffer->yy_ch_buf[0] = ((at_bol)?'\n':' '); \ + } +#endif + +#define YY_NO_INPUT 1 +#line 191 "util/configlexer.lex" +#ifndef YY_NO_UNPUT +#define YY_NO_UNPUT 1 +#endif +#ifndef YY_NO_INPUT +#define YY_NO_INPUT 1 +#endif + +#line 3965 "" + +#define INITIAL 0 +#define quotedstring 1 +#define singlequotedstr 2 +#define include 3 +#define include_quoted 4 +#define val 5 +#define include_toplevel 6 +#define include_toplevel_quoted 7 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals (void ); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int yylex_destroy (void ); + +int yyget_debug (void ); + +void yyset_debug (int debug_flag ); + +YY_EXTRA_TYPE yyget_extra (void ); + +void yyset_extra (YY_EXTRA_TYPE user_defined ); + +FILE *yyget_in (void ); + +void yyset_in (FILE * in_str ); + +FILE *yyget_out (void ); + +void yyset_out (FILE * out_str ); + +yy_size_t yyget_leng (void ); + +char *yyget_text (void ); + +int yyget_lineno (void ); + +void yyset_lineno (int line_number ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap (void ); +#else +extern int yywrap (void ); +#endif +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *,yyconst char *,int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * ); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (void ); +#else +static int input (void ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO fwrite( yytext, yyleng, 1, yyout ) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + yy_size_t n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int yylex (void); + +#define YY_DECL int yylex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + +#line 211 "util/configlexer.lex" + +#line 4154 "" + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer(yyin,YY_BUF_SIZE ); + } + + yy_load_buffer_state( ); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + (yy_more_len) = 0; + if ( (yy_more_flag) ) + { + (yy_more_len) = (yy_c_buf_p) - (yytext_ptr); + (yy_more_flag) = 0; + } + yy_cp = (yy_c_buf_p); + + /* Support of yytext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); +yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + 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 >= 3439 ) + 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] != 9825 ); + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + if ( yy_act == 0 ) + { /* have to back up */ + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + yy_act = yy_accept[yy_current_state]; + } + + YY_DO_BEFORE_ACTION; + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = (yy_hold_char); + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + goto yy_find_action; + +case 1: +YY_RULE_SETUP +#line 212 "util/configlexer.lex" +{ + LEXOUT(("SP ")); /* ignore */ } + YY_BREAK +case 2: +YY_RULE_SETUP +#line 214 "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 217 "util/configlexer.lex" +{ YDVAR(0, VAR_SERVER) } + YY_BREAK +case 4: +YY_RULE_SETUP +#line 218 "util/configlexer.lex" +{ YDVAR(1, VAR_QNAME_MINIMISATION) } + YY_BREAK +case 5: +YY_RULE_SETUP +#line 219 "util/configlexer.lex" +{ YDVAR(1, VAR_QNAME_MINIMISATION_STRICT) } + YY_BREAK +case 6: +YY_RULE_SETUP +#line 220 "util/configlexer.lex" +{ YDVAR(1, VAR_NUM_THREADS) } + YY_BREAK +case 7: +YY_RULE_SETUP +#line 221 "util/configlexer.lex" +{ YDVAR(1, VAR_VERBOSITY) } + YY_BREAK +case 8: +YY_RULE_SETUP +#line 222 "util/configlexer.lex" +{ YDVAR(1, VAR_PORT) } + YY_BREAK +case 9: +YY_RULE_SETUP +#line 223 "util/configlexer.lex" +{ YDVAR(1, VAR_OUTGOING_RANGE) } + YY_BREAK +case 10: +YY_RULE_SETUP +#line 224 "util/configlexer.lex" +{ YDVAR(1, VAR_OUTGOING_PORT_PERMIT) } + YY_BREAK +case 11: +YY_RULE_SETUP +#line 225 "util/configlexer.lex" +{ YDVAR(1, VAR_OUTGOING_PORT_AVOID) } + YY_BREAK +case 12: +YY_RULE_SETUP +#line 226 "util/configlexer.lex" +{ YDVAR(1, VAR_OUTGOING_NUM_TCP) } + YY_BREAK +case 13: +YY_RULE_SETUP +#line 227 "util/configlexer.lex" +{ YDVAR(1, VAR_INCOMING_NUM_TCP) } + YY_BREAK +case 14: +YY_RULE_SETUP +#line 228 "util/configlexer.lex" +{ YDVAR(1, VAR_DO_IP4) } + YY_BREAK +case 15: +YY_RULE_SETUP +#line 229 "util/configlexer.lex" +{ YDVAR(1, VAR_DO_IP6) } + YY_BREAK +case 16: +YY_RULE_SETUP +#line 230 "util/configlexer.lex" +{ YDVAR(1, VAR_PREFER_IP4) } + YY_BREAK +case 17: +YY_RULE_SETUP +#line 231 "util/configlexer.lex" +{ YDVAR(1, VAR_PREFER_IP6) } + YY_BREAK +case 18: +YY_RULE_SETUP +#line 232 "util/configlexer.lex" +{ YDVAR(1, VAR_DO_UDP) } + YY_BREAK +case 19: +YY_RULE_SETUP +#line 233 "util/configlexer.lex" +{ YDVAR(1, VAR_DO_TCP) } + YY_BREAK +case 20: +YY_RULE_SETUP +#line 234 "util/configlexer.lex" +{ YDVAR(1, VAR_TCP_UPSTREAM) } + YY_BREAK +case 21: +YY_RULE_SETUP +#line 235 "util/configlexer.lex" +{ YDVAR(1, VAR_TCP_MSS) } + YY_BREAK +case 22: +YY_RULE_SETUP +#line 236 "util/configlexer.lex" +{ YDVAR(1, VAR_OUTGOING_TCP_MSS) } + YY_BREAK +case 23: +YY_RULE_SETUP +#line 237 "util/configlexer.lex" +{ YDVAR(1, VAR_TCP_IDLE_TIMEOUT) } + YY_BREAK +case 24: +YY_RULE_SETUP +#line 238 "util/configlexer.lex" +{ YDVAR(1, VAR_MAX_REUSE_TCP_QUERIES) } + YY_BREAK +case 25: +YY_RULE_SETUP +#line 239 "util/configlexer.lex" +{ YDVAR(1, VAR_TCP_REUSE_TIMEOUT) } + YY_BREAK +case 26: +YY_RULE_SETUP +#line 240 "util/configlexer.lex" +{ YDVAR(1, VAR_TCP_AUTH_QUERY_TIMEOUT) } + YY_BREAK +case 27: +YY_RULE_SETUP +#line 241 "util/configlexer.lex" +{ YDVAR(1, VAR_EDNS_TCP_KEEPALIVE) } + YY_BREAK +case 28: +YY_RULE_SETUP +#line 242 "util/configlexer.lex" +{ YDVAR(1, VAR_EDNS_TCP_KEEPALIVE_TIMEOUT) } + YY_BREAK +case 29: +YY_RULE_SETUP +#line 243 "util/configlexer.lex" +{ YDVAR(1, VAR_SSL_UPSTREAM) } + YY_BREAK +case 30: +YY_RULE_SETUP +#line 244 "util/configlexer.lex" +{ YDVAR(1, VAR_SSL_UPSTREAM) } + YY_BREAK +case 31: +YY_RULE_SETUP +#line 245 "util/configlexer.lex" +{ YDVAR(1, VAR_SSL_SERVICE_KEY) } + YY_BREAK +case 32: +YY_RULE_SETUP +#line 246 "util/configlexer.lex" +{ YDVAR(1, VAR_SSL_SERVICE_KEY) } + YY_BREAK +case 33: +YY_RULE_SETUP +#line 247 "util/configlexer.lex" +{ YDVAR(1, VAR_SSL_SERVICE_PEM) } + YY_BREAK +case 34: +YY_RULE_SETUP +#line 248 "util/configlexer.lex" +{ YDVAR(1, VAR_SSL_SERVICE_PEM) } + YY_BREAK +case 35: +YY_RULE_SETUP +#line 249 "util/configlexer.lex" +{ YDVAR(1, VAR_SSL_PORT) } + YY_BREAK +case 36: +YY_RULE_SETUP +#line 250 "util/configlexer.lex" +{ YDVAR(1, VAR_SSL_PORT) } + YY_BREAK +case 37: +YY_RULE_SETUP +#line 251 "util/configlexer.lex" +{ YDVAR(1, VAR_TLS_CERT_BUNDLE) } + YY_BREAK +case 38: +YY_RULE_SETUP +#line 252 "util/configlexer.lex" +{ YDVAR(1, VAR_TLS_CERT_BUNDLE) } + YY_BREAK +case 39: +YY_RULE_SETUP +#line 253 "util/configlexer.lex" +{ YDVAR(1, VAR_TLS_WIN_CERT) } + YY_BREAK +case 40: +YY_RULE_SETUP +#line 254 "util/configlexer.lex" +{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } + YY_BREAK +case 41: +YY_RULE_SETUP +#line 255 "util/configlexer.lex" +{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } + YY_BREAK +case 42: +YY_RULE_SETUP +#line 256 "util/configlexer.lex" +{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } + YY_BREAK +case 43: +YY_RULE_SETUP +#line 257 "util/configlexer.lex" +{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } + YY_BREAK +case 44: +YY_RULE_SETUP +#line 258 "util/configlexer.lex" +{ YDVAR(1, VAR_TLS_SESSION_TICKET_KEYS) } + YY_BREAK +case 45: +YY_RULE_SETUP +#line 259 "util/configlexer.lex" +{ YDVAR(1, VAR_TLS_CIPHERS) } + YY_BREAK +case 46: +YY_RULE_SETUP +#line 260 "util/configlexer.lex" +{ YDVAR(1, VAR_TLS_CIPHERSUITES) } + YY_BREAK +case 47: +YY_RULE_SETUP +#line 261 "util/configlexer.lex" +{ YDVAR(1, VAR_TLS_USE_SNI) } + YY_BREAK +case 48: +YY_RULE_SETUP +#line 262 "util/configlexer.lex" +{ YDVAR(1, VAR_HTTPS_PORT) } + YY_BREAK +case 49: +YY_RULE_SETUP +#line 263 "util/configlexer.lex" +{ YDVAR(1, VAR_HTTP_ENDPOINT) } + YY_BREAK +case 50: +YY_RULE_SETUP +#line 264 "util/configlexer.lex" +{ YDVAR(1, VAR_HTTP_MAX_STREAMS) } + YY_BREAK +case 51: +YY_RULE_SETUP +#line 265 "util/configlexer.lex" +{ YDVAR(1, VAR_HTTP_QUERY_BUFFER_SIZE) } + YY_BREAK +case 52: +YY_RULE_SETUP +#line 266 "util/configlexer.lex" +{ YDVAR(1, VAR_HTTP_RESPONSE_BUFFER_SIZE) } + YY_BREAK +case 53: +YY_RULE_SETUP +#line 267 "util/configlexer.lex" +{ YDVAR(1, VAR_HTTP_NODELAY) } + YY_BREAK +case 54: +YY_RULE_SETUP +#line 268 "util/configlexer.lex" +{ YDVAR(1, VAR_HTTP_NOTLS_DOWNSTREAM) } + YY_BREAK +case 55: +YY_RULE_SETUP +#line 269 "util/configlexer.lex" +{ YDVAR(1, VAR_USE_SYSTEMD) } + YY_BREAK +case 56: +YY_RULE_SETUP +#line 270 "util/configlexer.lex" +{ YDVAR(1, VAR_DO_DAEMONIZE) } + YY_BREAK +case 57: +YY_RULE_SETUP +#line 271 "util/configlexer.lex" +{ YDVAR(1, VAR_INTERFACE) } + YY_BREAK +case 58: +YY_RULE_SETUP +#line 272 "util/configlexer.lex" +{ YDVAR(1, VAR_INTERFACE) } + YY_BREAK +case 59: +YY_RULE_SETUP +#line 273 "util/configlexer.lex" +{ YDVAR(1, VAR_OUTGOING_INTERFACE) } + YY_BREAK +case 60: +YY_RULE_SETUP +#line 274 "util/configlexer.lex" +{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) } + YY_BREAK +case 61: +YY_RULE_SETUP +#line 275 "util/configlexer.lex" +{ YDVAR(1, VAR_SO_RCVBUF) } + YY_BREAK +case 62: +YY_RULE_SETUP +#line 276 "util/configlexer.lex" +{ YDVAR(1, VAR_SO_SNDBUF) } + YY_BREAK +case 63: +YY_RULE_SETUP +#line 277 "util/configlexer.lex" +{ YDVAR(1, VAR_SO_REUSEPORT) } + YY_BREAK +case 64: +YY_RULE_SETUP +#line 278 "util/configlexer.lex" +{ YDVAR(1, VAR_IP_TRANSPARENT) } + YY_BREAK +case 65: +YY_RULE_SETUP +#line 279 "util/configlexer.lex" +{ YDVAR(1, VAR_IP_FREEBIND) } + YY_BREAK +case 66: +YY_RULE_SETUP +#line 280 "util/configlexer.lex" +{ YDVAR(1, VAR_IP_DSCP) } + YY_BREAK +case 67: +YY_RULE_SETUP +#line 281 "util/configlexer.lex" +{ YDVAR(1, VAR_CHROOT) } + YY_BREAK +case 68: +YY_RULE_SETUP +#line 282 "util/configlexer.lex" +{ YDVAR(1, VAR_USERNAME) } + YY_BREAK +case 69: +YY_RULE_SETUP +#line 283 "util/configlexer.lex" +{ YDVAR(1, VAR_DIRECTORY) } + YY_BREAK +case 70: +YY_RULE_SETUP +#line 284 "util/configlexer.lex" +{ YDVAR(1, VAR_LOGFILE) } + YY_BREAK +case 71: +YY_RULE_SETUP +#line 285 "util/configlexer.lex" +{ YDVAR(1, VAR_PIDFILE) } + YY_BREAK +case 72: +YY_RULE_SETUP +#line 286 "util/configlexer.lex" +{ YDVAR(1, VAR_ROOT_HINTS) } + YY_BREAK +case 73: +YY_RULE_SETUP +#line 287 "util/configlexer.lex" +{ YDVAR(1, VAR_STREAM_WAIT_SIZE) } + YY_BREAK +case 74: +YY_RULE_SETUP +#line 288 "util/configlexer.lex" +{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) } + YY_BREAK +case 75: +YY_RULE_SETUP +#line 289 "util/configlexer.lex" +{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } + YY_BREAK +case 76: +YY_RULE_SETUP +#line 290 "util/configlexer.lex" +{ YDVAR(1, VAR_MSG_CACHE_SIZE) } + YY_BREAK +case 77: +YY_RULE_SETUP +#line 291 "util/configlexer.lex" +{ YDVAR(1, VAR_MSG_CACHE_SLABS) } + YY_BREAK +case 78: +YY_RULE_SETUP +#line 292 "util/configlexer.lex" +{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } + YY_BREAK +case 79: +YY_RULE_SETUP +#line 293 "util/configlexer.lex" +{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } + YY_BREAK +case 80: +YY_RULE_SETUP +#line 294 "util/configlexer.lex" +{ YDVAR(1, VAR_CACHE_MAX_TTL) } + YY_BREAK +case 81: +YY_RULE_SETUP +#line 295 "util/configlexer.lex" +{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } + YY_BREAK +case 82: +YY_RULE_SETUP +#line 296 "util/configlexer.lex" +{ YDVAR(1, VAR_CACHE_MIN_TTL) } + YY_BREAK +case 83: +YY_RULE_SETUP +#line 297 "util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_HOST_TTL) } + YY_BREAK +case 84: +YY_RULE_SETUP +#line 298 "util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_LAME_TTL) } + YY_BREAK +case 85: +YY_RULE_SETUP +#line 299 "util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } + YY_BREAK +case 86: +YY_RULE_SETUP +#line 300 "util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } + YY_BREAK +case 87: +YY_RULE_SETUP +#line 301 "util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } + YY_BREAK +case 88: +YY_RULE_SETUP +#line 302 "util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } + YY_BREAK +case 89: +YY_RULE_SETUP +#line 303 "util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_KEEP_PROBING) } + YY_BREAK +case 90: +YY_RULE_SETUP +#line 304 "util/configlexer.lex" +{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } + YY_BREAK +case 91: +YY_RULE_SETUP +#line 305 "util/configlexer.lex" +{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } + YY_BREAK +case 92: +YY_RULE_SETUP +#line 306 "util/configlexer.lex" +{ YDVAR(1, VAR_DELAY_CLOSE) } + YY_BREAK +case 93: +YY_RULE_SETUP +#line 307 "util/configlexer.lex" +{ YDVAR(1, VAR_UDP_CONNECT) } + YY_BREAK +case 94: +YY_RULE_SETUP +#line 308 "util/configlexer.lex" +{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } + YY_BREAK +case 95: +YY_RULE_SETUP +#line 309 "util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } + YY_BREAK +case 96: +YY_RULE_SETUP +#line 310 "util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } + YY_BREAK +case 97: +YY_RULE_SETUP +#line 311 "util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_GLUE) } + YY_BREAK +case 98: +YY_RULE_SETUP +#line 312 "util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } + YY_BREAK +case 99: +YY_RULE_SETUP +#line 313 "util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } + YY_BREAK +case 100: +YY_RULE_SETUP +#line 314 "util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } + YY_BREAK +case 101: +YY_RULE_SETUP +#line 315 "util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } + YY_BREAK +case 102: +YY_RULE_SETUP +#line 316 "util/configlexer.lex" +{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } + YY_BREAK +case 103: +YY_RULE_SETUP +#line 317 "util/configlexer.lex" +{ YDVAR(1, VAR_CAPS_WHITELIST) } + YY_BREAK +case 104: +YY_RULE_SETUP +#line 318 "util/configlexer.lex" +{ YDVAR(1, VAR_CAPS_WHITELIST) } + YY_BREAK +case 105: +YY_RULE_SETUP +#line 319 "util/configlexer.lex" +{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } + YY_BREAK +case 106: +YY_RULE_SETUP +#line 320 "util/configlexer.lex" +{ YDVAR(1, VAR_PRIVATE_ADDRESS) } + YY_BREAK +case 107: +YY_RULE_SETUP +#line 321 "util/configlexer.lex" +{ YDVAR(1, VAR_PRIVATE_DOMAIN) } + YY_BREAK +case 108: +YY_RULE_SETUP +#line 322 "util/configlexer.lex" +{ YDVAR(1, VAR_PREFETCH_KEY) } + YY_BREAK +case 109: +YY_RULE_SETUP +#line 323 "util/configlexer.lex" +{ YDVAR(1, VAR_PREFETCH) } + YY_BREAK +case 110: +YY_RULE_SETUP +#line 324 "util/configlexer.lex" +{ YDVAR(1, VAR_DENY_ANY) } + YY_BREAK +case 111: +YY_RULE_SETUP +#line 325 "util/configlexer.lex" +{ YDVAR(0, VAR_STUB_ZONE) } + YY_BREAK +case 112: +YY_RULE_SETUP +#line 326 "util/configlexer.lex" +{ YDVAR(1, VAR_NAME) } + YY_BREAK +case 113: +YY_RULE_SETUP +#line 327 "util/configlexer.lex" +{ YDVAR(1, VAR_STUB_ADDR) } + YY_BREAK +case 114: +YY_RULE_SETUP +#line 328 "util/configlexer.lex" +{ YDVAR(1, VAR_STUB_HOST) } + YY_BREAK +case 115: +YY_RULE_SETUP +#line 329 "util/configlexer.lex" +{ YDVAR(1, VAR_STUB_PRIME) } + YY_BREAK +case 116: +YY_RULE_SETUP +#line 330 "util/configlexer.lex" +{ YDVAR(1, VAR_STUB_FIRST) } + YY_BREAK +case 117: +YY_RULE_SETUP +#line 331 "util/configlexer.lex" +{ YDVAR(1, VAR_STUB_NO_CACHE) } + YY_BREAK +case 118: +YY_RULE_SETUP +#line 332 "util/configlexer.lex" +{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } + YY_BREAK +case 119: +YY_RULE_SETUP +#line 333 "util/configlexer.lex" +{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } + YY_BREAK +case 120: +YY_RULE_SETUP +#line 334 "util/configlexer.lex" +{ YDVAR(0, VAR_FORWARD_ZONE) } + YY_BREAK +case 121: +YY_RULE_SETUP +#line 335 "util/configlexer.lex" +{ YDVAR(1, VAR_FORWARD_ADDR) } + YY_BREAK +case 122: +YY_RULE_SETUP +#line 336 "util/configlexer.lex" +{ YDVAR(1, VAR_FORWARD_HOST) } + YY_BREAK +case 123: +YY_RULE_SETUP +#line 337 "util/configlexer.lex" +{ YDVAR(1, VAR_FORWARD_FIRST) } + YY_BREAK +case 124: +YY_RULE_SETUP +#line 338 "util/configlexer.lex" +{ YDVAR(1, VAR_FORWARD_NO_CACHE) } + YY_BREAK +case 125: +YY_RULE_SETUP +#line 339 "util/configlexer.lex" +{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } + YY_BREAK +case 126: +YY_RULE_SETUP +#line 340 "util/configlexer.lex" +{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } + YY_BREAK +case 127: +YY_RULE_SETUP +#line 341 "util/configlexer.lex" +{ YDVAR(0, VAR_AUTH_ZONE) } + YY_BREAK +case 128: +YY_RULE_SETUP +#line 342 "util/configlexer.lex" +{ YDVAR(0, VAR_RPZ) } + YY_BREAK +case 129: +YY_RULE_SETUP +#line 343 "util/configlexer.lex" +{ YDVAR(1, VAR_TAGS) } + YY_BREAK +case 130: +YY_RULE_SETUP +#line 344 "util/configlexer.lex" +{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } + YY_BREAK +case 131: +YY_RULE_SETUP +#line 345 "util/configlexer.lex" +{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } + YY_BREAK +case 132: +YY_RULE_SETUP +#line 346 "util/configlexer.lex" +{ YDVAR(1, VAR_RPZ_LOG) } + YY_BREAK +case 133: +YY_RULE_SETUP +#line 347 "util/configlexer.lex" +{ YDVAR(1, VAR_RPZ_LOG_NAME) } + YY_BREAK +case 134: +YY_RULE_SETUP +#line 348 "util/configlexer.lex" +{ YDVAR(1, VAR_ZONEFILE) } + YY_BREAK +case 135: +YY_RULE_SETUP +#line 349 "util/configlexer.lex" +{ YDVAR(1, VAR_MASTER) } + YY_BREAK +case 136: +YY_RULE_SETUP +#line 350 "util/configlexer.lex" +{ YDVAR(1, VAR_MASTER) } + YY_BREAK +case 137: +YY_RULE_SETUP +#line 351 "util/configlexer.lex" +{ YDVAR(1, VAR_URL) } + YY_BREAK +case 138: +YY_RULE_SETUP +#line 352 "util/configlexer.lex" +{ YDVAR(1, VAR_ALLOW_NOTIFY) } + YY_BREAK +case 139: +YY_RULE_SETUP +#line 353 "util/configlexer.lex" +{ YDVAR(1, VAR_FOR_DOWNSTREAM) } + YY_BREAK +case 140: +YY_RULE_SETUP +#line 354 "util/configlexer.lex" +{ YDVAR(1, VAR_FOR_UPSTREAM) } + YY_BREAK +case 141: +YY_RULE_SETUP +#line 355 "util/configlexer.lex" +{ YDVAR(1, VAR_FALLBACK_ENABLED) } + YY_BREAK +case 142: +YY_RULE_SETUP +#line 356 "util/configlexer.lex" +{ YDVAR(0, VAR_VIEW) } + YY_BREAK +case 143: +YY_RULE_SETUP +#line 357 "util/configlexer.lex" +{ YDVAR(1, VAR_VIEW_FIRST) } + YY_BREAK +case 144: +YY_RULE_SETUP +#line 358 "util/configlexer.lex" +{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } + YY_BREAK +case 145: +YY_RULE_SETUP +#line 359 "util/configlexer.lex" +{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } + YY_BREAK +case 146: +YY_RULE_SETUP +#line 360 "util/configlexer.lex" +{ YDVAR(2, VAR_ACCESS_CONTROL) } + YY_BREAK +case 147: +YY_RULE_SETUP +#line 361 "util/configlexer.lex" +{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } + YY_BREAK +case 148: +YY_RULE_SETUP +#line 362 "util/configlexer.lex" +{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } + YY_BREAK +case 149: +YY_RULE_SETUP +#line 363 "util/configlexer.lex" +{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } + YY_BREAK +case 150: +YY_RULE_SETUP +#line 364 "util/configlexer.lex" +{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } + YY_BREAK +case 151: +YY_RULE_SETUP +#line 365 "util/configlexer.lex" +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } + YY_BREAK +case 152: +YY_RULE_SETUP +#line 366 "util/configlexer.lex" +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } + YY_BREAK +case 153: +YY_RULE_SETUP +#line 367 "util/configlexer.lex" +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } + YY_BREAK +case 154: +YY_RULE_SETUP +#line 368 "util/configlexer.lex" +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } + YY_BREAK +case 155: +YY_RULE_SETUP +#line 369 "util/configlexer.lex" +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } + YY_BREAK +case 156: +YY_RULE_SETUP +#line 370 "util/configlexer.lex" +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } + YY_BREAK +case 157: +YY_RULE_SETUP +#line 371 "util/configlexer.lex" +{ YDVAR(1, VAR_HIDE_IDENTITY) } + YY_BREAK +case 158: +YY_RULE_SETUP +#line 372 "util/configlexer.lex" +{ YDVAR(1, VAR_HIDE_VERSION) } + YY_BREAK +case 159: +YY_RULE_SETUP +#line 373 "util/configlexer.lex" +{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } + YY_BREAK +case 160: +YY_RULE_SETUP +#line 374 "util/configlexer.lex" +{ YDVAR(1, VAR_IDENTITY) } + YY_BREAK +case 161: +YY_RULE_SETUP +#line 375 "util/configlexer.lex" +{ YDVAR(1, VAR_VERSION) } + YY_BREAK +case 162: +YY_RULE_SETUP +#line 376 "util/configlexer.lex" +{ YDVAR(1, VAR_MODULE_CONF) } + YY_BREAK +case 163: +YY_RULE_SETUP +#line 377 "util/configlexer.lex" +{ YDVAR(1, VAR_DLV_ANCHOR) } + YY_BREAK +case 164: +YY_RULE_SETUP +#line 378 "util/configlexer.lex" +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } + YY_BREAK +case 165: +YY_RULE_SETUP +#line 379 "util/configlexer.lex" +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } + YY_BREAK +case 166: +YY_RULE_SETUP +#line 380 "util/configlexer.lex" +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } + YY_BREAK +case 167: +YY_RULE_SETUP +#line 381 "util/configlexer.lex" +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } + YY_BREAK +case 168: +YY_RULE_SETUP +#line 382 "util/configlexer.lex" +{ YDVAR(1, VAR_TRUST_ANCHOR) } + YY_BREAK +case 169: +YY_RULE_SETUP +#line 383 "util/configlexer.lex" +{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } + YY_BREAK +case 170: +YY_RULE_SETUP +#line 384 "util/configlexer.lex" +{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } + YY_BREAK +case 171: +YY_RULE_SETUP +#line 385 "util/configlexer.lex" +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } + YY_BREAK +case 172: +YY_RULE_SETUP +#line 386 "util/configlexer.lex" +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } + YY_BREAK +case 173: +YY_RULE_SETUP +#line 387 "util/configlexer.lex" +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } + YY_BREAK +case 174: +YY_RULE_SETUP +#line 388 "util/configlexer.lex" +{ YDVAR(1, VAR_BOGUS_TTL) } + YY_BREAK +case 175: +YY_RULE_SETUP +#line 389 "util/configlexer.lex" +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } + YY_BREAK +case 176: +YY_RULE_SETUP +#line 390 "util/configlexer.lex" +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } + YY_BREAK +case 177: +YY_RULE_SETUP +#line 391 "util/configlexer.lex" +{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } + YY_BREAK +case 178: +YY_RULE_SETUP +#line 392 "util/configlexer.lex" +{ YDVAR(1, VAR_IGNORE_CD_FLAG) } + YY_BREAK +case 179: +YY_RULE_SETUP +#line 393 "util/configlexer.lex" +{ YDVAR(1, VAR_SERVE_EXPIRED) } + YY_BREAK +case 180: +YY_RULE_SETUP +#line 394 "util/configlexer.lex" +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } + YY_BREAK +case 181: +YY_RULE_SETUP +#line 395 "util/configlexer.lex" +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } + YY_BREAK +case 182: +YY_RULE_SETUP +#line 396 "util/configlexer.lex" +{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } + YY_BREAK +case 183: +YY_RULE_SETUP +#line 397 "util/configlexer.lex" +{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } + YY_BREAK +case 184: +YY_RULE_SETUP +#line 398 "util/configlexer.lex" +{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } + YY_BREAK +case 185: +YY_RULE_SETUP +#line 399 "util/configlexer.lex" +{ YDVAR(1, VAR_FAKE_DSA) } + YY_BREAK +case 186: +YY_RULE_SETUP +#line 400 "util/configlexer.lex" +{ YDVAR(1, VAR_FAKE_SHA1) } + YY_BREAK +case 187: +YY_RULE_SETUP +#line 401 "util/configlexer.lex" +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } + YY_BREAK +case 188: +YY_RULE_SETUP +#line 402 "util/configlexer.lex" +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } + YY_BREAK +case 189: +YY_RULE_SETUP +#line 403 "util/configlexer.lex" +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } + YY_BREAK +case 190: +YY_RULE_SETUP +#line 404 "util/configlexer.lex" +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } + YY_BREAK +case 191: +YY_RULE_SETUP +#line 405 "util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } + YY_BREAK +case 192: +YY_RULE_SETUP +#line 407 "util/configlexer.lex" +{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } + YY_BREAK +case 193: +YY_RULE_SETUP +#line 408 "util/configlexer.lex" +{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } + YY_BREAK +case 194: +YY_RULE_SETUP +#line 409 "util/configlexer.lex" +{ YDVAR(1, VAR_ADD_HOLDDOWN) } + YY_BREAK +case 195: +YY_RULE_SETUP +#line 410 "util/configlexer.lex" +{ YDVAR(1, VAR_DEL_HOLDDOWN) } + YY_BREAK +case 196: +YY_RULE_SETUP +#line 411 "util/configlexer.lex" +{ YDVAR(1, VAR_KEEP_MISSING) } + YY_BREAK +case 197: +YY_RULE_SETUP +#line 412 "util/configlexer.lex" +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } + YY_BREAK +case 198: +YY_RULE_SETUP +#line 413 "util/configlexer.lex" +{ YDVAR(1, VAR_USE_SYSLOG) } + YY_BREAK +case 199: +YY_RULE_SETUP +#line 414 "util/configlexer.lex" +{ YDVAR(1, VAR_LOG_IDENTITY) } + YY_BREAK +case 200: +YY_RULE_SETUP +#line 415 "util/configlexer.lex" +{ YDVAR(1, VAR_LOG_TIME_ASCII) } + YY_BREAK +case 201: +YY_RULE_SETUP +#line 416 "util/configlexer.lex" +{ YDVAR(1, VAR_LOG_QUERIES) } + YY_BREAK +case 202: +YY_RULE_SETUP +#line 417 "util/configlexer.lex" +{ YDVAR(1, VAR_LOG_REPLIES) } + YY_BREAK +case 203: +YY_RULE_SETUP +#line 418 "util/configlexer.lex" +{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } + YY_BREAK +case 204: +YY_RULE_SETUP +#line 419 "util/configlexer.lex" +{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } + YY_BREAK +case 205: +YY_RULE_SETUP +#line 420 "util/configlexer.lex" +{ YDVAR(1, VAR_LOG_SERVFAIL) } + YY_BREAK +case 206: +YY_RULE_SETUP +#line 421 "util/configlexer.lex" +{ YDVAR(2, VAR_LOCAL_ZONE) } + YY_BREAK +case 207: +YY_RULE_SETUP +#line 422 "util/configlexer.lex" +{ YDVAR(1, VAR_LOCAL_DATA) } + YY_BREAK +case 208: +YY_RULE_SETUP +#line 423 "util/configlexer.lex" +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } + YY_BREAK +case 209: +YY_RULE_SETUP +#line 424 "util/configlexer.lex" +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } + YY_BREAK +case 210: +YY_RULE_SETUP +#line 425 "util/configlexer.lex" +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } + YY_BREAK +case 211: +YY_RULE_SETUP +#line 426 "util/configlexer.lex" +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } + YY_BREAK +case 212: +YY_RULE_SETUP +#line 427 "util/configlexer.lex" +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } + YY_BREAK +case 213: +YY_RULE_SETUP +#line 428 "util/configlexer.lex" +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } + YY_BREAK +case 214: +YY_RULE_SETUP +#line 429 "util/configlexer.lex" +{ YDVAR(1, VAR_SHM_ENABLE) } + YY_BREAK +case 215: +YY_RULE_SETUP +#line 430 "util/configlexer.lex" +{ YDVAR(1, VAR_SHM_KEY) } + YY_BREAK +case 216: +YY_RULE_SETUP +#line 431 "util/configlexer.lex" +{ YDVAR(0, VAR_REMOTE_CONTROL) } + YY_BREAK +case 217: +YY_RULE_SETUP +#line 432 "util/configlexer.lex" +{ YDVAR(1, VAR_CONTROL_ENABLE) } + YY_BREAK +case 218: +YY_RULE_SETUP +#line 433 "util/configlexer.lex" +{ YDVAR(1, VAR_CONTROL_INTERFACE) } + YY_BREAK +case 219: +YY_RULE_SETUP +#line 434 "util/configlexer.lex" +{ YDVAR(1, VAR_CONTROL_PORT) } + YY_BREAK +case 220: +YY_RULE_SETUP +#line 435 "util/configlexer.lex" +{ YDVAR(1, VAR_CONTROL_USE_CERT) } + YY_BREAK +case 221: +YY_RULE_SETUP +#line 436 "util/configlexer.lex" +{ YDVAR(1, VAR_SERVER_KEY_FILE) } + YY_BREAK +case 222: +YY_RULE_SETUP +#line 437 "util/configlexer.lex" +{ YDVAR(1, VAR_SERVER_CERT_FILE) } + YY_BREAK +case 223: +YY_RULE_SETUP +#line 438 "util/configlexer.lex" +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } + YY_BREAK +case 224: +YY_RULE_SETUP +#line 439 "util/configlexer.lex" +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } + YY_BREAK +case 225: +YY_RULE_SETUP +#line 440 "util/configlexer.lex" +{ YDVAR(1, VAR_PYTHON_SCRIPT) } + YY_BREAK +case 226: +YY_RULE_SETUP +#line 441 "util/configlexer.lex" +{ YDVAR(0, VAR_PYTHON) } + YY_BREAK +case 227: +YY_RULE_SETUP +#line 442 "util/configlexer.lex" +{ YDVAR(1, VAR_DYNLIB_FILE) } + YY_BREAK +case 228: +YY_RULE_SETUP +#line 443 "util/configlexer.lex" +{ YDVAR(0, VAR_DYNLIB) } + YY_BREAK +case 229: +YY_RULE_SETUP +#line 444 "util/configlexer.lex" +{ YDVAR(1, VAR_DOMAIN_INSECURE) } + YY_BREAK +case 230: +YY_RULE_SETUP +#line 445 "util/configlexer.lex" +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } + YY_BREAK +case 231: +YY_RULE_SETUP +#line 446 "util/configlexer.lex" +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } + YY_BREAK +case 232: +YY_RULE_SETUP +#line 447 "util/configlexer.lex" +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } + YY_BREAK +case 233: +YY_RULE_SETUP +#line 448 "util/configlexer.lex" +{ YDVAR(1, VAR_MAX_UDP_SIZE) } + YY_BREAK +case 234: +YY_RULE_SETUP +#line 449 "util/configlexer.lex" +{ YDVAR(1, VAR_DNS64_PREFIX) } + YY_BREAK +case 235: +YY_RULE_SETUP +#line 450 "util/configlexer.lex" +{ YDVAR(1, VAR_DNS64_SYNTHALL) } + YY_BREAK +case 236: +YY_RULE_SETUP +#line 451 "util/configlexer.lex" +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } + YY_BREAK +case 237: +YY_RULE_SETUP +#line 452 "util/configlexer.lex" +{ YDVAR(1, VAR_DEFINE_TAG) } + YY_BREAK +case 238: +YY_RULE_SETUP +#line 453 "util/configlexer.lex" +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } + YY_BREAK +case 239: +YY_RULE_SETUP +#line 454 "util/configlexer.lex" +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } + YY_BREAK +case 240: +YY_RULE_SETUP +#line 455 "util/configlexer.lex" +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } + YY_BREAK +case 241: +YY_RULE_SETUP +#line 456 "util/configlexer.lex" +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } + YY_BREAK +case 242: +YY_RULE_SETUP +#line 457 "util/configlexer.lex" +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } + YY_BREAK +case 243: +YY_RULE_SETUP +#line 458 "util/configlexer.lex" +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } + YY_BREAK +case 244: +YY_RULE_SETUP +#line 459 "util/configlexer.lex" +{ YDVAR(0, VAR_DNSTAP) } + YY_BREAK +case 245: +YY_RULE_SETUP +#line 460 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_ENABLE) } + YY_BREAK +case 246: +YY_RULE_SETUP +#line 461 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } + YY_BREAK +case 247: +YY_RULE_SETUP +#line 462 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } + YY_BREAK +case 248: +YY_RULE_SETUP +#line 463 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_IP) } + YY_BREAK +case 249: +YY_RULE_SETUP +#line 464 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_TLS) } + YY_BREAK +case 250: +YY_RULE_SETUP +#line 465 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } + YY_BREAK +case 251: +YY_RULE_SETUP +#line 466 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } + YY_BREAK +case 252: +YY_RULE_SETUP +#line 467 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } + YY_BREAK +case 253: +YY_RULE_SETUP +#line 469 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } + YY_BREAK +case 254: +YY_RULE_SETUP +#line 471 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } + YY_BREAK +case 255: +YY_RULE_SETUP +#line 472 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } + YY_BREAK +case 256: +YY_RULE_SETUP +#line 473 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } + YY_BREAK +case 257: +YY_RULE_SETUP +#line 474 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_VERSION) } + YY_BREAK +case 258: +YY_RULE_SETUP +#line 475 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } + YY_BREAK +case 259: +YY_RULE_SETUP +#line 477 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } + YY_BREAK +case 260: +YY_RULE_SETUP +#line 479 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YY_BREAK +case 261: +YY_RULE_SETUP +#line 481 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YY_BREAK +case 262: +YY_RULE_SETUP +#line 483 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YY_BREAK +case 263: +YY_RULE_SETUP +#line 485 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YY_BREAK +case 264: +YY_RULE_SETUP +#line 487 "util/configlexer.lex" +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } + YY_BREAK +case 265: +YY_RULE_SETUP +#line 488 "util/configlexer.lex" +{ YDVAR(1, VAR_IP_RATELIMIT) } + YY_BREAK +case 266: +YY_RULE_SETUP +#line 489 "util/configlexer.lex" +{ YDVAR(1, VAR_RATELIMIT) } + YY_BREAK +case 267: +YY_RULE_SETUP +#line 490 "util/configlexer.lex" +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } + YY_BREAK +case 268: +YY_RULE_SETUP +#line 491 "util/configlexer.lex" +{ YDVAR(1, VAR_RATELIMIT_SLABS) } + YY_BREAK +case 269: +YY_RULE_SETUP +#line 492 "util/configlexer.lex" +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } + YY_BREAK +case 270: +YY_RULE_SETUP +#line 493 "util/configlexer.lex" +{ YDVAR(1, VAR_RATELIMIT_SIZE) } + YY_BREAK +case 271: +YY_RULE_SETUP +#line 494 "util/configlexer.lex" +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } + YY_BREAK +case 272: +YY_RULE_SETUP +#line 495 "util/configlexer.lex" +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } + YY_BREAK +case 273: +YY_RULE_SETUP +#line 496 "util/configlexer.lex" +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } + YY_BREAK +case 274: +YY_RULE_SETUP +#line 497 "util/configlexer.lex" +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } + YY_BREAK +case 275: +YY_RULE_SETUP +#line 498 "util/configlexer.lex" +{ YDVAR(1, VAR_LOW_RTT) } + YY_BREAK +case 276: +YY_RULE_SETUP +#line 499 "util/configlexer.lex" +{ YDVAR(1, VAR_FAST_SERVER_NUM) } + YY_BREAK +case 277: +YY_RULE_SETUP +#line 500 "util/configlexer.lex" +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } + YY_BREAK +case 278: +YY_RULE_SETUP +#line 501 "util/configlexer.lex" +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } + YY_BREAK +case 279: +YY_RULE_SETUP +#line 502 "util/configlexer.lex" +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } + YY_BREAK +case 280: +YY_RULE_SETUP +#line 503 "util/configlexer.lex" +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } + YY_BREAK +case 281: +YY_RULE_SETUP +#line 504 "util/configlexer.lex" +{ YDVAR(2, VAR_RESPONSE_IP) } + YY_BREAK +case 282: +YY_RULE_SETUP +#line 505 "util/configlexer.lex" +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } + YY_BREAK +case 283: +YY_RULE_SETUP +#line 506 "util/configlexer.lex" +{ YDVAR(0, VAR_DNSCRYPT) } + YY_BREAK +case 284: +YY_RULE_SETUP +#line 507 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } + YY_BREAK +case 285: +YY_RULE_SETUP +#line 508 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PORT) } + YY_BREAK +case 286: +YY_RULE_SETUP +#line 509 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } + YY_BREAK +case 287: +YY_RULE_SETUP +#line 510 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } + YY_BREAK +case 288: +YY_RULE_SETUP +#line 511 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } + YY_BREAK +case 289: +YY_RULE_SETUP +#line 512 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } + YY_BREAK +case 290: +YY_RULE_SETUP +#line 513 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } + YY_BREAK +case 291: +YY_RULE_SETUP +#line 515 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } + YY_BREAK +case 292: +YY_RULE_SETUP +#line 517 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } + YY_BREAK +case 293: +YY_RULE_SETUP +#line 518 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } + YY_BREAK +case 294: +YY_RULE_SETUP +#line 519 "util/configlexer.lex" +{ YDVAR(1, VAR_PAD_RESPONSES) } + YY_BREAK +case 295: +YY_RULE_SETUP +#line 520 "util/configlexer.lex" +{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } + YY_BREAK +case 296: +YY_RULE_SETUP +#line 521 "util/configlexer.lex" +{ YDVAR(1, VAR_PAD_QUERIES) } + YY_BREAK +case 297: +YY_RULE_SETUP +#line 522 "util/configlexer.lex" +{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } + YY_BREAK +case 298: +YY_RULE_SETUP +#line 523 "util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } + YY_BREAK +case 299: +YY_RULE_SETUP +#line 524 "util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } + YY_BREAK +case 300: +YY_RULE_SETUP +#line 525 "util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_HOOK) } + YY_BREAK +case 301: +YY_RULE_SETUP +#line 526 "util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } + YY_BREAK +case 302: +YY_RULE_SETUP +#line 527 "util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } + YY_BREAK +case 303: +YY_RULE_SETUP +#line 528 "util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } + YY_BREAK +case 304: +YY_RULE_SETUP +#line 529 "util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_STRICT) } + YY_BREAK +case 305: +YY_RULE_SETUP +#line 530 "util/configlexer.lex" +{ YDVAR(0, VAR_CACHEDB) } + YY_BREAK +case 306: +YY_RULE_SETUP +#line 531 "util/configlexer.lex" +{ YDVAR(1, VAR_CACHEDB_BACKEND) } + YY_BREAK +case 307: +YY_RULE_SETUP +#line 532 "util/configlexer.lex" +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } + YY_BREAK +case 308: +YY_RULE_SETUP +#line 533 "util/configlexer.lex" +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } + YY_BREAK +case 309: +YY_RULE_SETUP +#line 534 "util/configlexer.lex" +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } + YY_BREAK +case 310: +YY_RULE_SETUP +#line 535 "util/configlexer.lex" +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } + YY_BREAK +case 311: +YY_RULE_SETUP +#line 536 "util/configlexer.lex" +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } + YY_BREAK +case 312: +YY_RULE_SETUP +#line 537 "util/configlexer.lex" +{ YDVAR(0, VAR_IPSET) } + YY_BREAK +case 313: +YY_RULE_SETUP +#line 538 "util/configlexer.lex" +{ YDVAR(1, VAR_IPSET_NAME_V4) } + YY_BREAK +case 314: +YY_RULE_SETUP +#line 539 "util/configlexer.lex" +{ YDVAR(1, VAR_IPSET_NAME_V6) } + YY_BREAK +case 315: +YY_RULE_SETUP +#line 540 "util/configlexer.lex" +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } + YY_BREAK +case 316: +YY_RULE_SETUP +#line 541 "util/configlexer.lex" +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } + YY_BREAK +case 317: +YY_RULE_SETUP +#line 542 "util/configlexer.lex" +{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } + YY_BREAK +case 318: +YY_RULE_SETUP +#line 543 "util/configlexer.lex" +{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } + YY_BREAK +case 319: +YY_RULE_SETUP +#line 544 "util/configlexer.lex" +{ YDVAR(1, VAR_NSID ) } + YY_BREAK +case 320: +/* rule 320 can match eol */ +YY_RULE_SETUP +#line 545 "util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++; } + YY_BREAK +/* Quoted strings. Strip leading and ending quotes */ +case 321: +YY_RULE_SETUP +#line 548 "util/configlexer.lex" +{ BEGIN(quotedstring); LEXOUT(("QS ")); } + YY_BREAK +case YY_STATE_EOF(quotedstring): +#line 549 "util/configlexer.lex" +{ + yyerror("EOF inside quoted string"); + if(--num_args == 0) { BEGIN(INITIAL); } + else { BEGIN(val); } +} + YY_BREAK +case 322: +YY_RULE_SETUP +#line 554 "util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 323: +/* rule 323 can match eol */ +YY_RULE_SETUP +#line 555 "util/configlexer.lex" +{ yyerror("newline inside quoted string, no end \""); + cfg_parser->line++; BEGIN(INITIAL); } + YY_BREAK +case 324: +YY_RULE_SETUP +#line 557 "util/configlexer.lex" +{ + LEXOUT(("QE ")); + if(--num_args == 0) { BEGIN(INITIAL); } + else { BEGIN(val); } + yytext[yyleng - 1] = '\0'; + yylval.str = strdup(yytext); + if(!yylval.str) + yyerror("out of memory"); + return STRING_ARG; +} + YY_BREAK +/* Single Quoted strings. Strip leading and ending quotes */ +case 325: +YY_RULE_SETUP +#line 569 "util/configlexer.lex" +{ BEGIN(singlequotedstr); LEXOUT(("SQS ")); } + YY_BREAK +case YY_STATE_EOF(singlequotedstr): +#line 570 "util/configlexer.lex" +{ + yyerror("EOF inside quoted string"); + if(--num_args == 0) { BEGIN(INITIAL); } + else { BEGIN(val); } +} + YY_BREAK +case 326: +YY_RULE_SETUP +#line 575 "util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 327: +/* rule 327 can match eol */ +YY_RULE_SETUP +#line 576 "util/configlexer.lex" +{ yyerror("newline inside quoted string, no end '"); + cfg_parser->line++; BEGIN(INITIAL); } + YY_BREAK +case 328: +YY_RULE_SETUP +#line 578 "util/configlexer.lex" +{ + LEXOUT(("SQE ")); + if(--num_args == 0) { BEGIN(INITIAL); } + else { BEGIN(val); } + yytext[yyleng - 1] = '\0'; + yylval.str = strdup(yytext); + if(!yylval.str) + yyerror("out of memory"); + return STRING_ARG; +} + YY_BREAK +/* include: directive */ +case 329: +YY_RULE_SETUP +#line 590 "util/configlexer.lex" +{ + LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } + YY_BREAK +case YY_STATE_EOF(include): +#line 592 "util/configlexer.lex" +{ + yyerror("EOF inside include directive"); + BEGIN(inc_prev); +} + YY_BREAK +case 330: +YY_RULE_SETUP +#line 596 "util/configlexer.lex" +{ LEXOUT(("ISP ")); /* ignore */ } + YY_BREAK +case 331: +/* rule 331 can match eol */ +YY_RULE_SETUP +#line 597 "util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++;} + YY_BREAK +case 332: +YY_RULE_SETUP +#line 598 "util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 333: +YY_RULE_SETUP +#line 599 "util/configlexer.lex" +{ + LEXOUT(("Iunquotedstr(%s) ", yytext)); + config_start_include_glob(yytext, 0); + BEGIN(inc_prev); +} + YY_BREAK +case YY_STATE_EOF(include_quoted): +#line 604 "util/configlexer.lex" +{ + yyerror("EOF inside quoted string"); + BEGIN(inc_prev); +} + YY_BREAK +case 334: +YY_RULE_SETUP +#line 608 "util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 335: +/* rule 335 can match eol */ +YY_RULE_SETUP +#line 609 "util/configlexer.lex" +{ yyerror("newline before \" in include name"); + cfg_parser->line++; BEGIN(inc_prev); } + YY_BREAK +case 336: +YY_RULE_SETUP +#line 611 "util/configlexer.lex" +{ + LEXOUT(("IQE ")); + yytext[yyleng - 1] = '\0'; + config_start_include_glob(yytext, 0); + BEGIN(inc_prev); +} + YY_BREAK +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(val): +#line 617 "util/configlexer.lex" +{ + LEXOUT(("LEXEOF ")); + yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ + if (!config_include_stack) { + yyterminate(); + } else { + int prev_toplevel = inc_toplevel; + fclose(yyin); + config_end_include(); + if(prev_toplevel) return (VAR_FORCE_TOPLEVEL); + } +} + YY_BREAK +/* include-toplevel: directive */ +case 337: +YY_RULE_SETUP +#line 631 "util/configlexer.lex" +{ + LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); +} + YY_BREAK +case YY_STATE_EOF(include_toplevel): +#line 634 "util/configlexer.lex" +{ + yyerror("EOF inside include_toplevel directive"); + BEGIN(inc_prev); +} + YY_BREAK +case 338: +YY_RULE_SETUP +#line 638 "util/configlexer.lex" +{ LEXOUT(("ITSP ")); /* ignore */ } + YY_BREAK +case 339: +/* rule 339 can match eol */ +YY_RULE_SETUP +#line 639 "util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++; } + YY_BREAK +case 340: +YY_RULE_SETUP +#line 640 "util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 341: +YY_RULE_SETUP +#line 641 "util/configlexer.lex" +{ + LEXOUT(("ITunquotedstr(%s) ", yytext)); + config_start_include_glob(yytext, 1); + BEGIN(inc_prev); + return (VAR_FORCE_TOPLEVEL); +} + YY_BREAK +case YY_STATE_EOF(include_toplevel_quoted): +#line 647 "util/configlexer.lex" +{ + yyerror("EOF inside quoted string"); + BEGIN(inc_prev); +} + YY_BREAK +case 342: +YY_RULE_SETUP +#line 651 "util/configlexer.lex" +{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 343: +/* rule 343 can match eol */ +YY_RULE_SETUP +#line 652 "util/configlexer.lex" +{ + yyerror("newline before \" in include name"); + cfg_parser->line++; BEGIN(inc_prev); +} + YY_BREAK +case 344: +YY_RULE_SETUP +#line 656 "util/configlexer.lex" +{ + LEXOUT(("ITQE ")); + yytext[yyleng - 1] = '\0'; + config_start_include_glob(yytext, 1); + BEGIN(inc_prev); + return (VAR_FORCE_TOPLEVEL); +} + YY_BREAK +case 345: +YY_RULE_SETUP +#line 664 "util/configlexer.lex" +{ LEXOUT(("unquotedstr(%s) ", yytext)); + if(--num_args == 0) { BEGIN(INITIAL); } + yylval.str = strdup(yytext); return STRING_ARG; } + YY_BREAK +case 346: +YY_RULE_SETUP +#line 668 "util/configlexer.lex" +{ + ub_c_error_msg("unknown keyword '%s'", yytext); + } + YY_BREAK +case 347: +YY_RULE_SETUP +#line 672 "util/configlexer.lex" +{ + ub_c_error_msg("stray '%s'", yytext); + } + YY_BREAK +case 348: +YY_RULE_SETUP +#line 676 "util/configlexer.lex" +ECHO; + YY_BREAK +#line 6121 "" + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( yywrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of yylex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = (yytext_ptr); + register int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + yy_size_t num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + yy_size_t new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart(yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + } + + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + 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 >= 3439 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + register int yy_is_jam; + register char *yy_cp = (yy_c_buf_p); + + register YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + 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 >= 3439 ) + 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 == 3438); + + return yy_is_jam ? 0 : yy_current_state; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart(yyin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap( ) ) + return 0; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve yytext */ + (yy_hold_char) = *++(yy_c_buf_p); + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void yyrestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer(yyin,YY_BUF_SIZE ); + } + + yy_init_buffer(YY_CURRENT_BUFFER,input_file ); + yy_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * yypop_buffer_state(); + * yypush_buffer_state(new_buffer); + */ + yyensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + yy_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void yy_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer(b,file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with yy_create_buffer() + * + */ + void yy_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yyfree((void *) b->yy_ch_buf ); + + yyfree((void *) b ); +} + +#ifndef __cplusplus +extern int isatty (int ); +#endif /* __cplusplus */ + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a yyrestart() or at EOF. + */ + static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + yy_flush_buffer(b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then yy_init_buffer was _probably_ + * called from yyrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void yy_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + yy_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + yyensure_buffer_stack(); + + /* This block is copied from yy_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from yy_switch_to_buffer. */ + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void yypop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void yyensure_buffer_stack (void) +{ + yy_size_t num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer(b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to yylex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * yy_scan_bytes() instead. + */ +YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) +{ + + return yy_scan_bytes(yystr,strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to yylex() will + * scan from a @e copy of @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n, i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) yyalloc(n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer(buf,n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yy_fatal_error (yyconst char* msg ) +{ + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = (yy_hold_char); \ + (yy_c_buf_p) = yytext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int yyget_lineno (void) +{ + + return yylineno; +} + +/** Get the input stream. + * + */ +FILE *yyget_in (void) +{ + return yyin; +} + +/** Get the output stream. + * + */ +FILE *yyget_out (void) +{ + return yyout; +} + +/** Get the length of the current token. + * + */ +yy_size_t yyget_leng (void) +{ + return yyleng; +} + +/** Get the current token. + * + */ + +char *yyget_text (void) +{ + return yytext; +} + +/** Set the current line number. + * @param line_number + * + */ +void yyset_lineno (int line_number ) +{ + + yylineno = line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * + * @see yy_switch_to_buffer + */ +void yyset_in (FILE * in_str ) +{ + yyin = in_str ; +} + +void yyset_out (FILE * out_str ) +{ + yyout = out_str ; +} + +int yyget_debug (void) +{ + return yy_flex_debug; +} + +void yyset_debug (int bdebug ) +{ + yy_flex_debug = bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from yylex_destroy(), so don't allocate here. + */ + + (yy_buffer_stack) = 0; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = (char *) 0; + (yy_init) = 0; + (yy_start) = 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = (FILE *) 0; + yyout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * yylex_init() + */ + return 0; +} + +/* yylex_destroy is for both reentrant and non-reentrant scanners. */ +int yylex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + yypop_buffer_state(); + } + + /* Destroy the stack itself. */ + yyfree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * yylex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +{ + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * s ) +{ + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *yyalloc (yy_size_t size ) +{ + return (void *) malloc( size ); +} + +void *yyrealloc (void * ptr, yy_size_t size ) +{ + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); +} + +void yyfree (void * ptr ) +{ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +#line 676 "util/configlexer.lex" + + + diff --git a/util/configlexer.lex b/util/configlexer.lex index c031fab39..e982463d1 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -237,6 +237,7 @@ outgoing-tcp-mss{COLON} { YDVAR(1, VAR_OUTGOING_TCP_MSS) } tcp-idle-timeout{COLON} { YDVAR(1, VAR_TCP_IDLE_TIMEOUT) } max-reuse-tcp-queries{COLON} { YDVAR(1, VAR_MAX_REUSE_TCP_QUERIES) } tcp-reuse-timeout{COLON} { YDVAR(1, VAR_TCP_REUSE_TIMEOUT) } +tcp-auth-query-timeout{COLON} { YDVAR(1, VAR_TCP_AUTH_QUERY_TIMEOUT) } edns-tcp-keepalive{COLON} { YDVAR(1, VAR_EDNS_TCP_KEEPALIVE) } edns-tcp-keepalive-timeout{COLON} { YDVAR(1, VAR_EDNS_TCP_KEEPALIVE_TIMEOUT) } ssl-upstream{COLON} { YDVAR(1, VAR_SSL_UPSTREAM) } diff --git a/util/configparser.c b/util/configparser.c index 3acfe4452..e37e5551b 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,14 +1,14 @@ -/* A Bison parser, made by GNU Bison 3.6.4. */ +/* A Bison parser, made by GNU Bison 2.3. */ -/* Bison implementation for Yacc-like parsers in C +/* Skeleton implementation for Bison's Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, - Inc. + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. - This program is free software: you can redistribute it and/or modify + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. + the Free Software Foundation; either version 2, or (at your option) + any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -16,7 +16,9 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -34,10 +36,6 @@ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ -/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, - especially those whose name start with YY_ or yy_. They are - private implementation details that can be changed or removed. */ - /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. @@ -49,7 +47,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.6.4" +#define YYBISON_VERSION "2.3" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -57,406 +55,331 @@ /* Pure parsers. */ #define YYPURE 0 -/* Push parsers. */ -#define YYPUSH 0 - -/* Pull parsers. */ -#define YYPULL 1 - - - - -/* First part of user prologue. */ -#line 38 "./util/configparser.y" - -#include "config.h" - -#include -#include -#include -#include -#include - -#include "util/configyyrename.h" -#include "util/config_file.h" -#include "util/net_help.h" - -int ub_c_lex(void); -void ub_c_error(const char *message); - -static void validate_respip_action(const char* action); - -/* these need to be global, otherwise they cannot be used inside yacc */ -extern struct config_parser_state* cfg_parser; - -#if 0 -#define OUTYY(s) printf s /* used ONLY when debugging */ -#else -#define OUTYY(s) -#endif - - -#line 100 "util/configparser.c" +/* Using locations. */ +#define YYLSP_NEEDED 0 -# ifndef YY_CAST -# ifdef __cplusplus -# define YY_CAST(Type, Val) static_cast (Val) -# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) -# else -# define YY_CAST(Type, Val) ((Type) (Val)) -# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) -# endif -# endif -# ifndef YY_NULLPTR -# if defined __cplusplus -# if 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif -# else -# define YY_NULLPTR ((void*)0) -# endif -# endif -/* Use api.header.include to #include this header - instead of duplicating it here. */ -#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED -# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif -#if YYDEBUG -extern int yydebug; -#endif -/* Token kinds. */ +/* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - enum yytokentype - { - YYEMPTY = -2, - YYEOF = 0, /* "end of file" */ - YYerror = 256, /* error */ - YYUNDEF = 257, /* "invalid token" */ - SPACE = 258, /* SPACE */ - LETTER = 259, /* LETTER */ - NEWLINE = 260, /* NEWLINE */ - COMMENT = 261, /* COMMENT */ - COLON = 262, /* COLON */ - ANY = 263, /* ANY */ - ZONESTR = 264, /* ZONESTR */ - STRING_ARG = 265, /* STRING_ARG */ - VAR_FORCE_TOPLEVEL = 266, /* VAR_FORCE_TOPLEVEL */ - VAR_SERVER = 267, /* VAR_SERVER */ - VAR_VERBOSITY = 268, /* VAR_VERBOSITY */ - VAR_NUM_THREADS = 269, /* VAR_NUM_THREADS */ - VAR_PORT = 270, /* VAR_PORT */ - VAR_OUTGOING_RANGE = 271, /* VAR_OUTGOING_RANGE */ - VAR_INTERFACE = 272, /* VAR_INTERFACE */ - VAR_PREFER_IP4 = 273, /* VAR_PREFER_IP4 */ - VAR_DO_IP4 = 274, /* VAR_DO_IP4 */ - VAR_DO_IP6 = 275, /* VAR_DO_IP6 */ - VAR_PREFER_IP6 = 276, /* VAR_PREFER_IP6 */ - VAR_DO_UDP = 277, /* VAR_DO_UDP */ - VAR_DO_TCP = 278, /* VAR_DO_TCP */ - VAR_TCP_MSS = 279, /* VAR_TCP_MSS */ - VAR_OUTGOING_TCP_MSS = 280, /* VAR_OUTGOING_TCP_MSS */ - VAR_TCP_IDLE_TIMEOUT = 281, /* VAR_TCP_IDLE_TIMEOUT */ - VAR_EDNS_TCP_KEEPALIVE = 282, /* VAR_EDNS_TCP_KEEPALIVE */ - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ - VAR_CHROOT = 284, /* VAR_CHROOT */ - VAR_USERNAME = 285, /* VAR_USERNAME */ - VAR_DIRECTORY = 286, /* VAR_DIRECTORY */ - VAR_LOGFILE = 287, /* VAR_LOGFILE */ - VAR_PIDFILE = 288, /* VAR_PIDFILE */ - VAR_MSG_CACHE_SIZE = 289, /* VAR_MSG_CACHE_SIZE */ - VAR_MSG_CACHE_SLABS = 290, /* VAR_MSG_CACHE_SLABS */ - VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD */ - VAR_RRSET_CACHE_SIZE = 292, /* VAR_RRSET_CACHE_SIZE */ - VAR_RRSET_CACHE_SLABS = 293, /* VAR_RRSET_CACHE_SLABS */ - VAR_OUTGOING_NUM_TCP = 294, /* VAR_OUTGOING_NUM_TCP */ - VAR_INFRA_HOST_TTL = 295, /* VAR_INFRA_HOST_TTL */ - VAR_INFRA_LAME_TTL = 296, /* VAR_INFRA_LAME_TTL */ - VAR_INFRA_CACHE_SLABS = 297, /* VAR_INFRA_CACHE_SLABS */ - VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS */ - VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE */ - VAR_NAME = 300, /* VAR_NAME */ - VAR_STUB_ZONE = 301, /* VAR_STUB_ZONE */ - VAR_STUB_HOST = 302, /* VAR_STUB_HOST */ - VAR_STUB_ADDR = 303, /* VAR_STUB_ADDR */ - VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY */ - VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE */ - VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES */ - VAR_FORWARD_ZONE = 307, /* VAR_FORWARD_ZONE */ - VAR_FORWARD_HOST = 308, /* VAR_FORWARD_HOST */ - VAR_FORWARD_ADDR = 309, /* VAR_FORWARD_ADDR */ - VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS */ - VAR_HIDE_IDENTITY = 311, /* VAR_HIDE_IDENTITY */ - VAR_HIDE_VERSION = 312, /* VAR_HIDE_VERSION */ - VAR_IDENTITY = 313, /* VAR_IDENTITY */ - VAR_VERSION = 314, /* VAR_VERSION */ - VAR_HARDEN_GLUE = 315, /* VAR_HARDEN_GLUE */ - VAR_MODULE_CONF = 316, /* VAR_MODULE_CONF */ - VAR_TRUST_ANCHOR_FILE = 317, /* VAR_TRUST_ANCHOR_FILE */ - VAR_TRUST_ANCHOR = 318, /* VAR_TRUST_ANCHOR */ - VAR_VAL_OVERRIDE_DATE = 319, /* VAR_VAL_OVERRIDE_DATE */ - VAR_BOGUS_TTL = 320, /* VAR_BOGUS_TTL */ - VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL */ - VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE */ - VAR_INCOMING_NUM_TCP = 323, /* VAR_INCOMING_NUM_TCP */ - VAR_MSG_BUFFER_SIZE = 324, /* VAR_MSG_BUFFER_SIZE */ - VAR_KEY_CACHE_SIZE = 325, /* VAR_KEY_CACHE_SIZE */ - VAR_KEY_CACHE_SLABS = 326, /* VAR_KEY_CACHE_SLABS */ - VAR_TRUSTED_KEYS_FILE = 327, /* VAR_TRUSTED_KEYS_FILE */ - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ - VAR_USE_SYSLOG = 329, /* VAR_USE_SYSLOG */ - VAR_OUTGOING_INTERFACE = 330, /* VAR_OUTGOING_INTERFACE */ - VAR_ROOT_HINTS = 331, /* VAR_ROOT_HINTS */ - VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST */ - VAR_CACHE_MAX_TTL = 333, /* VAR_CACHE_MAX_TTL */ - VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED */ - VAR_ACCESS_CONTROL = 335, /* VAR_ACCESS_CONTROL */ - VAR_LOCAL_ZONE = 336, /* VAR_LOCAL_ZONE */ - VAR_LOCAL_DATA = 337, /* VAR_LOCAL_DATA */ - VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC */ - VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL */ - VAR_DO_DAEMONIZE = 340, /* VAR_DO_DAEMONIZE */ - VAR_USE_CAPS_FOR_ID = 341, /* VAR_USE_CAPS_FOR_ID */ - VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE */ - VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT */ - VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID */ - VAR_DLV_ANCHOR_FILE = 345, /* VAR_DLV_ANCHOR_FILE */ - VAR_DLV_ANCHOR = 346, /* VAR_DLV_ANCHOR */ - VAR_NEG_CACHE_SIZE = 347, /* VAR_NEG_CACHE_SIZE */ - VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH */ - VAR_PRIVATE_ADDRESS = 349, /* VAR_PRIVATE_ADDRESS */ - VAR_PRIVATE_DOMAIN = 350, /* VAR_PRIVATE_DOMAIN */ - VAR_REMOTE_CONTROL = 351, /* VAR_REMOTE_CONTROL */ - VAR_CONTROL_ENABLE = 352, /* VAR_CONTROL_ENABLE */ - VAR_CONTROL_INTERFACE = 353, /* VAR_CONTROL_INTERFACE */ - VAR_CONTROL_PORT = 354, /* VAR_CONTROL_PORT */ - VAR_SERVER_KEY_FILE = 355, /* VAR_SERVER_KEY_FILE */ - VAR_SERVER_CERT_FILE = 356, /* VAR_SERVER_CERT_FILE */ - VAR_CONTROL_KEY_FILE = 357, /* VAR_CONTROL_KEY_FILE */ - VAR_CONTROL_CERT_FILE = 358, /* VAR_CONTROL_CERT_FILE */ - VAR_CONTROL_USE_CERT = 359, /* VAR_CONTROL_USE_CERT */ - VAR_TCP_REUSE_TIMEOUT = 360, /* VAR_TCP_REUSE_TIMEOUT */ - VAR_MAX_REUSE_TCP_QUERIES = 361, /* VAR_MAX_REUSE_TCP_QUERIES */ - VAR_EXTENDED_STATISTICS = 362, /* VAR_EXTENDED_STATISTICS */ - VAR_LOCAL_DATA_PTR = 363, /* VAR_LOCAL_DATA_PTR */ - VAR_JOSTLE_TIMEOUT = 364, /* VAR_JOSTLE_TIMEOUT */ - VAR_STUB_PRIME = 365, /* VAR_STUB_PRIME */ - VAR_UNWANTED_REPLY_THRESHOLD = 366, /* VAR_UNWANTED_REPLY_THRESHOLD */ - VAR_LOG_TIME_ASCII = 367, /* VAR_LOG_TIME_ASCII */ - VAR_DOMAIN_INSECURE = 368, /* VAR_DOMAIN_INSECURE */ - VAR_PYTHON = 369, /* VAR_PYTHON */ - VAR_PYTHON_SCRIPT = 370, /* VAR_PYTHON_SCRIPT */ - VAR_VAL_SIG_SKEW_MIN = 371, /* VAR_VAL_SIG_SKEW_MIN */ - VAR_VAL_SIG_SKEW_MAX = 372, /* VAR_VAL_SIG_SKEW_MAX */ - VAR_CACHE_MIN_TTL = 373, /* VAR_CACHE_MIN_TTL */ - VAR_VAL_LOG_LEVEL = 374, /* VAR_VAL_LOG_LEVEL */ - VAR_AUTO_TRUST_ANCHOR_FILE = 375, /* VAR_AUTO_TRUST_ANCHOR_FILE */ - VAR_KEEP_MISSING = 376, /* VAR_KEEP_MISSING */ - VAR_ADD_HOLDDOWN = 377, /* VAR_ADD_HOLDDOWN */ - VAR_DEL_HOLDDOWN = 378, /* VAR_DEL_HOLDDOWN */ - VAR_SO_RCVBUF = 379, /* VAR_SO_RCVBUF */ - VAR_EDNS_BUFFER_SIZE = 380, /* VAR_EDNS_BUFFER_SIZE */ - VAR_PREFETCH = 381, /* VAR_PREFETCH */ - VAR_PREFETCH_KEY = 382, /* VAR_PREFETCH_KEY */ - VAR_SO_SNDBUF = 383, /* VAR_SO_SNDBUF */ - VAR_SO_REUSEPORT = 384, /* VAR_SO_REUSEPORT */ - VAR_HARDEN_BELOW_NXDOMAIN = 385, /* VAR_HARDEN_BELOW_NXDOMAIN */ - VAR_IGNORE_CD_FLAG = 386, /* VAR_IGNORE_CD_FLAG */ - VAR_LOG_QUERIES = 387, /* VAR_LOG_QUERIES */ - VAR_LOG_REPLIES = 388, /* VAR_LOG_REPLIES */ - VAR_LOG_LOCAL_ACTIONS = 389, /* VAR_LOG_LOCAL_ACTIONS */ - VAR_TCP_UPSTREAM = 390, /* VAR_TCP_UPSTREAM */ - VAR_SSL_UPSTREAM = 391, /* VAR_SSL_UPSTREAM */ - VAR_SSL_SERVICE_KEY = 392, /* VAR_SSL_SERVICE_KEY */ - VAR_SSL_SERVICE_PEM = 393, /* VAR_SSL_SERVICE_PEM */ - VAR_SSL_PORT = 394, /* VAR_SSL_PORT */ - VAR_FORWARD_FIRST = 395, /* VAR_FORWARD_FIRST */ - VAR_STUB_SSL_UPSTREAM = 396, /* VAR_STUB_SSL_UPSTREAM */ - VAR_FORWARD_SSL_UPSTREAM = 397, /* VAR_FORWARD_SSL_UPSTREAM */ - VAR_TLS_CERT_BUNDLE = 398, /* VAR_TLS_CERT_BUNDLE */ - VAR_HTTPS_PORT = 399, /* VAR_HTTPS_PORT */ - VAR_HTTP_ENDPOINT = 400, /* VAR_HTTP_ENDPOINT */ - VAR_HTTP_MAX_STREAMS = 401, /* VAR_HTTP_MAX_STREAMS */ - VAR_HTTP_QUERY_BUFFER_SIZE = 402, /* VAR_HTTP_QUERY_BUFFER_SIZE */ - VAR_HTTP_RESPONSE_BUFFER_SIZE = 403, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ - VAR_HTTP_NODELAY = 404, /* VAR_HTTP_NODELAY */ - VAR_HTTP_NOTLS_DOWNSTREAM = 405, /* VAR_HTTP_NOTLS_DOWNSTREAM */ - VAR_STUB_FIRST = 406, /* VAR_STUB_FIRST */ - VAR_MINIMAL_RESPONSES = 407, /* VAR_MINIMAL_RESPONSES */ - VAR_RRSET_ROUNDROBIN = 408, /* VAR_RRSET_ROUNDROBIN */ - VAR_MAX_UDP_SIZE = 409, /* VAR_MAX_UDP_SIZE */ - VAR_DELAY_CLOSE = 410, /* VAR_DELAY_CLOSE */ - VAR_UDP_CONNECT = 411, /* VAR_UDP_CONNECT */ - VAR_UNBLOCK_LAN_ZONES = 412, /* VAR_UNBLOCK_LAN_ZONES */ - VAR_INSECURE_LAN_ZONES = 413, /* VAR_INSECURE_LAN_ZONES */ - VAR_INFRA_CACHE_MIN_RTT = 414, /* VAR_INFRA_CACHE_MIN_RTT */ - VAR_INFRA_KEEP_PROBING = 415, /* VAR_INFRA_KEEP_PROBING */ - VAR_DNS64_PREFIX = 416, /* VAR_DNS64_PREFIX */ - VAR_DNS64_SYNTHALL = 417, /* VAR_DNS64_SYNTHALL */ - VAR_DNS64_IGNORE_AAAA = 418, /* VAR_DNS64_IGNORE_AAAA */ - VAR_DNSTAP = 419, /* VAR_DNSTAP */ - VAR_DNSTAP_ENABLE = 420, /* VAR_DNSTAP_ENABLE */ - VAR_DNSTAP_SOCKET_PATH = 421, /* VAR_DNSTAP_SOCKET_PATH */ - VAR_DNSTAP_IP = 422, /* VAR_DNSTAP_IP */ - VAR_DNSTAP_TLS = 423, /* VAR_DNSTAP_TLS */ - VAR_DNSTAP_TLS_SERVER_NAME = 424, /* VAR_DNSTAP_TLS_SERVER_NAME */ - VAR_DNSTAP_TLS_CERT_BUNDLE = 425, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 426, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 427, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ - VAR_DNSTAP_SEND_IDENTITY = 428, /* VAR_DNSTAP_SEND_IDENTITY */ - VAR_DNSTAP_SEND_VERSION = 429, /* VAR_DNSTAP_SEND_VERSION */ - VAR_DNSTAP_BIDIRECTIONAL = 430, /* VAR_DNSTAP_BIDIRECTIONAL */ - VAR_DNSTAP_IDENTITY = 431, /* VAR_DNSTAP_IDENTITY */ - VAR_DNSTAP_VERSION = 432, /* VAR_DNSTAP_VERSION */ - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 433, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 434, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 435, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 436, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 437, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 438, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ - VAR_RESPONSE_IP_TAG = 439, /* VAR_RESPONSE_IP_TAG */ - VAR_RESPONSE_IP = 440, /* VAR_RESPONSE_IP */ - VAR_RESPONSE_IP_DATA = 441, /* VAR_RESPONSE_IP_DATA */ - VAR_HARDEN_ALGO_DOWNGRADE = 442, /* VAR_HARDEN_ALGO_DOWNGRADE */ - VAR_IP_TRANSPARENT = 443, /* VAR_IP_TRANSPARENT */ - VAR_IP_DSCP = 444, /* VAR_IP_DSCP */ - VAR_DISABLE_DNSSEC_LAME_CHECK = 445, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ - VAR_IP_RATELIMIT = 446, /* VAR_IP_RATELIMIT */ - VAR_IP_RATELIMIT_SLABS = 447, /* VAR_IP_RATELIMIT_SLABS */ - VAR_IP_RATELIMIT_SIZE = 448, /* VAR_IP_RATELIMIT_SIZE */ - VAR_RATELIMIT = 449, /* VAR_RATELIMIT */ - VAR_RATELIMIT_SLABS = 450, /* VAR_RATELIMIT_SLABS */ - VAR_RATELIMIT_SIZE = 451, /* VAR_RATELIMIT_SIZE */ - VAR_RATELIMIT_FOR_DOMAIN = 452, /* VAR_RATELIMIT_FOR_DOMAIN */ - VAR_RATELIMIT_BELOW_DOMAIN = 453, /* VAR_RATELIMIT_BELOW_DOMAIN */ - VAR_IP_RATELIMIT_FACTOR = 454, /* VAR_IP_RATELIMIT_FACTOR */ - VAR_RATELIMIT_FACTOR = 455, /* VAR_RATELIMIT_FACTOR */ - VAR_SEND_CLIENT_SUBNET = 456, /* VAR_SEND_CLIENT_SUBNET */ - VAR_CLIENT_SUBNET_ZONE = 457, /* VAR_CLIENT_SUBNET_ZONE */ - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 458, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - VAR_CLIENT_SUBNET_OPCODE = 459, /* VAR_CLIENT_SUBNET_OPCODE */ - VAR_MAX_CLIENT_SUBNET_IPV4 = 460, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - VAR_MAX_CLIENT_SUBNET_IPV6 = 461, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - VAR_MIN_CLIENT_SUBNET_IPV4 = 462, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - VAR_MIN_CLIENT_SUBNET_IPV6 = 463, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - VAR_MAX_ECS_TREE_SIZE_IPV4 = 464, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - VAR_MAX_ECS_TREE_SIZE_IPV6 = 465, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - VAR_CAPS_WHITELIST = 466, /* VAR_CAPS_WHITELIST */ - VAR_CACHE_MAX_NEGATIVE_TTL = 467, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - VAR_PERMIT_SMALL_HOLDDOWN = 468, /* VAR_PERMIT_SMALL_HOLDDOWN */ - VAR_QNAME_MINIMISATION = 469, /* VAR_QNAME_MINIMISATION */ - VAR_QNAME_MINIMISATION_STRICT = 470, /* VAR_QNAME_MINIMISATION_STRICT */ - VAR_IP_FREEBIND = 471, /* VAR_IP_FREEBIND */ - VAR_DEFINE_TAG = 472, /* VAR_DEFINE_TAG */ - VAR_LOCAL_ZONE_TAG = 473, /* VAR_LOCAL_ZONE_TAG */ - VAR_ACCESS_CONTROL_TAG = 474, /* VAR_ACCESS_CONTROL_TAG */ - VAR_LOCAL_ZONE_OVERRIDE = 475, /* VAR_LOCAL_ZONE_OVERRIDE */ - VAR_ACCESS_CONTROL_TAG_ACTION = 476, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - VAR_ACCESS_CONTROL_TAG_DATA = 477, /* VAR_ACCESS_CONTROL_TAG_DATA */ - VAR_VIEW = 478, /* VAR_VIEW */ - VAR_ACCESS_CONTROL_VIEW = 479, /* VAR_ACCESS_CONTROL_VIEW */ - VAR_VIEW_FIRST = 480, /* VAR_VIEW_FIRST */ - VAR_SERVE_EXPIRED = 481, /* VAR_SERVE_EXPIRED */ - VAR_SERVE_EXPIRED_TTL = 482, /* VAR_SERVE_EXPIRED_TTL */ - VAR_SERVE_EXPIRED_TTL_RESET = 483, /* VAR_SERVE_EXPIRED_TTL_RESET */ - VAR_SERVE_EXPIRED_REPLY_TTL = 484, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 485, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - VAR_SERVE_ORIGINAL_TTL = 486, /* VAR_SERVE_ORIGINAL_TTL */ - VAR_FAKE_DSA = 487, /* VAR_FAKE_DSA */ - VAR_FAKE_SHA1 = 488, /* VAR_FAKE_SHA1 */ - VAR_LOG_IDENTITY = 489, /* VAR_LOG_IDENTITY */ - VAR_HIDE_TRUSTANCHOR = 490, /* VAR_HIDE_TRUSTANCHOR */ - VAR_TRUST_ANCHOR_SIGNALING = 491, /* VAR_TRUST_ANCHOR_SIGNALING */ - VAR_AGGRESSIVE_NSEC = 492, /* VAR_AGGRESSIVE_NSEC */ - VAR_USE_SYSTEMD = 493, /* VAR_USE_SYSTEMD */ - VAR_SHM_ENABLE = 494, /* VAR_SHM_ENABLE */ - VAR_SHM_KEY = 495, /* VAR_SHM_KEY */ - VAR_ROOT_KEY_SENTINEL = 496, /* VAR_ROOT_KEY_SENTINEL */ - VAR_DNSCRYPT = 497, /* VAR_DNSCRYPT */ - VAR_DNSCRYPT_ENABLE = 498, /* VAR_DNSCRYPT_ENABLE */ - VAR_DNSCRYPT_PORT = 499, /* VAR_DNSCRYPT_PORT */ - VAR_DNSCRYPT_PROVIDER = 500, /* VAR_DNSCRYPT_PROVIDER */ - VAR_DNSCRYPT_SECRET_KEY = 501, /* VAR_DNSCRYPT_SECRET_KEY */ - VAR_DNSCRYPT_PROVIDER_CERT = 502, /* VAR_DNSCRYPT_PROVIDER_CERT */ - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 503, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 504, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 505, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 506, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 507, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - VAR_PAD_RESPONSES = 508, /* VAR_PAD_RESPONSES */ - VAR_PAD_RESPONSES_BLOCK_SIZE = 509, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - VAR_PAD_QUERIES = 510, /* VAR_PAD_QUERIES */ - VAR_PAD_QUERIES_BLOCK_SIZE = 511, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - VAR_IPSECMOD_ENABLED = 512, /* VAR_IPSECMOD_ENABLED */ - VAR_IPSECMOD_HOOK = 513, /* VAR_IPSECMOD_HOOK */ - VAR_IPSECMOD_IGNORE_BOGUS = 514, /* VAR_IPSECMOD_IGNORE_BOGUS */ - VAR_IPSECMOD_MAX_TTL = 515, /* VAR_IPSECMOD_MAX_TTL */ - VAR_IPSECMOD_WHITELIST = 516, /* VAR_IPSECMOD_WHITELIST */ - VAR_IPSECMOD_STRICT = 517, /* VAR_IPSECMOD_STRICT */ - VAR_CACHEDB = 518, /* VAR_CACHEDB */ - VAR_CACHEDB_BACKEND = 519, /* VAR_CACHEDB_BACKEND */ - VAR_CACHEDB_SECRETSEED = 520, /* VAR_CACHEDB_SECRETSEED */ - VAR_CACHEDB_REDISHOST = 521, /* VAR_CACHEDB_REDISHOST */ - VAR_CACHEDB_REDISPORT = 522, /* VAR_CACHEDB_REDISPORT */ - VAR_CACHEDB_REDISTIMEOUT = 523, /* VAR_CACHEDB_REDISTIMEOUT */ - VAR_CACHEDB_REDISEXPIRERECORDS = 524, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 525, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - VAR_FOR_UPSTREAM = 526, /* VAR_FOR_UPSTREAM */ - VAR_AUTH_ZONE = 527, /* VAR_AUTH_ZONE */ - VAR_ZONEFILE = 528, /* VAR_ZONEFILE */ - VAR_MASTER = 529, /* VAR_MASTER */ - VAR_URL = 530, /* VAR_URL */ - VAR_FOR_DOWNSTREAM = 531, /* VAR_FOR_DOWNSTREAM */ - VAR_FALLBACK_ENABLED = 532, /* VAR_FALLBACK_ENABLED */ - VAR_TLS_ADDITIONAL_PORT = 533, /* VAR_TLS_ADDITIONAL_PORT */ - VAR_LOW_RTT = 534, /* VAR_LOW_RTT */ - VAR_LOW_RTT_PERMIL = 535, /* VAR_LOW_RTT_PERMIL */ - VAR_FAST_SERVER_PERMIL = 536, /* VAR_FAST_SERVER_PERMIL */ - VAR_FAST_SERVER_NUM = 537, /* VAR_FAST_SERVER_NUM */ - VAR_ALLOW_NOTIFY = 538, /* VAR_ALLOW_NOTIFY */ - VAR_TLS_WIN_CERT = 539, /* VAR_TLS_WIN_CERT */ - VAR_TCP_CONNECTION_LIMIT = 540, /* VAR_TCP_CONNECTION_LIMIT */ - VAR_FORWARD_NO_CACHE = 541, /* VAR_FORWARD_NO_CACHE */ - VAR_STUB_NO_CACHE = 542, /* VAR_STUB_NO_CACHE */ - VAR_LOG_SERVFAIL = 543, /* VAR_LOG_SERVFAIL */ - VAR_DENY_ANY = 544, /* VAR_DENY_ANY */ - VAR_UNKNOWN_SERVER_TIME_LIMIT = 545, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - VAR_LOG_TAG_QUERYREPLY = 546, /* VAR_LOG_TAG_QUERYREPLY */ - VAR_STREAM_WAIT_SIZE = 547, /* VAR_STREAM_WAIT_SIZE */ - VAR_TLS_CIPHERS = 548, /* VAR_TLS_CIPHERS */ - VAR_TLS_CIPHERSUITES = 549, /* VAR_TLS_CIPHERSUITES */ - VAR_TLS_USE_SNI = 550, /* VAR_TLS_USE_SNI */ - VAR_IPSET = 551, /* VAR_IPSET */ - VAR_IPSET_NAME_V4 = 552, /* VAR_IPSET_NAME_V4 */ - VAR_IPSET_NAME_V6 = 553, /* VAR_IPSET_NAME_V6 */ - VAR_TLS_SESSION_TICKET_KEYS = 554, /* VAR_TLS_SESSION_TICKET_KEYS */ - VAR_RPZ = 555, /* VAR_RPZ */ - VAR_TAGS = 556, /* VAR_TAGS */ - VAR_RPZ_ACTION_OVERRIDE = 557, /* VAR_RPZ_ACTION_OVERRIDE */ - VAR_RPZ_CNAME_OVERRIDE = 558, /* VAR_RPZ_CNAME_OVERRIDE */ - VAR_RPZ_LOG = 559, /* VAR_RPZ_LOG */ - VAR_RPZ_LOG_NAME = 560, /* VAR_RPZ_LOG_NAME */ - VAR_DYNLIB = 561, /* VAR_DYNLIB */ - VAR_DYNLIB_FILE = 562, /* VAR_DYNLIB_FILE */ - VAR_EDNS_CLIENT_STRING = 563, /* VAR_EDNS_CLIENT_STRING */ - VAR_EDNS_CLIENT_STRING_OPCODE = 564, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - VAR_NSID = 565, /* VAR_NSID */ - VAR_ZONEMD_PERMISSIVE_MODE = 566, /* VAR_ZONEMD_PERMISSIVE_MODE */ - VAR_ZONEMD_REJECT_ABSENCE = 567 /* VAR_ZONEMD_REJECT_ABSENCE */ - }; - typedef enum yytokentype yytoken_kind_t; + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + SPACE = 258, + LETTER = 259, + NEWLINE = 260, + COMMENT = 261, + COLON = 262, + ANY = 263, + ZONESTR = 264, + STRING_ARG = 265, + VAR_FORCE_TOPLEVEL = 266, + VAR_SERVER = 267, + VAR_VERBOSITY = 268, + VAR_NUM_THREADS = 269, + VAR_PORT = 270, + VAR_OUTGOING_RANGE = 271, + VAR_INTERFACE = 272, + VAR_PREFER_IP4 = 273, + VAR_DO_IP4 = 274, + VAR_DO_IP6 = 275, + VAR_PREFER_IP6 = 276, + VAR_DO_UDP = 277, + VAR_DO_TCP = 278, + VAR_TCP_MSS = 279, + VAR_OUTGOING_TCP_MSS = 280, + VAR_TCP_IDLE_TIMEOUT = 281, + VAR_EDNS_TCP_KEEPALIVE = 282, + VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, + VAR_CHROOT = 284, + VAR_USERNAME = 285, + VAR_DIRECTORY = 286, + VAR_LOGFILE = 287, + VAR_PIDFILE = 288, + VAR_MSG_CACHE_SIZE = 289, + VAR_MSG_CACHE_SLABS = 290, + VAR_NUM_QUERIES_PER_THREAD = 291, + VAR_RRSET_CACHE_SIZE = 292, + VAR_RRSET_CACHE_SLABS = 293, + VAR_OUTGOING_NUM_TCP = 294, + VAR_INFRA_HOST_TTL = 295, + VAR_INFRA_LAME_TTL = 296, + VAR_INFRA_CACHE_SLABS = 297, + VAR_INFRA_CACHE_NUMHOSTS = 298, + VAR_INFRA_CACHE_LAME_SIZE = 299, + VAR_NAME = 300, + VAR_STUB_ZONE = 301, + VAR_STUB_HOST = 302, + VAR_STUB_ADDR = 303, + VAR_TARGET_FETCH_POLICY = 304, + VAR_HARDEN_SHORT_BUFSIZE = 305, + VAR_HARDEN_LARGE_QUERIES = 306, + VAR_FORWARD_ZONE = 307, + VAR_FORWARD_HOST = 308, + VAR_FORWARD_ADDR = 309, + VAR_DO_NOT_QUERY_ADDRESS = 310, + VAR_HIDE_IDENTITY = 311, + VAR_HIDE_VERSION = 312, + VAR_IDENTITY = 313, + VAR_VERSION = 314, + VAR_HARDEN_GLUE = 315, + VAR_MODULE_CONF = 316, + VAR_TRUST_ANCHOR_FILE = 317, + VAR_TRUST_ANCHOR = 318, + VAR_VAL_OVERRIDE_DATE = 319, + VAR_BOGUS_TTL = 320, + VAR_VAL_CLEAN_ADDITIONAL = 321, + VAR_VAL_PERMISSIVE_MODE = 322, + VAR_INCOMING_NUM_TCP = 323, + VAR_MSG_BUFFER_SIZE = 324, + VAR_KEY_CACHE_SIZE = 325, + VAR_KEY_CACHE_SLABS = 326, + VAR_TRUSTED_KEYS_FILE = 327, + VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, + VAR_USE_SYSLOG = 329, + VAR_OUTGOING_INTERFACE = 330, + VAR_ROOT_HINTS = 331, + VAR_DO_NOT_QUERY_LOCALHOST = 332, + VAR_CACHE_MAX_TTL = 333, + VAR_HARDEN_DNSSEC_STRIPPED = 334, + VAR_ACCESS_CONTROL = 335, + VAR_LOCAL_ZONE = 336, + VAR_LOCAL_DATA = 337, + VAR_INTERFACE_AUTOMATIC = 338, + VAR_STATISTICS_INTERVAL = 339, + VAR_DO_DAEMONIZE = 340, + VAR_USE_CAPS_FOR_ID = 341, + VAR_STATISTICS_CUMULATIVE = 342, + VAR_OUTGOING_PORT_PERMIT = 343, + VAR_OUTGOING_PORT_AVOID = 344, + VAR_DLV_ANCHOR_FILE = 345, + VAR_DLV_ANCHOR = 346, + VAR_NEG_CACHE_SIZE = 347, + VAR_HARDEN_REFERRAL_PATH = 348, + VAR_PRIVATE_ADDRESS = 349, + VAR_PRIVATE_DOMAIN = 350, + VAR_REMOTE_CONTROL = 351, + VAR_CONTROL_ENABLE = 352, + VAR_CONTROL_INTERFACE = 353, + VAR_CONTROL_PORT = 354, + VAR_SERVER_KEY_FILE = 355, + VAR_SERVER_CERT_FILE = 356, + VAR_CONTROL_KEY_FILE = 357, + VAR_CONTROL_CERT_FILE = 358, + VAR_CONTROL_USE_CERT = 359, + VAR_TCP_REUSE_TIMEOUT = 360, + VAR_MAX_REUSE_TCP_QUERIES = 361, + VAR_EXTENDED_STATISTICS = 362, + VAR_LOCAL_DATA_PTR = 363, + VAR_JOSTLE_TIMEOUT = 364, + VAR_STUB_PRIME = 365, + VAR_UNWANTED_REPLY_THRESHOLD = 366, + VAR_LOG_TIME_ASCII = 367, + VAR_DOMAIN_INSECURE = 368, + VAR_PYTHON = 369, + VAR_PYTHON_SCRIPT = 370, + VAR_VAL_SIG_SKEW_MIN = 371, + VAR_VAL_SIG_SKEW_MAX = 372, + VAR_CACHE_MIN_TTL = 373, + VAR_VAL_LOG_LEVEL = 374, + VAR_AUTO_TRUST_ANCHOR_FILE = 375, + VAR_KEEP_MISSING = 376, + VAR_ADD_HOLDDOWN = 377, + VAR_DEL_HOLDDOWN = 378, + VAR_SO_RCVBUF = 379, + VAR_EDNS_BUFFER_SIZE = 380, + VAR_PREFETCH = 381, + VAR_PREFETCH_KEY = 382, + VAR_SO_SNDBUF = 383, + VAR_SO_REUSEPORT = 384, + VAR_HARDEN_BELOW_NXDOMAIN = 385, + VAR_IGNORE_CD_FLAG = 386, + VAR_LOG_QUERIES = 387, + VAR_LOG_REPLIES = 388, + VAR_LOG_LOCAL_ACTIONS = 389, + VAR_TCP_UPSTREAM = 390, + VAR_SSL_UPSTREAM = 391, + VAR_TCP_AUTH_QUERY_TIMEOUT = 392, + VAR_SSL_SERVICE_KEY = 393, + VAR_SSL_SERVICE_PEM = 394, + VAR_SSL_PORT = 395, + VAR_FORWARD_FIRST = 396, + VAR_STUB_SSL_UPSTREAM = 397, + VAR_FORWARD_SSL_UPSTREAM = 398, + VAR_TLS_CERT_BUNDLE = 399, + VAR_HTTPS_PORT = 400, + VAR_HTTP_ENDPOINT = 401, + VAR_HTTP_MAX_STREAMS = 402, + VAR_HTTP_QUERY_BUFFER_SIZE = 403, + VAR_HTTP_RESPONSE_BUFFER_SIZE = 404, + VAR_HTTP_NODELAY = 405, + VAR_HTTP_NOTLS_DOWNSTREAM = 406, + VAR_STUB_FIRST = 407, + VAR_MINIMAL_RESPONSES = 408, + VAR_RRSET_ROUNDROBIN = 409, + VAR_MAX_UDP_SIZE = 410, + VAR_DELAY_CLOSE = 411, + VAR_UDP_CONNECT = 412, + VAR_UNBLOCK_LAN_ZONES = 413, + VAR_INSECURE_LAN_ZONES = 414, + VAR_INFRA_CACHE_MIN_RTT = 415, + VAR_INFRA_KEEP_PROBING = 416, + VAR_DNS64_PREFIX = 417, + VAR_DNS64_SYNTHALL = 418, + VAR_DNS64_IGNORE_AAAA = 419, + VAR_DNSTAP = 420, + VAR_DNSTAP_ENABLE = 421, + VAR_DNSTAP_SOCKET_PATH = 422, + VAR_DNSTAP_IP = 423, + VAR_DNSTAP_TLS = 424, + VAR_DNSTAP_TLS_SERVER_NAME = 425, + VAR_DNSTAP_TLS_CERT_BUNDLE = 426, + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 427, + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 428, + VAR_DNSTAP_SEND_IDENTITY = 429, + VAR_DNSTAP_SEND_VERSION = 430, + VAR_DNSTAP_BIDIRECTIONAL = 431, + VAR_DNSTAP_IDENTITY = 432, + VAR_DNSTAP_VERSION = 433, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 434, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 435, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 436, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 437, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 438, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 439, + VAR_RESPONSE_IP_TAG = 440, + VAR_RESPONSE_IP = 441, + VAR_RESPONSE_IP_DATA = 442, + VAR_HARDEN_ALGO_DOWNGRADE = 443, + VAR_IP_TRANSPARENT = 444, + VAR_IP_DSCP = 445, + VAR_DISABLE_DNSSEC_LAME_CHECK = 446, + VAR_IP_RATELIMIT = 447, + VAR_IP_RATELIMIT_SLABS = 448, + VAR_IP_RATELIMIT_SIZE = 449, + VAR_RATELIMIT = 450, + VAR_RATELIMIT_SLABS = 451, + VAR_RATELIMIT_SIZE = 452, + VAR_RATELIMIT_FOR_DOMAIN = 453, + VAR_RATELIMIT_BELOW_DOMAIN = 454, + VAR_IP_RATELIMIT_FACTOR = 455, + VAR_RATELIMIT_FACTOR = 456, + VAR_SEND_CLIENT_SUBNET = 457, + VAR_CLIENT_SUBNET_ZONE = 458, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 459, + VAR_CLIENT_SUBNET_OPCODE = 460, + VAR_MAX_CLIENT_SUBNET_IPV4 = 461, + VAR_MAX_CLIENT_SUBNET_IPV6 = 462, + VAR_MIN_CLIENT_SUBNET_IPV4 = 463, + VAR_MIN_CLIENT_SUBNET_IPV6 = 464, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 465, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 466, + VAR_CAPS_WHITELIST = 467, + VAR_CACHE_MAX_NEGATIVE_TTL = 468, + VAR_PERMIT_SMALL_HOLDDOWN = 469, + VAR_QNAME_MINIMISATION = 470, + VAR_QNAME_MINIMISATION_STRICT = 471, + VAR_IP_FREEBIND = 472, + VAR_DEFINE_TAG = 473, + VAR_LOCAL_ZONE_TAG = 474, + VAR_ACCESS_CONTROL_TAG = 475, + VAR_LOCAL_ZONE_OVERRIDE = 476, + VAR_ACCESS_CONTROL_TAG_ACTION = 477, + VAR_ACCESS_CONTROL_TAG_DATA = 478, + VAR_VIEW = 479, + VAR_ACCESS_CONTROL_VIEW = 480, + VAR_VIEW_FIRST = 481, + VAR_SERVE_EXPIRED = 482, + VAR_SERVE_EXPIRED_TTL = 483, + VAR_SERVE_EXPIRED_TTL_RESET = 484, + VAR_SERVE_EXPIRED_REPLY_TTL = 485, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 486, + VAR_SERVE_ORIGINAL_TTL = 487, + VAR_FAKE_DSA = 488, + VAR_FAKE_SHA1 = 489, + VAR_LOG_IDENTITY = 490, + VAR_HIDE_TRUSTANCHOR = 491, + VAR_TRUST_ANCHOR_SIGNALING = 492, + VAR_AGGRESSIVE_NSEC = 493, + VAR_USE_SYSTEMD = 494, + VAR_SHM_ENABLE = 495, + VAR_SHM_KEY = 496, + VAR_ROOT_KEY_SENTINEL = 497, + VAR_DNSCRYPT = 498, + VAR_DNSCRYPT_ENABLE = 499, + VAR_DNSCRYPT_PORT = 500, + VAR_DNSCRYPT_PROVIDER = 501, + VAR_DNSCRYPT_SECRET_KEY = 502, + VAR_DNSCRYPT_PROVIDER_CERT = 503, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 504, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 505, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 506, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 507, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 508, + VAR_PAD_RESPONSES = 509, + VAR_PAD_RESPONSES_BLOCK_SIZE = 510, + VAR_PAD_QUERIES = 511, + VAR_PAD_QUERIES_BLOCK_SIZE = 512, + VAR_IPSECMOD_ENABLED = 513, + VAR_IPSECMOD_HOOK = 514, + VAR_IPSECMOD_IGNORE_BOGUS = 515, + VAR_IPSECMOD_MAX_TTL = 516, + VAR_IPSECMOD_WHITELIST = 517, + VAR_IPSECMOD_STRICT = 518, + VAR_CACHEDB = 519, + VAR_CACHEDB_BACKEND = 520, + VAR_CACHEDB_SECRETSEED = 521, + VAR_CACHEDB_REDISHOST = 522, + VAR_CACHEDB_REDISPORT = 523, + VAR_CACHEDB_REDISTIMEOUT = 524, + VAR_CACHEDB_REDISEXPIRERECORDS = 525, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 526, + VAR_FOR_UPSTREAM = 527, + VAR_AUTH_ZONE = 528, + VAR_ZONEFILE = 529, + VAR_MASTER = 530, + VAR_URL = 531, + VAR_FOR_DOWNSTREAM = 532, + VAR_FALLBACK_ENABLED = 533, + VAR_TLS_ADDITIONAL_PORT = 534, + VAR_LOW_RTT = 535, + VAR_LOW_RTT_PERMIL = 536, + VAR_FAST_SERVER_PERMIL = 537, + VAR_FAST_SERVER_NUM = 538, + VAR_ALLOW_NOTIFY = 539, + VAR_TLS_WIN_CERT = 540, + VAR_TCP_CONNECTION_LIMIT = 541, + VAR_FORWARD_NO_CACHE = 542, + VAR_STUB_NO_CACHE = 543, + VAR_LOG_SERVFAIL = 544, + VAR_DENY_ANY = 545, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 546, + VAR_LOG_TAG_QUERYREPLY = 547, + VAR_STREAM_WAIT_SIZE = 548, + VAR_TLS_CIPHERS = 549, + VAR_TLS_CIPHERSUITES = 550, + VAR_TLS_USE_SNI = 551, + VAR_IPSET = 552, + VAR_IPSET_NAME_V4 = 553, + VAR_IPSET_NAME_V6 = 554, + VAR_TLS_SESSION_TICKET_KEYS = 555, + VAR_RPZ = 556, + VAR_TAGS = 557, + VAR_RPZ_ACTION_OVERRIDE = 558, + VAR_RPZ_CNAME_OVERRIDE = 559, + VAR_RPZ_LOG = 560, + VAR_RPZ_LOG_NAME = 561, + VAR_DYNLIB = 562, + VAR_DYNLIB_FILE = 563, + VAR_EDNS_CLIENT_STRING = 564, + VAR_EDNS_CLIENT_STRING_OPCODE = 565, + VAR_NSID = 566, + VAR_ZONEMD_PERMISSIVE_MODE = 567, + VAR_ZONEMD_REJECT_ABSENCE = 568 + }; #endif -/* Token kinds. */ -#define YYEOF 0 -#define YYerror 256 -#define YYUNDEF 257 +/* Tokens. */ #define SPACE 258 #define LETTER 259 #define NEWLINE 260 @@ -591,939 +514,287 @@ extern int yydebug; #define VAR_LOG_LOCAL_ACTIONS 389 #define VAR_TCP_UPSTREAM 390 #define VAR_SSL_UPSTREAM 391 -#define VAR_SSL_SERVICE_KEY 392 -#define VAR_SSL_SERVICE_PEM 393 -#define VAR_SSL_PORT 394 -#define VAR_FORWARD_FIRST 395 -#define VAR_STUB_SSL_UPSTREAM 396 -#define VAR_FORWARD_SSL_UPSTREAM 397 -#define VAR_TLS_CERT_BUNDLE 398 -#define VAR_HTTPS_PORT 399 -#define VAR_HTTP_ENDPOINT 400 -#define VAR_HTTP_MAX_STREAMS 401 -#define VAR_HTTP_QUERY_BUFFER_SIZE 402 -#define VAR_HTTP_RESPONSE_BUFFER_SIZE 403 -#define VAR_HTTP_NODELAY 404 -#define VAR_HTTP_NOTLS_DOWNSTREAM 405 -#define VAR_STUB_FIRST 406 -#define VAR_MINIMAL_RESPONSES 407 -#define VAR_RRSET_ROUNDROBIN 408 -#define VAR_MAX_UDP_SIZE 409 -#define VAR_DELAY_CLOSE 410 -#define VAR_UDP_CONNECT 411 -#define VAR_UNBLOCK_LAN_ZONES 412 -#define VAR_INSECURE_LAN_ZONES 413 -#define VAR_INFRA_CACHE_MIN_RTT 414 -#define VAR_INFRA_KEEP_PROBING 415 -#define VAR_DNS64_PREFIX 416 -#define VAR_DNS64_SYNTHALL 417 -#define VAR_DNS64_IGNORE_AAAA 418 -#define VAR_DNSTAP 419 -#define VAR_DNSTAP_ENABLE 420 -#define VAR_DNSTAP_SOCKET_PATH 421 -#define VAR_DNSTAP_IP 422 -#define VAR_DNSTAP_TLS 423 -#define VAR_DNSTAP_TLS_SERVER_NAME 424 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 425 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 426 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 427 -#define VAR_DNSTAP_SEND_IDENTITY 428 -#define VAR_DNSTAP_SEND_VERSION 429 -#define VAR_DNSTAP_BIDIRECTIONAL 430 -#define VAR_DNSTAP_IDENTITY 431 -#define VAR_DNSTAP_VERSION 432 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 433 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 434 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 435 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 436 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 437 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 438 -#define VAR_RESPONSE_IP_TAG 439 -#define VAR_RESPONSE_IP 440 -#define VAR_RESPONSE_IP_DATA 441 -#define VAR_HARDEN_ALGO_DOWNGRADE 442 -#define VAR_IP_TRANSPARENT 443 -#define VAR_IP_DSCP 444 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 445 -#define VAR_IP_RATELIMIT 446 -#define VAR_IP_RATELIMIT_SLABS 447 -#define VAR_IP_RATELIMIT_SIZE 448 -#define VAR_RATELIMIT 449 -#define VAR_RATELIMIT_SLABS 450 -#define VAR_RATELIMIT_SIZE 451 -#define VAR_RATELIMIT_FOR_DOMAIN 452 -#define VAR_RATELIMIT_BELOW_DOMAIN 453 -#define VAR_IP_RATELIMIT_FACTOR 454 -#define VAR_RATELIMIT_FACTOR 455 -#define VAR_SEND_CLIENT_SUBNET 456 -#define VAR_CLIENT_SUBNET_ZONE 457 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 458 -#define VAR_CLIENT_SUBNET_OPCODE 459 -#define VAR_MAX_CLIENT_SUBNET_IPV4 460 -#define VAR_MAX_CLIENT_SUBNET_IPV6 461 -#define VAR_MIN_CLIENT_SUBNET_IPV4 462 -#define VAR_MIN_CLIENT_SUBNET_IPV6 463 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 464 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 465 -#define VAR_CAPS_WHITELIST 466 -#define VAR_CACHE_MAX_NEGATIVE_TTL 467 -#define VAR_PERMIT_SMALL_HOLDDOWN 468 -#define VAR_QNAME_MINIMISATION 469 -#define VAR_QNAME_MINIMISATION_STRICT 470 -#define VAR_IP_FREEBIND 471 -#define VAR_DEFINE_TAG 472 -#define VAR_LOCAL_ZONE_TAG 473 -#define VAR_ACCESS_CONTROL_TAG 474 -#define VAR_LOCAL_ZONE_OVERRIDE 475 -#define VAR_ACCESS_CONTROL_TAG_ACTION 476 -#define VAR_ACCESS_CONTROL_TAG_DATA 477 -#define VAR_VIEW 478 -#define VAR_ACCESS_CONTROL_VIEW 479 -#define VAR_VIEW_FIRST 480 -#define VAR_SERVE_EXPIRED 481 -#define VAR_SERVE_EXPIRED_TTL 482 -#define VAR_SERVE_EXPIRED_TTL_RESET 483 -#define VAR_SERVE_EXPIRED_REPLY_TTL 484 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 485 -#define VAR_SERVE_ORIGINAL_TTL 486 -#define VAR_FAKE_DSA 487 -#define VAR_FAKE_SHA1 488 -#define VAR_LOG_IDENTITY 489 -#define VAR_HIDE_TRUSTANCHOR 490 -#define VAR_TRUST_ANCHOR_SIGNALING 491 -#define VAR_AGGRESSIVE_NSEC 492 -#define VAR_USE_SYSTEMD 493 -#define VAR_SHM_ENABLE 494 -#define VAR_SHM_KEY 495 -#define VAR_ROOT_KEY_SENTINEL 496 -#define VAR_DNSCRYPT 497 -#define VAR_DNSCRYPT_ENABLE 498 -#define VAR_DNSCRYPT_PORT 499 -#define VAR_DNSCRYPT_PROVIDER 500 -#define VAR_DNSCRYPT_SECRET_KEY 501 -#define VAR_DNSCRYPT_PROVIDER_CERT 502 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 503 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 504 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 505 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 506 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 507 -#define VAR_PAD_RESPONSES 508 -#define VAR_PAD_RESPONSES_BLOCK_SIZE 509 -#define VAR_PAD_QUERIES 510 -#define VAR_PAD_QUERIES_BLOCK_SIZE 511 -#define VAR_IPSECMOD_ENABLED 512 -#define VAR_IPSECMOD_HOOK 513 -#define VAR_IPSECMOD_IGNORE_BOGUS 514 -#define VAR_IPSECMOD_MAX_TTL 515 -#define VAR_IPSECMOD_WHITELIST 516 -#define VAR_IPSECMOD_STRICT 517 -#define VAR_CACHEDB 518 -#define VAR_CACHEDB_BACKEND 519 -#define VAR_CACHEDB_SECRETSEED 520 -#define VAR_CACHEDB_REDISHOST 521 -#define VAR_CACHEDB_REDISPORT 522 -#define VAR_CACHEDB_REDISTIMEOUT 523 -#define VAR_CACHEDB_REDISEXPIRERECORDS 524 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 525 -#define VAR_FOR_UPSTREAM 526 -#define VAR_AUTH_ZONE 527 -#define VAR_ZONEFILE 528 -#define VAR_MASTER 529 -#define VAR_URL 530 -#define VAR_FOR_DOWNSTREAM 531 -#define VAR_FALLBACK_ENABLED 532 -#define VAR_TLS_ADDITIONAL_PORT 533 -#define VAR_LOW_RTT 534 -#define VAR_LOW_RTT_PERMIL 535 -#define VAR_FAST_SERVER_PERMIL 536 -#define VAR_FAST_SERVER_NUM 537 -#define VAR_ALLOW_NOTIFY 538 -#define VAR_TLS_WIN_CERT 539 -#define VAR_TCP_CONNECTION_LIMIT 540 -#define VAR_FORWARD_NO_CACHE 541 -#define VAR_STUB_NO_CACHE 542 -#define VAR_LOG_SERVFAIL 543 -#define VAR_DENY_ANY 544 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 545 -#define VAR_LOG_TAG_QUERYREPLY 546 -#define VAR_STREAM_WAIT_SIZE 547 -#define VAR_TLS_CIPHERS 548 -#define VAR_TLS_CIPHERSUITES 549 -#define VAR_TLS_USE_SNI 550 -#define VAR_IPSET 551 -#define VAR_IPSET_NAME_V4 552 -#define VAR_IPSET_NAME_V6 553 -#define VAR_TLS_SESSION_TICKET_KEYS 554 -#define VAR_RPZ 555 -#define VAR_TAGS 556 -#define VAR_RPZ_ACTION_OVERRIDE 557 -#define VAR_RPZ_CNAME_OVERRIDE 558 -#define VAR_RPZ_LOG 559 -#define VAR_RPZ_LOG_NAME 560 -#define VAR_DYNLIB 561 -#define VAR_DYNLIB_FILE 562 -#define VAR_EDNS_CLIENT_STRING 563 -#define VAR_EDNS_CLIENT_STRING_OPCODE 564 -#define VAR_NSID 565 -#define VAR_ZONEMD_PERMISSIVE_MODE 566 -#define VAR_ZONEMD_REJECT_ABSENCE 567 - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE -{ -#line 66 "./util/configparser.y" +#define VAR_TCP_AUTH_QUERY_TIMEOUT 392 +#define VAR_SSL_SERVICE_KEY 393 +#define VAR_SSL_SERVICE_PEM 394 +#define VAR_SSL_PORT 395 +#define VAR_FORWARD_FIRST 396 +#define VAR_STUB_SSL_UPSTREAM 397 +#define VAR_FORWARD_SSL_UPSTREAM 398 +#define VAR_TLS_CERT_BUNDLE 399 +#define VAR_HTTPS_PORT 400 +#define VAR_HTTP_ENDPOINT 401 +#define VAR_HTTP_MAX_STREAMS 402 +#define VAR_HTTP_QUERY_BUFFER_SIZE 403 +#define VAR_HTTP_RESPONSE_BUFFER_SIZE 404 +#define VAR_HTTP_NODELAY 405 +#define VAR_HTTP_NOTLS_DOWNSTREAM 406 +#define VAR_STUB_FIRST 407 +#define VAR_MINIMAL_RESPONSES 408 +#define VAR_RRSET_ROUNDROBIN 409 +#define VAR_MAX_UDP_SIZE 410 +#define VAR_DELAY_CLOSE 411 +#define VAR_UDP_CONNECT 412 +#define VAR_UNBLOCK_LAN_ZONES 413 +#define VAR_INSECURE_LAN_ZONES 414 +#define VAR_INFRA_CACHE_MIN_RTT 415 +#define VAR_INFRA_KEEP_PROBING 416 +#define VAR_DNS64_PREFIX 417 +#define VAR_DNS64_SYNTHALL 418 +#define VAR_DNS64_IGNORE_AAAA 419 +#define VAR_DNSTAP 420 +#define VAR_DNSTAP_ENABLE 421 +#define VAR_DNSTAP_SOCKET_PATH 422 +#define VAR_DNSTAP_IP 423 +#define VAR_DNSTAP_TLS 424 +#define VAR_DNSTAP_TLS_SERVER_NAME 425 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 426 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 427 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 428 +#define VAR_DNSTAP_SEND_IDENTITY 429 +#define VAR_DNSTAP_SEND_VERSION 430 +#define VAR_DNSTAP_BIDIRECTIONAL 431 +#define VAR_DNSTAP_IDENTITY 432 +#define VAR_DNSTAP_VERSION 433 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 434 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 435 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 436 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 437 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 438 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 439 +#define VAR_RESPONSE_IP_TAG 440 +#define VAR_RESPONSE_IP 441 +#define VAR_RESPONSE_IP_DATA 442 +#define VAR_HARDEN_ALGO_DOWNGRADE 443 +#define VAR_IP_TRANSPARENT 444 +#define VAR_IP_DSCP 445 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 446 +#define VAR_IP_RATELIMIT 447 +#define VAR_IP_RATELIMIT_SLABS 448 +#define VAR_IP_RATELIMIT_SIZE 449 +#define VAR_RATELIMIT 450 +#define VAR_RATELIMIT_SLABS 451 +#define VAR_RATELIMIT_SIZE 452 +#define VAR_RATELIMIT_FOR_DOMAIN 453 +#define VAR_RATELIMIT_BELOW_DOMAIN 454 +#define VAR_IP_RATELIMIT_FACTOR 455 +#define VAR_RATELIMIT_FACTOR 456 +#define VAR_SEND_CLIENT_SUBNET 457 +#define VAR_CLIENT_SUBNET_ZONE 458 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 459 +#define VAR_CLIENT_SUBNET_OPCODE 460 +#define VAR_MAX_CLIENT_SUBNET_IPV4 461 +#define VAR_MAX_CLIENT_SUBNET_IPV6 462 +#define VAR_MIN_CLIENT_SUBNET_IPV4 463 +#define VAR_MIN_CLIENT_SUBNET_IPV6 464 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 465 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 466 +#define VAR_CAPS_WHITELIST 467 +#define VAR_CACHE_MAX_NEGATIVE_TTL 468 +#define VAR_PERMIT_SMALL_HOLDDOWN 469 +#define VAR_QNAME_MINIMISATION 470 +#define VAR_QNAME_MINIMISATION_STRICT 471 +#define VAR_IP_FREEBIND 472 +#define VAR_DEFINE_TAG 473 +#define VAR_LOCAL_ZONE_TAG 474 +#define VAR_ACCESS_CONTROL_TAG 475 +#define VAR_LOCAL_ZONE_OVERRIDE 476 +#define VAR_ACCESS_CONTROL_TAG_ACTION 477 +#define VAR_ACCESS_CONTROL_TAG_DATA 478 +#define VAR_VIEW 479 +#define VAR_ACCESS_CONTROL_VIEW 480 +#define VAR_VIEW_FIRST 481 +#define VAR_SERVE_EXPIRED 482 +#define VAR_SERVE_EXPIRED_TTL 483 +#define VAR_SERVE_EXPIRED_TTL_RESET 484 +#define VAR_SERVE_EXPIRED_REPLY_TTL 485 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 486 +#define VAR_SERVE_ORIGINAL_TTL 487 +#define VAR_FAKE_DSA 488 +#define VAR_FAKE_SHA1 489 +#define VAR_LOG_IDENTITY 490 +#define VAR_HIDE_TRUSTANCHOR 491 +#define VAR_TRUST_ANCHOR_SIGNALING 492 +#define VAR_AGGRESSIVE_NSEC 493 +#define VAR_USE_SYSTEMD 494 +#define VAR_SHM_ENABLE 495 +#define VAR_SHM_KEY 496 +#define VAR_ROOT_KEY_SENTINEL 497 +#define VAR_DNSCRYPT 498 +#define VAR_DNSCRYPT_ENABLE 499 +#define VAR_DNSCRYPT_PORT 500 +#define VAR_DNSCRYPT_PROVIDER 501 +#define VAR_DNSCRYPT_SECRET_KEY 502 +#define VAR_DNSCRYPT_PROVIDER_CERT 503 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 504 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 505 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 506 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 507 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 508 +#define VAR_PAD_RESPONSES 509 +#define VAR_PAD_RESPONSES_BLOCK_SIZE 510 +#define VAR_PAD_QUERIES 511 +#define VAR_PAD_QUERIES_BLOCK_SIZE 512 +#define VAR_IPSECMOD_ENABLED 513 +#define VAR_IPSECMOD_HOOK 514 +#define VAR_IPSECMOD_IGNORE_BOGUS 515 +#define VAR_IPSECMOD_MAX_TTL 516 +#define VAR_IPSECMOD_WHITELIST 517 +#define VAR_IPSECMOD_STRICT 518 +#define VAR_CACHEDB 519 +#define VAR_CACHEDB_BACKEND 520 +#define VAR_CACHEDB_SECRETSEED 521 +#define VAR_CACHEDB_REDISHOST 522 +#define VAR_CACHEDB_REDISPORT 523 +#define VAR_CACHEDB_REDISTIMEOUT 524 +#define VAR_CACHEDB_REDISEXPIRERECORDS 525 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 526 +#define VAR_FOR_UPSTREAM 527 +#define VAR_AUTH_ZONE 528 +#define VAR_ZONEFILE 529 +#define VAR_MASTER 530 +#define VAR_URL 531 +#define VAR_FOR_DOWNSTREAM 532 +#define VAR_FALLBACK_ENABLED 533 +#define VAR_TLS_ADDITIONAL_PORT 534 +#define VAR_LOW_RTT 535 +#define VAR_LOW_RTT_PERMIL 536 +#define VAR_FAST_SERVER_PERMIL 537 +#define VAR_FAST_SERVER_NUM 538 +#define VAR_ALLOW_NOTIFY 539 +#define VAR_TLS_WIN_CERT 540 +#define VAR_TCP_CONNECTION_LIMIT 541 +#define VAR_FORWARD_NO_CACHE 542 +#define VAR_STUB_NO_CACHE 543 +#define VAR_LOG_SERVFAIL 544 +#define VAR_DENY_ANY 545 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 546 +#define VAR_LOG_TAG_QUERYREPLY 547 +#define VAR_STREAM_WAIT_SIZE 548 +#define VAR_TLS_CIPHERS 549 +#define VAR_TLS_CIPHERSUITES 550 +#define VAR_TLS_USE_SNI 551 +#define VAR_IPSET 552 +#define VAR_IPSET_NAME_V4 553 +#define VAR_IPSET_NAME_V6 554 +#define VAR_TLS_SESSION_TICKET_KEYS 555 +#define VAR_RPZ 556 +#define VAR_TAGS 557 +#define VAR_RPZ_ACTION_OVERRIDE 558 +#define VAR_RPZ_CNAME_OVERRIDE 559 +#define VAR_RPZ_LOG 560 +#define VAR_RPZ_LOG_NAME 561 +#define VAR_DYNLIB 562 +#define VAR_DYNLIB_FILE 563 +#define VAR_EDNS_CLIENT_STRING 564 +#define VAR_EDNS_CLIENT_STRING_OPCODE 565 +#define VAR_NSID 566 +#define VAR_ZONEMD_PERMISSIVE_MODE 567 +#define VAR_ZONEMD_REJECT_ABSENCE 568 + + + + +/* Copy the first part of user declarations. */ +#line 38 "util/configparser.y" - char* str; +#include "config.h" -#line 780 "util/configparser.c" +#include +#include +#include +#include +#include -}; -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif +#include "util/configyyrename.h" +#include "util/config_file.h" +#include "util/net_help.h" +int ub_c_lex(void); +void ub_c_error(const char *message); -extern YYSTYPE yylval; +static void validate_respip_action(const char* action); -int yyparse (void); +/* these need to be global, otherwise they cannot be used inside yacc */ +extern struct config_parser_state* cfg_parser; -#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ -/* Symbol kind. */ -enum yysymbol_kind_t -{ - YYSYMBOL_YYEMPTY = -2, - YYSYMBOL_YYEOF = 0, /* "end of file" */ - YYSYMBOL_YYerror = 1, /* error */ - YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ - YYSYMBOL_SPACE = 3, /* SPACE */ - YYSYMBOL_LETTER = 4, /* LETTER */ - YYSYMBOL_NEWLINE = 5, /* NEWLINE */ - YYSYMBOL_COMMENT = 6, /* COMMENT */ - YYSYMBOL_COLON = 7, /* COLON */ - YYSYMBOL_ANY = 8, /* ANY */ - YYSYMBOL_ZONESTR = 9, /* ZONESTR */ - YYSYMBOL_STRING_ARG = 10, /* STRING_ARG */ - YYSYMBOL_VAR_FORCE_TOPLEVEL = 11, /* VAR_FORCE_TOPLEVEL */ - YYSYMBOL_VAR_SERVER = 12, /* VAR_SERVER */ - YYSYMBOL_VAR_VERBOSITY = 13, /* VAR_VERBOSITY */ - YYSYMBOL_VAR_NUM_THREADS = 14, /* VAR_NUM_THREADS */ - YYSYMBOL_VAR_PORT = 15, /* VAR_PORT */ - YYSYMBOL_VAR_OUTGOING_RANGE = 16, /* VAR_OUTGOING_RANGE */ - YYSYMBOL_VAR_INTERFACE = 17, /* VAR_INTERFACE */ - YYSYMBOL_VAR_PREFER_IP4 = 18, /* VAR_PREFER_IP4 */ - YYSYMBOL_VAR_DO_IP4 = 19, /* VAR_DO_IP4 */ - YYSYMBOL_VAR_DO_IP6 = 20, /* VAR_DO_IP6 */ - YYSYMBOL_VAR_PREFER_IP6 = 21, /* VAR_PREFER_IP6 */ - YYSYMBOL_VAR_DO_UDP = 22, /* VAR_DO_UDP */ - YYSYMBOL_VAR_DO_TCP = 23, /* VAR_DO_TCP */ - YYSYMBOL_VAR_TCP_MSS = 24, /* VAR_TCP_MSS */ - YYSYMBOL_VAR_OUTGOING_TCP_MSS = 25, /* VAR_OUTGOING_TCP_MSS */ - YYSYMBOL_VAR_TCP_IDLE_TIMEOUT = 26, /* VAR_TCP_IDLE_TIMEOUT */ - YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE = 27, /* VAR_EDNS_TCP_KEEPALIVE */ - YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 28, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ - YYSYMBOL_VAR_CHROOT = 29, /* VAR_CHROOT */ - YYSYMBOL_VAR_USERNAME = 30, /* VAR_USERNAME */ - YYSYMBOL_VAR_DIRECTORY = 31, /* VAR_DIRECTORY */ - YYSYMBOL_VAR_LOGFILE = 32, /* VAR_LOGFILE */ - YYSYMBOL_VAR_PIDFILE = 33, /* VAR_PIDFILE */ - YYSYMBOL_VAR_MSG_CACHE_SIZE = 34, /* VAR_MSG_CACHE_SIZE */ - YYSYMBOL_VAR_MSG_CACHE_SLABS = 35, /* VAR_MSG_CACHE_SLABS */ - YYSYMBOL_VAR_NUM_QUERIES_PER_THREAD = 36, /* VAR_NUM_QUERIES_PER_THREAD */ - YYSYMBOL_VAR_RRSET_CACHE_SIZE = 37, /* VAR_RRSET_CACHE_SIZE */ - YYSYMBOL_VAR_RRSET_CACHE_SLABS = 38, /* VAR_RRSET_CACHE_SLABS */ - YYSYMBOL_VAR_OUTGOING_NUM_TCP = 39, /* VAR_OUTGOING_NUM_TCP */ - YYSYMBOL_VAR_INFRA_HOST_TTL = 40, /* VAR_INFRA_HOST_TTL */ - YYSYMBOL_VAR_INFRA_LAME_TTL = 41, /* VAR_INFRA_LAME_TTL */ - YYSYMBOL_VAR_INFRA_CACHE_SLABS = 42, /* VAR_INFRA_CACHE_SLABS */ - YYSYMBOL_VAR_INFRA_CACHE_NUMHOSTS = 43, /* VAR_INFRA_CACHE_NUMHOSTS */ - YYSYMBOL_VAR_INFRA_CACHE_LAME_SIZE = 44, /* VAR_INFRA_CACHE_LAME_SIZE */ - YYSYMBOL_VAR_NAME = 45, /* VAR_NAME */ - YYSYMBOL_VAR_STUB_ZONE = 46, /* VAR_STUB_ZONE */ - YYSYMBOL_VAR_STUB_HOST = 47, /* VAR_STUB_HOST */ - YYSYMBOL_VAR_STUB_ADDR = 48, /* VAR_STUB_ADDR */ - YYSYMBOL_VAR_TARGET_FETCH_POLICY = 49, /* VAR_TARGET_FETCH_POLICY */ - YYSYMBOL_VAR_HARDEN_SHORT_BUFSIZE = 50, /* VAR_HARDEN_SHORT_BUFSIZE */ - YYSYMBOL_VAR_HARDEN_LARGE_QUERIES = 51, /* VAR_HARDEN_LARGE_QUERIES */ - YYSYMBOL_VAR_FORWARD_ZONE = 52, /* VAR_FORWARD_ZONE */ - YYSYMBOL_VAR_FORWARD_HOST = 53, /* VAR_FORWARD_HOST */ - YYSYMBOL_VAR_FORWARD_ADDR = 54, /* VAR_FORWARD_ADDR */ - YYSYMBOL_VAR_DO_NOT_QUERY_ADDRESS = 55, /* VAR_DO_NOT_QUERY_ADDRESS */ - YYSYMBOL_VAR_HIDE_IDENTITY = 56, /* VAR_HIDE_IDENTITY */ - YYSYMBOL_VAR_HIDE_VERSION = 57, /* VAR_HIDE_VERSION */ - YYSYMBOL_VAR_IDENTITY = 58, /* VAR_IDENTITY */ - YYSYMBOL_VAR_VERSION = 59, /* VAR_VERSION */ - YYSYMBOL_VAR_HARDEN_GLUE = 60, /* VAR_HARDEN_GLUE */ - YYSYMBOL_VAR_MODULE_CONF = 61, /* VAR_MODULE_CONF */ - YYSYMBOL_VAR_TRUST_ANCHOR_FILE = 62, /* VAR_TRUST_ANCHOR_FILE */ - YYSYMBOL_VAR_TRUST_ANCHOR = 63, /* VAR_TRUST_ANCHOR */ - YYSYMBOL_VAR_VAL_OVERRIDE_DATE = 64, /* VAR_VAL_OVERRIDE_DATE */ - YYSYMBOL_VAR_BOGUS_TTL = 65, /* VAR_BOGUS_TTL */ - YYSYMBOL_VAR_VAL_CLEAN_ADDITIONAL = 66, /* VAR_VAL_CLEAN_ADDITIONAL */ - YYSYMBOL_VAR_VAL_PERMISSIVE_MODE = 67, /* VAR_VAL_PERMISSIVE_MODE */ - YYSYMBOL_VAR_INCOMING_NUM_TCP = 68, /* VAR_INCOMING_NUM_TCP */ - YYSYMBOL_VAR_MSG_BUFFER_SIZE = 69, /* VAR_MSG_BUFFER_SIZE */ - YYSYMBOL_VAR_KEY_CACHE_SIZE = 70, /* VAR_KEY_CACHE_SIZE */ - YYSYMBOL_VAR_KEY_CACHE_SLABS = 71, /* VAR_KEY_CACHE_SLABS */ - YYSYMBOL_VAR_TRUSTED_KEYS_FILE = 72, /* VAR_TRUSTED_KEYS_FILE */ - YYSYMBOL_VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 73, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ - YYSYMBOL_VAR_USE_SYSLOG = 74, /* VAR_USE_SYSLOG */ - YYSYMBOL_VAR_OUTGOING_INTERFACE = 75, /* VAR_OUTGOING_INTERFACE */ - YYSYMBOL_VAR_ROOT_HINTS = 76, /* VAR_ROOT_HINTS */ - YYSYMBOL_VAR_DO_NOT_QUERY_LOCALHOST = 77, /* VAR_DO_NOT_QUERY_LOCALHOST */ - YYSYMBOL_VAR_CACHE_MAX_TTL = 78, /* VAR_CACHE_MAX_TTL */ - YYSYMBOL_VAR_HARDEN_DNSSEC_STRIPPED = 79, /* VAR_HARDEN_DNSSEC_STRIPPED */ - YYSYMBOL_VAR_ACCESS_CONTROL = 80, /* VAR_ACCESS_CONTROL */ - YYSYMBOL_VAR_LOCAL_ZONE = 81, /* VAR_LOCAL_ZONE */ - YYSYMBOL_VAR_LOCAL_DATA = 82, /* VAR_LOCAL_DATA */ - YYSYMBOL_VAR_INTERFACE_AUTOMATIC = 83, /* VAR_INTERFACE_AUTOMATIC */ - YYSYMBOL_VAR_STATISTICS_INTERVAL = 84, /* VAR_STATISTICS_INTERVAL */ - YYSYMBOL_VAR_DO_DAEMONIZE = 85, /* VAR_DO_DAEMONIZE */ - YYSYMBOL_VAR_USE_CAPS_FOR_ID = 86, /* VAR_USE_CAPS_FOR_ID */ - YYSYMBOL_VAR_STATISTICS_CUMULATIVE = 87, /* VAR_STATISTICS_CUMULATIVE */ - YYSYMBOL_VAR_OUTGOING_PORT_PERMIT = 88, /* VAR_OUTGOING_PORT_PERMIT */ - YYSYMBOL_VAR_OUTGOING_PORT_AVOID = 89, /* VAR_OUTGOING_PORT_AVOID */ - YYSYMBOL_VAR_DLV_ANCHOR_FILE = 90, /* VAR_DLV_ANCHOR_FILE */ - YYSYMBOL_VAR_DLV_ANCHOR = 91, /* VAR_DLV_ANCHOR */ - YYSYMBOL_VAR_NEG_CACHE_SIZE = 92, /* VAR_NEG_CACHE_SIZE */ - YYSYMBOL_VAR_HARDEN_REFERRAL_PATH = 93, /* VAR_HARDEN_REFERRAL_PATH */ - YYSYMBOL_VAR_PRIVATE_ADDRESS = 94, /* VAR_PRIVATE_ADDRESS */ - YYSYMBOL_VAR_PRIVATE_DOMAIN = 95, /* VAR_PRIVATE_DOMAIN */ - YYSYMBOL_VAR_REMOTE_CONTROL = 96, /* VAR_REMOTE_CONTROL */ - YYSYMBOL_VAR_CONTROL_ENABLE = 97, /* VAR_CONTROL_ENABLE */ - YYSYMBOL_VAR_CONTROL_INTERFACE = 98, /* VAR_CONTROL_INTERFACE */ - YYSYMBOL_VAR_CONTROL_PORT = 99, /* VAR_CONTROL_PORT */ - YYSYMBOL_VAR_SERVER_KEY_FILE = 100, /* VAR_SERVER_KEY_FILE */ - YYSYMBOL_VAR_SERVER_CERT_FILE = 101, /* VAR_SERVER_CERT_FILE */ - YYSYMBOL_VAR_CONTROL_KEY_FILE = 102, /* VAR_CONTROL_KEY_FILE */ - YYSYMBOL_VAR_CONTROL_CERT_FILE = 103, /* VAR_CONTROL_CERT_FILE */ - YYSYMBOL_VAR_CONTROL_USE_CERT = 104, /* VAR_CONTROL_USE_CERT */ - YYSYMBOL_VAR_TCP_REUSE_TIMEOUT = 105, /* VAR_TCP_REUSE_TIMEOUT */ - YYSYMBOL_VAR_MAX_REUSE_TCP_QUERIES = 106, /* VAR_MAX_REUSE_TCP_QUERIES */ - YYSYMBOL_VAR_EXTENDED_STATISTICS = 107, /* VAR_EXTENDED_STATISTICS */ - YYSYMBOL_VAR_LOCAL_DATA_PTR = 108, /* VAR_LOCAL_DATA_PTR */ - YYSYMBOL_VAR_JOSTLE_TIMEOUT = 109, /* VAR_JOSTLE_TIMEOUT */ - YYSYMBOL_VAR_STUB_PRIME = 110, /* VAR_STUB_PRIME */ - YYSYMBOL_VAR_UNWANTED_REPLY_THRESHOLD = 111, /* VAR_UNWANTED_REPLY_THRESHOLD */ - YYSYMBOL_VAR_LOG_TIME_ASCII = 112, /* VAR_LOG_TIME_ASCII */ - YYSYMBOL_VAR_DOMAIN_INSECURE = 113, /* VAR_DOMAIN_INSECURE */ - YYSYMBOL_VAR_PYTHON = 114, /* VAR_PYTHON */ - YYSYMBOL_VAR_PYTHON_SCRIPT = 115, /* VAR_PYTHON_SCRIPT */ - YYSYMBOL_VAR_VAL_SIG_SKEW_MIN = 116, /* VAR_VAL_SIG_SKEW_MIN */ - YYSYMBOL_VAR_VAL_SIG_SKEW_MAX = 117, /* VAR_VAL_SIG_SKEW_MAX */ - YYSYMBOL_VAR_CACHE_MIN_TTL = 118, /* VAR_CACHE_MIN_TTL */ - YYSYMBOL_VAR_VAL_LOG_LEVEL = 119, /* VAR_VAL_LOG_LEVEL */ - YYSYMBOL_VAR_AUTO_TRUST_ANCHOR_FILE = 120, /* VAR_AUTO_TRUST_ANCHOR_FILE */ - YYSYMBOL_VAR_KEEP_MISSING = 121, /* VAR_KEEP_MISSING */ - YYSYMBOL_VAR_ADD_HOLDDOWN = 122, /* VAR_ADD_HOLDDOWN */ - YYSYMBOL_VAR_DEL_HOLDDOWN = 123, /* VAR_DEL_HOLDDOWN */ - YYSYMBOL_VAR_SO_RCVBUF = 124, /* VAR_SO_RCVBUF */ - YYSYMBOL_VAR_EDNS_BUFFER_SIZE = 125, /* VAR_EDNS_BUFFER_SIZE */ - YYSYMBOL_VAR_PREFETCH = 126, /* VAR_PREFETCH */ - YYSYMBOL_VAR_PREFETCH_KEY = 127, /* VAR_PREFETCH_KEY */ - YYSYMBOL_VAR_SO_SNDBUF = 128, /* VAR_SO_SNDBUF */ - YYSYMBOL_VAR_SO_REUSEPORT = 129, /* VAR_SO_REUSEPORT */ - YYSYMBOL_VAR_HARDEN_BELOW_NXDOMAIN = 130, /* VAR_HARDEN_BELOW_NXDOMAIN */ - YYSYMBOL_VAR_IGNORE_CD_FLAG = 131, /* VAR_IGNORE_CD_FLAG */ - YYSYMBOL_VAR_LOG_QUERIES = 132, /* VAR_LOG_QUERIES */ - YYSYMBOL_VAR_LOG_REPLIES = 133, /* VAR_LOG_REPLIES */ - YYSYMBOL_VAR_LOG_LOCAL_ACTIONS = 134, /* VAR_LOG_LOCAL_ACTIONS */ - YYSYMBOL_VAR_TCP_UPSTREAM = 135, /* VAR_TCP_UPSTREAM */ - YYSYMBOL_VAR_SSL_UPSTREAM = 136, /* VAR_SSL_UPSTREAM */ - YYSYMBOL_VAR_SSL_SERVICE_KEY = 137, /* VAR_SSL_SERVICE_KEY */ - YYSYMBOL_VAR_SSL_SERVICE_PEM = 138, /* VAR_SSL_SERVICE_PEM */ - YYSYMBOL_VAR_SSL_PORT = 139, /* VAR_SSL_PORT */ - YYSYMBOL_VAR_FORWARD_FIRST = 140, /* VAR_FORWARD_FIRST */ - YYSYMBOL_VAR_STUB_SSL_UPSTREAM = 141, /* VAR_STUB_SSL_UPSTREAM */ - YYSYMBOL_VAR_FORWARD_SSL_UPSTREAM = 142, /* VAR_FORWARD_SSL_UPSTREAM */ - YYSYMBOL_VAR_TLS_CERT_BUNDLE = 143, /* VAR_TLS_CERT_BUNDLE */ - YYSYMBOL_VAR_HTTPS_PORT = 144, /* VAR_HTTPS_PORT */ - YYSYMBOL_VAR_HTTP_ENDPOINT = 145, /* VAR_HTTP_ENDPOINT */ - YYSYMBOL_VAR_HTTP_MAX_STREAMS = 146, /* VAR_HTTP_MAX_STREAMS */ - YYSYMBOL_VAR_HTTP_QUERY_BUFFER_SIZE = 147, /* VAR_HTTP_QUERY_BUFFER_SIZE */ - YYSYMBOL_VAR_HTTP_RESPONSE_BUFFER_SIZE = 148, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ - YYSYMBOL_VAR_HTTP_NODELAY = 149, /* VAR_HTTP_NODELAY */ - YYSYMBOL_VAR_HTTP_NOTLS_DOWNSTREAM = 150, /* VAR_HTTP_NOTLS_DOWNSTREAM */ - YYSYMBOL_VAR_STUB_FIRST = 151, /* VAR_STUB_FIRST */ - YYSYMBOL_VAR_MINIMAL_RESPONSES = 152, /* VAR_MINIMAL_RESPONSES */ - YYSYMBOL_VAR_RRSET_ROUNDROBIN = 153, /* VAR_RRSET_ROUNDROBIN */ - YYSYMBOL_VAR_MAX_UDP_SIZE = 154, /* VAR_MAX_UDP_SIZE */ - YYSYMBOL_VAR_DELAY_CLOSE = 155, /* VAR_DELAY_CLOSE */ - YYSYMBOL_VAR_UDP_CONNECT = 156, /* VAR_UDP_CONNECT */ - YYSYMBOL_VAR_UNBLOCK_LAN_ZONES = 157, /* VAR_UNBLOCK_LAN_ZONES */ - YYSYMBOL_VAR_INSECURE_LAN_ZONES = 158, /* VAR_INSECURE_LAN_ZONES */ - YYSYMBOL_VAR_INFRA_CACHE_MIN_RTT = 159, /* VAR_INFRA_CACHE_MIN_RTT */ - YYSYMBOL_VAR_INFRA_KEEP_PROBING = 160, /* VAR_INFRA_KEEP_PROBING */ - YYSYMBOL_VAR_DNS64_PREFIX = 161, /* VAR_DNS64_PREFIX */ - YYSYMBOL_VAR_DNS64_SYNTHALL = 162, /* VAR_DNS64_SYNTHALL */ - YYSYMBOL_VAR_DNS64_IGNORE_AAAA = 163, /* VAR_DNS64_IGNORE_AAAA */ - YYSYMBOL_VAR_DNSTAP = 164, /* VAR_DNSTAP */ - YYSYMBOL_VAR_DNSTAP_ENABLE = 165, /* VAR_DNSTAP_ENABLE */ - YYSYMBOL_VAR_DNSTAP_SOCKET_PATH = 166, /* VAR_DNSTAP_SOCKET_PATH */ - YYSYMBOL_VAR_DNSTAP_IP = 167, /* VAR_DNSTAP_IP */ - YYSYMBOL_VAR_DNSTAP_TLS = 168, /* VAR_DNSTAP_TLS */ - YYSYMBOL_VAR_DNSTAP_TLS_SERVER_NAME = 169, /* VAR_DNSTAP_TLS_SERVER_NAME */ - YYSYMBOL_VAR_DNSTAP_TLS_CERT_BUNDLE = 170, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ - YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 171, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ - YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 172, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ - YYSYMBOL_VAR_DNSTAP_SEND_IDENTITY = 173, /* VAR_DNSTAP_SEND_IDENTITY */ - YYSYMBOL_VAR_DNSTAP_SEND_VERSION = 174, /* VAR_DNSTAP_SEND_VERSION */ - YYSYMBOL_VAR_DNSTAP_BIDIRECTIONAL = 175, /* VAR_DNSTAP_BIDIRECTIONAL */ - YYSYMBOL_VAR_DNSTAP_IDENTITY = 176, /* VAR_DNSTAP_IDENTITY */ - YYSYMBOL_VAR_DNSTAP_VERSION = 177, /* VAR_DNSTAP_VERSION */ - YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 178, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 179, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 180, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 181, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 182, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 183, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ - YYSYMBOL_VAR_RESPONSE_IP_TAG = 184, /* VAR_RESPONSE_IP_TAG */ - YYSYMBOL_VAR_RESPONSE_IP = 185, /* VAR_RESPONSE_IP */ - YYSYMBOL_VAR_RESPONSE_IP_DATA = 186, /* VAR_RESPONSE_IP_DATA */ - YYSYMBOL_VAR_HARDEN_ALGO_DOWNGRADE = 187, /* VAR_HARDEN_ALGO_DOWNGRADE */ - YYSYMBOL_VAR_IP_TRANSPARENT = 188, /* VAR_IP_TRANSPARENT */ - YYSYMBOL_VAR_IP_DSCP = 189, /* VAR_IP_DSCP */ - YYSYMBOL_VAR_DISABLE_DNSSEC_LAME_CHECK = 190, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ - YYSYMBOL_VAR_IP_RATELIMIT = 191, /* VAR_IP_RATELIMIT */ - YYSYMBOL_VAR_IP_RATELIMIT_SLABS = 192, /* VAR_IP_RATELIMIT_SLABS */ - YYSYMBOL_VAR_IP_RATELIMIT_SIZE = 193, /* VAR_IP_RATELIMIT_SIZE */ - YYSYMBOL_VAR_RATELIMIT = 194, /* VAR_RATELIMIT */ - YYSYMBOL_VAR_RATELIMIT_SLABS = 195, /* VAR_RATELIMIT_SLABS */ - YYSYMBOL_VAR_RATELIMIT_SIZE = 196, /* VAR_RATELIMIT_SIZE */ - YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 197, /* VAR_RATELIMIT_FOR_DOMAIN */ - YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 198, /* VAR_RATELIMIT_BELOW_DOMAIN */ - YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 199, /* VAR_IP_RATELIMIT_FACTOR */ - YYSYMBOL_VAR_RATELIMIT_FACTOR = 200, /* VAR_RATELIMIT_FACTOR */ - YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 201, /* VAR_SEND_CLIENT_SUBNET */ - YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 202, /* VAR_CLIENT_SUBNET_ZONE */ - YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 203, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 204, /* VAR_CLIENT_SUBNET_OPCODE */ - YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 205, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 206, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 207, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 208, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 209, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 210, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - YYSYMBOL_VAR_CAPS_WHITELIST = 211, /* VAR_CAPS_WHITELIST */ - YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 212, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 213, /* VAR_PERMIT_SMALL_HOLDDOWN */ - YYSYMBOL_VAR_QNAME_MINIMISATION = 214, /* VAR_QNAME_MINIMISATION */ - YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 215, /* VAR_QNAME_MINIMISATION_STRICT */ - YYSYMBOL_VAR_IP_FREEBIND = 216, /* VAR_IP_FREEBIND */ - YYSYMBOL_VAR_DEFINE_TAG = 217, /* VAR_DEFINE_TAG */ - YYSYMBOL_VAR_LOCAL_ZONE_TAG = 218, /* VAR_LOCAL_ZONE_TAG */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 219, /* VAR_ACCESS_CONTROL_TAG */ - YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 220, /* VAR_LOCAL_ZONE_OVERRIDE */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 221, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 222, /* VAR_ACCESS_CONTROL_TAG_DATA */ - YYSYMBOL_VAR_VIEW = 223, /* VAR_VIEW */ - YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 224, /* VAR_ACCESS_CONTROL_VIEW */ - YYSYMBOL_VAR_VIEW_FIRST = 225, /* VAR_VIEW_FIRST */ - YYSYMBOL_VAR_SERVE_EXPIRED = 226, /* VAR_SERVE_EXPIRED */ - YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 227, /* VAR_SERVE_EXPIRED_TTL */ - YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 228, /* VAR_SERVE_EXPIRED_TTL_RESET */ - YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 229, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 230, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 231, /* VAR_SERVE_ORIGINAL_TTL */ - YYSYMBOL_VAR_FAKE_DSA = 232, /* VAR_FAKE_DSA */ - YYSYMBOL_VAR_FAKE_SHA1 = 233, /* VAR_FAKE_SHA1 */ - YYSYMBOL_VAR_LOG_IDENTITY = 234, /* VAR_LOG_IDENTITY */ - YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 235, /* VAR_HIDE_TRUSTANCHOR */ - YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 236, /* VAR_TRUST_ANCHOR_SIGNALING */ - YYSYMBOL_VAR_AGGRESSIVE_NSEC = 237, /* VAR_AGGRESSIVE_NSEC */ - YYSYMBOL_VAR_USE_SYSTEMD = 238, /* VAR_USE_SYSTEMD */ - YYSYMBOL_VAR_SHM_ENABLE = 239, /* VAR_SHM_ENABLE */ - YYSYMBOL_VAR_SHM_KEY = 240, /* VAR_SHM_KEY */ - YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 241, /* VAR_ROOT_KEY_SENTINEL */ - YYSYMBOL_VAR_DNSCRYPT = 242, /* VAR_DNSCRYPT */ - YYSYMBOL_VAR_DNSCRYPT_ENABLE = 243, /* VAR_DNSCRYPT_ENABLE */ - YYSYMBOL_VAR_DNSCRYPT_PORT = 244, /* VAR_DNSCRYPT_PORT */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 245, /* VAR_DNSCRYPT_PROVIDER */ - YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 246, /* VAR_DNSCRYPT_SECRET_KEY */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 247, /* VAR_DNSCRYPT_PROVIDER_CERT */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 248, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 249, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 250, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 251, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 252, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - YYSYMBOL_VAR_PAD_RESPONSES = 253, /* VAR_PAD_RESPONSES */ - YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 254, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - YYSYMBOL_VAR_PAD_QUERIES = 255, /* VAR_PAD_QUERIES */ - YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 256, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - YYSYMBOL_VAR_IPSECMOD_ENABLED = 257, /* VAR_IPSECMOD_ENABLED */ - YYSYMBOL_VAR_IPSECMOD_HOOK = 258, /* VAR_IPSECMOD_HOOK */ - YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 259, /* VAR_IPSECMOD_IGNORE_BOGUS */ - YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 260, /* VAR_IPSECMOD_MAX_TTL */ - YYSYMBOL_VAR_IPSECMOD_WHITELIST = 261, /* VAR_IPSECMOD_WHITELIST */ - YYSYMBOL_VAR_IPSECMOD_STRICT = 262, /* VAR_IPSECMOD_STRICT */ - YYSYMBOL_VAR_CACHEDB = 263, /* VAR_CACHEDB */ - YYSYMBOL_VAR_CACHEDB_BACKEND = 264, /* VAR_CACHEDB_BACKEND */ - YYSYMBOL_VAR_CACHEDB_SECRETSEED = 265, /* VAR_CACHEDB_SECRETSEED */ - YYSYMBOL_VAR_CACHEDB_REDISHOST = 266, /* VAR_CACHEDB_REDISHOST */ - YYSYMBOL_VAR_CACHEDB_REDISPORT = 267, /* VAR_CACHEDB_REDISPORT */ - YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 268, /* VAR_CACHEDB_REDISTIMEOUT */ - YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 269, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 270, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - YYSYMBOL_VAR_FOR_UPSTREAM = 271, /* VAR_FOR_UPSTREAM */ - YYSYMBOL_VAR_AUTH_ZONE = 272, /* VAR_AUTH_ZONE */ - YYSYMBOL_VAR_ZONEFILE = 273, /* VAR_ZONEFILE */ - YYSYMBOL_VAR_MASTER = 274, /* VAR_MASTER */ - YYSYMBOL_VAR_URL = 275, /* VAR_URL */ - YYSYMBOL_VAR_FOR_DOWNSTREAM = 276, /* VAR_FOR_DOWNSTREAM */ - YYSYMBOL_VAR_FALLBACK_ENABLED = 277, /* VAR_FALLBACK_ENABLED */ - YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 278, /* VAR_TLS_ADDITIONAL_PORT */ - YYSYMBOL_VAR_LOW_RTT = 279, /* VAR_LOW_RTT */ - YYSYMBOL_VAR_LOW_RTT_PERMIL = 280, /* VAR_LOW_RTT_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_PERMIL = 281, /* VAR_FAST_SERVER_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_NUM = 282, /* VAR_FAST_SERVER_NUM */ - YYSYMBOL_VAR_ALLOW_NOTIFY = 283, /* VAR_ALLOW_NOTIFY */ - YYSYMBOL_VAR_TLS_WIN_CERT = 284, /* VAR_TLS_WIN_CERT */ - YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 285, /* VAR_TCP_CONNECTION_LIMIT */ - YYSYMBOL_VAR_FORWARD_NO_CACHE = 286, /* VAR_FORWARD_NO_CACHE */ - YYSYMBOL_VAR_STUB_NO_CACHE = 287, /* VAR_STUB_NO_CACHE */ - YYSYMBOL_VAR_LOG_SERVFAIL = 288, /* VAR_LOG_SERVFAIL */ - YYSYMBOL_VAR_DENY_ANY = 289, /* VAR_DENY_ANY */ - YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 290, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 291, /* VAR_LOG_TAG_QUERYREPLY */ - YYSYMBOL_VAR_STREAM_WAIT_SIZE = 292, /* VAR_STREAM_WAIT_SIZE */ - YYSYMBOL_VAR_TLS_CIPHERS = 293, /* VAR_TLS_CIPHERS */ - YYSYMBOL_VAR_TLS_CIPHERSUITES = 294, /* VAR_TLS_CIPHERSUITES */ - YYSYMBOL_VAR_TLS_USE_SNI = 295, /* VAR_TLS_USE_SNI */ - YYSYMBOL_VAR_IPSET = 296, /* VAR_IPSET */ - YYSYMBOL_VAR_IPSET_NAME_V4 = 297, /* VAR_IPSET_NAME_V4 */ - YYSYMBOL_VAR_IPSET_NAME_V6 = 298, /* VAR_IPSET_NAME_V6 */ - YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 299, /* VAR_TLS_SESSION_TICKET_KEYS */ - YYSYMBOL_VAR_RPZ = 300, /* VAR_RPZ */ - YYSYMBOL_VAR_TAGS = 301, /* VAR_TAGS */ - YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 302, /* VAR_RPZ_ACTION_OVERRIDE */ - YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 303, /* VAR_RPZ_CNAME_OVERRIDE */ - YYSYMBOL_VAR_RPZ_LOG = 304, /* VAR_RPZ_LOG */ - YYSYMBOL_VAR_RPZ_LOG_NAME = 305, /* VAR_RPZ_LOG_NAME */ - YYSYMBOL_VAR_DYNLIB = 306, /* VAR_DYNLIB */ - YYSYMBOL_VAR_DYNLIB_FILE = 307, /* VAR_DYNLIB_FILE */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING = 308, /* VAR_EDNS_CLIENT_STRING */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 309, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - YYSYMBOL_VAR_NSID = 310, /* VAR_NSID */ - YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 311, /* VAR_ZONEMD_PERMISSIVE_MODE */ - YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 312, /* VAR_ZONEMD_REJECT_ABSENCE */ - YYSYMBOL_YYACCEPT = 313, /* $accept */ - YYSYMBOL_toplevelvars = 314, /* toplevelvars */ - YYSYMBOL_toplevelvar = 315, /* toplevelvar */ - YYSYMBOL_force_toplevel = 316, /* force_toplevel */ - YYSYMBOL_serverstart = 317, /* serverstart */ - YYSYMBOL_contents_server = 318, /* contents_server */ - YYSYMBOL_content_server = 319, /* content_server */ - YYSYMBOL_stubstart = 320, /* stubstart */ - YYSYMBOL_contents_stub = 321, /* contents_stub */ - YYSYMBOL_content_stub = 322, /* content_stub */ - YYSYMBOL_forwardstart = 323, /* forwardstart */ - YYSYMBOL_contents_forward = 324, /* contents_forward */ - YYSYMBOL_content_forward = 325, /* content_forward */ - YYSYMBOL_viewstart = 326, /* viewstart */ - YYSYMBOL_contents_view = 327, /* contents_view */ - YYSYMBOL_content_view = 328, /* content_view */ - YYSYMBOL_authstart = 329, /* authstart */ - YYSYMBOL_contents_auth = 330, /* contents_auth */ - YYSYMBOL_content_auth = 331, /* content_auth */ - YYSYMBOL_rpz_tag = 332, /* rpz_tag */ - YYSYMBOL_rpz_action_override = 333, /* rpz_action_override */ - YYSYMBOL_rpz_cname_override = 334, /* rpz_cname_override */ - YYSYMBOL_rpz_log = 335, /* rpz_log */ - YYSYMBOL_rpz_log_name = 336, /* rpz_log_name */ - YYSYMBOL_rpzstart = 337, /* rpzstart */ - YYSYMBOL_contents_rpz = 338, /* contents_rpz */ - YYSYMBOL_content_rpz = 339, /* content_rpz */ - YYSYMBOL_server_num_threads = 340, /* server_num_threads */ - YYSYMBOL_server_verbosity = 341, /* server_verbosity */ - YYSYMBOL_server_statistics_interval = 342, /* server_statistics_interval */ - YYSYMBOL_server_statistics_cumulative = 343, /* server_statistics_cumulative */ - YYSYMBOL_server_extended_statistics = 344, /* server_extended_statistics */ - YYSYMBOL_server_shm_enable = 345, /* server_shm_enable */ - YYSYMBOL_server_shm_key = 346, /* server_shm_key */ - YYSYMBOL_server_port = 347, /* server_port */ - YYSYMBOL_server_send_client_subnet = 348, /* server_send_client_subnet */ - YYSYMBOL_server_client_subnet_zone = 349, /* server_client_subnet_zone */ - YYSYMBOL_server_client_subnet_always_forward = 350, /* server_client_subnet_always_forward */ - YYSYMBOL_server_client_subnet_opcode = 351, /* server_client_subnet_opcode */ - YYSYMBOL_server_max_client_subnet_ipv4 = 352, /* server_max_client_subnet_ipv4 */ - YYSYMBOL_server_max_client_subnet_ipv6 = 353, /* server_max_client_subnet_ipv6 */ - YYSYMBOL_server_min_client_subnet_ipv4 = 354, /* server_min_client_subnet_ipv4 */ - YYSYMBOL_server_min_client_subnet_ipv6 = 355, /* server_min_client_subnet_ipv6 */ - YYSYMBOL_server_max_ecs_tree_size_ipv4 = 356, /* server_max_ecs_tree_size_ipv4 */ - YYSYMBOL_server_max_ecs_tree_size_ipv6 = 357, /* server_max_ecs_tree_size_ipv6 */ - YYSYMBOL_server_interface = 358, /* server_interface */ - YYSYMBOL_server_outgoing_interface = 359, /* server_outgoing_interface */ - YYSYMBOL_server_outgoing_range = 360, /* server_outgoing_range */ - YYSYMBOL_server_outgoing_port_permit = 361, /* server_outgoing_port_permit */ - YYSYMBOL_server_outgoing_port_avoid = 362, /* server_outgoing_port_avoid */ - YYSYMBOL_server_outgoing_num_tcp = 363, /* server_outgoing_num_tcp */ - YYSYMBOL_server_incoming_num_tcp = 364, /* server_incoming_num_tcp */ - YYSYMBOL_server_interface_automatic = 365, /* server_interface_automatic */ - YYSYMBOL_server_do_ip4 = 366, /* server_do_ip4 */ - YYSYMBOL_server_do_ip6 = 367, /* server_do_ip6 */ - YYSYMBOL_server_do_udp = 368, /* server_do_udp */ - YYSYMBOL_server_do_tcp = 369, /* server_do_tcp */ - YYSYMBOL_server_prefer_ip4 = 370, /* server_prefer_ip4 */ - YYSYMBOL_server_prefer_ip6 = 371, /* server_prefer_ip6 */ - YYSYMBOL_server_tcp_mss = 372, /* server_tcp_mss */ - YYSYMBOL_server_outgoing_tcp_mss = 373, /* server_outgoing_tcp_mss */ - YYSYMBOL_server_tcp_idle_timeout = 374, /* server_tcp_idle_timeout */ - YYSYMBOL_server_max_reuse_tcp_queries = 375, /* server_max_reuse_tcp_queries */ - YYSYMBOL_server_tcp_reuse_timeout = 376, /* server_tcp_reuse_timeout */ - YYSYMBOL_server_tcp_keepalive = 377, /* server_tcp_keepalive */ - YYSYMBOL_server_tcp_keepalive_timeout = 378, /* server_tcp_keepalive_timeout */ - YYSYMBOL_server_tcp_upstream = 379, /* server_tcp_upstream */ - YYSYMBOL_server_udp_upstream_without_downstream = 380, /* server_udp_upstream_without_downstream */ - YYSYMBOL_server_ssl_upstream = 381, /* server_ssl_upstream */ - YYSYMBOL_server_ssl_service_key = 382, /* server_ssl_service_key */ - YYSYMBOL_server_ssl_service_pem = 383, /* server_ssl_service_pem */ - YYSYMBOL_server_ssl_port = 384, /* server_ssl_port */ - YYSYMBOL_server_tls_cert_bundle = 385, /* server_tls_cert_bundle */ - YYSYMBOL_server_tls_win_cert = 386, /* server_tls_win_cert */ - YYSYMBOL_server_tls_additional_port = 387, /* server_tls_additional_port */ - YYSYMBOL_server_tls_ciphers = 388, /* server_tls_ciphers */ - YYSYMBOL_server_tls_ciphersuites = 389, /* server_tls_ciphersuites */ - YYSYMBOL_server_tls_session_ticket_keys = 390, /* server_tls_session_ticket_keys */ - YYSYMBOL_server_tls_use_sni = 391, /* server_tls_use_sni */ - YYSYMBOL_server_https_port = 392, /* server_https_port */ - YYSYMBOL_server_http_endpoint = 393, /* server_http_endpoint */ - YYSYMBOL_server_http_max_streams = 394, /* server_http_max_streams */ - YYSYMBOL_server_http_query_buffer_size = 395, /* server_http_query_buffer_size */ - YYSYMBOL_server_http_response_buffer_size = 396, /* server_http_response_buffer_size */ - YYSYMBOL_server_http_nodelay = 397, /* server_http_nodelay */ - YYSYMBOL_server_http_notls_downstream = 398, /* server_http_notls_downstream */ - YYSYMBOL_server_use_systemd = 399, /* server_use_systemd */ - YYSYMBOL_server_do_daemonize = 400, /* server_do_daemonize */ - YYSYMBOL_server_use_syslog = 401, /* server_use_syslog */ - YYSYMBOL_server_log_time_ascii = 402, /* server_log_time_ascii */ - YYSYMBOL_server_log_queries = 403, /* server_log_queries */ - YYSYMBOL_server_log_replies = 404, /* server_log_replies */ - YYSYMBOL_server_log_tag_queryreply = 405, /* server_log_tag_queryreply */ - YYSYMBOL_server_log_servfail = 406, /* server_log_servfail */ - YYSYMBOL_server_log_local_actions = 407, /* server_log_local_actions */ - YYSYMBOL_server_chroot = 408, /* server_chroot */ - YYSYMBOL_server_username = 409, /* server_username */ - YYSYMBOL_server_directory = 410, /* server_directory */ - YYSYMBOL_server_logfile = 411, /* server_logfile */ - YYSYMBOL_server_pidfile = 412, /* server_pidfile */ - YYSYMBOL_server_root_hints = 413, /* server_root_hints */ - YYSYMBOL_server_dlv_anchor_file = 414, /* server_dlv_anchor_file */ - YYSYMBOL_server_dlv_anchor = 415, /* server_dlv_anchor */ - YYSYMBOL_server_auto_trust_anchor_file = 416, /* server_auto_trust_anchor_file */ - YYSYMBOL_server_trust_anchor_file = 417, /* server_trust_anchor_file */ - YYSYMBOL_server_trusted_keys_file = 418, /* server_trusted_keys_file */ - YYSYMBOL_server_trust_anchor = 419, /* server_trust_anchor */ - YYSYMBOL_server_trust_anchor_signaling = 420, /* server_trust_anchor_signaling */ - YYSYMBOL_server_root_key_sentinel = 421, /* server_root_key_sentinel */ - YYSYMBOL_server_domain_insecure = 422, /* server_domain_insecure */ - YYSYMBOL_server_hide_identity = 423, /* server_hide_identity */ - YYSYMBOL_server_hide_version = 424, /* server_hide_version */ - YYSYMBOL_server_hide_trustanchor = 425, /* server_hide_trustanchor */ - YYSYMBOL_server_identity = 426, /* server_identity */ - YYSYMBOL_server_version = 427, /* server_version */ - YYSYMBOL_server_nsid = 428, /* server_nsid */ - YYSYMBOL_server_so_rcvbuf = 429, /* server_so_rcvbuf */ - YYSYMBOL_server_so_sndbuf = 430, /* server_so_sndbuf */ - YYSYMBOL_server_so_reuseport = 431, /* server_so_reuseport */ - YYSYMBOL_server_ip_transparent = 432, /* server_ip_transparent */ - YYSYMBOL_server_ip_freebind = 433, /* server_ip_freebind */ - YYSYMBOL_server_ip_dscp = 434, /* server_ip_dscp */ - YYSYMBOL_server_stream_wait_size = 435, /* server_stream_wait_size */ - YYSYMBOL_server_edns_buffer_size = 436, /* server_edns_buffer_size */ - YYSYMBOL_server_msg_buffer_size = 437, /* server_msg_buffer_size */ - YYSYMBOL_server_msg_cache_size = 438, /* server_msg_cache_size */ - YYSYMBOL_server_msg_cache_slabs = 439, /* server_msg_cache_slabs */ - YYSYMBOL_server_num_queries_per_thread = 440, /* server_num_queries_per_thread */ - YYSYMBOL_server_jostle_timeout = 441, /* server_jostle_timeout */ - YYSYMBOL_server_delay_close = 442, /* server_delay_close */ - YYSYMBOL_server_udp_connect = 443, /* server_udp_connect */ - YYSYMBOL_server_unblock_lan_zones = 444, /* server_unblock_lan_zones */ - YYSYMBOL_server_insecure_lan_zones = 445, /* server_insecure_lan_zones */ - YYSYMBOL_server_rrset_cache_size = 446, /* server_rrset_cache_size */ - YYSYMBOL_server_rrset_cache_slabs = 447, /* server_rrset_cache_slabs */ - YYSYMBOL_server_infra_host_ttl = 448, /* server_infra_host_ttl */ - YYSYMBOL_server_infra_lame_ttl = 449, /* server_infra_lame_ttl */ - YYSYMBOL_server_infra_cache_numhosts = 450, /* server_infra_cache_numhosts */ - YYSYMBOL_server_infra_cache_lame_size = 451, /* server_infra_cache_lame_size */ - YYSYMBOL_server_infra_cache_slabs = 452, /* server_infra_cache_slabs */ - YYSYMBOL_server_infra_cache_min_rtt = 453, /* server_infra_cache_min_rtt */ - YYSYMBOL_server_infra_keep_probing = 454, /* server_infra_keep_probing */ - YYSYMBOL_server_target_fetch_policy = 455, /* server_target_fetch_policy */ - YYSYMBOL_server_harden_short_bufsize = 456, /* server_harden_short_bufsize */ - YYSYMBOL_server_harden_large_queries = 457, /* server_harden_large_queries */ - YYSYMBOL_server_harden_glue = 458, /* server_harden_glue */ - YYSYMBOL_server_harden_dnssec_stripped = 459, /* server_harden_dnssec_stripped */ - YYSYMBOL_server_harden_below_nxdomain = 460, /* server_harden_below_nxdomain */ - YYSYMBOL_server_harden_referral_path = 461, /* server_harden_referral_path */ - YYSYMBOL_server_harden_algo_downgrade = 462, /* server_harden_algo_downgrade */ - YYSYMBOL_server_use_caps_for_id = 463, /* server_use_caps_for_id */ - YYSYMBOL_server_caps_whitelist = 464, /* server_caps_whitelist */ - YYSYMBOL_server_private_address = 465, /* server_private_address */ - YYSYMBOL_server_private_domain = 466, /* server_private_domain */ - YYSYMBOL_server_prefetch = 467, /* server_prefetch */ - YYSYMBOL_server_prefetch_key = 468, /* server_prefetch_key */ - YYSYMBOL_server_deny_any = 469, /* server_deny_any */ - YYSYMBOL_server_unwanted_reply_threshold = 470, /* server_unwanted_reply_threshold */ - YYSYMBOL_server_do_not_query_address = 471, /* server_do_not_query_address */ - YYSYMBOL_server_do_not_query_localhost = 472, /* server_do_not_query_localhost */ - YYSYMBOL_server_access_control = 473, /* server_access_control */ - YYSYMBOL_server_module_conf = 474, /* server_module_conf */ - YYSYMBOL_server_val_override_date = 475, /* server_val_override_date */ - YYSYMBOL_server_val_sig_skew_min = 476, /* server_val_sig_skew_min */ - YYSYMBOL_server_val_sig_skew_max = 477, /* server_val_sig_skew_max */ - YYSYMBOL_server_cache_max_ttl = 478, /* server_cache_max_ttl */ - YYSYMBOL_server_cache_max_negative_ttl = 479, /* server_cache_max_negative_ttl */ - YYSYMBOL_server_cache_min_ttl = 480, /* server_cache_min_ttl */ - YYSYMBOL_server_bogus_ttl = 481, /* server_bogus_ttl */ - YYSYMBOL_server_val_clean_additional = 482, /* server_val_clean_additional */ - YYSYMBOL_server_val_permissive_mode = 483, /* server_val_permissive_mode */ - YYSYMBOL_server_aggressive_nsec = 484, /* server_aggressive_nsec */ - YYSYMBOL_server_ignore_cd_flag = 485, /* server_ignore_cd_flag */ - YYSYMBOL_server_serve_expired = 486, /* server_serve_expired */ - YYSYMBOL_server_serve_expired_ttl = 487, /* server_serve_expired_ttl */ - YYSYMBOL_server_serve_expired_ttl_reset = 488, /* server_serve_expired_ttl_reset */ - YYSYMBOL_server_serve_expired_reply_ttl = 489, /* server_serve_expired_reply_ttl */ - YYSYMBOL_server_serve_expired_client_timeout = 490, /* server_serve_expired_client_timeout */ - YYSYMBOL_server_serve_original_ttl = 491, /* server_serve_original_ttl */ - YYSYMBOL_server_fake_dsa = 492, /* server_fake_dsa */ - YYSYMBOL_server_fake_sha1 = 493, /* server_fake_sha1 */ - YYSYMBOL_server_val_log_level = 494, /* server_val_log_level */ - YYSYMBOL_server_val_nsec3_keysize_iterations = 495, /* server_val_nsec3_keysize_iterations */ - YYSYMBOL_server_zonemd_permissive_mode = 496, /* server_zonemd_permissive_mode */ - YYSYMBOL_server_add_holddown = 497, /* server_add_holddown */ - YYSYMBOL_server_del_holddown = 498, /* server_del_holddown */ - YYSYMBOL_server_keep_missing = 499, /* server_keep_missing */ - YYSYMBOL_server_permit_small_holddown = 500, /* server_permit_small_holddown */ - YYSYMBOL_server_key_cache_size = 501, /* server_key_cache_size */ - YYSYMBOL_server_key_cache_slabs = 502, /* server_key_cache_slabs */ - YYSYMBOL_server_neg_cache_size = 503, /* server_neg_cache_size */ - YYSYMBOL_server_local_zone = 504, /* server_local_zone */ - YYSYMBOL_server_local_data = 505, /* server_local_data */ - YYSYMBOL_server_local_data_ptr = 506, /* server_local_data_ptr */ - YYSYMBOL_server_minimal_responses = 507, /* server_minimal_responses */ - YYSYMBOL_server_rrset_roundrobin = 508, /* server_rrset_roundrobin */ - YYSYMBOL_server_unknown_server_time_limit = 509, /* server_unknown_server_time_limit */ - YYSYMBOL_server_max_udp_size = 510, /* server_max_udp_size */ - YYSYMBOL_server_dns64_prefix = 511, /* server_dns64_prefix */ - YYSYMBOL_server_dns64_synthall = 512, /* server_dns64_synthall */ - YYSYMBOL_server_dns64_ignore_aaaa = 513, /* server_dns64_ignore_aaaa */ - YYSYMBOL_server_define_tag = 514, /* server_define_tag */ - YYSYMBOL_server_local_zone_tag = 515, /* server_local_zone_tag */ - YYSYMBOL_server_access_control_tag = 516, /* server_access_control_tag */ - YYSYMBOL_server_access_control_tag_action = 517, /* server_access_control_tag_action */ - YYSYMBOL_server_access_control_tag_data = 518, /* server_access_control_tag_data */ - YYSYMBOL_server_local_zone_override = 519, /* server_local_zone_override */ - YYSYMBOL_server_access_control_view = 520, /* server_access_control_view */ - YYSYMBOL_server_response_ip_tag = 521, /* server_response_ip_tag */ - YYSYMBOL_server_ip_ratelimit = 522, /* server_ip_ratelimit */ - YYSYMBOL_server_ratelimit = 523, /* server_ratelimit */ - YYSYMBOL_server_ip_ratelimit_size = 524, /* server_ip_ratelimit_size */ - YYSYMBOL_server_ratelimit_size = 525, /* server_ratelimit_size */ - YYSYMBOL_server_ip_ratelimit_slabs = 526, /* server_ip_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_slabs = 527, /* server_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_for_domain = 528, /* server_ratelimit_for_domain */ - YYSYMBOL_server_ratelimit_below_domain = 529, /* server_ratelimit_below_domain */ - YYSYMBOL_server_ip_ratelimit_factor = 530, /* server_ip_ratelimit_factor */ - YYSYMBOL_server_ratelimit_factor = 531, /* server_ratelimit_factor */ - YYSYMBOL_server_low_rtt = 532, /* server_low_rtt */ - YYSYMBOL_server_fast_server_num = 533, /* server_fast_server_num */ - YYSYMBOL_server_fast_server_permil = 534, /* server_fast_server_permil */ - YYSYMBOL_server_qname_minimisation = 535, /* server_qname_minimisation */ - YYSYMBOL_server_qname_minimisation_strict = 536, /* server_qname_minimisation_strict */ - YYSYMBOL_server_pad_responses = 537, /* server_pad_responses */ - YYSYMBOL_server_pad_responses_block_size = 538, /* server_pad_responses_block_size */ - YYSYMBOL_server_pad_queries = 539, /* server_pad_queries */ - YYSYMBOL_server_pad_queries_block_size = 540, /* server_pad_queries_block_size */ - YYSYMBOL_server_ipsecmod_enabled = 541, /* server_ipsecmod_enabled */ - YYSYMBOL_server_ipsecmod_ignore_bogus = 542, /* server_ipsecmod_ignore_bogus */ - YYSYMBOL_server_ipsecmod_hook = 543, /* server_ipsecmod_hook */ - YYSYMBOL_server_ipsecmod_max_ttl = 544, /* server_ipsecmod_max_ttl */ - YYSYMBOL_server_ipsecmod_whitelist = 545, /* server_ipsecmod_whitelist */ - YYSYMBOL_server_ipsecmod_strict = 546, /* server_ipsecmod_strict */ - YYSYMBOL_server_edns_client_string = 547, /* server_edns_client_string */ - YYSYMBOL_server_edns_client_string_opcode = 548, /* server_edns_client_string_opcode */ - YYSYMBOL_stub_name = 549, /* stub_name */ - YYSYMBOL_stub_host = 550, /* stub_host */ - YYSYMBOL_stub_addr = 551, /* stub_addr */ - YYSYMBOL_stub_first = 552, /* stub_first */ - YYSYMBOL_stub_no_cache = 553, /* stub_no_cache */ - YYSYMBOL_stub_ssl_upstream = 554, /* stub_ssl_upstream */ - YYSYMBOL_stub_prime = 555, /* stub_prime */ - YYSYMBOL_forward_name = 556, /* forward_name */ - YYSYMBOL_forward_host = 557, /* forward_host */ - YYSYMBOL_forward_addr = 558, /* forward_addr */ - YYSYMBOL_forward_first = 559, /* forward_first */ - YYSYMBOL_forward_no_cache = 560, /* forward_no_cache */ - YYSYMBOL_forward_ssl_upstream = 561, /* forward_ssl_upstream */ - YYSYMBOL_auth_name = 562, /* auth_name */ - YYSYMBOL_auth_zonefile = 563, /* auth_zonefile */ - YYSYMBOL_auth_master = 564, /* auth_master */ - YYSYMBOL_auth_url = 565, /* auth_url */ - YYSYMBOL_auth_allow_notify = 566, /* auth_allow_notify */ - YYSYMBOL_auth_zonemd_reject_absence = 567, /* auth_zonemd_reject_absence */ - YYSYMBOL_auth_for_downstream = 568, /* auth_for_downstream */ - YYSYMBOL_auth_for_upstream = 569, /* auth_for_upstream */ - YYSYMBOL_auth_fallback_enabled = 570, /* auth_fallback_enabled */ - YYSYMBOL_view_name = 571, /* view_name */ - YYSYMBOL_view_local_zone = 572, /* view_local_zone */ - YYSYMBOL_view_response_ip = 573, /* view_response_ip */ - YYSYMBOL_view_response_ip_data = 574, /* view_response_ip_data */ - YYSYMBOL_view_local_data = 575, /* view_local_data */ - YYSYMBOL_view_local_data_ptr = 576, /* view_local_data_ptr */ - YYSYMBOL_view_first = 577, /* view_first */ - YYSYMBOL_rcstart = 578, /* rcstart */ - YYSYMBOL_contents_rc = 579, /* contents_rc */ - YYSYMBOL_content_rc = 580, /* content_rc */ - YYSYMBOL_rc_control_enable = 581, /* rc_control_enable */ - YYSYMBOL_rc_control_port = 582, /* rc_control_port */ - YYSYMBOL_rc_control_interface = 583, /* rc_control_interface */ - YYSYMBOL_rc_control_use_cert = 584, /* rc_control_use_cert */ - YYSYMBOL_rc_server_key_file = 585, /* rc_server_key_file */ - YYSYMBOL_rc_server_cert_file = 586, /* rc_server_cert_file */ - YYSYMBOL_rc_control_key_file = 587, /* rc_control_key_file */ - YYSYMBOL_rc_control_cert_file = 588, /* rc_control_cert_file */ - YYSYMBOL_dtstart = 589, /* dtstart */ - YYSYMBOL_contents_dt = 590, /* contents_dt */ - YYSYMBOL_content_dt = 591, /* content_dt */ - YYSYMBOL_dt_dnstap_enable = 592, /* dt_dnstap_enable */ - YYSYMBOL_dt_dnstap_bidirectional = 593, /* dt_dnstap_bidirectional */ - YYSYMBOL_dt_dnstap_socket_path = 594, /* dt_dnstap_socket_path */ - YYSYMBOL_dt_dnstap_ip = 595, /* dt_dnstap_ip */ - YYSYMBOL_dt_dnstap_tls = 596, /* dt_dnstap_tls */ - YYSYMBOL_dt_dnstap_tls_server_name = 597, /* dt_dnstap_tls_server_name */ - YYSYMBOL_dt_dnstap_tls_cert_bundle = 598, /* dt_dnstap_tls_cert_bundle */ - YYSYMBOL_dt_dnstap_tls_client_key_file = 599, /* dt_dnstap_tls_client_key_file */ - YYSYMBOL_dt_dnstap_tls_client_cert_file = 600, /* dt_dnstap_tls_client_cert_file */ - YYSYMBOL_dt_dnstap_send_identity = 601, /* dt_dnstap_send_identity */ - YYSYMBOL_dt_dnstap_send_version = 602, /* dt_dnstap_send_version */ - YYSYMBOL_dt_dnstap_identity = 603, /* dt_dnstap_identity */ - YYSYMBOL_dt_dnstap_version = 604, /* dt_dnstap_version */ - YYSYMBOL_dt_dnstap_log_resolver_query_messages = 605, /* dt_dnstap_log_resolver_query_messages */ - YYSYMBOL_dt_dnstap_log_resolver_response_messages = 606, /* dt_dnstap_log_resolver_response_messages */ - YYSYMBOL_dt_dnstap_log_client_query_messages = 607, /* dt_dnstap_log_client_query_messages */ - YYSYMBOL_dt_dnstap_log_client_response_messages = 608, /* dt_dnstap_log_client_response_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 609, /* dt_dnstap_log_forwarder_query_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 610, /* dt_dnstap_log_forwarder_response_messages */ - YYSYMBOL_pythonstart = 611, /* pythonstart */ - YYSYMBOL_contents_py = 612, /* contents_py */ - YYSYMBOL_content_py = 613, /* content_py */ - YYSYMBOL_py_script = 614, /* py_script */ - YYSYMBOL_dynlibstart = 615, /* dynlibstart */ - YYSYMBOL_contents_dl = 616, /* contents_dl */ - YYSYMBOL_content_dl = 617, /* content_dl */ - YYSYMBOL_dl_file = 618, /* dl_file */ - YYSYMBOL_server_disable_dnssec_lame_check = 619, /* server_disable_dnssec_lame_check */ - YYSYMBOL_server_log_identity = 620, /* server_log_identity */ - YYSYMBOL_server_response_ip = 621, /* server_response_ip */ - YYSYMBOL_server_response_ip_data = 622, /* server_response_ip_data */ - YYSYMBOL_dnscstart = 623, /* dnscstart */ - YYSYMBOL_contents_dnsc = 624, /* contents_dnsc */ - YYSYMBOL_content_dnsc = 625, /* content_dnsc */ - YYSYMBOL_dnsc_dnscrypt_enable = 626, /* dnsc_dnscrypt_enable */ - YYSYMBOL_dnsc_dnscrypt_port = 627, /* dnsc_dnscrypt_port */ - YYSYMBOL_dnsc_dnscrypt_provider = 628, /* dnsc_dnscrypt_provider */ - YYSYMBOL_dnsc_dnscrypt_provider_cert = 629, /* dnsc_dnscrypt_provider_cert */ - YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 630, /* dnsc_dnscrypt_provider_cert_rotated */ - YYSYMBOL_dnsc_dnscrypt_secret_key = 631, /* dnsc_dnscrypt_secret_key */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 632, /* dnsc_dnscrypt_shared_secret_cache_size */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 633, /* dnsc_dnscrypt_shared_secret_cache_slabs */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 634, /* dnsc_dnscrypt_nonce_cache_size */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 635, /* dnsc_dnscrypt_nonce_cache_slabs */ - YYSYMBOL_cachedbstart = 636, /* cachedbstart */ - YYSYMBOL_contents_cachedb = 637, /* contents_cachedb */ - YYSYMBOL_content_cachedb = 638, /* content_cachedb */ - YYSYMBOL_cachedb_backend_name = 639, /* cachedb_backend_name */ - YYSYMBOL_cachedb_secret_seed = 640, /* cachedb_secret_seed */ - YYSYMBOL_redis_server_host = 641, /* redis_server_host */ - YYSYMBOL_redis_server_port = 642, /* redis_server_port */ - YYSYMBOL_redis_timeout = 643, /* redis_timeout */ - YYSYMBOL_redis_expire_records = 644, /* redis_expire_records */ - YYSYMBOL_server_tcp_connection_limit = 645, /* server_tcp_connection_limit */ - YYSYMBOL_ipsetstart = 646, /* ipsetstart */ - YYSYMBOL_contents_ipset = 647, /* contents_ipset */ - YYSYMBOL_content_ipset = 648, /* content_ipset */ - YYSYMBOL_ipset_name_v4 = 649, /* ipset_name_v4 */ - YYSYMBOL_ipset_name_v6 = 650 /* ipset_name_v6 */ -}; -typedef enum yysymbol_kind_t yysymbol_kind_t; +#if 0 +#define OUTYY(s) printf s /* used ONLY when debugging */ +#else +#define OUTYY(s) +#endif +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif -#ifdef short -# undef short +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 #endif -/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure - and (if available) are included - so that the code can choose integer types of a good width. */ +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif -#ifndef __PTRDIFF_MAX__ -# include /* INFRINGES ON USER NAME SPACE */ -# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_STDINT_H -# endif +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 66 "util/configparser.y" +{ + char* str; +} +/* Line 193 of yacc.c. */ +#line 755 "util/configparser.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 #endif -/* Narrow types that promote to a signed type and that can represent a - signed or unsigned integer of at least N bits. In tables they can - save space and decrease cache pressure. Promoting to a signed type - helps avoid bugs in integer arithmetic. */ -#ifdef __INT_LEAST8_MAX__ -typedef __INT_LEAST8_TYPE__ yytype_int8; -#elif defined YY_STDINT_H -typedef int_least8_t yytype_int8; -#else -typedef signed char yytype_int8; + +/* Copy the second part of user declarations. */ + + +/* Line 216 of yacc.c. */ +#line 768 "util/configparser.c" + +#ifdef short +# undef short #endif -#ifdef __INT_LEAST16_MAX__ -typedef __INT_LEAST16_TYPE__ yytype_int16; -#elif defined YY_STDINT_H -typedef int_least16_t yytype_int16; +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; #else -typedef short yytype_int16; +typedef unsigned char yytype_uint8; #endif -#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ -typedef __UINT_LEAST8_TYPE__ yytype_uint8; -#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ - && UINT_LEAST8_MAX <= INT_MAX) -typedef uint_least8_t yytype_uint8; -#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX -typedef unsigned char yytype_uint8; +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; #else -typedef short yytype_uint8; +typedef short int yytype_int8; #endif -#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ -typedef __UINT_LEAST16_TYPE__ yytype_uint16; -#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ - && UINT_LEAST16_MAX <= INT_MAX) -typedef uint_least16_t yytype_uint16; -#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX -typedef unsigned short yytype_uint16; +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; #else -typedef int yytype_uint16; +typedef unsigned short int yytype_uint16; #endif -#ifndef YYPTRDIFF_T -# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ -# define YYPTRDIFF_T __PTRDIFF_TYPE__ -# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ -# elif defined PTRDIFF_MAX -# ifndef ptrdiff_t -# include /* INFRINGES ON USER NAME SPACE */ -# endif -# define YYPTRDIFF_T ptrdiff_t -# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX -# else -# define YYPTRDIFF_T long -# define YYPTRDIFF_MAXIMUM LONG_MAX -# endif +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; #endif #ifndef YYSIZE_T @@ -1531,100 +802,55 @@ typedef int yytype_uint16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else -# define YYSIZE_T unsigned +# define YYSIZE_T unsigned int # endif #endif -#define YYSIZE_MAXIMUM \ - YY_CAST (YYPTRDIFF_T, \ - (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ - ? YYPTRDIFF_MAXIMUM \ - : YY_CAST (YYSIZE_T, -1))) - -#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) - - -/* Stored state numbers (used for stacks). */ -typedef yytype_int16 yy_state_t; - -/* State numbers in computations. */ -typedef int yy_state_fast_t; +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* 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 -# endif -#endif - - -#ifndef YY_ATTRIBUTE_PURE -# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) -# else -# define YY_ATTRIBUTE_PURE -# endif -#endif - -#ifndef YY_ATTRIBUTE_UNUSED -# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) -# else -# define YY_ATTRIBUTE_UNUSED +# 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 -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ - _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ - _Pragma ("GCC diagnostic pop") +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) #else -# define YY_INITIAL_VALUE(Value) Value -#endif -#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 - -#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ -# define YY_IGNORE_USELESS_CAST_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") -# define YY_IGNORE_USELESS_CAST_END \ - _Pragma ("GCC diagnostic pop") +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; #endif -#ifndef YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_END +{ + return i; +} #endif - -#define YY_ASSERT(E) ((void) (0 && (E))) - -#if !defined yyoverflow +#if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -1641,11 +867,11 @@ typedef int yy_state_fast_t; # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ - /* Use EXIT_SUCCESS as a witness for stdlib.h. */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 +# ifndef _STDLIB_H +# define _STDLIB_H 1 # endif # endif # endif @@ -1653,8 +879,8 @@ typedef int yy_state_fast_t; # endif # ifdef YYSTACK_ALLOC - /* Pacify GCC's 'empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely @@ -1668,116 +894,111 @@ typedef int yy_state_fast_t; # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif -# if (defined __cplusplus && ! defined EXIT_SUCCESS \ +# if (defined __cplusplus && ! defined _STDLIB_H \ && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) + && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 +# ifndef _STDLIB_H +# define _STDLIB_H 1 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif -#endif /* !defined yyoverflow */ +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + #if (! defined yyoverflow \ && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { - yy_state_t yyss_alloc; - YYSTYPE yyvs_alloc; -}; + yytype_int16 yyss; + YYSTYPE yyvs; + }; /* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ - ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) -# define YYCOPY_NEEDED 1 +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYPTRDIFF_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / YYSIZEOF (*yyptr); \ - } \ - while (0) +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) #endif -#if defined YYCOPY_NEEDED && YYCOPY_NEEDED -/* Copy COUNT objects from SRC to DST. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) -# else -# define YYCOPY(Dst, Src, Count) \ - do \ - { \ - YYPTRDIFF_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (Dst)[yyi] = (Src)[yyi]; \ - } \ - while (0) -# endif -# endif -#endif /* !YYCOPY_NEEDED */ - /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 661 +#define YYLAST 663 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 313 +#define YYNTOKENS 314 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 338 +#define YYNNTS 339 /* YYNRULES -- Number of rules. */ -#define YYNRULES 652 -/* YYNSTATES -- Number of states. */ -#define YYNSTATES 969 +#define YYNRULES 654 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 972 -#define YYMAXUTOK 567 +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 568 +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) -/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, with out-of-bounds checking. */ -#define YYTRANSLATE(YYX) \ - (0 <= (YYX) && (YYX) <= YYMAXUTOK \ - ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ - : YYSYMBOL_YYUNDEF) - -/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex. */ -static const yytype_int16 yytranslate[] = +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1835,12 +1056,253 @@ static const yytype_int16 yytranslate[] = 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312 + 305, 306, 307, 308, 309, 310, 311, 312, 313 }; #if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_int16 yyrline[] = +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 4, 7, 10, 13, 16, 19, 22, + 25, 28, 31, 34, 37, 40, 43, 46, 48, 50, + 52, 55, 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, 234, 236, 238, 240, 242, 244, 246, 248, 250, + 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, + 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, + 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, + 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, + 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, + 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, + 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, + 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, + 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, + 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, + 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, + 472, 474, 476, 478, 480, 482, 484, 486, 488, 491, + 492, 494, 496, 498, 500, 502, 504, 506, 508, 511, + 512, 514, 516, 518, 520, 522, 524, 526, 529, 530, + 532, 534, 536, 538, 540, 542, 544, 546, 549, 550, + 552, 554, 556, 558, 560, 562, 564, 566, 568, 571, + 574, 577, 580, 583, 585, 588, 589, 591, 593, 595, + 597, 599, 601, 603, 605, 607, 609, 612, 615, 618, + 621, 624, 627, 630, 633, 636, 639, 642, 645, 648, + 651, 654, 657, 660, 663, 666, 669, 672, 675, 678, + 681, 684, 687, 690, 693, 696, 699, 702, 705, 708, + 711, 714, 717, 720, 723, 726, 729, 732, 735, 738, + 741, 744, 747, 750, 753, 756, 759, 762, 765, 768, + 771, 774, 777, 780, 783, 786, 789, 792, 795, 798, + 801, 804, 807, 810, 813, 816, 819, 822, 825, 828, + 831, 834, 837, 840, 843, 846, 849, 852, 855, 858, + 861, 864, 867, 870, 873, 876, 879, 882, 885, 888, + 891, 894, 897, 900, 903, 906, 909, 912, 915, 918, + 921, 924, 927, 930, 933, 936, 939, 942, 945, 948, + 951, 954, 957, 960, 963, 966, 969, 972, 975, 978, + 981, 984, 987, 990, 993, 996, 999, 1002, 1005, 1008, + 1011, 1015, 1018, 1021, 1024, 1027, 1030, 1033, 1036, 1039, + 1042, 1045, 1048, 1051, 1054, 1057, 1060, 1063, 1066, 1069, + 1072, 1075, 1078, 1081, 1084, 1087, 1090, 1093, 1096, 1099, + 1102, 1105, 1109, 1112, 1115, 1118, 1121, 1124, 1127, 1130, + 1133, 1136, 1139, 1143, 1147, 1152, 1157, 1162, 1166, 1170, + 1173, 1176, 1179, 1182, 1185, 1188, 1192, 1196, 1199, 1202, + 1205, 1208, 1211, 1214, 1217, 1220, 1223, 1226, 1229, 1232, + 1235, 1238, 1241, 1244, 1247, 1251, 1254, 1257, 1260, 1263, + 1266, 1269, 1272, 1275, 1278, 1281, 1284, 1287, 1290, 1293, + 1296, 1299, 1302, 1305, 1308, 1311, 1314, 1317, 1320, 1323, + 1327, 1331, 1335, 1338, 1341, 1344, 1346, 1349, 1350, 1352, + 1354, 1356, 1358, 1360, 1362, 1364, 1366, 1369, 1372, 1375, + 1378, 1381, 1384, 1387, 1390, 1392, 1395, 1396, 1398, 1400, + 1402, 1404, 1406, 1408, 1410, 1412, 1414, 1416, 1418, 1420, + 1422, 1424, 1426, 1428, 1430, 1432, 1434, 1437, 1440, 1443, + 1446, 1449, 1452, 1455, 1458, 1461, 1464, 1467, 1470, 1473, + 1476, 1479, 1482, 1485, 1488, 1491, 1493, 1496, 1497, 1499, + 1502, 1504, 1507, 1508, 1510, 1513, 1516, 1519, 1523, 1527, + 1529, 1532, 1533, 1535, 1537, 1539, 1541, 1543, 1545, 1547, + 1549, 1551, 1553, 1556, 1559, 1562, 1565, 1568, 1571, 1574, + 1577, 1580, 1583, 1585, 1588, 1589, 1591, 1593, 1595, 1597, + 1599, 1601, 1604, 1607, 1610, 1613, 1616, 1619, 1623, 1625, + 1628, 1629, 1631, 1633, 1636 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 315, 0, -1, -1, 315, 316, -1, 318, 319, -1, + 321, 322, -1, 324, 325, -1, 613, 614, -1, 580, + 581, -1, 591, 592, -1, 327, 328, -1, 625, 626, + -1, 638, 639, -1, 648, 649, -1, 330, 331, -1, + 338, 339, -1, 617, 618, -1, 317, -1, 11, -1, + 12, -1, 319, 320, -1, -1, 341, -1, 342, -1, + 348, -1, 361, -1, 367, -1, 368, -1, 371, -1, + 372, -1, 369, -1, 370, -1, 373, -1, 374, -1, + 375, -1, 379, -1, 380, -1, 359, -1, 410, -1, + 411, -1, 412, -1, 413, -1, 414, -1, 440, -1, + 441, -1, 442, -1, 448, -1, 449, -1, 364, -1, + 450, -1, 451, -1, 454, -1, 452, -1, 453, -1, + 457, -1, 458, -1, 459, -1, 473, -1, 425, -1, + 426, -1, 428, -1, 429, -1, 460, -1, 476, -1, + 419, -1, 421, -1, 477, -1, 483, -1, 484, -1, + 485, -1, 365, -1, 439, -1, 503, -1, 504, -1, + 420, -1, 497, -1, 403, -1, 360, -1, 415, -1, + 474, -1, 480, -1, 461, -1, 475, -1, 506, -1, + 507, -1, 366, -1, 343, -1, 402, -1, 465, -1, + 344, -1, 362, -1, 363, -1, 416, -1, 417, -1, + 505, -1, 463, -1, 467, -1, 468, -1, 345, -1, + 508, -1, 443, -1, 472, -1, 404, -1, 424, -1, + 478, -1, 479, -1, 482, -1, 496, -1, 418, -1, + 499, -1, 500, -1, 501, -1, 431, -1, 438, -1, + 469, -1, 470, -1, 432, -1, 462, -1, 487, -1, + 405, -1, 406, -1, 381, -1, 383, -1, 409, -1, + 384, -1, 385, -1, 386, -1, 394, -1, 395, -1, + 396, -1, 397, -1, 398, -1, 399, -1, 400, -1, + 509, -1, 510, -1, 512, -1, 433, -1, 444, -1, + 445, -1, 446, -1, 447, -1, 513, -1, 514, -1, + 515, -1, 455, -1, 464, -1, 434, -1, 524, -1, + 525, -1, 436, -1, 456, -1, 528, -1, 529, -1, + 526, -1, 527, -1, 530, -1, 531, -1, 533, -1, + 532, -1, 349, -1, 350, -1, 351, -1, 352, -1, + 353, -1, 354, -1, 355, -1, 356, -1, 357, -1, + 358, -1, 466, -1, 481, -1, 502, -1, 537, -1, + 435, -1, 516, -1, 517, -1, 621, -1, 518, -1, + 521, -1, 519, -1, 520, -1, 522, -1, 538, -1, + 539, -1, 540, -1, 541, -1, 542, -1, 488, -1, + 489, -1, 490, -1, 491, -1, 492, -1, 493, -1, + 494, -1, 622, -1, 401, -1, 523, -1, 623, -1, + 624, -1, 346, -1, 347, -1, 495, -1, 427, -1, + 422, -1, 423, -1, 543, -1, 545, -1, 544, -1, + 546, -1, 547, -1, 548, -1, 382, -1, 486, -1, + 387, -1, 389, -1, 534, -1, 536, -1, 535, -1, + 388, -1, 647, -1, 408, -1, 471, -1, 511, -1, + 407, -1, 437, -1, 390, -1, 391, -1, 392, -1, + 393, -1, 549, -1, 550, -1, 430, -1, 498, -1, + 376, -1, 377, -1, 378, -1, 46, -1, 322, 323, + -1, -1, 551, -1, 552, -1, 553, -1, 557, -1, + 554, -1, 555, -1, 556, -1, 52, -1, 325, 326, + -1, -1, 558, -1, 559, -1, 560, -1, 561, -1, + 562, -1, 563, -1, 224, -1, 328, 329, -1, -1, + 573, -1, 574, -1, 577, -1, 579, -1, 575, -1, + 576, -1, 578, -1, 273, -1, 331, 332, -1, -1, + 564, -1, 565, -1, 566, -1, 567, -1, 570, -1, + 571, -1, 572, -1, 568, -1, 569, -1, 302, 10, + -1, 303, 10, -1, 304, 10, -1, 305, 10, -1, + 306, 10, -1, 301, -1, 339, 340, -1, -1, 564, + -1, 565, -1, 333, -1, 566, -1, 567, -1, 568, + -1, 334, -1, 335, -1, 336, -1, 337, -1, 14, + 10, -1, 13, 10, -1, 84, 10, -1, 87, 10, + -1, 107, 10, -1, 240, 10, -1, 241, 10, -1, + 15, 10, -1, 202, 10, -1, 203, 10, -1, 204, + 10, -1, 205, 10, -1, 206, 10, -1, 207, 10, + -1, 208, 10, -1, 209, 10, -1, 210, 10, -1, + 211, 10, -1, 17, 10, -1, 75, 10, -1, 16, + 10, -1, 88, 10, -1, 89, 10, -1, 39, 10, + -1, 68, 10, -1, 83, 10, -1, 19, 10, -1, + 20, 10, -1, 22, 10, -1, 23, 10, -1, 18, + 10, -1, 21, 10, -1, 24, 10, -1, 25, 10, + -1, 26, 10, -1, 106, 10, -1, 105, 10, -1, + 137, 10, -1, 27, 10, -1, 28, 10, -1, 135, + 10, -1, 271, 10, -1, 136, 10, -1, 138, 10, + -1, 139, 10, -1, 140, 10, -1, 144, 10, -1, + 285, 10, -1, 279, 10, -1, 294, 10, -1, 295, + 10, -1, 300, 10, -1, 296, 10, -1, 145, 10, + -1, 146, 10, -1, 147, 10, -1, 148, 10, -1, + 149, 10, -1, 150, 10, -1, 151, 10, -1, 239, + 10, -1, 85, 10, -1, 74, 10, -1, 112, 10, + -1, 132, 10, -1, 133, 10, -1, 292, 10, -1, + 289, 10, -1, 134, 10, -1, 29, 10, -1, 30, + 10, -1, 31, 10, -1, 32, 10, -1, 33, 10, + -1, 76, 10, -1, 90, 10, -1, 91, 10, -1, + 120, 10, -1, 62, 10, -1, 72, 10, -1, 63, + 10, -1, 237, 10, -1, 242, 10, -1, 113, 10, + -1, 56, 10, -1, 57, 10, -1, 236, 10, -1, + 58, 10, -1, 59, 10, -1, 311, 10, -1, 124, + 10, -1, 128, 10, -1, 129, 10, -1, 189, 10, + -1, 217, 10, -1, 190, 10, -1, 293, 10, -1, + 125, 10, -1, 69, 10, -1, 34, 10, -1, 35, + 10, -1, 36, 10, -1, 109, 10, -1, 156, 10, + -1, 157, 10, -1, 158, 10, -1, 159, 10, -1, + 37, 10, -1, 38, 10, -1, 40, 10, -1, 41, + 10, -1, 43, 10, -1, 44, 10, -1, 42, 10, + -1, 160, 10, -1, 161, 10, -1, 49, 10, -1, + 50, 10, -1, 51, 10, -1, 60, 10, -1, 79, + 10, -1, 130, 10, -1, 93, 10, -1, 188, 10, + -1, 86, 10, -1, 212, 10, -1, 94, 10, -1, + 95, 10, -1, 126, 10, -1, 127, 10, -1, 290, + 10, -1, 111, 10, -1, 55, 10, -1, 77, 10, + -1, 80, 10, 10, -1, 61, 10, -1, 64, 10, + -1, 116, 10, -1, 117, 10, -1, 78, 10, -1, + 213, 10, -1, 118, 10, -1, 65, 10, -1, 66, + 10, -1, 67, 10, -1, 238, 10, -1, 131, 10, + -1, 227, 10, -1, 228, 10, -1, 229, 10, -1, + 230, 10, -1, 231, 10, -1, 232, 10, -1, 233, + 10, -1, 234, 10, -1, 119, 10, -1, 73, 10, + -1, 312, 10, -1, 122, 10, -1, 123, 10, -1, + 121, 10, -1, 214, 10, -1, 70, 10, -1, 71, + 10, -1, 92, 10, -1, 81, 10, 10, -1, 82, + 10, -1, 108, 10, -1, 153, 10, -1, 154, 10, + -1, 291, 10, -1, 155, 10, -1, 162, 10, -1, + 163, 10, -1, 164, 10, -1, 218, 10, -1, 219, + 10, 10, -1, 220, 10, 10, -1, 222, 10, 10, + 10, -1, 223, 10, 10, 10, -1, 221, 10, 10, + 10, -1, 225, 10, 10, -1, 185, 10, 10, -1, + 192, 10, -1, 195, 10, -1, 194, 10, -1, 197, + 10, -1, 193, 10, -1, 196, 10, -1, 198, 10, + 10, -1, 199, 10, 10, -1, 200, 10, -1, 201, + 10, -1, 280, 10, -1, 283, 10, -1, 282, 10, + -1, 215, 10, -1, 216, 10, -1, 254, 10, -1, + 255, 10, -1, 256, 10, -1, 257, 10, -1, 258, + 10, -1, 260, 10, -1, 259, 10, -1, 261, 10, + -1, 262, 10, -1, 263, 10, -1, 309, 10, 10, + -1, 310, 10, -1, 45, 10, -1, 47, 10, -1, + 48, 10, -1, 152, 10, -1, 288, 10, -1, 142, + 10, -1, 110, 10, -1, 45, 10, -1, 53, 10, + -1, 54, 10, -1, 141, 10, -1, 287, 10, -1, + 143, 10, -1, 45, 10, -1, 274, 10, -1, 275, + 10, -1, 276, 10, -1, 284, 10, -1, 313, 10, + -1, 277, 10, -1, 272, 10, -1, 278, 10, -1, + 45, 10, -1, 81, 10, 10, -1, 186, 10, 10, + -1, 187, 10, 10, -1, 82, 10, -1, 108, 10, + -1, 226, 10, -1, 96, -1, 581, 582, -1, -1, + 583, -1, 585, -1, 584, -1, 587, -1, 588, -1, + 589, -1, 590, -1, 586, -1, 97, 10, -1, 99, + 10, -1, 98, 10, -1, 104, 10, -1, 100, 10, + -1, 101, 10, -1, 102, 10, -1, 103, 10, -1, + 165, -1, 592, 593, -1, -1, 594, -1, 596, -1, + 595, -1, 597, -1, 598, -1, 599, -1, 600, -1, + 601, -1, 602, -1, 603, -1, 604, -1, 605, -1, + 606, -1, 607, -1, 608, -1, 609, -1, 610, -1, + 611, -1, 612, -1, 166, 10, -1, 176, 10, -1, + 167, 10, -1, 168, 10, -1, 169, 10, -1, 170, + 10, -1, 171, 10, -1, 172, 10, -1, 173, 10, + -1, 174, 10, -1, 175, 10, -1, 177, 10, -1, + 178, 10, -1, 179, 10, -1, 180, 10, -1, 181, + 10, -1, 182, 10, -1, 183, 10, -1, 184, 10, + -1, 114, -1, 614, 615, -1, -1, 616, -1, 115, + 10, -1, 307, -1, 618, 619, -1, -1, 620, -1, + 308, 10, -1, 191, 10, -1, 235, 10, -1, 186, + 10, 10, -1, 187, 10, 10, -1, 243, -1, 626, + 627, -1, -1, 628, -1, 629, -1, 630, -1, 633, + -1, 631, -1, 632, -1, 634, -1, 635, -1, 636, + -1, 637, -1, 244, 10, -1, 245, 10, -1, 246, + 10, -1, 248, 10, -1, 249, 10, -1, 247, 10, + -1, 250, 10, -1, 251, 10, -1, 252, 10, -1, + 253, 10, -1, 264, -1, 639, 640, -1, -1, 641, + -1, 642, -1, 643, -1, 644, -1, 645, -1, 646, + -1, 265, 10, -1, 266, 10, -1, 267, 10, -1, + 268, 10, -1, 269, 10, -1, 270, 10, -1, 286, + 10, 10, -1, 297, -1, 649, 650, -1, -1, 651, + -1, 652, -1, 298, 10, -1, 299, 10, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = { 0, 188, 188, 188, 189, 189, 190, 190, 191, 191, 191, 192, 192, 193, 193, 194, 194, 195, 197, 203, @@ -1865,69 +1327,62 @@ static const yytype_int16 yyrline[] = 289, 289, 289, 290, 290, 291, 292, 292, 293, 293, 294, 294, 295, 295, 296, 296, 296, 297, 297, 297, 298, 298, 298, 299, 299, 300, 300, 301, 301, 302, - 302, 303, 303, 304, 304, 305, 308, 320, 321, 322, - 322, 322, 322, 322, 323, 323, 325, 337, 338, 339, - 339, 339, 339, 340, 340, 342, 356, 357, 358, 358, - 358, 358, 359, 359, 359, 361, 379, 380, 381, 381, - 381, 381, 382, 382, 382, 383, 383, 386, 405, 422, - 430, 440, 448, 465, 466, 467, 467, 467, 467, 467, - 468, 468, 468, 469, 469, 471, 480, 489, 500, 509, - 518, 527, 538, 547, 559, 573, 588, 599, 616, 633, - 650, 667, 682, 697, 710, 725, 734, 743, 752, 761, - 770, 779, 788, 797, 806, 815, 824, 833, 842, 851, - 864, 875, 886, 895, 908, 917, 926, 935, 942, 949, - 958, 965, 974, 982, 989, 996, 1004, 1013, 1021, 1037, - 1045, 1053, 1061, 1069, 1077, 1086, 1095, 1109, 1118, 1127, - 1136, 1145, 1154, 1163, 1170, 1177, 1203, 1211, 1218, 1225, - 1232, 1239, 1247, 1255, 1263, 1270, 1281, 1292, 1299, 1308, - 1317, 1326, 1333, 1340, 1356, 1364, 1372, 1382, 1392, 1402, - 1416, 1424, 1437, 1448, 1456, 1469, 1478, 1487, 1496, 1505, - 1515, 1525, 1533, 1546, 1555, 1563, 1572, 1580, 1593, 1602, - 1612, 1619, 1629, 1639, 1649, 1659, 1669, 1679, 1689, 1699, - 1706, 1713, 1720, 1729, 1738, 1747, 1756, 1763, 1773, 1793, - 1800, 1818, 1831, 1844, 1853, 1862, 1871, 1880, 1890, 1900, - 1911, 1920, 1929, 1938, 1947, 1956, 1965, 1974, 1987, 2000, - 2009, 2016, 2025, 2034, 2043, 2052, 2061, 2069, 2082, 2090, - 2135, 2142, 2157, 2167, 2177, 2184, 2191, 2198, 2207, 2215, - 2229, 2250, 2271, 2283, 2295, 2307, 2316, 2337, 2347, 2356, - 2364, 2372, 2385, 2398, 2413, 2428, 2437, 2446, 2452, 2461, - 2470, 2480, 2490, 2500, 2509, 2519, 2528, 2541, 2554, 2566, - 2580, 2592, 2606, 2615, 2627, 2637, 2644, 2651, 2660, 2669, - 2679, 2689, 2699, 2706, 2713, 2722, 2731, 2741, 2751, 2758, - 2765, 2772, 2780, 2790, 2800, 2810, 2820, 2830, 2876, 2886, - 2894, 2902, 2917, 2926, 2931, 2932, 2933, 2933, 2933, 2934, - 2934, 2934, 2935, 2935, 2937, 2947, 2956, 2963, 2970, 2977, - 2984, 2991, 2998, 3003, 3004, 3005, 3005, 3005, 3006, 3006, - 3006, 3007, 3008, 3008, 3009, 3009, 3010, 3010, 3011, 3012, - 3013, 3014, 3015, 3016, 3018, 3027, 3037, 3044, 3051, 3060, - 3067, 3074, 3081, 3088, 3097, 3106, 3113, 3120, 3130, 3140, - 3150, 3160, 3170, 3180, 3185, 3186, 3187, 3189, 3195, 3200, - 3201, 3202, 3204, 3210, 3220, 3227, 3236, 3244, 3249, 3250, - 3252, 3252, 3252, 3253, 3253, 3254, 3255, 3256, 3257, 3258, - 3260, 3270, 3279, 3286, 3295, 3302, 3311, 3319, 3332, 3340, - 3353, 3358, 3359, 3360, 3360, 3361, 3361, 3361, 3362, 3364, - 3376, 3388, 3400, 3415, 3428, 3441, 3452, 3457, 3458, 3459, - 3459, 3461, 3476 + 302, 303, 303, 304, 304, 305, 305, 308, 320, 321, + 322, 322, 322, 322, 322, 323, 323, 325, 337, 338, + 339, 339, 339, 339, 340, 340, 342, 356, 357, 358, + 358, 358, 358, 359, 359, 359, 361, 379, 380, 381, + 381, 381, 381, 382, 382, 382, 383, 383, 386, 405, + 422, 430, 440, 448, 465, 466, 467, 467, 467, 467, + 467, 468, 468, 468, 469, 469, 471, 480, 489, 500, + 509, 518, 527, 538, 547, 559, 573, 588, 599, 616, + 633, 650, 667, 682, 697, 710, 725, 734, 743, 752, + 761, 770, 779, 788, 797, 806, 815, 824, 833, 842, + 851, 864, 875, 886, 897, 906, 919, 928, 937, 946, + 953, 960, 969, 976, 985, 993, 1000, 1007, 1015, 1024, + 1032, 1048, 1056, 1064, 1072, 1080, 1088, 1097, 1106, 1120, + 1129, 1138, 1147, 1156, 1165, 1174, 1181, 1188, 1214, 1222, + 1229, 1236, 1243, 1250, 1258, 1266, 1274, 1281, 1292, 1303, + 1310, 1319, 1328, 1337, 1344, 1351, 1367, 1375, 1383, 1393, + 1403, 1413, 1427, 1435, 1448, 1459, 1467, 1480, 1489, 1498, + 1507, 1516, 1526, 1536, 1544, 1557, 1566, 1574, 1583, 1591, + 1604, 1613, 1623, 1630, 1640, 1650, 1660, 1670, 1680, 1690, + 1700, 1710, 1717, 1724, 1731, 1740, 1749, 1758, 1767, 1774, + 1784, 1804, 1811, 1829, 1842, 1855, 1864, 1873, 1882, 1891, + 1901, 1911, 1922, 1931, 1940, 1949, 1958, 1967, 1976, 1985, + 1998, 2011, 2020, 2027, 2036, 2045, 2054, 2063, 2072, 2080, + 2093, 2101, 2146, 2153, 2168, 2178, 2188, 2195, 2202, 2209, + 2218, 2226, 2240, 2261, 2282, 2294, 2306, 2318, 2327, 2348, + 2358, 2367, 2375, 2383, 2396, 2409, 2424, 2439, 2448, 2457, + 2463, 2472, 2481, 2491, 2501, 2511, 2520, 2530, 2539, 2552, + 2565, 2577, 2591, 2603, 2617, 2626, 2638, 2648, 2655, 2662, + 2671, 2680, 2690, 2700, 2710, 2717, 2724, 2733, 2742, 2752, + 2762, 2769, 2776, 2783, 2791, 2801, 2811, 2821, 2831, 2841, + 2887, 2897, 2905, 2913, 2928, 2937, 2942, 2943, 2944, 2944, + 2944, 2945, 2945, 2945, 2946, 2946, 2948, 2958, 2967, 2974, + 2981, 2988, 2995, 3002, 3009, 3014, 3015, 3016, 3016, 3016, + 3017, 3017, 3017, 3018, 3019, 3019, 3020, 3020, 3021, 3021, + 3022, 3023, 3024, 3025, 3026, 3027, 3029, 3038, 3048, 3055, + 3062, 3071, 3078, 3085, 3092, 3099, 3108, 3117, 3124, 3131, + 3141, 3151, 3161, 3171, 3181, 3191, 3196, 3197, 3198, 3200, + 3206, 3211, 3212, 3213, 3215, 3221, 3231, 3238, 3247, 3255, + 3260, 3261, 3263, 3263, 3263, 3264, 3264, 3265, 3266, 3267, + 3268, 3269, 3271, 3281, 3290, 3297, 3306, 3313, 3322, 3330, + 3343, 3351, 3364, 3369, 3370, 3371, 3371, 3372, 3372, 3372, + 3373, 3375, 3387, 3399, 3411, 3426, 3439, 3452, 3463, 3468, + 3469, 3470, 3470, 3472, 3487 }; #endif -/** Accessing symbol of state STATE. */ -#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) - -#if YYDEBUG || 0 -/* The user-facing name of the symbol whose (internal) number is - YYSYMBOL. No bounds checking. */ -static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; - +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "\"end of file\"", "error", "\"invalid token\"", "SPACE", "LETTER", - "NEWLINE", "COMMENT", "COLON", "ANY", "ZONESTR", "STRING_ARG", - "VAR_FORCE_TOPLEVEL", "VAR_SERVER", "VAR_VERBOSITY", "VAR_NUM_THREADS", - "VAR_PORT", "VAR_OUTGOING_RANGE", "VAR_INTERFACE", "VAR_PREFER_IP4", - "VAR_DO_IP4", "VAR_DO_IP6", "VAR_PREFER_IP6", "VAR_DO_UDP", "VAR_DO_TCP", + "$end", "error", "$undefined", "SPACE", "LETTER", "NEWLINE", "COMMENT", + "COLON", "ANY", "ZONESTR", "STRING_ARG", "VAR_FORCE_TOPLEVEL", + "VAR_SERVER", "VAR_VERBOSITY", "VAR_NUM_THREADS", "VAR_PORT", + "VAR_OUTGOING_RANGE", "VAR_INTERFACE", "VAR_PREFER_IP4", "VAR_DO_IP4", + "VAR_DO_IP6", "VAR_PREFER_IP6", "VAR_DO_UDP", "VAR_DO_TCP", "VAR_TCP_MSS", "VAR_OUTGOING_TCP_MSS", "VAR_TCP_IDLE_TIMEOUT", "VAR_EDNS_TCP_KEEPALIVE", "VAR_EDNS_TCP_KEEPALIVE_TIMEOUT", "VAR_CHROOT", "VAR_USERNAME", "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE", @@ -1968,8 +1423,9 @@ static const char *const yytname[] = "VAR_SO_SNDBUF", "VAR_SO_REUSEPORT", "VAR_HARDEN_BELOW_NXDOMAIN", "VAR_IGNORE_CD_FLAG", "VAR_LOG_QUERIES", "VAR_LOG_REPLIES", "VAR_LOG_LOCAL_ACTIONS", "VAR_TCP_UPSTREAM", "VAR_SSL_UPSTREAM", - "VAR_SSL_SERVICE_KEY", "VAR_SSL_SERVICE_PEM", "VAR_SSL_PORT", - "VAR_FORWARD_FIRST", "VAR_STUB_SSL_UPSTREAM", "VAR_FORWARD_SSL_UPSTREAM", + "VAR_TCP_AUTH_QUERY_TIMEOUT", "VAR_SSL_SERVICE_KEY", + "VAR_SSL_SERVICE_PEM", "VAR_SSL_PORT", "VAR_FORWARD_FIRST", + "VAR_STUB_SSL_UPSTREAM", "VAR_FORWARD_SSL_UPSTREAM", "VAR_TLS_CERT_BUNDLE", "VAR_HTTPS_PORT", "VAR_HTTP_ENDPOINT", "VAR_HTTP_MAX_STREAMS", "VAR_HTTP_QUERY_BUFFER_SIZE", "VAR_HTTP_RESPONSE_BUFFER_SIZE", "VAR_HTTP_NODELAY", @@ -2062,60 +1518,61 @@ static const char *const yytname[] = "server_do_udp", "server_do_tcp", "server_prefer_ip4", "server_prefer_ip6", "server_tcp_mss", "server_outgoing_tcp_mss", "server_tcp_idle_timeout", "server_max_reuse_tcp_queries", - "server_tcp_reuse_timeout", "server_tcp_keepalive", - "server_tcp_keepalive_timeout", "server_tcp_upstream", - "server_udp_upstream_without_downstream", "server_ssl_upstream", - "server_ssl_service_key", "server_ssl_service_pem", "server_ssl_port", - "server_tls_cert_bundle", "server_tls_win_cert", - "server_tls_additional_port", "server_tls_ciphers", - "server_tls_ciphersuites", "server_tls_session_ticket_keys", - "server_tls_use_sni", "server_https_port", "server_http_endpoint", - "server_http_max_streams", "server_http_query_buffer_size", - "server_http_response_buffer_size", "server_http_nodelay", - "server_http_notls_downstream", "server_use_systemd", - "server_do_daemonize", "server_use_syslog", "server_log_time_ascii", - "server_log_queries", "server_log_replies", "server_log_tag_queryreply", - "server_log_servfail", "server_log_local_actions", "server_chroot", - "server_username", "server_directory", "server_logfile", - "server_pidfile", "server_root_hints", "server_dlv_anchor_file", - "server_dlv_anchor", "server_auto_trust_anchor_file", - "server_trust_anchor_file", "server_trusted_keys_file", - "server_trust_anchor", "server_trust_anchor_signaling", - "server_root_key_sentinel", "server_domain_insecure", - "server_hide_identity", "server_hide_version", "server_hide_trustanchor", - "server_identity", "server_version", "server_nsid", "server_so_rcvbuf", - "server_so_sndbuf", "server_so_reuseport", "server_ip_transparent", - "server_ip_freebind", "server_ip_dscp", "server_stream_wait_size", - "server_edns_buffer_size", "server_msg_buffer_size", - "server_msg_cache_size", "server_msg_cache_slabs", - "server_num_queries_per_thread", "server_jostle_timeout", - "server_delay_close", "server_udp_connect", "server_unblock_lan_zones", - "server_insecure_lan_zones", "server_rrset_cache_size", - "server_rrset_cache_slabs", "server_infra_host_ttl", - "server_infra_lame_ttl", "server_infra_cache_numhosts", - "server_infra_cache_lame_size", "server_infra_cache_slabs", - "server_infra_cache_min_rtt", "server_infra_keep_probing", - "server_target_fetch_policy", "server_harden_short_bufsize", - "server_harden_large_queries", "server_harden_glue", - "server_harden_dnssec_stripped", "server_harden_below_nxdomain", - "server_harden_referral_path", "server_harden_algo_downgrade", - "server_use_caps_for_id", "server_caps_whitelist", - "server_private_address", "server_private_domain", "server_prefetch", - "server_prefetch_key", "server_deny_any", - "server_unwanted_reply_threshold", "server_do_not_query_address", - "server_do_not_query_localhost", "server_access_control", - "server_module_conf", "server_val_override_date", - "server_val_sig_skew_min", "server_val_sig_skew_max", - "server_cache_max_ttl", "server_cache_max_negative_ttl", - "server_cache_min_ttl", "server_bogus_ttl", - "server_val_clean_additional", "server_val_permissive_mode", - "server_aggressive_nsec", "server_ignore_cd_flag", - "server_serve_expired", "server_serve_expired_ttl", - "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl", - "server_serve_expired_client_timeout", "server_serve_original_ttl", - "server_fake_dsa", "server_fake_sha1", "server_val_log_level", - "server_val_nsec3_keysize_iterations", "server_zonemd_permissive_mode", - "server_add_holddown", "server_del_holddown", "server_keep_missing", + "server_tcp_reuse_timeout", "server_tcp_auth_query_timeout", + "server_tcp_keepalive", "server_tcp_keepalive_timeout", + "server_tcp_upstream", "server_udp_upstream_without_downstream", + "server_ssl_upstream", "server_ssl_service_key", + "server_ssl_service_pem", "server_ssl_port", "server_tls_cert_bundle", + "server_tls_win_cert", "server_tls_additional_port", + "server_tls_ciphers", "server_tls_ciphersuites", + "server_tls_session_ticket_keys", "server_tls_use_sni", + "server_https_port", "server_http_endpoint", "server_http_max_streams", + "server_http_query_buffer_size", "server_http_response_buffer_size", + "server_http_nodelay", "server_http_notls_downstream", + "server_use_systemd", "server_do_daemonize", "server_use_syslog", + "server_log_time_ascii", "server_log_queries", "server_log_replies", + "server_log_tag_queryreply", "server_log_servfail", + "server_log_local_actions", "server_chroot", "server_username", + "server_directory", "server_logfile", "server_pidfile", + "server_root_hints", "server_dlv_anchor_file", "server_dlv_anchor", + "server_auto_trust_anchor_file", "server_trust_anchor_file", + "server_trusted_keys_file", "server_trust_anchor", + "server_trust_anchor_signaling", "server_root_key_sentinel", + "server_domain_insecure", "server_hide_identity", "server_hide_version", + "server_hide_trustanchor", "server_identity", "server_version", + "server_nsid", "server_so_rcvbuf", "server_so_sndbuf", + "server_so_reuseport", "server_ip_transparent", "server_ip_freebind", + "server_ip_dscp", "server_stream_wait_size", "server_edns_buffer_size", + "server_msg_buffer_size", "server_msg_cache_size", + "server_msg_cache_slabs", "server_num_queries_per_thread", + "server_jostle_timeout", "server_delay_close", "server_udp_connect", + "server_unblock_lan_zones", "server_insecure_lan_zones", + "server_rrset_cache_size", "server_rrset_cache_slabs", + "server_infra_host_ttl", "server_infra_lame_ttl", + "server_infra_cache_numhosts", "server_infra_cache_lame_size", + "server_infra_cache_slabs", "server_infra_cache_min_rtt", + "server_infra_keep_probing", "server_target_fetch_policy", + "server_harden_short_bufsize", "server_harden_large_queries", + "server_harden_glue", "server_harden_dnssec_stripped", + "server_harden_below_nxdomain", "server_harden_referral_path", + "server_harden_algo_downgrade", "server_use_caps_for_id", + "server_caps_whitelist", "server_private_address", + "server_private_domain", "server_prefetch", "server_prefetch_key", + "server_deny_any", "server_unwanted_reply_threshold", + "server_do_not_query_address", "server_do_not_query_localhost", + "server_access_control", "server_module_conf", + "server_val_override_date", "server_val_sig_skew_min", + "server_val_sig_skew_max", "server_cache_max_ttl", + "server_cache_max_negative_ttl", "server_cache_min_ttl", + "server_bogus_ttl", "server_val_clean_additional", + "server_val_permissive_mode", "server_aggressive_nsec", + "server_ignore_cd_flag", "server_serve_expired", + "server_serve_expired_ttl", "server_serve_expired_ttl_reset", + "server_serve_expired_reply_ttl", "server_serve_expired_client_timeout", + "server_serve_original_ttl", "server_fake_dsa", "server_fake_sha1", + "server_val_log_level", "server_val_nsec3_keysize_iterations", + "server_zonemd_permissive_mode", "server_add_holddown", + "server_del_holddown", "server_keep_missing", "server_permit_small_holddown", "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", @@ -2174,20 +1631,14 @@ static const char *const yytname[] = "cachedb_backend_name", "cachedb_secret_seed", "redis_server_host", "redis_server_port", "redis_timeout", "redis_expire_records", "server_tcp_connection_limit", "ipsetstart", "contents_ipset", - "content_ipset", "ipset_name_v4", "ipset_name_v6", YY_NULLPTR + "content_ipset", "ipset_name_v4", "ipset_name_v6", 0 }; - -static const char * -yysymbol_name (yysymbol_kind_t yysymbol) -{ - return yytname[yysymbol]; -} #endif -#ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ -static const yytype_int16 yytoknum[] = +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, @@ -2220,132 +1671,161 @@ static const yytype_int16 yytoknum[] = 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, - 565, 566, 567 + 565, 566, 567, 568 }; -#endif - -#define YYPACT_NINF (-298) - -#define yypact_value_is_default(Yyn) \ - ((Yyn) == YYPACT_NINF) - -#define YYTABLE_NINF (-1) +# endif -#define yytable_value_is_error(Yyn) \ - 0 +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint16 yyr1[] = +{ + 0, 314, 315, 315, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 317, 318, + 319, 319, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 321, 322, 322, + 323, 323, 323, 323, 323, 323, 323, 324, 325, 325, + 326, 326, 326, 326, 326, 326, 327, 328, 328, 329, + 329, 329, 329, 329, 329, 329, 330, 331, 331, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 333, 334, + 335, 336, 337, 338, 339, 339, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, + 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, + 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, + 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, + 575, 576, 577, 578, 579, 580, 581, 581, 582, 582, + 582, 582, 582, 582, 582, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 592, 593, 593, 593, + 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, + 593, 593, 593, 593, 593, 593, 594, 595, 596, 597, + 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, + 608, 609, 610, 611, 612, 613, 614, 614, 615, 616, + 617, 618, 618, 619, 620, 621, 622, 623, 624, 625, + 626, 626, 627, 627, 627, 627, 627, 627, 627, 627, + 627, 627, 628, 629, 630, 631, 632, 633, 634, 635, + 636, 637, 638, 639, 639, 640, 640, 640, 640, 640, + 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, + 649, 650, 650, 651, 652 +}; - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -static const yytype_int16 yypact[] = +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = { - -298, 0, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, 294, -43, -38, -42, -44, -28, -29, -147, - -109, -297, -190, -188, -289, 3, 4, 27, 28, 31, - 32, 33, 34, 35, 37, 38, 39, 40, 41, 53, - 54, 55, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 87, 89, 90, 91, - 93, 95, 96, 97, 99, 100, 101, 102, 103, 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, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 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, 214, 215, 216, 218, 224, 225, 226, - 227, 228, 230, 231, 233, 239, 240, 241, 242, 243, - 244, 246, 247, 248, 249, 250, 251, 252, 254, 255, - 256, 257, 259, 260, 261, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 287, 288, 289, 291, 292, 293, 295, - 329, 330, 331, 332, 336, 337, 338, 380, 381, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, 382, 383, 384, 385, 386, 387, - 388, -298, -298, -298, -298, -298, -298, -298, -298, 394, - 398, 399, 424, 425, 426, -298, -298, -298, -298, -298, - -298, -298, 435, 448, 449, 450, 451, 452, 453, -298, - -298, -298, -298, -298, -298, -298, -298, 454, 455, 456, - 457, 458, 459, 460, 461, 462, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, 463, 464, 465, 466, - 467, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, 507, 509, 526, 527, 528, 529, 530, 531, - -298, -298, -298, -298, -298, -298, -298, -298, -298, 532, - 533, 534, 535, 536, 547, 548, 549, 550, 551, 552, - 553, 555, 556, 557, 558, 559, 560, 561, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, 564, -298, - -298, 567, -298, -298, 570, 571, 580, 581, 582, 584, - 585, 586, 587, 588, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, 589, 590, 591, 596, 597, - 598, -298, -298, -298, -298, -298, -298, -298, 599, 600, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, 601, 602, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, 603, 604, 605, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, 606, 607, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, 608, 609, 610, 611, 612, - 613, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, 614, -298, -298, -298, -298, -298, -298, - -298, -298, -298, 615, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, 616, -298, -298, 617, 618, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, 619, 620, 621, - -298, -298, -298, -298, -298, -298, -298, -298, -298 + 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 1, 1, 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, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, + 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, + 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, + 3, 3, 2, 2, 2, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 1, 2, 0, 1, 2, + 1, 2, 0, 1, 2, 2, 2, 3, 3, 1, + 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 3, 1, 2, + 0, 1, 1, 2, 2 }; - /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ -static const yytype_int16 yydefact[] = +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint16 yydefact[] = { - 2, 0, 1, 18, 19, 236, 246, 533, 593, 552, - 255, 607, 630, 265, 646, 282, 598, 3, 17, 21, - 238, 248, 257, 267, 284, 535, 554, 595, 600, 609, - 632, 648, 4, 5, 6, 10, 14, 15, 8, 9, + 2, 0, 1, 18, 19, 237, 247, 535, 595, 554, + 256, 609, 632, 266, 648, 283, 600, 3, 17, 21, + 239, 249, 258, 268, 285, 537, 556, 597, 602, 611, + 634, 650, 4, 5, 6, 10, 14, 15, 8, 9, 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2367,312 +1847,420 @@ static const yytype_int16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, - 22, 23, 86, 89, 98, 200, 201, 24, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 37, 77, - 25, 90, 91, 48, 70, 85, 26, 27, 30, 31, - 28, 29, 32, 33, 34, 234, 235, 35, 36, 121, - 212, 122, 124, 125, 126, 214, 219, 215, 226, 227, - 228, 229, 127, 128, 129, 130, 131, 132, 133, 196, - 87, 76, 102, 119, 120, 224, 221, 123, 38, 39, - 40, 41, 42, 78, 92, 93, 108, 64, 74, 65, - 204, 205, 103, 58, 59, 203, 60, 61, 232, 112, - 116, 137, 147, 174, 150, 225, 113, 71, 43, 44, - 45, 100, 138, 139, 140, 141, 46, 47, 49, 50, - 52, 53, 51, 145, 151, 54, 55, 56, 62, 81, - 117, 95, 146, 88, 170, 96, 97, 114, 115, 222, - 101, 57, 79, 82, 63, 66, 104, 105, 80, 171, - 106, 67, 68, 69, 213, 118, 188, 189, 190, 191, - 192, 193, 194, 202, 107, 75, 233, 109, 110, 111, - 172, 72, 73, 94, 83, 84, 99, 134, 135, 223, - 136, 142, 143, 144, 175, 176, 178, 180, 181, 179, - 182, 197, 148, 149, 154, 155, 152, 153, 156, 157, - 159, 158, 216, 218, 217, 173, 183, 184, 185, 186, - 187, 206, 208, 207, 209, 210, 211, 230, 231, 177, - 195, 198, 199, 220, 0, 0, 0, 0, 0, 0, - 0, 237, 239, 240, 241, 243, 244, 245, 242, 0, - 0, 0, 0, 0, 0, 247, 249, 250, 251, 252, - 253, 254, 0, 0, 0, 0, 0, 0, 0, 256, - 258, 259, 262, 263, 260, 264, 261, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 266, 268, 269, 270, - 271, 275, 276, 272, 273, 274, 0, 0, 0, 0, - 0, 287, 291, 292, 293, 294, 283, 285, 286, 288, - 289, 290, 0, 0, 0, 0, 0, 0, 0, 0, - 534, 536, 538, 537, 543, 539, 540, 541, 542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 553, 555, - 557, 556, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 0, 594, - 596, 0, 599, 601, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 608, 610, 611, 612, 614, 615, - 613, 616, 617, 618, 619, 0, 0, 0, 0, 0, - 0, 631, 633, 634, 635, 636, 637, 638, 0, 0, - 647, 649, 650, 296, 295, 302, 315, 313, 325, 321, - 322, 326, 323, 324, 327, 328, 329, 332, 333, 363, - 364, 365, 366, 367, 393, 394, 395, 401, 402, 318, - 403, 404, 407, 405, 406, 410, 411, 412, 426, 378, - 379, 381, 382, 413, 429, 372, 374, 430, 436, 437, - 438, 319, 392, 456, 457, 373, 450, 356, 314, 368, - 427, 433, 414, 0, 0, 460, 320, 297, 355, 418, - 298, 316, 317, 369, 370, 458, 416, 420, 421, 331, - 330, 299, 461, 396, 425, 357, 377, 431, 432, 435, - 449, 371, 454, 452, 453, 384, 391, 422, 423, 385, - 386, 415, 440, 358, 359, 362, 334, 336, 337, 338, - 339, 340, 347, 348, 349, 350, 351, 352, 353, 462, - 463, 465, 397, 398, 399, 400, 408, 409, 466, 467, - 468, 0, 0, 0, 417, 387, 389, 603, 477, 481, - 479, 478, 482, 480, 0, 0, 485, 486, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 419, 434, - 455, 490, 491, 388, 469, 0, 0, 0, 0, 0, - 0, 441, 442, 443, 444, 445, 446, 447, 448, 604, - 380, 375, 439, 354, 300, 301, 376, 492, 493, 494, - 495, 496, 498, 497, 499, 500, 501, 335, 342, 487, - 489, 488, 341, 0, 361, 424, 464, 360, 390, 343, - 344, 346, 345, 0, 503, 383, 451, 504, 505, 506, - 510, 509, 507, 508, 511, 512, 513, 514, 516, 515, - 526, 0, 530, 531, 0, 0, 532, 517, 524, 518, - 519, 520, 523, 525, 521, 522, 277, 278, 279, 280, - 281, 544, 546, 545, 548, 549, 550, 551, 547, 574, - 576, 577, 578, 579, 580, 581, 582, 583, 584, 575, - 585, 586, 587, 588, 589, 590, 591, 592, 597, 602, - 620, 621, 622, 625, 623, 624, 626, 627, 628, 629, - 639, 640, 641, 642, 643, 644, 651, 652, 428, 459, - 476, 605, 606, 483, 484, 470, 471, 0, 0, 0, - 475, 645, 502, 527, 528, 529, 474, 472, 473 -}; - - /* YYPGOTO[NTERM-NUM]. */ -static const yytype_int16 yypgoto[] = -{ - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, 267, - 595, 622, 623, 624, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298 + 20, 22, 23, 86, 89, 98, 200, 201, 24, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 37, + 77, 25, 90, 91, 48, 70, 85, 26, 27, 30, + 31, 28, 29, 32, 33, 34, 234, 235, 236, 35, + 36, 121, 212, 122, 124, 125, 126, 214, 219, 215, + 226, 227, 228, 229, 127, 128, 129, 130, 131, 132, + 133, 196, 87, 76, 102, 119, 120, 224, 221, 123, + 38, 39, 40, 41, 42, 78, 92, 93, 108, 64, + 74, 65, 204, 205, 103, 58, 59, 203, 60, 61, + 232, 112, 116, 137, 147, 174, 150, 225, 113, 71, + 43, 44, 45, 100, 138, 139, 140, 141, 46, 47, + 49, 50, 52, 53, 51, 145, 151, 54, 55, 56, + 62, 81, 117, 95, 146, 88, 170, 96, 97, 114, + 115, 222, 101, 57, 79, 82, 63, 66, 104, 105, + 80, 171, 106, 67, 68, 69, 213, 118, 188, 189, + 190, 191, 192, 193, 194, 202, 107, 75, 233, 109, + 110, 111, 172, 72, 73, 94, 83, 84, 99, 134, + 135, 223, 136, 142, 143, 144, 175, 176, 178, 180, + 181, 179, 182, 197, 148, 149, 154, 155, 152, 153, + 156, 157, 159, 158, 216, 218, 217, 173, 183, 184, + 185, 186, 187, 206, 208, 207, 209, 210, 211, 230, + 231, 177, 195, 198, 199, 220, 0, 0, 0, 0, + 0, 0, 0, 238, 240, 241, 242, 244, 245, 246, + 243, 0, 0, 0, 0, 0, 0, 248, 250, 251, + 252, 253, 254, 255, 0, 0, 0, 0, 0, 0, + 0, 257, 259, 260, 263, 264, 261, 265, 262, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 267, 269, + 270, 271, 272, 276, 277, 273, 274, 275, 0, 0, + 0, 0, 0, 288, 292, 293, 294, 295, 284, 286, + 287, 289, 290, 291, 0, 0, 0, 0, 0, 0, + 0, 0, 536, 538, 540, 539, 545, 541, 542, 543, + 544, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 555, 557, 559, 558, 560, 561, 562, 563, 564, 565, + 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, + 0, 596, 598, 0, 601, 603, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 610, 612, 613, 614, + 616, 617, 615, 618, 619, 620, 621, 0, 0, 0, + 0, 0, 0, 633, 635, 636, 637, 638, 639, 640, + 0, 0, 649, 651, 652, 297, 296, 303, 316, 314, + 326, 322, 323, 327, 324, 325, 328, 329, 330, 334, + 335, 365, 366, 367, 368, 369, 395, 396, 397, 403, + 404, 319, 405, 406, 409, 407, 408, 412, 413, 414, + 428, 380, 381, 383, 384, 415, 431, 374, 376, 432, + 438, 439, 440, 320, 394, 458, 459, 375, 452, 358, + 315, 370, 429, 435, 416, 0, 0, 462, 321, 298, + 357, 420, 299, 317, 318, 371, 372, 460, 418, 422, + 423, 332, 331, 300, 463, 398, 427, 359, 379, 433, + 434, 437, 451, 373, 456, 454, 455, 386, 393, 424, + 425, 387, 388, 417, 442, 360, 361, 364, 336, 338, + 333, 339, 340, 341, 342, 349, 350, 351, 352, 353, + 354, 355, 464, 465, 467, 399, 400, 401, 402, 410, + 411, 468, 469, 470, 0, 0, 0, 419, 389, 391, + 605, 479, 483, 481, 480, 484, 482, 0, 0, 487, + 488, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 421, 436, 457, 492, 493, 390, 471, 0, 0, + 0, 0, 0, 0, 443, 444, 445, 446, 447, 448, + 449, 450, 606, 382, 377, 441, 356, 301, 302, 378, + 494, 495, 496, 497, 498, 500, 499, 501, 502, 503, + 337, 344, 489, 491, 490, 343, 0, 363, 426, 466, + 362, 392, 345, 346, 348, 347, 0, 505, 385, 453, + 506, 507, 508, 512, 511, 509, 510, 513, 514, 515, + 516, 518, 517, 528, 0, 532, 533, 0, 0, 534, + 519, 526, 520, 521, 522, 525, 527, 523, 524, 278, + 279, 280, 281, 282, 546, 548, 547, 550, 551, 552, + 553, 549, 576, 578, 579, 580, 581, 582, 583, 584, + 585, 586, 577, 587, 588, 589, 590, 591, 592, 593, + 594, 599, 604, 622, 623, 624, 627, 625, 626, 628, + 629, 630, 631, 641, 642, 643, 644, 645, 646, 653, + 654, 430, 461, 478, 607, 608, 485, 486, 472, 473, + 0, 0, 0, 477, 647, 504, 529, 530, 531, 476, + 474, 475 }; - /* YYDEFGOTO[NTERM-NUM]. */ +/* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 17, 18, 19, 32, 259, 20, 33, 481, - 21, 34, 495, 22, 35, 509, 23, 36, 526, 541, - 542, 543, 544, 545, 24, 37, 546, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 482, 483, 484, 485, - 486, 487, 488, 496, 497, 498, 499, 500, 501, 527, - 528, 529, 530, 531, 532, 533, 534, 535, 510, 511, - 512, 513, 514, 515, 516, 25, 38, 560, 561, 562, - 563, 564, 565, 566, 567, 568, 26, 39, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, - 600, 601, 602, 603, 604, 605, 606, 607, 27, 40, - 609, 610, 28, 41, 612, 613, 469, 470, 471, 472, - 29, 42, 624, 625, 626, 627, 628, 629, 630, 631, - 632, 633, 634, 30, 43, 641, 642, 643, 644, 645, - 646, 647, 473, 31, 44, 650, 651, 652 + -1, 1, 17, 18, 19, 32, 260, 20, 33, 483, + 21, 34, 497, 22, 35, 511, 23, 36, 528, 543, + 544, 545, 546, 547, 24, 37, 548, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 484, 485, 486, + 487, 488, 489, 490, 498, 499, 500, 501, 502, 503, + 529, 530, 531, 532, 533, 534, 535, 536, 537, 512, + 513, 514, 515, 516, 517, 518, 25, 38, 562, 563, + 564, 565, 566, 567, 568, 569, 570, 26, 39, 590, + 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 601, 602, 603, 604, 605, 606, 607, 608, 609, 27, + 40, 611, 612, 28, 41, 614, 615, 471, 472, 473, + 474, 29, 42, 626, 627, 628, 629, 630, 631, 632, + 633, 634, 635, 636, 30, 43, 643, 644, 645, 646, + 647, 648, 649, 475, 31, 44, 652, 653, 654 }; - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_int16 yytable[] = +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -299 +static const yytype_int16 yypact[] = { - 2, 517, 474, 502, 475, 476, 608, 489, 648, 649, - 611, 3, 4, 653, 654, 490, 491, 517, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, - 581, 582, 583, 584, 585, 586, 587, 655, 656, 503, - 504, 657, 658, 659, 660, 661, 5, 662, 663, 664, - 665, 666, 6, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 667, 668, 669, 505, 477, 552, 553, - 554, 555, 556, 557, 558, 559, 635, 636, 637, 638, - 639, 640, 670, 671, 672, 673, 674, 675, 676, 677, - 678, 679, 680, 681, 682, 683, 7, 684, 478, 685, - 686, 687, 492, 688, 493, 689, 690, 691, 479, 692, - 693, 694, 695, 696, 8, 697, 698, 699, 700, 701, - 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, - 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, - 722, 723, 724, 506, 507, 725, 726, 727, 728, 729, - 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, - 740, 741, 742, 743, 9, 744, 745, 746, 747, 748, - 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, - 759, 760, 761, 508, 762, 763, 764, 765, 766, 767, - 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, - 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, - 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, - 798, 799, 800, 10, 801, 802, 803, 518, 804, 519, - 520, 521, 522, 523, 805, 806, 807, 808, 809, 524, - 810, 811, 11, 812, 480, 519, 520, 521, 494, 813, - 814, 815, 816, 817, 818, 524, 819, 820, 821, 822, - 823, 824, 825, 12, 826, 827, 828, 829, 525, 830, - 831, 832, 13, 536, 537, 538, 539, 540, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, - 845, 846, 847, 848, 849, 850, 14, 851, 852, 853, - 15, 854, 855, 856, 547, 857, 16, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 858, - 859, 860, 861, 77, 78, 79, 862, 863, 864, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 865, 866, 867, 868, 869, 870, 871, 872, 873, 121, - 122, 123, 124, 125, 874, 126, 127, 128, 875, 876, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 877, 878, 879, 153, 154, 155, - 156, 157, 158, 159, 160, 880, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 881, 882, - 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, - 893, 894, 895, 896, 897, 898, 899, 900, 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, 901, 212, 902, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 903, 904, 905, 906, - 907, 908, 909, 910, 911, 912, 913, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 914, 915, 916, - 917, 918, 919, 920, 239, 921, 922, 923, 924, 925, - 926, 927, 240, 241, 928, 242, 243, 929, 244, 245, - 930, 931, 246, 247, 248, 249, 250, 251, 252, 253, - 932, 933, 934, 254, 935, 936, 937, 938, 939, 940, - 941, 942, 255, 256, 257, 258, 943, 944, 945, 946, - 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, - 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, - 967, 968, 548, 0, 0, 0, 0, 0, 0, 0, + -299, 0, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, 295, -43, -38, -42, -44, -28, -29, -148, + -109, -298, -191, -189, -290, 3, 4, 27, 28, 31, + 32, 33, 34, 35, 37, 38, 39, 40, 41, 53, + 54, 55, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 87, 88, 90, 91, + 92, 94, 96, 97, 98, 100, 101, 102, 103, 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, 133, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 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, 215, 216, 217, 219, 225, 226, + 227, 228, 229, 231, 232, 234, 240, 241, 242, 243, + 244, 245, 247, 248, 249, 250, 251, 252, 253, 255, + 256, 257, 258, 260, 261, 262, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 288, 289, 290, 292, 293, 294, + 296, 330, 331, 332, 333, 337, 338, 339, 381, 382, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, 383, 384, 385, 386, + 387, 388, 389, -299, -299, -299, -299, -299, -299, -299, + -299, 395, 399, 400, 426, 427, 428, -299, -299, -299, + -299, -299, -299, -299, 437, 450, 451, 452, 453, 454, + 455, -299, -299, -299, -299, -299, -299, -299, -299, 456, + 457, 458, 459, 460, 461, 462, 463, 464, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, 465, 466, + 467, 468, 469, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, 509, 511, 528, 529, 530, 531, + 532, 533, -299, -299, -299, -299, -299, -299, -299, -299, + -299, 534, 535, 536, 537, 538, 549, 550, 551, 552, + 553, 554, 555, 557, 558, 559, 560, 561, 562, 563, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + 566, -299, -299, 569, -299, -299, 572, 573, 582, 583, + 584, 586, 587, 588, 589, 590, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, 591, 592, 593, + 598, 599, 600, -299, -299, -299, -299, -299, -299, -299, + 601, 602, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, 603, 604, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, 605, 606, 607, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, 608, 609, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, 610, 611, + 612, 613, 614, 615, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, 616, -299, -299, -299, + -299, -299, -299, -299, -299, -299, 617, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, 618, -299, -299, 619, 620, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + 621, 622, 623, -299, -299, -299, -299, -299, -299, -299, + -299, -299 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + 268, 597, 624, 625, 626, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -1 +static const yytype_uint16 yytable[] = +{ + 2, 519, 476, 504, 477, 478, 610, 491, 650, 651, + 613, 3, 4, 655, 656, 492, 493, 519, 571, 572, + 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, + 583, 584, 585, 586, 587, 588, 589, 657, 658, 505, + 506, 659, 660, 661, 662, 663, 5, 664, 665, 666, + 667, 668, 6, 616, 617, 618, 619, 620, 621, 622, + 623, 624, 625, 669, 670, 671, 507, 479, 554, 555, + 556, 557, 558, 559, 560, 561, 637, 638, 639, 640, + 641, 642, 672, 673, 674, 675, 676, 677, 678, 679, + 680, 681, 682, 683, 684, 685, 7, 686, 687, 480, + 688, 689, 690, 494, 691, 495, 692, 693, 694, 481, + 695, 696, 697, 698, 8, 699, 700, 701, 702, 703, + 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, + 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, + 724, 725, 726, 727, 508, 509, 728, 729, 730, 731, + 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, + 742, 743, 744, 745, 746, 9, 747, 748, 749, 750, + 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, + 761, 762, 763, 764, 510, 765, 766, 767, 768, 769, + 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, + 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, + 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, + 800, 801, 802, 803, 10, 804, 805, 806, 520, 807, + 521, 522, 523, 524, 525, 808, 809, 810, 811, 812, + 526, 813, 814, 11, 815, 482, 521, 522, 523, 496, + 816, 817, 818, 819, 820, 821, 526, 822, 823, 824, + 825, 826, 827, 828, 12, 829, 830, 831, 832, 527, + 833, 834, 835, 13, 538, 539, 540, 541, 542, 836, + 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, + 847, 848, 849, 850, 851, 852, 853, 14, 854, 855, + 856, 15, 857, 858, 859, 549, 860, 16, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 861, 862, 863, 864, 77, 78, 79, 865, 866, 867, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 868, 869, 870, 871, 872, 873, 874, 875, 876, + 121, 122, 123, 124, 125, 877, 126, 127, 128, 878, + 879, 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, 880, 881, 882, 154, + 155, 156, 157, 158, 159, 160, 161, 883, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, + 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, + 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, 904, + 213, 905, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 906, 907, + 908, 909, 910, 911, 912, 913, 914, 915, 916, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 917, + 918, 919, 920, 921, 922, 923, 240, 924, 925, 926, + 927, 928, 929, 930, 241, 242, 931, 243, 244, 932, + 245, 246, 933, 934, 247, 248, 249, 250, 251, 252, + 253, 254, 935, 936, 937, 255, 938, 939, 940, 941, + 942, 943, 944, 945, 256, 257, 258, 259, 946, 947, + 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, + 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, + 968, 969, 970, 971, 550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 549, - 550, 551 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 551, 552, 553 }; static const yytype_int16 yycheck[] = { - 0, 45, 45, 45, 47, 48, 115, 45, 297, 298, - 307, 11, 12, 10, 10, 53, 54, 45, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 10, 10, 81, + 0, 45, 45, 45, 47, 48, 115, 45, 298, 299, + 308, 11, 12, 10, 10, 53, 54, 45, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 10, 10, 81, 82, 10, 10, 10, 10, 10, 46, 10, 10, 10, - 10, 10, 52, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 10, 10, 10, 108, 110, 97, 98, - 99, 100, 101, 102, 103, 104, 264, 265, 266, 267, - 268, 269, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 96, 10, 141, 10, - 10, 10, 140, 10, 142, 10, 10, 10, 151, 10, + 10, 10, 52, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 10, 10, 10, 108, 110, 97, 98, + 99, 100, 101, 102, 103, 104, 265, 266, 267, 268, + 269, 270, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 96, 10, 10, 142, + 10, 10, 10, 141, 10, 143, 10, 10, 10, 152, 10, 10, 10, 10, 114, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 185, 186, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 186, 187, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 164, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 165, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 225, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 226, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 223, 10, 10, 10, 271, 10, 273, - 274, 275, 276, 277, 10, 10, 10, 10, 10, 283, - 10, 10, 242, 10, 287, 273, 274, 275, 286, 10, - 10, 10, 10, 10, 10, 283, 10, 10, 10, 10, - 10, 10, 10, 263, 10, 10, 10, 10, 312, 10, - 10, 10, 272, 301, 302, 303, 304, 305, 10, 10, + 10, 10, 10, 10, 224, 10, 10, 10, 272, 10, + 274, 275, 276, 277, 278, 10, 10, 10, 10, 10, + 284, 10, 10, 243, 10, 288, 274, 275, 276, 287, + 10, 10, 10, 10, 10, 10, 284, 10, 10, 10, + 10, 10, 10, 10, 264, 10, 10, 10, 10, 313, + 10, 10, 10, 273, 302, 303, 304, 305, 306, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 297, 10, 10, + 10, 301, 10, 10, 10, 37, 10, 307, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 10, 10, 10, 10, 49, 50, 51, 10, 10, 10, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 105, 106, 107, 108, 109, 10, 111, 112, 113, 10, + 10, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 10, 10, 10, 144, + 145, 146, 147, 148, 149, 150, 151, 10, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 296, 10, 10, 10, - 300, 10, 10, 10, 37, 10, 306, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 10, - 10, 10, 10, 49, 50, 51, 10, 10, 10, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 105, - 106, 107, 108, 109, 10, 111, 112, 113, 10, 10, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 10, 10, 10, 143, 144, 145, - 146, 147, 148, 149, 150, 10, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 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, 10, 224, 10, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 10, 10, 10, - 10, 10, 10, 10, 270, 10, 10, 10, 10, 10, - 10, 10, 278, 279, 10, 281, 282, 10, 284, 285, - 10, 10, 288, 289, 290, 291, 292, 293, 294, 295, - 10, 10, 10, 299, 10, 10, 10, 10, 10, 10, - 10, 10, 308, 309, 310, 311, 10, 10, 10, 10, + 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, 10, + 225, 10, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 10, + 10, 10, 10, 10, 10, 10, 271, 10, 10, 10, + 10, 10, 10, 10, 279, 280, 10, 282, 283, 10, + 285, 286, 10, 10, 289, 290, 291, 292, 293, 294, + 295, 296, 10, 10, 10, 300, 10, 10, 10, 10, + 10, 10, 10, 10, 309, 310, 311, 312, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 37, -1, -1, -1, -1, -1, -1, -1, + 10, 10, 10, 10, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, - 37, 37 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 37, 37, 37 }; - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_int16 yystos[] = +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint16 yystos[] = { - 0, 314, 0, 11, 12, 46, 52, 96, 114, 164, - 223, 242, 263, 272, 296, 300, 306, 315, 316, 317, - 320, 323, 326, 329, 337, 578, 589, 611, 615, 623, - 636, 646, 318, 321, 324, 327, 330, 338, 579, 590, - 612, 616, 624, 637, 647, 13, 14, 15, 16, 17, + 0, 315, 0, 11, 12, 46, 52, 96, 114, 165, + 224, 243, 264, 273, 297, 301, 307, 316, 317, 318, + 321, 324, 327, 330, 338, 580, 591, 613, 617, 625, + 638, 648, 319, 322, 325, 328, 331, 339, 581, 592, + 614, 618, 626, 639, 649, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, @@ -2683,18 +2271,18 @@ static const yytype_int16 yystos[] = 95, 105, 106, 107, 108, 109, 111, 112, 113, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 143, 144, 145, 146, 147, 148, 149, - 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 184, 185, 186, 187, 188, 189, 190, + 137, 138, 139, 140, 144, 145, 146, 147, 148, 149, + 150, 151, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 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, 224, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 270, - 278, 279, 281, 282, 284, 285, 288, 289, 290, 291, - 292, 293, 294, 295, 299, 308, 309, 310, 311, 319, - 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 221, 222, 223, 225, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 271, 279, 280, 282, 283, 285, 286, 289, 290, 291, + 292, 293, 294, 295, 296, 300, 309, 310, 311, 312, + 320, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, @@ -2714,26 +2302,27 @@ static const yytype_int16 yystos[] = 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 619, - 620, 621, 622, 645, 45, 47, 48, 110, 141, 151, - 287, 322, 549, 550, 551, 552, 553, 554, 555, 45, - 53, 54, 140, 142, 286, 325, 556, 557, 558, 559, - 560, 561, 45, 81, 82, 108, 185, 186, 225, 328, - 571, 572, 573, 574, 575, 576, 577, 45, 271, 273, - 274, 275, 276, 277, 283, 312, 331, 562, 563, 564, - 565, 566, 567, 568, 569, 570, 301, 302, 303, 304, - 305, 332, 333, 334, 335, 336, 339, 562, 563, 564, - 565, 566, 97, 98, 99, 100, 101, 102, 103, 104, - 580, 581, 582, 583, 584, 585, 586, 587, 588, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 591, 592, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 621, 622, 623, 624, 647, 45, 47, 48, 110, + 142, 152, 288, 323, 551, 552, 553, 554, 555, 556, + 557, 45, 53, 54, 141, 143, 287, 326, 558, 559, + 560, 561, 562, 563, 45, 81, 82, 108, 186, 187, + 226, 329, 573, 574, 575, 576, 577, 578, 579, 45, + 272, 274, 275, 276, 277, 278, 284, 313, 332, 564, + 565, 566, 567, 568, 569, 570, 571, 572, 302, 303, + 304, 305, 306, 333, 334, 335, 336, 337, 340, 564, + 565, 566, 567, 568, 97, 98, 99, 100, 101, 102, + 103, 104, 582, 583, 584, 585, 586, 587, 588, 589, + 590, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, - 603, 604, 605, 606, 607, 608, 609, 610, 115, 613, - 614, 307, 617, 618, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 625, 626, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 264, 265, 266, 267, 268, - 269, 638, 639, 640, 641, 642, 643, 644, 297, 298, - 648, 649, 650, 10, 10, 10, 10, 10, 10, 10, + 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, + 115, 615, 616, 308, 619, 620, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 627, 628, 629, 630, + 631, 632, 633, 634, 635, 636, 637, 265, 266, 267, + 268, 269, 270, 640, 641, 642, 643, 644, 645, 646, + 298, 299, 650, 651, 652, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -2764,185 +2353,98 @@ static const yytype_int16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10 + 10, 10 }; - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_int16 yyr1[] = -{ - 0, 313, 314, 314, 315, 315, 315, 315, 315, 315, - 315, 315, 315, 315, 315, 315, 315, 315, 316, 317, - 318, 318, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 320, 321, 321, 322, - 322, 322, 322, 322, 322, 322, 323, 324, 324, 325, - 325, 325, 325, 325, 325, 326, 327, 327, 328, 328, - 328, 328, 328, 328, 328, 329, 330, 330, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 332, 333, 334, - 335, 336, 337, 338, 338, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 579, 580, 580, 580, 580, - 580, 580, 580, 580, 581, 582, 583, 584, 585, 586, - 587, 588, 589, 590, 590, 591, 591, 591, 591, 591, - 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, - 591, 591, 591, 591, 592, 593, 594, 595, 596, 597, - 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 612, 613, 614, 615, 616, - 616, 617, 618, 619, 620, 621, 622, 623, 624, 624, - 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, - 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, - 636, 637, 637, 638, 638, 638, 638, 638, 638, 639, - 640, 641, 642, 643, 644, 645, 646, 647, 647, 648, - 648, 649, 650 -}; +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_int8 yyr2[] = -{ - 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, - 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, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 3, 3, 4, 4, 4, 3, 3, 2, 2, 2, - 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, - 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, - 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 1, 2, 0, 1, 2, 1, 2, - 0, 1, 2, 2, 2, 3, 3, 1, 2, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 1, 2, 0, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 2, 2, 3, 1, 2, 0, 1, - 1, 2, 2 -}; +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab -enum { YYENOMEM = -2 }; +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) +#define YYFAIL goto yyerrlab -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab +#define YYRECOVERING() (!!yyerrstatus) +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#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). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#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 YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ - do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ - while (0) - -/* Backward compatibility with an undocumented macro. - Use YYerror or YYUNDEF. */ -#define YYERRCODE YYUNDEF +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif /* Enable debugging if requested. */ #if YYDEBUG @@ -2952,65 +2454,80 @@ enum { YYENOMEM = -2 }; # define YYFPRINTF fprintf # endif -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) - -/* This macro is provided for backward compatibility. */ -# ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -# endif - - -# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Kind, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) - - -/*-----------------------------------. -| Print this symbol's value on YYO. | -`-----------------------------------*/ - +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else static void -yy_symbol_value_print (FILE *yyo, - yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif { - FILE *yyoutput = yyo; - YYUSE (yyoutput); if (!yyvaluep) return; # ifdef YYPRINT - if (yykind < YYNTOKENS) - YYPRINT (yyo, yytoknum[yykind], *yyvaluep); + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); # endif - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yykind); - YY_IGNORE_MAYBE_UNINITIALIZED_END + switch (yytype) + { + default: + break; + } } -/*---------------------------. -| Print this symbol on YYO. | -`---------------------------*/ +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void -yy_symbol_print (FILE *yyo, - yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif { - YYFPRINTF (yyo, "%s %s (", - yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); - yy_symbol_value_print (yyo, yykind, yyvaluep); - YYFPRINTF (yyo, ")"); + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. @@ -3018,68 +2535,80 @@ yy_symbol_print (FILE *yyo, | TOP (included). | `------------------------------------------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else static void -yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif { YYFPRINTF (stderr, "Stack now"); - for (; yybottom <= yytop; yybottom++) - { - int yybot = *yybottom; - YYFPRINTF (stderr, " %d", yybot); - } + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); YYFPRINTF (stderr, "\n"); } -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void -yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, - int yyrule) +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif { - int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", - yyrule - 1, yylno); + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { - YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, - YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), - &yyvsp[(yyi + 1) - (yynrhs)]); - YYFPRINTF (stderr, "\n"); + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + fprintf (stderr, "\n"); } } -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyssp, yyvsp, Rule); \ -} while (0) +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ -# define YYDPRINTF(Args) ((void) 0) -# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH +#ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif @@ -3094,230 +2623,478 @@ int yydebug; # define YYMAXDEPTH 10000 #endif + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + if (! yyres) + return yystrlen (yystr); + return yystpcpy (yyres, yystr) - yyres; +} +# endif +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void -yydestruct (const char *yymsg, - yysymbol_kind_t yykind, YYSTYPE *yyvaluep) +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif { YYUSE (yyvaluep); + if (!yymsg) yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yykind); - YY_IGNORE_MAYBE_UNINITIALIZED_END + switch (yytype) + { + + default: + break; + } } + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ -/* The lookahead symbol. */ + + +/* The look-ahead symbol. */ int yychar; -/* The semantic value of the lookahead symbol. */ +/* The semantic value of the look-ahead symbol. */ YYSTYPE yylval; + /* Number of syntax errors so far. */ int yynerrs; - /*----------. | yyparse. | `----------*/ +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) int yyparse (void) +#else +int +yyparse () + +#endif +#endif { - yy_state_fast_t yystate; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. - Refer to the stacks through separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ - /* Their size. */ - YYPTRDIFF_T yystacksize; + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; - /* The state stack. */ - yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss; - yy_state_t *yyssp; + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; - int yyn; - /* The return value of yyparse. */ - int yyresult; - /* Lookahead token as an internal (translated) token number. */ - yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; - -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) - /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; - yynerrs = 0; + YYDPRINTF ((stderr, "Starting parse\n")); + yystate = 0; yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ - yystacksize = YYINITDEPTH; - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - + /* 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. */ - YYDPRINTF ((stderr, "Starting parse\n")); + yyssp = yyss; + yyvsp = yyvs; - yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; - /*------------------------------------------------------------. -| yynewstate -- push a new state, which is found in yystate. | +| yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ -yynewstate: + yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; - -/*--------------------------------------------------------------------. -| yysetstate -- set current state (the top of the stack) to yystate. | -`--------------------------------------------------------------------*/ -yysetstate: - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - YY_ASSERT (0 <= yystate && yystate < YYNSTATES); - YY_IGNORE_USELESS_CAST_BEGIN - *yyssp = YY_CAST (yy_state_t, yystate); - YY_IGNORE_USELESS_CAST_END - YY_STACK_PRINT (yyss, yyssp); + yysetstate: + *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) -#if !defined yyoverflow && !defined YYSTACK_RELOCATE - goto yyexhaustedlab; -#else { /* Get the current used size of the three stacks, in elements. */ - YYPTRDIFF_T yysize = yyssp - yyss + 1; + YYSIZE_T yysize = yyssp - yyss + 1; -# if defined yyoverflow +#ifdef yyoverflow { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - yy_state_t *yyss1 = yyss; - YYSTYPE *yyvs1 = yyvs; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * YYSIZEOF (*yyssp), - &yyvs1, yysize * YYSIZEOF (*yyvsp), - &yystacksize); - yyss = yyss1; - yyvs = yyvs1; + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; } -# else /* defined YYSTACK_RELOCATE */ +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; + yystacksize = YYMAXDEPTH; { - yy_state_t *yyss1 = yyss; - union yyalloc *yyptr = - YY_CAST (union yyalloc *, - YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + # undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); } # endif +#endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - YY_IGNORE_USELESS_CAST_BEGIN - YYDPRINTF ((stderr, "Stack size increased to %ld\n", - YY_CAST (long, yystacksize))); - YY_IGNORE_USELESS_CAST_END + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) - YYABORT; + YYABORT; } -#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ - if (yystate == YYFINAL) - YYACCEPT; + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); goto yybackup; - /*-----------. | yybackup. | `-----------*/ yybackup: + /* Do appropriate processing given the current state. Read a - lookahead token if we need one and don't already have one. */ + look-ahead token if we need one and don't already have one. */ - /* First try to decide what to do without reference to lookahead token. */ + /* First try to decide what to do without reference to look-ahead token. */ yyn = yypact[yystate]; - if (yypact_value_is_default (yyn)) + if (yyn == YYPACT_NINF) goto yydefault; - /* Not known => get a lookahead token if don't already have one. */ + /* Not known => get a look-ahead token if don't already have one. */ - /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ if (yychar == YYEMPTY) { - YYDPRINTF ((stderr, "Reading a token\n")); - yychar = yylex (); + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; } if (yychar <= YYEOF) { - yychar = YYEOF; - yytoken = YYSYMBOL_YYEOF; + yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } - else if (yychar == YYerror) - { - /* The scanner already issued an error message, process directly - to error recovery. But do not keep the error token as - lookahead, it is too special and may lead us to an endless - loop in error recovery. */ - yychar = YYUNDEF; - yytoken = YYSYMBOL_YYerror; - goto yyerrlab1; - } else { yytoken = YYTRANSLATE (yychar); @@ -3332,26 +3109,30 @@ yybackup: yyn = yytable[yyn]; if (yyn <= 0) { - if (yytable_value_is_error (yyn)) - goto yyerrlab; + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; yyn = -yyn; goto yyreduce; } + if (yyn == YYFINAL) + YYACCEPT; + /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; - /* Shift the lookahead token. */ + /* Shift the look-ahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + yystate = yyn; - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - /* Discard the shifted token. */ - yychar = YYEMPTY; goto yynewstate; @@ -3366,14 +3147,14 @@ yydefault: /*-----------------------------. -| yyreduce -- do a reduction. | +| yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: - '$$ = $1'. + `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison @@ -3386,25 +3167,23 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 18: -#line 198 "./util/configparser.y" - { + case 18: +#line 198 "util/configparser.y" + { OUTYY(("\nP(force-toplevel)\n")); } -#line 3395 "util/configparser.c" break; case 19: -#line 204 "./util/configparser.y" - { +#line 204 "util/configparser.y" + { OUTYY(("\nP(server:)\n")); } -#line 3403 "util/configparser.c" break; - case 236: -#line 309 "./util/configparser.y" - { + case 237: +#line 309 "util/configparser.y" + { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -3414,12 +3193,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3418 "util/configparser.c" break; - case 246: -#line 326 "./util/configparser.y" - { + case 247: +#line 326 "util/configparser.y" + { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -3429,12 +3207,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3433 "util/configparser.c" break; - case 255: -#line 343 "./util/configparser.y" - { + case 256: +#line 343 "util/configparser.y" + { struct config_view* s; OUTYY(("\nP(view:)\n")); s = (struct config_view*)calloc(1, sizeof(struct config_view)); @@ -3446,12 +3223,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3450 "util/configparser.c" break; - case 265: -#line 362 "./util/configparser.y" - { + case 266: +#line 362 "util/configparser.y" + { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -3467,18 +3243,17 @@ yyreduce: } else yyerror("out of memory"); } -#line 3471 "util/configparser.c" break; - case 277: -#line 387 "./util/configparser.y" - { + case 278: +#line 387 "util/configparser.y" + { uint8_t* bitlist; size_t len = 0; - OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str))); - bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), + OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[(2) - (2)].str))); + bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[(2) - (2)].str), &len); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); if(!bitlist) { yyerror("could not parse tags, (define-tag them first)"); } @@ -3488,63 +3263,58 @@ yyreduce: } } -#line 3492 "util/configparser.c" break; - case 278: -#line 406 "./util/configparser.y" - { - OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 && - strcmp((yyvsp[0].str), "passthru")!=0 && strcmp((yyvsp[0].str), "drop")!=0 && - strcmp((yyvsp[0].str), "cname")!=0 && strcmp((yyvsp[0].str), "disabled")!=0) { + case 279: +#line 406 "util/configparser.y" + { + OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "nxdomain")!=0 && strcmp((yyvsp[(2) - (2)].str), "nodata")!=0 && + strcmp((yyvsp[(2) - (2)].str), "passthru")!=0 && strcmp((yyvsp[(2) - (2)].str), "drop")!=0 && + strcmp((yyvsp[(2) - (2)].str), "cname")!=0 && strcmp((yyvsp[(2) - (2)].str), "disabled")!=0) { yyerror("rpz-action-override action: expected nxdomain, " "nodata, passthru, drop, cname or disabled"); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); cfg_parser->cfg->auths->rpz_action_override = NULL; } else { - cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); + cfg_parser->cfg->auths->rpz_action_override = (yyvsp[(2) - (2)].str); } } -#line 3511 "util/configparser.c" break; - case 279: -#line 423 "./util/configparser.y" - { - OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); + case 280: +#line 423 "util/configparser.y" + { + OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->auths->rpz_cname); - cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); + cfg_parser->cfg->auths->rpz_cname = (yyvsp[(2) - (2)].str); } -#line 3521 "util/configparser.c" break; - case 280: -#line 431 "./util/configparser.y" - { - OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 281: +#line 431 "util/configparser.y" + { + OUTYY(("P(rpz_log:%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->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 3533 "util/configparser.c" break; - case 281: -#line 441 "./util/configparser.y" - { - OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); + case 282: +#line 441 "util/configparser.y" + { + OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->auths->rpz_log_name); - cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); + cfg_parser->cfg->auths->rpz_log_name = (yyvsp[(2) - (2)].str); } -#line 3543 "util/configparser.c" break; - case 282: -#line 449 "./util/configparser.y" - { + case 283: +#line 449 "util/configparser.y" + { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -3559,292 +3329,273 @@ yyreduce: } else yyerror("out of memory"); } -#line 3563 "util/configparser.c" - break; - - case 295: -#line 472 "./util/configparser.y" - { - OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3575 "util/configparser.c" break; case 296: -#line 481 "./util/configparser.y" - { - OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) +#line 472 "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) yyerror("number expected"); - else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->num_threads = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3587 "util/configparser.c" break; case 297: -#line 490 "./util/configparser.y" - { - OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) - cfg_parser->cfg->stat_interval = 0; - else if(atoi((yyvsp[0].str)) == 0) +#line 481 "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) yyerror("number expected"); - else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->verbosity = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3601 "util/configparser.c" break; case 298: -#line 501 "./util/configparser.y" - { - OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); +#line 490 "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) + cfg_parser->cfg->stat_interval = 0; + else if(atoi((yyvsp[(2) - (2)].str)) == 0) + yyerror("number expected"); + else cfg_parser->cfg->stat_interval = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3613 "util/configparser.c" break; case 299: -#line 510 "./util/configparser.y" - { - OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) +#line 501 "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) yyerror("expected yes or no."); - else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 3625 "util/configparser.c" break; case 300: -#line 519 "./util/configparser.y" - { - OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) +#line 510 "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) yyerror("expected yes or no."); - else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 3637 "util/configparser.c" break; case 301: -#line 528 "./util/configparser.y" - { - OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) +#line 519 "util/configparser.y" + { + OUTYY(("P(server_shm_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->shm_enable = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); + } + break; + + case 302: +#line 528 "util/configparser.y" + { + OUTYY(("P(server_shm_key:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "") == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) cfg_parser->cfg->shm_key = 0; - else if(atoi((yyvsp[0].str)) == 0) + else if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("number expected"); - else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->shm_key = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3651 "util/configparser.c" break; - case 302: -#line 539 "./util/configparser.y" - { - OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + case 303: +#line 539 "util/configparser.y" + { + OUTYY(("P(server_port:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("port number expected"); - else cfg_parser->cfg->port = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->port = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3663 "util/configparser.c" break; - case 303: -#line 548 "./util/configparser.y" - { + case 304: +#line 548 "util/configparser.y" + { #ifdef CLIENT_SUBNET - OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[0].str))) + OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[(2) - (2)].str))) fatal_exit("out of memory adding client-subnet"); #else OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); #endif } -#line 3678 "util/configparser.c" break; - case 304: -#line 560 "./util/configparser.y" - { + case 305: +#line 560 "util/configparser.y" + { #ifdef CLIENT_SUBNET - OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); + OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone, - (yyvsp[0].str))) + (yyvsp[(2) - (2)].str))) fatal_exit("out of memory adding client-subnet-zone"); #else OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); #endif } -#line 3694 "util/configparser.c" break; - case 305: -#line 574 "./util/configparser.y" - { + case 306: +#line 574 "util/configparser.y" + { #ifdef CLIENT_SUBNET - OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + OUTYY(("P(server_client_subnet_always_forward:%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->client_subnet_always_forward = - (strcmp((yyvsp[0].str), "yes")==0); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); #else OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3712 "util/configparser.c" break; - case 306: -#line 589 "./util/configparser.y" - { + case 307: +#line 589 "util/configparser.y" + { #ifdef CLIENT_SUBNET - OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); + OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[(2) - (2)].str))); OUTYY(("P(Deprecated option, ignoring)\n")); #else OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3726 "util/configparser.c" break; - case 307: -#line 600 "./util/configparser.y" - { + case 308: +#line 600 "util/configparser.y" + { #ifdef CLIENT_SUBNET - OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("IPv4 subnet length expected"); - else if (atoi((yyvsp[0].str)) > 32) + else if (atoi((yyvsp[(2) - (2)].str)) > 32) cfg_parser->cfg->max_client_subnet_ipv4 = 32; - else if (atoi((yyvsp[0].str)) < 0) + else if (atoi((yyvsp[(2) - (2)].str)) < 0) cfg_parser->cfg->max_client_subnet_ipv4 = 0; - else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str)); + else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[(2) - (2)].str)); #else OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3746 "util/configparser.c" break; - case 308: -#line 617 "./util/configparser.y" - { + case 309: +#line 617 "util/configparser.y" + { #ifdef CLIENT_SUBNET - OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("Ipv6 subnet length expected"); - else if (atoi((yyvsp[0].str)) > 128) + else if (atoi((yyvsp[(2) - (2)].str)) > 128) cfg_parser->cfg->max_client_subnet_ipv6 = 128; - else if (atoi((yyvsp[0].str)) < 0) + else if (atoi((yyvsp[(2) - (2)].str)) < 0) cfg_parser->cfg->max_client_subnet_ipv6 = 0; - else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str)); + else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[(2) - (2)].str)); #else OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3766 "util/configparser.c" break; - case 309: -#line 634 "./util/configparser.y" - { + case 310: +#line 634 "util/configparser.y" + { #ifdef CLIENT_SUBNET - OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("IPv4 subnet length expected"); - else if (atoi((yyvsp[0].str)) > 32) + else if (atoi((yyvsp[(2) - (2)].str)) > 32) cfg_parser->cfg->min_client_subnet_ipv4 = 32; - else if (atoi((yyvsp[0].str)) < 0) + else if (atoi((yyvsp[(2) - (2)].str)) < 0) cfg_parser->cfg->min_client_subnet_ipv4 = 0; - else cfg_parser->cfg->min_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str)); + else cfg_parser->cfg->min_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[(2) - (2)].str)); #else OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3786 "util/configparser.c" break; - case 310: -#line 651 "./util/configparser.y" - { + case 311: +#line 651 "util/configparser.y" + { #ifdef CLIENT_SUBNET - OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("Ipv6 subnet length expected"); - else if (atoi((yyvsp[0].str)) > 128) + else if (atoi((yyvsp[(2) - (2)].str)) > 128) cfg_parser->cfg->min_client_subnet_ipv6 = 128; - else if (atoi((yyvsp[0].str)) < 0) + else if (atoi((yyvsp[(2) - (2)].str)) < 0) cfg_parser->cfg->min_client_subnet_ipv6 = 0; - else cfg_parser->cfg->min_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str)); + else cfg_parser->cfg->min_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[(2) - (2)].str)); #else OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3806 "util/configparser.c" break; - case 311: -#line 668 "./util/configparser.y" - { + case 312: +#line 668 "util/configparser.y" + { #ifdef CLIENT_SUBNET - OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("IPv4 ECS tree size expected"); - else if (atoi((yyvsp[0].str)) < 0) + else if (atoi((yyvsp[(2) - (2)].str)) < 0) cfg_parser->cfg->max_ecs_tree_size_ipv4 = 0; - else cfg_parser->cfg->max_ecs_tree_size_ipv4 = (uint32_t)atoi((yyvsp[0].str)); + else cfg_parser->cfg->max_ecs_tree_size_ipv4 = (uint32_t)atoi((yyvsp[(2) - (2)].str)); #else OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3824 "util/configparser.c" break; - case 312: -#line 683 "./util/configparser.y" - { + case 313: +#line 683 "util/configparser.y" + { #ifdef CLIENT_SUBNET - OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("IPv6 ECS tree size expected"); - else if (atoi((yyvsp[0].str)) < 0) + else if (atoi((yyvsp[(2) - (2)].str)) < 0) cfg_parser->cfg->max_ecs_tree_size_ipv6 = 0; - else cfg_parser->cfg->max_ecs_tree_size_ipv6 = (uint32_t)atoi((yyvsp[0].str)); + else cfg_parser->cfg->max_ecs_tree_size_ipv6 = (uint32_t)atoi((yyvsp[(2) - (2)].str)); #else OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3842 "util/configparser.c" break; - case 313: -#line 698 "./util/configparser.y" - { - OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); + case 314: +#line 698 "util/configparser.y" + { + OUTYY(("P(server_interface:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->num_ifs == 0) cfg_parser->cfg->ifs = calloc(1, sizeof(char*)); else cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs, @@ -3852,15 +3603,14 @@ yyreduce: if(!cfg_parser->cfg->ifs) yyerror("out of memory"); else - cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); + cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[(2) - (2)].str); } -#line 3858 "util/configparser.c" break; - case 314: -#line 711 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); + case 315: +#line 711 "util/configparser.y" + { + OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->num_out_ifs == 0) cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*)); else cfg_parser->cfg->out_ifs = realloc( @@ -3870,628 +3620,590 @@ yyreduce: yyerror("out of memory"); else cfg_parser->cfg->out_ifs[ - cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); - } -#line 3876 "util/configparser.c" - break; - - case 315: -#line 726 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + cfg_parser->cfg->num_out_ifs++] = (yyvsp[(2) - (2)].str); } -#line 3888 "util/configparser.c" break; case 316: -#line 735 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); - if(!cfg_mark_ports((yyvsp[0].str), 1, - cfg_parser->cfg->outgoing_avail_ports, 65536)) - yyerror("port number or range (\"low-high\") expected"); - free((yyvsp[0].str)); +#line 726 "util/configparser.y" + { + OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) + yyerror("number expected"); + else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3900 "util/configparser.c" break; case 317: -#line 744 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); - if(!cfg_mark_ports((yyvsp[0].str), 0, +#line 735 "util/configparser.y" + { + OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 1, cfg_parser->cfg->outgoing_avail_ports, 65536)) yyerror("port number or range (\"low-high\") expected"); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3912 "util/configparser.c" break; case 318: -#line 753 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); +#line 744 "util/configparser.y" + { + OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 0, + cfg_parser->cfg->outgoing_avail_ports, 65536)) + yyerror("port number or range (\"low-high\") expected"); + free((yyvsp[(2) - (2)].str)); } -#line 3924 "util/configparser.c" break; case 319: -#line 762 "./util/configparser.y" - { - OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) +#line 753 "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) yyerror("number expected"); - else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3936 "util/configparser.c" break; case 320: -#line 771 "./util/configparser.y" - { - OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); +#line 762 "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) + yyerror("number expected"); + else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3948 "util/configparser.c" break; case 321: -#line 780 "./util/configparser.y" - { - OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) +#line 771 "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) yyerror("expected yes or no."); - else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 3960 "util/configparser.c" break; case 322: -#line 789 "./util/configparser.y" - { - OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) +#line 780 "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) yyerror("expected yes or no."); - else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 3972 "util/configparser.c" break; case 323: -#line 798 "./util/configparser.y" - { - OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) +#line 789 "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) yyerror("expected yes or no."); - else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 3984 "util/configparser.c" break; case 324: -#line 807 "./util/configparser.y" - { - OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) +#line 798 "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) yyerror("expected yes or no."); - else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->do_udp = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 3996 "util/configparser.c" break; case 325: -#line 816 "./util/configparser.y" - { - OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) +#line 807 "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) yyerror("expected yes or no."); - else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4008 "util/configparser.c" break; case 326: -#line 825 "./util/configparser.y" - { - OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) +#line 816 "util/configparser.y" + { + OUTYY(("P(server_prefer_ip4:%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->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4020 "util/configparser.c" break; case 327: -#line 834 "./util/configparser.y" - { - OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); +#line 825 "util/configparser.y" + { + OUTYY(("P(server_prefer_ip6:%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->prefer_ip6 = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4032 "util/configparser.c" break; case 328: -#line 843 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); +#line 834 "util/configparser.y" + { + OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->tcp_mss = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4044 "util/configparser.c" break; case 329: -#line 852 "./util/configparser.y" - { - OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) +#line 843 "util/configparser.y" + { + OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); + } + break; + + case 330: +#line 852 "util/configparser.y" + { + OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else if (atoi((yyvsp[0].str)) > 120000) + else if (atoi((yyvsp[(2) - (2)].str)) > 120000) cfg_parser->cfg->tcp_idle_timeout = 120000; - else if (atoi((yyvsp[0].str)) < 1) + else if (atoi((yyvsp[(2) - (2)].str)) < 1) cfg_parser->cfg->tcp_idle_timeout = 1; - else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4060 "util/configparser.c" break; - case 330: -#line 865 "./util/configparser.y" - { - OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 331: +#line 865 "util/configparser.y" + { + OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else if (atoi((yyvsp[0].str)) < 1) + else if (atoi((yyvsp[(2) - (2)].str)) < 1) cfg_parser->cfg->max_reuse_tcp_queries = 0; - else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4074 "util/configparser.c" break; - case 331: -#line 876 "./util/configparser.y" - { - OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 332: +#line 876 "util/configparser.y" + { + OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else if (atoi((yyvsp[0].str)) < 1) + else if (atoi((yyvsp[(2) - (2)].str)) < 1) cfg_parser->cfg->tcp_reuse_timeout = 0; - else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4088 "util/configparser.c" break; - case 332: -#line 887 "./util/configparser.y" - { - OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 333: +#line 887 "util/configparser.y" + { + OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("number expected"); + else if (atoi((yyvsp[(2) - (2)].str)) < 1) + cfg_parser->cfg->tcp_auth_query_timeout = 0; + else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); + } + break; + + case 334: +#line 898 "util/configparser.y" + { + OUTYY(("P(server_tcp_keepalive:%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->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4100 "util/configparser.c" break; - case 333: -#line 896 "./util/configparser.y" - { - OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 335: +#line 907 "util/configparser.y" + { + OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else if (atoi((yyvsp[0].str)) > 6553500) + else if (atoi((yyvsp[(2) - (2)].str)) > 6553500) cfg_parser->cfg->tcp_keepalive_timeout = 6553500; - else if (atoi((yyvsp[0].str)) < 1) + else if (atoi((yyvsp[(2) - (2)].str)) < 1) cfg_parser->cfg->tcp_keepalive_timeout = 0; - else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4116 "util/configparser.c" break; - case 334: -#line 909 "./util/configparser.y" - { - OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 336: +#line 920 "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) yyerror("expected yes or no."); - else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4128 "util/configparser.c" break; - case 335: -#line 918 "./util/configparser.y" - { - OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 337: +#line 929 "util/configparser.y" + { + OUTYY(("P(server_udp_upstream_without_downstream:%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->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4140 "util/configparser.c" break; - case 336: -#line 927 "./util/configparser.y" - { - OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 338: +#line 938 "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) yyerror("expected yes or no."); - else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4152 "util/configparser.c" break; - case 337: -#line 936 "./util/configparser.y" - { - OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); + case 339: +#line 947 "util/configparser.y" + { + OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->ssl_service_key); - cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); + cfg_parser->cfg->ssl_service_key = (yyvsp[(2) - (2)].str); } -#line 4162 "util/configparser.c" break; - case 338: -#line 943 "./util/configparser.y" - { - OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); + case 340: +#line 954 "util/configparser.y" + { + OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->ssl_service_pem); - cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); + cfg_parser->cfg->ssl_service_pem = (yyvsp[(2) - (2)].str); } -#line 4172 "util/configparser.c" break; - case 339: -#line 950 "./util/configparser.y" - { - OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + case 341: +#line 961 "util/configparser.y" + { + OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("port number expected"); - else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->ssl_port = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4184 "util/configparser.c" break; - case 340: -#line 959 "./util/configparser.y" - { - OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); + case 342: +#line 970 "util/configparser.y" + { + OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->tls_cert_bundle); - cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); + cfg_parser->cfg->tls_cert_bundle = (yyvsp[(2) - (2)].str); } -#line 4194 "util/configparser.c" break; - case 341: -#line 966 "./util/configparser.y" - { - OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 343: +#line 977 "util/configparser.y" + { + OUTYY(("P(server_tls_win_cert:%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->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4206 "util/configparser.c" break; - case 342: -#line 975 "./util/configparser.y" - { - OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); + case 344: +#line 986 "util/configparser.y" + { + OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, - (yyvsp[0].str))) + (yyvsp[(2) - (2)].str))) yyerror("out of memory"); } -#line 4217 "util/configparser.c" break; - case 343: -#line 983 "./util/configparser.y" - { - OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); + case 345: +#line 994 "util/configparser.y" + { + OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->tls_ciphers); - cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); + cfg_parser->cfg->tls_ciphers = (yyvsp[(2) - (2)].str); } -#line 4227 "util/configparser.c" break; - case 344: -#line 990 "./util/configparser.y" - { - OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); + case 346: +#line 1001 "util/configparser.y" + { + OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->tls_ciphersuites); - cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); + cfg_parser->cfg->tls_ciphersuites = (yyvsp[(2) - (2)].str); } -#line 4237 "util/configparser.c" break; - case 345: -#line 997 "./util/configparser.y" - { - OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); + case 347: +#line 1008 "util/configparser.y" + { + OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, - (yyvsp[0].str))) + (yyvsp[(2) - (2)].str))) yyerror("out of memory"); } -#line 4248 "util/configparser.c" break; - case 346: -#line 1005 "./util/configparser.y" - { - OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 348: +#line 1016 "util/configparser.y" + { + OUTYY(("P(server_tls_use_sni:%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->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4260 "util/configparser.c" break; - case 347: -#line 1014 "./util/configparser.y" - { - OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + case 349: +#line 1025 "util/configparser.y" + { + OUTYY(("P(server_https_port:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("port number expected"); - else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->https_port = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4272 "util/configparser.c" break; - case 348: -#line 1022 "./util/configparser.y" - { - OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); + case 350: +#line 1033 "util/configparser.y" + { + OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->http_endpoint); - if((yyvsp[0].str) && (yyvsp[0].str)[0] != '/') { - cfg_parser->cfg->http_endpoint = malloc(strlen((yyvsp[0].str))+2); + if((yyvsp[(2) - (2)].str) && (yyvsp[(2) - (2)].str)[0] != '/') { + cfg_parser->cfg->http_endpoint = malloc(strlen((yyvsp[(2) - (2)].str))+2); if(!cfg_parser->cfg->http_endpoint) yyerror("out of memory"); cfg_parser->cfg->http_endpoint[0] = '/'; - memmove(cfg_parser->cfg->http_endpoint+1, (yyvsp[0].str), - strlen((yyvsp[0].str))+1); - free((yyvsp[0].str)); + memmove(cfg_parser->cfg->http_endpoint+1, (yyvsp[(2) - (2)].str), + strlen((yyvsp[(2) - (2)].str))+1); + free((yyvsp[(2) - (2)].str)); } else { - cfg_parser->cfg->http_endpoint = (yyvsp[0].str); + cfg_parser->cfg->http_endpoint = (yyvsp[(2) - (2)].str); } } -#line 4292 "util/configparser.c" break; - case 349: -#line 1038 "./util/configparser.y" - { - OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 351: +#line 1049 "util/configparser.y" + { + OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->http_max_streams = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4304 "util/configparser.c" break; - case 350: -#line 1046 "./util/configparser.y" - { - OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), + case 352: +#line 1057 "util/configparser.y" + { + OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->http_query_buffer_size)) yyerror("memory size expected"); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4316 "util/configparser.c" break; - case 351: -#line 1054 "./util/configparser.y" - { - OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), + case 353: +#line 1065 "util/configparser.y" + { + OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->http_response_buffer_size)) yyerror("memory size expected"); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4328 "util/configparser.c" break; - case 352: -#line 1062 "./util/configparser.y" - { - OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 354: +#line 1073 "util/configparser.y" + { + OUTYY(("P(server_http_nodelay:%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->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4340 "util/configparser.c" break; - case 353: -#line 1070 "./util/configparser.y" - { - OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 355: +#line 1081 "util/configparser.y" + { + OUTYY(("P(server_http_notls_downstream:%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->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4352 "util/configparser.c" break; - case 354: -#line 1078 "./util/configparser.y" - { - OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 356: +#line 1089 "util/configparser.y" + { + OUTYY(("P(server_use_systemd:%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->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4364 "util/configparser.c" break; - case 355: -#line 1087 "./util/configparser.y" - { - OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 357: +#line 1098 "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) yyerror("expected yes or no."); - else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4376 "util/configparser.c" break; - case 356: -#line 1096 "./util/configparser.y" - { - OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 358: +#line 1107 "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) yyerror("expected yes or no."); - else cfg_parser->cfg->use_syslog = (strcmp((yyvsp[0].str), "yes")==0); + else cfg_parser->cfg->use_syslog = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); #if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS) - if(strcmp((yyvsp[0].str), "yes") == 0) + if(strcmp((yyvsp[(2) - (2)].str), "yes") == 0) yyerror("no syslog services are available. " "(reconfigure and compile to add)"); #endif - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4393 "util/configparser.c" break; - case 357: -#line 1110 "./util/configparser.y" - { - OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 359: +#line 1121 "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) yyerror("expected yes or no."); - else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4405 "util/configparser.c" break; - case 358: -#line 1119 "./util/configparser.y" - { - OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 360: +#line 1130 "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) yyerror("expected yes or no."); - else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->log_queries = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4417 "util/configparser.c" break; - case 359: -#line 1128 "./util/configparser.y" - { - OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 361: +#line 1139 "util/configparser.y" + { + OUTYY(("P(server_log_replies:%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->log_replies = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->log_replies = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4429 "util/configparser.c" break; - case 360: -#line 1137 "./util/configparser.y" - { - OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 362: +#line 1148 "util/configparser.y" + { + OUTYY(("P(server_log_tag_queryreply:%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->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4441 "util/configparser.c" break; - case 361: -#line 1146 "./util/configparser.y" - { - OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 363: +#line 1157 "util/configparser.y" + { + OUTYY(("P(server_log_servfail:%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->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4453 "util/configparser.c" break; - case 362: -#line 1155 "./util/configparser.y" - { - OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 364: +#line 1166 "util/configparser.y" + { + OUTYY(("P(server_log_local_actions:%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->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4465 "util/configparser.c" break; - case 363: -#line 1164 "./util/configparser.y" - { - OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); + case 365: +#line 1175 "util/configparser.y" + { + OUTYY(("P(server_chroot:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->chrootdir); - cfg_parser->cfg->chrootdir = (yyvsp[0].str); + cfg_parser->cfg->chrootdir = (yyvsp[(2) - (2)].str); } -#line 4475 "util/configparser.c" break; - case 364: -#line 1171 "./util/configparser.y" - { - OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); + case 366: +#line 1182 "util/configparser.y" + { + OUTYY(("P(server_username:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->username); - cfg_parser->cfg->username = (yyvsp[0].str); + cfg_parser->cfg->username = (yyvsp[(2) - (2)].str); } -#line 4485 "util/configparser.c" break; - case 365: -#line 1178 "./util/configparser.y" - { - OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); + case 367: +#line 1189 "util/configparser.y" + { + OUTYY(("P(server_directory:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->directory); - cfg_parser->cfg->directory = (yyvsp[0].str); + cfg_parser->cfg->directory = (yyvsp[(2) - (2)].str); /* change there right away for includes relative to this */ - if((yyvsp[0].str)[0]) { + if((yyvsp[(2) - (2)].str)[0]) { char* d; #ifdef UB_ON_WINDOWS w_config_adjust_directory(cfg_parser->cfg); @@ -4510,1194 +4222,1100 @@ yyreduce: } } } -#line 4514 "util/configparser.c" break; - case 366: -#line 1204 "./util/configparser.y" - { - OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); + case 368: +#line 1215 "util/configparser.y" + { + OUTYY(("P(server_logfile:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->logfile); - cfg_parser->cfg->logfile = (yyvsp[0].str); + cfg_parser->cfg->logfile = (yyvsp[(2) - (2)].str); cfg_parser->cfg->use_syslog = 0; } -#line 4525 "util/configparser.c" break; - case 367: -#line 1212 "./util/configparser.y" - { - OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); + case 369: +#line 1223 "util/configparser.y" + { + OUTYY(("P(server_pidfile:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->pidfile); - cfg_parser->cfg->pidfile = (yyvsp[0].str); + cfg_parser->cfg->pidfile = (yyvsp[(2) - (2)].str); } -#line 4535 "util/configparser.c" break; - case 368: -#line 1219 "./util/configparser.y" - { - OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) + case 370: +#line 1230 "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))) yyerror("out of memory"); } -#line 4545 "util/configparser.c" break; - case 369: -#line 1226 "./util/configparser.y" - { - OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); + case 371: +#line 1237 "util/configparser.y" + { + OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4555 "util/configparser.c" break; - case 370: -#line 1233 "./util/configparser.y" - { - OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); + case 372: +#line 1244 "util/configparser.y" + { + OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[(2) - (2)].str))); log_warn("option dlv-anchor ignored: DLV is decommissioned"); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4565 "util/configparser.c" break; - case 371: -#line 1240 "./util/configparser.y" - { - OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); + case 373: +#line 1251 "util/configparser.y" + { + OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> - auto_trust_anchor_file_list, (yyvsp[0].str))) + auto_trust_anchor_file_list, (yyvsp[(2) - (2)].str))) yyerror("out of memory"); } -#line 4576 "util/configparser.c" break; - case 372: -#line 1248 "./util/configparser.y" - { - OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); + case 374: +#line 1259 "util/configparser.y" + { + OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> - trust_anchor_file_list, (yyvsp[0].str))) + trust_anchor_file_list, (yyvsp[(2) - (2)].str))) yyerror("out of memory"); } -#line 4587 "util/configparser.c" break; - case 373: -#line 1256 "./util/configparser.y" - { - OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); + case 375: +#line 1267 "util/configparser.y" + { + OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> - trusted_keys_file_list, (yyvsp[0].str))) + trusted_keys_file_list, (yyvsp[(2) - (2)].str))) yyerror("out of memory"); } -#line 4598 "util/configparser.c" break; - case 374: -#line 1264 "./util/configparser.y" - { - OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) + case 376: +#line 1275 "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))) yyerror("out of memory"); } -#line 4608 "util/configparser.c" break; - case 375: -#line 1271 "./util/configparser.y" - { - OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 377: +#line 1282 "util/configparser.y" + { + OUTYY(("P(server_trust_anchor_signaling:%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->trust_anchor_signaling = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4622 "util/configparser.c" break; - case 376: -#line 1282 "./util/configparser.y" - { - OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 378: +#line 1293 "util/configparser.y" + { + OUTYY(("P(server_root_key_sentinel:%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->root_key_sentinel = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4636 "util/configparser.c" break; - case 377: -#line 1293 "./util/configparser.y" - { - OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) + case 379: +#line 1304 "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))) yyerror("out of memory"); } -#line 4646 "util/configparser.c" break; - case 378: -#line 1300 "./util/configparser.y" - { - OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 380: +#line 1311 "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) yyerror("expected yes or no."); - else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4658 "util/configparser.c" break; - case 379: -#line 1309 "./util/configparser.y" - { - OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 381: +#line 1320 "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) yyerror("expected yes or no."); - else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->hide_version = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4670 "util/configparser.c" break; - case 380: -#line 1318 "./util/configparser.y" - { - OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 382: +#line 1329 "util/configparser.y" + { + OUTYY(("P(server_hide_trustanchor:%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->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4682 "util/configparser.c" break; - case 381: -#line 1327 "./util/configparser.y" - { - OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); + case 383: +#line 1338 "util/configparser.y" + { + OUTYY(("P(server_identity:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->identity); - cfg_parser->cfg->identity = (yyvsp[0].str); + cfg_parser->cfg->identity = (yyvsp[(2) - (2)].str); } -#line 4692 "util/configparser.c" break; - case 382: -#line 1334 "./util/configparser.y" - { - OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); + case 384: +#line 1345 "util/configparser.y" + { + OUTYY(("P(server_version:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->version); - cfg_parser->cfg->version = (yyvsp[0].str); + cfg_parser->cfg->version = (yyvsp[(2) - (2)].str); } -#line 4702 "util/configparser.c" break; - case 383: -#line 1341 "./util/configparser.y" - { - OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str))); + case 385: +#line 1352 "util/configparser.y" + { + OUTYY(("P(server_nsid:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->nsid_cfg_str); - cfg_parser->cfg->nsid_cfg_str = (yyvsp[0].str); + cfg_parser->cfg->nsid_cfg_str = (yyvsp[(2) - (2)].str); free(cfg_parser->cfg->nsid); cfg_parser->cfg->nsid = NULL; cfg_parser->cfg->nsid_len = 0; - if (*(yyvsp[0].str) == 0) + if (*(yyvsp[(2) - (2)].str) == 0) ; /* pass; empty string is not setting nsid */ else if (!(cfg_parser->cfg->nsid = cfg_parse_nsid( - (yyvsp[0].str), &cfg_parser->cfg->nsid_len))) + (yyvsp[(2) - (2)].str), &cfg_parser->cfg->nsid_len))) yyerror("the NSID must be either a hex string or an " "ascii character string prepended with ascii_."); } -#line 4721 "util/configparser.c" break; - case 384: -#line 1357 "./util/configparser.y" - { - OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf)) + case 386: +#line 1368 "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)) yyerror("buffer size expected"); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4732 "util/configparser.c" break; - case 385: -#line 1365 "./util/configparser.y" - { - OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf)) + case 387: +#line 1376 "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)) yyerror("buffer size expected"); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4743 "util/configparser.c" break; - case 386: -#line 1373 "./util/configparser.y" + case 388: +#line 1384 "util/configparser.y" { - OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + 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) yyerror("expected yes or no."); else cfg_parser->cfg->so_reuseport = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4756 "util/configparser.c" break; - case 387: -#line 1383 "./util/configparser.y" + case 389: +#line 1394 "util/configparser.y" { - OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + OUTYY(("P(server_ip_transparent:%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->ip_transparent = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4769 "util/configparser.c" break; - case 388: -#line 1393 "./util/configparser.y" + case 390: +#line 1404 "util/configparser.y" { - OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + OUTYY(("P(server_ip_freebind:%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->ip_freebind = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4782 "util/configparser.c" break; - case 389: -#line 1403 "./util/configparser.y" - { - OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 391: +#line 1414 "util/configparser.y" + { + OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else if (atoi((yyvsp[0].str)) > 63) + else if (atoi((yyvsp[(2) - (2)].str)) > 63) yyerror("value too large (max 63)"); - else if (atoi((yyvsp[0].str)) < 0) + else if (atoi((yyvsp[(2) - (2)].str)) < 0) yyerror("value too small (min 0)"); else - cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + cfg_parser->cfg->ip_dscp = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4799 "util/configparser.c" break; - case 390: -#line 1417 "./util/configparser.y" - { - OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size)) + case 392: +#line 1428 "util/configparser.y" + { + OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->stream_wait_size)) yyerror("memory size expected"); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4810 "util/configparser.c" break; - case 391: -#line 1425 "./util/configparser.y" - { - OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + case 393: +#line 1436 "util/configparser.y" + { + OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("number expected"); - else if (atoi((yyvsp[0].str)) < 12) + else if (atoi((yyvsp[(2) - (2)].str)) < 12) yyerror("edns buffer size too small"); - else if (atoi((yyvsp[0].str)) > 65535) + else if (atoi((yyvsp[(2) - (2)].str)) > 65535) cfg_parser->cfg->edns_buffer_size = 65535; - else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4826 "util/configparser.c" break; - case 392: -#line 1438 "./util/configparser.y" - { - OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + case 394: +#line 1449 "util/configparser.y" + { + OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("number expected"); - else if (atoi((yyvsp[0].str)) < 4096) + else if (atoi((yyvsp[(2) - (2)].str)) < 4096) yyerror("message buffer size too small (use 4096)"); - else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4840 "util/configparser.c" break; - case 393: -#line 1449 "./util/configparser.y" - { - OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size)) + case 395: +#line 1460 "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)) yyerror("memory size expected"); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4851 "util/configparser.c" break; - case 394: -#line 1457 "./util/configparser.y" - { - OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + case 396: +#line 1468 "util/configparser.y" + { + OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("number expected"); else { - cfg_parser->cfg->msg_cache_slabs = atoi((yyvsp[0].str)); + cfg_parser->cfg->msg_cache_slabs = atoi((yyvsp[(2) - (2)].str)); if(!is_pow2(cfg_parser->cfg->msg_cache_slabs)) yyerror("must be a power of 2"); } - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4867 "util/configparser.c" break; - case 395: -#line 1470 "./util/configparser.y" - { - OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + case 397: +#line 1481 "util/configparser.y" + { + OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("number expected"); - else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4879 "util/configparser.c" break; - case 396: -#line 1479 "./util/configparser.y" - { - OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 398: +#line 1490 "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) yyerror("number expected"); - else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->jostle_time = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4891 "util/configparser.c" break; - case 397: -#line 1488 "./util/configparser.y" - { - OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 399: +#line 1499 "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) yyerror("number expected"); - else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->delay_close = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4903 "util/configparser.c" break; - case 398: -#line 1497 "./util/configparser.y" - { - OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 400: +#line 1508 "util/configparser.y" + { + OUTYY(("P(server_udp_connect:%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->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4915 "util/configparser.c" break; - case 399: -#line 1506 "./util/configparser.y" - { - OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 401: +#line 1517 "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[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4928 "util/configparser.c" break; - case 400: -#line 1516 "./util/configparser.y" - { - OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 402: +#line 1527 "util/configparser.y" + { + OUTYY(("P(server_insecure_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->insecure_lan_zones = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4941 "util/configparser.c" break; - case 401: -#line 1526 "./util/configparser.y" - { - OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size)) + case 403: +#line 1537 "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)) yyerror("memory size expected"); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4952 "util/configparser.c" break; - case 402: -#line 1534 "./util/configparser.y" - { - OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + case 404: +#line 1545 "util/configparser.y" + { + OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("number expected"); else { - cfg_parser->cfg->rrset_cache_slabs = atoi((yyvsp[0].str)); + cfg_parser->cfg->rrset_cache_slabs = atoi((yyvsp[(2) - (2)].str)); if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs)) yyerror("must be a power of 2"); } - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4968 "util/configparser.c" break; - case 403: -#line 1547 "./util/configparser.y" - { - OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 405: +#line 1558 "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) yyerror("number expected"); - else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->host_ttl = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4980 "util/configparser.c" break; - case 404: -#line 1556 "./util/configparser.y" - { - OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); + case 406: +#line 1567 "util/configparser.y" + { + OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[(2) - (2)].str))); verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " - "removed, use infra-host-ttl)", (yyvsp[0].str)); - free((yyvsp[0].str)); + "removed, use infra-host-ttl)", (yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4991 "util/configparser.c" break; - case 405: -#line 1564 "./util/configparser.y" - { - OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + case 407: +#line 1575 "util/configparser.y" + { + OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("number expected"); - else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5003 "util/configparser.c" break; - case 406: -#line 1573 "./util/configparser.y" - { - OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); + case 408: +#line 1584 "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 " - "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); - free((yyvsp[0].str)); + "(option removed, use infra-cache-numhosts)", (yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5014 "util/configparser.c" break; - case 407: -#line 1581 "./util/configparser.y" - { - OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + case 409: +#line 1592 "util/configparser.y" + { + OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("number expected"); else { - cfg_parser->cfg->infra_cache_slabs = atoi((yyvsp[0].str)); + cfg_parser->cfg->infra_cache_slabs = atoi((yyvsp[(2) - (2)].str)); if(!is_pow2(cfg_parser->cfg->infra_cache_slabs)) yyerror("must be a power of 2"); } - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5030 "util/configparser.c" break; - case 408: -#line 1594 "./util/configparser.y" - { - OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 410: +#line 1605 "util/configparser.y" + { + OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5042 "util/configparser.c" break; - case 409: -#line 1603 "./util/configparser.y" - { - OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 411: +#line 1614 "util/configparser.y" + { + OUTYY(("P(server_infra_keep_probing:%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->infra_keep_probing = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5055 "util/configparser.c" break; - case 410: -#line 1613 "./util/configparser.y" - { - OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); + case 412: +#line 1624 "util/configparser.y" + { + OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->target_fetch_policy); - cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); + cfg_parser->cfg->target_fetch_policy = (yyvsp[(2) - (2)].str); } -#line 5065 "util/configparser.c" break; - case 411: -#line 1620 "./util/configparser.y" - { - OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 413: +#line 1631 "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) yyerror("expected yes or no."); else cfg_parser->cfg->harden_short_bufsize = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5078 "util/configparser.c" break; - case 412: -#line 1630 "./util/configparser.y" - { - OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 414: +#line 1641 "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) yyerror("expected yes or no."); else cfg_parser->cfg->harden_large_queries = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5091 "util/configparser.c" break; - case 413: -#line 1640 "./util/configparser.y" - { - OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 415: +#line 1651 "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) yyerror("expected yes or no."); else cfg_parser->cfg->harden_glue = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5104 "util/configparser.c" break; - case 414: -#line 1650 "./util/configparser.y" - { - OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 416: +#line 1661 "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) yyerror("expected yes or no."); else cfg_parser->cfg->harden_dnssec_stripped = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5117 "util/configparser.c" break; - case 415: -#line 1660 "./util/configparser.y" - { - OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 417: +#line 1671 "util/configparser.y" + { + OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->harden_below_nxdomain = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5130 "util/configparser.c" break; - case 416: -#line 1670 "./util/configparser.y" - { - OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 418: +#line 1681 "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) yyerror("expected yes or no."); else cfg_parser->cfg->harden_referral_path = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5143 "util/configparser.c" break; - case 417: -#line 1680 "./util/configparser.y" - { - OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 419: +#line 1691 "util/configparser.y" + { + OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->harden_algo_downgrade = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5156 "util/configparser.c" break; - case 418: -#line 1690 "./util/configparser.y" - { - OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 420: +#line 1701 "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) yyerror("expected yes or no."); else cfg_parser->cfg->use_caps_bits_for_id = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5169 "util/configparser.c" break; - case 419: -#line 1700 "./util/configparser.y" - { - OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) + case 421: +#line 1711 "util/configparser.y" + { + OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[(2) - (2)].str))) yyerror("out of memory"); } -#line 5179 "util/configparser.c" break; - case 420: -#line 1707 "./util/configparser.y" - { - OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) + case 422: +#line 1718 "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))) yyerror("out of memory"); } -#line 5189 "util/configparser.c" break; - case 421: -#line 1714 "./util/configparser.y" - { - OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) + case 423: +#line 1725 "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))) yyerror("out of memory"); } -#line 5199 "util/configparser.c" break; - case 422: -#line 1721 "./util/configparser.y" - { - OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 424: +#line 1732 "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) yyerror("expected yes or no."); - else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->prefetch = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5211 "util/configparser.c" break; - case 423: -#line 1730 "./util/configparser.y" - { - OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 425: +#line 1741 "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) yyerror("expected yes or no."); - else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5223 "util/configparser.c" break; - case 424: -#line 1739 "./util/configparser.y" - { - OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 426: +#line 1750 "util/configparser.y" + { + OUTYY(("P(server_deny_any:%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->deny_any = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->deny_any = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5235 "util/configparser.c" break; - case 425: -#line 1748 "./util/configparser.y" - { - OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 427: +#line 1759 "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) yyerror("number expected"); - else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5247 "util/configparser.c" break; - case 426: -#line 1757 "./util/configparser.y" - { - OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) + case 428: +#line 1768 "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))) yyerror("out of memory"); } -#line 5257 "util/configparser.c" break; - case 427: -#line 1764 "./util/configparser.y" - { - OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 429: +#line 1775 "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) yyerror("expected yes or no."); else cfg_parser->cfg->donotquery_localhost = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5270 "util/configparser.c" break; - case 428: -#line 1774 "./util/configparser.y" - { - OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && - strcmp((yyvsp[0].str), "deny_non_local")!=0 && - strcmp((yyvsp[0].str), "refuse_non_local")!=0 && - strcmp((yyvsp[0].str), "allow_setrd")!=0 && - strcmp((yyvsp[0].str), "allow")!=0 && - strcmp((yyvsp[0].str), "allow_snoop")!=0) { + case 430: +#line 1785 "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 && + strcmp((yyvsp[(3) - (3)].str), "deny_non_local")!=0 && + strcmp((yyvsp[(3) - (3)].str), "refuse_non_local")!=0 && + strcmp((yyvsp[(3) - (3)].str), "allow_setrd")!=0 && + strcmp((yyvsp[(3) - (3)].str), "allow")!=0 && + strcmp((yyvsp[(3) - (3)].str), "allow_snoop")!=0) { yyerror("expected deny, refuse, deny_non_local, " "refuse_non_local, allow, allow_setrd or " "allow_snoop in access control action"); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); + free((yyvsp[(2) - (3)].str)); + free((yyvsp[(3) - (3)].str)); } else { - if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str))) + if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) fatal_exit("out of memory adding acl"); } } -#line 5293 "util/configparser.c" break; - case 429: -#line 1794 "./util/configparser.y" - { - OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); + case 431: +#line 1805 "util/configparser.y" + { + OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->module_conf); - cfg_parser->cfg->module_conf = (yyvsp[0].str); + cfg_parser->cfg->module_conf = (yyvsp[(2) - (2)].str); } -#line 5303 "util/configparser.c" break; - case 430: -#line 1801 "./util/configparser.y" - { - OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); - if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { + case 432: +#line 1812 "util/configparser.y" + { + OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[(2) - (2)].str))); + if(*(yyvsp[(2) - (2)].str) == '\0' || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { cfg_parser->cfg->val_date_override = 0; - } else if(strlen((yyvsp[0].str)) == 14) { + } else if(strlen((yyvsp[(2) - (2)].str)) == 14) { cfg_parser->cfg->val_date_override = - cfg_convert_timeval((yyvsp[0].str)); + cfg_convert_timeval((yyvsp[(2) - (2)].str)); if(!cfg_parser->cfg->val_date_override) yyerror("bad date/time specification"); } else { - if(atoi((yyvsp[0].str)) == 0) + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("number expected"); - cfg_parser->cfg->val_date_override = atoi((yyvsp[0].str)); + cfg_parser->cfg->val_date_override = atoi((yyvsp[(2) - (2)].str)); } - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5324 "util/configparser.c" break; - case 431: -#line 1819 "./util/configparser.y" - { - OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); - if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { + case 433: +#line 1830 "util/configparser.y" + { + OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[(2) - (2)].str))); + if(*(yyvsp[(2) - (2)].str) == '\0' || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { cfg_parser->cfg->val_sig_skew_min = 0; } else { - cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[0].str)); + cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[(2) - (2)].str)); if(!cfg_parser->cfg->val_sig_skew_min) yyerror("number expected"); } - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5340 "util/configparser.c" break; - case 432: -#line 1832 "./util/configparser.y" - { - OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); - if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { + case 434: +#line 1843 "util/configparser.y" + { + OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[(2) - (2)].str))); + if(*(yyvsp[(2) - (2)].str) == '\0' || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { cfg_parser->cfg->val_sig_skew_max = 0; } else { - cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[0].str)); + cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[(2) - (2)].str)); if(!cfg_parser->cfg->val_sig_skew_max) yyerror("number expected"); } - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5356 "util/configparser.c" break; - case 433: -#line 1845 "./util/configparser.y" - { - OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 435: +#line 1856 "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) yyerror("number expected"); - else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->max_ttl = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5368 "util/configparser.c" break; - case 434: -#line 1854 "./util/configparser.y" - { - OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 436: +#line 1865 "util/configparser.y" + { + OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5380 "util/configparser.c" break; - case 435: -#line 1863 "./util/configparser.y" - { - OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 437: +#line 1874 "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) yyerror("number expected"); - else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->min_ttl = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5392 "util/configparser.c" break; - case 436: -#line 1872 "./util/configparser.y" - { - OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 438: +#line 1883 "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) yyerror("number expected"); - else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5404 "util/configparser.c" break; - case 437: -#line 1881 "./util/configparser.y" - { - OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 439: +#line 1892 "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) yyerror("expected yes or no."); else cfg_parser->cfg->val_clean_additional = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5417 "util/configparser.c" break; - case 438: -#line 1891 "./util/configparser.y" - { - OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 440: +#line 1902 "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) yyerror("expected yes or no."); else cfg_parser->cfg->val_permissive_mode = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5430 "util/configparser.c" break; - case 439: -#line 1901 "./util/configparser.y" - { - OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 441: +#line 1912 "util/configparser.y" + { + OUTYY(("P(server_aggressive_nsec:%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->aggressive_nsec = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5444 "util/configparser.c" break; - case 440: -#line 1912 "./util/configparser.y" - { - OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 442: +#line 1923 "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) yyerror("expected yes or no."); - else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5456 "util/configparser.c" break; - case 441: -#line 1921 "./util/configparser.y" - { - OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 443: +#line 1932 "util/configparser.y" + { + OUTYY(("P(server_serve_expired:%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->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5468 "util/configparser.c" break; - case 442: -#line 1930 "./util/configparser.y" - { - OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 444: +#line 1941 "util/configparser.y" + { + OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5480 "util/configparser.c" break; - case 443: -#line 1939 "./util/configparser.y" - { - OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 445: +#line 1950 "util/configparser.y" + { + OUTYY(("P(server_serve_expired_ttl_reset:%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->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5492 "util/configparser.c" break; - case 444: -#line 1948 "./util/configparser.y" - { - OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 446: +#line 1959 "util/configparser.y" + { + OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5504 "util/configparser.c" break; - case 445: -#line 1957 "./util/configparser.y" - { - OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 447: +#line 1968 "util/configparser.y" + { + OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5516 "util/configparser.c" break; - case 446: -#line 1966 "./util/configparser.y" - { - OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 448: +#line 1977 "util/configparser.y" + { + OUTYY(("P(server_serve_original_ttl:%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->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5528 "util/configparser.c" break; - case 447: -#line 1975 "./util/configparser.y" - { - OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 449: +#line 1986 "util/configparser.y" + { + OUTYY(("P(server_fake_dsa:%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."); #if defined(HAVE_SSL) || defined(HAVE_NETTLE) - else fake_dsa = (strcmp((yyvsp[0].str), "yes")==0); + else fake_dsa = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); if(fake_dsa) log_warn("test option fake_dsa is enabled"); #endif - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5544 "util/configparser.c" break; - case 448: -#line 1988 "./util/configparser.y" - { - OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 450: +#line 1999 "util/configparser.y" + { + OUTYY(("P(server_fake_sha1:%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."); #if defined(HAVE_SSL) || defined(HAVE_NETTLE) - else fake_sha1 = (strcmp((yyvsp[0].str), "yes")==0); + else fake_sha1 = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); if(fake_sha1) log_warn("test option fake_sha1 is enabled"); #endif - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5560 "util/configparser.c" break; - case 449: -#line 2001 "./util/configparser.y" - { - OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 451: +#line 2012 "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) yyerror("number expected"); - else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->val_log_level = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5572 "util/configparser.c" break; - case 450: -#line 2010 "./util/configparser.y" - { - OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); + case 452: +#line 2021 "util/configparser.y" + { + OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); - cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); + cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[(2) - (2)].str); } -#line 5582 "util/configparser.c" break; - case 451: -#line 2017 "./util/configparser.y" - { - OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 453: +#line 2028 "util/configparser.y" + { + OUTYY(("P(server_zonemd_permissive_mode:%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->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5594 "util/configparser.c" break; - case 452: -#line 2026 "./util/configparser.y" - { - OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 454: +#line 2037 "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) yyerror("number expected"); - else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->add_holddown = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5606 "util/configparser.c" break; - case 453: -#line 2035 "./util/configparser.y" - { - OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 455: +#line 2046 "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) yyerror("number expected"); - else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->del_holddown = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5618 "util/configparser.c" break; - case 454: -#line 2044 "./util/configparser.y" - { - OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 456: +#line 2055 "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) yyerror("number expected"); - else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->keep_missing = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5630 "util/configparser.c" break; - case 455: -#line 2053 "./util/configparser.y" - { - OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 457: +#line 2064 "util/configparser.y" + { + OUTYY(("P(server_permit_small_holddown:%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->permit_small_holddown = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5643 "util/configparser.c" break; - case 456: -#line 2062 "./util/configparser.y" - { - OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size)) + case 458: +#line 2073 "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)) yyerror("memory size expected"); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5654 "util/configparser.c" break; - case 457: -#line 2070 "./util/configparser.y" - { - OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + case 459: +#line 2081 "util/configparser.y" + { + OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("number expected"); else { - cfg_parser->cfg->key_cache_slabs = atoi((yyvsp[0].str)); + cfg_parser->cfg->key_cache_slabs = atoi((yyvsp[(2) - (2)].str)); if(!is_pow2(cfg_parser->cfg->key_cache_slabs)) yyerror("must be a power of 2"); } - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5670 "util/configparser.c" break; - case 458: -#line 2083 "./util/configparser.y" - { - OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size)) + case 460: +#line 2094 "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)) yyerror("memory size expected"); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5681 "util/configparser.c" break; - case 459: -#line 2091 "./util/configparser.y" - { - OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && - strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && - strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0 - && strcmp((yyvsp[0].str), "typetransparent")!=0 - && strcmp((yyvsp[0].str), "always_transparent")!=0 - && strcmp((yyvsp[0].str), "always_refuse")!=0 - && strcmp((yyvsp[0].str), "always_nxdomain")!=0 - && strcmp((yyvsp[0].str), "always_nodata")!=0 - && strcmp((yyvsp[0].str), "always_deny")!=0 - && strcmp((yyvsp[0].str), "always_null")!=0 - && strcmp((yyvsp[0].str), "noview")!=0 - && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0 - && strcmp((yyvsp[0].str), "inform_redirect") != 0 - && strcmp((yyvsp[0].str), "ipset") != 0) { + case 461: +#line 2102 "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 && + strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 && strcmp((yyvsp[(3) - (3)].str), "redirect")!=0 && + strcmp((yyvsp[(3) - (3)].str), "transparent")!=0 && strcmp((yyvsp[(3) - (3)].str), "nodefault")!=0 + && strcmp((yyvsp[(3) - (3)].str), "typetransparent")!=0 + && strcmp((yyvsp[(3) - (3)].str), "always_transparent")!=0 + && strcmp((yyvsp[(3) - (3)].str), "always_refuse")!=0 + && strcmp((yyvsp[(3) - (3)].str), "always_nxdomain")!=0 + && strcmp((yyvsp[(3) - (3)].str), "always_nodata")!=0 + && strcmp((yyvsp[(3) - (3)].str), "always_deny")!=0 + && strcmp((yyvsp[(3) - (3)].str), "always_null")!=0 + && strcmp((yyvsp[(3) - (3)].str), "noview")!=0 + && strcmp((yyvsp[(3) - (3)].str), "inform")!=0 && strcmp((yyvsp[(3) - (3)].str), "inform_deny")!=0 + && strcmp((yyvsp[(3) - (3)].str), "inform_redirect") != 0 + && strcmp((yyvsp[(3) - (3)].str), "ipset") != 0) { yyerror("local-zone type: expected static, deny, " "refuse, redirect, transparent, " "typetransparent, inform, inform_deny, " @@ -5705,46 +5323,44 @@ yyreduce: "always_refuse, always_nxdomain, " "always_nodata, always_deny, always_null, " "noview, nodefault or ipset"); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } else if(strcmp((yyvsp[0].str), "nodefault")==0) { + free((yyvsp[(2) - (3)].str)); + free((yyvsp[(3) - (3)].str)); + } else if(strcmp((yyvsp[(3) - (3)].str), "nodefault")==0) { if(!cfg_strlist_insert(&cfg_parser->cfg-> - local_zones_nodefault, (yyvsp[-1].str))) + local_zones_nodefault, (yyvsp[(2) - (3)].str))) fatal_exit("out of memory adding local-zone"); - free((yyvsp[0].str)); + free((yyvsp[(3) - (3)].str)); #ifdef USE_IPSET - } else if(strcmp((yyvsp[0].str), "ipset")==0) { + } else if(strcmp((yyvsp[(3) - (3)].str), "ipset")==0) { if(!cfg_strlist_insert(&cfg_parser->cfg-> - local_zones_ipset, (yyvsp[-1].str))) + local_zones_ipset, (yyvsp[(2) - (3)].str))) fatal_exit("out of memory adding local-zone"); - free((yyvsp[0].str)); + free((yyvsp[(3) - (3)].str)); #endif } else { if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones, - (yyvsp[-1].str), (yyvsp[0].str))) + (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) fatal_exit("out of memory adding local-zone"); } } -#line 5729 "util/configparser.c" break; - case 460: -#line 2136 "./util/configparser.y" - { - OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) + case 462: +#line 2147 "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))) fatal_exit("out of memory adding local-data"); } -#line 5739 "util/configparser.c" break; - case 461: -#line 2143 "./util/configparser.y" - { + case 463: +#line 2154 "util/configparser.y" + { char* ptr; - OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); - ptr = cfg_ptr_reverse((yyvsp[0].str)); - free((yyvsp[0].str)); + OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str))); + ptr = cfg_ptr_reverse((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); if(ptr) { if(!cfg_strlist_insert(&cfg_parser->cfg-> local_data, ptr)) @@ -5753,93 +5369,85 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5757 "util/configparser.c" break; - case 462: -#line 2158 "./util/configparser.y" - { - OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 464: +#line 2169 "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) yyerror("expected yes or no."); else cfg_parser->cfg->minimal_responses = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5770 "util/configparser.c" break; - case 463: -#line 2168 "./util/configparser.y" - { - OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 465: +#line 2179 "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) yyerror("expected yes or no."); else cfg_parser->cfg->rrset_roundrobin = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5783 "util/configparser.c" break; - case 464: -#line 2178 "./util/configparser.y" - { - OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); - cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + case 466: +#line 2189 "util/configparser.y" + { + OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[(2) - (2)].str))); + cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5793 "util/configparser.c" break; - case 465: -#line 2185 "./util/configparser.y" - { - OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); - cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + case 467: +#line 2196 "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)); + free((yyvsp[(2) - (2)].str)); } -#line 5803 "util/configparser.c" break; - case 466: -#line 2192 "./util/configparser.y" - { - OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); + case 468: +#line 2203 "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[0].str); + cfg_parser->cfg->dns64_prefix = (yyvsp[(2) - (2)].str); } -#line 5813 "util/configparser.c" break; - case 467: -#line 2199 "./util/configparser.y" - { - OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 469: +#line 2210 "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[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5825 "util/configparser.c" break; - case 468: -#line 2208 "./util/configparser.y" - { - OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); + case 470: +#line 2219 "util/configparser.y" + { + OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, - (yyvsp[0].str))) + (yyvsp[(2) - (2)].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 5836 "util/configparser.c" break; - case 469: -#line 2216 "./util/configparser.y" - { - char* p, *s = (yyvsp[0].str); - OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); + case 471: +#line 2227 "util/configparser.y" + { + char* p, *s = (yyvsp[(2) - (2)].str); + OUTYY(("P(server_define_tag:%s)\n", (yyvsp[(2) - (2)].str))); while((p=strsep(&s, " \t\n")) != NULL) { if(*p) { if(!config_add_tag(cfg_parser->cfg, p)) @@ -5847,800 +5455,742 @@ yyreduce: "out of memory"); } } - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5853 "util/configparser.c" break; - case 470: -#line 2230 "./util/configparser.y" - { + case 472: +#line 2241 "util/configparser.y" + { size_t len = 0; - uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[(3) - (3)].str), &len); - free((yyvsp[0].str)); - OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[-1].str))); + free((yyvsp[(3) - (3)].str)); + OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[(2) - (3)].str))); if(!bitlist) { yyerror("could not parse tags, (define-tag them first)"); - free((yyvsp[-1].str)); + free((yyvsp[(2) - (3)].str)); } if(bitlist) { if(!cfg_strbytelist_insert( &cfg_parser->cfg->local_zone_tags, - (yyvsp[-1].str), bitlist, len)) { + (yyvsp[(2) - (3)].str), bitlist, len)) { yyerror("out of memory"); - free((yyvsp[-1].str)); + free((yyvsp[(2) - (3)].str)); } } } -#line 5877 "util/configparser.c" break; - case 471: -#line 2251 "./util/configparser.y" - { + case 473: +#line 2262 "util/configparser.y" + { size_t len = 0; - uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[(3) - (3)].str), &len); - free((yyvsp[0].str)); - OUTYY(("P(server_access_control_tag:%s)\n", (yyvsp[-1].str))); + free((yyvsp[(3) - (3)].str)); + OUTYY(("P(server_access_control_tag:%s)\n", (yyvsp[(2) - (3)].str))); if(!bitlist) { yyerror("could not parse tags, (define-tag them first)"); - free((yyvsp[-1].str)); + free((yyvsp[(2) - (3)].str)); } if(bitlist) { if(!cfg_strbytelist_insert( &cfg_parser->cfg->acl_tags, - (yyvsp[-1].str), bitlist, len)) { + (yyvsp[(2) - (3)].str), bitlist, len)) { yyerror("out of memory"); - free((yyvsp[-1].str)); + free((yyvsp[(2) - (3)].str)); } } } -#line 5901 "util/configparser.c" break; - case 472: -#line 2272 "./util/configparser.y" - { - OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); + case 474: +#line 2283 "util/configparser.y" + { + OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, - (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { + (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].str))) { yyerror("out of memory"); - free((yyvsp[-2].str)); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); + free((yyvsp[(2) - (4)].str)); + free((yyvsp[(3) - (4)].str)); + free((yyvsp[(4) - (4)].str)); } } -#line 5916 "util/configparser.c" break; - case 473: -#line 2284 "./util/configparser.y" - { - OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); + case 475: +#line 2295 "util/configparser.y" + { + OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, - (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { + (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].str))) { yyerror("out of memory"); - free((yyvsp[-2].str)); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); + free((yyvsp[(2) - (4)].str)); + free((yyvsp[(3) - (4)].str)); + free((yyvsp[(4) - (4)].str)); } } -#line 5931 "util/configparser.c" break; - case 474: -#line 2296 "./util/configparser.y" - { - OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); + case 476: +#line 2307 "util/configparser.y" + { + OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, - (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { + (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].str))) { yyerror("out of memory"); - free((yyvsp[-2].str)); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); + free((yyvsp[(2) - (4)].str)); + free((yyvsp[(3) - (4)].str)); + free((yyvsp[(4) - (4)].str)); } } -#line 5946 "util/configparser.c" break; - case 475: -#line 2308 "./util/configparser.y" - { - OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); + case 477: +#line 2319 "util/configparser.y" + { + OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, - (yyvsp[-1].str), (yyvsp[0].str))) { + (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) { yyerror("out of memory"); } } -#line 5958 "util/configparser.c" break; - case 476: -#line 2317 "./util/configparser.y" - { + case 478: +#line 2328 "util/configparser.y" + { size_t len = 0; - uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[(3) - (3)].str), &len); - free((yyvsp[0].str)); - OUTYY(("P(response_ip_tag:%s)\n", (yyvsp[-1].str))); + free((yyvsp[(3) - (3)].str)); + OUTYY(("P(response_ip_tag:%s)\n", (yyvsp[(2) - (3)].str))); if(!bitlist) { yyerror("could not parse tags, (define-tag them first)"); - free((yyvsp[-1].str)); + free((yyvsp[(2) - (3)].str)); } if(bitlist) { if(!cfg_strbytelist_insert( &cfg_parser->cfg->respip_tags, - (yyvsp[-1].str), bitlist, len)) { + (yyvsp[(2) - (3)].str), bitlist, len)) { yyerror("out of memory"); - free((yyvsp[-1].str)); + free((yyvsp[(2) - (3)].str)); } } } -#line 5982 "util/configparser.c" break; - case 477: -#line 2338 "./util/configparser.y" - { - OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 479: +#line 2349 "util/configparser.y" + { + OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5994 "util/configparser.c" break; - case 478: -#line 2348 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 480: +#line 2359 "util/configparser.y" + { + OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->ratelimit = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 6006 "util/configparser.c" break; - case 479: -#line 2357 "./util/configparser.y" - { - OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) + case 481: +#line 2368 "util/configparser.y" + { + OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->ip_ratelimit_size)) yyerror("memory size expected"); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 6017 "util/configparser.c" break; - case 480: -#line 2365 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) + case 482: +#line 2376 "util/configparser.y" + { + OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->ratelimit_size)) yyerror("memory size expected"); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 6028 "util/configparser.c" break; - case 481: -#line 2373 "./util/configparser.y" - { - OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + case 483: +#line 2384 "util/configparser.y" + { + OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("number expected"); else { - cfg_parser->cfg->ip_ratelimit_slabs = atoi((yyvsp[0].str)); + cfg_parser->cfg->ip_ratelimit_slabs = atoi((yyvsp[(2) - (2)].str)); if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs)) yyerror("must be a power of 2"); } - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 6044 "util/configparser.c" break; - case 482: -#line 2386 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + case 484: +#line 2397 "util/configparser.y" + { + OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("number expected"); else { - cfg_parser->cfg->ratelimit_slabs = atoi((yyvsp[0].str)); + cfg_parser->cfg->ratelimit_slabs = atoi((yyvsp[(2) - (2)].str)); if(!is_pow2(cfg_parser->cfg->ratelimit_slabs)) yyerror("must be a power of 2"); } - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 6060 "util/configparser.c" break; - case 483: -#line 2399 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { + case 485: +#line 2410 "util/configparser.y" + { + OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); + if(atoi((yyvsp[(3) - (3)].str)) == 0 && strcmp((yyvsp[(3) - (3)].str), "0") != 0) { yyerror("number expected"); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); + free((yyvsp[(2) - (3)].str)); + free((yyvsp[(3) - (3)].str)); } else { if(!cfg_str2list_insert(&cfg_parser->cfg-> - ratelimit_for_domain, (yyvsp[-1].str), (yyvsp[0].str))) + ratelimit_for_domain, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) fatal_exit("out of memory adding " "ratelimit-for-domain"); } } -#line 6078 "util/configparser.c" break; - case 484: -#line 2414 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { + case 486: +#line 2425 "util/configparser.y" + { + OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); + if(atoi((yyvsp[(3) - (3)].str)) == 0 && strcmp((yyvsp[(3) - (3)].str), "0") != 0) { yyerror("number expected"); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); + free((yyvsp[(2) - (3)].str)); + free((yyvsp[(3) - (3)].str)); } else { if(!cfg_str2list_insert(&cfg_parser->cfg-> - ratelimit_below_domain, (yyvsp[-1].str), (yyvsp[0].str))) + ratelimit_below_domain, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) fatal_exit("out of memory adding " "ratelimit-below-domain"); } } -#line 6096 "util/configparser.c" break; - case 485: -#line 2429 "./util/configparser.y" - { - OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 487: +#line 2440 "util/configparser.y" + { + OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 6108 "util/configparser.c" break; - case 486: -#line 2438 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 488: +#line 2449 "util/configparser.y" + { + OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 6120 "util/configparser.c" break; - case 487: -#line 2447 "./util/configparser.y" - { + case 489: +#line 2458 "util/configparser.y" + { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 6129 "util/configparser.c" break; - case 488: -#line 2453 "./util/configparser.y" - { - OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) <= 0) + case 490: +#line 2464 "util/configparser.y" + { + OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) <= 0) yyerror("number expected"); - else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->fast_server_num = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 6141 "util/configparser.c" break; - case 489: -#line 2462 "./util/configparser.y" - { - OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 491: +#line 2473 "util/configparser.y" + { + OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 6153 "util/configparser.c" break; - case 490: -#line 2471 "./util/configparser.y" - { - OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 492: +#line 2482 "util/configparser.y" + { + OUTYY(("P(server_qname_minimisation:%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->qname_minimisation = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6166 "util/configparser.c" break; - case 491: -#line 2481 "./util/configparser.y" - { - OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 493: +#line 2492 "util/configparser.y" + { + OUTYY(("P(server_qname_minimisation_strict:%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->qname_minimisation_strict = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6179 "util/configparser.c" break; - case 492: -#line 2491 "./util/configparser.y" - { - OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 494: +#line 2502 "util/configparser.y" + { + OUTYY(("P(server_pad_responses:%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->pad_responses = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6192 "util/configparser.c" break; - case 493: -#line 2501 "./util/configparser.y" - { - OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + case 495: +#line 2512 "util/configparser.y" + { + OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("number expected"); - else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 6204 "util/configparser.c" break; - case 494: -#line 2510 "./util/configparser.y" - { - OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 496: +#line 2521 "util/configparser.y" + { + OUTYY(("P(server_pad_queries:%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->pad_queries = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6217 "util/configparser.c" break; - case 495: -#line 2520 "./util/configparser.y" - { - OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + case 497: +#line 2531 "util/configparser.y" + { + OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("number expected"); - else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 6229 "util/configparser.c" break; - case 496: -#line 2529 "./util/configparser.y" - { + case 498: +#line 2540 "util/configparser.y" + { #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + OUTYY(("P(server_ipsecmod_enabled:%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->ipsecmod_enabled = (strcmp((yyvsp[0].str), "yes")==0); + else cfg_parser->cfg->ipsecmod_enabled = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); #else OUTYY(("P(Compiled without IPsec module, ignoring)\n")); #endif - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 6245 "util/configparser.c" break; - case 497: -#line 2542 "./util/configparser.y" - { + case 499: +#line 2553 "util/configparser.y" + { #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + OUTYY(("P(server_ipsecmod_ignore_bogus:%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->ipsecmod_ignore_bogus = (strcmp((yyvsp[0].str), "yes")==0); + else cfg_parser->cfg->ipsecmod_ignore_bogus = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); #else OUTYY(("P(Compiled without IPsec module, ignoring)\n")); #endif - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 6261 "util/configparser.c" break; - case 498: -#line 2555 "./util/configparser.y" - { + case 500: +#line 2566 "util/configparser.y" + { #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); + OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->ipsecmod_hook); - cfg_parser->cfg->ipsecmod_hook = (yyvsp[0].str); + cfg_parser->cfg->ipsecmod_hook = (yyvsp[(2) - (2)].str); #else OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); #endif } -#line 6276 "util/configparser.c" break; - case 499: -#line 2567 "./util/configparser.y" - { + case 501: +#line 2578 "util/configparser.y" + { #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->ipsecmod_max_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->ipsecmod_max_ttl = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); #else OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); #endif } -#line 6293 "util/configparser.c" break; - case 500: -#line 2581 "./util/configparser.y" - { + case 502: +#line 2592 "util/configparser.y" + { #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str))) + OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[(2) - (2)].str))) yyerror("out of memory"); #else OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); #endif } -#line 6308 "util/configparser.c" break; - case 501: -#line 2593 "./util/configparser.y" - { + case 503: +#line 2604 "util/configparser.y" + { #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + OUTYY(("P(server_ipsecmod_strict:%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->ipsecmod_strict = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->ipsecmod_strict = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); #else OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); #endif } -#line 6325 "util/configparser.c" break; - case 502: -#line 2607 "./util/configparser.y" - { - OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); + case 504: +#line 2618 "util/configparser.y" + { + OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); if(!cfg_str2list_insert( - &cfg_parser->cfg->edns_client_strings, (yyvsp[-1].str), (yyvsp[0].str))) + &cfg_parser->cfg->edns_client_strings, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) fatal_exit("out of memory adding " "edns-client-string"); } -#line 6337 "util/configparser.c" break; - case 503: -#line 2616 "./util/configparser.y" - { - OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + case 505: +#line 2627 "util/configparser.y" + { + OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("option code expected"); - else if(atoi((yyvsp[0].str)) > 65535 || atoi((yyvsp[0].str)) < 0) + else if(atoi((yyvsp[(2) - (2)].str)) > 65535 || atoi((yyvsp[(2) - (2)].str)) < 0) yyerror("option code must be in interval [0, 65535]"); - else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 6352 "util/configparser.c" break; - case 504: -#line 2628 "./util/configparser.y" - { - OUTYY(("P(name:%s)\n", (yyvsp[0].str))); + case 506: +#line 2639 "util/configparser.y" + { + OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->stubs->name) yyerror("stub name override, there must be one name " "for one stub-zone"); free(cfg_parser->cfg->stubs->name); - cfg_parser->cfg->stubs->name = (yyvsp[0].str); + cfg_parser->cfg->stubs->name = (yyvsp[(2) - (2)].str); } -#line 6365 "util/configparser.c" break; - case 505: -#line 2638 "./util/configparser.y" - { - OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) + case 507: +#line 2649 "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))) yyerror("out of memory"); } -#line 6375 "util/configparser.c" break; - case 506: -#line 2645 "./util/configparser.y" - { - OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) + case 508: +#line 2656 "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))) yyerror("out of memory"); } -#line 6385 "util/configparser.c" break; - case 507: -#line 2652 "./util/configparser.y" - { - OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 509: +#line 2663 "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) yyerror("expected yes or no."); - else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6397 "util/configparser.c" break; - case 508: -#line 2661 "./util/configparser.y" - { - OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 510: +#line 2672 "util/configparser.y" + { + OUTYY(("P(stub-no-cache:%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->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6409 "util/configparser.c" break; - case 509: -#line 2670 "./util/configparser.y" - { - OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 511: +#line 2681 "util/configparser.y" + { + OUTYY(("P(stub-ssl-upstream:%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->stubs->ssl_upstream = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6422 "util/configparser.c" break; - case 510: -#line 2680 "./util/configparser.y" - { - OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 512: +#line 2691 "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) yyerror("expected yes or no."); else cfg_parser->cfg->stubs->isprime = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6435 "util/configparser.c" break; - case 511: -#line 2690 "./util/configparser.y" - { - OUTYY(("P(name:%s)\n", (yyvsp[0].str))); + case 513: +#line 2701 "util/configparser.y" + { + OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->forwards->name) yyerror("forward name override, there must be one " "name for one forward-zone"); free(cfg_parser->cfg->forwards->name); - cfg_parser->cfg->forwards->name = (yyvsp[0].str); + cfg_parser->cfg->forwards->name = (yyvsp[(2) - (2)].str); } -#line 6448 "util/configparser.c" break; - case 512: -#line 2700 "./util/configparser.y" - { - OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) + case 514: +#line 2711 "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))) yyerror("out of memory"); } -#line 6458 "util/configparser.c" break; - case 513: -#line 2707 "./util/configparser.y" - { - OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) + case 515: +#line 2718 "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))) yyerror("out of memory"); } -#line 6468 "util/configparser.c" break; - case 514: -#line 2714 "./util/configparser.y" - { - OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 516: +#line 2725 "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) yyerror("expected yes or no."); - else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6480 "util/configparser.c" break; - case 515: -#line 2723 "./util/configparser.y" - { - OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 517: +#line 2734 "util/configparser.y" + { + OUTYY(("P(forward-no-cache:%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->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6492 "util/configparser.c" break; - case 516: -#line 2732 "./util/configparser.y" - { - OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 518: +#line 2743 "util/configparser.y" + { + OUTYY(("P(forward-ssl-upstream:%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->forwards->ssl_upstream = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6505 "util/configparser.c" break; - case 517: -#line 2742 "./util/configparser.y" - { - OUTYY(("P(name:%s)\n", (yyvsp[0].str))); + case 519: +#line 2753 "util/configparser.y" + { + OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->auths->name) yyerror("auth name override, there must be one name " "for one auth-zone"); free(cfg_parser->cfg->auths->name); - cfg_parser->cfg->auths->name = (yyvsp[0].str); + cfg_parser->cfg->auths->name = (yyvsp[(2) - (2)].str); } -#line 6518 "util/configparser.c" break; - case 518: -#line 2752 "./util/configparser.y" - { - OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); + case 520: +#line 2763 "util/configparser.y" + { + OUTYY(("P(zonefile:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->auths->zonefile); - cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); + cfg_parser->cfg->auths->zonefile = (yyvsp[(2) - (2)].str); } -#line 6528 "util/configparser.c" break; - case 519: -#line 2759 "./util/configparser.y" - { - OUTYY(("P(master:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) + case 521: +#line 2770 "util/configparser.y" + { + OUTYY(("P(master:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[(2) - (2)].str))) yyerror("out of memory"); } -#line 6538 "util/configparser.c" break; - case 520: -#line 2766 "./util/configparser.y" - { - OUTYY(("P(url:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) + case 522: +#line 2777 "util/configparser.y" + { + OUTYY(("P(url:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[(2) - (2)].str))) yyerror("out of memory"); } -#line 6548 "util/configparser.c" break; - case 521: -#line 2773 "./util/configparser.y" - { - OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); + case 523: +#line 2784 "util/configparser.y" + { + OUTYY(("P(allow-notify:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, - (yyvsp[0].str))) + (yyvsp[(2) - (2)].str))) yyerror("out of memory"); } -#line 6559 "util/configparser.c" break; - case 522: -#line 2781 "./util/configparser.y" - { - OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 524: +#line 2792 "util/configparser.y" + { + OUTYY(("P(zonemd-reject-absence:%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->auths->zonemd_reject_absence = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6572 "util/configparser.c" break; - case 523: -#line 2791 "./util/configparser.y" - { - OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 525: +#line 2802 "util/configparser.y" + { + OUTYY(("P(for-downstream:%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->auths->for_downstream = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6585 "util/configparser.c" break; - case 524: -#line 2801 "./util/configparser.y" - { - OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 526: +#line 2812 "util/configparser.y" + { + OUTYY(("P(for-upstream:%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->auths->for_upstream = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6598 "util/configparser.c" break; - case 525: -#line 2811 "./util/configparser.y" - { - OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 527: +#line 2822 "util/configparser.y" + { + OUTYY(("P(fallback-enabled:%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->auths->fallback_enabled = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6611 "util/configparser.c" break; - case 526: -#line 2821 "./util/configparser.y" - { - OUTYY(("P(name:%s)\n", (yyvsp[0].str))); + case 528: +#line 2832 "util/configparser.y" + { + OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->views->name) yyerror("view name override, there must be one " "name for one view"); free(cfg_parser->cfg->views->name); - cfg_parser->cfg->views->name = (yyvsp[0].str); + cfg_parser->cfg->views->name = (yyvsp[(2) - (2)].str); } -#line 6624 "util/configparser.c" break; - case 527: -#line 2831 "./util/configparser.y" - { - OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && - strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && - strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0 - && strcmp((yyvsp[0].str), "typetransparent")!=0 - && strcmp((yyvsp[0].str), "always_transparent")!=0 - && strcmp((yyvsp[0].str), "always_refuse")!=0 - && strcmp((yyvsp[0].str), "always_nxdomain")!=0 - && strcmp((yyvsp[0].str), "always_nodata")!=0 - && strcmp((yyvsp[0].str), "always_deny")!=0 - && strcmp((yyvsp[0].str), "always_null")!=0 - && strcmp((yyvsp[0].str), "noview")!=0 - && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0 - && strcmp((yyvsp[0].str), "inform_redirect") != 0 - && strcmp((yyvsp[0].str), "ipset") != 0) { + case 529: +#line 2842 "util/configparser.y" + { + OUTYY(("P(view_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 && + strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 && strcmp((yyvsp[(3) - (3)].str), "redirect")!=0 && + strcmp((yyvsp[(3) - (3)].str), "transparent")!=0 && strcmp((yyvsp[(3) - (3)].str), "nodefault")!=0 + && strcmp((yyvsp[(3) - (3)].str), "typetransparent")!=0 + && strcmp((yyvsp[(3) - (3)].str), "always_transparent")!=0 + && strcmp((yyvsp[(3) - (3)].str), "always_refuse")!=0 + && strcmp((yyvsp[(3) - (3)].str), "always_nxdomain")!=0 + && strcmp((yyvsp[(3) - (3)].str), "always_nodata")!=0 + && strcmp((yyvsp[(3) - (3)].str), "always_deny")!=0 + && strcmp((yyvsp[(3) - (3)].str), "always_null")!=0 + && strcmp((yyvsp[(3) - (3)].str), "noview")!=0 + && strcmp((yyvsp[(3) - (3)].str), "inform")!=0 && strcmp((yyvsp[(3) - (3)].str), "inform_deny")!=0 + && strcmp((yyvsp[(3) - (3)].str), "inform_redirect") != 0 + && strcmp((yyvsp[(3) - (3)].str), "ipset") != 0) { yyerror("local-zone type: expected static, deny, " "refuse, redirect, transparent, " "typetransparent, inform, inform_deny, " @@ -6648,72 +6198,68 @@ yyreduce: "always_refuse, always_nxdomain, " "always_nodata, always_deny, always_null, " "noview, nodefault or ipset"); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } else if(strcmp((yyvsp[0].str), "nodefault")==0) { + free((yyvsp[(2) - (3)].str)); + free((yyvsp[(3) - (3)].str)); + } else if(strcmp((yyvsp[(3) - (3)].str), "nodefault")==0) { if(!cfg_strlist_insert(&cfg_parser->cfg->views-> - local_zones_nodefault, (yyvsp[-1].str))) + local_zones_nodefault, (yyvsp[(2) - (3)].str))) fatal_exit("out of memory adding local-zone"); - free((yyvsp[0].str)); + free((yyvsp[(3) - (3)].str)); #ifdef USE_IPSET - } else if(strcmp((yyvsp[0].str), "ipset")==0) { + } else if(strcmp((yyvsp[(3) - (3)].str), "ipset")==0) { if(!cfg_strlist_insert(&cfg_parser->cfg->views-> - local_zones_ipset, (yyvsp[-1].str))) + local_zones_ipset, (yyvsp[(2) - (3)].str))) fatal_exit("out of memory adding local-zone"); - free((yyvsp[0].str)); + free((yyvsp[(3) - (3)].str)); #endif } else { if(!cfg_str2list_insert( &cfg_parser->cfg->views->local_zones, - (yyvsp[-1].str), (yyvsp[0].str))) + (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) fatal_exit("out of memory adding local-zone"); } } -#line 6673 "util/configparser.c" break; - case 528: -#line 2877 "./util/configparser.y" - { - OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - validate_respip_action((yyvsp[0].str)); + case 530: +#line 2888 "util/configparser.y" + { + OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); + validate_respip_action((yyvsp[(3) - (3)].str)); if(!cfg_str2list_insert( - &cfg_parser->cfg->views->respip_actions, (yyvsp[-1].str), (yyvsp[0].str))) + &cfg_parser->cfg->views->respip_actions, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 6686 "util/configparser.c" break; - case 529: -#line 2887 "./util/configparser.y" - { - OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); + case 531: +#line 2898 "util/configparser.y" + { + OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[(2) - (3)].str))); if(!cfg_str2list_insert( - &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) + &cfg_parser->cfg->views->respip_data, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6697 "util/configparser.c" break; - case 530: -#line 2895 "./util/configparser.y" - { - OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { + case 532: +#line 2906 "util/configparser.y" + { + OUTYY(("P(view_local_data:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[(2) - (2)].str))) { fatal_exit("out of memory adding local-data"); } } -#line 6708 "util/configparser.c" break; - case 531: -#line 2903 "./util/configparser.y" - { + case 533: +#line 2914 "util/configparser.y" + { char* ptr; - OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); - ptr = cfg_ptr_reverse((yyvsp[0].str)); - free((yyvsp[0].str)); + OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str))); + ptr = cfg_ptr_reverse((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); if(ptr) { if(!cfg_strlist_insert(&cfg_parser->cfg->views-> local_data, ptr)) @@ -6722,785 +6268,749 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6726 "util/configparser.c" break; - case 532: -#line 2918 "./util/configparser.y" - { - OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 534: +#line 2929 "util/configparser.y" + { + OUTYY(("P(view-first:%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->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6738 "util/configparser.c" break; - case 533: -#line 2927 "./util/configparser.y" - { + case 535: +#line 2938 "util/configparser.y" + { OUTYY(("\nP(remote-control:)\n")); } -#line 6746 "util/configparser.c" break; - case 544: -#line 2938 "./util/configparser.y" - { - OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 546: +#line 2949 "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) yyerror("expected yes or no."); else cfg_parser->cfg->remote_control_enable = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6759 "util/configparser.c" break; - case 545: -#line 2948 "./util/configparser.y" - { - OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + case 547: +#line 2959 "util/configparser.y" + { + OUTYY(("P(control_port:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("control port number expected"); - else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->control_port = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 6771 "util/configparser.c" break; - case 546: -#line 2957 "./util/configparser.y" - { - OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) + case 548: +#line 2968 "util/configparser.y" + { + OUTYY(("P(control_interface:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[(2) - (2)].str))) yyerror("out of memory"); } -#line 6781 "util/configparser.c" break; - case 547: -#line 2964 "./util/configparser.y" - { - OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); - cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + case 549: +#line 2975 "util/configparser.y" + { + OUTYY(("P(control_use_cert:%s)\n", (yyvsp[(2) - (2)].str))); + cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6791 "util/configparser.c" break; - case 548: -#line 2971 "./util/configparser.y" - { - OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); + case 550: +#line 2982 "util/configparser.y" + { + OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->server_key_file); - cfg_parser->cfg->server_key_file = (yyvsp[0].str); + cfg_parser->cfg->server_key_file = (yyvsp[(2) - (2)].str); } -#line 6801 "util/configparser.c" break; - case 549: -#line 2978 "./util/configparser.y" - { - OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); + case 551: +#line 2989 "util/configparser.y" + { + OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->server_cert_file); - cfg_parser->cfg->server_cert_file = (yyvsp[0].str); + cfg_parser->cfg->server_cert_file = (yyvsp[(2) - (2)].str); } -#line 6811 "util/configparser.c" break; - case 550: -#line 2985 "./util/configparser.y" - { - OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); + case 552: +#line 2996 "util/configparser.y" + { + OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->control_key_file); - cfg_parser->cfg->control_key_file = (yyvsp[0].str); + cfg_parser->cfg->control_key_file = (yyvsp[(2) - (2)].str); } -#line 6821 "util/configparser.c" break; - case 551: -#line 2992 "./util/configparser.y" - { - OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); + case 553: +#line 3003 "util/configparser.y" + { + OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->control_cert_file); - cfg_parser->cfg->control_cert_file = (yyvsp[0].str); + cfg_parser->cfg->control_cert_file = (yyvsp[(2) - (2)].str); } -#line 6831 "util/configparser.c" break; - case 552: -#line 2999 "./util/configparser.y" - { + case 554: +#line 3010 "util/configparser.y" + { OUTYY(("\nP(dnstap:)\n")); } -#line 6839 "util/configparser.c" break; - case 574: -#line 3019 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 576: +#line 3030 "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[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->dnstap = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6851 "util/configparser.c" break; - case 575: -#line 3028 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 577: +#line 3039 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_bidirectional:%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_bidirectional = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6864 "util/configparser.c" break; - case 576: -#line 3038 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); + case 578: +#line 3049 "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[0].str); + cfg_parser->cfg->dnstap_socket_path = (yyvsp[(2) - (2)].str); } -#line 6874 "util/configparser.c" break; - case 577: -#line 3045 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); + case 579: +#line 3056 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->dnstap_ip); - cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); + cfg_parser->cfg->dnstap_ip = (yyvsp[(2) - (2)].str); } -#line 6884 "util/configparser.c" break; - case 578: -#line 3052 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 580: +#line 3063 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_tls:%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_tls = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6896 "util/configparser.c" break; - case 579: -#line 3061 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); + case 581: +#line 3072 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->dnstap_tls_server_name); - cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); + cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[(2) - (2)].str); } -#line 6906 "util/configparser.c" break; - case 580: -#line 3068 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); + case 582: +#line 3079 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->dnstap_tls_cert_bundle); - cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); + cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[(2) - (2)].str); } -#line 6916 "util/configparser.c" break; - case 581: -#line 3075 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); + case 583: +#line 3086 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->dnstap_tls_client_key_file); - cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); + cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[(2) - (2)].str); } -#line 6926 "util/configparser.c" break; - case 582: -#line 3082 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); + case 584: +#line 3093 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->dnstap_tls_client_cert_file); - cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); + cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[(2) - (2)].str); } -#line 6936 "util/configparser.c" break; - case 583: -#line 3089 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 585: +#line 3100 "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[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6948 "util/configparser.c" break; - case 584: -#line 3098 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 586: +#line 3109 "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[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6960 "util/configparser.c" break; - case 585: -#line 3107 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); + case 587: +#line 3118 "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[0].str); + cfg_parser->cfg->dnstap_identity = (yyvsp[(2) - (2)].str); } -#line 6970 "util/configparser.c" break; - case 586: -#line 3114 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); + case 588: +#line 3125 "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[0].str); + cfg_parser->cfg->dnstap_version = (yyvsp[(2) - (2)].str); } -#line 6980 "util/configparser.c" break; - case 587: -#line 3121 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 589: +#line 3132 "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[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6993 "util/configparser.c" break; - case 588: -#line 3131 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 590: +#line 3142 "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[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 7006 "util/configparser.c" break; - case 589: -#line 3141 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 591: +#line 3152 "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[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 7019 "util/configparser.c" break; - case 590: -#line 3151 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 592: +#line 3162 "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[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 7032 "util/configparser.c" break; - case 591: -#line 3161 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 593: +#line 3172 "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[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 7045 "util/configparser.c" break; - case 592: -#line 3171 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 594: +#line 3182 "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[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 7058 "util/configparser.c" break; - case 593: -#line 3181 "./util/configparser.y" - { + case 595: +#line 3192 "util/configparser.y" + { OUTYY(("\nP(python:)\n")); } -#line 7066 "util/configparser.c" break; - case 597: -#line 3190 "./util/configparser.y" - { - OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) + case 599: +#line 3201 "util/configparser.y" + { + OUTYY(("P(python-script:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[(2) - (2)].str))) yyerror("out of memory"); } -#line 7076 "util/configparser.c" break; - case 598: -#line 3196 "./util/configparser.y" - { + case 600: +#line 3207 "util/configparser.y" + { OUTYY(("\nP(dynlib:)\n")); } -#line 7084 "util/configparser.c" break; - case 602: -#line 3205 "./util/configparser.y" - { - OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) + case 604: +#line 3216 "util/configparser.y" + { + OUTYY(("P(dynlib-file:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[(2) - (2)].str))) yyerror("out of memory"); } -#line 7094 "util/configparser.c" break; - case 603: -#line 3211 "./util/configparser.y" - { - OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); - if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 605: +#line 3222 "util/configparser.y" + { + OUTYY(("P(disable_dnssec_lame_check:%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->disable_dnssec_lame_check = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 7107 "util/configparser.c" break; - case 604: -#line 3221 "./util/configparser.y" - { - OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); + case 606: +#line 3232 "util/configparser.y" + { + OUTYY(("P(server_log_identity:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->log_identity); - cfg_parser->cfg->log_identity = (yyvsp[0].str); + cfg_parser->cfg->log_identity = (yyvsp[(2) - (2)].str); } -#line 7117 "util/configparser.c" break; - case 605: -#line 3228 "./util/configparser.y" - { - OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - validate_respip_action((yyvsp[0].str)); + case 607: +#line 3239 "util/configparser.y" + { + OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); + validate_respip_action((yyvsp[(3) - (3)].str)); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions, - (yyvsp[-1].str), (yyvsp[0].str))) + (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) fatal_exit("out of memory adding response-ip"); } -#line 7129 "util/configparser.c" break; - case 606: -#line 3237 "./util/configparser.y" - { - OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); + case 608: +#line 3248 "util/configparser.y" + { + OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[(2) - (3)].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, - (yyvsp[-1].str), (yyvsp[0].str))) + (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 7140 "util/configparser.c" break; - case 607: -#line 3245 "./util/configparser.y" - { + case 609: +#line 3256 "util/configparser.y" + { OUTYY(("\nP(dnscrypt:)\n")); } -#line 7148 "util/configparser.c" break; - case 620: -#line 3261 "./util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + case 622: +#line 3272 "util/configparser.y" + { + OUTYY(("P(dnsc_dnscrypt_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->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 7160 "util/configparser.c" break; - case 621: -#line 3271 "./util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + case 623: +#line 3282 "util/configparser.y" + { + OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("port number expected"); - else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 7172 "util/configparser.c" break; - case 622: -#line 3280 "./util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); + case 624: +#line 3291 "util/configparser.y" + { + OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->dnscrypt_provider); - cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); + cfg_parser->cfg->dnscrypt_provider = (yyvsp[(2) - (2)].str); } -#line 7182 "util/configparser.c" break; - case 623: -#line 3287 "./util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); - if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) - log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[0].str)); - if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) + case 625: +#line 3298 "util/configparser.y" + { + OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[(2) - (2)].str))); + if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[(2) - (2)].str))) + log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[(2) - (2)].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[(2) - (2)].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 7194 "util/configparser.c" break; - case 624: -#line 3296 "./util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) + case 626: +#line 3307 "util/configparser.y" + { + OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[(2) - (2)].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 7204 "util/configparser.c" break; - case 625: -#line 3303 "./util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); - if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) - log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[0].str)); - if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) + case 627: +#line 3314 "util/configparser.y" + { + OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[(2) - (2)].str))); + if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[(2) - (2)].str))) + log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[(2) - (2)].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[(2) - (2)].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 7216 "util/configparser.c" break; - case 626: -#line 3312 "./util/configparser.y" - { - OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) + case 628: +#line 3323 "util/configparser.y" + { + OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 7227 "util/configparser.c" break; - case 627: -#line 3320 "./util/configparser.y" - { - OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + case 629: +#line 3331 "util/configparser.y" + { + OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("number expected"); else { - cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi((yyvsp[0].str)); + cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi((yyvsp[(2) - (2)].str)); if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs)) yyerror("must be a power of 2"); } - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 7243 "util/configparser.c" break; - case 628: -#line 3333 "./util/configparser.y" - { - OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) + case 630: +#line 3344 "util/configparser.y" + { + OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 7254 "util/configparser.c" break; - case 629: -#line 3341 "./util/configparser.y" - { - OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + case 631: +#line 3352 "util/configparser.y" + { + OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("number expected"); else { - cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi((yyvsp[0].str)); + cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi((yyvsp[(2) - (2)].str)); if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs)) yyerror("must be a power of 2"); } - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 7270 "util/configparser.c" break; - case 630: -#line 3354 "./util/configparser.y" - { + case 632: +#line 3365 "util/configparser.y" + { OUTYY(("\nP(cachedb:)\n")); } -#line 7278 "util/configparser.c" break; - case 639: -#line 3365 "./util/configparser.y" - { + case 641: +#line 3376 "util/configparser.y" + { #ifdef USE_CACHEDB - OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); + OUTYY(("P(backend:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->cachedb_backend); - cfg_parser->cfg->cachedb_backend = (yyvsp[0].str); + cfg_parser->cfg->cachedb_backend = (yyvsp[(2) - (2)].str); #else OUTYY(("P(Compiled without cachedb, ignoring)\n")); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); #endif } -#line 7293 "util/configparser.c" break; - case 640: -#line 3377 "./util/configparser.y" - { + case 642: +#line 3388 "util/configparser.y" + { #ifdef USE_CACHEDB - OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); + OUTYY(("P(secret-seed:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->cachedb_secret); - cfg_parser->cfg->cachedb_secret = (yyvsp[0].str); + cfg_parser->cfg->cachedb_secret = (yyvsp[(2) - (2)].str); #else OUTYY(("P(Compiled without cachedb, ignoring)\n")); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); #endif } -#line 7308 "util/configparser.c" break; - case 641: -#line 3389 "./util/configparser.y" - { + case 643: +#line 3400 "util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) - OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); + OUTYY(("P(redis_server_host:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->redis_server_host); - cfg_parser->cfg->redis_server_host = (yyvsp[0].str); + cfg_parser->cfg->redis_server_host = (yyvsp[(2) - (2)].str); #else OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); #endif } -#line 7323 "util/configparser.c" break; - case 642: -#line 3401 "./util/configparser.y" - { + case 644: +#line 3412 "util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; - OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str))); - port = atoi((yyvsp[0].str)); + OUTYY(("P(redis_server_port:%s)\n", (yyvsp[(2) - (2)].str))); + port = atoi((yyvsp[(2) - (2)].str)); if(port == 0 || port < 0 || port > 65535) yyerror("valid redis server port number expected"); else cfg_parser->cfg->redis_server_port = port; #else OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); #endif - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 7341 "util/configparser.c" break; - case 643: -#line 3416 "./util/configparser.y" - { + case 645: +#line 3427 "util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) - OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + OUTYY(("P(redis_timeout:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("redis timeout value expected"); - else cfg_parser->cfg->redis_timeout = atoi((yyvsp[0].str)); + else cfg_parser->cfg->redis_timeout = atoi((yyvsp[(2) - (2)].str)); #else OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); #endif - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 7357 "util/configparser.c" break; - case 644: -#line 3429 "./util/configparser.y" - { + case 646: +#line 3440 "util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) - OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + OUTYY(("P(redis_expire_records:%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->redis_expire_records = (strcmp((yyvsp[0].str), "yes")==0); + else cfg_parser->cfg->redis_expire_records = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); #else OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); #endif - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 7373 "util/configparser.c" break; - case 645: -#line 3442 "./util/configparser.y" - { - OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if (atoi((yyvsp[0].str)) < 0) + case 647: +#line 3453 "util/configparser.y" + { + OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); + if (atoi((yyvsp[(3) - (3)].str)) < 0) yyerror("positive number expected"); else { - if(!cfg_str2list_insert(&cfg_parser->cfg->tcp_connection_limits, (yyvsp[-1].str), (yyvsp[0].str))) + if(!cfg_str2list_insert(&cfg_parser->cfg->tcp_connection_limits, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) fatal_exit("out of memory adding tcp connection limit"); } } -#line 7387 "util/configparser.c" break; - case 646: -#line 3453 "./util/configparser.y" - { + case 648: +#line 3464 "util/configparser.y" + { OUTYY(("\nP(ipset:)\n")); } -#line 7395 "util/configparser.c" break; - case 651: -#line 3462 "./util/configparser.y" - { + case 653: +#line 3473 "util/configparser.y" + { #ifdef USE_IPSET - OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); + OUTYY(("P(name-v4:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->ipset_name_v4) yyerror("ipset name v4 override, there must be one " "name for ip v4"); free(cfg_parser->cfg->ipset_name_v4); - cfg_parser->cfg->ipset_name_v4 = (yyvsp[0].str); + cfg_parser->cfg->ipset_name_v4 = (yyvsp[(2) - (2)].str); #else OUTYY(("P(Compiled without ipset, ignoring)\n")); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); #endif } -#line 7413 "util/configparser.c" break; - case 652: -#line 3477 "./util/configparser.y" - { + case 654: +#line 3488 "util/configparser.y" + { #ifdef USE_IPSET - OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); + OUTYY(("P(name-v6:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->ipset_name_v6) yyerror("ipset name v6 override, there must be one " "name for ip v6"); free(cfg_parser->cfg->ipset_name_v6); - cfg_parser->cfg->ipset_name_v6 = (yyvsp[0].str); + cfg_parser->cfg->ipset_name_v6 = (yyvsp[(2) - (2)].str); #else OUTYY(("P(Compiled without ipset, ignoring)\n")); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); #endif } -#line 7431 "util/configparser.c" break; -#line 7435 "util/configparser.c" - +/* Line 1267 of yacc.c. */ +#line 6921 "util/configparser.c" default: break; } - /* User semantic actions sometimes alter yychar, and that requires - that yytoken be updated with the new translation. We take the - approach of translating immediately before every use of yytoken. - One alternative is translating here after every semantic action, - but that translation would be missed if the semantic action invokes - YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or - if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an - incorrect destructor might then be invoked immediately. In the - case of YYERROR or YYBACKUP, subsequent parser actions might lead - to an incorrect destructor call or verbose syntax error message - before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; + YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; - /* Now 'shift' the result of the reduction. Determine what state + + /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ - { - const int yylhs = yyr1[yyn] - YYNTOKENS; - const int yyi = yypgoto[yylhs] + *yyssp; - yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp - ? yytable[yyi] - : yydefgoto[yylhs]); - } + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; -/*--------------------------------------. -| yyerrlab -- here on detecting error. | -`--------------------------------------*/ +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ yyerrlab: - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; +#if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif } + + if (yyerrstatus == 3) { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } else - { - yydestruct ("Error: discarding", - yytoken, &yylval); - yychar = YYEMPTY; - } + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } } - /* Else will try to reuse lookahead token after shifting the error + /* Else will try to reuse look-ahead token after shifting the error token. */ goto yyerrlab1; @@ -7509,12 +7019,14 @@ yyerrlab: | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: - /* Pacify compilers when the user code never invokes YYERROR and the - label yyerrorlab therefore never appears in user code. */ - if (0) - YYERROR; - /* Do not reclaim the symbols of the rule whose action triggered + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; @@ -7527,42 +7039,42 @@ yyerrorlab: | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ + yyerrstatus = 3; /* Each real token shifted decrements this. */ - /* Pop stack until we find a state that shifts the error token. */ for (;;) { yyn = yypact[yystate]; - if (!yypact_value_is_default (yyn)) - { - yyn += YYSYMBOL_YYerror; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) - YYABORT; + YYABORT; yydestruct ("Error: popping", - YY_ACCESSING_SYMBOL (yystate), yyvsp); + yystos[yystate], yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + if (yyn == YYFINAL) + YYACCEPT; + *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; @@ -7575,7 +7087,6 @@ yyacceptlab: yyresult = 0; goto yyreturn; - /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ @@ -7583,8 +7094,7 @@ yyabortlab: yyresult = 1; goto yyreturn; - -#if !defined yyoverflow +#ifndef yyoverflow /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ @@ -7594,38 +7104,34 @@ yyexhaustedlab: /* Fall through. */ #endif - -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ yyreturn: - if (yychar != YYEMPTY) - { - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = YYTRANSLATE (yychar); - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval); - } - /* Do not reclaim the symbols of the rule whose action triggered + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", - YY_ACCESSING_SYMBOL (+*yyssp), yyvsp); + yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif - - return yyresult; +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); } -#line 3491 "./util/configparser.y" + +#line 3502 "util/configparser.y" /* parse helper routines could be here */ @@ -7647,3 +7153,4 @@ validate_respip_action(const char* action) } + diff --git a/util/configparser.h b/util/configparser.h index 5f1f73fec..430f09180 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,14 +1,14 @@ -/* A Bison parser, made by GNU Bison 3.6.4. */ +/* A Bison parser, made by GNU Bison 2.3. */ -/* Bison interface for Yacc-like parsers in C +/* Skeleton interface for Bison's Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, - Inc. + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. - This program is free software: you can redistribute it and/or modify + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. + the Free Software Foundation; either version 2, or (at your option) + any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -16,7 +16,9 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -31,346 +33,326 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, - especially those whose name start with YY_ or yy_. They are - private implementation details that can be changed or removed. */ - -#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED -# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token kinds. */ +/* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - enum yytokentype - { - YYEMPTY = -2, - YYEOF = 0, /* "end of file" */ - YYerror = 256, /* error */ - YYUNDEF = 257, /* "invalid token" */ - SPACE = 258, /* SPACE */ - LETTER = 259, /* LETTER */ - NEWLINE = 260, /* NEWLINE */ - COMMENT = 261, /* COMMENT */ - COLON = 262, /* COLON */ - ANY = 263, /* ANY */ - ZONESTR = 264, /* ZONESTR */ - STRING_ARG = 265, /* STRING_ARG */ - VAR_FORCE_TOPLEVEL = 266, /* VAR_FORCE_TOPLEVEL */ - VAR_SERVER = 267, /* VAR_SERVER */ - VAR_VERBOSITY = 268, /* VAR_VERBOSITY */ - VAR_NUM_THREADS = 269, /* VAR_NUM_THREADS */ - VAR_PORT = 270, /* VAR_PORT */ - VAR_OUTGOING_RANGE = 271, /* VAR_OUTGOING_RANGE */ - VAR_INTERFACE = 272, /* VAR_INTERFACE */ - VAR_PREFER_IP4 = 273, /* VAR_PREFER_IP4 */ - VAR_DO_IP4 = 274, /* VAR_DO_IP4 */ - VAR_DO_IP6 = 275, /* VAR_DO_IP6 */ - VAR_PREFER_IP6 = 276, /* VAR_PREFER_IP6 */ - VAR_DO_UDP = 277, /* VAR_DO_UDP */ - VAR_DO_TCP = 278, /* VAR_DO_TCP */ - VAR_TCP_MSS = 279, /* VAR_TCP_MSS */ - VAR_OUTGOING_TCP_MSS = 280, /* VAR_OUTGOING_TCP_MSS */ - VAR_TCP_IDLE_TIMEOUT = 281, /* VAR_TCP_IDLE_TIMEOUT */ - VAR_EDNS_TCP_KEEPALIVE = 282, /* VAR_EDNS_TCP_KEEPALIVE */ - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ - VAR_CHROOT = 284, /* VAR_CHROOT */ - VAR_USERNAME = 285, /* VAR_USERNAME */ - VAR_DIRECTORY = 286, /* VAR_DIRECTORY */ - VAR_LOGFILE = 287, /* VAR_LOGFILE */ - VAR_PIDFILE = 288, /* VAR_PIDFILE */ - VAR_MSG_CACHE_SIZE = 289, /* VAR_MSG_CACHE_SIZE */ - VAR_MSG_CACHE_SLABS = 290, /* VAR_MSG_CACHE_SLABS */ - VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD */ - VAR_RRSET_CACHE_SIZE = 292, /* VAR_RRSET_CACHE_SIZE */ - VAR_RRSET_CACHE_SLABS = 293, /* VAR_RRSET_CACHE_SLABS */ - VAR_OUTGOING_NUM_TCP = 294, /* VAR_OUTGOING_NUM_TCP */ - VAR_INFRA_HOST_TTL = 295, /* VAR_INFRA_HOST_TTL */ - VAR_INFRA_LAME_TTL = 296, /* VAR_INFRA_LAME_TTL */ - VAR_INFRA_CACHE_SLABS = 297, /* VAR_INFRA_CACHE_SLABS */ - VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS */ - VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE */ - VAR_NAME = 300, /* VAR_NAME */ - VAR_STUB_ZONE = 301, /* VAR_STUB_ZONE */ - VAR_STUB_HOST = 302, /* VAR_STUB_HOST */ - VAR_STUB_ADDR = 303, /* VAR_STUB_ADDR */ - VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY */ - VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE */ - VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES */ - VAR_FORWARD_ZONE = 307, /* VAR_FORWARD_ZONE */ - VAR_FORWARD_HOST = 308, /* VAR_FORWARD_HOST */ - VAR_FORWARD_ADDR = 309, /* VAR_FORWARD_ADDR */ - VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS */ - VAR_HIDE_IDENTITY = 311, /* VAR_HIDE_IDENTITY */ - VAR_HIDE_VERSION = 312, /* VAR_HIDE_VERSION */ - VAR_IDENTITY = 313, /* VAR_IDENTITY */ - VAR_VERSION = 314, /* VAR_VERSION */ - VAR_HARDEN_GLUE = 315, /* VAR_HARDEN_GLUE */ - VAR_MODULE_CONF = 316, /* VAR_MODULE_CONF */ - VAR_TRUST_ANCHOR_FILE = 317, /* VAR_TRUST_ANCHOR_FILE */ - VAR_TRUST_ANCHOR = 318, /* VAR_TRUST_ANCHOR */ - VAR_VAL_OVERRIDE_DATE = 319, /* VAR_VAL_OVERRIDE_DATE */ - VAR_BOGUS_TTL = 320, /* VAR_BOGUS_TTL */ - VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL */ - VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE */ - VAR_INCOMING_NUM_TCP = 323, /* VAR_INCOMING_NUM_TCP */ - VAR_MSG_BUFFER_SIZE = 324, /* VAR_MSG_BUFFER_SIZE */ - VAR_KEY_CACHE_SIZE = 325, /* VAR_KEY_CACHE_SIZE */ - VAR_KEY_CACHE_SLABS = 326, /* VAR_KEY_CACHE_SLABS */ - VAR_TRUSTED_KEYS_FILE = 327, /* VAR_TRUSTED_KEYS_FILE */ - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ - VAR_USE_SYSLOG = 329, /* VAR_USE_SYSLOG */ - VAR_OUTGOING_INTERFACE = 330, /* VAR_OUTGOING_INTERFACE */ - VAR_ROOT_HINTS = 331, /* VAR_ROOT_HINTS */ - VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST */ - VAR_CACHE_MAX_TTL = 333, /* VAR_CACHE_MAX_TTL */ - VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED */ - VAR_ACCESS_CONTROL = 335, /* VAR_ACCESS_CONTROL */ - VAR_LOCAL_ZONE = 336, /* VAR_LOCAL_ZONE */ - VAR_LOCAL_DATA = 337, /* VAR_LOCAL_DATA */ - VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC */ - VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL */ - VAR_DO_DAEMONIZE = 340, /* VAR_DO_DAEMONIZE */ - VAR_USE_CAPS_FOR_ID = 341, /* VAR_USE_CAPS_FOR_ID */ - VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE */ - VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT */ - VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID */ - VAR_DLV_ANCHOR_FILE = 345, /* VAR_DLV_ANCHOR_FILE */ - VAR_DLV_ANCHOR = 346, /* VAR_DLV_ANCHOR */ - VAR_NEG_CACHE_SIZE = 347, /* VAR_NEG_CACHE_SIZE */ - VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH */ - VAR_PRIVATE_ADDRESS = 349, /* VAR_PRIVATE_ADDRESS */ - VAR_PRIVATE_DOMAIN = 350, /* VAR_PRIVATE_DOMAIN */ - VAR_REMOTE_CONTROL = 351, /* VAR_REMOTE_CONTROL */ - VAR_CONTROL_ENABLE = 352, /* VAR_CONTROL_ENABLE */ - VAR_CONTROL_INTERFACE = 353, /* VAR_CONTROL_INTERFACE */ - VAR_CONTROL_PORT = 354, /* VAR_CONTROL_PORT */ - VAR_SERVER_KEY_FILE = 355, /* VAR_SERVER_KEY_FILE */ - VAR_SERVER_CERT_FILE = 356, /* VAR_SERVER_CERT_FILE */ - VAR_CONTROL_KEY_FILE = 357, /* VAR_CONTROL_KEY_FILE */ - VAR_CONTROL_CERT_FILE = 358, /* VAR_CONTROL_CERT_FILE */ - VAR_CONTROL_USE_CERT = 359, /* VAR_CONTROL_USE_CERT */ - VAR_TCP_REUSE_TIMEOUT = 360, /* VAR_TCP_REUSE_TIMEOUT */ - VAR_MAX_REUSE_TCP_QUERIES = 361, /* VAR_MAX_REUSE_TCP_QUERIES */ - VAR_EXTENDED_STATISTICS = 362, /* VAR_EXTENDED_STATISTICS */ - VAR_LOCAL_DATA_PTR = 363, /* VAR_LOCAL_DATA_PTR */ - VAR_JOSTLE_TIMEOUT = 364, /* VAR_JOSTLE_TIMEOUT */ - VAR_STUB_PRIME = 365, /* VAR_STUB_PRIME */ - VAR_UNWANTED_REPLY_THRESHOLD = 366, /* VAR_UNWANTED_REPLY_THRESHOLD */ - VAR_LOG_TIME_ASCII = 367, /* VAR_LOG_TIME_ASCII */ - VAR_DOMAIN_INSECURE = 368, /* VAR_DOMAIN_INSECURE */ - VAR_PYTHON = 369, /* VAR_PYTHON */ - VAR_PYTHON_SCRIPT = 370, /* VAR_PYTHON_SCRIPT */ - VAR_VAL_SIG_SKEW_MIN = 371, /* VAR_VAL_SIG_SKEW_MIN */ - VAR_VAL_SIG_SKEW_MAX = 372, /* VAR_VAL_SIG_SKEW_MAX */ - VAR_CACHE_MIN_TTL = 373, /* VAR_CACHE_MIN_TTL */ - VAR_VAL_LOG_LEVEL = 374, /* VAR_VAL_LOG_LEVEL */ - VAR_AUTO_TRUST_ANCHOR_FILE = 375, /* VAR_AUTO_TRUST_ANCHOR_FILE */ - VAR_KEEP_MISSING = 376, /* VAR_KEEP_MISSING */ - VAR_ADD_HOLDDOWN = 377, /* VAR_ADD_HOLDDOWN */ - VAR_DEL_HOLDDOWN = 378, /* VAR_DEL_HOLDDOWN */ - VAR_SO_RCVBUF = 379, /* VAR_SO_RCVBUF */ - VAR_EDNS_BUFFER_SIZE = 380, /* VAR_EDNS_BUFFER_SIZE */ - VAR_PREFETCH = 381, /* VAR_PREFETCH */ - VAR_PREFETCH_KEY = 382, /* VAR_PREFETCH_KEY */ - VAR_SO_SNDBUF = 383, /* VAR_SO_SNDBUF */ - VAR_SO_REUSEPORT = 384, /* VAR_SO_REUSEPORT */ - VAR_HARDEN_BELOW_NXDOMAIN = 385, /* VAR_HARDEN_BELOW_NXDOMAIN */ - VAR_IGNORE_CD_FLAG = 386, /* VAR_IGNORE_CD_FLAG */ - VAR_LOG_QUERIES = 387, /* VAR_LOG_QUERIES */ - VAR_LOG_REPLIES = 388, /* VAR_LOG_REPLIES */ - VAR_LOG_LOCAL_ACTIONS = 389, /* VAR_LOG_LOCAL_ACTIONS */ - VAR_TCP_UPSTREAM = 390, /* VAR_TCP_UPSTREAM */ - VAR_SSL_UPSTREAM = 391, /* VAR_SSL_UPSTREAM */ - VAR_SSL_SERVICE_KEY = 392, /* VAR_SSL_SERVICE_KEY */ - VAR_SSL_SERVICE_PEM = 393, /* VAR_SSL_SERVICE_PEM */ - VAR_SSL_PORT = 394, /* VAR_SSL_PORT */ - VAR_FORWARD_FIRST = 395, /* VAR_FORWARD_FIRST */ - VAR_STUB_SSL_UPSTREAM = 396, /* VAR_STUB_SSL_UPSTREAM */ - VAR_FORWARD_SSL_UPSTREAM = 397, /* VAR_FORWARD_SSL_UPSTREAM */ - VAR_TLS_CERT_BUNDLE = 398, /* VAR_TLS_CERT_BUNDLE */ - VAR_HTTPS_PORT = 399, /* VAR_HTTPS_PORT */ - VAR_HTTP_ENDPOINT = 400, /* VAR_HTTP_ENDPOINT */ - VAR_HTTP_MAX_STREAMS = 401, /* VAR_HTTP_MAX_STREAMS */ - VAR_HTTP_QUERY_BUFFER_SIZE = 402, /* VAR_HTTP_QUERY_BUFFER_SIZE */ - VAR_HTTP_RESPONSE_BUFFER_SIZE = 403, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ - VAR_HTTP_NODELAY = 404, /* VAR_HTTP_NODELAY */ - VAR_HTTP_NOTLS_DOWNSTREAM = 405, /* VAR_HTTP_NOTLS_DOWNSTREAM */ - VAR_STUB_FIRST = 406, /* VAR_STUB_FIRST */ - VAR_MINIMAL_RESPONSES = 407, /* VAR_MINIMAL_RESPONSES */ - VAR_RRSET_ROUNDROBIN = 408, /* VAR_RRSET_ROUNDROBIN */ - VAR_MAX_UDP_SIZE = 409, /* VAR_MAX_UDP_SIZE */ - VAR_DELAY_CLOSE = 410, /* VAR_DELAY_CLOSE */ - VAR_UDP_CONNECT = 411, /* VAR_UDP_CONNECT */ - VAR_UNBLOCK_LAN_ZONES = 412, /* VAR_UNBLOCK_LAN_ZONES */ - VAR_INSECURE_LAN_ZONES = 413, /* VAR_INSECURE_LAN_ZONES */ - VAR_INFRA_CACHE_MIN_RTT = 414, /* VAR_INFRA_CACHE_MIN_RTT */ - VAR_INFRA_KEEP_PROBING = 415, /* VAR_INFRA_KEEP_PROBING */ - VAR_DNS64_PREFIX = 416, /* VAR_DNS64_PREFIX */ - VAR_DNS64_SYNTHALL = 417, /* VAR_DNS64_SYNTHALL */ - VAR_DNS64_IGNORE_AAAA = 418, /* VAR_DNS64_IGNORE_AAAA */ - VAR_DNSTAP = 419, /* VAR_DNSTAP */ - VAR_DNSTAP_ENABLE = 420, /* VAR_DNSTAP_ENABLE */ - VAR_DNSTAP_SOCKET_PATH = 421, /* VAR_DNSTAP_SOCKET_PATH */ - VAR_DNSTAP_IP = 422, /* VAR_DNSTAP_IP */ - VAR_DNSTAP_TLS = 423, /* VAR_DNSTAP_TLS */ - VAR_DNSTAP_TLS_SERVER_NAME = 424, /* VAR_DNSTAP_TLS_SERVER_NAME */ - VAR_DNSTAP_TLS_CERT_BUNDLE = 425, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 426, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 427, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ - VAR_DNSTAP_SEND_IDENTITY = 428, /* VAR_DNSTAP_SEND_IDENTITY */ - VAR_DNSTAP_SEND_VERSION = 429, /* VAR_DNSTAP_SEND_VERSION */ - VAR_DNSTAP_BIDIRECTIONAL = 430, /* VAR_DNSTAP_BIDIRECTIONAL */ - VAR_DNSTAP_IDENTITY = 431, /* VAR_DNSTAP_IDENTITY */ - VAR_DNSTAP_VERSION = 432, /* VAR_DNSTAP_VERSION */ - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 433, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 434, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 435, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 436, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 437, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 438, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ - VAR_RESPONSE_IP_TAG = 439, /* VAR_RESPONSE_IP_TAG */ - VAR_RESPONSE_IP = 440, /* VAR_RESPONSE_IP */ - VAR_RESPONSE_IP_DATA = 441, /* VAR_RESPONSE_IP_DATA */ - VAR_HARDEN_ALGO_DOWNGRADE = 442, /* VAR_HARDEN_ALGO_DOWNGRADE */ - VAR_IP_TRANSPARENT = 443, /* VAR_IP_TRANSPARENT */ - VAR_IP_DSCP = 444, /* VAR_IP_DSCP */ - VAR_DISABLE_DNSSEC_LAME_CHECK = 445, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ - VAR_IP_RATELIMIT = 446, /* VAR_IP_RATELIMIT */ - VAR_IP_RATELIMIT_SLABS = 447, /* VAR_IP_RATELIMIT_SLABS */ - VAR_IP_RATELIMIT_SIZE = 448, /* VAR_IP_RATELIMIT_SIZE */ - VAR_RATELIMIT = 449, /* VAR_RATELIMIT */ - VAR_RATELIMIT_SLABS = 450, /* VAR_RATELIMIT_SLABS */ - VAR_RATELIMIT_SIZE = 451, /* VAR_RATELIMIT_SIZE */ - VAR_RATELIMIT_FOR_DOMAIN = 452, /* VAR_RATELIMIT_FOR_DOMAIN */ - VAR_RATELIMIT_BELOW_DOMAIN = 453, /* VAR_RATELIMIT_BELOW_DOMAIN */ - VAR_IP_RATELIMIT_FACTOR = 454, /* VAR_IP_RATELIMIT_FACTOR */ - VAR_RATELIMIT_FACTOR = 455, /* VAR_RATELIMIT_FACTOR */ - VAR_SEND_CLIENT_SUBNET = 456, /* VAR_SEND_CLIENT_SUBNET */ - VAR_CLIENT_SUBNET_ZONE = 457, /* VAR_CLIENT_SUBNET_ZONE */ - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 458, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - VAR_CLIENT_SUBNET_OPCODE = 459, /* VAR_CLIENT_SUBNET_OPCODE */ - VAR_MAX_CLIENT_SUBNET_IPV4 = 460, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - VAR_MAX_CLIENT_SUBNET_IPV6 = 461, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - VAR_MIN_CLIENT_SUBNET_IPV4 = 462, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - VAR_MIN_CLIENT_SUBNET_IPV6 = 463, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - VAR_MAX_ECS_TREE_SIZE_IPV4 = 464, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - VAR_MAX_ECS_TREE_SIZE_IPV6 = 465, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - VAR_CAPS_WHITELIST = 466, /* VAR_CAPS_WHITELIST */ - VAR_CACHE_MAX_NEGATIVE_TTL = 467, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - VAR_PERMIT_SMALL_HOLDDOWN = 468, /* VAR_PERMIT_SMALL_HOLDDOWN */ - VAR_QNAME_MINIMISATION = 469, /* VAR_QNAME_MINIMISATION */ - VAR_QNAME_MINIMISATION_STRICT = 470, /* VAR_QNAME_MINIMISATION_STRICT */ - VAR_IP_FREEBIND = 471, /* VAR_IP_FREEBIND */ - VAR_DEFINE_TAG = 472, /* VAR_DEFINE_TAG */ - VAR_LOCAL_ZONE_TAG = 473, /* VAR_LOCAL_ZONE_TAG */ - VAR_ACCESS_CONTROL_TAG = 474, /* VAR_ACCESS_CONTROL_TAG */ - VAR_LOCAL_ZONE_OVERRIDE = 475, /* VAR_LOCAL_ZONE_OVERRIDE */ - VAR_ACCESS_CONTROL_TAG_ACTION = 476, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - VAR_ACCESS_CONTROL_TAG_DATA = 477, /* VAR_ACCESS_CONTROL_TAG_DATA */ - VAR_VIEW = 478, /* VAR_VIEW */ - VAR_ACCESS_CONTROL_VIEW = 479, /* VAR_ACCESS_CONTROL_VIEW */ - VAR_VIEW_FIRST = 480, /* VAR_VIEW_FIRST */ - VAR_SERVE_EXPIRED = 481, /* VAR_SERVE_EXPIRED */ - VAR_SERVE_EXPIRED_TTL = 482, /* VAR_SERVE_EXPIRED_TTL */ - VAR_SERVE_EXPIRED_TTL_RESET = 483, /* VAR_SERVE_EXPIRED_TTL_RESET */ - VAR_SERVE_EXPIRED_REPLY_TTL = 484, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 485, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - VAR_SERVE_ORIGINAL_TTL = 486, /* VAR_SERVE_ORIGINAL_TTL */ - VAR_FAKE_DSA = 487, /* VAR_FAKE_DSA */ - VAR_FAKE_SHA1 = 488, /* VAR_FAKE_SHA1 */ - VAR_LOG_IDENTITY = 489, /* VAR_LOG_IDENTITY */ - VAR_HIDE_TRUSTANCHOR = 490, /* VAR_HIDE_TRUSTANCHOR */ - VAR_TRUST_ANCHOR_SIGNALING = 491, /* VAR_TRUST_ANCHOR_SIGNALING */ - VAR_AGGRESSIVE_NSEC = 492, /* VAR_AGGRESSIVE_NSEC */ - VAR_USE_SYSTEMD = 493, /* VAR_USE_SYSTEMD */ - VAR_SHM_ENABLE = 494, /* VAR_SHM_ENABLE */ - VAR_SHM_KEY = 495, /* VAR_SHM_KEY */ - VAR_ROOT_KEY_SENTINEL = 496, /* VAR_ROOT_KEY_SENTINEL */ - VAR_DNSCRYPT = 497, /* VAR_DNSCRYPT */ - VAR_DNSCRYPT_ENABLE = 498, /* VAR_DNSCRYPT_ENABLE */ - VAR_DNSCRYPT_PORT = 499, /* VAR_DNSCRYPT_PORT */ - VAR_DNSCRYPT_PROVIDER = 500, /* VAR_DNSCRYPT_PROVIDER */ - VAR_DNSCRYPT_SECRET_KEY = 501, /* VAR_DNSCRYPT_SECRET_KEY */ - VAR_DNSCRYPT_PROVIDER_CERT = 502, /* VAR_DNSCRYPT_PROVIDER_CERT */ - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 503, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 504, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 505, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 506, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 507, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - VAR_PAD_RESPONSES = 508, /* VAR_PAD_RESPONSES */ - VAR_PAD_RESPONSES_BLOCK_SIZE = 509, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - VAR_PAD_QUERIES = 510, /* VAR_PAD_QUERIES */ - VAR_PAD_QUERIES_BLOCK_SIZE = 511, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - VAR_IPSECMOD_ENABLED = 512, /* VAR_IPSECMOD_ENABLED */ - VAR_IPSECMOD_HOOK = 513, /* VAR_IPSECMOD_HOOK */ - VAR_IPSECMOD_IGNORE_BOGUS = 514, /* VAR_IPSECMOD_IGNORE_BOGUS */ - VAR_IPSECMOD_MAX_TTL = 515, /* VAR_IPSECMOD_MAX_TTL */ - VAR_IPSECMOD_WHITELIST = 516, /* VAR_IPSECMOD_WHITELIST */ - VAR_IPSECMOD_STRICT = 517, /* VAR_IPSECMOD_STRICT */ - VAR_CACHEDB = 518, /* VAR_CACHEDB */ - VAR_CACHEDB_BACKEND = 519, /* VAR_CACHEDB_BACKEND */ - VAR_CACHEDB_SECRETSEED = 520, /* VAR_CACHEDB_SECRETSEED */ - VAR_CACHEDB_REDISHOST = 521, /* VAR_CACHEDB_REDISHOST */ - VAR_CACHEDB_REDISPORT = 522, /* VAR_CACHEDB_REDISPORT */ - VAR_CACHEDB_REDISTIMEOUT = 523, /* VAR_CACHEDB_REDISTIMEOUT */ - VAR_CACHEDB_REDISEXPIRERECORDS = 524, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 525, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - VAR_FOR_UPSTREAM = 526, /* VAR_FOR_UPSTREAM */ - VAR_AUTH_ZONE = 527, /* VAR_AUTH_ZONE */ - VAR_ZONEFILE = 528, /* VAR_ZONEFILE */ - VAR_MASTER = 529, /* VAR_MASTER */ - VAR_URL = 530, /* VAR_URL */ - VAR_FOR_DOWNSTREAM = 531, /* VAR_FOR_DOWNSTREAM */ - VAR_FALLBACK_ENABLED = 532, /* VAR_FALLBACK_ENABLED */ - VAR_TLS_ADDITIONAL_PORT = 533, /* VAR_TLS_ADDITIONAL_PORT */ - VAR_LOW_RTT = 534, /* VAR_LOW_RTT */ - VAR_LOW_RTT_PERMIL = 535, /* VAR_LOW_RTT_PERMIL */ - VAR_FAST_SERVER_PERMIL = 536, /* VAR_FAST_SERVER_PERMIL */ - VAR_FAST_SERVER_NUM = 537, /* VAR_FAST_SERVER_NUM */ - VAR_ALLOW_NOTIFY = 538, /* VAR_ALLOW_NOTIFY */ - VAR_TLS_WIN_CERT = 539, /* VAR_TLS_WIN_CERT */ - VAR_TCP_CONNECTION_LIMIT = 540, /* VAR_TCP_CONNECTION_LIMIT */ - VAR_FORWARD_NO_CACHE = 541, /* VAR_FORWARD_NO_CACHE */ - VAR_STUB_NO_CACHE = 542, /* VAR_STUB_NO_CACHE */ - VAR_LOG_SERVFAIL = 543, /* VAR_LOG_SERVFAIL */ - VAR_DENY_ANY = 544, /* VAR_DENY_ANY */ - VAR_UNKNOWN_SERVER_TIME_LIMIT = 545, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - VAR_LOG_TAG_QUERYREPLY = 546, /* VAR_LOG_TAG_QUERYREPLY */ - VAR_STREAM_WAIT_SIZE = 547, /* VAR_STREAM_WAIT_SIZE */ - VAR_TLS_CIPHERS = 548, /* VAR_TLS_CIPHERS */ - VAR_TLS_CIPHERSUITES = 549, /* VAR_TLS_CIPHERSUITES */ - VAR_TLS_USE_SNI = 550, /* VAR_TLS_USE_SNI */ - VAR_IPSET = 551, /* VAR_IPSET */ - VAR_IPSET_NAME_V4 = 552, /* VAR_IPSET_NAME_V4 */ - VAR_IPSET_NAME_V6 = 553, /* VAR_IPSET_NAME_V6 */ - VAR_TLS_SESSION_TICKET_KEYS = 554, /* VAR_TLS_SESSION_TICKET_KEYS */ - VAR_RPZ = 555, /* VAR_RPZ */ - VAR_TAGS = 556, /* VAR_TAGS */ - VAR_RPZ_ACTION_OVERRIDE = 557, /* VAR_RPZ_ACTION_OVERRIDE */ - VAR_RPZ_CNAME_OVERRIDE = 558, /* VAR_RPZ_CNAME_OVERRIDE */ - VAR_RPZ_LOG = 559, /* VAR_RPZ_LOG */ - VAR_RPZ_LOG_NAME = 560, /* VAR_RPZ_LOG_NAME */ - VAR_DYNLIB = 561, /* VAR_DYNLIB */ - VAR_DYNLIB_FILE = 562, /* VAR_DYNLIB_FILE */ - VAR_EDNS_CLIENT_STRING = 563, /* VAR_EDNS_CLIENT_STRING */ - VAR_EDNS_CLIENT_STRING_OPCODE = 564, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - VAR_NSID = 565, /* VAR_NSID */ - VAR_ZONEMD_PERMISSIVE_MODE = 566, /* VAR_ZONEMD_PERMISSIVE_MODE */ - VAR_ZONEMD_REJECT_ABSENCE = 567 /* VAR_ZONEMD_REJECT_ABSENCE */ - }; - typedef enum yytokentype yytoken_kind_t; + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + SPACE = 258, + LETTER = 259, + NEWLINE = 260, + COMMENT = 261, + COLON = 262, + ANY = 263, + ZONESTR = 264, + STRING_ARG = 265, + VAR_FORCE_TOPLEVEL = 266, + VAR_SERVER = 267, + VAR_VERBOSITY = 268, + VAR_NUM_THREADS = 269, + VAR_PORT = 270, + VAR_OUTGOING_RANGE = 271, + VAR_INTERFACE = 272, + VAR_PREFER_IP4 = 273, + VAR_DO_IP4 = 274, + VAR_DO_IP6 = 275, + VAR_PREFER_IP6 = 276, + VAR_DO_UDP = 277, + VAR_DO_TCP = 278, + VAR_TCP_MSS = 279, + VAR_OUTGOING_TCP_MSS = 280, + VAR_TCP_IDLE_TIMEOUT = 281, + VAR_EDNS_TCP_KEEPALIVE = 282, + VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, + VAR_CHROOT = 284, + VAR_USERNAME = 285, + VAR_DIRECTORY = 286, + VAR_LOGFILE = 287, + VAR_PIDFILE = 288, + VAR_MSG_CACHE_SIZE = 289, + VAR_MSG_CACHE_SLABS = 290, + VAR_NUM_QUERIES_PER_THREAD = 291, + VAR_RRSET_CACHE_SIZE = 292, + VAR_RRSET_CACHE_SLABS = 293, + VAR_OUTGOING_NUM_TCP = 294, + VAR_INFRA_HOST_TTL = 295, + VAR_INFRA_LAME_TTL = 296, + VAR_INFRA_CACHE_SLABS = 297, + VAR_INFRA_CACHE_NUMHOSTS = 298, + VAR_INFRA_CACHE_LAME_SIZE = 299, + VAR_NAME = 300, + VAR_STUB_ZONE = 301, + VAR_STUB_HOST = 302, + VAR_STUB_ADDR = 303, + VAR_TARGET_FETCH_POLICY = 304, + VAR_HARDEN_SHORT_BUFSIZE = 305, + VAR_HARDEN_LARGE_QUERIES = 306, + VAR_FORWARD_ZONE = 307, + VAR_FORWARD_HOST = 308, + VAR_FORWARD_ADDR = 309, + VAR_DO_NOT_QUERY_ADDRESS = 310, + VAR_HIDE_IDENTITY = 311, + VAR_HIDE_VERSION = 312, + VAR_IDENTITY = 313, + VAR_VERSION = 314, + VAR_HARDEN_GLUE = 315, + VAR_MODULE_CONF = 316, + VAR_TRUST_ANCHOR_FILE = 317, + VAR_TRUST_ANCHOR = 318, + VAR_VAL_OVERRIDE_DATE = 319, + VAR_BOGUS_TTL = 320, + VAR_VAL_CLEAN_ADDITIONAL = 321, + VAR_VAL_PERMISSIVE_MODE = 322, + VAR_INCOMING_NUM_TCP = 323, + VAR_MSG_BUFFER_SIZE = 324, + VAR_KEY_CACHE_SIZE = 325, + VAR_KEY_CACHE_SLABS = 326, + VAR_TRUSTED_KEYS_FILE = 327, + VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, + VAR_USE_SYSLOG = 329, + VAR_OUTGOING_INTERFACE = 330, + VAR_ROOT_HINTS = 331, + VAR_DO_NOT_QUERY_LOCALHOST = 332, + VAR_CACHE_MAX_TTL = 333, + VAR_HARDEN_DNSSEC_STRIPPED = 334, + VAR_ACCESS_CONTROL = 335, + VAR_LOCAL_ZONE = 336, + VAR_LOCAL_DATA = 337, + VAR_INTERFACE_AUTOMATIC = 338, + VAR_STATISTICS_INTERVAL = 339, + VAR_DO_DAEMONIZE = 340, + VAR_USE_CAPS_FOR_ID = 341, + VAR_STATISTICS_CUMULATIVE = 342, + VAR_OUTGOING_PORT_PERMIT = 343, + VAR_OUTGOING_PORT_AVOID = 344, + VAR_DLV_ANCHOR_FILE = 345, + VAR_DLV_ANCHOR = 346, + VAR_NEG_CACHE_SIZE = 347, + VAR_HARDEN_REFERRAL_PATH = 348, + VAR_PRIVATE_ADDRESS = 349, + VAR_PRIVATE_DOMAIN = 350, + VAR_REMOTE_CONTROL = 351, + VAR_CONTROL_ENABLE = 352, + VAR_CONTROL_INTERFACE = 353, + VAR_CONTROL_PORT = 354, + VAR_SERVER_KEY_FILE = 355, + VAR_SERVER_CERT_FILE = 356, + VAR_CONTROL_KEY_FILE = 357, + VAR_CONTROL_CERT_FILE = 358, + VAR_CONTROL_USE_CERT = 359, + VAR_TCP_REUSE_TIMEOUT = 360, + VAR_MAX_REUSE_TCP_QUERIES = 361, + VAR_EXTENDED_STATISTICS = 362, + VAR_LOCAL_DATA_PTR = 363, + VAR_JOSTLE_TIMEOUT = 364, + VAR_STUB_PRIME = 365, + VAR_UNWANTED_REPLY_THRESHOLD = 366, + VAR_LOG_TIME_ASCII = 367, + VAR_DOMAIN_INSECURE = 368, + VAR_PYTHON = 369, + VAR_PYTHON_SCRIPT = 370, + VAR_VAL_SIG_SKEW_MIN = 371, + VAR_VAL_SIG_SKEW_MAX = 372, + VAR_CACHE_MIN_TTL = 373, + VAR_VAL_LOG_LEVEL = 374, + VAR_AUTO_TRUST_ANCHOR_FILE = 375, + VAR_KEEP_MISSING = 376, + VAR_ADD_HOLDDOWN = 377, + VAR_DEL_HOLDDOWN = 378, + VAR_SO_RCVBUF = 379, + VAR_EDNS_BUFFER_SIZE = 380, + VAR_PREFETCH = 381, + VAR_PREFETCH_KEY = 382, + VAR_SO_SNDBUF = 383, + VAR_SO_REUSEPORT = 384, + VAR_HARDEN_BELOW_NXDOMAIN = 385, + VAR_IGNORE_CD_FLAG = 386, + VAR_LOG_QUERIES = 387, + VAR_LOG_REPLIES = 388, + VAR_LOG_LOCAL_ACTIONS = 389, + VAR_TCP_UPSTREAM = 390, + VAR_SSL_UPSTREAM = 391, + VAR_TCP_AUTH_QUERY_TIMEOUT = 392, + VAR_SSL_SERVICE_KEY = 393, + VAR_SSL_SERVICE_PEM = 394, + VAR_SSL_PORT = 395, + VAR_FORWARD_FIRST = 396, + VAR_STUB_SSL_UPSTREAM = 397, + VAR_FORWARD_SSL_UPSTREAM = 398, + VAR_TLS_CERT_BUNDLE = 399, + VAR_HTTPS_PORT = 400, + VAR_HTTP_ENDPOINT = 401, + VAR_HTTP_MAX_STREAMS = 402, + VAR_HTTP_QUERY_BUFFER_SIZE = 403, + VAR_HTTP_RESPONSE_BUFFER_SIZE = 404, + VAR_HTTP_NODELAY = 405, + VAR_HTTP_NOTLS_DOWNSTREAM = 406, + VAR_STUB_FIRST = 407, + VAR_MINIMAL_RESPONSES = 408, + VAR_RRSET_ROUNDROBIN = 409, + VAR_MAX_UDP_SIZE = 410, + VAR_DELAY_CLOSE = 411, + VAR_UDP_CONNECT = 412, + VAR_UNBLOCK_LAN_ZONES = 413, + VAR_INSECURE_LAN_ZONES = 414, + VAR_INFRA_CACHE_MIN_RTT = 415, + VAR_INFRA_KEEP_PROBING = 416, + VAR_DNS64_PREFIX = 417, + VAR_DNS64_SYNTHALL = 418, + VAR_DNS64_IGNORE_AAAA = 419, + VAR_DNSTAP = 420, + VAR_DNSTAP_ENABLE = 421, + VAR_DNSTAP_SOCKET_PATH = 422, + VAR_DNSTAP_IP = 423, + VAR_DNSTAP_TLS = 424, + VAR_DNSTAP_TLS_SERVER_NAME = 425, + VAR_DNSTAP_TLS_CERT_BUNDLE = 426, + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 427, + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 428, + VAR_DNSTAP_SEND_IDENTITY = 429, + VAR_DNSTAP_SEND_VERSION = 430, + VAR_DNSTAP_BIDIRECTIONAL = 431, + VAR_DNSTAP_IDENTITY = 432, + VAR_DNSTAP_VERSION = 433, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 434, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 435, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 436, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 437, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 438, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 439, + VAR_RESPONSE_IP_TAG = 440, + VAR_RESPONSE_IP = 441, + VAR_RESPONSE_IP_DATA = 442, + VAR_HARDEN_ALGO_DOWNGRADE = 443, + VAR_IP_TRANSPARENT = 444, + VAR_IP_DSCP = 445, + VAR_DISABLE_DNSSEC_LAME_CHECK = 446, + VAR_IP_RATELIMIT = 447, + VAR_IP_RATELIMIT_SLABS = 448, + VAR_IP_RATELIMIT_SIZE = 449, + VAR_RATELIMIT = 450, + VAR_RATELIMIT_SLABS = 451, + VAR_RATELIMIT_SIZE = 452, + VAR_RATELIMIT_FOR_DOMAIN = 453, + VAR_RATELIMIT_BELOW_DOMAIN = 454, + VAR_IP_RATELIMIT_FACTOR = 455, + VAR_RATELIMIT_FACTOR = 456, + VAR_SEND_CLIENT_SUBNET = 457, + VAR_CLIENT_SUBNET_ZONE = 458, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 459, + VAR_CLIENT_SUBNET_OPCODE = 460, + VAR_MAX_CLIENT_SUBNET_IPV4 = 461, + VAR_MAX_CLIENT_SUBNET_IPV6 = 462, + VAR_MIN_CLIENT_SUBNET_IPV4 = 463, + VAR_MIN_CLIENT_SUBNET_IPV6 = 464, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 465, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 466, + VAR_CAPS_WHITELIST = 467, + VAR_CACHE_MAX_NEGATIVE_TTL = 468, + VAR_PERMIT_SMALL_HOLDDOWN = 469, + VAR_QNAME_MINIMISATION = 470, + VAR_QNAME_MINIMISATION_STRICT = 471, + VAR_IP_FREEBIND = 472, + VAR_DEFINE_TAG = 473, + VAR_LOCAL_ZONE_TAG = 474, + VAR_ACCESS_CONTROL_TAG = 475, + VAR_LOCAL_ZONE_OVERRIDE = 476, + VAR_ACCESS_CONTROL_TAG_ACTION = 477, + VAR_ACCESS_CONTROL_TAG_DATA = 478, + VAR_VIEW = 479, + VAR_ACCESS_CONTROL_VIEW = 480, + VAR_VIEW_FIRST = 481, + VAR_SERVE_EXPIRED = 482, + VAR_SERVE_EXPIRED_TTL = 483, + VAR_SERVE_EXPIRED_TTL_RESET = 484, + VAR_SERVE_EXPIRED_REPLY_TTL = 485, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 486, + VAR_SERVE_ORIGINAL_TTL = 487, + VAR_FAKE_DSA = 488, + VAR_FAKE_SHA1 = 489, + VAR_LOG_IDENTITY = 490, + VAR_HIDE_TRUSTANCHOR = 491, + VAR_TRUST_ANCHOR_SIGNALING = 492, + VAR_AGGRESSIVE_NSEC = 493, + VAR_USE_SYSTEMD = 494, + VAR_SHM_ENABLE = 495, + VAR_SHM_KEY = 496, + VAR_ROOT_KEY_SENTINEL = 497, + VAR_DNSCRYPT = 498, + VAR_DNSCRYPT_ENABLE = 499, + VAR_DNSCRYPT_PORT = 500, + VAR_DNSCRYPT_PROVIDER = 501, + VAR_DNSCRYPT_SECRET_KEY = 502, + VAR_DNSCRYPT_PROVIDER_CERT = 503, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 504, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 505, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 506, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 507, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 508, + VAR_PAD_RESPONSES = 509, + VAR_PAD_RESPONSES_BLOCK_SIZE = 510, + VAR_PAD_QUERIES = 511, + VAR_PAD_QUERIES_BLOCK_SIZE = 512, + VAR_IPSECMOD_ENABLED = 513, + VAR_IPSECMOD_HOOK = 514, + VAR_IPSECMOD_IGNORE_BOGUS = 515, + VAR_IPSECMOD_MAX_TTL = 516, + VAR_IPSECMOD_WHITELIST = 517, + VAR_IPSECMOD_STRICT = 518, + VAR_CACHEDB = 519, + VAR_CACHEDB_BACKEND = 520, + VAR_CACHEDB_SECRETSEED = 521, + VAR_CACHEDB_REDISHOST = 522, + VAR_CACHEDB_REDISPORT = 523, + VAR_CACHEDB_REDISTIMEOUT = 524, + VAR_CACHEDB_REDISEXPIRERECORDS = 525, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 526, + VAR_FOR_UPSTREAM = 527, + VAR_AUTH_ZONE = 528, + VAR_ZONEFILE = 529, + VAR_MASTER = 530, + VAR_URL = 531, + VAR_FOR_DOWNSTREAM = 532, + VAR_FALLBACK_ENABLED = 533, + VAR_TLS_ADDITIONAL_PORT = 534, + VAR_LOW_RTT = 535, + VAR_LOW_RTT_PERMIL = 536, + VAR_FAST_SERVER_PERMIL = 537, + VAR_FAST_SERVER_NUM = 538, + VAR_ALLOW_NOTIFY = 539, + VAR_TLS_WIN_CERT = 540, + VAR_TCP_CONNECTION_LIMIT = 541, + VAR_FORWARD_NO_CACHE = 542, + VAR_STUB_NO_CACHE = 543, + VAR_LOG_SERVFAIL = 544, + VAR_DENY_ANY = 545, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 546, + VAR_LOG_TAG_QUERYREPLY = 547, + VAR_STREAM_WAIT_SIZE = 548, + VAR_TLS_CIPHERS = 549, + VAR_TLS_CIPHERSUITES = 550, + VAR_TLS_USE_SNI = 551, + VAR_IPSET = 552, + VAR_IPSET_NAME_V4 = 553, + VAR_IPSET_NAME_V6 = 554, + VAR_TLS_SESSION_TICKET_KEYS = 555, + VAR_RPZ = 556, + VAR_TAGS = 557, + VAR_RPZ_ACTION_OVERRIDE = 558, + VAR_RPZ_CNAME_OVERRIDE = 559, + VAR_RPZ_LOG = 560, + VAR_RPZ_LOG_NAME = 561, + VAR_DYNLIB = 562, + VAR_DYNLIB_FILE = 563, + VAR_EDNS_CLIENT_STRING = 564, + VAR_EDNS_CLIENT_STRING_OPCODE = 565, + VAR_NSID = 566, + VAR_ZONEMD_PERMISSIVE_MODE = 567, + VAR_ZONEMD_REJECT_ABSENCE = 568 + }; #endif -/* Token kinds. */ -#define YYEOF 0 -#define YYerror 256 -#define YYUNDEF 257 +/* Tokens. */ #define SPACE 258 #define LETTER 259 #define NEWLINE 260 @@ -505,202 +487,200 @@ extern int yydebug; #define VAR_LOG_LOCAL_ACTIONS 389 #define VAR_TCP_UPSTREAM 390 #define VAR_SSL_UPSTREAM 391 -#define VAR_SSL_SERVICE_KEY 392 -#define VAR_SSL_SERVICE_PEM 393 -#define VAR_SSL_PORT 394 -#define VAR_FORWARD_FIRST 395 -#define VAR_STUB_SSL_UPSTREAM 396 -#define VAR_FORWARD_SSL_UPSTREAM 397 -#define VAR_TLS_CERT_BUNDLE 398 -#define VAR_HTTPS_PORT 399 -#define VAR_HTTP_ENDPOINT 400 -#define VAR_HTTP_MAX_STREAMS 401 -#define VAR_HTTP_QUERY_BUFFER_SIZE 402 -#define VAR_HTTP_RESPONSE_BUFFER_SIZE 403 -#define VAR_HTTP_NODELAY 404 -#define VAR_HTTP_NOTLS_DOWNSTREAM 405 -#define VAR_STUB_FIRST 406 -#define VAR_MINIMAL_RESPONSES 407 -#define VAR_RRSET_ROUNDROBIN 408 -#define VAR_MAX_UDP_SIZE 409 -#define VAR_DELAY_CLOSE 410 -#define VAR_UDP_CONNECT 411 -#define VAR_UNBLOCK_LAN_ZONES 412 -#define VAR_INSECURE_LAN_ZONES 413 -#define VAR_INFRA_CACHE_MIN_RTT 414 -#define VAR_INFRA_KEEP_PROBING 415 -#define VAR_DNS64_PREFIX 416 -#define VAR_DNS64_SYNTHALL 417 -#define VAR_DNS64_IGNORE_AAAA 418 -#define VAR_DNSTAP 419 -#define VAR_DNSTAP_ENABLE 420 -#define VAR_DNSTAP_SOCKET_PATH 421 -#define VAR_DNSTAP_IP 422 -#define VAR_DNSTAP_TLS 423 -#define VAR_DNSTAP_TLS_SERVER_NAME 424 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 425 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 426 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 427 -#define VAR_DNSTAP_SEND_IDENTITY 428 -#define VAR_DNSTAP_SEND_VERSION 429 -#define VAR_DNSTAP_BIDIRECTIONAL 430 -#define VAR_DNSTAP_IDENTITY 431 -#define VAR_DNSTAP_VERSION 432 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 433 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 434 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 435 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 436 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 437 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 438 -#define VAR_RESPONSE_IP_TAG 439 -#define VAR_RESPONSE_IP 440 -#define VAR_RESPONSE_IP_DATA 441 -#define VAR_HARDEN_ALGO_DOWNGRADE 442 -#define VAR_IP_TRANSPARENT 443 -#define VAR_IP_DSCP 444 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 445 -#define VAR_IP_RATELIMIT 446 -#define VAR_IP_RATELIMIT_SLABS 447 -#define VAR_IP_RATELIMIT_SIZE 448 -#define VAR_RATELIMIT 449 -#define VAR_RATELIMIT_SLABS 450 -#define VAR_RATELIMIT_SIZE 451 -#define VAR_RATELIMIT_FOR_DOMAIN 452 -#define VAR_RATELIMIT_BELOW_DOMAIN 453 -#define VAR_IP_RATELIMIT_FACTOR 454 -#define VAR_RATELIMIT_FACTOR 455 -#define VAR_SEND_CLIENT_SUBNET 456 -#define VAR_CLIENT_SUBNET_ZONE 457 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 458 -#define VAR_CLIENT_SUBNET_OPCODE 459 -#define VAR_MAX_CLIENT_SUBNET_IPV4 460 -#define VAR_MAX_CLIENT_SUBNET_IPV6 461 -#define VAR_MIN_CLIENT_SUBNET_IPV4 462 -#define VAR_MIN_CLIENT_SUBNET_IPV6 463 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 464 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 465 -#define VAR_CAPS_WHITELIST 466 -#define VAR_CACHE_MAX_NEGATIVE_TTL 467 -#define VAR_PERMIT_SMALL_HOLDDOWN 468 -#define VAR_QNAME_MINIMISATION 469 -#define VAR_QNAME_MINIMISATION_STRICT 470 -#define VAR_IP_FREEBIND 471 -#define VAR_DEFINE_TAG 472 -#define VAR_LOCAL_ZONE_TAG 473 -#define VAR_ACCESS_CONTROL_TAG 474 -#define VAR_LOCAL_ZONE_OVERRIDE 475 -#define VAR_ACCESS_CONTROL_TAG_ACTION 476 -#define VAR_ACCESS_CONTROL_TAG_DATA 477 -#define VAR_VIEW 478 -#define VAR_ACCESS_CONTROL_VIEW 479 -#define VAR_VIEW_FIRST 480 -#define VAR_SERVE_EXPIRED 481 -#define VAR_SERVE_EXPIRED_TTL 482 -#define VAR_SERVE_EXPIRED_TTL_RESET 483 -#define VAR_SERVE_EXPIRED_REPLY_TTL 484 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 485 -#define VAR_SERVE_ORIGINAL_TTL 486 -#define VAR_FAKE_DSA 487 -#define VAR_FAKE_SHA1 488 -#define VAR_LOG_IDENTITY 489 -#define VAR_HIDE_TRUSTANCHOR 490 -#define VAR_TRUST_ANCHOR_SIGNALING 491 -#define VAR_AGGRESSIVE_NSEC 492 -#define VAR_USE_SYSTEMD 493 -#define VAR_SHM_ENABLE 494 -#define VAR_SHM_KEY 495 -#define VAR_ROOT_KEY_SENTINEL 496 -#define VAR_DNSCRYPT 497 -#define VAR_DNSCRYPT_ENABLE 498 -#define VAR_DNSCRYPT_PORT 499 -#define VAR_DNSCRYPT_PROVIDER 500 -#define VAR_DNSCRYPT_SECRET_KEY 501 -#define VAR_DNSCRYPT_PROVIDER_CERT 502 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 503 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 504 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 505 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 506 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 507 -#define VAR_PAD_RESPONSES 508 -#define VAR_PAD_RESPONSES_BLOCK_SIZE 509 -#define VAR_PAD_QUERIES 510 -#define VAR_PAD_QUERIES_BLOCK_SIZE 511 -#define VAR_IPSECMOD_ENABLED 512 -#define VAR_IPSECMOD_HOOK 513 -#define VAR_IPSECMOD_IGNORE_BOGUS 514 -#define VAR_IPSECMOD_MAX_TTL 515 -#define VAR_IPSECMOD_WHITELIST 516 -#define VAR_IPSECMOD_STRICT 517 -#define VAR_CACHEDB 518 -#define VAR_CACHEDB_BACKEND 519 -#define VAR_CACHEDB_SECRETSEED 520 -#define VAR_CACHEDB_REDISHOST 521 -#define VAR_CACHEDB_REDISPORT 522 -#define VAR_CACHEDB_REDISTIMEOUT 523 -#define VAR_CACHEDB_REDISEXPIRERECORDS 524 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 525 -#define VAR_FOR_UPSTREAM 526 -#define VAR_AUTH_ZONE 527 -#define VAR_ZONEFILE 528 -#define VAR_MASTER 529 -#define VAR_URL 530 -#define VAR_FOR_DOWNSTREAM 531 -#define VAR_FALLBACK_ENABLED 532 -#define VAR_TLS_ADDITIONAL_PORT 533 -#define VAR_LOW_RTT 534 -#define VAR_LOW_RTT_PERMIL 535 -#define VAR_FAST_SERVER_PERMIL 536 -#define VAR_FAST_SERVER_NUM 537 -#define VAR_ALLOW_NOTIFY 538 -#define VAR_TLS_WIN_CERT 539 -#define VAR_TCP_CONNECTION_LIMIT 540 -#define VAR_FORWARD_NO_CACHE 541 -#define VAR_STUB_NO_CACHE 542 -#define VAR_LOG_SERVFAIL 543 -#define VAR_DENY_ANY 544 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 545 -#define VAR_LOG_TAG_QUERYREPLY 546 -#define VAR_STREAM_WAIT_SIZE 547 -#define VAR_TLS_CIPHERS 548 -#define VAR_TLS_CIPHERSUITES 549 -#define VAR_TLS_USE_SNI 550 -#define VAR_IPSET 551 -#define VAR_IPSET_NAME_V4 552 -#define VAR_IPSET_NAME_V6 553 -#define VAR_TLS_SESSION_TICKET_KEYS 554 -#define VAR_RPZ 555 -#define VAR_TAGS 556 -#define VAR_RPZ_ACTION_OVERRIDE 557 -#define VAR_RPZ_CNAME_OVERRIDE 558 -#define VAR_RPZ_LOG 559 -#define VAR_RPZ_LOG_NAME 560 -#define VAR_DYNLIB 561 -#define VAR_DYNLIB_FILE 562 -#define VAR_EDNS_CLIENT_STRING 563 -#define VAR_EDNS_CLIENT_STRING_OPCODE 564 -#define VAR_NSID 565 -#define VAR_ZONEMD_PERMISSIVE_MODE 566 -#define VAR_ZONEMD_REJECT_ABSENCE 567 +#define VAR_TCP_AUTH_QUERY_TIMEOUT 392 +#define VAR_SSL_SERVICE_KEY 393 +#define VAR_SSL_SERVICE_PEM 394 +#define VAR_SSL_PORT 395 +#define VAR_FORWARD_FIRST 396 +#define VAR_STUB_SSL_UPSTREAM 397 +#define VAR_FORWARD_SSL_UPSTREAM 398 +#define VAR_TLS_CERT_BUNDLE 399 +#define VAR_HTTPS_PORT 400 +#define VAR_HTTP_ENDPOINT 401 +#define VAR_HTTP_MAX_STREAMS 402 +#define VAR_HTTP_QUERY_BUFFER_SIZE 403 +#define VAR_HTTP_RESPONSE_BUFFER_SIZE 404 +#define VAR_HTTP_NODELAY 405 +#define VAR_HTTP_NOTLS_DOWNSTREAM 406 +#define VAR_STUB_FIRST 407 +#define VAR_MINIMAL_RESPONSES 408 +#define VAR_RRSET_ROUNDROBIN 409 +#define VAR_MAX_UDP_SIZE 410 +#define VAR_DELAY_CLOSE 411 +#define VAR_UDP_CONNECT 412 +#define VAR_UNBLOCK_LAN_ZONES 413 +#define VAR_INSECURE_LAN_ZONES 414 +#define VAR_INFRA_CACHE_MIN_RTT 415 +#define VAR_INFRA_KEEP_PROBING 416 +#define VAR_DNS64_PREFIX 417 +#define VAR_DNS64_SYNTHALL 418 +#define VAR_DNS64_IGNORE_AAAA 419 +#define VAR_DNSTAP 420 +#define VAR_DNSTAP_ENABLE 421 +#define VAR_DNSTAP_SOCKET_PATH 422 +#define VAR_DNSTAP_IP 423 +#define VAR_DNSTAP_TLS 424 +#define VAR_DNSTAP_TLS_SERVER_NAME 425 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 426 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 427 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 428 +#define VAR_DNSTAP_SEND_IDENTITY 429 +#define VAR_DNSTAP_SEND_VERSION 430 +#define VAR_DNSTAP_BIDIRECTIONAL 431 +#define VAR_DNSTAP_IDENTITY 432 +#define VAR_DNSTAP_VERSION 433 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 434 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 435 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 436 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 437 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 438 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 439 +#define VAR_RESPONSE_IP_TAG 440 +#define VAR_RESPONSE_IP 441 +#define VAR_RESPONSE_IP_DATA 442 +#define VAR_HARDEN_ALGO_DOWNGRADE 443 +#define VAR_IP_TRANSPARENT 444 +#define VAR_IP_DSCP 445 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 446 +#define VAR_IP_RATELIMIT 447 +#define VAR_IP_RATELIMIT_SLABS 448 +#define VAR_IP_RATELIMIT_SIZE 449 +#define VAR_RATELIMIT 450 +#define VAR_RATELIMIT_SLABS 451 +#define VAR_RATELIMIT_SIZE 452 +#define VAR_RATELIMIT_FOR_DOMAIN 453 +#define VAR_RATELIMIT_BELOW_DOMAIN 454 +#define VAR_IP_RATELIMIT_FACTOR 455 +#define VAR_RATELIMIT_FACTOR 456 +#define VAR_SEND_CLIENT_SUBNET 457 +#define VAR_CLIENT_SUBNET_ZONE 458 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 459 +#define VAR_CLIENT_SUBNET_OPCODE 460 +#define VAR_MAX_CLIENT_SUBNET_IPV4 461 +#define VAR_MAX_CLIENT_SUBNET_IPV6 462 +#define VAR_MIN_CLIENT_SUBNET_IPV4 463 +#define VAR_MIN_CLIENT_SUBNET_IPV6 464 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 465 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 466 +#define VAR_CAPS_WHITELIST 467 +#define VAR_CACHE_MAX_NEGATIVE_TTL 468 +#define VAR_PERMIT_SMALL_HOLDDOWN 469 +#define VAR_QNAME_MINIMISATION 470 +#define VAR_QNAME_MINIMISATION_STRICT 471 +#define VAR_IP_FREEBIND 472 +#define VAR_DEFINE_TAG 473 +#define VAR_LOCAL_ZONE_TAG 474 +#define VAR_ACCESS_CONTROL_TAG 475 +#define VAR_LOCAL_ZONE_OVERRIDE 476 +#define VAR_ACCESS_CONTROL_TAG_ACTION 477 +#define VAR_ACCESS_CONTROL_TAG_DATA 478 +#define VAR_VIEW 479 +#define VAR_ACCESS_CONTROL_VIEW 480 +#define VAR_VIEW_FIRST 481 +#define VAR_SERVE_EXPIRED 482 +#define VAR_SERVE_EXPIRED_TTL 483 +#define VAR_SERVE_EXPIRED_TTL_RESET 484 +#define VAR_SERVE_EXPIRED_REPLY_TTL 485 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 486 +#define VAR_SERVE_ORIGINAL_TTL 487 +#define VAR_FAKE_DSA 488 +#define VAR_FAKE_SHA1 489 +#define VAR_LOG_IDENTITY 490 +#define VAR_HIDE_TRUSTANCHOR 491 +#define VAR_TRUST_ANCHOR_SIGNALING 492 +#define VAR_AGGRESSIVE_NSEC 493 +#define VAR_USE_SYSTEMD 494 +#define VAR_SHM_ENABLE 495 +#define VAR_SHM_KEY 496 +#define VAR_ROOT_KEY_SENTINEL 497 +#define VAR_DNSCRYPT 498 +#define VAR_DNSCRYPT_ENABLE 499 +#define VAR_DNSCRYPT_PORT 500 +#define VAR_DNSCRYPT_PROVIDER 501 +#define VAR_DNSCRYPT_SECRET_KEY 502 +#define VAR_DNSCRYPT_PROVIDER_CERT 503 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 504 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 505 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 506 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 507 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 508 +#define VAR_PAD_RESPONSES 509 +#define VAR_PAD_RESPONSES_BLOCK_SIZE 510 +#define VAR_PAD_QUERIES 511 +#define VAR_PAD_QUERIES_BLOCK_SIZE 512 +#define VAR_IPSECMOD_ENABLED 513 +#define VAR_IPSECMOD_HOOK 514 +#define VAR_IPSECMOD_IGNORE_BOGUS 515 +#define VAR_IPSECMOD_MAX_TTL 516 +#define VAR_IPSECMOD_WHITELIST 517 +#define VAR_IPSECMOD_STRICT 518 +#define VAR_CACHEDB 519 +#define VAR_CACHEDB_BACKEND 520 +#define VAR_CACHEDB_SECRETSEED 521 +#define VAR_CACHEDB_REDISHOST 522 +#define VAR_CACHEDB_REDISPORT 523 +#define VAR_CACHEDB_REDISTIMEOUT 524 +#define VAR_CACHEDB_REDISEXPIRERECORDS 525 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 526 +#define VAR_FOR_UPSTREAM 527 +#define VAR_AUTH_ZONE 528 +#define VAR_ZONEFILE 529 +#define VAR_MASTER 530 +#define VAR_URL 531 +#define VAR_FOR_DOWNSTREAM 532 +#define VAR_FALLBACK_ENABLED 533 +#define VAR_TLS_ADDITIONAL_PORT 534 +#define VAR_LOW_RTT 535 +#define VAR_LOW_RTT_PERMIL 536 +#define VAR_FAST_SERVER_PERMIL 537 +#define VAR_FAST_SERVER_NUM 538 +#define VAR_ALLOW_NOTIFY 539 +#define VAR_TLS_WIN_CERT 540 +#define VAR_TCP_CONNECTION_LIMIT 541 +#define VAR_FORWARD_NO_CACHE 542 +#define VAR_STUB_NO_CACHE 543 +#define VAR_LOG_SERVFAIL 544 +#define VAR_DENY_ANY 545 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 546 +#define VAR_LOG_TAG_QUERYREPLY 547 +#define VAR_STREAM_WAIT_SIZE 548 +#define VAR_TLS_CIPHERS 549 +#define VAR_TLS_CIPHERSUITES 550 +#define VAR_TLS_USE_SNI 551 +#define VAR_IPSET 552 +#define VAR_IPSET_NAME_V4 553 +#define VAR_IPSET_NAME_V6 554 +#define VAR_TLS_SESSION_TICKET_KEYS 555 +#define VAR_RPZ 556 +#define VAR_TAGS 557 +#define VAR_RPZ_ACTION_OVERRIDE 558 +#define VAR_RPZ_CNAME_OVERRIDE 559 +#define VAR_RPZ_LOG 560 +#define VAR_RPZ_LOG_NAME 561 +#define VAR_DYNLIB 562 +#define VAR_DYNLIB_FILE 563 +#define VAR_EDNS_CLIENT_STRING 564 +#define VAR_EDNS_CLIENT_STRING_OPCODE 565 +#define VAR_NSID 566 +#define VAR_ZONEMD_PERMISSIVE_MODE 567 +#define VAR_ZONEMD_REJECT_ABSENCE 568 -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE -{ -#line 66 "./util/configparser.y" - char* str; -#line 694 "util/configparser.h" -}; -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 66 "util/configparser.y" +{ + char* str; +} +/* Line 1529 of yacc.c. */ +#line 679 "util/configparser.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 #endif - extern YYSTYPE yylval; -int yyparse (void); - -#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ diff --git a/util/configparser.y b/util/configparser.y index 3561630b3..6a8f83112 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -109,7 +109,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_DEL_HOLDDOWN VAR_SO_RCVBUF VAR_EDNS_BUFFER_SIZE VAR_PREFETCH %token VAR_PREFETCH_KEY VAR_SO_SNDBUF VAR_SO_REUSEPORT VAR_HARDEN_BELOW_NXDOMAIN %token VAR_IGNORE_CD_FLAG VAR_LOG_QUERIES VAR_LOG_REPLIES VAR_LOG_LOCAL_ACTIONS -%token VAR_TCP_UPSTREAM VAR_SSL_UPSTREAM +%token VAR_TCP_UPSTREAM VAR_SSL_UPSTREAM VAR_TCP_AUTH_QUERY_TIMEOUT %token VAR_SSL_SERVICE_KEY VAR_SSL_SERVICE_PEM VAR_SSL_PORT VAR_FORWARD_FIRST %token VAR_STUB_SSL_UPSTREAM VAR_FORWARD_SSL_UPSTREAM VAR_TLS_CERT_BUNDLE %token VAR_HTTPS_PORT VAR_HTTP_ENDPOINT VAR_HTTP_MAX_STREAMS @@ -302,7 +302,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_tls_use_sni | server_edns_client_string | server_edns_client_string_opcode | server_nsid | server_zonemd_permissive_mode | server_max_reuse_tcp_queries | - server_tcp_reuse_timeout + server_tcp_reuse_timeout | server_tcp_auth_query_timeout ; stubstart: VAR_STUB_ZONE @@ -883,6 +883,17 @@ server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG free($2); } ; +server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG + { + OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("number expected"); + else if (atoi($2) < 1) + cfg_parser->cfg->tcp_auth_query_timeout = 0; + else cfg_parser->cfg->tcp_auth_query_timeout = atoi($2); + free($2); + } + ; server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG { OUTYY(("P(server_tcp_keepalive:%s)\n", $2)); diff --git a/util/net_help.h b/util/net_help.h index 45b607a43..114f4cdb5 100644 --- a/util/net_help.h +++ b/util/net_help.h @@ -76,8 +76,6 @@ struct config_strlist; /** timeout in milliseconds for UDP queries to auth servers. */ #define UDP_AUTH_QUERY_TIMEOUT 3000 -/** timeout in milliseconds for TCP queries to auth servers. */ -#define TCP_AUTH_QUERY_TIMEOUT 3000 /** Advertised version of EDNS capabilities */ #define EDNS_ADVERTISED_VERSION 0 /** Advertised size of EDNS capabilities */