From 01efe078c85f8389c96c5e45b1a755a90efe9803 Mon Sep 17 00:00:00 2001 From: JINMEI Tatuya Date: Wed, 7 Mar 2018 16:33:13 -0800 Subject: [PATCH 1/8] added support for redis cachedb backend. --- cachedb/cachedb.c | 242 ++++++++++++++++++++++++++++++++++++++++++ config.h.in | 7 ++ configure.ac | 34 ++++++ doc/example.conf.in | 8 ++ doc/unbound.conf.5.in | 55 +++++++++- util/config_file.h | 8 ++ util/configlexer.lex | 3 + util/configparser.y | 44 +++++++- 8 files changed, 397 insertions(+), 4 deletions(-) diff --git a/cachedb/cachedb.c b/cachedb/cachedb.c index 80bdc380f..107efa5e0 100644 --- a/cachedb/cachedb.c +++ b/cachedb/cachedb.c @@ -43,6 +43,7 @@ #include "config.h" #ifdef USE_CACHEDB #include "cachedb/cachedb.h" +#include "util/alloc.h" #include "util/regional.h" #include "util/net_help.h" #include "util/config_file.h" @@ -56,6 +57,10 @@ #include "sldns/wire2str.h" #include "sldns/sbuffer.h" +#ifdef USE_REDIS +#include "hiredis/hiredis.h" +#endif + #define CACHEDB_HASHSIZE 256 /* bit hash */ /** the unit test testframe for cachedb, its module state contains @@ -167,15 +172,252 @@ testframe_store(struct module_env* env, struct cachedb_env* cachedb_env, /* (key,data) successfully stored */ } +#ifdef USE_REDIS +struct redis_moddata { + redisContext** ctxs; /* thread-specific redis contexts */ + int numctxs; /* number of ctx entries */ + const char* server_host; /* server's IP address or host name */ + int server_port; /* server's TCP port */ + struct timeval timeout; /* timeout for connection setup and commands */ +}; + +static redisContext* +redis_connect(const struct redis_moddata* moddata) +{ + redisContext* ctx; + + ctx = redisConnectWithTimeout(moddata->server_host, + moddata->server_port, moddata->timeout); + if(!ctx || ctx->err) { + const char *errstr = "out of memory"; + if(ctx) + errstr = ctx->errstr; + log_err("failed to connect to redis server: %s", errstr); + goto fail; + } + if(redisSetTimeout(ctx, moddata->timeout) != REDIS_OK) { + log_err("failed to set redis timeout"); + goto fail; + } + return ctx; + + fail: + if(ctx) + redisFree(ctx); + return NULL; +} + +static int +redis_init(struct module_env* env, struct cachedb_env* cachedb_env) +{ + int i; + struct redis_moddata* moddata = NULL; + + verbose(VERB_ALGO, "redis_init"); + + moddata = calloc(1, sizeof(struct redis_moddata)); + if(!moddata) { + log_err("out of memory"); + return 0; + } + moddata->numctxs = env->cfg->num_threads; + moddata->ctxs = calloc(env->cfg->num_threads, sizeof(redisContext*)); + if(!moddata->ctxs) { + log_err("out of memory"); + free(moddata); + return 0; + } + /* note: server_host is a shallow reference to configured string. + * we don't have to free it in this module. */ + moddata->server_host = env->cfg->redis_server_host; + moddata->server_port = env->cfg->redis_server_port; + moddata->timeout.tv_sec = env->cfg->redis_timeout / 1000; + moddata->timeout.tv_usec = (env->cfg->redis_timeout % 1000) * 1000; + for(i = 0; i < moddata->numctxs; i++) + moddata->ctxs[i] = redis_connect(moddata); + cachedb_env->backend_data = moddata; + return 1; +} + +static void +redis_deinit(struct module_env* env, struct cachedb_env* cachedb_env) +{ + struct redis_moddata* moddata = (struct redis_moddata*) + cachedb_env->backend_data; + (void)env; + + verbose(VERB_ALGO, "redis_deinit"); + + if(!moddata) + return; + if(moddata->ctxs) { + int i; + for(i = 0; i < moddata->numctxs; i++) { + if(moddata->ctxs[i]) + redisFree(moddata->ctxs[i]); + } + free(moddata->ctxs); + } + free(moddata); +} + +/* + * Send a redis command and get a reply. Unified so that it can be used for + * both SET and GET. If 'data' is non-NULL the command is supposed to be + * SET and GET otherwise, but the implementation of this function is agnostic + * about the semantics (except for logging): 'command', 'data', and 'data_len' + * are opaquely passed to redisCommand(). + * This function first checks whether a connection with a redis server has + * been established; if not it tries to set up a new one. + * It returns redisReply returned from redisCommand() or NULL if some low + * level error happens. The caller is responsible to check the return value, + * if it's non-NULL, it has to free it with freeReplyObject(). + */ +static redisReply* +redis_command(struct module_env* env, struct cachedb_env* cachedb_env, + const char* command, const uint8_t* data, size_t data_len) +{ + redisContext* ctx; + redisReply* rep; + struct redis_moddata* d = (struct redis_moddata*) + cachedb_env->backend_data; + + /* We assume env->alloc->thread_num is a unique ID for each thread + * in [0, num-of-threads). We could treat it as an error condition + * if the assumption didn't hold, but it seems to be a fundamental + * assumption throughout the unbound architecture, so we simply assert + * it. */ + log_assert(env->alloc->thread_num < d->numctxs); + ctx = d->ctxs[env->alloc->thread_num]; + + /* If we've not established a connection to the server or we've closed + * it on a failure, try to re-establish a new one. Failures will be + * logged in redis_connect(). */ + if(!ctx) { + ctx = redis_connect(d); + d->ctxs[env->alloc->thread_num] = ctx; + } + if(!ctx) + return NULL; + + /* Send the command and get a reply, synchronously. */ + rep = (redisReply*)redisCommand(ctx, command, data, data_len); + if(!rep) { + /* Once an error as a NULL-reply is returned the context cannot + * be reused and we'll need to set up a new connection. */ + log_err("redis_command: failed to receive a reply, " + "closing connection: %s", ctx->errstr); + redisFree(ctx); + d->ctxs[env->alloc->thread_num] = NULL; + return NULL; + } + + /* Check error in reply to unify logging in that case. + * The caller may perform context-dependent checks and logging. */ + if(rep->type == REDIS_REPLY_ERROR) + log_err("redis: %s resulted in an error: %s", + data ? "set" : "get", rep->str); + + return rep; +} + +static int +redis_lookup(struct module_env* env, struct cachedb_env* cachedb_env, + char* key, struct sldns_buffer* result_buffer) +{ + redisReply* rep; + char cmdbuf[4+(CACHEDB_HASHSIZE/8)*2+1]; /* "GET " + key */ + int n; + int ret = 0; + + verbose(VERB_ALGO, "redis_lookup of %s", key); + + n = snprintf(cmdbuf, sizeof(cmdbuf), "GET %s", key); + if(n < 0 || n >= (int)sizeof(cmdbuf)) { + log_err("redis_lookup: unexpected failure to build command"); + return 0; + } + + rep = redis_command(env, cachedb_env, cmdbuf, NULL, 0); + if(!rep) + return 0; + switch (rep->type) { + case REDIS_REPLY_NIL: + verbose(VERB_ALGO, "redis_lookup: no data cached"); + break; + case REDIS_REPLY_STRING: + verbose(VERB_ALGO, "redis_lookup found %d bytes", + (int)rep->len); + if((size_t)rep->len > sldns_buffer_capacity(result_buffer)) { + log_err("redis_lookup: replied data too long: %lu", + (size_t)rep->len); + break; + } + sldns_buffer_clear(result_buffer); + sldns_buffer_write(result_buffer, rep->str, rep->len); + sldns_buffer_flip(result_buffer); + ret = 1; + break; + case REDIS_REPLY_ERROR: + break; /* already logged */ + default: + log_err("redis_lookup: unexpected type of reply for (%d)", + rep->type); + break; + } + freeReplyObject(rep); + return ret; +} + +static void +redis_store(struct module_env* env, struct cachedb_env* cachedb_env, + char* key, uint8_t* data, size_t data_len) +{ + redisReply* rep; + char cmdbuf[4+(CACHEDB_HASHSIZE/8)*2+3+1]; /* "SET " + key + " %b" */ + int n; + + verbose(VERB_ALGO, "redis_store %s (%d bytes)", key, (int)data_len); + + /* build command to set to a binary safe string */ + n = snprintf(cmdbuf, sizeof(cmdbuf), "SET %s %%b", key); + if(n < 0 || n >= (int)sizeof(cmdbuf)) { + log_err("redis_store: unexpected failure to build command"); + return; + } + + rep = redis_command(env, cachedb_env, cmdbuf, data, data_len); + if(rep) { + verbose(VERB_ALGO, "redis_store set completed"); + if(rep->type != REDIS_REPLY_STATUS && + rep->type != REDIS_REPLY_ERROR) { + log_err("redis_store: unexpected type of reply (%d)", + rep->type); + } + freeReplyObject(rep); + } +} +#endif /* USE_REDIS */ + /** The testframe backend is for unit tests */ static struct cachedb_backend testframe_backend = { "testframe", testframe_init, testframe_deinit, testframe_lookup, testframe_store }; +#ifdef USE_REDIS +static struct cachedb_backend redis_backend = { "redis", + redis_init, redis_deinit, redis_lookup, redis_store +}; +#endif + /** find a particular backend from possible backends */ static struct cachedb_backend* cachedb_find_backend(const char* str) { +#ifdef USE_REDIS + if(strcmp(str, redis_backend.name) == 0) + return &redis_backend; +#endif if(strcmp(str, testframe_backend.name) == 0) return &testframe_backend; /* TODO add more backends here */ diff --git a/config.h.in b/config.h.in index e7405603d..cd40741b9 100644 --- a/config.h.in +++ b/config.h.in @@ -95,6 +95,10 @@ don't. */ #undef HAVE_DECL_REALLOCARRAY +/* Define to 1 if you have the declaration of `redisConnect', and to 0 if you + don't. */ +#undef HAVE_DECL_REDISCONNECT + /* Define to 1 if you have the declaration of `sk_SSL_COMP_pop_free', and to 0 if you don't. */ #undef HAVE_DECL_SK_SSL_COMP_POP_FREE @@ -718,6 +722,9 @@ /* Define this to enable client TCP Fast Open. */ #undef USE_OSX_MSG_FASTOPEN +/* Define this to use hiredis client. */ +#undef USE_REDIS + /* Define this to enable SHA1 support. */ #undef USE_SHA1 diff --git a/configure.ac b/configure.ac index be8dfd362..5231543f6 100644 --- a/configure.ac +++ b/configure.ac @@ -1145,6 +1145,40 @@ AC_CHECK_DECLS([XML_StopParser], [], [], [AC_INCLUDES_DEFAULT #include ]) +# hiredis (redis C client for cachedb) +AC_ARG_WITH(libhiredis, AC_HELP_STRING([--with-libhiredis=path], + [specify explicit path for libhiredis.]), + [ ],[ withval="no" ]) +AC_MSG_CHECKING(for libhiredis) +found_libhiredis="no" +if test x_$withval = x_yes -o x_$withval != x_no; then + if test x_$withval = x_ -o x_$withval = x_yes; then + withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" + fi + for dir in $withval ; do + AC_MSG_RESULT($dir) + if test -f "$dir/include/hiredis/hiredis.h"; then + found_libhiredis="yes" + dnl assume /usr is in default path. + if test "$dir" != "/usr"; then + CPPFLAGS="$CPPFLAGS -I$dir/include" + LDFLAGS="$LDFLAGS -L$dir/lib" + fi + AC_MSG_RESULT(found in $dir) + AC_DEFINE([USE_REDIS], [1], [Define this to use hiredis client.]) + LIBS="$LIBS -lhiredis" + break; + fi + done + if test x_$found_libhiredis != x_yes; then + AC_ERROR([Could not find libhiredis, hiredis.h]) + fi + AC_CHECK_HEADERS([hiredis/hiredis.h],,, [AC_INCLUDES_DEFAULT]) + AC_CHECK_DECLS([redisConnect], [], [], [AC_INCLUDES_DEFAULT + #include + ]) +fi + # set static linking if requested AC_SUBST(staticexe) staticexe="" diff --git a/doc/example.conf.in b/doc/example.conf.in index e764b50f1..ff1241a92 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -882,3 +882,11 @@ remote-control: # backend: "testframe" # # secret seed string to calculate hashed keys # secret-seed: "default" +# +# # For "redis" backend: +# # redis server's IP address or host name +# redis-server-host: 127.0.0.1 +# # redis server's TCP port +# redis-server-port: 6379 +# # timeout (in ms) for communication with the redis server +# redis-timeout: 100 diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index f37477aa4..1713ccafc 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1775,15 +1775,42 @@ If it finds a valid answer in the backend, Unbound uses it to respond to the query without performing iterative DNS resolution. If Unbound cannot even find an answer in the backend, it resolves the query as usual, and stores the answer in the backend. +.P +If Unbound was built with +\fB\-\-with\-libhiredis\fR +on a system that has installed the hiredis C client library of Redis, +then the "redis" backend can be used. +This backend communicates with the specified Redis server over a TCP +connection to store and retrive cache data. +It can be used as a persistent and/or shared cache backend. +It should be noted that Unbound never removes data stored in the Redis server, +even if some data have expired in terms of DNS TTL or the Redis server has +cached too much data; +if necessary the Redis server must be configured to limit the cache size, +preferably with some kind of least-recently-used eviction policy. +This backend uses synchronous communication with the Redis server +based on the assumption that the communication is stable and sufficiently +fast. +The thread waiting for a response from the Redis server cannot handle +other DNS queries. +Although the backend has the ability to reconnect to the server when +the connection is closed unexpectedly and there is a configurable timeout +in case the server is overly slow or hangs up, these cases are assumed +to be very rare. +If connection close or timeout happens too often, Unbound will be +effectively unusable with this backend. +It's the administrator's responsibility to make the assumption hold. +.P The .B cachedb: clause gives custom settings of the cache DB module. .TP .B backend: \fI\fR Specify the backend database name. -Currently, only the in-memory "testframe" backend is supported. -As the name suggests this backend is not of any practical use. -This option defaults to "testframe". +The default database is the in-memory backend named "testframe", which, +as the name suggests, is not of any practical use. +Depending on the build-time configuration, "redis" backend may also be +used as described above. .TP .B secret-seed: \fI<"secret string">\fR Specify a seed to calculate a hash value from query information. @@ -1793,6 +1820,28 @@ operationally. If the backend database is shared by multiple Unbound instances, all instances must use the same secret seed. This option defaults to "default". +.P +The following +.B cachedb +otions are specific to the redis backend. +.TP +.B redis-server-host: \fI\fR +The IP (either v6 or v4) address or domain name of the Redis server. +In general an IP address should be specified as otherwise Unbound will have to +resolve the name of the server every time it establishes a connection +to the server. +This option defaults to "127.0.0.1". +.TP +.B redis-server-port: \fI\fR +The TCP port number of the Redis server. +This option defaults to 6379. +.TP +.B redis-timeout: \fI\fR +The period until when Unbound waits for a response from the Redis sever. +If this timeout expires Unbound closes the connection, treats it as +if the Redis server does not have the requested data, and will try to +re-establish a new connection later. +This option defaults to 100 milliseconds. .SH "MEMORY CONTROL EXAMPLE" In the example config settings below memory usage is reduced. Some service levels are lower, notable very large data and a high TCP load are no longer diff --git a/util/config_file.h b/util/config_file.h index 2e1c53ee0..85d2f645d 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -507,6 +507,14 @@ struct config_file { char* cachedb_backend; /** secret seed for hash key calculation */ char* cachedb_secret; +#ifdef USE_REDIS + /** redis server's IP address or host name */ + char* redis_server_host; + /** redis server's TCP port */ + int redis_server_port; + /** timeout (in ms) for communication with the redis server */ + int redis_timeout; +#endif #endif }; diff --git a/util/configlexer.lex b/util/configlexer.lex index 0e158d161..3b8e00b9f 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -448,6 +448,9 @@ ipsecmod-strict{COLON} { YDVAR(1, VAR_IPSECMOD_STRICT) } cachedb{COLON} { YDVAR(0, VAR_CACHEDB) } backend{COLON} { YDVAR(1, VAR_CACHEDB_BACKEND) } secret-seed{COLON} { YDVAR(1, VAR_CACHEDB_SECRETSEED) } +redis-server-host{COLON} { YDVAR(1, VAR_CACHEDB_REDISHOST) } +redis-server-port{COLON} { YDVAR(1, VAR_CACHEDB_REDISPORT) } +redis-timeout{COLON} { YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } udp-upstream-without-downstream{COLON} { YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } {NEWLINE} { LEXOUT(("NL\n")); cfg_parser->line++; } diff --git a/util/configparser.y b/util/configparser.y index 7e23fca16..ea0a2234e 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -152,6 +152,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_IPSECMOD_ENABLED VAR_IPSECMOD_HOOK VAR_IPSECMOD_IGNORE_BOGUS %token VAR_IPSECMOD_MAX_TTL VAR_IPSECMOD_WHITELIST VAR_IPSECMOD_STRICT %token VAR_CACHEDB VAR_CACHEDB_BACKEND VAR_CACHEDB_SECRETSEED +%token VAR_CACHEDB_REDISHOST VAR_CACHEDB_REDISPORT VAR_CACHEDB_REDISTIMEOUT %token VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM VAR_FOR_UPSTREAM %token VAR_AUTH_ZONE VAR_ZONEFILE VAR_MASTER VAR_URL VAR_FOR_DOWNSTREAM %token VAR_FALLBACK_ENABLED @@ -2551,7 +2552,8 @@ cachedbstart: VAR_CACHEDB ; contents_cachedb: contents_cachedb content_cachedb | ; -content_cachedb: cachedb_backend_name | cachedb_secret_seed +content_cachedb: cachedb_backend_name | cachedb_secret_seed | + redis_server_host | redis_server_port | redis_timeout ; cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG { @@ -2582,6 +2584,46 @@ cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG #endif } ; +redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + OUTYY(("P(redis_server_host:%s)\n", $2)); + free(cfg_parser->cfg->redis_server_host); + cfg_parser->cfg->redis_server_host = $2; + #else + OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); + free($2); + #endif + } + ; +redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + int port; + OUTYY(("P(redis_server_port:%s)\n", $2)); + port = atoi($2); + 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($2); + } + ; +redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + OUTYY(("P(redis_timeout:%s)\n", $2)); + if(atoi($2) == 0) + yyerror("redis timeout value expected"); + else cfg_parser->cfg->redis_timeout = atoi($2); + #else + OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); + #endif + free($2); + } + ; %% /* parse helper routines could be here */ From 2c68767ac5f74b3c9050eb74e0413f8329946485 Mon Sep 17 00:00:00 2001 From: JINMEI Tatuya Date: Wed, 7 Mar 2018 17:16:11 -0800 Subject: [PATCH 2/8] added querycachedb utility. --- contrib/README | 3 ++ contrib/unbound-querycachedb.py | 77 +++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 contrib/unbound-querycachedb.py diff --git a/contrib/README b/contrib/README index 2a59e0330..2b5e75424 100644 --- a/contrib/README +++ b/contrib/README @@ -35,3 +35,6 @@ distribution but may be helpful. instead of SERVFAIL. Contributed by SIDN. * fastrpz.patch: fastrpz support from Farsight Security. * libunbound.so.conf: ltrace.conf file, see ltrace.conf(5), for libunbound. +* unbound-querycachedb.py: utility to show data stored in cachedb backend + for a particular query name and type. It requires dnspython and (for + redis backend) redis Python modules. diff --git a/contrib/unbound-querycachedb.py b/contrib/unbound-querycachedb.py new file mode 100644 index 000000000..5b4485ba8 --- /dev/null +++ b/contrib/unbound-querycachedb.py @@ -0,0 +1,77 @@ +#!/usr/bin/env python + +import hashlib +import sys +import struct +import socket +import time +from optparse import OptionParser + +import dns.message +import dns.name +import dns.rdataclass +import dns.rdatatype + +def _calc_hashkey(qname, secret, qtype): + qclass = 'IN' # CLASS is fixed for simplicity + hobj = hashlib.sha256() + hobj.update(dns.name.from_text(qname).to_wire()) + hobj.update(struct.pack('HH', + socket.htons(dns.rdatatype.from_text(qtype)), + socket.htons(dns.rdataclass.from_text(qclass)))) + hobj.update(secret) + return hobj.hexdigest().upper() + +def _redis_get(options, key): + import redis + return redis.Redis(options.address, int(options.port)).get(key) + +def _dump_value(options, qname, key, value): + print(';; query=%s/IN/%s' % (qname, options.qtype)) + print(';; key=%s' % key) + if value is None: + print(';; no value') + return + if len(value) < 16: + print(';; broken value, short length: %d' % len(value)) + return + now = int(time.time()) + timestamp = struct.unpack('!Q', value[-16:-8])[0] + expire = struct.unpack('!Q', value[-8:])[0] + print(';; Now=%d, TimeStamp=%d, Expire=%d, TTL=%d' % + (now, timestamp, expire, max(expire - now, 0))) + print(dns.message.from_wire(value[:-16])) + +def main(): + parser = OptionParser(usage='usage: %prog [options] query_name') + parser.add_option("-a", "--address", dest="address", action="store", + default='127.0.0.1', help="backend-server address", + metavar='ADDRESS') + parser.add_option("-b", "--backend", dest="backend", action="store", + default='redis', help="backend name", + metavar='BACKEND') + parser.add_option("-p", "--port", dest="port", action="store", + default='6379', help="backend-server port", + metavar='PORT') + parser.add_option("-s", "--secret", dest="secret", action="store", + default='default', help="secret seed", metavar='SECRET') + parser.add_option("-t", "--qtype", dest="qtype", action="store", + default='A', help="query RR type", metavar='QTYPE') + + (options, args) = parser.parse_args() + if len(args) < 1: + parser.error('qname is missing') + if options.backend == 'redis': + get_func = _redis_get + else: + raise Exception('unknown backend name: %s\n' % options.backend) + key = _calc_hashkey(args[0], options.secret, options.qtype) + value = get_func(options, key) + _dump_value(options, args[0], key, value) + +if __name__ == '__main__': + try: + main() + except Exception as e: + sys.stderr.write('%s\n' % e) + exit(1) From 5c60660cd8f4ee54da46dc6b2cbfcd46789c00cd Mon Sep 17 00:00:00 2001 From: JINMEI Tatuya Date: Wed, 7 Mar 2018 19:09:05 -0800 Subject: [PATCH 3/8] regenerated lex/yacc derived files --- util/configlexer.c | 3971 ++++++++++++++++++++++--------------------- util/configparser.c | 1754 ++++++++++--------- util/configparser.h | 40 +- 3 files changed, 2943 insertions(+), 2822 deletions(-) diff --git a/util/configlexer.c b/util/configlexer.c index 379a4fae0..c3dd27157 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -10,7 +10,7 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 1 +#define YY_FLEX_SUBMINOR_VERSION 0 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -89,13 +89,25 @@ typedef unsigned int flex_uint32_t; #endif /* ! FLEXINT_H */ -/* TODO: this is always defined, so inline it */ -#define yyconst const +#ifdef __cplusplus -#if defined(__GNUC__) && __GNUC__ >= 3 -#define yynoreturn __attribute__((__noreturn__)) +/* 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 yynoreturn +#define yyconst #endif /* Returned upon end-of-file. */ @@ -156,7 +168,7 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE; typedef size_t yy_size_t; #endif -extern int yyleng; +extern yy_size_t yyleng; extern FILE *yyin, *yyout; @@ -172,7 +184,7 @@ extern FILE *yyin, *yyout; do \ { \ /* Undo effects of setting up yytext. */ \ - yy_size_t yyless_macro_arg = (n); \ + int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ @@ -195,7 +207,7 @@ struct yy_buffer_state /* Size of input buffer in bytes, not including room for EOB * characters. */ - int yy_buf_size; + yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. @@ -251,7 +263,7 @@ 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 = NULL; /**< Stack as an array. */ +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 @@ -271,10 +283,10 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; +yy_size_t yyleng; /* Points to current character in buffer. */ -static char *yy_c_buf_p = NULL; +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 */ @@ -299,7 +311,7 @@ static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); 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,int len ); +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); void *yyalloc (yy_size_t ); void *yyrealloc (void *,yy_size_t ); @@ -333,7 +345,7 @@ void yyfree (void * ); typedef unsigned char YY_CHAR; -FILE *yyin = NULL, *yyout = NULL; +FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; typedef int yy_state_type; @@ -350,7 +362,10 @@ extern char *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 yynoreturn yy_fatal_error (yyconst char* msg ); +#if defined(__GNUC__) && __GNUC__ >= 3 +__attribute__((__noreturn__)) +#endif +static void yy_fatal_error (yyconst char msg[] ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. @@ -358,13 +373,13 @@ static void yynoreturn yy_fatal_error (yyconst char* msg ); #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ (yytext_ptr) -= (yy_more_len); \ - yyleng = (int) (yy_cp - (yytext_ptr)); \ + yyleng = (size_t) (yy_cp - (yytext_ptr)); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 254 -#define YY_END_OF_BUFFER 255 +#define YY_NUM_RULES 257 +#define YY_END_OF_BUFFER 258 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -372,284 +387,287 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[2508] = +static yyconst flex_int16_t yy_accept[2537] = { 0, - 1, 1, 236, 236, 240, 240, 244, 244, 248, 248, - 1, 1, 255, 252, 1, 234, 234, 253, 2, 253, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 236, 237, 237, 238, 253, 240, 241, 241, - 242, 253, 247, 244, 245, 245, 246, 253, 248, 249, - 249, 250, 253, 251, 235, 2, 239, 253, 251, 252, - 0, 1, 2, 2, 2, 2, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 236, 0, - 240, 0, 247, 0, 244, 248, 0, 251, 0, 2, - 2, 251, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 251, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 99, 252, 252, 252, 252, 252, 252, 252, - 251, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 83, 252, 252, 252, 252, 252, - - 252, 8, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 103, - 252, 251, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 251, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 43, 252, 252, 252, 252, 252, 252, - - 252, 252, 252, 252, 252, 252, 186, 252, 14, 15, - 252, 18, 17, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 98, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 172, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 3, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 251, 252, 252, 252, 252, 252, 231, - 252, 252, 230, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 243, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 46, 252, 252, 252, 252, 252, - - 252, 252, 252, 252, 252, 252, 47, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 161, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 20, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 118, 252, 252, 243, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 213, 252, 252, 252, 252, 252, 252, 252, - - 252, 252, 252, 252, 136, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 117, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 81, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 28, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 29, 252, 252, 252, 252, - - 252, 252, 252, 252, 252, 252, 44, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 97, 252, 252, 252, - 96, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 45, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 137, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 34, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 201, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 38, 252, 39, 252, - 252, 252, 252, 84, 252, 85, 252, 252, 252, 82, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 7, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 179, 252, 252, - 252, 252, 120, 252, 252, 252, 252, 252, 252, 252, - - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 35, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 153, 252, 152, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 16, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 48, 252, 252, 252, 252, - 252, 252, 252, 160, 252, 252, 252, 252, 252, 87, - - 86, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 147, 252, 252, 252, 252, 252, - 252, 252, 252, 104, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 66, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 70, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 42, 252, 252, 252, 252, 252, 252, 252, 252, 252, - - 252, 252, 252, 252, 252, 252, 252, 150, 151, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 6, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 211, 252, - 252, 232, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 32, 252, 252, 252, 252, - 252, 252, 252, 252, 143, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 165, 252, 144, 252, - 252, 177, 252, 252, 252, 252, 252, 252, 252, 252, - - 252, 252, 252, 252, 252, 252, 252, 252, 33, 252, - 252, 252, 252, 252, 252, 101, 91, 252, 92, 252, - 252, 90, 252, 252, 252, 252, 252, 252, 252, 252, - 115, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 200, 252, 252, 252, 252, 252, 252, 252, - 252, 145, 252, 252, 252, 252, 252, 148, 252, 252, - 176, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 80, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 40, 252, 252, 252, 22, 252, 252, - - 252, 252, 252, 19, 252, 252, 252, 23, 252, 125, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 55, 57, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 215, 252, 252, 252, 187, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 93, 252, 252, 252, 252, 252, 252, 252, 252, 114, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 226, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 119, - - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 171, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 135, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 130, 252, - 138, 252, 252, 252, 252, 252, 107, 252, 252, 252, - 76, 252, 252, 252, 252, 163, 252, 252, 252, 252, - 252, 178, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 192, 252, 252, 252, 252, 252, - 252, 100, 252, 252, 252, 252, 252, 252, 252, 252, - - 252, 134, 252, 252, 252, 252, 252, 58, 59, 252, - 252, 252, 252, 252, 41, 252, 252, 252, 252, 252, - 65, 139, 252, 154, 252, 180, 149, 252, 252, 252, - 51, 252, 141, 252, 252, 252, 252, 252, 9, 252, - 252, 252, 79, 252, 252, 252, 252, 205, 252, 162, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 133, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 121, 214, 252, 252, 252, - - 252, 191, 252, 252, 252, 252, 252, 252, 252, 252, - 173, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 229, 252, 140, 252, - 252, 252, 50, 52, 252, 252, 252, 252, 252, 252, - 252, 78, 252, 252, 252, 252, 203, 252, 210, 252, - 252, 252, 252, 252, 167, 30, 24, 26, 252, 252, - 252, 252, 252, 31, 25, 27, 252, 252, 252, 252, - 252, 252, 75, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 169, 166, - - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 49, 252, 102, 252, 252, 252, 252, - 252, 252, 252, 252, 116, 13, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 224, 252, 227, 252, 252, - 252, 252, 252, 252, 12, 252, 252, 21, 252, 252, - 252, 209, 252, 212, 53, 252, 175, 252, 168, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 129, 128, 252, 252, 252, 252, - 252, 252, 252, 170, 164, 252, 252, 252, 216, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 60, 252, 252, 252, 204, 252, 252, 252, 252, - 252, 174, 252, 252, 252, 252, 252, 252, 252, 252, - 54, 252, 252, 252, 88, 89, 252, 122, 252, 124, - 252, 155, 252, 252, 252, 127, 252, 252, 181, 252, - 252, 252, 252, 252, 109, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 188, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 156, 252, 252, 202, 252, 228, 252, 252, 252, - 36, 252, 252, 252, 252, 4, 252, 252, 108, 252, - - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 184, 252, 252, 252, 252, 252, 252, 252, 217, 252, - 252, 252, 252, 252, 252, 190, 252, 252, 159, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 63, 252, - 37, 208, 252, 185, 252, 252, 11, 252, 252, 252, - 252, 252, 252, 157, 67, 252, 252, 252, 252, 252, - 132, 252, 252, 252, 252, 252, 111, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 189, 105, 252, 94, - 95, 252, 252, 252, 69, 73, 68, 252, 61, 252, - 252, 252, 10, 252, 252, 252, 206, 252, 252, 252, - - 252, 131, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 74, - 72, 252, 62, 225, 252, 252, 252, 146, 252, 252, - 158, 252, 252, 252, 252, 252, 252, 123, 56, 252, - 252, 252, 252, 252, 218, 252, 252, 252, 252, 252, - 252, 252, 106, 71, 112, 113, 64, 252, 207, 126, - 252, 252, 252, 252, 183, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 77, 252, 182, 252, - - 199, 222, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 5, 252, 252, 252, 223, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 110, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 142, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 219, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 233, 252, 252, 195, 252, - 252, 252, 252, 252, 220, 252, 252, 252, 252, 252, - 252, 221, 252, 252, 252, 193, 252, 196, 197, 252, - - 252, 252, 252, 252, 194, 198, 0 + 1, 1, 239, 239, 243, 243, 247, 247, 251, 251, + 1, 1, 258, 255, 1, 237, 237, 256, 2, 256, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 239, 240, 240, 241, 256, 243, 244, 244, + 245, 256, 250, 247, 248, 248, 249, 256, 251, 252, + 252, 253, 256, 254, 238, 2, 242, 256, 254, 255, + 0, 1, 2, 2, 2, 2, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 239, 0, + 243, 0, 250, 0, 247, 251, 0, 254, 0, 2, + 2, 254, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 99, 255, 255, 255, 255, 255, + 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 83, 255, 255, 255, + + 255, 255, 255, 8, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 103, 255, 254, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 43, 255, 255, + + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 186, 255, 14, 15, 255, 18, 17, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 98, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 172, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 3, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, + 255, 255, 255, 255, 255, 231, 255, 255, 230, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + + 46, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 47, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 161, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 20, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 118, 255, 255, 246, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + + 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 136, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 117, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 81, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 28, 255, 255, 255, 255, 255, 255, 255, 255, + + 255, 255, 255, 255, 255, 29, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 44, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 97, 255, 255, 255, + 96, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 45, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 137, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 34, 255, 255, 255, 255, 255, 255, 255, + + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 201, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 38, 255, + 39, 255, 255, 255, 255, 84, 255, 85, 255, 255, + 255, 82, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 7, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, + + 255, 255, 255, 255, 120, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 35, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 153, 255, 152, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 16, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, + + 255, 255, 255, 255, 255, 255, 255, 160, 255, 255, + 255, 255, 255, 87, 86, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 147, 255, + 255, 255, 255, 255, 255, 255, 255, 104, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 66, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 70, 255, 255, 255, 255, 255, 255, 255, 255, 255, + + 255, 255, 255, 255, 42, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 150, 151, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 6, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 211, 255, 255, 232, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 32, 255, 255, 255, 255, 255, 255, 255, 255, + 143, 255, 255, 255, 255, 255, 255, 255, 255, 255, + + 255, 255, 165, 255, 144, 255, 255, 177, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 33, 255, 255, 255, 255, 255, + 255, 101, 91, 255, 92, 255, 255, 90, 255, 255, + 255, 255, 255, 255, 255, 255, 115, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 200, 255, + 255, 255, 255, 255, 255, 255, 255, 145, 255, 255, + 255, 255, 255, 148, 255, 255, 176, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 80, 255, 255, 255, 255, 255, 255, 255, 255, 255, + + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 40, 255, 255, 255, 22, 255, 255, 255, 255, + 255, 19, 255, 255, 255, 23, 255, 125, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 55, 57, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 215, 255, + 255, 255, 187, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 93, 255, + 255, 255, 255, 255, 255, 255, 255, 114, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + + 255, 255, 255, 226, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 119, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 171, 255, 255, 255, 255, 255, 255, 255, 255, + 235, 255, 255, 255, 255, 255, 255, 255, 135, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 130, + 255, 138, 255, 255, 255, 255, 255, 107, 255, 255, + 255, 76, 255, 255, 255, 255, 163, 255, 255, 255, + 255, 255, 178, 255, 255, 255, 255, 255, 255, 255, + + 255, 255, 255, 255, 255, 192, 255, 255, 255, 255, + 255, 255, 100, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 134, 255, 255, 255, 255, 255, 58, 59, + 255, 255, 255, 255, 255, 41, 255, 255, 255, 255, + 255, 65, 139, 255, 154, 255, 180, 149, 255, 255, + 255, 51, 255, 141, 255, 255, 255, 255, 255, 9, + 255, 255, 255, 79, 255, 255, 255, 255, 205, 255, + 255, 255, 162, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + + 255, 255, 255, 255, 255, 255, 255, 133, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 121, 214, + 255, 255, 255, 255, 191, 255, 255, 255, 255, 255, + 255, 255, 255, 173, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, + 255, 140, 255, 255, 255, 50, 52, 255, 255, 255, + 255, 255, 255, 255, 78, 255, 255, 255, 255, 203, + 255, 255, 255, 210, 255, 255, 255, 255, 255, 167, + 30, 24, 26, 255, 255, 255, 255, 255, 31, 25, + + 27, 255, 255, 255, 255, 255, 255, 75, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 169, 166, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 49, 255, + 102, 255, 255, 255, 255, 255, 255, 255, 255, 116, + 13, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 224, 255, 227, 255, 255, 255, 255, 255, 255, 12, + 255, 255, 21, 255, 255, 255, 209, 255, 255, 255, + 212, 53, 255, 175, 255, 168, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + + 255, 129, 128, 255, 255, 255, 255, 255, 255, 255, + 170, 164, 255, 255, 255, 216, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 60, 255, + 255, 255, 204, 255, 255, 255, 255, 255, 174, 255, + 255, 255, 255, 255, 255, 255, 255, 233, 234, 54, + 255, 255, 255, 88, 89, 255, 122, 255, 124, 255, + 155, 255, 255, 255, 127, 255, 255, 181, 255, 255, + 255, 255, 255, 109, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 188, 255, 255, 255, 255, + + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 156, 255, 255, 202, 255, 228, 255, 255, 255, 36, + 255, 255, 255, 255, 4, 255, 255, 108, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, + 255, 255, 255, 255, 255, 255, 255, 217, 255, 255, + 255, 255, 255, 255, 190, 255, 255, 159, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 63, 255, 37, + 208, 255, 185, 255, 255, 11, 255, 255, 255, 255, + 255, 255, 157, 67, 255, 255, 255, 255, 255, 132, + 255, 255, 255, 255, 255, 111, 255, 255, 255, 255, + + 255, 255, 255, 255, 255, 189, 105, 255, 94, 95, + 255, 255, 255, 69, 73, 68, 255, 61, 255, 255, + 255, 10, 255, 255, 255, 206, 255, 255, 255, 255, + 131, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 74, 72, + 255, 62, 225, 255, 255, 255, 146, 255, 255, 158, + 255, 255, 255, 255, 255, 255, 123, 56, 255, 255, + 255, 255, 255, 218, 255, 255, 255, 255, 255, 255, + 255, 106, 71, 112, 113, 64, 255, 207, 126, 255, + 255, 255, 255, 183, 255, 255, 255, 255, 255, 255, + + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 77, 255, 182, 255, 199, + 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 5, 255, 255, 255, 223, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 110, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 142, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + + 255, 255, 255, 255, 236, 255, 255, 195, 255, 255, + 255, 255, 255, 220, 255, 255, 255, 255, 255, 255, + 221, 255, 255, 255, 193, 255, 196, 197, 255, 255, + 255, 255, 255, 194, 198, 0 } ; static yyconst YY_CHAR yy_ec[256] = @@ -692,571 +710,575 @@ static yyconst YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static yyconst flex_uint16_t yy_base[2522] = +static yyconst flex_uint16_t yy_base[2551] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 2131, 1980, 81, 4909, 4909, 4909, 96, 52, + 90, 112, 1707, 1624, 81, 4963, 4963, 4963, 96, 52, 106, 63, 107, 111, 70, 117, 128, 131, 57, 88, 76, 133, 139, 130, 141, 143, 153, 162, 172, 174, - 186, 149, 1905, 4909, 4909, 4909, 107, 1596, 4909, 4909, - 4909, 186, 1551, 1440, 4909, 4909, 4909, 206, 1071, 4909, - 4909, 4909, 210, 855, 4909, 214, 4909, 218, 155, 741, + 186, 149, 1352, 4963, 4963, 4963, 107, 1178, 4963, 4963, + 4963, 186, 1148, 1090, 4963, 4963, 4963, 206, 984, 4963, + 4963, 4963, 210, 751, 4963, 214, 4963, 218, 155, 722, 222, 173, 0, 229, 0, 0, 180, 185, 85, 198, 223, 224, 216, 230, 231, 232, 233, 114, 235, 242, 243, 241, 237, 246, 247, 256, 253, 259, 263, 268, 267, 270, 271, 272, 276, 277, 285, 280, 294, 284, 279, 288, 298, 289, 300, 303, 310, 304, 308, 313, - 312, 315, 317, 320, 322, 325, 319, 316, 335, 336, - 339, 338, 341, 342, 344, 345, 343, 350, 588, 361, - 558, 369, 400, 377, 370, 250, 381, 163, 385, 389, - 0, 366, 381, 390, 374, 383, 349, 385, 387, 388, - 394, 395, 396, 407, 397, 409, 417, 416, 418, 412, - 404, 420, 421, 428, 430, 429, 437, 431, 434, 435, - 441, 443, 446, 454, 452, 444, 461, 462, 465, 469, - 458, 473, 470, 468, 482, 480, 487, 490, 486, 483, - - 488, 471, 492, 203, 495, 497, 499, 500, 501, 502, - 506, 505, 508, 507, 519, 509, 520, 516, 524, 518, - 537, 538, 521, 539, 530, 534, 544, 547, 551, 548, - 546, 549, 552, 553, 555, 556, 566, 568, 570, 571, - 579, 559, 577, 578, 580, 581, 557, 583, 585, 592, - 598, 584, 599, 603, 590, 597, 605, 607, 601, 615, - 613, 620, 616, 617, 622, 619, 631, 626, 629, 628, - 630, 632, 634, 635, 636, 639, 641, 644, 645, 651, - 656, 652, 654, 658, 659, 660, 661, 670, 669, 671, - 680, 684, 672, 685, 677, 688, 691, 693, 694, 696, - - 699, 701, 702, 703, 712, 705, 709, 716, 715, 719, - 723, 707, 729, 708, 733, 731, 734, 735, 737, 739, - 743, 749, 4909, 759, 752, 779, 746, 744, 770, 765, - 767, 768, 774, 773, 775, 776, 772, 803, 777, 784, - 785, 799, 806, 802, 815, 790, 808, 812, 819, 816, - 818, 822, 831, 823, 821, 824, 825, 740, 832, 838, - 844, 833, 830, 835, 847, 849, 850, 851, 860, 854, - 868, 852, 866, 870, 875, 865, 876, 878, 879, 881, - 882, 892, 889, 867, 890, 887, 897, 898, 899, 900, - 901, 903, 905, 906, 4909, 912, 910, 914, 915, 917, - - 918, 4909, 920, 919, 921, 929, 925, 927, 928, 933, - 949, 936, 780, 950, 945, 946, 947, 952, 953, 955, - 948, 961, 954, 958, 978, 962, 964, 965, 967, 974, - 971, 975, 996, 987, 985, 980, 992, 995, 1005, 999, - 1007, 1002, 1008, 1009, 1010, 1012, 1011, 1013, 1016, 4909, - 1023, 1025, 1024, 1026, 1033, 1034, 1035, 1036, 1037, 1039, - 1043, 1045, 1048, 1046, 1060, 1047, 1061, 1055, 1057, 1063, - 1056, 1065, 1074, 1067, 1077, 1079, 1088, 1084, 1086, 1093, - 1069, 1089, 1091, 1092, 1095, 1096, 1097, 1099, 1107, 1102, - 1104, 1108, 1105, 1115, 1112, 1114, 1118, 1111, 1123, 1120, - - 1127, 1131, 1133, 1134, 1141, 1137, 1139, 1140, 1143, 1145, - 1151, 1152, 1153, 1155, 1159, 1156, 1157, 1170, 1171, 1160, - 1173, 1174, 1162, 1161, 1184, 1181, 1188, 1187, 1189, 1197, - 1185, 1192, 1199, 1183, 1195, 1200, 1207, 1208, 1206, 1215, - 1212, 1210, 1217, 1221, 1222, 1216, 1223, 1225, 1226, 1227, - 1228, 1229, 1231, 1230, 1233, 1237, 1236, 1250, 1239, 1242, - 1253, 1254, 1255, 1256, 1259, 1262, 1257, 1263, 1264, 1265, - 1267, 1270, 1277, 1280, 1282, 1287, 1288, 1278, 1290, 1291, - 1294, 1295, 1298, 1301, 1299, 1303, 1305, 1309, 1311, 1313, - 1315, 1318, 1319, 4909, 1320, 1327, 1322, 1325, 1326, 1330, - - 1337, 1333, 1334, 1335, 1336, 1345, 4909, 1340, 4909, 4909, - 1344, 4909, 4909, 1349, 1347, 1359, 1365, 1368, 1268, 1362, - 1351, 1378, 1379, 1370, 1373, 1374, 1377, 1343, 1385, 1382, - 1387, 1390, 1395, 1399, 1400, 1401, 1407, 1408, 1393, 1410, - 1411, 1413, 1415, 1416, 1418, 1421, 1419, 1422, 1424, 1426, - 4909, 1436, 1444, 1445, 1427, 1440, 1442, 1443, 1447, 1448, - 1449, 1452, 1455, 1457, 1459, 1464, 1460, 4909, 1461, 1463, - 1473, 1469, 1468, 1477, 1475, 1462, 1480, 1483, 1484, 4909, - 1486, 1492, 1485, 1493, 1494, 1496, 1497, 1499, 1500, 1501, - 1504, 1505, 1503, 1502, 1512, 1509, 1513, 1519, 1530, 1514, - - 1518, 1526, 1531, 1532, 1533, 1541, 1536, 1543, 1540, 1539, - 1542, 1545, 1548, 1559, 1555, 1561, 1557, 1563, 1571, 1566, - 1568, 1570, 1572, 1574, 1578, 1579, 1580, 1582, 1581, 4909, - 1584, 1585, 4909, 1589, 1590, 1612, 1591, 1594, 1595, 1597, - 1601, 1603, 1614, 1606, 1630, 1613, 1631, 1625, 1632, 1634, - 1636, 1638, 1641, 1642, 1649, 1645, 1651, 1658, 1607, 1653, - 1672, 1604, 1656, 1654, 1657, 1662, 1660, 1666, 1667, 1664, - 1670, 1676, 1682, 4909, 1685, 1684, 1677, 1688, 1699, 1690, - 1694, 1697, 1700, 1702, 1710, 1703, 1705, 1711, 1707, 1708, - 1714, 1717, 1719, 1721, 4909, 1723, 1720, 1725, 1729, 1730, - - 1731, 1733, 1732, 1745, 1748, 1740, 4909, 1747, 1755, 1756, - 1758, 1750, 1751, 1752, 1765, 1762, 1766, 1768, 1770, 1772, - 1774, 1773, 1776, 1779, 4909, 1780, 1783, 1787, 1794, 1785, - 1792, 1795, 1797, 1796, 1798, 1802, 1803, 1810, 1811, 1807, - 1815, 4909, 1806, 1825, 1809, 1818, 1821, 1823, 1829, 1828, - 1830, 1837, 1838, 1833, 1836, 1835, 1843, 1844, 1845, 1851, - 1849, 1850, 1852, 1853, 4909, 1854, 1856, 124, 1860, 1861, - 1863, 1865, 1866, 1875, 1883, 1879, 1870, 1880, 1881, 1882, - 1887, 1888, 1889, 1890, 1891, 1893, 1899, 1900, 1901, 1904, - 1902, 1911, 4909, 1917, 1915, 1921, 1909, 1926, 1913, 1924, - - 1932, 1934, 1935, 1936, 4909, 1939, 1941, 1942, 1943, 1945, - 1947, 1944, 1950, 1951, 1952, 1954, 1958, 1957, 1960, 1964, - 1965, 1968, 1966, 1972, 1975, 4909, 1979, 1974, 1977, 1978, - 1989, 1987, 1996, 1991, 1993, 1894, 2000, 2011, 2002, 1997, - 2009, 2004, 2008, 2012, 2017, 2018, 2025, 2027, 2028, 2031, - 2029, 2014, 2039, 2041, 2040, 2038, 2044, 2048, 2052, 2046, - 4909, 2051, 2054, 2056, 2059, 2067, 2063, 2070, 2065, 2072, - 2071, 2073, 2075, 2081, 2076, 2082, 2083, 2087, 2091, 2093, - 2095, 4909, 2096, 2098, 2100, 2102, 2104, 2109, 2105, 2111, - 2112, 2114, 2115, 2116, 2118, 4909, 2122, 2123, 2126, 2131, - - 2137, 2129, 2127, 2138, 2139, 2140, 4909, 2147, 2149, 2150, - 2154, 2151, 2152, 2156, 2158, 2159, 4909, 2161, 2162, 2169, - 4909, 2170, 2166, 2168, 2165, 2173, 2172, 2174, 2176, 2178, - 2182, 2184, 2192, 2183, 2193, 4909, 2194, 2205, 2201, 2207, - 2195, 2197, 2202, 2211, 2221, 2208, 2224, 2225, 2226, 2214, - 2227, 2228, 2230, 2231, 2232, 4909, 2234, 2236, 2238, 2240, - 2241, 2242, 2243, 2245, 2251, 2247, 2256, 2250, 2258, 2260, - 2268, 2257, 2270, 2276, 2266, 2272, 2274, 2280, 2288, 2289, - 2286, 2290, 4909, 2293, 2294, 2296, 2284, 2297, 2299, 2300, - 2303, 2301, 2308, 2310, 2306, 2309, 2318, 2325, 2313, 2322, - - 2323, 2326, 2335, 2327, 2330, 2331, 2338, 2336, 2339, 2340, - 2343, 2334, 2344, 2346, 2350, 2354, 2352, 2367, 2363, 2356, - 2369, 2370, 2371, 2372, 4909, 2373, 2376, 2381, 2383, 2385, - 2386, 2375, 2387, 2377, 2400, 2399, 4909, 2396, 4909, 2401, - 2402, 2403, 2412, 4909, 2409, 4909, 2411, 2413, 2415, 4909, - 2416, 2417, 2420, 2421, 2423, 2425, 2427, 2432, 2428, 2430, - 2434, 2437, 2439, 2438, 2444, 2446, 2448, 2447, 2450, 2455, - 4909, 2454, 2456, 2457, 2461, 2462, 2465, 2464, 2466, 2467, - 2472, 2473, 2478, 2482, 2485, 2481, 2489, 4909, 2488, 2491, - 2492, 2494, 4909, 2495, 2496, 2498, 2503, 2504, 2505, 2506, - - 2507, 2512, 2510, 2515, 2529, 2526, 2516, 2527, 2513, 2534, - 2541, 2539, 2542, 2544, 2545, 2528, 2536, 2547, 2554, 2556, - 2552, 2559, 2551, 2560, 2562, 2563, 2564, 2566, 2569, 2570, - 2571, 2575, 2577, 2578, 2573, 2576, 2580, 2579, 4909, 2592, - 2581, 2583, 2597, 2595, 2599, 2602, 2603, 2605, 2604, 2608, - 2611, 2606, 4909, 2609, 4909, 2607, 2617, 2628, 2630, 2612, - 2634, 2625, 2635, 2618, 2636, 2638, 2646, 2643, 2649, 2650, - 2652, 2651, 2655, 2654, 4909, 2653, 2656, 2657, 2659, 2664, - 2662, 2676, 2672, 2661, 2686, 4909, 2688, 2683, 2690, 2693, - 2692, 2700, 2696, 4909, 2695, 2698, 2705, 2703, 2704, 4909, - - 4909, 2706, 2708, 2660, 2709, 2710, 2717, 2718, 2714, 2719, - 2720, 2729, 2721, 2726, 4909, 2735, 2728, 2736, 2741, 2742, - 2745, 2730, 2743, 4909, 2749, 2752, 2753, 2754, 2755, 2757, - 2758, 2756, 2759, 2767, 2765, 2760, 2774, 2782, 2773, 2784, - 4909, 2785, 2786, 2788, 2789, 2791, 2794, 2792, 2796, 2798, - 2799, 2800, 2802, 2803, 2804, 2808, 2814, 2806, 2807, 2810, - 2827, 2820, 2824, 2825, 2828, 2831, 2834, 2838, 2829, 2840, - 2835, 2842, 2847, 2844, 2857, 2850, 4909, 2858, 2854, 2861, - 2859, 2862, 2867, 2868, 2870, 2873, 2860, 2871, 2881, 2874, - 4909, 2883, 2876, 2893, 2878, 2888, 2902, 2897, 2879, 2898, - - 2901, 2904, 2907, 2905, 2909, 2910, 2913, 4909, 4909, 2914, - 2915, 2917, 2918, 2920, 2926, 2921, 2928, 2922, 2924, 4909, - 2932, 2944, 2934, 2939, 2949, 2951, 2942, 2950, 2952, 2953, - 2956, 2957, 2959, 2958, 2960, 2963, 2965, 2967, 4909, 2966, - 2968, 4909, 2970, 2974, 2982, 2972, 2991, 2992, 2984, 2994, - 2977, 2997, 2979, 3001, 3008, 3004, 3005, 3006, 3013, 3016, - 3020, 3024, 3007, 3019, 3029, 4909, 3025, 3026, 3027, 3028, - 3038, 3034, 3041, 3036, 4909, 3040, 3043, 3049, 3052, 3055, - 3042, 3063, 3058, 3060, 3061, 3059, 4909, 3066, 4909, 3044, - 3069, 4909, 3070, 3072, 3073, 3075, 3076, 3083, 3086, 3080, - - 3077, 3087, 3089, 3090, 3094, 3095, 3099, 3092, 4909, 3101, - 3103, 3105, 3108, 3104, 3110, 4909, 4909, 3112, 4909, 3115, - 3118, 4909, 3120, 3119, 3128, 3124, 3125, 3127, 3137, 2763, - 4909, 3132, 3130, 3142, 3138, 3140, 3144, 3145, 3146, 3148, - 3149, 3153, 4909, 3151, 3154, 3163, 3152, 3155, 3165, 3173, - 3160, 4909, 3176, 3167, 3177, 3179, 3182, 4909, 3183, 3185, - 4909, 3186, 3191, 3188, 3193, 3194, 3197, 3199, 3201, 3203, - 3211, 3207, 3208, 3209, 4909, 3206, 3210, 3216, 3226, 3213, - 3218, 3235, 3231, 3220, 3230, 3232, 3239, 3234, 3245, 3237, - 3249, 3241, 3244, 4909, 3251, 3252, 3254, 4909, 3253, 3255, - - 3260, 3261, 3264, 4909, 3262, 3265, 3267, 4909, 3271, 4909, - 3276, 3268, 3269, 3273, 3283, 3286, 3287, 3289, 3281, 3293, - 3294, 3295, 3307, 3302, 3303, 3304, 4909, 4909, 3310, 3312, - 3314, 3316, 3317, 3319, 3321, 3326, 3325, 3329, 3332, 3340, - 4909, 3341, 3322, 3343, 4909, 3333, 3344, 3336, 3335, 3346, - 3348, 3352, 3354, 3356, 3355, 3357, 3361, 3363, 3364, 3372, - 4909, 3365, 3367, 3373, 3374, 3375, 3376, 3377, 3378, 4909, - 3380, 3391, 3385, 3379, 3393, 3400, 3401, 3404, 3406, 3408, - 3409, 3410, 3412, 3415, 3420, 4909, 3426, 3416, 3417, 3418, - 3428, 3433, 3419, 3435, 3429, 3440, 3442, 3443, 3444, 4909, - - 3445, 3449, 3446, 3452, 3453, 3454, 3455, 3461, 3467, 3456, - 3459, 3464, 3469, 4909, 3470, 3472, 3473, 3476, 3479, 3481, - 3485, 3482, 3486, 3487, 3491, 3489, 3381, 4909, 3494, 3496, - 3499, 3497, 3503, 3505, 3507, 3509, 3510, 3508, 3519, 3511, - 3517, 3518, 3520, 3525, 3528, 3521, 3538, 3539, 4909, 3531, - 4909, 3533, 3540, 3550, 3545, 3547, 4909, 3549, 3553, 3552, - 4909, 3558, 3555, 3557, 3562, 4909, 3556, 3560, 3563, 3564, - 3578, 4909, 3580, 3581, 3582, 3591, 3592, 3589, 3590, 3593, - 3595, 3596, 3597, 3598, 4909, 3601, 3600, 3609, 3606, 3602, - 3613, 4909, 3612, 3614, 3615, 3619, 3618, 3620, 3627, 3624, - - 3626, 4909, 3631, 3628, 3641, 3637, 3573, 4909, 4909, 3636, - 3639, 3643, 3642, 3648, 4909, 3651, 3658, 3653, 3657, 3654, - 4909, 4909, 3660, 4909, 3661, 4909, 4909, 3662, 3664, 3671, - 4909, 3673, 4909, 3680, 3675, 3666, 3677, 3678, 4909, 3681, - 3684, 3686, 4909, 3688, 3693, 3689, 3690, 4909, 3692, 4909, - 3694, 3702, 3698, 3704, 3708, 3709, 3710, 3712, 3714, 3717, - 3719, 3720, 3721, 3724, 3726, 3728, 3730, 3734, 3736, 3731, - 3737, 3738, 3741, 3742, 3745, 3749, 3746, 3751, 3752, 3753, - 3754, 3756, 3757, 3759, 4909, 3762, 3760, 3763, 3764, 3769, - 3771, 3774, 3785, 3788, 3789, 4909, 4909, 3791, 3775, 3794, - - 3781, 4909, 3795, 3796, 3797, 3798, 3799, 3801, 3802, 3803, - 4909, 3807, 3813, 3810, 3811, 3812, 3816, 3817, 3824, 3825, - 3828, 3826, 3834, 3836, 3837, 3838, 3839, 3827, 3847, 3840, - 3841, 3848, 3849, 3858, 3862, 3866, 4909, 3850, 4909, 3859, - 3855, 3863, 4909, 4909, 3867, 3870, 3872, 3874, 3876, 3878, - 3879, 4909, 3880, 3881, 3891, 3884, 4909, 3893, 4909, 3899, - 3886, 3901, 3902, 3904, 4909, 4909, 4909, 4909, 3908, 3888, - 3906, 3911, 3912, 4909, 4909, 4909, 3913, 3914, 3915, 3917, - 3916, 3922, 4909, 3923, 3926, 3927, 3929, 3934, 3937, 3939, - 3940, 3947, 3943, 3949, 3942, 3951, 3953, 3955, 4909, 4909, - - 3958, 3959, 3966, 3963, 3964, 3967, 3970, 3972, 3973, 3975, - 3976, 3978, 3979, 4909, 3985, 4909, 3981, 3987, 3980, 3989, - 3994, 3995, 3996, 3999, 4909, 4909, 3993, 4000, 4005, 4007, - 4009, 4001, 4011, 4014, 4015, 4909, 4016, 4909, 4017, 4018, - 4025, 4030, 4027, 4033, 4909, 4023, 4036, 4909, 4039, 4040, - 4041, 4909, 4044, 4909, 4909, 4047, 4909, 4042, 4909, 4048, - 4050, 4053, 4058, 4060, 4065, 4066, 4070, 4059, 4072, 4055, - 4061, 4082, 4078, 4079, 4909, 4909, 4086, 4081, 4084, 4093, - 4088, 4091, 4097, 4909, 4909, 4089, 4092, 4098, 4909, 4099, - 4102, 4103, 4106, 4107, 4108, 4109, 4115, 4110, 4118, 4112, - - 4116, 4132, 4134, 4136, 4122, 4139, 4127, 4119, 4140, 4130, - 4141, 4909, 4143, 4148, 4146, 4909, 4153, 4155, 4157, 4154, - 4158, 4909, 4160, 4166, 4168, 4170, 4169, 4177, 4173, 4174, - 4909, 4181, 4182, 4163, 4909, 4909, 4185, 4909, 4187, 4909, - 4188, 4909, 4189, 4192, 4195, 4909, 4196, 4202, 4909, 4198, - 4205, 4200, 4207, 4208, 4909, 4217, 4216, 4218, 4225, 4212, - 4215, 4222, 4219, 4234, 4229, 4232, 4909, 4233, 4235, 4239, - 4240, 4242, 4241, 4247, 4243, 4244, 4249, 4246, 4248, 4261, - 4258, 4909, 4265, 4267, 4909, 4262, 4909, 4269, 4270, 4271, - 4909, 4273, 4275, 4278, 4279, 4909, 4280, 4282, 4909, 4284, - - 4288, 4290, 4285, 4291, 4293, 4292, 4297, 4300, 4302, 4307, - 4909, 4303, 4309, 4316, 4314, 4318, 4325, 4320, 4909, 4322, - 4323, 4324, 4332, 4330, 4334, 4909, 4336, 4331, 4909, 4340, - 4342, 4344, 4337, 4352, 4346, 4354, 4356, 4358, 4909, 4360, - 4909, 4909, 4361, 4909, 4362, 4364, 4909, 4367, 4368, 4369, - 4370, 4372, 4373, 4909, 4909, 4374, 4381, 4377, 4387, 4390, - 4909, 4376, 4383, 4392, 4393, 4394, 4909, 4391, 4398, 4401, - 4402, 4406, 4404, 4408, 4407, 4409, 4909, 4909, 4410, 4909, - 4909, 4412, 4416, 4419, 4909, 4909, 4909, 4432, 4909, 4434, - 4438, 4437, 4909, 4440, 4427, 4429, 4909, 4447, 4442, 4444, - - 4450, 4909, 4451, 4452, 4453, 4456, 4458, 4459, 4413, 4463, - 4468, 4466, 4464, 4470, 4471, 4473, 4476, 4477, 4480, 4909, - 4909, 4483, 4909, 4909, 4487, 4491, 4494, 4909, 4488, 4499, - 4909, 4501, 4495, 4502, 4503, 4505, 4507, 4909, 4909, 4508, - 4509, 4511, 4515, 4513, 4909, 4518, 4523, 4519, 4522, 4524, - 4528, 4525, 4909, 4909, 4909, 4909, 4909, 4529, 4909, 4909, - 4530, 4534, 4535, 4536, 4909, 4539, 4540, 4542, 4552, 4544, - 4548, 4545, 4556, 4560, 4557, 4561, 4564, 4563, 4566, 4568, - 4565, 4570, 4571, 4577, 4582, 4584, 4585, 4587, 4588, 4589, - 4591, 4592, 4601, 4596, 4598, 4599, 4909, 4600, 4909, 4602, - - 4909, 4909, 4609, 4611, 4606, 4604, 4619, 4627, 4617, 4622, - 4624, 4909, 4625, 4626, 4628, 4909, 4629, 4633, 4634, 4637, - 4639, 4636, 4641, 4642, 4630, 4644, 4657, 4654, 4664, 4660, - 4662, 4665, 4666, 4668, 4675, 4672, 4674, 4909, 4676, 4678, - 4679, 4681, 4682, 4689, 4684, 4685, 4690, 4909, 4693, 4695, - 4694, 4696, 4702, 4705, 4708, 4706, 4710, 4909, 4688, 4712, - 4716, 4719, 4724, 4717, 4726, 4727, 4729, 4731, 4730, 4738, - 4734, 4740, 4739, 4743, 4742, 4909, 4745, 4749, 4909, 4750, - 4751, 4752, 4753, 4759, 4909, 4763, 4754, 4757, 4764, 4767, - 4770, 4909, 4775, 4779, 4780, 4909, 4781, 4909, 4909, 4783, - - 4782, 4784, 4790, 4792, 4909, 4909, 4909, 4817, 4824, 4831, - 4838, 4845, 88, 4852, 4859, 4866, 4873, 4880, 4887, 4894, - 4901 + 314, 316, 318, 326, 317, 335, 322, 325, 332, 337, + 338, 342, 343, 345, 347, 339, 348, 346, 652, 371, + 604, 359, 414, 376, 327, 250, 380, 163, 384, 388, + 0, 380, 363, 390, 373, 385, 386, 387, 382, 389, + 394, 392, 396, 408, 398, 406, 416, 415, 417, 419, + 411, 422, 423, 424, 439, 425, 440, 432, 434, 441, + 442, 443, 447, 457, 450, 444, 451, 465, 468, 472, + 454, 476, 471, 461, 479, 481, 489, 490, 485, 487, + + 488, 491, 493, 203, 495, 496, 497, 498, 501, 504, + 505, 508, 506, 510, 512, 521, 517, 528, 518, 527, + 519, 537, 539, 523, 546, 532, 547, 550, 551, 558, + 541, 530, 554, 555, 556, 557, 561, 568, 570, 571, + 572, 579, 563, 574, 580, 581, 582, 583, 584, 589, + 585, 596, 592, 599, 601, 597, 594, 603, 607, 605, + 618, 615, 622, 617, 620, 625, 623, 627, 630, 631, + 632, 633, 634, 636, 637, 638, 640, 643, 645, 648, + 647, 660, 661, 656, 657, 662, 665, 669, 667, 673, + 676, 682, 683, 684, 687, 688, 689, 692, 694, 695, + + 693, 700, 703, 706, 707, 709, 716, 711, 712, 719, + 718, 721, 730, 714, 734, 720, 742, 738, 739, 745, + 747, 741, 744, 740, 4963, 746, 756, 771, 757, 768, + 781, 763, 758, 776, 778, 782, 784, 788, 789, 798, + 791, 796, 797, 794, 799, 800, 811, 806, 807, 813, + 818, 820, 821, 823, 832, 822, 824, 825, 833, 834, + 831, 839, 848, 838, 844, 846, 851, 850, 852, 857, + 863, 866, 874, 855, 871, 869, 878, 879, 880, 882, + 884, 885, 886, 894, 892, 890, 897, 891, 893, 901, + 903, 904, 906, 909, 910, 912, 4963, 916, 918, 920, + + 921, 922, 923, 4963, 925, 924, 926, 933, 929, 947, + 932, 934, 946, 955, 936, 950, 957, 952, 958, 959, + 961, 960, 962, 965, 968, 969, 970, 990, 972, 974, + 971, 978, 979, 995, 986, 1003, 988, 1011, 999, 976, + 1001, 1012, 1005, 1015, 1007, 1017, 1018, 1023, 1021, 1024, + 1029, 1025, 4963, 1032, 1033, 1045, 1034, 1035, 1038, 1042, + 1047, 1048, 854, 1049, 1056, 1058, 1050, 1065, 1063, 1064, + 1066, 1068, 1069, 1070, 1071, 1080, 1077, 1083, 1085, 1094, + 1092, 1096, 1099, 1076, 1098, 1100, 1101, 1102, 1104, 1106, + 1107, 1114, 1112, 1110, 1113, 1115, 1123, 1121, 1120, 1129, + + 1122, 1130, 1124, 1133, 1139, 1136, 1143, 1151, 1146, 1149, + 1153, 1154, 1156, 1147, 1160, 1162, 1165, 1166, 1168, 1169, + 1176, 1171, 1180, 1182, 1186, 1172, 1174, 1193, 1189, 1198, + 1196, 1195, 1203, 1201, 1204, 1205, 1212, 1207, 1209, 1210, + 1221, 1208, 1211, 1233, 1222, 1219, 1229, 1230, 1234, 1235, + 1237, 1238, 1239, 1240, 1241, 1242, 1246, 1247, 1243, 1252, + 1248, 1272, 1250, 1254, 1257, 1259, 1267, 1268, 1270, 1274, + 1276, 1279, 1281, 1280, 1282, 1284, 1291, 1283, 1292, 1289, + 1300, 1293, 1302, 1303, 1304, 1306, 1307, 1308, 1314, 1316, + 1321, 1310, 1322, 1326, 1327, 1332, 1329, 4963, 1323, 1339, + + 1334, 1337, 1335, 1340, 1350, 1345, 1346, 1348, 1349, 1356, + 4963, 1351, 4963, 4963, 1355, 4963, 4963, 1362, 1357, 1370, + 1359, 1376, 1379, 1367, 1380, 1388, 1401, 1384, 1383, 1391, + 1385, 1392, 1387, 1399, 1393, 1396, 1397, 1407, 1414, 1416, + 1422, 1415, 1418, 1425, 1423, 1426, 1428, 1430, 1432, 1434, + 1433, 1438, 1435, 1442, 4963, 1439, 1452, 1455, 1453, 1454, + 1457, 1458, 1459, 1462, 1461, 1463, 1470, 1464, 1471, 1478, + 1474, 4963, 1475, 1476, 1481, 1480, 1487, 1483, 1491, 1494, + 1492, 1496, 1497, 1498, 1499, 4963, 1501, 1509, 1500, 1511, + 1504, 1512, 1513, 1514, 1517, 1518, 1519, 1520, 1524, 1526, + + 1528, 1529, 1530, 1539, 1542, 1531, 1534, 1546, 1547, 1550, + 1549, 1558, 1553, 1561, 1556, 1557, 1559, 1562, 1564, 1574, + 1578, 1565, 1577, 1580, 1587, 1582, 1584, 1586, 1589, 1591, + 1588, 1592, 1597, 1600, 1598, 4963, 1599, 1601, 4963, 1606, + 1607, 1629, 1608, 1610, 1612, 1611, 1616, 1618, 1625, 1621, + 1643, 1639, 1644, 1631, 1647, 1649, 1641, 1651, 1656, 1657, + 1664, 1660, 1666, 1671, 1667, 1669, 1688, 1668, 1673, 1676, + 1679, 1674, 1677, 1684, 1681, 1683, 1685, 1698, 1699, 4963, + 1706, 1709, 1701, 1705, 1716, 1717, 1711, 1613, 1715, 1713, + 1725, 1723, 1721, 1726, 1727, 1728, 1733, 1734, 1735, 1745, + + 4963, 1736, 1737, 1741, 1746, 1749, 1752, 1755, 1758, 1762, + 1770, 1738, 4963, 1765, 1772, 1773, 1775, 1768, 1769, 1776, + 1779, 1780, 1790, 1783, 1785, 1786, 1791, 1793, 1797, 1799, + 1800, 1802, 4963, 1806, 1801, 1809, 1816, 1819, 1811, 1808, + 1821, 1822, 1823, 1825, 1828, 1833, 1835, 1831, 1832, 4963, + 1830, 1844, 1847, 1834, 1839, 1849, 1850, 1851, 1853, 1860, + 1862, 1855, 1858, 1867, 1859, 1868, 1864, 1875, 1872, 1874, + 1873, 1877, 4963, 1879, 1881, 124, 1885, 1886, 1884, 1888, + 1891, 1900, 1903, 1904, 1893, 1905, 1906, 1907, 1908, 1912, + 1896, 1916, 1914, 1917, 1919, 1924, 1922, 1925, 1926, 1928, + + 4963, 1934, 1932, 1941, 1939, 1949, 1943, 1945, 1950, 1951, + 1957, 1956, 4963, 1959, 1960, 1963, 1964, 1967, 1968, 1966, + 1972, 1973, 1974, 1979, 1976, 1978, 1980, 1982, 1984, 1987, + 1992, 1993, 1994, 4963, 2004, 1995, 1999, 1996, 2005, 2006, + 2020, 2008, 2011, 2015, 2021, 2029, 2017, 2023, 2039, 2035, + 2026, 2040, 2041, 2045, 2043, 2047, 2051, 2053, 2054, 2055, + 2062, 2063, 2059, 2061, 2066, 2069, 2074, 2076, 4963, 2077, + 2078, 2071, 2079, 2091, 2083, 2092, 2094, 2095, 2096, 2098, + 2099, 2102, 2100, 2101, 2103, 2109, 2111, 2118, 2112, 2120, + 2122, 4963, 2123, 2125, 2128, 2132, 2129, 2136, 2133, 2137, + + 2139, 2141, 2142, 2143, 2144, 4963, 2150, 2151, 2155, 2152, + 2154, 2164, 2161, 2166, 2167, 2168, 4963, 2175, 2176, 2173, + 2177, 2180, 2182, 2183, 2185, 2186, 4963, 2187, 2188, 2196, + 4963, 2197, 2195, 2192, 2193, 2199, 2198, 2202, 2200, 2204, + 2208, 2214, 2218, 2210, 2222, 4963, 2221, 2231, 2223, 2228, + 2224, 2234, 2235, 2237, 2239, 2243, 2252, 2244, 2247, 2251, + 2254, 2255, 2256, 2259, 2262, 4963, 2260, 2263, 2264, 2267, + 2266, 2268, 2276, 2272, 2269, 2275, 2278, 2279, 2289, 2285, + 2295, 2286, 2296, 2301, 2297, 2303, 2299, 2306, 2313, 2314, + 2315, 2317, 4963, 2322, 2319, 2324, 2310, 2325, 2326, 2327, + + 2329, 2331, 2332, 2337, 2335, 2336, 2344, 2353, 2345, 2348, + 2350, 2354, 2362, 2346, 2357, 2358, 2366, 2359, 2361, 2363, + 2368, 2370, 2371, 2374, 2385, 2388, 2381, 2395, 2396, 2375, + 2377, 2397, 2398, 2402, 4963, 2400, 2399, 2383, 2407, 2410, + 2412, 2415, 2416, 2413, 2418, 2422, 2430, 2426, 4963, 2427, + 4963, 2428, 2429, 2431, 2441, 4963, 2438, 4963, 2440, 2443, + 2444, 4963, 2447, 2451, 2446, 2448, 2454, 2456, 2457, 2461, + 2458, 2463, 2464, 2466, 2469, 2470, 2474, 2476, 2477, 2480, + 2478, 2481, 4963, 2492, 2483, 2485, 2489, 2493, 2495, 2487, + 2496, 2502, 2504, 2505, 2506, 2510, 2518, 2513, 2520, 4963, + + 2517, 2522, 2519, 2523, 4963, 2524, 2526, 2534, 2528, 2532, + 2530, 2536, 2540, 2537, 2543, 2551, 2552, 2553, 2547, 2555, + 2559, 2561, 2568, 2565, 2570, 2567, 2573, 2574, 2575, 2576, + 2583, 2585, 2582, 2595, 2578, 2588, 2581, 2597, 2590, 2591, + 2598, 2599, 2600, 2603, 2604, 2612, 2605, 2607, 2609, 2610, + 4963, 2620, 2616, 2621, 2628, 2622, 2624, 2630, 2632, 2633, + 2634, 2639, 2635, 2640, 4963, 2643, 4963, 2641, 2652, 2660, + 2645, 2653, 2657, 2655, 2661, 2664, 2665, 2667, 2675, 2679, + 2668, 2673, 2680, 2681, 2684, 2682, 4963, 2685, 2687, 2689, + 2691, 2692, 2697, 2703, 2699, 2696, 2706, 2712, 2721, 4963, + + 2719, 2716, 2723, 2731, 2724, 2732, 2733, 4963, 2717, 2728, + 2741, 2736, 2743, 4963, 4963, 2738, 2740, 2745, 2747, 2744, + 2754, 2750, 2751, 2755, 2762, 2767, 2693, 2764, 4963, 2766, + 2756, 2768, 2773, 2779, 2780, 2777, 2770, 4963, 2781, 2788, + 2771, 2783, 2791, 2789, 2792, 2794, 2795, 2805, 2800, 2802, + 2803, 2807, 2808, 2817, 4963, 2814, 2818, 2822, 2823, 2824, + 2825, 2810, 2829, 2831, 2832, 2833, 2834, 2836, 2837, 2839, + 2845, 2840, 2841, 2847, 2859, 2842, 2855, 2857, 2862, 2865, + 2869, 2871, 2858, 2873, 2861, 2875, 2880, 2881, 2889, 2884, + 4963, 2892, 2876, 2897, 2888, 2890, 2899, 2900, 2908, 2903, + + 2904, 2905, 2912, 2907, 4963, 2920, 2895, 2921, 2918, 2911, + 2934, 2930, 2931, 2932, 2936, 2933, 2937, 2940, 2941, 2942, + 2945, 4963, 4963, 2946, 2947, 2949, 2950, 2954, 2957, 2952, + 2969, 2956, 2958, 4963, 2962, 2977, 2964, 2972, 2981, 2986, + 2988, 2985, 2983, 2973, 2976, 2989, 2991, 2996, 2997, 2998, + 3006, 3002, 3003, 3004, 4963, 3007, 3005, 4963, 3009, 3011, + 3010, 3012, 3030, 3013, 3025, 3032, 3019, 3033, 3034, 3035, + 3043, 3039, 3042, 3045, 3049, 3058, 3050, 3059, 3051, 3060, + 3068, 4963, 3063, 3065, 3064, 3066, 3073, 3070, 3080, 3071, + 4963, 3079, 3078, 3085, 3088, 3090, 3082, 3099, 3094, 3096, + + 3097, 3095, 4963, 3105, 4963, 3106, 3107, 4963, 3108, 3111, + 3112, 3114, 3115, 3116, 3122, 3126, 3098, 3128, 3129, 3130, + 3131, 3133, 3140, 3132, 4963, 3141, 3136, 3139, 3143, 3144, + 3145, 4963, 4963, 3151, 4963, 3155, 3157, 4963, 3159, 3161, + 3166, 3162, 3163, 3165, 3169, 3170, 4963, 3176, 3172, 3180, + 3177, 3182, 3184, 3185, 3187, 3188, 3189, 3194, 4963, 3190, + 3193, 3202, 3191, 3195, 3208, 3207, 3198, 4963, 3216, 3217, + 3206, 3220, 3222, 4963, 3223, 3226, 4963, 3227, 3231, 3233, + 3234, 3235, 3238, 3240, 3236, 3242, 3250, 3246, 3247, 3248, + 4963, 3249, 3252, 3258, 3263, 3255, 3253, 3267, 3269, 3275, + + 3271, 3281, 3272, 3282, 3285, 3288, 3276, 3289, 3291, 3292, + 3293, 4963, 3294, 3298, 3299, 4963, 3295, 3296, 3302, 3307, + 3311, 4963, 3309, 3312, 3313, 4963, 3322, 4963, 3323, 3314, + 3315, 3319, 3324, 3332, 3326, 3339, 3334, 3336, 3342, 3343, + 3351, 3346, 3352, 3348, 4963, 4963, 3355, 3357, 3361, 3363, + 3364, 3359, 3366, 3373, 3369, 3376, 3377, 3385, 4963, 3386, + 3378, 3387, 4963, 3380, 3388, 3381, 3392, 3389, 3395, 3396, + 3400, 3397, 3402, 3403, 3406, 3409, 3410, 3419, 4963, 3411, + 3414, 3416, 3420, 3421, 3422, 3423, 3424, 4963, 3426, 3437, + 3431, 3425, 3442, 3446, 3447, 3450, 3452, 3453, 3454, 3457, + + 3460, 3462, 3465, 4963, 3466, 3455, 3463, 3464, 3474, 3478, + 3479, 3481, 3482, 3485, 3487, 3488, 3489, 4963, 3490, 3492, + 3493, 3497, 3499, 3501, 3503, 3504, 3510, 3494, 3511, 3514, + 3516, 4963, 3518, 3519, 3521, 3523, 3525, 3522, 3528, 3529, + 4963, 3531, 3532, 3539, 3534, 3547, 3540, 3427, 4963, 3545, + 3550, 3551, 3537, 3553, 3554, 3558, 3559, 3565, 3561, 3567, + 3568, 3569, 3571, 3574, 3577, 3578, 3581, 3579, 3584, 4963, + 3585, 4963, 3589, 3590, 3600, 3601, 3592, 4963, 3597, 3603, + 3599, 4963, 3604, 3606, 3609, 3607, 4963, 3617, 3621, 3611, + 3613, 3628, 4963, 3630, 3632, 3633, 3640, 3642, 3644, 3623, + + 3645, 3639, 3641, 3647, 3648, 4963, 3650, 3653, 3658, 3659, + 3652, 3661, 4963, 3660, 3662, 3663, 3667, 3668, 3669, 3676, + 3673, 3675, 4963, 3678, 3681, 3689, 3684, 3685, 4963, 4963, + 3690, 3695, 3697, 3691, 3698, 4963, 3701, 3708, 3703, 3707, + 3709, 4963, 4963, 3711, 4963, 3712, 4963, 4963, 3714, 3716, + 3723, 4963, 3725, 4963, 3726, 3727, 3713, 3731, 3732, 4963, + 3733, 3734, 3736, 4963, 3738, 3745, 3740, 3741, 4963, 3743, + 3744, 3748, 4963, 3749, 3755, 3757, 3759, 3751, 3760, 3764, + 3768, 3771, 3773, 3776, 3777, 3778, 3779, 3781, 3783, 3785, + 3787, 3791, 3788, 3792, 3793, 3794, 3797, 3798, 3804, 3801, + + 3806, 3807, 3808, 3809, 3811, 3812, 3815, 4963, 3816, 3817, + 3819, 3820, 3822, 3826, 3830, 3829, 3838, 3840, 4963, 4963, + 3843, 3845, 3846, 3847, 4963, 3848, 3849, 3850, 3851, 3852, + 3853, 3856, 3854, 4963, 3859, 3860, 3865, 3862, 3870, 3875, + 3876, 3877, 3878, 3881, 3879, 3884, 3886, 3893, 3889, 3890, + 3892, 3894, 3900, 3901, 3903, 3902, 3910, 3912, 3916, 4963, + 3906, 4963, 3913, 3917, 3919, 4963, 4963, 3923, 3924, 3929, + 3918, 3926, 3931, 3932, 4963, 3934, 3935, 3941, 3942, 4963, + 3945, 3946, 3948, 4963, 3951, 3952, 3954, 3956, 3958, 4963, + 4963, 4963, 4963, 3959, 3962, 3963, 3964, 3969, 4963, 4963, + + 4963, 3967, 3968, 3970, 3973, 3974, 3979, 4963, 3980, 3983, + 3985, 3986, 3992, 3997, 3998, 3989, 4006, 3999, 4002, 4007, + 4008, 4010, 4012, 4963, 4963, 4014, 4015, 4025, 4016, 4023, + 4026, 4029, 4030, 4031, 4017, 4034, 4036, 4037, 4963, 4043, + 4963, 4039, 4045, 4038, 4047, 4048, 4052, 4053, 4055, 4963, + 4963, 4051, 4058, 4062, 4066, 4063, 4059, 4069, 4072, 4067, + 4963, 4073, 4963, 4074, 4075, 4083, 4090, 4085, 4087, 4963, + 4091, 4095, 4963, 4076, 4096, 4097, 4963, 4098, 4102, 4104, + 4963, 4963, 4106, 4963, 4107, 4963, 4109, 4113, 4116, 4118, + 4119, 4121, 4123, 4126, 4128, 4131, 4132, 4133, 4140, 4136, + + 4137, 4963, 4963, 4145, 4138, 4142, 4152, 4149, 4151, 4154, + 4963, 4963, 4157, 4156, 4160, 4963, 4158, 4165, 4159, 4166, + 4167, 4169, 4170, 4173, 4175, 4178, 4179, 4180, 4187, 4190, + 4192, 4195, 4196, 4182, 4197, 4199, 4200, 4204, 4963, 4206, + 4207, 4203, 4963, 4213, 4209, 4215, 4217, 4218, 4963, 4219, + 4226, 4228, 4229, 4230, 4240, 4231, 4233, 4963, 4963, 4963, + 4236, 4241, 4243, 4963, 4963, 4246, 4963, 4247, 4963, 4248, + 4963, 4249, 4251, 4253, 4963, 4256, 4263, 4963, 4258, 4265, + 4260, 4266, 4268, 4963, 4276, 4272, 4278, 4282, 4275, 4279, + 4284, 4286, 4294, 4287, 4291, 4963, 4292, 4295, 4297, 4301, + + 4302, 4299, 4298, 4305, 4306, 4308, 4313, 4309, 4320, 4317, + 4963, 4323, 4327, 4963, 4324, 4963, 4329, 4330, 4332, 4963, + 4334, 4331, 4338, 4339, 4963, 4340, 4342, 4963, 4343, 4348, + 4350, 4344, 4352, 4354, 4355, 4357, 4360, 4363, 4368, 4963, + 4362, 4364, 4376, 4379, 4380, 4381, 4371, 4963, 4382, 4385, + 4386, 4394, 4391, 4393, 4963, 4396, 4397, 4963, 4399, 4401, + 4402, 4403, 4406, 4413, 4415, 4419, 4420, 4963, 4422, 4963, + 4963, 4404, 4963, 4410, 4426, 4963, 4429, 4424, 4430, 4431, + 4434, 4436, 4963, 4963, 4435, 4443, 4439, 4445, 4446, 4963, + 4442, 4448, 4452, 4453, 4454, 4963, 4455, 4456, 4458, 4459, + + 4464, 4461, 4466, 4467, 4469, 4963, 4963, 4470, 4963, 4963, + 4472, 4481, 4485, 4963, 4963, 4963, 4487, 4963, 4492, 4496, + 4495, 4963, 4498, 4500, 4501, 4963, 4503, 4504, 4505, 4506, + 4963, 4507, 4508, 4512, 4520, 4523, 4514, 4526, 4524, 4538, + 4516, 4527, 4528, 4530, 4534, 4535, 4541, 4545, 4963, 4963, + 4547, 4963, 4963, 4549, 4554, 4556, 4963, 4550, 4558, 4963, + 4562, 4563, 4564, 4565, 4567, 4569, 4963, 4963, 4570, 4473, + 4571, 4572, 4574, 4963, 4577, 4581, 4579, 4584, 4583, 4585, + 4590, 4963, 4963, 4963, 4963, 4963, 4591, 4963, 4963, 4586, + 4595, 4587, 4596, 4963, 4598, 4600, 4608, 4612, 4601, 4604, + + 4615, 4617, 4619, 4618, 4620, 4623, 4622, 4625, 4627, 4624, + 4630, 4631, 4641, 4644, 4635, 4646, 4647, 4648, 4651, 4649, + 4652, 4661, 4657, 4659, 4660, 4963, 4662, 4963, 4663, 4963, + 4963, 4665, 4668, 4670, 4672, 4682, 4686, 4673, 4675, 4683, + 4963, 4684, 4685, 4689, 4963, 4690, 4692, 4694, 4695, 4696, + 4698, 4700, 4701, 4703, 4707, 4712, 4714, 4722, 4723, 4715, + 4725, 4727, 4718, 4734, 4731, 4739, 4963, 4729, 4735, 4740, + 4741, 4742, 4749, 4744, 4745, 4750, 4963, 4753, 4755, 4757, + 4746, 4756, 4759, 4768, 4766, 4770, 4963, 4748, 4776, 4773, + 4778, 4780, 4782, 4784, 4785, 4789, 4790, 4794, 4798, 4786, + + 4799, 4800, 4802, 4801, 4963, 4809, 4803, 4963, 4805, 4811, + 4812, 4813, 4814, 4963, 4818, 4821, 4823, 4824, 4827, 4828, + 4963, 4830, 4834, 4836, 4963, 4839, 4963, 4963, 4841, 4837, + 4838, 4848, 4850, 4963, 4963, 4963, 4871, 4878, 4885, 4892, + 4899, 88, 4906, 4913, 4920, 4927, 4934, 4941, 4948, 4955 } ; -static yyconst flex_int16_t yy_def[2522] = +static yyconst flex_int16_t yy_def[2551] = { 0, - 2507, 1, 2508, 2508, 2509, 2509, 2510, 2510, 2511, 2511, - 2512, 2512, 2507, 2513, 2507, 2507, 2507, 2507, 2514, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2515, 2507, 2507, 2507, 2515, 2516, 2507, 2507, - 2507, 2516, 2517, 2507, 2507, 2507, 2507, 2517, 2518, 2507, - 2507, 2507, 2518, 2519, 2507, 2520, 2507, 2519, 2519, 2513, - 2513, 2507, 2521, 2514, 2521, 2514, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2515, 2515, - 2516, 2516, 2517, 2517, 2507, 2518, 2518, 2519, 2519, 2520, - 2520, 2519, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2519, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2519, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, - - 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2507, - 2513, 2519, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2519, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2513, - - 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2507, 2507, - 2513, 2507, 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2507, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2519, 2513, 2513, 2513, 2513, 2513, 2507, - 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, - - 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2519, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - - 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, - - 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, - 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2507, 2513, - 2513, 2513, 2513, 2507, 2513, 2507, 2513, 2513, 2513, 2507, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2513, - 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2507, 2513, 2507, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2507, - - 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2507, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2507, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2513, - 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2507, 2513, - 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2513, - 2513, 2513, 2513, 2513, 2513, 2507, 2507, 2513, 2507, 2513, - 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2513, - 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2507, 2513, 2513, - - 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2507, 2513, 2507, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2507, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2507, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2507, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2507, - - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2513, - 2507, 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, - 2507, 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, - 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, - 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - - 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2507, 2507, 2513, - 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, - 2507, 2507, 2513, 2507, 2513, 2507, 2507, 2513, 2513, 2513, - 2507, 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2507, 2513, - 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2507, 2513, 2507, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2507, 2507, 2513, 2513, 2513, - - 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2507, 2513, - 2513, 2513, 2507, 2507, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2507, 2513, 2513, 2513, 2513, 2507, 2513, 2507, 2513, - 2513, 2513, 2513, 2513, 2507, 2507, 2507, 2507, 2513, 2513, - 2513, 2513, 2513, 2507, 2507, 2507, 2513, 2513, 2513, 2513, - 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2507, - - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2507, 2513, 2507, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2507, 2507, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2507, 2513, 2513, - 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2507, 2513, 2513, - 2513, 2507, 2513, 2507, 2507, 2513, 2507, 2513, 2507, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2507, 2507, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2507, 2507, 2513, 2513, 2513, 2507, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2507, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, - 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2507, 2513, 2513, 2513, 2507, 2507, 2513, 2507, 2513, 2507, - 2513, 2507, 2513, 2513, 2513, 2507, 2513, 2513, 2507, 2513, - 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2507, 2513, 2513, 2507, 2513, 2507, 2513, 2513, 2513, - 2507, 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2507, 2513, - - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2513, - 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2507, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2513, - 2507, 2507, 2513, 2507, 2513, 2513, 2507, 2513, 2513, 2513, - 2513, 2513, 2513, 2507, 2507, 2513, 2513, 2513, 2513, 2513, - 2507, 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2507, 2513, 2507, - 2507, 2513, 2513, 2513, 2507, 2507, 2507, 2513, 2507, 2513, - 2513, 2513, 2507, 2513, 2513, 2513, 2507, 2513, 2513, 2513, - - 2513, 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2507, - 2507, 2513, 2507, 2507, 2513, 2513, 2513, 2507, 2513, 2513, - 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2507, 2513, - 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2507, 2507, 2507, 2507, 2507, 2513, 2507, 2507, - 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2507, 2513, - - 2507, 2507, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2507, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2507, 2513, - 2513, 2513, 2513, 2513, 2507, 2513, 2513, 2513, 2513, 2513, - 2513, 2507, 2513, 2513, 2513, 2507, 2513, 2507, 2507, 2513, - - 2513, 2513, 2513, 2513, 2507, 2507, 0, 2507, 2507, 2507, - 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, - 2507 + 2536, 1, 2537, 2537, 2538, 2538, 2539, 2539, 2540, 2540, + 2541, 2541, 2536, 2542, 2536, 2536, 2536, 2536, 2543, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2544, 2536, 2536, 2536, 2544, 2545, 2536, 2536, + 2536, 2545, 2546, 2536, 2536, 2536, 2536, 2546, 2547, 2536, + 2536, 2536, 2547, 2548, 2536, 2549, 2536, 2548, 2548, 2542, + 2542, 2536, 2550, 2543, 2550, 2543, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2544, 2544, + 2545, 2545, 2546, 2546, 2536, 2547, 2547, 2548, 2548, 2549, + 2549, 2548, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2548, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2548, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, + + 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2536, 2542, 2548, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2548, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, + + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2536, 2542, 2536, 2536, 2542, 2536, 2536, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2548, + 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2536, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + + 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2536, 2542, 2542, 2548, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + + 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + + 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, + 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, + 2536, 2542, 2542, 2542, 2542, 2536, 2542, 2536, 2542, 2542, + 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, + + 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2536, 2542, 2536, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, + + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, + 2542, 2542, 2542, 2536, 2536, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + + 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2536, 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2536, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + + 2542, 2542, 2536, 2542, 2536, 2542, 2542, 2536, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, + 2542, 2536, 2536, 2542, 2536, 2542, 2542, 2536, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, + 2542, 2542, 2542, 2536, 2542, 2542, 2536, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2536, 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, + 2542, 2536, 2542, 2542, 2542, 2536, 2542, 2536, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2536, 2536, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, + 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + + 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, + 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, + 2542, 2536, 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, + 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + + 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, + 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2536, 2536, + 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, + 2542, 2536, 2536, 2542, 2536, 2542, 2536, 2536, 2542, 2542, + 2542, 2536, 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2536, + 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2536, 2542, + 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2536, + 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, + 2542, 2536, 2542, 2542, 2542, 2536, 2536, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2536, + 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2536, + 2536, 2536, 2536, 2542, 2542, 2542, 2542, 2542, 2536, 2536, + + 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2536, 2536, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, + 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, + 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2536, 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2536, + 2542, 2542, 2536, 2542, 2542, 2542, 2536, 2542, 2542, 2542, + 2536, 2536, 2542, 2536, 2542, 2536, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + + 2542, 2536, 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2536, 2536, 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, + 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2536, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2536, 2536, + 2542, 2542, 2542, 2536, 2536, 2542, 2536, 2542, 2536, 2542, + 2536, 2542, 2542, 2542, 2536, 2542, 2542, 2536, 2542, 2542, + 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, + + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2536, 2542, 2542, 2536, 2542, 2536, 2542, 2542, 2542, 2536, + 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2536, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, + 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2536, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2536, + 2536, 2542, 2536, 2542, 2542, 2536, 2542, 2542, 2542, 2542, + 2542, 2542, 2536, 2536, 2542, 2542, 2542, 2542, 2542, 2536, + 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, + + 2542, 2542, 2542, 2542, 2542, 2536, 2536, 2542, 2536, 2536, + 2542, 2542, 2542, 2536, 2536, 2536, 2542, 2536, 2542, 2542, + 2542, 2536, 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, + 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2536, + 2542, 2536, 2536, 2542, 2542, 2542, 2536, 2542, 2542, 2536, + 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2536, 2542, 2542, + 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2536, 2536, 2536, 2536, 2536, 2542, 2536, 2536, 2542, + 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2542, + + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2536, 2542, 2536, + 2536, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2536, 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + + 2542, 2542, 2542, 2542, 2536, 2542, 2542, 2536, 2542, 2542, + 2542, 2542, 2542, 2536, 2542, 2542, 2542, 2542, 2542, 2542, + 2536, 2542, 2542, 2542, 2536, 2542, 2536, 2536, 2542, 2542, + 2542, 2542, 2542, 2536, 2536, 0, 2536, 2536, 2536, 2536, + 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536 } ; -static yyconst flex_uint16_t yy_nxt[4950] = +static yyconst flex_uint16_t yy_nxt[5004] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, 14, 14, 18, 20, 21, 22, 23, 24, 25, 26, @@ -1283,7 +1305,7 @@ static yyconst flex_uint16_t yy_nxt[4950] = 135, 132, 154, 130, 136, 133, 134, 143, 137, 143, 143, 71, 143, 146, 146, 75, 71, 75, 75, 148, 75, 148, 148, 70, 148, 70, 70, 151, 70, 71, - 75, 156, 75, 75, 70, 75, 71, 71, 299, 157, + 75, 156, 75, 75, 70, 75, 71, 71, 300, 157, 158, 75, 76, 71, 71, 71, 71, 160, 71, 169, 71, 163, 161, 159, 71, 71, 71, 164, 162, 71, 71, 173, 174, 147, 165, 166, 71, 168, 170, 71, @@ -1293,518 +1315,525 @@ static yyconst flex_uint16_t yy_nxt[4950] = 185, 71, 71, 193, 191, 195, 196, 71, 188, 192, 198, 71, 199, 71, 197, 201, 71, 71, 203, 200, - 202, 71, 204, 71, 206, 71, 71, 216, 71, 71, - 71, 212, 71, 71, 208, 71, 205, 207, 71, 218, - 209, 210, 213, 215, 211, 221, 214, 217, 71, 71, - 220, 71, 71, 225, 71, 71, 71, 71, 71, 219, - 228, 231, 71, 71, 139, 139, 227, 222, 224, 229, - 223, 145, 141, 239, 226, 141, 230, 232, 143, 149, - 143, 143, 233, 143, 146, 146, 148, 71, 148, 148, - 75, 148, 75, 75, 71, 75, 71, 235, 71, 234, - - 71, 71, 151, 71, 237, 236, 240, 71, 71, 71, - 71, 238, 243, 144, 246, 248, 242, 71, 245, 241, - 71, 247, 71, 249, 250, 71, 259, 251, 244, 71, - 71, 71, 252, 71, 71, 254, 260, 264, 261, 262, - 255, 71, 71, 71, 71, 256, 266, 71, 71, 253, - 71, 257, 258, 263, 71, 267, 71, 71, 268, 71, - 270, 273, 269, 271, 274, 71, 265, 71, 275, 282, - 279, 71, 272, 276, 71, 71, 284, 280, 71, 283, - 287, 71, 71, 71, 71, 277, 71, 278, 285, 290, - 281, 286, 288, 71, 292, 71, 71, 293, 291, 71, - - 71, 71, 289, 71, 297, 71, 294, 296, 71, 295, - 71, 298, 71, 71, 71, 71, 300, 302, 71, 71, - 71, 71, 71, 301, 306, 308, 310, 313, 303, 71, - 304, 71, 71, 71, 71, 305, 307, 71, 316, 315, - 311, 312, 309, 71, 317, 318, 320, 71, 322, 314, - 71, 71, 71, 319, 324, 321, 323, 71, 326, 71, - 71, 71, 71, 327, 71, 149, 71, 330, 71, 71, - 71, 142, 71, 335, 334, 336, 333, 331, 325, 71, - 328, 71, 329, 71, 71, 332, 339, 340, 337, 338, - 71, 71, 71, 71, 71, 345, 71, 71, 71, 346, - - 347, 140, 344, 71, 341, 71, 348, 343, 349, 342, - 71, 71, 71, 351, 71, 350, 71, 352, 71, 353, - 71, 355, 358, 357, 356, 354, 71, 360, 71, 71, - 71, 361, 71, 71, 362, 71, 364, 365, 366, 71, - 359, 71, 71, 71, 71, 71, 371, 71, 71, 71, - 372, 363, 71, 374, 71, 376, 370, 71, 71, 367, - 368, 378, 369, 380, 71, 71, 373, 71, 381, 71, - 375, 71, 71, 71, 71, 377, 379, 389, 388, 382, - 383, 387, 71, 71, 71, 71, 393, 394, 384, 385, - 71, 386, 395, 71, 392, 390, 391, 71, 71, 400, - - 396, 71, 397, 402, 71, 398, 71, 71, 404, 71, - 401, 403, 71, 399, 71, 71, 71, 406, 71, 410, - 71, 71, 71, 413, 405, 71, 407, 412, 71, 71, - 424, 409, 71, 414, 419, 408, 71, 415, 411, 417, - 425, 418, 71, 416, 71, 420, 71, 71, 71, 426, - 71, 429, 71, 71, 71, 481, 71, 71, 421, 71, - 427, 422, 71, 423, 430, 71, 448, 431, 428, 432, - 433, 435, 71, 434, 447, 437, 436, 449, 71, 439, - 149, 71, 450, 71, 451, 71, 71, 71, 71, 71, - 71, 438, 71, 71, 440, 441, 538, 71, 71, 458, - - 453, 452, 454, 71, 442, 455, 443, 444, 445, 457, - 459, 446, 71, 461, 456, 71, 71, 462, 463, 71, - 460, 71, 467, 468, 465, 71, 471, 464, 71, 71, - 466, 71, 71, 469, 71, 71, 71, 71, 71, 470, - 474, 475, 476, 71, 71, 71, 71, 473, 71, 482, - 478, 71, 480, 479, 472, 483, 477, 71, 485, 487, - 71, 486, 71, 71, 71, 71, 488, 71, 149, 494, - 484, 490, 493, 71, 489, 497, 496, 495, 71, 71, - 71, 71, 491, 71, 492, 499, 498, 500, 71, 71, - 503, 71, 71, 501, 71, 71, 507, 505, 502, 508, - - 71, 510, 71, 71, 504, 71, 509, 506, 511, 512, - 71, 71, 71, 71, 71, 517, 71, 516, 71, 71, - 520, 518, 513, 71, 515, 71, 521, 71, 71, 514, - 71, 71, 71, 71, 71, 523, 531, 524, 71, 519, - 71, 71, 71, 526, 522, 533, 71, 532, 530, 71, - 525, 527, 529, 528, 535, 534, 536, 539, 71, 71, - 71, 71, 71, 71, 542, 71, 71, 71, 71, 537, - 545, 71, 541, 546, 71, 71, 547, 71, 71, 548, - 71, 540, 543, 549, 71, 561, 544, 71, 71, 563, - 550, 71, 551, 71, 560, 558, 559, 552, 71, 553, - - 71, 568, 562, 565, 564, 71, 570, 554, 71, 71, - 555, 556, 71, 569, 566, 71, 567, 557, 71, 572, - 71, 71, 71, 71, 71, 71, 71, 573, 578, 71, - 575, 585, 574, 571, 579, 582, 71, 71, 149, 71, - 576, 581, 584, 580, 577, 583, 71, 71, 71, 71, - 71, 586, 71, 590, 592, 595, 71, 594, 71, 71, - 71, 71, 588, 591, 593, 587, 589, 597, 71, 71, - 71, 596, 598, 71, 71, 601, 71, 599, 71, 602, - 71, 606, 71, 600, 147, 603, 607, 71, 604, 609, - 71, 610, 71, 608, 605, 611, 612, 71, 613, 71, - - 614, 71, 71, 615, 71, 71, 71, 616, 71, 71, - 71, 619, 71, 618, 623, 71, 622, 71, 71, 624, - 71, 71, 628, 617, 71, 71, 626, 71, 71, 621, - 629, 71, 620, 71, 631, 625, 71, 635, 627, 632, - 71, 630, 634, 633, 71, 637, 71, 71, 641, 638, - 71, 636, 71, 71, 71, 643, 71, 644, 71, 642, - 639, 646, 640, 647, 71, 71, 71, 651, 71, 71, - 71, 650, 71, 71, 71, 71, 657, 655, 649, 645, - 648, 652, 654, 71, 71, 653, 71, 71, 661, 658, - 656, 662, 659, 660, 71, 664, 71, 71, 71, 663, - - 71, 71, 71, 665, 667, 71, 671, 666, 71, 668, - 71, 669, 71, 71, 676, 672, 674, 673, 670, 71, - 71, 71, 679, 71, 678, 71, 681, 680, 71, 71, - 71, 675, 683, 677, 71, 71, 71, 685, 71, 71, - 71, 71, 71, 71, 71, 691, 71, 686, 682, 71, - 71, 692, 71, 684, 687, 71, 688, 698, 689, 693, - 690, 694, 696, 71, 697, 695, 71, 71, 71, 71, - 71, 699, 71, 705, 700, 71, 71, 71, 71, 706, - 71, 71, 709, 71, 701, 702, 703, 708, 704, 707, - 71, 71, 758, 71, 710, 71, 712, 713, 714, 711, - - 71, 71, 715, 71, 71, 716, 717, 71, 71, 718, - 719, 71, 71, 720, 149, 725, 71, 722, 71, 724, - 726, 721, 71, 723, 71, 730, 71, 727, 71, 731, - 733, 71, 71, 71, 736, 71, 728, 732, 71, 71, - 71, 734, 738, 71, 741, 729, 71, 71, 71, 71, - 71, 739, 735, 71, 742, 737, 71, 71, 71, 773, - 71, 740, 71, 746, 71, 743, 754, 747, 751, 745, - 748, 753, 71, 744, 752, 71, 755, 749, 71, 756, - 750, 71, 757, 71, 760, 761, 71, 71, 769, 759, - 71, 71, 71, 762, 763, 71, 764, 774, 71, 765, - - 71, 776, 775, 71, 766, 771, 71, 770, 71, 778, - 767, 768, 71, 71, 71, 772, 780, 779, 777, 781, - 71, 71, 782, 71, 71, 784, 71, 785, 71, 71, - 789, 71, 71, 783, 71, 71, 788, 71, 795, 71, - 71, 145, 794, 799, 786, 787, 790, 793, 791, 71, - 792, 797, 798, 71, 796, 71, 71, 71, 71, 800, - 71, 71, 71, 801, 802, 71, 804, 807, 71, 805, - 71, 810, 71, 71, 71, 71, 71, 71, 803, 808, - 809, 71, 71, 812, 806, 813, 71, 815, 71, 814, - 71, 817, 811, 71, 819, 816, 71, 71, 71, 71, - - 822, 824, 820, 818, 825, 71, 71, 71, 823, 71, - 71, 827, 71, 71, 71, 71, 71, 71, 71, 826, - 821, 834, 71, 833, 837, 71, 71, 71, 828, 829, - 830, 71, 71, 832, 831, 836, 835, 838, 841, 71, - 840, 839, 842, 71, 71, 71, 71, 843, 849, 71, - 851, 844, 71, 71, 71, 71, 71, 852, 71, 845, - 848, 71, 859, 856, 144, 847, 846, 854, 71, 850, - 71, 853, 71, 858, 71, 855, 71, 860, 863, 71, - 865, 71, 857, 71, 71, 71, 868, 149, 861, 862, - 867, 71, 71, 71, 71, 71, 870, 71, 71, 864, - - 872, 866, 71, 71, 71, 884, 869, 71, 71, 142, - 71, 885, 875, 873, 71, 871, 71, 71, 888, 71, - 71, 874, 876, 886, 877, 71, 71, 71, 878, 916, - 879, 889, 890, 891, 880, 887, 881, 892, 71, 908, - 894, 882, 893, 71, 71, 71, 883, 71, 895, 71, - 897, 71, 899, 896, 71, 71, 904, 905, 71, 906, - 898, 903, 71, 900, 71, 907, 71, 71, 902, 71, - 71, 71, 901, 71, 917, 71, 920, 71, 921, 71, - 71, 918, 919, 71, 909, 71, 910, 922, 926, 71, - 71, 911, 928, 912, 923, 71, 924, 71, 71, 927, - - 929, 71, 925, 71, 913, 914, 932, 71, 933, 930, - 71, 915, 71, 71, 931, 71, 71, 938, 71, 935, - 71, 71, 936, 71, 71, 939, 934, 71, 947, 941, - 71, 937, 71, 71, 71, 943, 71, 940, 71, 945, - 942, 946, 71, 71, 71, 71, 71, 944, 952, 953, - 948, 954, 949, 71, 955, 957, 950, 951, 71, 956, - 71, 71, 960, 71, 71, 71, 958, 961, 71, 71, - 962, 71, 968, 963, 964, 71, 959, 965, 71, 71, - 967, 71, 970, 71, 966, 71, 71, 71, 972, 71, - 973, 975, 71, 71, 976, 969, 71, 982, 71, 978, - - 71, 981, 971, 974, 977, 71, 980, 71, 71, 71, - 71, 71, 979, 985, 983, 71, 71, 990, 991, 71, - 71, 996, 71, 71, 71, 992, 984, 986, 71, 989, - 987, 71, 995, 993, 71, 988, 71, 994, 71, 999, - 997, 71, 71, 71, 1003, 1004, 71, 1007, 71, 71, - 71, 71, 998, 1000, 1006, 1002, 71, 71, 71, 1001, - 1011, 1005, 71, 71, 71, 71, 71, 71, 1017, 71, - 1010, 1009, 1013, 71, 71, 1008, 71, 1021, 71, 71, - 1012, 1020, 1023, 71, 1014, 1026, 1016, 1018, 71, 1019, - 1024, 1015, 71, 71, 71, 71, 71, 1025, 1027, 1022, - - 71, 71, 71, 71, 71, 1030, 71, 71, 1028, 1029, - 1033, 1036, 71, 71, 71, 71, 1031, 71, 140, 1034, - 1086, 1032, 71, 1039, 71, 1035, 71, 1037, 71, 1041, - 71, 1045, 1038, 1046, 71, 1040, 1048, 71, 1042, 71, - 1043, 1047, 1049, 1044, 1050, 71, 1051, 71, 71, 71, - 1052, 1056, 71, 1054, 71, 71, 71, 71, 71, 1057, - 71, 1059, 1060, 71, 71, 71, 1053, 71, 1055, 1061, - 71, 71, 1062, 71, 1066, 1058, 1064, 71, 71, 71, - 1065, 71, 1063, 1067, 1071, 71, 1076, 71, 71, 1068, - 71, 71, 71, 71, 1069, 1070, 1072, 1075, 1078, 1073, - - 71, 1077, 71, 1082, 71, 1074, 71, 1080, 1083, 71, - 71, 1079, 1081, 71, 1087, 71, 1096, 71, 1097, 1095, - 1085, 71, 71, 1084, 71, 71, 1098, 71, 1094, 1088, - 71, 71, 1089, 1090, 1099, 1100, 1101, 1091, 71, 1102, - 71, 71, 71, 1092, 71, 1107, 1108, 1093, 1109, 1105, - 1104, 71, 71, 71, 71, 1111, 1106, 71, 1110, 71, - 1103, 71, 1117, 1118, 71, 71, 1112, 71, 1120, 71, - 1119, 1113, 71, 1114, 1124, 1115, 71, 1116, 71, 1125, - 71, 1123, 1121, 71, 71, 71, 71, 1122, 71, 71, - 1126, 1131, 1127, 1129, 71, 71, 71, 1128, 1130, 1137, - - 71, 1136, 1132, 1133, 71, 1139, 71, 1134, 71, 71, - 1140, 71, 1141, 71, 1144, 71, 1142, 71, 71, 1138, - 1135, 1146, 71, 1147, 71, 71, 1150, 71, 71, 71, - 2507, 71, 1143, 1153, 1152, 71, 71, 1145, 1154, 71, - 71, 1155, 71, 1159, 71, 1148, 1149, 1156, 1151, 1157, - 71, 71, 71, 71, 1164, 1158, 1165, 1161, 1160, 1162, - 71, 1167, 71, 71, 71, 71, 1163, 71, 1166, 71, - 1171, 71, 71, 1168, 71, 71, 1175, 1176, 71, 71, - 1170, 71, 71, 71, 1169, 71, 71, 71, 1183, 71, - 1180, 71, 1172, 1177, 1173, 71, 71, 71, 1174, 1178, - - 1181, 1179, 1187, 1182, 1188, 71, 71, 71, 71, 1184, - 71, 1190, 1192, 1186, 71, 71, 1185, 1193, 71, 1189, - 71, 71, 1196, 1194, 71, 1197, 1191, 71, 1195, 1200, - 1198, 1204, 1201, 1199, 71, 1203, 1202, 71, 71, 71, - 71, 71, 1205, 71, 71, 71, 1207, 71, 1210, 71, - 1206, 71, 1215, 71, 71, 71, 71, 1216, 71, 1209, - 71, 1213, 1211, 71, 71, 1212, 1208, 1214, 1219, 71, - 71, 71, 1217, 71, 1218, 1222, 1225, 1220, 1221, 71, - 1226, 71, 1224, 71, 1223, 71, 1227, 71, 1228, 71, - 1230, 1232, 1229, 71, 1231, 1235, 1236, 71, 1234, 71, - - 1237, 71, 71, 71, 1238, 1239, 71, 71, 1233, 71, - 71, 1240, 71, 71, 71, 1242, 71, 1246, 1241, 71, - 1245, 71, 71, 71, 1243, 1252, 71, 1244, 1249, 1248, - 1253, 71, 1254, 1250, 1247, 71, 71, 1255, 71, 71, - 71, 1251, 1260, 71, 71, 1264, 1256, 71, 71, 71, - 1263, 71, 71, 71, 1257, 1258, 71, 71, 1259, 71, - 2507, 1269, 1262, 71, 1272, 71, 1261, 71, 1265, 71, - 1273, 1266, 1267, 1277, 1271, 1268, 71, 1274, 1270, 1275, - 71, 1276, 71, 71, 71, 71, 71, 1281, 71, 71, - 71, 1282, 1279, 1286, 71, 1278, 71, 1280, 71, 71, - - 71, 1287, 1288, 1289, 1283, 1285, 1284, 1293, 1290, 71, - 1292, 1294, 71, 71, 71, 71, 71, 1298, 1291, 1299, - 1297, 1300, 71, 1301, 71, 71, 71, 1295, 71, 71, - 71, 1305, 1304, 71, 71, 1296, 71, 1308, 71, 1307, - 71, 71, 1302, 71, 1303, 71, 1311, 71, 1313, 1315, - 71, 71, 71, 1309, 1306, 1312, 1316, 71, 1318, 71, - 71, 71, 1314, 71, 1321, 1310, 1324, 71, 71, 71, - 71, 1317, 1320, 1323, 71, 71, 1328, 71, 71, 71, - 71, 1319, 1322, 1329, 1326, 71, 71, 1325, 1327, 1332, - 1333, 71, 1337, 1335, 71, 71, 1339, 1330, 71, 1331, - - 1336, 71, 71, 1341, 71, 71, 1334, 71, 71, 71, - 1345, 71, 1346, 1343, 1338, 1340, 71, 71, 71, 71, - 71, 1351, 1350, 71, 1342, 71, 71, 2507, 71, 71, - 1347, 1354, 1344, 1349, 1355, 1348, 1357, 1352, 1359, 71, - 71, 71, 71, 1353, 1358, 1360, 1356, 71, 1363, 71, - 1362, 1361, 71, 1364, 71, 71, 1365, 71, 71, 1368, - 71, 1371, 1366, 1372, 71, 71, 1374, 71, 1369, 71, - 1373, 1367, 71, 71, 1377, 71, 71, 71, 1376, 71, - 1370, 1378, 71, 71, 71, 1386, 71, 1375, 71, 71, - 71, 71, 71, 71, 71, 1379, 71, 1382, 1383, 1380, - - 1384, 1393, 1381, 1385, 1391, 71, 1387, 1389, 71, 1388, - 71, 1394, 71, 1390, 1392, 71, 71, 71, 71, 71, - 71, 71, 71, 1395, 71, 71, 1396, 1399, 1401, 1408, - 71, 71, 1400, 1402, 1398, 1404, 1403, 1405, 71, 1397, - 1409, 71, 1406, 71, 1411, 1407, 1410, 71, 71, 71, - 1415, 71, 1412, 1419, 1413, 1420, 71, 1414, 1416, 71, - 1418, 1417, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 1429, 71, 71, 71, 71, 1422, 71, 1424, 1426, - 1432, 1455, 1421, 1423, 1425, 71, 1431, 1428, 1430, 71, - 1433, 1427, 1437, 1438, 1435, 1440, 71, 1436, 1439, 71, - - 1443, 71, 1442, 71, 1434, 71, 71, 1445, 71, 71, - 1444, 71, 1449, 71, 1441, 1446, 71, 71, 71, 71, - 1451, 71, 71, 71, 1458, 1448, 1452, 71, 1447, 1450, - 71, 71, 71, 71, 71, 1456, 1463, 1457, 1453, 71, - 1454, 71, 71, 71, 1459, 1460, 1462, 1466, 71, 71, - 1464, 1461, 1472, 1468, 71, 71, 71, 1465, 71, 1469, - 1470, 1467, 71, 1471, 1475, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 1483, 1478, 71, 1474, 71, 1473, - 71, 1477, 1479, 1480, 1671, 1476, 71, 71, 1481, 1488, - 1484, 1485, 1482, 1486, 1487, 71, 1489, 71, 71, 71, - - 1492, 71, 71, 1490, 71, 71, 1494, 71, 1491, 71, - 1495, 71, 71, 71, 1493, 71, 71, 71, 1500, 71, - 71, 71, 1509, 71, 1501, 1496, 1504, 71, 1502, 1498, - 1499, 1497, 1503, 71, 1510, 1508, 1505, 71, 71, 1507, - 71, 71, 71, 1514, 71, 1515, 1516, 71, 71, 1506, - 1517, 71, 1519, 71, 1511, 71, 1512, 71, 1513, 1522, - 71, 1523, 1518, 71, 1524, 1526, 1525, 71, 1528, 1520, - 71, 71, 71, 71, 71, 71, 1521, 1533, 1530, 1531, - 71, 71, 1532, 71, 71, 1527, 71, 71, 1540, 71, - 1542, 71, 71, 1538, 71, 1543, 71, 1529, 1534, 1535, - - 1536, 71, 1546, 1544, 1539, 1537, 71, 1541, 1545, 1548, - 71, 71, 1550, 1552, 71, 71, 1547, 71, 71, 1549, - 71, 1554, 71, 71, 1557, 1558, 71, 71, 71, 1561, - 71, 71, 1551, 71, 71, 71, 1559, 71, 1555, 71, - 1563, 71, 1566, 1553, 1556, 71, 1562, 71, 1564, 1560, - 1569, 1570, 71, 1568, 1575, 71, 1573, 71, 1574, 1572, - 1565, 1567, 71, 71, 71, 71, 71, 1571, 1576, 71, - 71, 71, 71, 71, 1577, 1581, 71, 1584, 71, 71, - 71, 71, 1580, 71, 1586, 71, 1578, 71, 1579, 1582, - 71, 1591, 71, 1585, 1593, 71, 1589, 71, 1588, 1583, - - 1587, 1592, 1590, 1594, 71, 71, 1598, 71, 1596, 1595, - 71, 1599, 1601, 1597, 71, 1603, 1604, 71, 71, 71, - 71, 71, 1605, 1609, 1600, 1608, 71, 1611, 1610, 71, - 1606, 1612, 71, 71, 1602, 1607, 1615, 71, 71, 71, - 71, 71, 71, 1617, 1614, 1620, 1613, 71, 1622, 71, - 1616, 71, 1618, 71, 71, 71, 71, 71, 1624, 1625, - 1636, 1623, 71, 1626, 1627, 71, 1619, 1628, 71, 1621, - 1630, 71, 71, 71, 71, 1629, 71, 1631, 1632, 71, - 1633, 1634, 71, 71, 1635, 71, 71, 1641, 71, 71, - 71, 1640, 1645, 71, 1637, 1638, 71, 1639, 1642, 71, - - 71, 1643, 71, 71, 1644, 71, 1652, 71, 71, 1647, - 1646, 1650, 71, 1651, 71, 1654, 71, 71, 71, 1653, - 1648, 71, 1649, 71, 1661, 71, 1655, 1657, 71, 1659, - 1658, 71, 71, 71, 1656, 1666, 1660, 71, 71, 1668, - 71, 71, 1669, 71, 1662, 71, 1665, 1663, 1664, 1670, - 71, 71, 1672, 71, 1667, 71, 1674, 71, 71, 71, - 1675, 71, 71, 1673, 71, 71, 71, 71, 71, 1677, - 1678, 1679, 1682, 71, 1676, 1686, 71, 1681, 71, 1685, - 71, 1689, 1693, 1687, 1684, 1683, 71, 1680, 1688, 71, - 71, 1690, 71, 1691, 1692, 71, 71, 1695, 71, 71, - - 1698, 71, 1696, 1700, 71, 1697, 71, 71, 1694, 1703, - 71, 1702, 71, 1699, 71, 1704, 71, 1705, 1708, 71, - 71, 71, 71, 71, 71, 1709, 71, 1701, 1714, 71, - 1711, 71, 1706, 71, 1710, 1720, 1707, 1713, 1712, 71, - 1715, 1716, 1718, 71, 71, 71, 1722, 71, 71, 1719, - 71, 1717, 71, 1723, 71, 1721, 1724, 71, 71, 1725, - 1726, 1728, 71, 1729, 71, 71, 71, 71, 71, 1730, - 1732, 1727, 1733, 71, 71, 71, 1731, 71, 71, 1734, - 71, 71, 71, 1740, 71, 1741, 71, 1739, 1735, 71, - 1742, 1736, 1737, 1738, 71, 1744, 71, 1746, 1749, 71, - - 71, 1751, 71, 1743, 1745, 1748, 71, 71, 71, 1750, - 1753, 1747, 1754, 1752, 1756, 71, 71, 71, 1758, 1757, - 71, 1755, 1761, 71, 1759, 71, 1762, 71, 1766, 71, - 71, 1767, 71, 1770, 71, 71, 1765, 1760, 71, 71, - 1763, 1772, 71, 1771, 1768, 71, 71, 1774, 71, 71, - 1773, 1764, 1769, 71, 71, 1776, 71, 71, 1775, 71, - 1777, 71, 1779, 1781, 1782, 71, 1785, 71, 71, 71, - 71, 1778, 1780, 1786, 71, 1788, 71, 71, 71, 1783, - 71, 1784, 1791, 1787, 1792, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 1790, 1856, 1793, 71, 1794, - - 1789, 1803, 1799, 1802, 71, 1804, 71, 1797, 1801, 1795, - 1798, 1796, 1800, 71, 71, 1807, 1808, 71, 1809, 71, - 1805, 71, 71, 71, 1812, 71, 1806, 1815, 71, 71, - 71, 71, 71, 71, 1813, 1811, 1810, 1814, 1816, 71, - 1821, 71, 71, 1820, 1817, 1822, 71, 1824, 71, 1818, - 1819, 1823, 1826, 71, 1827, 71, 71, 71, 71, 71, - 1825, 1831, 71, 1830, 1833, 71, 71, 71, 71, 71, - 1828, 1836, 71, 1835, 71, 1837, 1829, 71, 1832, 1839, - 71, 1843, 71, 71, 1834, 71, 71, 1841, 1840, 71, - 1838, 1848, 71, 1847, 71, 71, 1842, 1850, 71, 71, - - 71, 1846, 71, 1844, 71, 1854, 1852, 71, 1845, 71, - 71, 1855, 71, 1849, 1858, 1851, 71, 1859, 71, 1857, - 71, 71, 71, 71, 71, 1863, 1853, 1864, 1865, 1861, - 71, 71, 71, 71, 71, 1860, 1866, 1867, 71, 1862, - 1870, 71, 1871, 1869, 71, 1875, 71, 1872, 1874, 1868, - 1873, 71, 71, 71, 1879, 1878, 1876, 1880, 71, 1881, - 71, 1885, 71, 71, 1877, 71, 71, 1882, 71, 71, - 71, 71, 1892, 71, 1887, 71, 71, 71, 1893, 2507, - 1883, 1886, 1884, 1888, 1889, 1890, 71, 1891, 1928, 1895, - 1896, 71, 1897, 71, 71, 71, 1894, 1898, 1900, 1901, - - 1899, 1902, 71, 71, 71, 71, 71, 1904, 71, 71, - 71, 71, 1908, 71, 71, 71, 1910, 1903, 1909, 71, - 1905, 1911, 71, 1906, 1912, 71, 71, 71, 71, 1907, - 1914, 71, 71, 71, 1921, 1913, 1918, 71, 1920, 71, - 71, 71, 1917, 1922, 71, 1915, 1925, 1916, 1926, 71, - 71, 1919, 71, 1930, 71, 71, 71, 1923, 1927, 1931, - 1924, 71, 1933, 1929, 71, 1935, 71, 71, 1934, 1937, - 71, 71, 1939, 71, 71, 71, 1938, 71, 1936, 71, - 1941, 1932, 1942, 1943, 71, 1944, 71, 1945, 71, 1946, - 71, 71, 1940, 71, 71, 1947, 1949, 71, 1952, 71, - - 1954, 71, 71, 71, 1957, 71, 71, 71, 1958, 1951, - 1953, 71, 1948, 1950, 1959, 71, 1960, 71, 1956, 1961, - 1955, 71, 71, 71, 1965, 71, 1966, 71, 1964, 1967, - 71, 1968, 71, 71, 71, 1962, 1963, 71, 1971, 71, - 1972, 71, 1974, 71, 71, 1969, 1975, 71, 1976, 71, - 71, 71, 1970, 1973, 71, 71, 1977, 1978, 71, 71, - 1981, 1983, 71, 1979, 71, 71, 71, 71, 1984, 71, - 71, 1990, 71, 71, 1980, 71, 71, 71, 1982, 1987, - 1995, 1991, 71, 1989, 71, 1986, 2507, 71, 71, 1997, - 1985, 1988, 1998, 1992, 71, 1993, 1996, 1999, 71, 1994, - - 2000, 71, 71, 2001, 71, 2002, 2003, 71, 71, 71, - 71, 71, 71, 2005, 71, 71, 71, 2013, 2004, 2014, - 71, 2010, 2016, 71, 71, 71, 71, 2007, 2006, 71, - 71, 2009, 2008, 2012, 2011, 2015, 2019, 71, 71, 71, - 71, 71, 2017, 2018, 2027, 2020, 2025, 71, 2026, 71, - 71, 71, 71, 71, 71, 2021, 2022, 2023, 2024, 2030, - 71, 71, 71, 71, 2035, 2031, 2034, 2029, 71, 2028, - 2036, 71, 71, 2032, 2033, 71, 71, 2037, 2038, 71, - 71, 2040, 2039, 71, 2045, 71, 2044, 71, 2041, 71, - 2048, 71, 71, 71, 71, 2042, 2049, 71, 2051, 71, - - 2043, 71, 2046, 2052, 71, 2054, 71, 2047, 2050, 2507, - 2053, 2055, 71, 2057, 71, 71, 2059, 71, 2056, 71, - 2058, 71, 2060, 2061, 71, 71, 71, 71, 71, 71, - 71, 2065, 2062, 2067, 2064, 71, 71, 2063, 2068, 71, - 71, 2066, 71, 2070, 2072, 2073, 2075, 71, 2069, 2076, - 71, 2071, 71, 71, 2079, 71, 71, 2074, 2078, 2077, - 71, 2080, 71, 2081, 71, 2084, 71, 2085, 71, 2083, - 2082, 71, 71, 2088, 2092, 2087, 71, 71, 2089, 71, - 71, 2090, 2091, 71, 2086, 71, 71, 2093, 71, 71, - 2094, 71, 71, 71, 71, 2095, 2098, 2097, 71, 2101, - - 71, 2100, 71, 2096, 2099, 2102, 71, 71, 71, 71, - 2107, 2103, 71, 71, 71, 2104, 2105, 2106, 71, 2112, - 71, 2108, 71, 2114, 71, 2109, 2116, 71, 71, 71, - 71, 71, 2121, 2110, 2507, 2120, 71, 2111, 71, 2115, - 71, 2113, 2122, 71, 2118, 2125, 71, 2117, 2123, 71, - 2119, 2124, 71, 71, 71, 71, 2127, 71, 2130, 2131, - 71, 71, 2126, 71, 2134, 2135, 71, 2128, 71, 2129, - 2136, 71, 71, 71, 71, 2132, 2137, 2138, 71, 71, - 2139, 2133, 2140, 71, 2142, 71, 2143, 2141, 2144, 2145, - 2146, 71, 71, 2148, 71, 71, 2147, 71, 2149, 71, - - 2152, 71, 71, 2151, 71, 71, 71, 2156, 2154, 2155, - 71, 71, 71, 2157, 2158, 71, 71, 2150, 2160, 71, - 71, 71, 71, 71, 2163, 71, 2153, 2167, 71, 71, - 2171, 71, 71, 2161, 2162, 71, 2166, 2159, 2164, 2169, - 71, 2165, 2168, 71, 2170, 71, 2172, 71, 2173, 71, - 2174, 2175, 71, 71, 71, 2182, 71, 2176, 2178, 71, - 2177, 71, 2179, 2180, 2183, 2185, 71, 71, 71, 2187, - 71, 71, 2188, 71, 2181, 2186, 71, 2184, 2191, 71, - 2189, 71, 71, 71, 2195, 2192, 71, 71, 2201, 2196, - 71, 2190, 2193, 2199, 71, 71, 2198, 2194, 71, 2197, - - 71, 71, 71, 2507, 2200, 71, 2206, 2205, 71, 71, - 2211, 71, 2203, 71, 2208, 71, 2209, 2207, 71, 2210, - 71, 71, 2204, 2202, 2216, 71, 2215, 2212, 71, 71, - 71, 71, 71, 2213, 2217, 71, 2218, 2219, 71, 2214, - 2222, 2224, 71, 2220, 2226, 71, 71, 71, 71, 2221, - 2223, 2229, 71, 71, 71, 71, 71, 71, 2232, 71, - 71, 71, 71, 2228, 2237, 2227, 2230, 2225, 2231, 2233, - 2236, 71, 2234, 2239, 71, 71, 2235, 2241, 71, 2242, - 71, 2244, 71, 71, 71, 2247, 71, 2238, 71, 2246, - 2240, 71, 71, 71, 2251, 71, 2243, 71, 71, 2245, - - 2254, 71, 2255, 71, 71, 71, 71, 2256, 2248, 2252, - 71, 2250, 2261, 71, 2249, 71, 71, 2259, 2262, 2253, - 71, 2263, 71, 2266, 2257, 2258, 2267, 71, 2264, 71, - 2260, 71, 2269, 71, 2268, 71, 71, 71, 71, 2274, - 2271, 2272, 2265, 71, 71, 71, 2277, 71, 2278, 71, - 71, 2270, 2280, 71, 2281, 71, 2273, 71, 2285, 71, - 2275, 2276, 2282, 2279, 2283, 71, 2286, 71, 2287, 71, - 2284, 71, 2289, 71, 71, 71, 2288, 71, 2292, 2293, - 71, 71, 71, 71, 2297, 71, 71, 71, 2300, 71, - 71, 2298, 2296, 2290, 71, 2294, 71, 2291, 2301, 2302, - - 71, 2299, 2295, 71, 71, 71, 71, 71, 2303, 2304, - 2306, 71, 2309, 2308, 71, 71, 2305, 71, 2307, 71, - 71, 71, 71, 71, 2320, 71, 71, 2318, 2321, 71, - 2310, 2341, 71, 2314, 2311, 2312, 2322, 2313, 2315, 2316, - 71, 2317, 71, 2319, 2323, 71, 2324, 71, 2325, 2326, - 71, 71, 2328, 71, 2327, 71, 2330, 71, 2329, 2331, - 71, 2333, 2332, 71, 71, 71, 71, 2337, 2338, 71, - 2339, 71, 71, 2346, 2336, 2344, 71, 71, 2334, 71, - 2345, 71, 2335, 71, 71, 2342, 71, 2340, 2343, 71, - 71, 2350, 2353, 71, 2351, 2354, 71, 2507, 2348, 2355, - - 71, 71, 2347, 2356, 71, 2349, 2357, 71, 71, 2352, - 2358, 2359, 71, 2360, 71, 71, 71, 2363, 71, 2365, - 71, 71, 71, 2361, 71, 2367, 71, 2362, 71, 2369, - 2372, 71, 71, 2364, 2371, 71, 71, 71, 71, 2366, - 2374, 71, 71, 71, 2370, 2378, 2373, 71, 71, 71, - 2368, 2380, 71, 71, 2377, 71, 2375, 71, 71, 2376, - 2385, 71, 2388, 2382, 2384, 71, 2379, 2386, 2381, 71, - 71, 2389, 2387, 71, 71, 2383, 71, 71, 71, 71, - 2397, 71, 2399, 71, 71, 2400, 2392, 2398, 2390, 2401, - 71, 2391, 2394, 2396, 2402, 71, 2395, 71, 71, 2393, - - 71, 71, 71, 2405, 71, 71, 2406, 2407, 2410, 71, - 2412, 71, 71, 71, 71, 71, 2403, 71, 2404, 71, - 2409, 2416, 71, 2411, 71, 2417, 2420, 2418, 2414, 2408, - 71, 2413, 71, 2415, 2421, 71, 2419, 71, 71, 71, - 71, 71, 71, 71, 2422, 2427, 71, 71, 2423, 71, - 71, 2429, 71, 2426, 71, 71, 2424, 71, 2425, 2434, - 2435, 2436, 2428, 2431, 2507, 2432, 2430, 71, 2433, 2438, - 71, 2440, 2439, 71, 2441, 71, 2437, 71, 71, 71, - 2442, 71, 2446, 2443, 2444, 71, 2448, 71, 71, 71, - 2447, 71, 71, 2449, 71, 71, 2454, 71, 71, 2451, - - 2445, 71, 71, 71, 2457, 2458, 71, 71, 71, 71, - 2450, 2456, 2461, 2452, 2453, 71, 2455, 2459, 71, 71, - 2460, 71, 2465, 71, 2466, 71, 2469, 2468, 2462, 71, - 71, 2464, 71, 2471, 2463, 2473, 2467, 71, 2472, 71, - 71, 2476, 71, 71, 71, 2478, 2474, 71, 2470, 2477, - 2479, 71, 71, 71, 2480, 71, 71, 2485, 71, 2475, - 2481, 2483, 71, 71, 71, 71, 71, 71, 2487, 2488, - 71, 2482, 71, 2491, 2484, 2492, 71, 71, 2495, 2496, - 71, 2486, 2507, 71, 2489, 2490, 2493, 2498, 71, 2494, - 2497, 2499, 71, 71, 71, 71, 71, 71, 2507, 2501, - - 2500, 2502, 2505, 71, 2506, 71, 2507, 2507, 2507, 2507, - 2507, 2507, 2507, 2507, 2503, 2507, 2504, 43, 43, 43, - 43, 43, 43, 43, 48, 48, 48, 48, 48, 48, - 48, 53, 53, 53, 53, 53, 53, 53, 59, 59, - 59, 59, 59, 59, 59, 64, 64, 64, 64, 64, - 64, 64, 74, 74, 2507, 74, 74, 74, 74, 139, - 139, 2507, 2507, 2507, 139, 139, 141, 141, 2507, 2507, - 141, 2507, 141, 143, 2507, 2507, 2507, 2507, 2507, 143, - 146, 146, 2507, 2507, 2507, 146, 146, 148, 2507, 2507, - 2507, 2507, 2507, 148, 150, 150, 2507, 150, 150, 150, - - 150, 75, 75, 2507, 75, 75, 75, 75, 13, 2507, - 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, - 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, - 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, - 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507 + 202, 71, 204, 71, 206, 208, 71, 71, 145, 71, + 71, 71, 213, 217, 209, 71, 205, 207, 71, 71, + 210, 211, 218, 214, 216, 71, 212, 215, 71, 219, + 71, 71, 71, 221, 222, 71, 71, 226, 71, 71, + 71, 71, 141, 229, 223, 141, 232, 225, 228, 220, + 231, 224, 230, 233, 139, 139, 71, 143, 227, 143, + 143, 235, 143, 146, 146, 148, 71, 148, 148, 75, + 148, 75, 75, 149, 75, 71, 234, 236, 71, 71, + + 71, 151, 71, 71, 237, 71, 238, 71, 241, 71, + 240, 71, 244, 239, 242, 247, 249, 243, 246, 71, + 250, 71, 248, 251, 71, 245, 252, 144, 71, 71, + 71, 253, 71, 260, 255, 71, 71, 71, 71, 256, + 262, 263, 267, 261, 257, 71, 265, 71, 254, 264, + 258, 259, 71, 71, 71, 71, 71, 71, 268, 269, + 71, 274, 270, 71, 71, 275, 271, 71, 280, 272, + 71, 276, 283, 273, 71, 266, 277, 281, 71, 285, + 282, 71, 284, 288, 71, 71, 291, 287, 278, 71, + 279, 286, 71, 289, 71, 290, 293, 294, 71, 292, + + 71, 71, 71, 71, 71, 295, 71, 297, 71, 71, + 71, 71, 299, 296, 71, 303, 301, 71, 71, 71, + 304, 71, 302, 71, 298, 71, 308, 310, 312, 305, + 71, 71, 71, 306, 71, 315, 71, 309, 307, 318, + 71, 71, 317, 71, 319, 71, 320, 311, 313, 314, + 71, 316, 71, 322, 71, 321, 329, 323, 326, 71, + 71, 324, 325, 71, 71, 328, 331, 71, 149, 71, + 71, 71, 332, 330, 71, 337, 71, 338, 335, 336, + 333, 71, 327, 71, 71, 71, 341, 71, 334, 339, + 340, 342, 71, 71, 71, 71, 71, 71, 71, 350, + + 348, 343, 71, 346, 349, 71, 351, 71, 345, 71, + 71, 344, 71, 353, 71, 354, 71, 142, 71, 357, + 71, 347, 356, 352, 358, 360, 355, 359, 71, 362, + 71, 71, 363, 71, 368, 71, 71, 364, 71, 366, + 71, 367, 361, 71, 71, 71, 71, 71, 373, 71, + 71, 71, 374, 71, 365, 376, 71, 378, 71, 372, + 71, 71, 370, 369, 380, 140, 371, 382, 375, 71, + 71, 377, 381, 71, 71, 71, 379, 383, 71, 385, + 71, 384, 71, 390, 389, 391, 71, 386, 387, 71, + 388, 395, 396, 393, 397, 71, 71, 71, 394, 398, + + 71, 71, 71, 392, 404, 71, 71, 71, 71, 406, + 402, 403, 405, 71, 399, 401, 71, 400, 408, 71, + 71, 407, 71, 413, 71, 71, 416, 71, 409, 71, + 415, 71, 71, 71, 71, 71, 417, 412, 410, 418, + 411, 422, 427, 71, 414, 419, 420, 71, 421, 428, + 423, 71, 71, 71, 71, 71, 429, 71, 71, 71, + 71, 432, 440, 424, 149, 430, 425, 439, 426, 71, + 71, 149, 438, 431, 433, 437, 71, 434, 441, 435, + 436, 71, 454, 442, 71, 450, 443, 444, 452, 71, + 451, 71, 455, 453, 71, 71, 445, 71, 446, 447, + + 448, 71, 71, 449, 71, 462, 457, 71, 456, 71, + 71, 71, 71, 71, 458, 463, 461, 468, 470, 71, + 71, 460, 467, 459, 71, 474, 71, 464, 469, 465, + 466, 71, 472, 71, 71, 71, 71, 71, 71, 471, + 473, 477, 478, 479, 71, 71, 71, 71, 485, 484, + 476, 71, 71, 481, 482, 480, 486, 71, 475, 71, + 483, 71, 488, 71, 71, 71, 489, 71, 71, 596, + 71, 487, 493, 490, 496, 497, 71, 491, 492, 71, + 498, 500, 71, 494, 71, 495, 503, 71, 499, 501, + 502, 71, 71, 71, 506, 71, 504, 71, 71, 71, + + 510, 511, 508, 71, 71, 71, 71, 71, 507, 512, + 71, 509, 505, 515, 71, 514, 71, 71, 516, 71, + 520, 519, 71, 71, 513, 71, 523, 521, 518, 71, + 524, 71, 517, 71, 71, 71, 71, 71, 71, 71, + 534, 526, 71, 527, 522, 71, 71, 71, 529, 71, + 537, 535, 525, 533, 536, 528, 530, 532, 531, 71, + 71, 538, 540, 71, 543, 71, 542, 539, 71, 541, + 71, 71, 71, 71, 71, 71, 546, 549, 71, 545, + 550, 71, 71, 71, 71, 71, 552, 71, 544, 71, + 574, 71, 71, 551, 547, 548, 565, 147, 553, 71, + + 564, 71, 554, 71, 555, 562, 563, 566, 71, 556, + 569, 557, 71, 567, 71, 568, 71, 571, 71, 558, + 71, 570, 559, 560, 71, 71, 576, 572, 71, 561, + 71, 71, 573, 577, 71, 579, 71, 71, 71, 575, + 578, 582, 71, 583, 586, 71, 149, 71, 71, 580, + 588, 71, 589, 581, 587, 71, 584, 585, 71, 590, + 71, 71, 71, 71, 594, 599, 592, 591, 598, 71, + 597, 71, 601, 593, 595, 600, 71, 71, 71, 71, + 603, 71, 71, 71, 71, 606, 605, 610, 602, 71, + 71, 145, 611, 71, 604, 613, 71, 614, 71, 607, + + 609, 615, 608, 612, 616, 71, 618, 71, 617, 71, + 619, 71, 71, 71, 71, 71, 620, 71, 623, 71, + 71, 627, 622, 71, 626, 71, 71, 71, 71, 628, + 632, 630, 621, 71, 71, 71, 71, 71, 625, 633, + 624, 629, 71, 71, 639, 635, 71, 634, 631, 71, + 636, 641, 71, 638, 637, 640, 71, 642, 645, 71, + 71, 144, 71, 643, 71, 647, 71, 71, 646, 71, + 648, 644, 650, 71, 651, 71, 652, 655, 71, 71, + 654, 71, 71, 659, 71, 71, 653, 71, 656, 71, + 660, 142, 649, 71, 658, 71, 661, 657, 662, 71, + + 666, 665, 71, 664, 663, 668, 71, 667, 71, 71, + 671, 71, 669, 670, 71, 672, 71, 71, 71, 677, + 71, 71, 71, 71, 71, 71, 680, 673, 682, 684, + 674, 679, 71, 683, 71, 71, 687, 675, 676, 678, + 685, 681, 71, 71, 689, 686, 71, 71, 71, 691, + 71, 71, 71, 71, 71, 71, 71, 688, 697, 71, + 71, 71, 690, 71, 698, 71, 692, 71, 693, 694, + 71, 695, 71, 696, 699, 701, 703, 702, 700, 704, + 71, 71, 705, 71, 711, 71, 706, 71, 707, 71, + 708, 712, 71, 71, 71, 71, 71, 71, 709, 715, + + 710, 720, 71, 714, 71, 71, 71, 722, 713, 716, + 718, 719, 721, 71, 717, 71, 71, 71, 723, 71, + 71, 149, 725, 71, 724, 726, 730, 71, 728, 71, + 731, 727, 729, 732, 71, 71, 71, 734, 736, 71, + 71, 737, 71, 733, 739, 71, 742, 71, 71, 738, + 71, 740, 71, 71, 744, 741, 735, 747, 71, 71, + 745, 71, 71, 71, 71, 140, 748, 743, 71, 71, + 71, 746, 71, 762, 752, 71, 760, 749, 753, 757, + 71, 754, 751, 71, 759, 758, 750, 761, 755, 71, + 763, 756, 71, 71, 765, 767, 71, 71, 71, 780, + + 71, 71, 775, 764, 71, 71, 71, 782, 779, 71, + 71, 784, 71, 766, 71, 768, 769, 776, 770, 781, + 71, 771, 777, 778, 783, 785, 772, 71, 71, 71, + 786, 71, 773, 774, 787, 71, 71, 788, 71, 71, + 789, 71, 791, 71, 795, 71, 71, 71, 71, 794, + 790, 71, 71, 800, 801, 71, 792, 802, 793, 803, + 796, 797, 804, 799, 798, 71, 71, 71, 71, 805, + 71, 71, 71, 806, 71, 71, 71, 71, 807, 808, + 810, 811, 813, 71, 71, 816, 814, 71, 71, 71, + 809, 71, 815, 71, 71, 812, 71, 818, 819, 820, + + 71, 823, 821, 822, 71, 71, 817, 71, 825, 71, + 71, 71, 71, 71, 71, 830, 832, 71, 824, 828, + 826, 833, 71, 831, 71, 71, 71, 71, 827, 835, + 71, 71, 71, 71, 834, 829, 842, 71, 836, 71, + 841, 71, 71, 71, 71, 837, 838, 71, 845, 839, + 840, 843, 71, 846, 850, 71, 844, 848, 849, 71, + 71, 847, 71, 71, 851, 857, 71, 852, 859, 71, + 71, 71, 71, 860, 71, 71, 856, 71, 71, 853, + 864, 868, 854, 855, 862, 867, 858, 71, 866, 861, + 71, 71, 863, 71, 871, 71, 873, 71, 865, 71, + + 71, 71, 71, 876, 149, 71, 870, 875, 869, 878, + 71, 71, 71, 71, 71, 872, 877, 874, 880, 71, + 71, 71, 892, 71, 71, 71, 71, 893, 883, 71, + 881, 71, 879, 896, 71, 943, 882, 71, 71, 884, + 894, 885, 71, 898, 71, 886, 897, 887, 899, 895, + 900, 888, 71, 889, 71, 901, 71, 71, 890, 904, + 71, 903, 71, 891, 71, 905, 902, 907, 908, 71, + 71, 912, 913, 71, 914, 906, 911, 71, 915, 71, + 71, 71, 71, 910, 71, 909, 71, 71, 928, 71, + 71, 925, 71, 924, 71, 929, 71, 71, 71, 916, + + 917, 71, 918, 926, 927, 930, 2536, 919, 931, 920, + 934, 71, 71, 936, 71, 932, 935, 933, 71, 71, + 921, 922, 71, 940, 71, 937, 71, 923, 71, 71, + 71, 939, 946, 938, 71, 941, 71, 944, 71, 71, + 71, 71, 945, 942, 949, 947, 71, 71, 71, 71, + 71, 71, 955, 948, 71, 951, 953, 954, 71, 71, + 950, 2536, 71, 956, 966, 71, 952, 960, 71, 957, + 961, 71, 958, 962, 959, 71, 964, 965, 71, 968, + 963, 71, 71, 71, 969, 71, 71, 970, 71, 71, + 971, 972, 71, 71, 967, 973, 71, 978, 71, 71, + + 2536, 980, 974, 71, 71, 976, 71, 975, 977, 982, + 71, 983, 71, 71, 71, 71, 979, 985, 986, 71, + 981, 71, 71, 991, 71, 988, 984, 987, 990, 71, + 989, 992, 71, 993, 71, 71, 71, 995, 71, 994, + 1000, 71, 1001, 71, 71, 71, 71, 71, 71, 1002, + 1003, 1005, 71, 996, 999, 997, 1007, 71, 998, 1006, + 71, 1004, 71, 71, 71, 1009, 71, 1013, 71, 1014, + 1008, 71, 71, 71, 1010, 71, 1016, 71, 1012, 1017, + 71, 71, 1011, 1015, 1021, 71, 71, 71, 71, 1020, + 71, 1018, 71, 1027, 71, 1019, 1023, 71, 71, 71, + + 1031, 71, 1030, 1022, 71, 1024, 71, 1033, 1036, 71, + 1034, 1026, 1028, 71, 1029, 1025, 71, 71, 71, 71, + 71, 71, 1035, 1037, 1032, 71, 1040, 71, 1042, 71, + 71, 1046, 71, 1038, 1039, 71, 1043, 71, 71, 71, + 1041, 71, 1044, 2536, 1049, 71, 1051, 71, 1055, 1045, + 1056, 1047, 71, 1048, 71, 1052, 71, 1053, 71, 1050, + 1054, 1057, 71, 71, 71, 1059, 1058, 1061, 1062, 71, + 71, 1066, 71, 71, 1060, 1064, 71, 71, 1067, 71, + 71, 71, 1069, 1063, 1070, 71, 71, 71, 1065, 71, + 1071, 71, 71, 71, 1072, 71, 1068, 71, 1074, 1076, + + 71, 1077, 1075, 1081, 1073, 71, 71, 71, 71, 71, + 1078, 1086, 71, 1080, 1079, 1082, 1085, 71, 71, 71, + 1088, 71, 1087, 1090, 71, 1083, 1084, 1092, 71, 1089, + 71, 1091, 1093, 71, 71, 1097, 71, 2536, 1095, 71, + 1094, 1096, 71, 1104, 1108, 1105, 1106, 1098, 71, 1107, + 1099, 1100, 71, 71, 71, 1101, 71, 1112, 71, 1110, + 71, 1102, 1109, 1111, 71, 1103, 71, 71, 71, 1118, + 1119, 1115, 71, 1114, 71, 71, 71, 1120, 1121, 71, + 1113, 1116, 71, 1127, 71, 1128, 1117, 71, 1122, 71, + 71, 71, 71, 1123, 1130, 1124, 71, 1125, 1134, 1126, + + 1129, 1133, 1132, 1135, 71, 71, 1131, 71, 71, 71, + 1137, 71, 71, 71, 71, 71, 71, 1139, 1136, 1141, + 1143, 1138, 71, 1145, 71, 71, 1142, 1144, 1140, 1148, + 1149, 71, 1151, 71, 1146, 71, 71, 1152, 71, 1153, + 1150, 71, 71, 1154, 1156, 71, 71, 1147, 1158, 71, + 71, 1159, 71, 1162, 71, 71, 71, 71, 2536, 1165, + 1155, 1164, 1157, 71, 71, 71, 1166, 71, 71, 1167, + 1169, 1160, 1170, 1161, 71, 1163, 1168, 71, 1171, 71, + 71, 71, 1176, 1177, 1179, 1173, 71, 1174, 71, 71, + 71, 1178, 1172, 71, 1175, 71, 71, 1183, 71, 71, + + 71, 71, 1180, 1187, 1188, 71, 71, 1182, 71, 71, + 71, 71, 71, 71, 1181, 71, 1195, 71, 1192, 1184, + 1185, 71, 1189, 71, 1186, 1191, 1193, 71, 1190, 1194, + 1200, 71, 1199, 1196, 71, 71, 71, 71, 1204, 1198, + 1202, 71, 1197, 1205, 71, 1206, 1201, 71, 71, 1207, + 71, 1208, 71, 1203, 1214, 1212, 71, 71, 1213, 1216, + 71, 1217, 1209, 1210, 71, 71, 1211, 71, 71, 71, + 1215, 1218, 71, 71, 1222, 71, 71, 71, 1227, 71, + 71, 71, 71, 1219, 1228, 71, 1221, 1225, 71, 71, + 1223, 71, 71, 1220, 1226, 1224, 1233, 1229, 71, 71, + + 1230, 1231, 71, 1234, 1232, 1238, 1235, 1237, 71, 71, + 71, 1236, 71, 1239, 71, 1242, 71, 1240, 1241, 71, + 1247, 1248, 1244, 71, 1246, 1243, 71, 71, 71, 1249, + 71, 1250, 71, 1245, 1251, 71, 1252, 71, 71, 71, + 71, 1254, 71, 1258, 71, 71, 1253, 1257, 71, 71, + 71, 1264, 1255, 1260, 1256, 1261, 1265, 71, 71, 71, + 1266, 71, 1262, 71, 1259, 1267, 71, 71, 1263, 1272, + 71, 71, 71, 1276, 71, 71, 71, 1275, 1268, 71, + 1269, 71, 1270, 71, 71, 1273, 1271, 71, 71, 1274, + 71, 1277, 1289, 1278, 71, 1279, 71, 1281, 71, 1284, + + 1280, 71, 1283, 1290, 1285, 1282, 1286, 1287, 71, 71, + 71, 71, 71, 71, 1288, 71, 1298, 1293, 1296, 1291, + 71, 1294, 1300, 71, 1292, 71, 71, 1297, 71, 71, + 1301, 71, 1302, 1303, 1295, 71, 1299, 1307, 1308, 71, + 71, 71, 71, 71, 71, 1312, 1304, 1311, 1313, 1305, + 1314, 71, 1315, 71, 71, 1306, 71, 71, 1309, 71, + 71, 71, 1310, 1318, 71, 1319, 1321, 71, 1322, 71, + 71, 71, 1316, 1317, 71, 1325, 71, 71, 1329, 71, + 1320, 1327, 71, 71, 1323, 1326, 1330, 71, 1332, 71, + 71, 71, 1328, 71, 71, 1324, 71, 1335, 71, 1337, + + 71, 1334, 71, 1331, 1338, 71, 71, 1342, 71, 71, + 1336, 1333, 1340, 1343, 1339, 71, 1341, 71, 71, 71, + 1344, 1349, 1347, 71, 1346, 1351, 71, 1353, 1350, 1345, + 71, 71, 71, 71, 1355, 71, 71, 71, 1348, 71, + 1359, 71, 1357, 71, 1354, 71, 1352, 71, 1360, 71, + 71, 1356, 1364, 71, 1365, 1361, 71, 2536, 1363, 1371, + 71, 1358, 1366, 1362, 71, 71, 71, 1368, 71, 1373, + 1369, 1372, 71, 1374, 71, 1377, 1367, 1376, 71, 1378, + 71, 71, 1370, 71, 1379, 1380, 71, 71, 71, 71, + 1385, 71, 1386, 1391, 71, 71, 71, 1375, 71, 1381, + + 1387, 71, 1388, 71, 71, 1382, 1390, 1383, 71, 1384, + 71, 71, 71, 71, 1389, 1392, 71, 71, 71, 1400, + 71, 1393, 71, 71, 1394, 71, 1396, 1397, 1398, 71, + 1399, 1395, 1405, 71, 71, 71, 1403, 71, 1401, 1407, + 1402, 71, 1408, 71, 1404, 71, 71, 71, 71, 1406, + 1409, 1410, 71, 71, 71, 1413, 71, 1416, 71, 1415, + 1417, 1424, 1414, 1412, 1422, 71, 71, 1411, 71, 1418, + 71, 1419, 1423, 71, 71, 1426, 1420, 71, 71, 1421, + 71, 71, 1433, 1428, 1427, 1425, 71, 1430, 71, 1432, + 1431, 1434, 71, 71, 71, 71, 1429, 71, 71, 1436, + + 71, 1435, 71, 1443, 71, 71, 71, 1440, 1438, 71, + 71, 1437, 71, 1439, 1445, 1446, 71, 1447, 1442, 71, + 1444, 1449, 1480, 1441, 1450, 71, 1456, 1451, 1454, 71, + 71, 1448, 71, 1455, 71, 1458, 71, 71, 1459, 1461, + 1452, 71, 1460, 1453, 71, 71, 71, 1457, 1465, 71, + 1463, 71, 1462, 71, 71, 1464, 71, 71, 71, 1467, + 71, 1474, 1466, 71, 71, 1468, 1471, 71, 71, 71, + 1469, 1473, 1470, 1472, 1479, 71, 1475, 71, 1482, 71, + 71, 71, 1476, 71, 71, 1484, 71, 1477, 1478, 1483, + 71, 1485, 71, 71, 71, 1481, 71, 1486, 1487, 1488, + + 1491, 71, 71, 1492, 71, 71, 1489, 71, 71, 1490, + 1493, 1494, 1499, 71, 1495, 71, 71, 1496, 71, 1503, + 71, 71, 1502, 71, 1504, 1500, 1497, 71, 1498, 1505, + 71, 71, 1506, 1501, 1508, 71, 71, 71, 71, 1510, + 1507, 1511, 71, 1512, 71, 71, 71, 71, 1509, 71, + 71, 1516, 71, 71, 71, 71, 1517, 1520, 71, 1525, + 71, 1518, 1514, 1515, 1513, 1519, 1526, 1521, 71, 1524, + 71, 71, 71, 1523, 71, 71, 1527, 1530, 71, 1531, + 1522, 1532, 71, 1533, 71, 1535, 71, 1528, 71, 71, + 1529, 1534, 1538, 71, 71, 1536, 1540, 71, 1539, 1542, + + 1541, 71, 71, 71, 1544, 71, 1546, 1543, 71, 1537, + 71, 1547, 71, 71, 1548, 1549, 71, 71, 71, 1556, + 71, 71, 1560, 2536, 71, 71, 1545, 1558, 1550, 1551, + 1552, 71, 1559, 71, 71, 1553, 1561, 1554, 1555, 1563, + 1557, 1564, 1562, 71, 71, 71, 71, 71, 1568, 71, + 71, 1570, 1565, 71, 71, 71, 1573, 1574, 71, 71, + 71, 1577, 71, 71, 1566, 71, 1567, 71, 1575, 71, + 71, 71, 1569, 1571, 1579, 71, 1572, 71, 1578, 1580, + 1585, 1576, 71, 1582, 1586, 71, 71, 1584, 1589, 71, + 71, 1581, 1588, 1590, 71, 1583, 71, 1587, 71, 71, + + 1591, 71, 71, 1592, 71, 1593, 1594, 1597, 1595, 71, + 71, 71, 1600, 1601, 1596, 71, 71, 71, 71, 71, + 71, 1604, 71, 71, 71, 71, 71, 1598, 1609, 1610, + 1613, 1603, 71, 1607, 1611, 1602, 1599, 1605, 71, 1606, + 2536, 1608, 1612, 71, 1616, 71, 71, 71, 71, 1614, + 1621, 1622, 71, 1617, 1615, 71, 71, 1629, 71, 1623, + 1618, 1626, 71, 71, 71, 1627, 1630, 1619, 1620, 1624, + 1628, 71, 71, 71, 1625, 1633, 71, 71, 71, 71, + 1638, 71, 1635, 71, 71, 1632, 71, 1640, 1634, 1636, + 1631, 71, 71, 71, 1643, 71, 1641, 1642, 71, 1644, + + 1645, 71, 1646, 71, 1637, 1639, 1648, 71, 71, 71, + 71, 71, 71, 1649, 1650, 1647, 1651, 1652, 71, 71, + 71, 71, 1654, 1653, 71, 71, 1659, 71, 71, 71, + 1658, 1664, 1655, 1656, 1661, 71, 1657, 1660, 1663, 71, + 1662, 71, 71, 71, 71, 71, 71, 1670, 1668, 71, + 1665, 1669, 71, 71, 71, 1672, 71, 71, 71, 1671, + 1666, 1675, 1667, 1679, 71, 1676, 1673, 1674, 71, 1677, + 71, 1678, 71, 1684, 71, 71, 71, 1686, 71, 71, + 1687, 1688, 71, 71, 1680, 71, 1681, 1682, 1683, 71, + 71, 1689, 1685, 71, 1692, 71, 1690, 71, 71, 1693, + + 71, 71, 71, 71, 71, 1691, 71, 71, 71, 1695, + 1696, 71, 1697, 1700, 1704, 71, 1694, 1699, 1703, 71, + 71, 71, 1705, 1702, 1707, 1708, 1701, 1698, 1706, 71, + 71, 1709, 1711, 71, 1710, 71, 71, 1712, 1713, 71, + 71, 1716, 1714, 1718, 71, 1715, 71, 71, 71, 71, + 1721, 71, 1720, 71, 1717, 71, 1722, 1726, 1723, 71, + 71, 71, 71, 71, 1727, 71, 71, 1724, 71, 1729, + 1732, 71, 1719, 1728, 1736, 1725, 71, 1733, 2536, 1731, + 71, 1730, 71, 1734, 71, 71, 1735, 1737, 71, 71, + 1738, 1747, 1739, 1741, 71, 71, 1743, 1742, 71, 1744, + + 1740, 71, 71, 1749, 71, 71, 71, 71, 71, 71, + 1745, 71, 71, 1746, 1750, 71, 1753, 1754, 1751, 1752, + 71, 1755, 71, 1748, 71, 71, 71, 71, 71, 1756, + 1761, 1762, 71, 1757, 1760, 71, 71, 71, 1758, 71, + 1759, 1763, 1765, 1767, 1770, 71, 1769, 71, 1771, 71, + 1766, 1772, 71, 1774, 1764, 71, 71, 1768, 1777, 71, + 1775, 71, 1779, 1778, 71, 71, 1773, 1782, 71, 1776, + 71, 1783, 71, 1780, 71, 1787, 71, 71, 1788, 71, + 1791, 1781, 71, 1786, 1789, 1784, 71, 1792, 1793, 71, + 71, 71, 1795, 71, 71, 1794, 1785, 1790, 71, 71, + + 71, 71, 71, 1796, 1798, 71, 1800, 1803, 71, 71, + 71, 1797, 1806, 71, 1807, 71, 71, 1801, 1799, 71, + 1802, 1809, 71, 71, 71, 1805, 1804, 71, 1812, 71, + 1808, 1813, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 1811, 1879, 1814, 71, 1810, 1815, 1824, 1820, 1823, + 71, 1825, 1816, 1818, 1822, 71, 1819, 1817, 1821, 71, + 71, 1828, 1829, 71, 1830, 71, 71, 71, 71, 1826, + 71, 1833, 1827, 71, 1836, 71, 71, 71, 71, 71, + 1832, 1831, 1834, 1837, 1838, 1835, 1842, 71, 1839, 1841, + 1843, 71, 71, 1845, 71, 71, 1840, 1847, 71, 1848, + + 71, 71, 71, 71, 1852, 71, 71, 71, 1851, 1854, + 71, 1844, 71, 1846, 71, 1849, 71, 71, 1858, 1857, + 1856, 1850, 1860, 71, 71, 1853, 1861, 71, 1864, 71, + 1855, 71, 71, 1859, 71, 71, 71, 1869, 71, 1862, + 1868, 71, 71, 1873, 71, 71, 1863, 71, 2536, 1867, + 71, 1865, 71, 71, 1870, 1866, 1871, 1872, 71, 1875, + 71, 1877, 1878, 71, 71, 1874, 71, 71, 1881, 1882, + 1880, 71, 71, 1876, 71, 1883, 1886, 1887, 71, 1884, + 71, 71, 71, 1888, 71, 1890, 1898, 71, 1885, 1889, + 71, 71, 71, 1893, 71, 1892, 1894, 71, 71, 1895, + + 1896, 1899, 71, 71, 1902, 71, 1891, 1903, 1897, 1908, + 71, 1901, 71, 71, 71, 1904, 71, 71, 1900, 71, + 71, 1910, 71, 1905, 71, 1906, 71, 1907, 2536, 1911, + 71, 1909, 1914, 1915, 71, 1912, 71, 1913, 1918, 1916, + 1919, 71, 1920, 71, 1917, 71, 71, 1923, 1921, 1924, + 1926, 1922, 71, 71, 71, 71, 1925, 71, 71, 1927, + 71, 71, 1931, 71, 1928, 71, 71, 1932, 1929, 1933, + 1934, 71, 71, 71, 71, 71, 71, 1935, 1937, 1930, + 71, 71, 71, 1944, 1941, 1936, 71, 1943, 71, 71, + 1940, 71, 1945, 1938, 71, 1939, 1949, 71, 71, 1948, + + 1951, 1942, 71, 71, 71, 1950, 1946, 1947, 71, 1953, + 71, 71, 1956, 1954, 71, 1958, 71, 1952, 1957, 1960, + 71, 71, 71, 1962, 71, 71, 71, 71, 1959, 71, + 1955, 1961, 1964, 1968, 1965, 1966, 71, 1967, 71, 71, + 71, 1969, 1970, 1963, 71, 71, 71, 71, 1975, 71, + 1972, 71, 1977, 71, 71, 1980, 71, 71, 71, 1974, + 1976, 71, 71, 1983, 71, 1973, 1971, 1984, 71, 1979, + 71, 1978, 71, 71, 1986, 1985, 1981, 71, 1987, 1982, + 1990, 71, 1989, 1991, 71, 1992, 71, 1988, 1993, 71, + 71, 71, 71, 1996, 71, 1997, 71, 1999, 71, 2000, + + 71, 71, 1994, 2001, 71, 71, 71, 71, 1998, 1995, + 71, 71, 2003, 2002, 71, 2006, 2008, 71, 2004, 71, + 71, 71, 71, 2009, 71, 71, 2015, 2005, 71, 71, + 71, 2007, 71, 71, 2012, 71, 2020, 2016, 2014, 71, + 2011, 2024, 71, 71, 2022, 2010, 2013, 2017, 2023, 2021, + 2025, 71, 2018, 71, 2026, 2019, 71, 2027, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 2038, 71, + 2029, 2039, 71, 71, 2035, 71, 2028, 2041, 71, 2030, + 2032, 2031, 2040, 71, 2034, 2033, 2036, 2037, 71, 71, + 71, 71, 71, 2042, 71, 2044, 2050, 71, 2051, 71, + + 2052, 2043, 71, 71, 2045, 71, 71, 71, 2046, 2047, + 2048, 2049, 2056, 71, 71, 71, 71, 2060, 2054, 71, + 2053, 2059, 2061, 71, 2055, 71, 71, 2062, 2063, 71, + 71, 71, 71, 2057, 2058, 2065, 71, 71, 2064, 71, + 2069, 2070, 71, 2073, 71, 71, 2071, 71, 71, 2074, + 2066, 2067, 2076, 2077, 71, 71, 2068, 2072, 71, 71, + 2081, 71, 2075, 2082, 71, 71, 2084, 71, 2078, 71, + 2086, 71, 71, 2087, 2085, 71, 71, 71, 2079, 2080, + 71, 71, 71, 71, 2083, 2092, 71, 71, 2094, 2089, + 2090, 2091, 71, 71, 2095, 2093, 71, 2088, 71, 71, + + 2097, 2099, 71, 2100, 2102, 71, 2096, 2105, 2098, 2103, + 71, 71, 71, 2106, 2101, 71, 2108, 2107, 2104, 71, + 71, 71, 2111, 71, 2112, 71, 2110, 71, 71, 71, + 71, 2114, 2115, 2119, 2117, 2109, 71, 2116, 71, 71, + 2113, 2118, 71, 71, 71, 2123, 2120, 71, 2121, 71, + 71, 71, 71, 2122, 2125, 2124, 71, 2128, 71, 2127, + 71, 71, 2126, 2129, 71, 71, 71, 2134, 71, 2130, + 2132, 71, 71, 2131, 2133, 71, 71, 2135, 2139, 71, + 71, 2141, 71, 2136, 2143, 71, 71, 71, 71, 71, + 2148, 2137, 2147, 2154, 2138, 2140, 71, 2142, 71, 2144, + + 71, 2145, 2149, 71, 71, 2151, 2150, 2146, 71, 71, + 71, 71, 2157, 2152, 2158, 71, 2159, 71, 2160, 71, + 71, 2153, 71, 2155, 2536, 2156, 71, 2163, 2164, 71, + 2165, 71, 71, 2167, 71, 2166, 71, 2168, 2169, 71, + 2161, 71, 2162, 2171, 71, 71, 71, 2174, 2175, 71, + 71, 71, 2177, 71, 2176, 71, 2170, 2178, 71, 2181, + 2173, 2180, 71, 2172, 71, 71, 2184, 71, 2183, 71, + 71, 71, 71, 71, 2179, 2185, 2187, 2186, 71, 71, + 71, 2189, 71, 71, 2192, 2196, 71, 2182, 71, 2190, + 2191, 71, 71, 71, 2200, 71, 2188, 2195, 2193, 2198, + + 71, 2201, 2194, 71, 2202, 71, 2203, 2197, 71, 71, + 71, 2199, 71, 71, 2205, 2206, 71, 71, 2211, 71, + 71, 2208, 71, 2212, 2204, 2214, 71, 2216, 71, 2215, + 71, 71, 71, 2209, 2213, 2217, 2207, 2210, 2220, 71, + 2218, 71, 71, 71, 71, 2221, 71, 2224, 2228, 71, + 2219, 2222, 2225, 71, 71, 2227, 71, 2226, 2223, 71, + 71, 71, 71, 2229, 71, 2235, 71, 2234, 2230, 71, + 2240, 71, 2232, 71, 2237, 2236, 71, 2238, 71, 71, + 2239, 71, 2233, 2245, 2231, 71, 2244, 2241, 71, 71, + 2246, 71, 71, 2242, 2248, 71, 2247, 71, 2243, 71, + + 71, 2253, 2251, 2255, 71, 71, 2249, 71, 71, 2258, + 71, 71, 71, 2250, 71, 71, 2261, 2252, 71, 71, + 2262, 71, 71, 2257, 2256, 2254, 71, 2259, 2260, 2265, + 71, 2266, 2268, 71, 2263, 2270, 71, 71, 2264, 2271, + 71, 2273, 71, 71, 71, 71, 2276, 71, 2267, 2269, + 2275, 71, 71, 71, 2280, 71, 71, 71, 2272, 2274, + 2283, 71, 2284, 71, 2277, 71, 2285, 71, 71, 2281, + 71, 2279, 2290, 71, 2278, 71, 71, 71, 2282, 2291, + 2288, 71, 2292, 2295, 71, 2286, 2287, 2293, 2298, 71, + 2289, 2296, 71, 71, 71, 71, 2297, 2294, 71, 71, + + 2300, 2303, 2299, 2301, 71, 2306, 71, 71, 2307, 71, + 71, 2309, 71, 2310, 71, 71, 71, 71, 2302, 71, + 2311, 2304, 2305, 71, 2313, 2314, 71, 2315, 71, 2308, + 2312, 2316, 71, 71, 2318, 71, 2319, 71, 2317, 71, + 2321, 2322, 71, 71, 71, 2320, 2326, 71, 71, 71, + 2329, 2323, 71, 2325, 2327, 71, 71, 2331, 71, 71, + 2330, 71, 2328, 2324, 2332, 71, 71, 71, 71, 71, + 2335, 71, 71, 2337, 71, 2333, 2338, 71, 2336, 71, + 71, 2334, 71, 71, 2349, 71, 71, 2347, 2339, 2396, + 2343, 2340, 2341, 2350, 71, 2342, 2344, 2345, 71, 2352, + + 71, 2346, 2351, 2348, 2353, 71, 2354, 2355, 71, 71, + 2357, 71, 2356, 71, 71, 2360, 71, 71, 71, 71, + 71, 71, 2362, 2375, 2361, 71, 2366, 71, 2359, 71, + 2365, 2358, 2367, 71, 2363, 2368, 71, 71, 2364, 71, + 71, 71, 2369, 71, 2370, 2373, 2371, 71, 71, 2372, + 2374, 71, 2379, 2380, 71, 2536, 2377, 2382, 71, 2383, + 71, 2384, 71, 71, 2378, 2376, 2385, 71, 2386, 71, + 2388, 71, 2387, 2381, 2389, 71, 71, 71, 71, 2392, + 71, 2394, 71, 71, 71, 71, 2398, 71, 2401, 2391, + 71, 2390, 71, 2400, 71, 2393, 71, 71, 71, 71, + + 71, 2395, 2403, 71, 71, 2399, 2402, 2407, 71, 71, + 2397, 71, 2409, 71, 71, 2404, 2405, 71, 2417, 2406, + 2410, 71, 2408, 2411, 2413, 71, 2414, 2415, 71, 2416, + 71, 71, 71, 71, 2412, 71, 71, 71, 71, 2426, + 71, 2418, 2428, 71, 71, 2429, 2427, 2421, 71, 2419, + 2420, 2423, 2425, 2430, 71, 2424, 2431, 71, 2422, 71, + 71, 71, 71, 2434, 71, 71, 2435, 2432, 2439, 2436, + 71, 2441, 71, 71, 71, 71, 71, 2445, 71, 2433, + 2438, 71, 2446, 71, 2440, 71, 71, 2437, 71, 2449, + 2443, 2447, 2442, 2450, 2444, 71, 71, 71, 71, 71, + + 2451, 2452, 71, 71, 2448, 71, 2456, 71, 71, 71, + 2458, 71, 2455, 71, 71, 2453, 71, 2454, 2463, 2464, + 71, 2460, 2461, 2457, 2467, 71, 2459, 71, 71, 2469, + 2462, 71, 2468, 2471, 2465, 71, 71, 2470, 71, 2466, + 71, 2475, 71, 2472, 71, 2473, 2478, 71, 71, 2476, + 2474, 2477, 71, 71, 71, 71, 2483, 71, 71, 71, + 2480, 71, 71, 71, 2486, 2487, 71, 2479, 71, 71, + 71, 2485, 71, 2481, 2482, 2490, 2484, 2488, 2491, 71, + 2489, 71, 2494, 71, 2495, 2493, 71, 2497, 2492, 71, + 2498, 71, 2500, 71, 2501, 71, 2496, 71, 71, 71, + + 2502, 2505, 71, 71, 2503, 2499, 2509, 71, 2506, 2507, + 2508, 71, 71, 71, 71, 71, 71, 2504, 71, 2510, + 2512, 2514, 71, 2516, 71, 71, 71, 71, 2520, 2517, + 2521, 71, 2511, 2513, 71, 2515, 71, 71, 2524, 2525, + 71, 71, 2527, 71, 2518, 2519, 2528, 71, 2526, 71, + 71, 71, 71, 2522, 71, 2523, 2529, 2530, 2536, 2531, + 2534, 71, 2535, 71, 2536, 2536, 2536, 2536, 2536, 2532, + 2533, 43, 43, 43, 43, 43, 43, 43, 48, 48, + 48, 48, 48, 48, 48, 53, 53, 53, 53, 53, + 53, 53, 59, 59, 59, 59, 59, 59, 59, 64, + + 64, 64, 64, 64, 64, 64, 74, 74, 2536, 74, + 74, 74, 74, 139, 139, 2536, 2536, 2536, 139, 139, + 141, 141, 2536, 2536, 141, 2536, 141, 143, 2536, 2536, + 2536, 2536, 2536, 143, 146, 146, 2536, 2536, 2536, 146, + 146, 148, 2536, 2536, 2536, 2536, 2536, 148, 150, 150, + 2536, 150, 150, 150, 150, 75, 75, 2536, 75, 75, + 75, 75, 13, 2536, 2536, 2536, 2536, 2536, 2536, 2536, + 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, + 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, + 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, + + 2536, 2536, 2536 } ; -static yyconst flex_int16_t yy_chk[4950] = +static yyconst flex_int16_t yy_chk[5004] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1814,13 +1843,13 @@ static yyconst flex_int16_t yy_chk[4950] = 5, 3, 6, 20, 4, 20, 20, 5, 20, 6, 7, 7, 7, 7, 20, 7, 8, 8, 8, 8, 29, 8, 7, 9, 9, 9, 22, 22, 8, 10, - 10, 10, 15, 25, 9, 29, 15, 25, 2513, 31, + 10, 10, 15, 25, 9, 29, 15, 25, 2542, 31, 10, 11, 11, 11, 11, 11, 11, 19, 79, 19, 19, 30, 19, 11, 31, 79, 30, 25, 19, 19, 47, 47, 11, 12, 12, 12, 12, 12, 12, 21, 23, 23, 21, 21, 24, 12, 21, 88, 23, 24, - 26, 26, 23, 24, 12, 23, 24, 868, 24, 24, + 26, 26, 23, 24, 12, 23, 24, 876, 24, 24, 21, 27, 27, 34, 28, 26, 32, 32, 28, 88, 27, 28, 33, 33, 35, 32, 36, 33, 28, 35, 28, 32, 42, 35, 34, 32, 37, 37, 69, 35, @@ -1841,515 +1870,522 @@ static yyconst flex_int16_t yy_chk[4950] = 100, 112, 114, 105, 104, 107, 108, 109, 102, 104, 110, 113, 111, 115, 109, 113, 116, 118, 115, 112, - 114, 119, 115, 117, 117, 121, 120, 124, 122, 128, - 123, 122, 127, 124, 119, 125, 116, 118, 126, 126, - 119, 120, 122, 123, 121, 128, 122, 125, 129, 130, - 127, 132, 131, 132, 133, 134, 137, 135, 136, 126, - 134, 137, 157, 138, 140, 140, 133, 129, 131, 135, - 130, 145, 142, 157, 132, 142, 136, 138, 144, 152, - 144, 144, 152, 144, 147, 147, 149, 155, 149, 149, - 150, 149, 150, 150, 153, 150, 156, 154, 158, 153, - - 159, 160, 150, 154, 156, 155, 158, 161, 162, 163, - 165, 156, 161, 143, 164, 165, 160, 171, 163, 159, - 164, 164, 166, 166, 167, 170, 170, 168, 162, 168, - 167, 169, 168, 172, 173, 169, 171, 175, 172, 173, - 169, 174, 176, 175, 178, 169, 176, 179, 180, 168, - 177, 169, 169, 174, 181, 177, 182, 186, 178, 183, - 180, 182, 179, 180, 183, 185, 175, 184, 184, 188, - 185, 191, 181, 184, 187, 188, 190, 186, 189, 189, - 192, 194, 190, 193, 202, 184, 192, 184, 190, 195, - 187, 191, 193, 196, 197, 195, 200, 198, 196, 199, - - 197, 201, 194, 198, 202, 203, 199, 201, 205, 200, - 206, 203, 207, 208, 209, 210, 205, 207, 212, 211, - 214, 213, 216, 206, 211, 213, 215, 217, 208, 218, - 209, 220, 215, 217, 223, 210, 212, 219, 220, 219, - 216, 216, 214, 225, 221, 222, 224, 226, 226, 218, - 221, 222, 224, 223, 228, 225, 227, 227, 229, 231, - 228, 230, 232, 230, 229, 233, 234, 232, 235, 236, - 247, 141, 242, 237, 236, 238, 235, 233, 228, 237, - 230, 238, 231, 239, 240, 234, 241, 242, 239, 240, - 243, 244, 241, 245, 246, 247, 248, 252, 249, 248, - - 249, 139, 246, 255, 243, 250, 250, 245, 251, 244, - 256, 251, 253, 253, 259, 252, 254, 254, 257, 255, - 258, 257, 260, 259, 258, 256, 261, 262, 260, 263, - 264, 263, 266, 262, 264, 265, 265, 266, 267, 268, - 261, 270, 269, 271, 267, 272, 272, 273, 274, 275, - 273, 264, 276, 275, 277, 277, 271, 278, 279, 268, - 269, 279, 270, 281, 280, 282, 274, 283, 282, 281, - 276, 284, 285, 286, 287, 278, 280, 287, 286, 283, - 284, 285, 289, 288, 290, 293, 290, 290, 284, 284, - 295, 284, 291, 291, 289, 287, 288, 292, 294, 295, - - 292, 296, 293, 297, 297, 293, 298, 299, 299, 300, - 296, 298, 301, 294, 302, 303, 304, 301, 306, 305, - 312, 314, 307, 308, 300, 305, 302, 307, 309, 308, - 314, 304, 310, 309, 312, 303, 311, 310, 306, 311, - 315, 311, 313, 310, 316, 313, 315, 317, 318, 316, - 319, 318, 320, 358, 70, 358, 321, 328, 313, 327, - 317, 313, 322, 313, 318, 325, 328, 318, 317, 318, - 319, 321, 324, 320, 327, 324, 322, 329, 330, 325, - 331, 332, 329, 329, 330, 337, 334, 333, 335, 336, - 339, 324, 326, 413, 326, 326, 413, 340, 341, 337, - - 332, 331, 333, 346, 326, 334, 326, 326, 326, 336, - 338, 326, 342, 339, 335, 344, 338, 340, 341, 343, - 338, 347, 345, 346, 343, 348, 349, 342, 345, 350, - 344, 351, 349, 347, 355, 352, 354, 356, 357, 348, - 352, 353, 353, 363, 353, 359, 362, 351, 364, 359, - 355, 360, 357, 356, 350, 360, 354, 361, 361, 363, - 365, 362, 366, 367, 368, 372, 364, 370, 64, 368, - 360, 366, 367, 369, 365, 371, 370, 369, 376, 373, - 384, 371, 366, 374, 366, 373, 372, 374, 375, 377, - 377, 378, 379, 375, 380, 381, 381, 379, 376, 382, - - 386, 384, 383, 385, 378, 382, 383, 380, 385, 386, - 387, 388, 389, 390, 391, 391, 392, 390, 393, 394, - 394, 392, 387, 397, 389, 396, 396, 398, 399, 388, - 400, 401, 404, 403, 405, 398, 406, 399, 407, 393, - 408, 409, 406, 401, 397, 408, 410, 407, 405, 412, - 400, 403, 404, 403, 410, 409, 411, 414, 415, 416, - 417, 421, 411, 414, 416, 418, 419, 423, 420, 412, - 419, 424, 415, 420, 422, 426, 421, 427, 428, 422, - 429, 414, 417, 423, 431, 429, 418, 430, 432, 431, - 424, 425, 425, 436, 428, 426, 427, 425, 435, 425, - - 434, 435, 430, 433, 432, 437, 437, 425, 438, 433, - 425, 425, 440, 436, 433, 442, 434, 425, 439, 439, - 441, 443, 444, 445, 447, 446, 448, 440, 445, 449, - 442, 453, 441, 438, 446, 449, 451, 453, 452, 454, - 443, 448, 452, 447, 444, 451, 455, 456, 457, 458, - 459, 454, 460, 458, 460, 463, 461, 462, 462, 464, - 466, 463, 456, 459, 461, 455, 457, 465, 468, 471, - 469, 464, 466, 465, 467, 469, 470, 467, 472, 470, - 474, 473, 481, 468, 59, 471, 473, 473, 471, 475, - 475, 476, 476, 474, 472, 477, 478, 478, 479, 479, - - 480, 477, 482, 481, 483, 484, 480, 482, 485, 486, - 487, 485, 488, 484, 489, 490, 488, 491, 493, 490, - 489, 492, 494, 483, 498, 495, 492, 496, 494, 487, - 495, 497, 486, 500, 497, 491, 499, 499, 493, 497, - 501, 496, 498, 497, 502, 501, 503, 504, 505, 502, - 506, 500, 507, 508, 505, 507, 509, 508, 510, 506, - 503, 509, 504, 510, 511, 512, 513, 514, 514, 516, - 517, 513, 515, 520, 524, 523, 520, 518, 512, 508, - 511, 515, 517, 518, 519, 516, 521, 522, 524, 521, - 519, 525, 522, 523, 526, 527, 534, 525, 531, 526, - - 528, 527, 529, 528, 530, 532, 533, 529, 535, 530, - 530, 531, 533, 536, 537, 534, 536, 535, 532, 539, - 537, 538, 540, 542, 539, 541, 541, 540, 540, 546, - 543, 536, 543, 538, 544, 545, 547, 545, 548, 549, - 550, 551, 552, 554, 553, 551, 555, 546, 542, 557, - 556, 552, 559, 544, 547, 560, 548, 558, 549, 553, - 550, 554, 556, 558, 557, 555, 561, 562, 563, 564, - 567, 559, 565, 565, 560, 566, 568, 569, 570, 566, - 571, 619, 569, 572, 561, 562, 563, 568, 564, 567, - 573, 578, 619, 574, 570, 575, 572, 573, 574, 571, - - 576, 577, 575, 579, 580, 576, 577, 581, 582, 578, - 579, 583, 585, 580, 584, 585, 586, 582, 587, 584, - 586, 581, 588, 583, 589, 590, 590, 587, 591, 591, - 592, 592, 593, 595, 596, 597, 588, 591, 598, 599, - 596, 593, 598, 600, 601, 589, 602, 603, 604, 605, - 601, 599, 595, 608, 602, 597, 628, 611, 606, 628, - 615, 600, 614, 606, 621, 603, 615, 606, 608, 605, - 606, 614, 616, 604, 611, 620, 616, 606, 617, 617, - 606, 618, 618, 624, 621, 622, 625, 626, 624, 620, - 627, 622, 623, 623, 623, 630, 623, 629, 629, 623, - - 631, 631, 630, 632, 623, 626, 639, 625, 633, 633, - 623, 623, 634, 635, 636, 627, 635, 634, 632, 636, - 637, 638, 637, 640, 641, 639, 642, 640, 643, 644, - 644, 645, 647, 638, 646, 648, 643, 649, 650, 650, - 655, 54, 649, 655, 641, 642, 645, 648, 646, 652, - 647, 653, 654, 656, 652, 657, 658, 653, 654, 656, - 659, 660, 661, 657, 658, 662, 660, 663, 663, 661, - 664, 666, 665, 667, 669, 676, 670, 666, 659, 664, - 665, 673, 672, 669, 662, 670, 671, 672, 675, 671, - 674, 674, 667, 677, 676, 673, 678, 679, 683, 681, - - 679, 681, 677, 675, 682, 682, 684, 685, 679, 686, - 687, 684, 688, 689, 690, 694, 693, 691, 692, 683, - 678, 691, 696, 690, 694, 695, 697, 700, 685, 686, - 687, 701, 698, 689, 688, 693, 692, 695, 698, 702, - 697, 696, 699, 699, 703, 704, 705, 700, 706, 707, - 708, 701, 710, 709, 706, 711, 708, 709, 712, 702, - 705, 713, 715, 712, 53, 704, 703, 711, 715, 707, - 717, 710, 714, 714, 716, 711, 718, 716, 719, 720, - 721, 721, 713, 722, 719, 723, 724, 724, 717, 718, - 723, 725, 726, 727, 729, 728, 726, 731, 732, 720, - - 728, 722, 734, 735, 737, 737, 725, 738, 739, 48, - 740, 738, 732, 729, 741, 727, 742, 762, 741, 744, - 759, 731, 734, 739, 735, 736, 746, 743, 736, 762, - 736, 742, 743, 744, 736, 740, 736, 745, 748, 759, - 746, 736, 745, 745, 747, 749, 736, 750, 747, 751, - 749, 752, 750, 748, 753, 754, 755, 756, 756, 757, - 749, 754, 755, 751, 757, 758, 760, 764, 753, 763, - 765, 758, 752, 767, 763, 766, 766, 770, 767, 768, - 769, 764, 765, 771, 760, 761, 761, 768, 772, 772, - 777, 761, 775, 761, 769, 773, 770, 776, 775, 773, - - 776, 778, 771, 780, 761, 761, 779, 781, 780, 777, - 782, 761, 779, 783, 778, 784, 786, 785, 787, 782, - 789, 790, 783, 785, 788, 786, 781, 791, 794, 788, - 792, 784, 793, 797, 794, 790, 796, 787, 798, 792, - 789, 793, 799, 800, 801, 803, 802, 791, 800, 801, - 796, 802, 797, 806, 803, 805, 798, 799, 804, 804, - 808, 805, 809, 812, 813, 814, 806, 809, 809, 810, - 810, 811, 815, 810, 811, 816, 808, 812, 815, 817, - 814, 818, 817, 819, 813, 820, 822, 821, 819, 823, - 820, 822, 824, 826, 823, 816, 827, 830, 830, 826, - - 828, 829, 818, 821, 824, 831, 828, 829, 832, 834, - 833, 835, 827, 833, 831, 836, 837, 838, 839, 843, - 840, 845, 845, 838, 839, 840, 832, 834, 841, 837, - 835, 846, 844, 841, 847, 836, 848, 843, 844, 848, - 846, 850, 849, 851, 852, 853, 854, 856, 856, 855, - 852, 853, 847, 849, 855, 851, 857, 858, 859, 850, - 860, 854, 861, 862, 860, 863, 864, 866, 867, 867, - 859, 858, 862, 869, 870, 857, 871, 872, 872, 873, - 861, 871, 874, 877, 863, 877, 866, 869, 874, 870, - 875, 864, 876, 878, 879, 880, 875, 876, 878, 873, - - 881, 882, 883, 884, 885, 881, 886, 936, 879, 880, - 884, 887, 887, 888, 889, 891, 882, 890, 43, 885, - 936, 883, 897, 890, 892, 886, 899, 888, 895, 892, - 894, 894, 889, 895, 896, 891, 897, 900, 892, 898, - 892, 896, 898, 892, 899, 901, 900, 902, 903, 904, - 901, 906, 906, 903, 907, 908, 909, 912, 910, 907, - 911, 909, 910, 913, 914, 915, 902, 916, 904, 911, - 918, 917, 912, 919, 916, 908, 914, 920, 921, 923, - 915, 922, 913, 917, 921, 924, 927, 928, 925, 918, - 929, 930, 927, 14, 919, 920, 922, 925, 929, 923, - - 932, 928, 931, 933, 934, 924, 935, 931, 933, 933, - 940, 930, 932, 937, 937, 939, 941, 942, 942, 940, - 935, 943, 941, 934, 938, 944, 943, 952, 939, 938, - 945, 946, 938, 938, 944, 945, 946, 938, 947, 947, - 948, 949, 951, 938, 950, 952, 953, 938, 954, 950, - 949, 956, 953, 955, 954, 956, 951, 957, 955, 960, - 948, 958, 958, 959, 962, 959, 957, 963, 962, 964, - 960, 957, 965, 957, 966, 957, 967, 957, 969, 966, - 966, 965, 963, 968, 971, 970, 972, 964, 973, 975, - 967, 972, 968, 970, 974, 976, 977, 969, 971, 978, - - 978, 977, 973, 974, 979, 980, 980, 975, 981, 983, - 981, 984, 983, 985, 986, 986, 984, 987, 989, 979, - 976, 988, 988, 989, 990, 991, 992, 992, 993, 994, - 13, 995, 985, 995, 994, 997, 998, 987, 997, 999, - 1003, 998, 1002, 1002, 1000, 990, 991, 999, 993, 1000, - 1001, 1004, 1005, 1006, 1008, 1001, 1009, 1004, 1003, 1005, - 1008, 1011, 1009, 1010, 1012, 1013, 1006, 1011, 1010, 1014, - 1015, 1015, 1016, 1012, 1018, 1019, 1020, 1022, 1025, 1023, - 1014, 1024, 1020, 1022, 1013, 1027, 1026, 1028, 1028, 1029, - 1025, 1030, 1016, 1023, 1018, 1031, 1034, 1032, 1019, 1023, - - 1026, 1024, 1032, 1027, 1033, 1033, 1035, 1037, 1041, 1029, - 1042, 1035, 1038, 1031, 1039, 1043, 1030, 1038, 1038, 1034, - 1040, 1046, 1041, 1039, 1044, 1042, 1037, 1050, 1040, 1044, - 1043, 1047, 1044, 1043, 1045, 1046, 1045, 1047, 1048, 1049, - 1051, 1052, 1048, 1053, 1054, 1055, 1050, 1057, 1053, 1058, - 1049, 1059, 1059, 1060, 1061, 1062, 1063, 1060, 1064, 1052, - 1066, 1057, 1054, 1068, 1065, 1055, 1051, 1058, 1063, 1067, - 1072, 1069, 1061, 1070, 1062, 1066, 1069, 1064, 1065, 1075, - 1070, 1071, 1068, 1073, 1067, 1076, 1071, 1077, 1072, 1074, - 1074, 1076, 1073, 1078, 1075, 1079, 1080, 1087, 1078, 1081, - - 1081, 1079, 1080, 1082, 1082, 1084, 1084, 1085, 1077, 1086, - 1088, 1085, 1089, 1090, 1092, 1087, 1091, 1091, 1086, 1095, - 1090, 1093, 1096, 1094, 1088, 1097, 1099, 1089, 1094, 1093, - 1097, 1097, 1098, 1095, 1092, 1100, 1101, 1098, 1098, 1102, - 1104, 1096, 1103, 1105, 1106, 1107, 1099, 1112, 1103, 1108, - 1106, 1107, 1109, 1110, 1100, 1101, 1111, 1113, 1102, 1114, - 0, 1112, 1105, 1115, 1115, 1117, 1104, 1116, 1108, 1120, - 1116, 1109, 1110, 1120, 1114, 1111, 1119, 1117, 1113, 1118, - 1118, 1119, 1121, 1122, 1123, 1124, 1126, 1124, 1132, 1127, - 1134, 1124, 1122, 1128, 1128, 1121, 1129, 1123, 1130, 1131, - - 1133, 1129, 1130, 1131, 1124, 1127, 1126, 1135, 1132, 1138, - 1134, 1136, 1136, 1135, 1140, 1141, 1142, 1142, 1133, 1143, - 1141, 1145, 1145, 1147, 1147, 1143, 1148, 1138, 1149, 1151, - 1152, 1152, 1151, 1153, 1154, 1140, 1155, 1155, 1156, 1154, - 1157, 1159, 1148, 1160, 1149, 1158, 1158, 1161, 1160, 1162, - 1162, 1164, 1163, 1156, 1153, 1159, 1163, 1165, 1165, 1166, - 1168, 1167, 1161, 1169, 1168, 1157, 1172, 1172, 1170, 1173, - 1174, 1164, 1167, 1170, 1175, 1176, 1176, 1178, 1177, 1179, - 1180, 1166, 1169, 1177, 1174, 1181, 1182, 1173, 1175, 1180, - 1181, 1183, 1185, 1183, 1186, 1184, 1187, 1178, 1185, 1179, - - 1184, 1189, 1187, 1190, 1190, 1191, 1182, 1192, 1194, 1195, - 1195, 1196, 1196, 1192, 1186, 1189, 1197, 1198, 1199, 1200, - 1201, 1201, 1200, 1203, 1191, 1202, 1209, 0, 1204, 1207, - 1197, 1204, 1194, 1199, 1204, 1198, 1205, 1202, 1207, 1206, - 1208, 1216, 1205, 1203, 1206, 1208, 1204, 1210, 1211, 1217, - 1210, 1209, 1212, 1212, 1211, 1213, 1213, 1214, 1215, 1216, - 1218, 1219, 1214, 1220, 1223, 1221, 1222, 1219, 1217, 1220, - 1221, 1215, 1222, 1224, 1225, 1225, 1226, 1227, 1224, 1228, - 1218, 1226, 1229, 1230, 1231, 1234, 1235, 1223, 1232, 1236, - 1233, 1234, 1238, 1237, 1241, 1227, 1242, 1230, 1231, 1228, - - 1232, 1242, 1229, 1233, 1240, 1240, 1235, 1237, 1244, 1236, - 1243, 1243, 1245, 1238, 1241, 1246, 1247, 1249, 1248, 1252, - 1256, 1250, 1254, 1244, 1251, 1260, 1245, 1248, 1250, 1257, - 1257, 1264, 1249, 1251, 1247, 1252, 1251, 1254, 1262, 1246, - 1258, 1258, 1254, 1259, 1260, 1256, 1259, 1261, 1263, 1265, - 1264, 1266, 1261, 1267, 1262, 1268, 1268, 1263, 1265, 1267, - 1266, 1265, 1269, 1270, 1272, 1271, 1276, 1274, 1273, 1277, - 1278, 1278, 1279, 1304, 1284, 1281, 1270, 1280, 1272, 1274, - 1281, 1304, 1269, 1271, 1273, 1283, 1280, 1277, 1279, 1282, - 1282, 1276, 1284, 1285, 1283, 1287, 1288, 1283, 1285, 1285, - - 1290, 1287, 1289, 1289, 1282, 1291, 1290, 1292, 1295, 1293, - 1291, 1296, 1297, 1292, 1288, 1293, 1298, 1299, 1297, 1302, - 1299, 1303, 1305, 1306, 1307, 1296, 1299, 1309, 1295, 1298, - 1307, 1308, 1310, 1311, 1313, 1305, 1312, 1306, 1302, 1314, - 1303, 1317, 1312, 1322, 1308, 1309, 1311, 1316, 1316, 1318, - 1313, 1310, 1322, 1318, 1319, 1320, 1323, 1314, 1321, 1319, - 1320, 1317, 1325, 1321, 1326, 1326, 1327, 1328, 1329, 1332, - 1330, 1331, 1333, 1336, 1334, 1329, 1530, 1325, 1335, 1323, - 1334, 1328, 1330, 1331, 1530, 1327, 1339, 1337, 1332, 1339, - 1335, 1336, 1333, 1337, 1338, 1338, 1340, 1340, 1342, 1343, - - 1344, 1344, 1345, 1342, 1346, 1348, 1346, 1347, 1343, 1349, - 1347, 1350, 1351, 1352, 1345, 1353, 1354, 1355, 1352, 1358, - 1359, 1356, 1360, 1360, 1353, 1348, 1356, 1357, 1354, 1350, - 1351, 1349, 1355, 1362, 1361, 1359, 1357, 1363, 1364, 1358, - 1361, 1365, 1369, 1365, 1366, 1366, 1367, 1367, 1371, 1357, - 1368, 1368, 1370, 1370, 1362, 1372, 1363, 1374, 1364, 1373, - 1373, 1374, 1369, 1376, 1375, 1378, 1376, 1379, 1380, 1371, - 1375, 1378, 1381, 1387, 1380, 1382, 1372, 1385, 1382, 1383, - 1383, 1384, 1384, 1385, 1388, 1379, 1386, 1390, 1389, 1393, - 1392, 1395, 1399, 1387, 1389, 1392, 1392, 1381, 1386, 1386, - - 1386, 1396, 1395, 1393, 1388, 1386, 1394, 1390, 1394, 1397, - 1398, 1400, 1399, 1401, 1401, 1397, 1396, 1402, 1404, 1398, - 1403, 1403, 1405, 1406, 1406, 1407, 1407, 1410, 1411, 1412, - 1412, 1413, 1400, 1414, 1416, 1418, 1410, 1419, 1404, 1415, - 1414, 1417, 1417, 1402, 1405, 1421, 1413, 1423, 1415, 1411, - 1421, 1422, 1424, 1419, 1427, 1427, 1425, 1422, 1426, 1424, - 1416, 1418, 1425, 1428, 1426, 1429, 1430, 1423, 1428, 1431, - 1432, 1434, 1433, 1435, 1429, 1433, 1436, 1436, 1437, 1440, - 1438, 1441, 1432, 1443, 1438, 1446, 1430, 1444, 1431, 1434, - 1451, 1444, 1453, 1437, 1446, 1445, 1441, 1449, 1440, 1435, - - 1438, 1445, 1443, 1447, 1447, 1448, 1450, 1450, 1449, 1448, - 1452, 1451, 1453, 1449, 1454, 1455, 1456, 1456, 1457, 1458, - 1463, 1455, 1457, 1460, 1452, 1459, 1459, 1461, 1460, 1460, - 1458, 1462, 1464, 1461, 1454, 1458, 1465, 1462, 1467, 1468, - 1469, 1470, 1465, 1468, 1464, 1471, 1463, 1472, 1473, 1474, - 1467, 1471, 1469, 1476, 1473, 1481, 1477, 1490, 1476, 1477, - 1490, 1474, 1478, 1478, 1479, 1479, 1470, 1480, 1480, 1472, - 1482, 1483, 1486, 1484, 1485, 1481, 1482, 1483, 1484, 1488, - 1485, 1486, 1491, 1493, 1488, 1494, 1495, 1496, 1496, 1497, - 1501, 1495, 1500, 1500, 1491, 1493, 1498, 1494, 1497, 1499, - - 1502, 1498, 1503, 1504, 1499, 1508, 1507, 1505, 1506, 1502, - 1501, 1505, 1507, 1506, 1510, 1510, 1511, 1514, 1512, 1508, - 1503, 1513, 1504, 1515, 1518, 1518, 1510, 1512, 1520, 1514, - 1513, 1521, 1524, 1523, 1511, 1525, 1515, 1526, 1527, 1527, - 1528, 1525, 1528, 1533, 1520, 1532, 1524, 1521, 1523, 1529, - 1529, 1535, 1532, 1536, 1526, 1534, 1534, 1537, 1538, 1539, - 1535, 1540, 1541, 1533, 1544, 1547, 1542, 1545, 1548, 1537, - 1538, 1539, 1542, 1551, 1536, 1546, 1546, 1541, 1549, 1545, - 1554, 1549, 1554, 1547, 1544, 1542, 1550, 1540, 1548, 1553, - 1555, 1550, 1556, 1551, 1553, 1557, 1559, 1556, 1560, 1562, - - 1560, 1564, 1557, 1563, 1563, 1559, 1565, 1566, 1555, 1566, - 1567, 1565, 1568, 1562, 1569, 1567, 1570, 1568, 1571, 1576, - 1572, 1573, 1574, 1577, 1571, 1572, 1580, 1564, 1578, 1578, - 1574, 1581, 1569, 1584, 1573, 1584, 1570, 1577, 1576, 1579, - 1579, 1580, 1582, 1585, 1583, 1586, 1586, 1588, 1582, 1583, - 1590, 1581, 1587, 1587, 1592, 1585, 1588, 1593, 1589, 1588, - 1589, 1591, 1591, 1592, 1595, 1596, 1599, 1597, 1600, 1593, - 1596, 1590, 1597, 1601, 1602, 1605, 1595, 1603, 1606, 1599, - 1607, 1612, 1613, 1606, 1609, 1607, 1614, 1605, 1600, 1611, - 1609, 1601, 1602, 1603, 1619, 1611, 1615, 1613, 1616, 1616, - - 1617, 1618, 1618, 1609, 1612, 1615, 1620, 1621, 1622, 1617, - 1620, 1614, 1621, 1619, 1623, 1624, 1625, 1626, 1624, 1623, - 1623, 1622, 1629, 1629, 1625, 1630, 1630, 1631, 1632, 1632, - 1633, 1633, 1634, 1636, 1635, 1643, 1631, 1626, 1637, 1636, - 1630, 1638, 1638, 1637, 1634, 1639, 1646, 1640, 1649, 1648, - 1639, 1630, 1635, 1640, 1642, 1643, 1644, 1647, 1642, 1650, - 1644, 1651, 1647, 1649, 1650, 1652, 1653, 1653, 1655, 1654, - 1656, 1646, 1648, 1654, 1657, 1656, 1658, 1659, 1662, 1651, - 1663, 1652, 1659, 1655, 1660, 1660, 1664, 1665, 1666, 1667, - 1668, 1669, 1674, 1671, 1727, 1658, 1727, 1662, 1673, 1663, - - 1657, 1673, 1668, 1672, 1672, 1674, 1675, 1666, 1671, 1664, - 1667, 1665, 1669, 1676, 1677, 1677, 1678, 1678, 1679, 1679, - 1675, 1680, 1681, 1682, 1682, 1683, 1676, 1684, 1684, 1688, - 1689, 1690, 1693, 1685, 1683, 1681, 1680, 1683, 1685, 1687, - 1691, 1691, 1695, 1690, 1687, 1692, 1692, 1694, 1694, 1688, - 1689, 1693, 1696, 1696, 1697, 1697, 1698, 1699, 1701, 1703, - 1695, 1702, 1702, 1701, 1704, 1704, 1705, 1706, 1707, 1710, - 1698, 1707, 1711, 1706, 1708, 1708, 1699, 1712, 1703, 1709, - 1709, 1713, 1713, 1715, 1705, 1716, 1717, 1711, 1710, 1718, - 1708, 1719, 1719, 1718, 1720, 1722, 1712, 1721, 1721, 1723, - - 1724, 1717, 1726, 1715, 1725, 1725, 1723, 1729, 1716, 1730, - 1732, 1726, 1731, 1720, 1730, 1722, 1733, 1731, 1734, 1729, - 1735, 1738, 1736, 1737, 1740, 1735, 1724, 1736, 1737, 1733, - 1741, 1742, 1739, 1743, 1746, 1732, 1738, 1739, 1744, 1734, - 1742, 1745, 1743, 1741, 1750, 1747, 1752, 1744, 1746, 1740, - 1745, 1747, 1748, 1753, 1753, 1752, 1748, 1754, 1755, 1755, - 1756, 1758, 1758, 1754, 1750, 1760, 1759, 1755, 1763, 1767, - 1764, 1762, 1767, 1768, 1760, 1765, 1769, 1770, 1768, 0, - 1756, 1759, 1756, 1762, 1763, 1764, 1807, 1765, 1807, 1770, - 1771, 1771, 1773, 1773, 1774, 1775, 1769, 1774, 1776, 1777, - - 1775, 1778, 1778, 1779, 1776, 1777, 1780, 1780, 1781, 1782, - 1783, 1784, 1784, 1787, 1786, 1790, 1787, 1779, 1786, 1789, - 1781, 1788, 1788, 1782, 1789, 1793, 1791, 1794, 1795, 1783, - 1791, 1797, 1796, 1798, 1799, 1790, 1796, 1800, 1798, 1801, - 1799, 1804, 1795, 1800, 1803, 1793, 1804, 1794, 1805, 1810, - 1806, 1797, 1811, 1811, 1805, 1813, 1812, 1801, 1806, 1812, - 1803, 1814, 1814, 1810, 1816, 1817, 1818, 1820, 1816, 1819, - 1819, 1817, 1823, 1823, 1825, 1828, 1820, 1829, 1818, 1836, - 1828, 1813, 1829, 1830, 1830, 1832, 1832, 1834, 1835, 1835, - 1837, 1838, 1825, 1834, 1840, 1836, 1838, 1841, 1842, 1842, - - 1845, 1844, 1846, 1847, 1849, 1849, 1845, 1851, 1851, 1841, - 1844, 1853, 1837, 1840, 1852, 1852, 1853, 1854, 1847, 1854, - 1846, 1855, 1856, 1857, 1858, 1858, 1859, 1859, 1857, 1860, - 1860, 1861, 1861, 1862, 1863, 1855, 1856, 1864, 1864, 1865, - 1865, 1866, 1867, 1867, 1870, 1862, 1868, 1868, 1869, 1869, - 1871, 1872, 1863, 1866, 1873, 1874, 1870, 1871, 1875, 1877, - 1874, 1876, 1876, 1872, 1878, 1879, 1880, 1881, 1877, 1882, - 1883, 1883, 1884, 1887, 1873, 1886, 1888, 1889, 1875, 1880, - 1889, 1884, 1890, 1882, 1891, 1879, 0, 1892, 1899, 1891, - 1878, 1881, 1892, 1886, 1901, 1887, 1890, 1893, 1893, 1888, - - 1894, 1894, 1895, 1895, 1898, 1898, 1899, 1900, 1903, 1904, - 1905, 1906, 1907, 1901, 1908, 1909, 1910, 1910, 1900, 1912, - 1912, 1907, 1914, 1914, 1915, 1916, 1913, 1904, 1903, 1917, - 1918, 1906, 1905, 1909, 1908, 1913, 1917, 1919, 1920, 1922, - 1928, 1921, 1915, 1916, 1925, 1918, 1923, 1923, 1924, 1924, - 1925, 1926, 1927, 1930, 1931, 1919, 1920, 1921, 1922, 1928, - 1929, 1932, 1933, 1938, 1933, 1929, 1932, 1927, 1941, 1926, - 1934, 1934, 1940, 1930, 1931, 1935, 1942, 1935, 1936, 1936, - 1945, 1940, 1938, 1946, 1947, 1947, 1946, 1948, 1941, 1949, - 1950, 1950, 1951, 1953, 1954, 1942, 1951, 1956, 1954, 1961, - - 1945, 1970, 1948, 1955, 1955, 1958, 1958, 1949, 1953, 0, - 1956, 1960, 1960, 1962, 1962, 1963, 1964, 1964, 1961, 1971, - 1963, 1969, 1969, 1970, 1972, 1973, 1977, 1978, 1979, 1981, - 1980, 1977, 1971, 1979, 1973, 1982, 1984, 1972, 1980, 1985, - 1986, 1978, 1987, 1982, 1985, 1986, 1988, 1988, 1981, 1989, - 1989, 1984, 1990, 1991, 1992, 1995, 1993, 1987, 1991, 1990, - 1992, 1993, 1994, 1994, 1996, 1997, 1997, 1998, 1998, 1996, - 1995, 2001, 2002, 2003, 2006, 2002, 2004, 2005, 2003, 2003, - 2006, 2004, 2005, 2007, 2001, 2008, 2009, 2007, 2010, 2011, - 2008, 2012, 2013, 2019, 2017, 2009, 2012, 2011, 2015, 2017, - - 2018, 2015, 2020, 2010, 2013, 2018, 2027, 2021, 2022, 2023, - 2023, 2019, 2024, 2028, 2032, 2020, 2021, 2022, 2029, 2030, - 2030, 2024, 2031, 2032, 2033, 2027, 2034, 2034, 2035, 2037, - 2039, 2040, 2041, 2028, 0, 2040, 2046, 2029, 2041, 2033, - 2043, 2031, 2042, 2042, 2037, 2046, 2044, 2035, 2043, 2047, - 2039, 2044, 2049, 2050, 2051, 2058, 2049, 2053, 2053, 2056, - 2056, 2060, 2047, 2061, 2061, 2062, 2062, 2050, 2070, 2051, - 2063, 2063, 2068, 2064, 2071, 2058, 2064, 2065, 2065, 2066, - 2066, 2060, 2067, 2067, 2069, 2069, 2070, 2068, 2071, 2072, - 2073, 2073, 2074, 2077, 2078, 2072, 2074, 2079, 2077, 2077, - - 2080, 2081, 2086, 2079, 2082, 2087, 2080, 2086, 2082, 2083, - 2083, 2088, 2090, 2087, 2088, 2091, 2092, 2078, 2091, 2093, - 2094, 2095, 2096, 2098, 2093, 2100, 2081, 2097, 2097, 2101, - 2101, 2099, 2108, 2092, 2092, 2105, 2096, 2090, 2094, 2099, - 2107, 2095, 2098, 2110, 2100, 2102, 2102, 2103, 2103, 2104, - 2104, 2105, 2106, 2109, 2111, 2113, 2113, 2106, 2108, 2115, - 2107, 2114, 2109, 2110, 2114, 2117, 2117, 2120, 2118, 2119, - 2119, 2121, 2120, 2123, 2111, 2118, 2134, 2115, 2124, 2124, - 2121, 2125, 2127, 2126, 2128, 2125, 2129, 2130, 2134, 2128, - 2128, 2123, 2126, 2132, 2132, 2133, 2130, 2127, 2137, 2129, - - 2139, 2141, 2143, 0, 2133, 2144, 2144, 2143, 2145, 2147, - 2150, 2150, 2139, 2152, 2147, 2148, 2148, 2145, 2151, 2148, - 2153, 2154, 2141, 2137, 2156, 2160, 2154, 2151, 2161, 2157, - 2156, 2158, 2163, 2152, 2157, 2162, 2158, 2159, 2159, 2153, - 2162, 2164, 2165, 2160, 2166, 2166, 2168, 2164, 2169, 2161, - 2163, 2170, 2170, 2171, 2173, 2172, 2175, 2176, 2173, 2178, - 2174, 2179, 2177, 2169, 2178, 2168, 2171, 2165, 2172, 2174, - 2177, 2181, 2175, 2180, 2180, 2186, 2176, 2183, 2183, 2184, - 2184, 2188, 2188, 2189, 2190, 2192, 2192, 2179, 2193, 2190, - 2181, 2194, 2195, 2197, 2197, 2198, 2186, 2200, 2203, 2189, - - 2201, 2201, 2202, 2202, 2204, 2206, 2205, 2203, 2193, 2198, - 2207, 2195, 2208, 2208, 2194, 2209, 2212, 2206, 2209, 2200, - 2210, 2210, 2213, 2214, 2204, 2205, 2215, 2215, 2212, 2214, - 2207, 2216, 2217, 2218, 2216, 2220, 2221, 2222, 2217, 2223, - 2220, 2221, 2213, 2224, 2228, 2223, 2225, 2225, 2227, 2227, - 2233, 2218, 2230, 2230, 2231, 2231, 2222, 2232, 2235, 2235, - 2224, 2224, 2232, 2228, 2233, 2234, 2236, 2236, 2237, 2237, - 2234, 2238, 2240, 2240, 2243, 2245, 2238, 2246, 2246, 2248, - 2248, 2249, 2250, 2251, 2252, 2252, 2253, 2256, 2257, 2262, - 2258, 2253, 2251, 2243, 2257, 2249, 2263, 2245, 2258, 2259, - - 2259, 2256, 2250, 2260, 2268, 2264, 2265, 2266, 2260, 2262, - 2264, 2269, 2268, 2266, 2270, 2271, 2263, 2273, 2265, 2272, - 2275, 2274, 2276, 2279, 2282, 2282, 2309, 2276, 2283, 2283, - 2269, 2309, 2284, 2273, 2270, 2271, 2284, 2272, 2274, 2274, - 2295, 2275, 2296, 2279, 2288, 2288, 2290, 2290, 2291, 2291, - 2292, 2291, 2294, 2294, 2292, 2299, 2296, 2300, 2295, 2298, - 2298, 2300, 2299, 2301, 2303, 2304, 2305, 2305, 2306, 2306, - 2307, 2307, 2308, 2312, 2304, 2311, 2310, 2313, 2301, 2312, - 2311, 2311, 2303, 2314, 2315, 2310, 2316, 2308, 2310, 2317, - 2318, 2316, 2319, 2319, 2317, 2322, 2322, 0, 2314, 2325, - - 2325, 2329, 2313, 2326, 2326, 2315, 2327, 2327, 2333, 2318, - 2329, 2330, 2330, 2332, 2332, 2334, 2335, 2335, 2336, 2337, - 2337, 2340, 2341, 2333, 2342, 2341, 2344, 2334, 2343, 2343, - 2347, 2346, 2348, 2336, 2346, 2349, 2347, 2350, 2352, 2340, - 2349, 2351, 2358, 2361, 2344, 2358, 2348, 2362, 2363, 2364, - 2342, 2362, 2366, 2367, 2352, 2368, 2350, 2370, 2372, 2351, - 2368, 2371, 2371, 2364, 2367, 2369, 2361, 2369, 2363, 2373, - 2375, 2372, 2370, 2374, 2376, 2366, 2378, 2377, 2381, 2379, - 2380, 2380, 2382, 2382, 2383, 2383, 2375, 2381, 2373, 2384, - 2384, 2374, 2377, 2379, 2385, 2385, 2378, 2386, 2387, 2376, - - 2388, 2389, 2390, 2388, 2391, 2392, 2389, 2390, 2393, 2394, - 2395, 2395, 2396, 2398, 2393, 2400, 2386, 2406, 2387, 2405, - 2392, 2403, 2403, 2394, 2404, 2404, 2407, 2405, 2398, 2391, - 2409, 2396, 2407, 2400, 2408, 2410, 2406, 2411, 2413, 2414, - 2408, 2415, 2417, 2425, 2409, 2415, 2418, 2419, 2410, 2422, - 2420, 2418, 2421, 2414, 2423, 2424, 2411, 2426, 2413, 2423, - 2424, 2425, 2417, 2420, 0, 2421, 2419, 2428, 2422, 2427, - 2427, 2429, 2428, 2430, 2430, 2431, 2426, 2429, 2432, 2433, - 2431, 2434, 2435, 2432, 2433, 2436, 2437, 2437, 2435, 2439, - 2436, 2440, 2441, 2439, 2442, 2443, 2444, 2445, 2446, 2441, - - 2434, 2459, 2444, 2447, 2447, 2449, 2449, 2451, 2450, 2452, - 2440, 2446, 2451, 2442, 2443, 2453, 2445, 2450, 2454, 2456, - 2450, 2455, 2455, 2457, 2456, 2460, 2460, 2459, 2452, 2461, - 2464, 2454, 2462, 2462, 2453, 2464, 2457, 2463, 2463, 2465, - 2466, 2467, 2467, 2469, 2468, 2469, 2465, 2471, 2461, 2468, - 2470, 2470, 2473, 2472, 2471, 2475, 2474, 2477, 2477, 2466, - 2472, 2474, 2478, 2480, 2481, 2482, 2483, 2487, 2480, 2481, - 2488, 2473, 2484, 2484, 2475, 2486, 2486, 2489, 2489, 2490, - 2490, 2478, 0, 2491, 2482, 2483, 2487, 2493, 2493, 2488, - 2491, 2494, 2494, 2495, 2497, 2501, 2500, 2502, 0, 2497, - - 2495, 2500, 2503, 2503, 2504, 2504, 0, 0, 0, 0, - 0, 0, 0, 0, 2501, 0, 2502, 2508, 2508, 2508, - 2508, 2508, 2508, 2508, 2509, 2509, 2509, 2509, 2509, 2509, - 2509, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2511, 2511, - 2511, 2511, 2511, 2511, 2511, 2512, 2512, 2512, 2512, 2512, - 2512, 2512, 2514, 2514, 0, 2514, 2514, 2514, 2514, 2515, - 2515, 0, 0, 0, 2515, 2515, 2516, 2516, 0, 0, - 2516, 0, 2516, 2517, 0, 0, 0, 0, 0, 2517, - 2518, 2518, 0, 0, 0, 2518, 2518, 2519, 0, 0, - 0, 0, 0, 2519, 2520, 2520, 0, 2520, 2520, 2520, - - 2520, 2521, 2521, 0, 2521, 2521, 2521, 2521, 2507, 2507, - 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, - 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, - 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, - 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507 + 114, 119, 115, 117, 117, 119, 120, 121, 145, 122, + 125, 123, 122, 124, 119, 127, 116, 118, 128, 124, + 119, 120, 125, 122, 123, 129, 121, 122, 126, 126, + 130, 131, 136, 127, 128, 132, 133, 132, 134, 138, + 135, 137, 142, 134, 129, 142, 137, 131, 133, 126, + 136, 130, 135, 138, 140, 140, 153, 144, 132, 144, + 144, 153, 144, 147, 147, 149, 155, 149, 149, 150, + 149, 150, 150, 152, 150, 159, 152, 154, 156, 157, + + 158, 150, 160, 154, 155, 162, 156, 161, 158, 163, + 157, 165, 161, 156, 159, 164, 165, 160, 163, 166, + 166, 164, 164, 167, 171, 162, 168, 143, 168, 167, + 169, 168, 170, 170, 169, 172, 173, 174, 176, 169, + 172, 173, 176, 171, 169, 178, 175, 179, 168, 174, + 169, 169, 175, 177, 180, 181, 182, 186, 177, 178, + 183, 182, 179, 185, 187, 183, 180, 191, 185, 180, + 184, 184, 188, 181, 194, 175, 184, 186, 188, 190, + 187, 189, 189, 192, 193, 190, 195, 191, 184, 192, + 184, 190, 195, 193, 196, 194, 197, 198, 199, 196, + + 200, 201, 197, 198, 202, 199, 203, 201, 205, 206, + 207, 208, 203, 200, 209, 207, 205, 210, 211, 213, + 208, 212, 206, 214, 202, 215, 212, 214, 216, 209, + 217, 219, 221, 210, 216, 218, 224, 213, 211, 221, + 220, 218, 220, 232, 222, 226, 223, 215, 217, 217, + 222, 219, 223, 225, 231, 224, 231, 226, 229, 225, + 227, 227, 228, 228, 229, 230, 232, 233, 234, 235, + 236, 230, 233, 231, 237, 238, 243, 239, 236, 237, + 234, 238, 229, 239, 240, 241, 242, 244, 235, 240, + 241, 243, 242, 245, 246, 247, 248, 249, 251, 251, + + 249, 244, 250, 247, 250, 253, 252, 257, 246, 252, + 256, 245, 254, 254, 255, 255, 258, 141, 260, 258, + 259, 248, 257, 253, 259, 261, 256, 260, 262, 263, + 264, 261, 264, 265, 268, 263, 267, 265, 266, 266, + 268, 267, 262, 269, 270, 271, 272, 273, 273, 274, + 275, 276, 274, 277, 265, 276, 278, 278, 279, 272, + 281, 280, 270, 269, 280, 139, 271, 282, 275, 284, + 285, 277, 281, 282, 283, 286, 279, 283, 287, 285, + 289, 284, 288, 287, 286, 288, 290, 285, 285, 291, + 285, 291, 291, 289, 292, 292, 293, 294, 290, 293, + + 295, 296, 297, 288, 298, 298, 301, 299, 300, 300, + 296, 297, 299, 302, 294, 295, 303, 294, 302, 304, + 305, 301, 306, 307, 308, 309, 310, 314, 303, 307, + 309, 311, 310, 316, 312, 70, 311, 306, 304, 312, + 305, 314, 316, 313, 308, 312, 313, 315, 313, 317, + 315, 318, 319, 324, 322, 317, 318, 323, 320, 326, + 321, 320, 326, 315, 64, 319, 315, 324, 315, 327, + 329, 333, 323, 319, 320, 322, 332, 320, 326, 320, + 321, 330, 332, 327, 328, 329, 328, 328, 331, 334, + 330, 335, 333, 331, 331, 336, 328, 337, 328, 328, + + 328, 338, 339, 328, 341, 340, 335, 344, 334, 342, + 343, 340, 345, 346, 336, 340, 339, 345, 347, 348, + 349, 338, 344, 337, 347, 351, 350, 341, 346, 342, + 343, 351, 349, 352, 353, 356, 354, 357, 358, 348, + 350, 354, 355, 355, 361, 355, 359, 360, 361, 360, + 353, 364, 362, 357, 358, 356, 362, 365, 352, 366, + 359, 363, 363, 368, 367, 369, 364, 463, 374, 463, + 370, 362, 368, 365, 369, 370, 371, 366, 367, 372, + 371, 373, 376, 368, 375, 368, 376, 373, 372, 374, + 375, 377, 378, 379, 379, 380, 377, 381, 382, 383, + + 383, 384, 381, 386, 388, 385, 389, 384, 380, 385, + 387, 382, 378, 388, 390, 387, 391, 392, 389, 393, + 393, 392, 394, 395, 386, 396, 396, 394, 391, 398, + 398, 399, 390, 400, 401, 402, 403, 406, 405, 407, + 408, 400, 409, 401, 395, 411, 408, 412, 403, 415, + 411, 409, 399, 407, 410, 402, 405, 406, 405, 413, + 410, 412, 414, 416, 417, 418, 416, 413, 414, 415, + 417, 419, 420, 422, 421, 423, 419, 422, 424, 418, + 423, 425, 426, 427, 431, 429, 425, 430, 417, 440, + 440, 432, 433, 424, 420, 421, 432, 59, 426, 435, + + 431, 437, 427, 428, 428, 429, 430, 433, 434, 428, + 436, 428, 439, 434, 441, 435, 436, 437, 443, 428, + 445, 436, 428, 428, 438, 442, 442, 438, 444, 428, + 446, 447, 439, 443, 449, 445, 448, 450, 452, 441, + 444, 448, 451, 449, 452, 454, 455, 457, 458, 446, + 455, 459, 456, 447, 454, 460, 450, 451, 456, 457, + 461, 462, 464, 467, 461, 466, 459, 458, 465, 465, + 464, 466, 468, 460, 462, 467, 469, 470, 468, 471, + 470, 472, 473, 474, 475, 473, 472, 476, 469, 484, + 477, 54, 476, 476, 471, 478, 478, 479, 479, 474, + + 475, 480, 474, 477, 481, 481, 483, 480, 482, 482, + 484, 485, 483, 486, 487, 488, 485, 489, 488, 490, + 491, 492, 487, 494, 491, 493, 495, 492, 496, 493, + 497, 495, 486, 499, 498, 501, 497, 503, 490, 498, + 489, 494, 500, 502, 502, 500, 504, 499, 496, 506, + 500, 504, 505, 501, 500, 503, 507, 505, 508, 509, + 514, 53, 510, 506, 508, 510, 511, 512, 509, 513, + 511, 507, 512, 515, 513, 516, 514, 517, 517, 518, + 516, 519, 520, 521, 522, 526, 515, 527, 518, 521, + 522, 48, 511, 523, 520, 524, 523, 519, 524, 525, + + 528, 527, 529, 526, 525, 530, 528, 529, 532, 531, + 533, 530, 531, 532, 534, 533, 533, 535, 536, 537, + 538, 542, 539, 540, 543, 537, 540, 534, 541, 543, + 535, 539, 546, 542, 541, 545, 545, 536, 536, 538, + 544, 540, 547, 548, 547, 544, 544, 549, 550, 549, + 551, 552, 553, 554, 555, 556, 559, 546, 555, 557, + 558, 561, 548, 563, 556, 560, 550, 564, 551, 552, + 565, 553, 566, 554, 557, 559, 561, 560, 558, 562, + 567, 568, 563, 569, 569, 562, 564, 570, 565, 571, + 566, 570, 572, 574, 573, 575, 578, 576, 567, 573, + + 568, 578, 580, 572, 577, 579, 582, 580, 571, 574, + 576, 577, 579, 581, 575, 583, 584, 585, 581, 586, + 587, 588, 583, 592, 582, 584, 588, 589, 586, 590, + 589, 585, 587, 590, 591, 593, 599, 592, 594, 594, + 595, 595, 597, 591, 596, 596, 600, 601, 603, 595, + 602, 597, 600, 604, 602, 599, 593, 605, 606, 607, + 603, 608, 609, 605, 612, 43, 606, 601, 615, 610, + 619, 604, 621, 621, 610, 618, 619, 607, 610, 612, + 624, 610, 609, 620, 618, 615, 608, 620, 610, 622, + 622, 610, 623, 625, 624, 626, 629, 628, 631, 633, + + 633, 626, 628, 623, 630, 632, 635, 635, 632, 636, + 637, 637, 634, 625, 627, 627, 627, 629, 627, 634, + 638, 627, 630, 631, 636, 638, 627, 639, 642, 640, + 639, 643, 627, 627, 640, 641, 645, 641, 644, 646, + 642, 647, 644, 648, 648, 649, 651, 650, 653, 647, + 643, 652, 656, 653, 654, 654, 645, 656, 646, 657, + 649, 650, 658, 652, 651, 657, 659, 660, 658, 659, + 661, 662, 663, 660, 665, 664, 666, 668, 661, 662, + 664, 665, 667, 667, 669, 670, 668, 671, 673, 674, + 663, 670, 669, 676, 675, 666, 678, 673, 674, 675, + + 677, 678, 676, 677, 679, 681, 671, 680, 680, 682, + 683, 684, 685, 689, 687, 685, 687, 691, 679, 683, + 681, 688, 688, 685, 690, 692, 693, 694, 682, 690, + 695, 696, 697, 698, 689, 684, 697, 699, 691, 700, + 696, 701, 702, 703, 706, 692, 693, 707, 700, 694, + 695, 698, 704, 701, 705, 705, 699, 703, 704, 708, + 709, 702, 711, 710, 706, 712, 713, 707, 714, 715, + 716, 712, 717, 715, 714, 718, 711, 719, 722, 708, + 718, 722, 709, 710, 717, 721, 713, 720, 720, 716, + 723, 721, 717, 724, 725, 726, 727, 727, 719, 728, + + 725, 731, 729, 730, 730, 732, 724, 729, 723, 732, + 733, 735, 737, 734, 738, 726, 731, 728, 734, 740, + 741, 743, 743, 744, 746, 745, 788, 744, 738, 747, + 735, 748, 733, 747, 750, 788, 737, 14, 749, 740, + 745, 741, 742, 749, 754, 742, 748, 742, 750, 746, + 751, 742, 752, 742, 757, 751, 751, 753, 742, 754, + 755, 753, 756, 742, 758, 755, 752, 756, 757, 759, + 760, 761, 762, 762, 763, 755, 760, 761, 764, 763, + 765, 768, 766, 759, 764, 758, 769, 772, 772, 770, + 773, 769, 771, 768, 775, 773, 776, 774, 777, 765, + + 766, 767, 767, 770, 771, 774, 13, 767, 775, 767, + 778, 778, 779, 781, 783, 776, 779, 777, 784, 781, + 767, 767, 782, 785, 787, 782, 790, 767, 789, 785, + 786, 784, 791, 783, 793, 786, 792, 789, 791, 794, + 795, 796, 790, 787, 794, 792, 797, 798, 799, 802, + 803, 812, 800, 793, 804, 796, 798, 799, 800, 805, + 795, 0, 806, 802, 812, 807, 797, 806, 808, 803, + 807, 809, 804, 808, 805, 810, 810, 811, 814, 815, + 809, 818, 819, 811, 815, 815, 816, 816, 817, 820, + 816, 817, 821, 822, 814, 818, 824, 823, 825, 826, + + 0, 825, 819, 823, 827, 821, 828, 820, 822, 827, + 829, 828, 830, 831, 835, 832, 824, 830, 831, 834, + 826, 840, 836, 837, 839, 834, 829, 832, 836, 837, + 835, 838, 838, 839, 841, 842, 843, 841, 844, 840, + 846, 845, 847, 851, 848, 849, 846, 854, 847, 848, + 849, 852, 855, 842, 845, 843, 854, 852, 844, 853, + 853, 851, 856, 857, 858, 856, 859, 860, 862, 861, + 855, 863, 865, 860, 857, 861, 863, 867, 859, 864, + 864, 866, 858, 862, 868, 869, 871, 870, 868, 867, + 872, 865, 874, 875, 875, 866, 870, 879, 877, 878, + + 880, 880, 879, 869, 881, 871, 885, 882, 885, 891, + 883, 874, 877, 882, 878, 872, 883, 884, 886, 887, + 888, 889, 884, 886, 881, 890, 889, 893, 891, 892, + 894, 895, 895, 887, 888, 897, 892, 896, 898, 899, + 890, 900, 893, 0, 898, 903, 900, 902, 902, 894, + 903, 896, 905, 897, 904, 900, 907, 900, 908, 899, + 900, 904, 906, 909, 910, 906, 905, 908, 909, 912, + 911, 914, 914, 915, 907, 911, 916, 917, 915, 920, + 918, 919, 917, 910, 918, 921, 922, 923, 912, 925, + 919, 926, 924, 927, 920, 928, 916, 929, 922, 924, + + 930, 925, 923, 929, 921, 931, 932, 933, 936, 938, + 926, 935, 937, 928, 927, 930, 933, 935, 939, 940, + 937, 942, 936, 939, 943, 931, 932, 941, 944, 938, + 947, 940, 941, 941, 945, 945, 948, 0, 943, 951, + 942, 944, 946, 947, 951, 948, 949, 946, 950, 950, + 946, 946, 949, 952, 953, 946, 955, 955, 954, 953, + 956, 946, 952, 954, 957, 946, 958, 959, 960, 961, + 962, 958, 963, 957, 964, 961, 962, 963, 964, 965, + 956, 959, 966, 966, 972, 967, 960, 967, 965, 968, + 970, 971, 973, 965, 970, 965, 975, 965, 974, 965, + + 968, 973, 972, 974, 974, 976, 971, 977, 978, 979, + 976, 980, 981, 983, 984, 982, 985, 978, 975, 980, + 982, 977, 986, 984, 987, 989, 981, 983, 979, 987, + 988, 988, 990, 990, 985, 991, 993, 991, 994, 993, + 989, 995, 997, 994, 996, 996, 999, 986, 998, 998, + 1000, 999, 1001, 1002, 1002, 1003, 1004, 1005, 0, 1005, + 995, 1004, 997, 1007, 1008, 1010, 1007, 1011, 1009, 1008, + 1010, 1000, 1011, 1001, 1013, 1003, 1009, 1012, 1012, 1014, + 1015, 1016, 1018, 1019, 1021, 1014, 1020, 1015, 1018, 1019, + 1021, 1020, 1013, 1022, 1016, 1023, 1024, 1025, 1025, 1026, + + 1028, 1029, 1022, 1030, 1032, 1034, 1035, 1024, 1033, 1030, + 1032, 1037, 1036, 1039, 1023, 1038, 1038, 1040, 1035, 1026, + 1028, 1041, 1033, 1044, 1029, 1034, 1036, 1042, 1033, 1037, + 1043, 1043, 1042, 1039, 1047, 1045, 1049, 1051, 1048, 1041, + 1045, 1050, 1040, 1048, 1048, 1049, 1044, 1052, 1053, 1050, + 1054, 1051, 1055, 1047, 1055, 1054, 1056, 1058, 1054, 1057, + 1059, 1058, 1052, 1053, 1060, 1057, 1053, 1061, 1062, 1063, + 1056, 1059, 1064, 1067, 1063, 1065, 1068, 1069, 1069, 1071, + 1070, 1072, 1075, 1060, 1070, 1074, 1062, 1067, 1076, 1073, + 1064, 1077, 1078, 1061, 1068, 1065, 1075, 1071, 1080, 1082, + + 1072, 1073, 1079, 1076, 1074, 1080, 1077, 1079, 1081, 1083, + 1085, 1078, 1087, 1081, 1084, 1084, 1086, 1082, 1083, 1088, + 1089, 1090, 1086, 1097, 1088, 1085, 1089, 1090, 1091, 1091, + 1092, 1092, 1095, 1087, 1094, 1094, 1095, 1096, 1098, 1099, + 1100, 1097, 1101, 1101, 1102, 1103, 1096, 1100, 1105, 1106, + 1104, 1107, 1098, 1103, 1099, 1104, 1107, 1107, 1109, 1114, + 1108, 1110, 1105, 1111, 1102, 1108, 1108, 1112, 1106, 1113, + 1115, 1116, 1118, 1117, 1119, 1113, 1120, 1116, 1109, 1117, + 1110, 1121, 1111, 1122, 1123, 1114, 1112, 1124, 1130, 1115, + 1131, 1118, 1130, 1119, 1127, 1120, 1138, 1122, 1125, 1125, + + 1121, 1126, 1124, 1131, 1126, 1123, 1127, 1128, 1128, 1129, + 1132, 1133, 1137, 1136, 1129, 1134, 1138, 1134, 1136, 1132, + 1139, 1134, 1140, 1140, 1133, 1141, 1144, 1137, 1142, 1143, + 1141, 1145, 1142, 1143, 1134, 1146, 1139, 1147, 1148, 1148, + 1150, 1152, 1153, 1147, 1154, 1154, 1144, 1153, 1155, 1145, + 1157, 1157, 1159, 1159, 1155, 1146, 1160, 1161, 1150, 1165, + 1163, 1166, 1152, 1163, 1164, 1164, 1166, 1167, 1167, 1168, + 1169, 1171, 1160, 1161, 1170, 1170, 1172, 1173, 1174, 1174, + 1165, 1172, 1175, 1176, 1168, 1171, 1175, 1177, 1177, 1178, + 1179, 1181, 1173, 1180, 1182, 1169, 1185, 1180, 1186, 1182, + + 1190, 1179, 1187, 1176, 1184, 1184, 1188, 1188, 1189, 1191, + 1181, 1178, 1186, 1189, 1185, 1192, 1187, 1193, 1194, 1195, + 1190, 1195, 1193, 1196, 1192, 1197, 1198, 1199, 1196, 1191, + 1201, 1197, 1203, 1199, 1202, 1202, 1204, 1206, 1194, 1207, + 1207, 1209, 1204, 1211, 1201, 1210, 1198, 1208, 1208, 1212, + 1214, 1203, 1212, 1213, 1213, 1209, 1215, 0, 1211, 1217, + 1219, 1206, 1214, 1210, 1216, 1217, 1218, 1216, 1220, 1219, + 1216, 1218, 1221, 1220, 1222, 1223, 1215, 1222, 1224, 1224, + 1226, 1223, 1216, 1225, 1225, 1226, 1227, 1228, 1229, 1230, + 1231, 1235, 1232, 1237, 1237, 1233, 1231, 1221, 1232, 1227, + + 1233, 1236, 1234, 1239, 1240, 1228, 1236, 1229, 1234, 1230, + 1238, 1241, 1242, 1243, 1235, 1238, 1244, 1245, 1247, 1246, + 1248, 1239, 1249, 1250, 1240, 1246, 1242, 1243, 1244, 1253, + 1245, 1241, 1252, 1252, 1254, 1256, 1249, 1257, 1247, 1254, + 1248, 1255, 1255, 1258, 1250, 1259, 1260, 1261, 1263, 1253, + 1256, 1257, 1262, 1264, 1268, 1260, 1266, 1263, 1271, 1262, + 1263, 1271, 1261, 1259, 1269, 1269, 1272, 1258, 1274, 1264, + 1273, 1266, 1270, 1270, 1275, 1273, 1266, 1276, 1277, 1268, + 1278, 1281, 1279, 1275, 1274, 1272, 1282, 1277, 1279, 1278, + 1277, 1280, 1280, 1283, 1284, 1286, 1276, 1285, 1288, 1282, + + 1289, 1281, 1290, 1290, 1291, 1292, 1327, 1286, 1284, 1296, + 1293, 1283, 1295, 1285, 1292, 1293, 1294, 1294, 1289, 1297, + 1291, 1295, 1327, 1288, 1295, 1298, 1301, 1296, 1299, 1302, + 1309, 1294, 1301, 1299, 1299, 1303, 1303, 1305, 1304, 1306, + 1297, 1310, 1305, 1298, 1304, 1306, 1307, 1302, 1311, 1312, + 1309, 1316, 1307, 1317, 1311, 1310, 1313, 1320, 1318, 1313, + 1319, 1321, 1312, 1322, 1323, 1313, 1318, 1321, 1324, 1331, + 1316, 1320, 1317, 1319, 1326, 1325, 1322, 1328, 1330, 1330, + 1326, 1332, 1323, 1337, 1341, 1332, 1333, 1324, 1325, 1331, + 1336, 1333, 1334, 1335, 1339, 1328, 1342, 1334, 1335, 1336, + + 1340, 1340, 1344, 1341, 1343, 1345, 1337, 1346, 1347, 1339, + 1342, 1343, 1348, 1349, 1344, 1350, 1351, 1345, 1348, 1352, + 1352, 1353, 1351, 1362, 1353, 1349, 1346, 1356, 1347, 1354, + 1354, 1357, 1356, 1350, 1358, 1358, 1359, 1360, 1361, 1360, + 1357, 1361, 1363, 1362, 1364, 1365, 1366, 1367, 1359, 1368, + 1369, 1366, 1370, 1372, 1373, 1376, 1367, 1370, 1371, 1374, + 1374, 1368, 1364, 1365, 1363, 1369, 1375, 1371, 1377, 1373, + 1378, 1383, 1375, 1372, 1385, 1379, 1376, 1379, 1380, 1380, + 1371, 1381, 1381, 1382, 1382, 1384, 1384, 1377, 1386, 1393, + 1378, 1383, 1387, 1387, 1388, 1385, 1389, 1390, 1388, 1392, + + 1390, 1395, 1389, 1396, 1394, 1392, 1396, 1393, 1407, 1386, + 1394, 1397, 1397, 1398, 1398, 1399, 1400, 1401, 1402, 1403, + 1404, 1399, 1407, 0, 1410, 1403, 1395, 1406, 1400, 1400, + 1400, 1409, 1406, 1406, 1408, 1400, 1408, 1401, 1402, 1410, + 1404, 1411, 1409, 1412, 1413, 1414, 1416, 1411, 1415, 1415, + 1417, 1417, 1412, 1418, 1419, 1420, 1420, 1421, 1421, 1424, + 1425, 1426, 1426, 1427, 1413, 1430, 1414, 1428, 1424, 1432, + 1429, 1433, 1416, 1418, 1428, 1435, 1419, 1437, 1427, 1429, + 1435, 1425, 1431, 1431, 1436, 1438, 1444, 1433, 1439, 1445, + 1436, 1430, 1438, 1440, 1439, 1432, 1443, 1437, 1442, 1440, + + 1441, 1441, 1446, 1442, 1447, 1443, 1444, 1447, 1445, 1448, + 1449, 1450, 1450, 1451, 1446, 1452, 1453, 1454, 1457, 1451, + 1456, 1454, 1459, 1461, 1460, 1462, 1464, 1448, 1460, 1461, + 1464, 1453, 1467, 1457, 1462, 1452, 1449, 1454, 1465, 1456, + 0, 1459, 1463, 1463, 1466, 1466, 1468, 1469, 1470, 1465, + 1471, 1472, 1472, 1467, 1465, 1473, 1471, 1477, 1474, 1473, + 1468, 1475, 1475, 1477, 1479, 1476, 1478, 1469, 1470, 1474, + 1476, 1476, 1478, 1480, 1474, 1481, 1483, 1485, 1484, 1486, + 1487, 1481, 1484, 1488, 1490, 1480, 1487, 1489, 1483, 1485, + 1479, 1493, 1492, 1489, 1493, 1497, 1490, 1492, 1494, 1494, + + 1495, 1495, 1496, 1496, 1486, 1488, 1498, 1499, 1502, 1500, + 1501, 1517, 1498, 1499, 1500, 1497, 1501, 1502, 1504, 1506, + 1507, 1509, 1506, 1504, 1510, 1511, 1512, 1512, 1513, 1514, + 1511, 1517, 1507, 1509, 1514, 1515, 1510, 1513, 1516, 1516, + 1515, 1518, 1519, 1520, 1521, 1524, 1522, 1523, 1521, 1527, + 1518, 1522, 1528, 1523, 1526, 1526, 1529, 1530, 1531, 1524, + 1519, 1528, 1520, 1534, 1534, 1529, 1526, 1527, 1536, 1530, + 1537, 1531, 1539, 1541, 1540, 1542, 1543, 1543, 1544, 1541, + 1544, 1545, 1545, 1546, 1536, 1549, 1537, 1539, 1540, 1548, + 1551, 1546, 1542, 1550, 1550, 1552, 1548, 1553, 1554, 1551, + + 1555, 1556, 1557, 1560, 1563, 1549, 1561, 1558, 1564, 1553, + 1554, 1567, 1555, 1558, 1562, 1562, 1552, 1557, 1561, 1571, + 1566, 1565, 1563, 1560, 1565, 1566, 1558, 1556, 1564, 1569, + 1570, 1567, 1570, 1572, 1569, 1573, 1575, 1571, 1572, 1576, + 1578, 1576, 1573, 1579, 1579, 1575, 1580, 1581, 1582, 1585, + 1582, 1583, 1581, 1584, 1578, 1586, 1583, 1587, 1584, 1588, + 1589, 1590, 1592, 1587, 1588, 1593, 1597, 1585, 1596, 1590, + 1594, 1594, 1580, 1589, 1598, 1586, 1595, 1595, 0, 1593, + 1598, 1592, 1599, 1596, 1601, 1603, 1597, 1599, 1600, 1607, + 1600, 1607, 1601, 1602, 1602, 1604, 1604, 1603, 1605, 1605, + + 1601, 1606, 1608, 1609, 1609, 1610, 1611, 1613, 1617, 1618, + 1606, 1614, 1615, 1606, 1610, 1619, 1614, 1615, 1611, 1613, + 1620, 1617, 1623, 1608, 1621, 1624, 1625, 1630, 1631, 1618, + 1624, 1625, 1632, 1619, 1623, 1627, 1629, 1633, 1620, 1635, + 1621, 1627, 1629, 1631, 1634, 1634, 1633, 1637, 1635, 1638, + 1630, 1636, 1636, 1638, 1627, 1639, 1640, 1632, 1641, 1642, + 1639, 1644, 1642, 1641, 1641, 1643, 1637, 1647, 1647, 1640, + 1648, 1648, 1652, 1643, 1649, 1650, 1650, 1651, 1651, 1653, + 1654, 1644, 1655, 1649, 1652, 1648, 1654, 1655, 1656, 1656, + 1657, 1661, 1658, 1664, 1666, 1657, 1648, 1653, 1658, 1660, + + 1662, 1665, 1668, 1660, 1662, 1667, 1665, 1668, 1669, 1670, + 1672, 1661, 1671, 1671, 1672, 1673, 1674, 1666, 1664, 1675, + 1667, 1674, 1676, 1677, 1680, 1670, 1669, 1681, 1677, 1682, + 1673, 1678, 1678, 1683, 1684, 1685, 1686, 1687, 1692, 1689, + 1748, 1676, 1748, 1680, 1691, 1675, 1681, 1691, 1686, 1690, + 1690, 1692, 1682, 1684, 1689, 1693, 1685, 1683, 1687, 1694, + 1695, 1695, 1696, 1696, 1697, 1697, 1698, 1699, 1706, 1693, + 1700, 1700, 1694, 1701, 1702, 1702, 1707, 1708, 1703, 1705, + 1699, 1698, 1701, 1703, 1705, 1701, 1709, 1709, 1706, 1708, + 1710, 1710, 1711, 1712, 1712, 1713, 1707, 1714, 1714, 1715, + + 1715, 1716, 1717, 1719, 1720, 1720, 1721, 1728, 1719, 1722, + 1722, 1711, 1723, 1713, 1724, 1716, 1725, 1726, 1726, 1725, + 1724, 1717, 1727, 1727, 1729, 1721, 1728, 1730, 1731, 1731, + 1723, 1733, 1734, 1726, 1735, 1738, 1736, 1737, 1737, 1729, + 1736, 1739, 1740, 1742, 1742, 1743, 1730, 1745, 0, 1735, + 1753, 1733, 1744, 1747, 1738, 1734, 1739, 1740, 1750, 1744, + 1746, 1746, 1747, 1751, 1752, 1743, 1754, 1755, 1751, 1752, + 1750, 1756, 1757, 1745, 1759, 1753, 1756, 1757, 1758, 1754, + 1760, 1761, 1762, 1758, 1763, 1760, 1768, 1764, 1755, 1759, + 1765, 1766, 1768, 1763, 1767, 1762, 1764, 1769, 1771, 1765, + + 1766, 1769, 1773, 1774, 1774, 1777, 1761, 1775, 1767, 1779, + 1779, 1773, 1781, 1775, 1776, 1776, 1780, 1783, 1771, 1784, + 1786, 1781, 1785, 1776, 1790, 1777, 1791, 1777, 0, 1783, + 1788, 1780, 1786, 1788, 1789, 1784, 1800, 1785, 1791, 1789, + 1792, 1792, 1794, 1794, 1790, 1795, 1796, 1797, 1795, 1798, + 1800, 1796, 1802, 1797, 1803, 1798, 1799, 1799, 1801, 1801, + 1804, 1805, 1805, 1807, 1802, 1811, 1808, 1807, 1803, 1808, + 1809, 1809, 1810, 1814, 1812, 1815, 1816, 1810, 1812, 1804, + 1817, 1818, 1819, 1820, 1817, 1811, 1821, 1819, 1822, 1820, + 1816, 1824, 1821, 1814, 1825, 1815, 1826, 1827, 1828, 1825, + + 1828, 1818, 1826, 1831, 1834, 1827, 1822, 1824, 1832, 1832, + 1833, 1835, 1835, 1833, 1837, 1838, 1839, 1831, 1837, 1840, + 1840, 1838, 1841, 1844, 1844, 1846, 1857, 1849, 1839, 1850, + 1834, 1841, 1849, 1855, 1850, 1851, 1851, 1853, 1853, 1855, + 1856, 1856, 1857, 1846, 1858, 1859, 1861, 1862, 1863, 1863, + 1859, 1865, 1866, 1867, 1868, 1870, 1870, 1871, 1866, 1862, + 1865, 1872, 1874, 1874, 1878, 1861, 1858, 1875, 1875, 1868, + 1876, 1867, 1877, 1879, 1877, 1876, 1871, 1880, 1878, 1872, + 1881, 1881, 1880, 1882, 1882, 1883, 1883, 1879, 1884, 1884, + 1885, 1886, 1887, 1887, 1888, 1888, 1889, 1890, 1890, 1891, + + 1891, 1893, 1885, 1892, 1892, 1894, 1895, 1896, 1889, 1886, + 1897, 1898, 1894, 1893, 1900, 1897, 1899, 1899, 1895, 1901, + 1902, 1903, 1904, 1900, 1905, 1906, 1906, 1896, 1907, 1909, + 1910, 1898, 1911, 1912, 1903, 1913, 1912, 1907, 1905, 1914, + 1902, 1916, 1916, 1915, 1914, 1901, 1904, 1909, 1915, 1913, + 1917, 1917, 1910, 1918, 1918, 1911, 1921, 1921, 1922, 1923, + 1924, 1926, 1927, 1928, 1929, 1930, 1931, 1933, 1933, 1932, + 1923, 1935, 1935, 1936, 1930, 1938, 1922, 1937, 1937, 1924, + 1927, 1926, 1936, 1939, 1929, 1928, 1931, 1932, 1940, 1941, + 1942, 1943, 1945, 1938, 1944, 1940, 1946, 1946, 1947, 1947, + + 1948, 1939, 1949, 1950, 1941, 1951, 1948, 1952, 1942, 1943, + 1944, 1945, 1952, 1953, 1954, 1956, 1955, 1956, 1950, 1961, + 1949, 1955, 1957, 1957, 1951, 1958, 1963, 1958, 1959, 1959, + 1964, 1971, 1965, 1953, 1954, 1963, 1968, 1969, 1961, 1972, + 1969, 1970, 1970, 1973, 1973, 1974, 1971, 1976, 1977, 1974, + 1964, 1965, 1977, 1978, 1978, 1979, 1968, 1972, 1981, 1982, + 1983, 1983, 1976, 1985, 1985, 1986, 1987, 1987, 1979, 1988, + 1989, 1989, 1994, 1994, 1988, 1995, 1996, 1997, 1981, 1982, + 2002, 2003, 1998, 2004, 1986, 2002, 2005, 2006, 2004, 1996, + 1997, 1998, 2007, 2009, 2005, 2003, 2010, 1995, 2011, 2012, + + 2007, 2010, 2016, 2011, 2013, 2013, 2006, 2016, 2009, 2014, + 2014, 2015, 2018, 2017, 2012, 2019, 2019, 2018, 2015, 2017, + 2020, 2021, 2022, 2022, 2023, 2023, 2021, 2026, 2027, 2029, + 2035, 2027, 2028, 2031, 2029, 2020, 2030, 2028, 2028, 2031, + 2026, 2030, 2032, 2033, 2034, 2035, 2032, 2036, 2033, 2037, + 2038, 2044, 2042, 2034, 2037, 2036, 2040, 2042, 2043, 2040, + 2045, 2046, 2038, 2043, 2052, 2047, 2048, 2048, 2049, 2044, + 2046, 2053, 2057, 2045, 2047, 2054, 2056, 2049, 2055, 2055, + 2060, 2057, 2058, 2052, 2059, 2059, 2062, 2064, 2065, 2074, + 2066, 2053, 2065, 2074, 2054, 2056, 2066, 2058, 2068, 2060, + + 2069, 2062, 2067, 2067, 2071, 2069, 2068, 2064, 2072, 2075, + 2076, 2078, 2078, 2071, 2079, 2079, 2080, 2080, 2083, 2083, + 2085, 2072, 2087, 2075, 0, 2076, 2088, 2088, 2089, 2089, + 2090, 2090, 2091, 2092, 2092, 2091, 2093, 2093, 2094, 2094, + 2085, 2095, 2087, 2096, 2096, 2097, 2098, 2099, 2100, 2100, + 2101, 2105, 2104, 2099, 2101, 2106, 2095, 2104, 2104, 2107, + 2098, 2106, 2108, 2097, 2109, 2107, 2110, 2110, 2109, 2114, + 2113, 2117, 2119, 2115, 2105, 2113, 2115, 2114, 2118, 2120, + 2121, 2118, 2122, 2123, 2120, 2124, 2124, 2108, 2125, 2119, + 2119, 2126, 2127, 2128, 2128, 2134, 2117, 2123, 2121, 2126, + + 2129, 2129, 2122, 2130, 2130, 2131, 2131, 2125, 2132, 2133, + 2135, 2127, 2136, 2137, 2133, 2134, 2142, 2138, 2140, 2140, + 2141, 2136, 2145, 2141, 2132, 2144, 2144, 2146, 2146, 2145, + 2147, 2148, 2150, 2137, 2142, 2147, 2135, 2138, 2151, 2151, + 2148, 2152, 2153, 2154, 2156, 2152, 2157, 2155, 2161, 2161, + 2150, 2153, 2155, 2155, 2162, 2157, 2163, 2156, 2154, 2166, + 2168, 2170, 2172, 2162, 2173, 2173, 2174, 2172, 2163, 2176, + 2179, 2179, 2168, 2181, 2176, 2174, 2177, 2177, 2180, 2182, + 2177, 2183, 2170, 2185, 2166, 2186, 2183, 2180, 2189, 2185, + 2186, 2187, 2190, 2181, 2188, 2188, 2187, 2191, 2182, 2192, + + 2194, 2193, 2191, 2195, 2195, 2197, 2189, 2193, 2198, 2199, + 2199, 2203, 2202, 2190, 2200, 2201, 2202, 2192, 2204, 2205, + 2203, 2206, 2208, 2198, 2197, 2194, 2207, 2200, 2201, 2206, + 2210, 2207, 2209, 2209, 2204, 2212, 2212, 2215, 2205, 2213, + 2213, 2217, 2217, 2218, 2222, 2219, 2221, 2221, 2208, 2210, + 2219, 2223, 2224, 2226, 2226, 2227, 2229, 2232, 2215, 2218, + 2230, 2230, 2231, 2231, 2222, 2233, 2232, 2234, 2235, 2227, + 2236, 2224, 2237, 2237, 2223, 2241, 2238, 2242, 2229, 2238, + 2235, 2239, 2239, 2243, 2247, 2233, 2234, 2241, 2246, 2243, + 2236, 2244, 2244, 2245, 2246, 2249, 2245, 2242, 2250, 2251, + + 2249, 2252, 2247, 2250, 2253, 2254, 2254, 2252, 2256, 2256, + 2257, 2259, 2259, 2260, 2260, 2261, 2262, 2272, 2251, 2263, + 2261, 2253, 2253, 2274, 2263, 2264, 2264, 2265, 2265, 2257, + 2262, 2266, 2266, 2267, 2269, 2269, 2272, 2278, 2267, 2275, + 2275, 2277, 2277, 2279, 2280, 2274, 2281, 2281, 2285, 2282, + 2286, 2278, 2287, 2280, 2282, 2291, 2286, 2288, 2288, 2289, + 2287, 2292, 2285, 2279, 2289, 2293, 2294, 2295, 2297, 2298, + 2293, 2299, 2300, 2295, 2302, 2291, 2297, 2301, 2294, 2303, + 2304, 2292, 2305, 2308, 2311, 2311, 2370, 2305, 2298, 2370, + 2302, 2299, 2300, 2312, 2312, 2301, 2303, 2303, 2313, 2317, + + 2317, 2304, 2313, 2308, 2319, 2319, 2320, 2320, 2321, 2320, + 2323, 2323, 2321, 2324, 2325, 2327, 2327, 2328, 2329, 2330, + 2332, 2333, 2329, 2341, 2328, 2334, 2334, 2337, 2325, 2341, + 2333, 2324, 2335, 2335, 2330, 2336, 2336, 2339, 2332, 2338, + 2342, 2343, 2337, 2344, 2338, 2340, 2339, 2345, 2346, 2339, + 2340, 2340, 2345, 2346, 2347, 0, 2343, 2348, 2348, 2351, + 2351, 2354, 2354, 2358, 2344, 2342, 2355, 2355, 2356, 2356, + 2359, 2359, 2358, 2347, 2361, 2361, 2362, 2363, 2364, 2364, + 2365, 2366, 2366, 2369, 2371, 2372, 2372, 2373, 2376, 2363, + 2375, 2362, 2377, 2375, 2376, 2365, 2379, 2378, 2380, 2390, + + 2392, 2369, 2378, 2381, 2387, 2373, 2377, 2387, 2391, 2393, + 2371, 2395, 2391, 2396, 2399, 2379, 2380, 2400, 2400, 2381, + 2392, 2397, 2390, 2393, 2396, 2398, 2397, 2398, 2401, 2399, + 2402, 2404, 2403, 2405, 2395, 2407, 2406, 2410, 2408, 2409, + 2409, 2401, 2411, 2411, 2412, 2412, 2410, 2404, 2415, 2402, + 2403, 2406, 2408, 2413, 2413, 2407, 2414, 2414, 2405, 2416, + 2417, 2418, 2420, 2417, 2419, 2421, 2418, 2415, 2422, 2419, + 2423, 2424, 2424, 2425, 2422, 2427, 2429, 2432, 2432, 2416, + 2421, 2433, 2433, 2434, 2423, 2435, 2438, 2420, 2439, 2436, + 2427, 2434, 2425, 2437, 2429, 2436, 2440, 2442, 2443, 2437, + + 2438, 2439, 2444, 2446, 2435, 2447, 2444, 2448, 2449, 2450, + 2447, 2451, 2443, 2452, 2453, 2440, 2454, 2442, 2452, 2453, + 2455, 2449, 2450, 2446, 2456, 2456, 2448, 2457, 2460, 2458, + 2451, 2463, 2457, 2460, 2454, 2458, 2459, 2459, 2461, 2455, + 2462, 2464, 2468, 2461, 2465, 2462, 2468, 2464, 2469, 2465, + 2463, 2466, 2466, 2470, 2471, 2472, 2473, 2474, 2475, 2481, + 2470, 2488, 2473, 2476, 2476, 2478, 2478, 2469, 2479, 2482, + 2480, 2475, 2483, 2471, 2472, 2480, 2474, 2479, 2481, 2485, + 2479, 2484, 2484, 2486, 2485, 2483, 2490, 2488, 2482, 2489, + 2489, 2491, 2491, 2492, 2492, 2493, 2486, 2494, 2495, 2500, + + 2493, 2496, 2496, 2497, 2494, 2490, 2500, 2498, 2497, 2498, + 2499, 2499, 2501, 2502, 2504, 2503, 2507, 2495, 2509, 2501, + 2503, 2506, 2506, 2509, 2510, 2511, 2512, 2513, 2513, 2510, + 2515, 2515, 2502, 2504, 2516, 2507, 2517, 2518, 2518, 2519, + 2519, 2520, 2522, 2522, 2511, 2512, 2523, 2523, 2520, 2524, + 2530, 2531, 2526, 2516, 2529, 2517, 2524, 2526, 0, 2529, + 2532, 2532, 2533, 2533, 0, 0, 0, 0, 0, 2530, + 2531, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2538, 2538, + 2538, 2538, 2538, 2538, 2538, 2539, 2539, 2539, 2539, 2539, + 2539, 2539, 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2541, + + 2541, 2541, 2541, 2541, 2541, 2541, 2543, 2543, 0, 2543, + 2543, 2543, 2543, 2544, 2544, 0, 0, 0, 2544, 2544, + 2545, 2545, 0, 0, 2545, 0, 2545, 2546, 0, 0, + 0, 0, 0, 2546, 2547, 2547, 0, 0, 0, 2547, + 2547, 2548, 0, 0, 0, 0, 0, 2548, 2549, 2549, + 0, 2549, 2549, 2549, 2549, 2550, 2550, 0, 2550, 2550, + 2550, 2550, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, + 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, + 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, + 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, + + 2536, 2536, 2536 } ; static yy_state_type yy_last_accepting_state; @@ -2559,7 +2595,7 @@ static void config_end_include(void) #define YY_NO_INPUT 1 #endif -#line 2561 "" +#line 2597 "" #define INITIAL 0 #define quotedstring 1 @@ -2603,7 +2639,7 @@ FILE *yyget_out (void ); void yyset_out (FILE * _out_str ); - int yyget_leng (void ); +yy_size_t yyget_leng (void ); char *yyget_text (void ); @@ -2660,7 +2696,7 @@ static int input (void ); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) +#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, @@ -2671,7 +2707,7 @@ static int input (void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - int n; \ + size_t n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -2684,7 +2720,7 @@ static int input (void ); else \ { \ errno=0; \ - while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ + while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ @@ -2782,7 +2818,7 @@ YY_DECL { #line 206 "./util/configlexer.lex" -#line 2784 "" +#line 2820 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2815,13 +2851,13 @@ YY_DECL 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 >= 2508 ) + if ( yy_current_state >= 2537 ) yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 4909 ); + while ( yy_base[yy_current_state] != 4963 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4020,43 +4056,58 @@ YY_RULE_SETUP case 233: YY_RULE_SETUP #line 451 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 234: -/* rule 234 can match eol */ YY_RULE_SETUP #line 452 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK -/* Quoted strings. Strip leading and ending quotes */ case 235: YY_RULE_SETUP +#line 453 "./util/configlexer.lex" +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } + YY_BREAK +case 236: +YY_RULE_SETUP +#line 454 "./util/configlexer.lex" +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } + YY_BREAK +case 237: +/* rule 237 can match eol */ +YY_RULE_SETUP #line 455 "./util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++; } + YY_BREAK +/* Quoted strings. Strip leading and ending quotes */ +case 238: +YY_RULE_SETUP +#line 458 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 456 "./util/configlexer.lex" +#line 459 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 236: +case 239: YY_RULE_SETUP -#line 461 "./util/configlexer.lex" +#line 464 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 237: -/* rule 237 can match eol */ +case 240: +/* rule 240 can match eol */ YY_RULE_SETUP -#line 462 "./util/configlexer.lex" +#line 465 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 238: +case 241: YY_RULE_SETUP -#line 464 "./util/configlexer.lex" +#line 467 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4069,34 +4120,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 239: +case 242: YY_RULE_SETUP -#line 476 "./util/configlexer.lex" +#line 479 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 477 "./util/configlexer.lex" +#line 480 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 240: +case 243: YY_RULE_SETUP -#line 482 "./util/configlexer.lex" +#line 485 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 241: -/* rule 241 can match eol */ +case 244: +/* rule 244 can match eol */ YY_RULE_SETUP -#line 483 "./util/configlexer.lex" +#line 486 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 242: +case 245: YY_RULE_SETUP -#line 485 "./util/configlexer.lex" +#line 488 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4109,38 +4160,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 243: +case 246: YY_RULE_SETUP -#line 497 "./util/configlexer.lex" +#line 500 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 499 "./util/configlexer.lex" +#line 502 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 244: +case 247: YY_RULE_SETUP -#line 503 "./util/configlexer.lex" +#line 506 "./util/configlexer.lex" { LEXOUT(("ISP ")); /* ignore */ } YY_BREAK -case 245: -/* rule 245 can match eol */ +case 248: +/* rule 248 can match eol */ YY_RULE_SETUP -#line 504 "./util/configlexer.lex" +#line 507 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK -case 246: +case 249: YY_RULE_SETUP -#line 505 "./util/configlexer.lex" +#line 508 "./util/configlexer.lex" { LEXOUT(("IQS ")); BEGIN(include_quoted); } YY_BREAK -case 247: +case 250: YY_RULE_SETUP -#line 506 "./util/configlexer.lex" +#line 509 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext); @@ -4148,27 +4199,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 511 "./util/configlexer.lex" +#line 514 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 248: +case 251: YY_RULE_SETUP -#line 515 "./util/configlexer.lex" +#line 518 "./util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 249: -/* rule 249 can match eol */ +case 252: +/* rule 252 can match eol */ YY_RULE_SETUP -#line 516 "./util/configlexer.lex" +#line 519 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 250: +case 253: YY_RULE_SETUP -#line 518 "./util/configlexer.lex" +#line 521 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -4178,7 +4229,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 524 "./util/configlexer.lex" +#line 527 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -4190,33 +4241,33 @@ case YY_STATE_EOF(val): } } YY_BREAK -case 251: +case 254: YY_RULE_SETUP -#line 535 "./util/configlexer.lex" +#line 538 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 252: +case 255: YY_RULE_SETUP -#line 539 "./util/configlexer.lex" +#line 542 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 253: +case 256: YY_RULE_SETUP -#line 543 "./util/configlexer.lex" +#line 546 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 254: +case 257: YY_RULE_SETUP -#line 547 "./util/configlexer.lex" +#line 550 "./util/configlexer.lex" ECHO; YY_BREAK -#line 4218 "" +#line 4269 "" case YY_END_OF_BUFFER: { @@ -4401,7 +4452,7 @@ static int yy_get_next_buffer (void) else { - int num_to_read = + yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) @@ -4415,7 +4466,7 @@ static int yy_get_next_buffer (void) if ( b->yy_is_our_buffer ) { - int new_size = b->yy_buf_size * 2; + yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -4424,11 +4475,11 @@ static int yy_get_next_buffer (void) b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ - yyrealloc((void *) b->yy_ch_buf,(yy_size_t) (b->yy_buf_size + 2) ); + 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 = NULL; + b->yy_ch_buf = 0; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( @@ -4473,7 +4524,7 @@ static int yy_get_next_buffer (void) if ((int) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int 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,(yy_size_t) new_size ); + 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()" ); } @@ -4507,10 +4558,10 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 2508 ) + if ( yy_current_state >= 2537 ) yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; } return yy_current_state; @@ -4535,11 +4586,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 2508 ) + if ( yy_current_state >= 2537 ) yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; - yy_is_jam = (yy_current_state == 2507); + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 2536); return yy_is_jam ? 0 : yy_current_state; } @@ -4572,7 +4623,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - int offset = (yy_c_buf_p) - (yytext_ptr); + yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -4596,7 +4647,7 @@ static int yy_get_next_buffer (void) case EOB_ACT_END_OF_FILE: { if ( yywrap( ) ) - return 0; + return EOF; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; @@ -4697,12 +4748,12 @@ static void yy_load_buffer_state (void) if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - b->yy_buf_size = size; + b->yy_buf_size = (yy_size_t)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((yy_size_t) (b->yy_buf_size + 2) ); + 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()" ); @@ -4844,7 +4895,7 @@ void yypop_buffer_state (void) */ static void yyensure_buffer_stack (void) { - int num_to_alloc; + yy_size_t num_to_alloc; if (!(yy_buffer_stack)) { @@ -4852,7 +4903,7 @@ static void yyensure_buffer_stack (void) * 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; /* After all that talk, this was set to 1 anyways... */ + num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); @@ -4899,16 +4950,16 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) 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 NULL; + 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 = (int) (size - 2); /* "- 2" to take care of EOB's */ + 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 = NULL; + b->yy_input_file = 0; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; @@ -4931,7 +4982,7 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) { - return yy_scan_bytes(yystr,(int) strlen(yystr) ); + return yy_scan_bytes(yystr,strlen(yystr) ); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will @@ -4941,7 +4992,7 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) +YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) { YY_BUFFER_STATE b; char *buf; @@ -4949,7 +5000,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ - n = (yy_size_t) _yybytes_len + 2; + n = _yybytes_len + 2; buf = (char *) yyalloc(n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); @@ -4975,7 +5026,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) #define YY_EXIT_FAILURE 2 #endif -static void yynoreturn yy_fatal_error (yyconst char* msg ) +static void yy_fatal_error (yyconst char* msg ) { (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); @@ -4988,7 +5039,7 @@ static void yynoreturn yy_fatal_error (yyconst char* msg ) do \ { \ /* Undo effects of setting up yytext. */ \ - yy_size_t yyless_macro_arg = (n); \ + int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = (yy_hold_char); \ (yy_c_buf_p) = yytext + yyless_macro_arg; \ @@ -5028,7 +5079,7 @@ FILE *yyget_out (void) /** Get the length of the current token. * */ -int yyget_leng (void) +yy_size_t yyget_leng (void) { return yyleng; } @@ -5084,10 +5135,10 @@ static int yy_init_globals (void) * This function is called from yylex_destroy(), so don't allocate here. */ - (yy_buffer_stack) = NULL; + (yy_buffer_stack) = 0; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = NULL; + (yy_c_buf_p) = (char *) 0; (yy_init) = 0; (yy_start) = 0; @@ -5096,8 +5147,8 @@ static int yy_init_globals (void) yyin = stdin; yyout = stdout; #else - yyin = NULL; - yyout = NULL; + yyin = (FILE *) 0; + yyout = (FILE *) 0; #endif /* For future reference: Set errno on error, since we are called by @@ -5155,7 +5206,7 @@ static int yy_flex_strlen (yyconst char * s ) void *yyalloc (yy_size_t size ) { - return malloc(size); + return (void *) malloc( size ); } void *yyrealloc (void * ptr, yy_size_t size ) @@ -5168,7 +5219,7 @@ void *yyrealloc (void * ptr, yy_size_t size ) * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ - return realloc(ptr, size); + return (void *) realloc( (char *) ptr, size ); } void yyfree (void * ptr ) @@ -5178,7 +5229,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 547 "./util/configlexer.lex" +#line 550 "./util/configlexer.lex" diff --git a/util/configparser.c b/util/configparser.c index ea5c13d22..37168d6a2 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -349,14 +349,17 @@ extern int yydebug; VAR_CACHEDB = 478, VAR_CACHEDB_BACKEND = 479, VAR_CACHEDB_SECRETSEED = 480, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 481, - VAR_FOR_UPSTREAM = 482, - VAR_AUTH_ZONE = 483, - VAR_ZONEFILE = 484, - VAR_MASTER = 485, - VAR_URL = 486, - VAR_FOR_DOWNSTREAM = 487, - VAR_FALLBACK_ENABLED = 488 + VAR_CACHEDB_REDISHOST = 481, + VAR_CACHEDB_REDISPORT = 482, + VAR_CACHEDB_REDISTIMEOUT = 483, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 484, + VAR_FOR_UPSTREAM = 485, + VAR_AUTH_ZONE = 486, + VAR_ZONEFILE = 487, + VAR_MASTER = 488, + VAR_URL = 489, + VAR_FOR_DOWNSTREAM = 490, + VAR_FALLBACK_ENABLED = 491 }; #endif /* Tokens. */ @@ -583,14 +586,17 @@ extern int yydebug; #define VAR_CACHEDB 478 #define VAR_CACHEDB_BACKEND 479 #define VAR_CACHEDB_SECRETSEED 480 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 481 -#define VAR_FOR_UPSTREAM 482 -#define VAR_AUTH_ZONE 483 -#define VAR_ZONEFILE 484 -#define VAR_MASTER 485 -#define VAR_URL 486 -#define VAR_FOR_DOWNSTREAM 487 -#define VAR_FALLBACK_ENABLED 488 +#define VAR_CACHEDB_REDISHOST 481 +#define VAR_CACHEDB_REDISPORT 482 +#define VAR_CACHEDB_REDISTIMEOUT 483 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 484 +#define VAR_FOR_UPSTREAM 485 +#define VAR_AUTH_ZONE 486 +#define VAR_ZONEFILE 487 +#define VAR_MASTER 488 +#define VAR_URL 489 +#define VAR_FOR_DOWNSTREAM 490 +#define VAR_FALLBACK_ENABLED 491 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -601,7 +607,7 @@ union YYSTYPE char* str; -#line 605 "util/configparser.c" /* yacc.c:355 */ +#line 611 "util/configparser.c" /* yacc.c:355 */ }; typedef union YYSTYPE YYSTYPE; @@ -618,7 +624,7 @@ int yyparse (void); /* Copy the second part of user declarations. */ -#line 622 "util/configparser.c" /* yacc.c:358 */ +#line 628 "util/configparser.c" /* yacc.c:358 */ #ifdef short # undef short @@ -860,21 +866,21 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 473 +#define YYLAST 479 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 234 +#define YYNTOKENS 237 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 254 +#define YYNNTS 257 /* YYNRULES -- Number of rules. */ -#define YYNRULES 485 +#define YYNRULES 491 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 726 +#define YYNSTATES 735 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 488 +#define YYMAXUTOK 491 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -931,62 +937,64 @@ static const yytype_uint8 yytranslate[] = 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233 + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 160, 160, 160, 161, 161, 162, 162, 163, 163, - 163, 164, 164, 165, 169, 174, 175, 176, 176, 176, - 177, 177, 178, 178, 179, 179, 180, 180, 181, 181, - 181, 182, 182, 182, 183, 183, 184, 184, 185, 185, - 186, 186, 187, 187, 188, 188, 189, 189, 190, 190, - 191, 191, 191, 192, 192, 192, 193, 193, 193, 194, - 194, 195, 195, 196, 196, 197, 197, 198, 198, 198, - 199, 199, 200, 200, 201, 201, 201, 202, 202, 203, - 203, 204, 204, 205, 205, 205, 206, 206, 207, 207, - 208, 208, 209, 209, 210, 210, 211, 211, 211, 212, - 212, 213, 213, 213, 214, 214, 214, 215, 215, 215, - 216, 216, 216, 216, 217, 217, 217, 218, 218, 218, - 219, 219, 220, 220, 221, 221, 222, 222, 223, 223, - 223, 224, 224, 225, 225, 226, 227, 227, 228, 228, - 229, 229, 230, 231, 231, 232, 232, 233, 233, 234, - 234, 234, 235, 235, 236, 236, 237, 237, 238, 238, - 239, 239, 239, 240, 240, 240, 241, 241, 241, 242, - 242, 243, 243, 244, 244, 245, 245, 246, 246, 247, - 249, 261, 262, 263, 263, 263, 263, 263, 264, 266, - 278, 279, 280, 280, 280, 280, 281, 283, 297, 298, - 299, 299, 299, 299, 300, 300, 300, 302, 318, 319, - 320, 320, 320, 320, 321, 321, 321, 323, 332, 341, - 352, 361, 370, 379, 390, 399, 410, 423, 438, 449, - 466, 483, 496, 511, 520, 529, 538, 547, 556, 565, - 574, 583, 592, 601, 610, 619, 628, 637, 646, 655, - 662, 669, 678, 685, 694, 703, 717, 726, 735, 744, - 751, 758, 784, 792, 799, 806, 813, 820, 828, 836, - 844, 851, 862, 869, 878, 887, 896, 903, 910, 918, - 926, 936, 946, 956, 969, 980, 988, 1001, 1010, 1019, - 1028, 1038, 1048, 1056, 1069, 1078, 1086, 1095, 1103, 1116, - 1125, 1132, 1142, 1152, 1162, 1172, 1182, 1192, 1202, 1212, - 1219, 1226, 1233, 1242, 1251, 1260, 1267, 1277, 1294, 1301, - 1319, 1332, 1345, 1354, 1363, 1372, 1381, 1391, 1401, 1412, - 1421, 1430, 1443, 1456, 1465, 1472, 1481, 1490, 1499, 1508, - 1516, 1529, 1537, 1566, 1573, 1588, 1598, 1608, 1615, 1622, - 1631, 1645, 1664, 1683, 1695, 1707, 1719, 1730, 1749, 1759, - 1768, 1776, 1784, 1797, 1810, 1823, 1836, 1845, 1854, 1864, - 1874, 1887, 1900, 1911, 1924, 1935, 1948, 1958, 1965, 1972, - 1981, 1991, 2001, 2011, 2018, 2025, 2034, 2044, 2054, 2061, - 2068, 2075, 2085, 2095, 2105, 2115, 2145, 2155, 2163, 2172, - 2187, 2196, 2201, 2202, 2203, 2203, 2203, 2204, 2204, 2204, - 2205, 2205, 2207, 2217, 2226, 2233, 2243, 2250, 2257, 2264, - 2271, 2276, 2277, 2278, 2278, 2279, 2279, 2280, 2280, 2281, - 2282, 2283, 2284, 2285, 2286, 2288, 2296, 2303, 2311, 2319, - 2326, 2333, 2342, 2351, 2360, 2369, 2378, 2387, 2392, 2393, - 2394, 2396, 2402, 2412, 2419, 2428, 2436, 2442, 2443, 2445, - 2445, 2445, 2446, 2446, 2447, 2448, 2449, 2450, 2451, 2453, - 2463, 2473, 2480, 2489, 2496, 2505, 2513, 2526, 2534, 2547, - 2552, 2553, 2554, 2554, 2556, 2570 + 0, 161, 161, 161, 162, 162, 163, 163, 164, 164, + 164, 165, 165, 166, 170, 175, 176, 177, 177, 177, + 178, 178, 179, 179, 180, 180, 181, 181, 182, 182, + 182, 183, 183, 183, 184, 184, 185, 185, 186, 186, + 187, 187, 188, 188, 189, 189, 190, 190, 191, 191, + 192, 192, 192, 193, 193, 193, 194, 194, 194, 195, + 195, 196, 196, 197, 197, 198, 198, 199, 199, 199, + 200, 200, 201, 201, 202, 202, 202, 203, 203, 204, + 204, 205, 205, 206, 206, 206, 207, 207, 208, 208, + 209, 209, 210, 210, 211, 211, 212, 212, 212, 213, + 213, 214, 214, 214, 215, 215, 215, 216, 216, 216, + 217, 217, 217, 217, 218, 218, 218, 219, 219, 219, + 220, 220, 221, 221, 222, 222, 223, 223, 224, 224, + 224, 225, 225, 226, 226, 227, 228, 228, 229, 229, + 230, 230, 231, 232, 232, 233, 233, 234, 234, 235, + 235, 235, 236, 236, 237, 237, 238, 238, 239, 239, + 240, 240, 240, 241, 241, 241, 242, 242, 242, 243, + 243, 244, 244, 245, 245, 246, 246, 247, 247, 248, + 250, 262, 263, 264, 264, 264, 264, 264, 265, 267, + 279, 280, 281, 281, 281, 281, 282, 284, 298, 299, + 300, 300, 300, 300, 301, 301, 301, 303, 319, 320, + 321, 321, 321, 321, 322, 322, 322, 324, 333, 342, + 353, 362, 371, 380, 391, 400, 411, 424, 439, 450, + 467, 484, 497, 512, 521, 530, 539, 548, 557, 566, + 575, 584, 593, 602, 611, 620, 629, 638, 647, 656, + 663, 670, 679, 686, 695, 704, 718, 727, 736, 745, + 752, 759, 785, 793, 800, 807, 814, 821, 829, 837, + 845, 852, 863, 870, 879, 888, 897, 904, 911, 919, + 927, 937, 947, 957, 970, 981, 989, 1002, 1011, 1020, + 1029, 1039, 1049, 1057, 1070, 1079, 1087, 1096, 1104, 1117, + 1126, 1133, 1143, 1153, 1163, 1173, 1183, 1193, 1203, 1213, + 1220, 1227, 1234, 1243, 1252, 1261, 1268, 1278, 1295, 1302, + 1320, 1333, 1346, 1355, 1364, 1373, 1382, 1392, 1402, 1413, + 1422, 1431, 1444, 1457, 1466, 1473, 1482, 1491, 1500, 1509, + 1517, 1530, 1538, 1567, 1574, 1589, 1599, 1609, 1616, 1623, + 1632, 1646, 1665, 1684, 1696, 1708, 1720, 1731, 1750, 1760, + 1769, 1777, 1785, 1798, 1811, 1824, 1837, 1846, 1855, 1865, + 1875, 1888, 1901, 1912, 1925, 1936, 1949, 1959, 1966, 1973, + 1982, 1992, 2002, 2012, 2019, 2026, 2035, 2045, 2055, 2062, + 2069, 2076, 2086, 2096, 2106, 2116, 2146, 2156, 2164, 2173, + 2188, 2197, 2202, 2203, 2204, 2204, 2204, 2205, 2205, 2205, + 2206, 2206, 2208, 2218, 2227, 2234, 2244, 2251, 2258, 2265, + 2272, 2277, 2278, 2279, 2279, 2280, 2280, 2281, 2281, 2282, + 2283, 2284, 2285, 2286, 2287, 2289, 2297, 2304, 2312, 2320, + 2327, 2334, 2343, 2352, 2361, 2370, 2379, 2388, 2393, 2394, + 2395, 2397, 2403, 2413, 2420, 2429, 2437, 2443, 2444, 2446, + 2446, 2446, 2447, 2447, 2448, 2449, 2450, 2451, 2452, 2454, + 2464, 2474, 2481, 2490, 2497, 2506, 2514, 2527, 2535, 2548, + 2553, 2554, 2555, 2555, 2556, 2556, 2556, 2558, 2572, 2587, + 2599, 2614 }; #endif @@ -1077,17 +1085,18 @@ static const char *const yytname[] = "VAR_IPSECMOD_ENABLED", "VAR_IPSECMOD_HOOK", "VAR_IPSECMOD_IGNORE_BOGUS", "VAR_IPSECMOD_MAX_TTL", "VAR_IPSECMOD_WHITELIST", "VAR_IPSECMOD_STRICT", "VAR_CACHEDB", "VAR_CACHEDB_BACKEND", "VAR_CACHEDB_SECRETSEED", - "VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM", "VAR_FOR_UPSTREAM", - "VAR_AUTH_ZONE", "VAR_ZONEFILE", "VAR_MASTER", "VAR_URL", - "VAR_FOR_DOWNSTREAM", "VAR_FALLBACK_ENABLED", "$accept", "toplevelvars", - "toplevelvar", "serverstart", "contents_server", "content_server", - "stubstart", "contents_stub", "content_stub", "forwardstart", - "contents_forward", "content_forward", "viewstart", "contents_view", - "content_view", "authstart", "contents_auth", "content_auth", - "server_num_threads", "server_verbosity", "server_statistics_interval", - "server_statistics_cumulative", "server_extended_statistics", - "server_shm_enable", "server_shm_key", "server_port", - "server_send_client_subnet", "server_client_subnet_zone", + "VAR_CACHEDB_REDISHOST", "VAR_CACHEDB_REDISPORT", + "VAR_CACHEDB_REDISTIMEOUT", "VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM", + "VAR_FOR_UPSTREAM", "VAR_AUTH_ZONE", "VAR_ZONEFILE", "VAR_MASTER", + "VAR_URL", "VAR_FOR_DOWNSTREAM", "VAR_FALLBACK_ENABLED", "$accept", + "toplevelvars", "toplevelvar", "serverstart", "contents_server", + "content_server", "stubstart", "contents_stub", "content_stub", + "forwardstart", "contents_forward", "content_forward", "viewstart", + "contents_view", "content_view", "authstart", "contents_auth", + "content_auth", "server_num_threads", "server_verbosity", + "server_statistics_interval", "server_statistics_cumulative", + "server_extended_statistics", "server_shm_enable", "server_shm_key", + "server_port", "server_send_client_subnet", "server_client_subnet_zone", "server_client_subnet_always_forward", "server_client_subnet_opcode", "server_max_client_subnet_ipv4", "server_max_client_subnet_ipv6", "server_interface", "server_outgoing_interface", "server_outgoing_range", @@ -1182,7 +1191,8 @@ static const char *const yytname[] = "dnsc_dnscrypt_shared_secret_cache_slabs", "dnsc_dnscrypt_nonce_cache_size", "dnsc_dnscrypt_nonce_cache_slabs", "cachedbstart", "contents_cachedb", "content_cachedb", - "cachedb_backend_name", "cachedb_secret_seed", YY_NULLPTR + "cachedb_backend_name", "cachedb_secret_seed", "redis_server_host", + "redis_server_port", "redis_timeout", YY_NULLPTR }; #endif @@ -1214,14 +1224,14 @@ static const yytype_uint16 yytoknum[] = 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 + 485, 486, 487, 488, 489, 490, 491 }; # endif -#define YYPACT_NINF -223 +#define YYPACT_NINF -195 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-223))) + (!!((Yystate) == (-195))) #define YYTABLE_NINF -1 @@ -1232,79 +1242,80 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -223, 0, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, 217, -36, -31, -39, -35, -24, - -128, -100, -159, -222, 2, 3, 4, 5, 6, 21, - 22, 23, 24, 25, 26, 29, 30, 32, 33, 34, - 35, 36, 48, 49, 50, 51, 53, 54, 55, 56, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 82, 83, 84, 85, 86, - 88, 89, 92, 94, 95, 96, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 189, 190, 191, 192, - 193, 194, 195, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 214, - 215, 216, 247, 248, 249, 250, 254, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, 255, 256, 298, 299, 300, 301, -223, -223, -223, - -223, -223, -223, -223, 302, 303, 304, 305, 306, -223, - -223, -223, -223, -223, -223, 310, 314, 315, 339, 340, - 341, 343, -223, -223, -223, -223, -223, -223, -223, -223, - 353, 354, 355, 356, 357, 358, 359, -223, -223, -223, - -223, -223, -223, -223, -223, 360, 361, 362, 363, 364, - 365, 400, 402, -223, -223, -223, -223, -223, -223, -223, - -223, -223, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 430, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, 431, -223, -223, - 432, 434, 435, 436, 437, 438, 439, 440, 441, 442, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, 443, 444, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, 445, 446, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, 447, 448, 449, - -223, -223, -223, -223, -223, -223, -223, -223, -223, 450, - 451, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, 452, 453, 454, 455, - 456, 457, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, 458, -223, -223, 459, 460, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, 461, 462, 463, -223, - -223, -223, -223, -223, -223, -223 + -195, 0, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, 220, -37, -32, -39, -38, -25, + -129, -104, -159, -194, -3, -1, 2, 3, 4, 5, + 25, 26, 29, 30, 32, 33, 34, 35, 36, 48, + 49, 50, 51, 53, 54, 55, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 82, 83, 84, 85, 87, 88, 91, 93, + 94, 95, 96, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 189, 190, 191, 192, 193, 194, 195, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 214, 215, 216, 217, + 218, 219, 250, 251, 252, 253, 257, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, 258, 259, 301, 302, 303, 304, -195, -195, -195, + -195, -195, -195, -195, 305, 306, 307, 308, 309, -195, + -195, -195, -195, -195, -195, 313, 317, 318, 342, 343, + 344, 346, -195, -195, -195, -195, -195, -195, -195, -195, + 356, 357, 358, 359, 360, 361, 362, -195, -195, -195, + -195, -195, -195, -195, -195, 363, 364, 365, 366, 367, + 368, 403, 405, -195, -195, -195, -195, -195, -195, -195, + -195, -195, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 433, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, 434, -195, -195, + 435, 436, 437, 438, 440, 441, 442, 443, 444, 445, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, 446, 447, 448, 449, 450, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, 451, 452, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, 453, 454, 455, -195, -195, -195, -195, + -195, -195, -195, -195, -195, 456, 457, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, 458, 459, 460, 461, 462, 463, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, 464, -195, -195, + 465, 466, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, 467, 468, 469, -195, -195, + -195, -195, -195, -195, -195 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1360,62 +1371,63 @@ static const yytype_uint16 yydefact[] = 428, 429, 430, 431, 432, 433, 434, 0, 448, 450, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 457, 459, 460, 461, 463, 464, 462, 465, 466, 467, - 468, 0, 0, 480, 482, 483, 218, 217, 224, 233, - 231, 239, 240, 243, 241, 242, 244, 245, 259, 260, - 261, 262, 263, 285, 286, 287, 292, 293, 236, 294, - 295, 298, 296, 297, 300, 301, 302, 315, 273, 274, - 276, 277, 303, 318, 268, 270, 319, 325, 326, 327, - 237, 284, 339, 340, 269, 334, 255, 232, 264, 316, - 322, 304, 0, 0, 343, 238, 219, 254, 308, 220, - 234, 235, 265, 266, 341, 306, 310, 311, 221, 344, - 288, 314, 256, 272, 320, 321, 324, 333, 267, 337, - 335, 336, 278, 283, 312, 313, 279, 280, 305, 329, - 257, 258, 246, 248, 249, 250, 251, 252, 345, 346, - 347, 289, 290, 291, 299, 348, 349, 0, 0, 0, - 307, 281, 452, 358, 362, 360, 359, 363, 361, 0, - 0, 366, 367, 225, 226, 227, 228, 229, 230, 309, - 323, 338, 368, 369, 282, 350, 0, 0, 0, 0, - 0, 0, 330, 331, 332, 453, 275, 271, 328, 253, - 222, 223, 370, 372, 371, 373, 374, 375, 247, 376, - 377, 378, 381, 380, 379, 382, 383, 384, 385, 386, - 394, 0, 398, 399, 0, 0, 400, 387, 392, 388, - 389, 390, 391, 393, 412, 414, 413, 416, 417, 418, - 419, 415, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 451, 469, 470, 471, 474, 472, - 473, 475, 476, 477, 478, 484, 485, 317, 342, 357, - 454, 455, 364, 365, 351, 352, 0, 0, 0, 356, - 395, 396, 397, 355, 353, 354 + 468, 0, 0, 0, 0, 0, 480, 482, 483, 484, + 485, 486, 218, 217, 224, 233, 231, 239, 240, 243, + 241, 242, 244, 245, 259, 260, 261, 262, 263, 285, + 286, 287, 292, 293, 236, 294, 295, 298, 296, 297, + 300, 301, 302, 315, 273, 274, 276, 277, 303, 318, + 268, 270, 319, 325, 326, 327, 237, 284, 339, 340, + 269, 334, 255, 232, 264, 316, 322, 304, 0, 0, + 343, 238, 219, 254, 308, 220, 234, 235, 265, 266, + 341, 306, 310, 311, 221, 344, 288, 314, 256, 272, + 320, 321, 324, 333, 267, 337, 335, 336, 278, 283, + 312, 313, 279, 280, 305, 329, 257, 258, 246, 248, + 249, 250, 251, 252, 345, 346, 347, 289, 290, 291, + 299, 348, 349, 0, 0, 0, 307, 281, 452, 358, + 362, 360, 359, 363, 361, 0, 0, 366, 367, 225, + 226, 227, 228, 229, 230, 309, 323, 338, 368, 369, + 282, 350, 0, 0, 0, 0, 0, 0, 330, 331, + 332, 453, 275, 271, 328, 253, 222, 223, 370, 372, + 371, 373, 374, 375, 247, 376, 377, 378, 381, 380, + 379, 382, 383, 384, 385, 386, 394, 0, 398, 399, + 0, 0, 400, 387, 392, 388, 389, 390, 391, 393, + 412, 414, 413, 416, 417, 418, 419, 415, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 451, 469, 470, 471, 474, 472, 473, 475, 476, 477, + 478, 487, 488, 489, 490, 491, 317, 342, 357, 454, + 455, 364, 365, 351, 352, 0, 0, 0, 356, 395, + 396, 397, 355, 353, 354 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, - -223, -223, -223, -223 + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195 }; /* YYDEFGOTO[NTERM-NUM]. */ @@ -1446,7 +1458,7 @@ static const yytype_int16 yydefgoto[] = 449, 450, 451, 452, 453, 454, 455, 456, 21, 31, 458, 459, 357, 358, 359, 360, 22, 32, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 23, - 33, 483, 484, 485 + 33, 486, 487, 488, 489, 490, 491 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1454,69 +1466,69 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint16 yytable[] = { - 2, 385, 481, 482, 361, 400, 362, 363, 457, 374, - 0, 3, 486, 487, 488, 489, 490, 375, 376, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 491, 492, 493, 494, 495, 496, 386, 387, 497, - 498, 4, 499, 500, 501, 502, 503, 5, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 504, 505, - 506, 507, 388, 508, 509, 510, 511, 364, 415, 416, - 417, 418, 419, 420, 421, 422, 512, 513, 514, 515, - 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, - 526, 6, 527, 528, 529, 530, 531, 365, 532, 533, - 366, 377, 534, 378, 535, 536, 537, 7, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 389, 390, 551, 552, 553, 554, 555, 556, 557, - 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, - 568, 569, 570, 571, 572, 573, 8, 574, 575, 576, - 577, 578, 579, 580, 581, 582, 391, 583, 584, 585, - 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, - 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, - 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, - 616, 617, 401, 9, 402, 403, 404, 405, 406, 618, - 619, 620, 621, 622, 623, 624, 10, 625, 626, 627, - 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, - 638, 639, 640, 11, 641, 642, 643, 0, 12, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 644, 645, 646, - 647, 62, 63, 64, 648, 649, 650, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 651, 652, - 653, 654, 655, 656, 657, 658, 659, 106, 107, 108, - 660, 109, 110, 111, 661, 662, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 663, - 664, 665, 135, 666, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 667, 668, 669, 670, 671, 672, 673, - 674, 675, 676, 677, 678, 679, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 680, 179, 681, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 682, 683, 684, 685, 686, 687, 688, - 689, 690, 691, 692, 190, 191, 192, 193, 194, 195, - 693, 694, 695, 196, 696, 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, 725 + 2, 385, 400, 361, 457, 362, 363, 492, 374, 493, + 0, 3, 494, 495, 496, 497, 375, 376, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 481, 482, 483, 484, 485, 498, 499, 386, 387, 500, + 501, 4, 502, 503, 504, 505, 506, 5, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 507, 508, + 509, 510, 388, 511, 512, 513, 364, 415, 416, 417, + 418, 419, 420, 421, 422, 514, 515, 516, 517, 518, + 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, + 529, 6, 530, 531, 532, 533, 365, 534, 535, 366, + 377, 536, 378, 537, 538, 539, 540, 7, 541, 542, + 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, + 553, 389, 390, 554, 555, 556, 557, 558, 559, 560, + 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, + 571, 572, 573, 574, 575, 576, 8, 577, 578, 579, + 580, 581, 582, 583, 584, 585, 391, 586, 587, 588, + 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, + 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, + 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, + 619, 620, 401, 9, 402, 403, 404, 405, 406, 621, + 622, 623, 624, 625, 626, 627, 10, 628, 629, 630, + 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, + 641, 642, 643, 11, 644, 645, 646, 647, 648, 649, + 0, 12, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 650, 651, 652, 653, 62, 63, 64, 654, 655, 656, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 657, 658, 659, 660, 661, 662, 663, 664, 665, + 106, 107, 108, 666, 109, 110, 111, 667, 668, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 669, 670, 671, 135, 672, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 673, 674, 675, 676, + 677, 678, 679, 680, 681, 682, 683, 684, 685, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 686, 179, 687, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 688, 689, 690, 691, + 692, 693, 694, 695, 696, 697, 698, 190, 191, 192, + 193, 194, 195, 699, 700, 701, 702, 703, 704, 196, + 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, + 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, + 725, 726, 727, 728, 729, 730, 731, 732, 733, 734 }; static const yytype_int16 yycheck[] = { - 0, 40, 224, 225, 40, 40, 42, 43, 108, 40, - -1, 11, 10, 10, 10, 10, 10, 48, 49, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 10, 10, 10, 10, 10, 10, 76, 77, 10, + 0, 40, 40, 40, 108, 42, 43, 10, 40, 10, + -1, 11, 10, 10, 10, 10, 48, 49, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 224, 225, 226, 227, 228, 10, 10, 76, 77, 10, 10, 41, 10, 10, 10, 10, 10, 47, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 10, 10, - 10, 10, 101, 10, 10, 10, 10, 103, 92, 93, - 94, 95, 96, 97, 98, 99, 10, 10, 10, 10, + 10, 10, 101, 10, 10, 10, 103, 92, 93, 94, + 95, 96, 97, 98, 99, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 91, 10, 10, 10, 10, 10, 133, 10, 10, - 136, 132, 10, 134, 10, 10, 10, 107, 10, 10, + 10, 91, 10, 10, 10, 10, 133, 10, 10, 136, + 132, 10, 134, 10, 10, 10, 10, 107, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 160, 161, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1525,45 +1537,45 @@ static const yytype_int16 yycheck[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 227, 193, 229, 230, 231, 232, 233, 10, + 10, 10, 230, 193, 232, 233, 234, 235, 236, 10, 10, 10, 10, 10, 10, 10, 206, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 223, 10, 10, 10, -1, 228, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 10, 10, 10, - 10, 44, 45, 46, 10, 10, 10, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 100, 101, 102, - 10, 104, 105, 106, 10, 10, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 10, - 10, 10, 135, 10, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 10, 194, 10, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 217, 218, 219, 220, 221, 222, - 10, 10, 10, 226, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 223, 10, 10, 10, 10, 10, 10, + -1, 231, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 10, 10, 10, 10, 44, 45, 46, 10, 10, 10, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 100, 101, 102, 10, 104, 105, 106, 10, 10, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 10, 10, 10, 135, 10, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 10, 194, 10, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 217, 218, 219, + 220, 221, 222, 10, 10, 10, 10, 10, 10, 229, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10 + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 235, 0, 11, 41, 47, 91, 107, 146, 193, - 206, 223, 228, 236, 237, 240, 243, 246, 249, 436, - 447, 462, 470, 483, 238, 241, 244, 247, 250, 437, - 448, 463, 471, 484, 12, 13, 14, 15, 16, 17, + 0, 238, 0, 11, 41, 47, 91, 107, 146, 193, + 206, 223, 231, 239, 240, 243, 246, 249, 252, 439, + 450, 465, 473, 486, 241, 244, 247, 250, 253, 440, + 451, 466, 474, 487, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 44, 45, 46, 50, 51, 52, 53, 54, @@ -1579,36 +1591,37 @@ static const yytype_uint16 yystos[] = 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 194, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 217, 218, 219, 220, 221, 222, 226, 239, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 466, 467, 468, - 469, 40, 42, 43, 103, 133, 136, 242, 411, 412, - 413, 414, 415, 416, 40, 48, 49, 132, 134, 245, - 417, 418, 419, 420, 421, 40, 76, 77, 101, 160, - 161, 195, 248, 429, 430, 431, 432, 433, 434, 435, - 40, 227, 229, 230, 231, 232, 233, 251, 422, 423, - 424, 425, 426, 427, 428, 92, 93, 94, 95, 96, - 97, 98, 99, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 108, 464, 465, + 217, 218, 219, 220, 221, 222, 229, 242, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 469, 470, 471, + 472, 40, 42, 43, 103, 133, 136, 245, 414, 415, + 416, 417, 418, 419, 40, 48, 49, 132, 134, 248, + 420, 421, 422, 423, 424, 40, 76, 77, 101, 160, + 161, 195, 251, 432, 433, 434, 435, 436, 437, 438, + 40, 230, 232, 233, 234, 235, 236, 254, 425, 426, + 427, 428, 429, 430, 431, 92, 93, 94, 95, 96, + 97, 98, 99, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 108, 467, 468, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 224, 225, 485, 486, 487, 10, 10, 10, 10, + 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, + 485, 224, 225, 226, 227, 228, 488, 489, 490, 491, + 492, 493, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1632,61 +1645,62 @@ static const yytype_uint16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10 + 10, 10, 10, 10, 10 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 234, 235, 235, 236, 236, 236, 236, 236, 236, - 236, 236, 236, 236, 237, 238, 238, 239, 239, 239, - 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, - 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, - 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, - 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, - 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, - 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, - 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, - 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, - 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, - 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, - 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, - 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, - 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, - 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, - 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, - 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, - 240, 241, 241, 242, 242, 242, 242, 242, 242, 243, - 244, 244, 245, 245, 245, 245, 245, 246, 247, 247, - 248, 248, 248, 248, 248, 248, 248, 249, 250, 250, - 251, 251, 251, 251, 251, 251, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 437, 438, 438, 438, 438, 438, 438, - 438, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 448, 449, 449, 449, 449, 449, 449, 449, - 449, 449, 449, 449, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 463, - 464, 465, 466, 467, 468, 469, 470, 471, 471, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 473, - 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, - 484, 484, 485, 485, 486, 487 + 0, 237, 238, 238, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 240, 241, 241, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 243, 244, 244, 245, 245, 245, 245, 245, 245, 246, + 247, 247, 248, 248, 248, 248, 248, 249, 250, 250, + 251, 251, 251, 251, 251, 251, 251, 252, 253, 253, + 254, 254, 254, 254, 254, 254, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, + 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 440, 441, 441, 441, 441, 441, 441, + 441, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 451, 452, 452, 452, 452, 452, 452, 452, + 452, 452, 452, 452, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 474, 475, + 475, 475, 475, 475, 475, 475, 475, 475, 475, 476, + 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, + 487, 487, 488, 488, 488, 488, 488, 489, 490, 491, + 492, 493 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1740,7 +1754,8 @@ static const yytype_uint8 yyr2[] = 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, 2, 2 + 2, 0, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 2 }; @@ -2417,15 +2432,15 @@ yyparse (void) switch (yyn) { case 14: -#line 170 "./util/configparser.y" /* yacc.c:1646 */ +#line 171 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(server:)\n")); } -#line 2425 "util/configparser.c" /* yacc.c:1646 */ +#line 2440 "util/configparser.c" /* yacc.c:1646 */ break; case 180: -#line 250 "./util/configparser.y" /* yacc.c:1646 */ +#line 251 "./util/configparser.y" /* yacc.c:1646 */ { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2436,11 +2451,11 @@ yyparse (void) } else yyerror("out of memory"); } -#line 2440 "util/configparser.c" /* yacc.c:1646 */ +#line 2455 "util/configparser.c" /* yacc.c:1646 */ break; case 189: -#line 267 "./util/configparser.y" /* yacc.c:1646 */ +#line 268 "./util/configparser.y" /* yacc.c:1646 */ { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2451,11 +2466,11 @@ yyparse (void) } else yyerror("out of memory"); } -#line 2455 "util/configparser.c" /* yacc.c:1646 */ +#line 2470 "util/configparser.c" /* yacc.c:1646 */ break; case 197: -#line 284 "./util/configparser.y" /* yacc.c:1646 */ +#line 285 "./util/configparser.y" /* yacc.c:1646 */ { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -2468,11 +2483,11 @@ yyparse (void) } else yyerror("out of memory"); } -#line 2472 "util/configparser.c" /* yacc.c:1646 */ +#line 2487 "util/configparser.c" /* yacc.c:1646 */ break; case 207: -#line 303 "./util/configparser.y" /* yacc.c:1646 */ +#line 304 "./util/configparser.y" /* yacc.c:1646 */ { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -2487,11 +2502,11 @@ yyparse (void) } else yyerror("out of memory"); } -#line 2491 "util/configparser.c" /* yacc.c:1646 */ +#line 2506 "util/configparser.c" /* yacc.c:1646 */ break; case 217: -#line 324 "./util/configparser.y" /* yacc.c:1646 */ +#line 325 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2499,11 +2514,11 @@ yyparse (void) else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2503 "util/configparser.c" /* yacc.c:1646 */ +#line 2518 "util/configparser.c" /* yacc.c:1646 */ break; case 218: -#line 333 "./util/configparser.y" /* yacc.c:1646 */ +#line 334 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2511,11 +2526,11 @@ yyparse (void) else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2515 "util/configparser.c" /* yacc.c:1646 */ +#line 2530 "util/configparser.c" /* yacc.c:1646 */ break; case 219: -#line 342 "./util/configparser.y" /* yacc.c:1646 */ +#line 343 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -2525,11 +2540,11 @@ yyparse (void) else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2529 "util/configparser.c" /* yacc.c:1646 */ +#line 2544 "util/configparser.c" /* yacc.c:1646 */ break; case 220: -#line 353 "./util/configparser.y" /* yacc.c:1646 */ +#line 354 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2537,11 +2552,11 @@ yyparse (void) else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2541 "util/configparser.c" /* yacc.c:1646 */ +#line 2556 "util/configparser.c" /* yacc.c:1646 */ break; case 221: -#line 362 "./util/configparser.y" /* yacc.c:1646 */ +#line 363 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2549,11 +2564,11 @@ yyparse (void) else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2553 "util/configparser.c" /* yacc.c:1646 */ +#line 2568 "util/configparser.c" /* yacc.c:1646 */ break; case 222: -#line 371 "./util/configparser.y" /* yacc.c:1646 */ +#line 372 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2561,11 +2576,11 @@ yyparse (void) else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2565 "util/configparser.c" /* yacc.c:1646 */ +#line 2580 "util/configparser.c" /* yacc.c:1646 */ break; case 223: -#line 380 "./util/configparser.y" /* yacc.c:1646 */ +#line 381 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -2575,11 +2590,11 @@ yyparse (void) else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2579 "util/configparser.c" /* yacc.c:1646 */ +#line 2594 "util/configparser.c" /* yacc.c:1646 */ break; case 224: -#line 391 "./util/configparser.y" /* yacc.c:1646 */ +#line 392 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2587,11 +2602,11 @@ yyparse (void) else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2591 "util/configparser.c" /* yacc.c:1646 */ +#line 2606 "util/configparser.c" /* yacc.c:1646 */ break; case 225: -#line 400 "./util/configparser.y" /* yacc.c:1646 */ +#line 401 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -2601,11 +2616,11 @@ yyparse (void) OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif } -#line 2605 "util/configparser.c" /* yacc.c:1646 */ +#line 2620 "util/configparser.c" /* yacc.c:1646 */ break; case 226: -#line 411 "./util/configparser.y" /* yacc.c:1646 */ +#line 412 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -2616,11 +2631,11 @@ yyparse (void) OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif } -#line 2620 "util/configparser.c" /* yacc.c:1646 */ +#line 2635 "util/configparser.c" /* yacc.c:1646 */ break; case 227: -#line 424 "./util/configparser.y" /* yacc.c:1646 */ +#line 425 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -2634,11 +2649,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 2638 "util/configparser.c" /* yacc.c:1646 */ +#line 2653 "util/configparser.c" /* yacc.c:1646 */ break; case 228: -#line 439 "./util/configparser.y" /* yacc.c:1646 */ +#line 440 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -2648,11 +2663,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 2652 "util/configparser.c" /* yacc.c:1646 */ +#line 2667 "util/configparser.c" /* yacc.c:1646 */ break; case 229: -#line 450 "./util/configparser.y" /* yacc.c:1646 */ +#line 451 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -2668,11 +2683,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 2672 "util/configparser.c" /* yacc.c:1646 */ +#line 2687 "util/configparser.c" /* yacc.c:1646 */ break; case 230: -#line 467 "./util/configparser.y" /* yacc.c:1646 */ +#line 468 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -2688,11 +2703,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 2692 "util/configparser.c" /* yacc.c:1646 */ +#line 2707 "util/configparser.c" /* yacc.c:1646 */ break; case 231: -#line 484 "./util/configparser.y" /* yacc.c:1646 */ +#line 485 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -2704,11 +2719,11 @@ yyparse (void) else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 2708 "util/configparser.c" /* yacc.c:1646 */ +#line 2723 "util/configparser.c" /* yacc.c:1646 */ break; case 232: -#line 497 "./util/configparser.y" /* yacc.c:1646 */ +#line 498 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -2722,11 +2737,11 @@ yyparse (void) cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 2726 "util/configparser.c" /* yacc.c:1646 */ +#line 2741 "util/configparser.c" /* yacc.c:1646 */ break; case 233: -#line 512 "./util/configparser.y" /* yacc.c:1646 */ +#line 513 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2734,11 +2749,11 @@ yyparse (void) else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2738 "util/configparser.c" /* yacc.c:1646 */ +#line 2753 "util/configparser.c" /* yacc.c:1646 */ break; case 234: -#line 521 "./util/configparser.y" /* yacc.c:1646 */ +#line 522 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -2746,11 +2761,11 @@ yyparse (void) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 2750 "util/configparser.c" /* yacc.c:1646 */ +#line 2765 "util/configparser.c" /* yacc.c:1646 */ break; case 235: -#line 530 "./util/configparser.y" /* yacc.c:1646 */ +#line 531 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -2758,11 +2773,11 @@ yyparse (void) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 2762 "util/configparser.c" /* yacc.c:1646 */ +#line 2777 "util/configparser.c" /* yacc.c:1646 */ break; case 236: -#line 539 "./util/configparser.y" /* yacc.c:1646 */ +#line 540 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2770,11 +2785,11 @@ yyparse (void) else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2774 "util/configparser.c" /* yacc.c:1646 */ +#line 2789 "util/configparser.c" /* yacc.c:1646 */ break; case 237: -#line 548 "./util/configparser.y" /* yacc.c:1646 */ +#line 549 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2782,11 +2797,11 @@ yyparse (void) else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2786 "util/configparser.c" /* yacc.c:1646 */ +#line 2801 "util/configparser.c" /* yacc.c:1646 */ break; case 238: -#line 557 "./util/configparser.y" /* yacc.c:1646 */ +#line 558 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2794,11 +2809,11 @@ yyparse (void) else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2798 "util/configparser.c" /* yacc.c:1646 */ +#line 2813 "util/configparser.c" /* yacc.c:1646 */ break; case 239: -#line 566 "./util/configparser.y" /* yacc.c:1646 */ +#line 567 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2806,11 +2821,11 @@ yyparse (void) else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2810 "util/configparser.c" /* yacc.c:1646 */ +#line 2825 "util/configparser.c" /* yacc.c:1646 */ break; case 240: -#line 575 "./util/configparser.y" /* yacc.c:1646 */ +#line 576 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2818,11 +2833,11 @@ yyparse (void) else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2822 "util/configparser.c" /* yacc.c:1646 */ +#line 2837 "util/configparser.c" /* yacc.c:1646 */ break; case 241: -#line 584 "./util/configparser.y" /* yacc.c:1646 */ +#line 585 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2830,11 +2845,11 @@ yyparse (void) else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2834 "util/configparser.c" /* yacc.c:1646 */ +#line 2849 "util/configparser.c" /* yacc.c:1646 */ break; case 242: -#line 593 "./util/configparser.y" /* yacc.c:1646 */ +#line 594 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2842,11 +2857,11 @@ yyparse (void) else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2846 "util/configparser.c" /* yacc.c:1646 */ +#line 2861 "util/configparser.c" /* yacc.c:1646 */ break; case 243: -#line 602 "./util/configparser.y" /* yacc.c:1646 */ +#line 603 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2854,11 +2869,11 @@ yyparse (void) else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2858 "util/configparser.c" /* yacc.c:1646 */ +#line 2873 "util/configparser.c" /* yacc.c:1646 */ break; case 244: -#line 611 "./util/configparser.y" /* yacc.c:1646 */ +#line 612 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2866,11 +2881,11 @@ yyparse (void) else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2870 "util/configparser.c" /* yacc.c:1646 */ +#line 2885 "util/configparser.c" /* yacc.c:1646 */ break; case 245: -#line 620 "./util/configparser.y" /* yacc.c:1646 */ +#line 621 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2878,11 +2893,11 @@ yyparse (void) else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2882 "util/configparser.c" /* yacc.c:1646 */ +#line 2897 "util/configparser.c" /* yacc.c:1646 */ break; case 246: -#line 629 "./util/configparser.y" /* yacc.c:1646 */ +#line 630 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2890,11 +2905,11 @@ yyparse (void) else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2894 "util/configparser.c" /* yacc.c:1646 */ +#line 2909 "util/configparser.c" /* yacc.c:1646 */ break; case 247: -#line 638 "./util/configparser.y" /* yacc.c:1646 */ +#line 639 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -2902,11 +2917,11 @@ yyparse (void) else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2906 "util/configparser.c" /* yacc.c:1646 */ +#line 2921 "util/configparser.c" /* yacc.c:1646 */ break; case 248: -#line 647 "./util/configparser.y" /* yacc.c:1646 */ +#line 648 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2914,31 +2929,31 @@ yyparse (void) else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2918 "util/configparser.c" /* yacc.c:1646 */ +#line 2933 "util/configparser.c" /* yacc.c:1646 */ break; case 249: -#line 656 "./util/configparser.y" /* yacc.c:1646 */ +#line 657 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 2928 "util/configparser.c" /* yacc.c:1646 */ +#line 2943 "util/configparser.c" /* yacc.c:1646 */ break; case 250: -#line 663 "./util/configparser.y" /* yacc.c:1646 */ +#line 664 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 2938 "util/configparser.c" /* yacc.c:1646 */ +#line 2953 "util/configparser.c" /* yacc.c:1646 */ break; case 251: -#line 670 "./util/configparser.y" /* yacc.c:1646 */ +#line 671 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2946,21 +2961,21 @@ yyparse (void) else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2950 "util/configparser.c" /* yacc.c:1646 */ +#line 2965 "util/configparser.c" /* yacc.c:1646 */ break; case 252: -#line 679 "./util/configparser.y" /* yacc.c:1646 */ +#line 680 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 2960 "util/configparser.c" /* yacc.c:1646 */ +#line 2975 "util/configparser.c" /* yacc.c:1646 */ break; case 253: -#line 686 "./util/configparser.y" /* yacc.c:1646 */ +#line 687 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2968,11 +2983,11 @@ yyparse (void) else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2972 "util/configparser.c" /* yacc.c:1646 */ +#line 2987 "util/configparser.c" /* yacc.c:1646 */ break; case 254: -#line 695 "./util/configparser.y" /* yacc.c:1646 */ +#line 696 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2980,11 +2995,11 @@ yyparse (void) else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2984 "util/configparser.c" /* yacc.c:1646 */ +#line 2999 "util/configparser.c" /* yacc.c:1646 */ break; case 255: -#line 704 "./util/configparser.y" /* yacc.c:1646 */ +#line 705 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2997,11 +3012,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 3001 "util/configparser.c" /* yacc.c:1646 */ +#line 3016 "util/configparser.c" /* yacc.c:1646 */ break; case 256: -#line 718 "./util/configparser.y" /* yacc.c:1646 */ +#line 719 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3009,11 +3024,11 @@ yyparse (void) else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3013 "util/configparser.c" /* yacc.c:1646 */ +#line 3028 "util/configparser.c" /* yacc.c:1646 */ break; case 257: -#line 727 "./util/configparser.y" /* yacc.c:1646 */ +#line 728 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3021,11 +3036,11 @@ yyparse (void) else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3025 "util/configparser.c" /* yacc.c:1646 */ +#line 3040 "util/configparser.c" /* yacc.c:1646 */ break; case 258: -#line 736 "./util/configparser.y" /* yacc.c:1646 */ +#line 737 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3033,31 +3048,31 @@ yyparse (void) else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3037 "util/configparser.c" /* yacc.c:1646 */ +#line 3052 "util/configparser.c" /* yacc.c:1646 */ break; case 259: -#line 745 "./util/configparser.y" /* yacc.c:1646 */ +#line 746 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 3047 "util/configparser.c" /* yacc.c:1646 */ +#line 3062 "util/configparser.c" /* yacc.c:1646 */ break; case 260: -#line 752 "./util/configparser.y" /* yacc.c:1646 */ +#line 753 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 3057 "util/configparser.c" /* yacc.c:1646 */ +#line 3072 "util/configparser.c" /* yacc.c:1646 */ break; case 261: -#line 759 "./util/configparser.y" /* yacc.c:1646 */ +#line 760 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3082,105 +3097,105 @@ yyparse (void) } } } -#line 3086 "util/configparser.c" /* yacc.c:1646 */ +#line 3101 "util/configparser.c" /* yacc.c:1646 */ break; case 262: -#line 785 "./util/configparser.y" /* yacc.c:1646 */ +#line 786 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->logfile); cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 3097 "util/configparser.c" /* yacc.c:1646 */ +#line 3112 "util/configparser.c" /* yacc.c:1646 */ break; case 263: -#line 793 "./util/configparser.y" /* yacc.c:1646 */ +#line 794 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 3107 "util/configparser.c" /* yacc.c:1646 */ +#line 3122 "util/configparser.c" /* yacc.c:1646 */ break; case 264: -#line 800 "./util/configparser.y" /* yacc.c:1646 */ +#line 801 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3117 "util/configparser.c" /* yacc.c:1646 */ +#line 3132 "util/configparser.c" /* yacc.c:1646 */ break; case 265: -#line 807 "./util/configparser.y" /* yacc.c:1646 */ +#line 808 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dlv_anchor_file); cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str); } -#line 3127 "util/configparser.c" /* yacc.c:1646 */ +#line 3142 "util/configparser.c" /* yacc.c:1646 */ break; case 266: -#line 814 "./util/configparser.y" /* yacc.c:1646 */ +#line 815 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3137 "util/configparser.c" /* yacc.c:1646 */ +#line 3152 "util/configparser.c" /* yacc.c:1646 */ break; case 267: -#line 821 "./util/configparser.y" /* yacc.c:1646 */ +#line 822 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3148 "util/configparser.c" /* yacc.c:1646 */ +#line 3163 "util/configparser.c" /* yacc.c:1646 */ break; case 268: -#line 829 "./util/configparser.y" /* yacc.c:1646 */ +#line 830 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3159 "util/configparser.c" /* yacc.c:1646 */ +#line 3174 "util/configparser.c" /* yacc.c:1646 */ break; case 269: -#line 837 "./util/configparser.y" /* yacc.c:1646 */ +#line 838 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3170 "util/configparser.c" /* yacc.c:1646 */ +#line 3185 "util/configparser.c" /* yacc.c:1646 */ break; case 270: -#line 845 "./util/configparser.y" /* yacc.c:1646 */ +#line 846 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3180 "util/configparser.c" /* yacc.c:1646 */ +#line 3195 "util/configparser.c" /* yacc.c:1646 */ break; case 271: -#line 852 "./util/configparser.y" /* yacc.c:1646 */ +#line 853 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3190,21 +3205,21 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3194 "util/configparser.c" /* yacc.c:1646 */ +#line 3209 "util/configparser.c" /* yacc.c:1646 */ break; case 272: -#line 863 "./util/configparser.y" /* yacc.c:1646 */ +#line 864 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3204 "util/configparser.c" /* yacc.c:1646 */ +#line 3219 "util/configparser.c" /* yacc.c:1646 */ break; case 273: -#line 870 "./util/configparser.y" /* yacc.c:1646 */ +#line 871 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3212,11 +3227,11 @@ yyparse (void) else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3216 "util/configparser.c" /* yacc.c:1646 */ +#line 3231 "util/configparser.c" /* yacc.c:1646 */ break; case 274: -#line 879 "./util/configparser.y" /* yacc.c:1646 */ +#line 880 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3224,11 +3239,11 @@ yyparse (void) else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3228 "util/configparser.c" /* yacc.c:1646 */ +#line 3243 "util/configparser.c" /* yacc.c:1646 */ break; case 275: -#line 888 "./util/configparser.y" /* yacc.c:1646 */ +#line 889 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3236,53 +3251,53 @@ yyparse (void) else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3240 "util/configparser.c" /* yacc.c:1646 */ +#line 3255 "util/configparser.c" /* yacc.c:1646 */ break; case 276: -#line 897 "./util/configparser.y" /* yacc.c:1646 */ +#line 898 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 3250 "util/configparser.c" /* yacc.c:1646 */ +#line 3265 "util/configparser.c" /* yacc.c:1646 */ break; case 277: -#line 904 "./util/configparser.y" /* yacc.c:1646 */ +#line 905 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 3260 "util/configparser.c" /* yacc.c:1646 */ +#line 3275 "util/configparser.c" /* yacc.c:1646 */ break; case 278: -#line 911 "./util/configparser.y" /* yacc.c:1646 */ +#line 912 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 3271 "util/configparser.c" /* yacc.c:1646 */ +#line 3286 "util/configparser.c" /* yacc.c:1646 */ break; case 279: -#line 919 "./util/configparser.y" /* yacc.c:1646 */ +#line 920 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 3282 "util/configparser.c" /* yacc.c:1646 */ +#line 3297 "util/configparser.c" /* yacc.c:1646 */ break; case 280: -#line 927 "./util/configparser.y" /* yacc.c:1646 */ +#line 928 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3291,11 +3306,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3295 "util/configparser.c" /* yacc.c:1646 */ +#line 3310 "util/configparser.c" /* yacc.c:1646 */ break; case 281: -#line 937 "./util/configparser.y" /* yacc.c:1646 */ +#line 938 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3304,11 +3319,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3308 "util/configparser.c" /* yacc.c:1646 */ +#line 3323 "util/configparser.c" /* yacc.c:1646 */ break; case 282: -#line 947 "./util/configparser.y" /* yacc.c:1646 */ +#line 948 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3317,11 +3332,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3321 "util/configparser.c" /* yacc.c:1646 */ +#line 3336 "util/configparser.c" /* yacc.c:1646 */ break; case 283: -#line 957 "./util/configparser.y" /* yacc.c:1646 */ +#line 958 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3333,11 +3348,11 @@ yyparse (void) else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3337 "util/configparser.c" /* yacc.c:1646 */ +#line 3352 "util/configparser.c" /* yacc.c:1646 */ break; case 284: -#line 970 "./util/configparser.y" /* yacc.c:1646 */ +#line 971 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3347,22 +3362,22 @@ yyparse (void) else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3351 "util/configparser.c" /* yacc.c:1646 */ +#line 3366 "util/configparser.c" /* yacc.c:1646 */ break; case 285: -#line 981 "./util/configparser.y" /* yacc.c:1646 */ +#line 982 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3362 "util/configparser.c" /* yacc.c:1646 */ +#line 3377 "util/configparser.c" /* yacc.c:1646 */ break; case 286: -#line 989 "./util/configparser.y" /* yacc.c:1646 */ +#line 990 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3374,11 +3389,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 3378 "util/configparser.c" /* yacc.c:1646 */ +#line 3393 "util/configparser.c" /* yacc.c:1646 */ break; case 287: -#line 1002 "./util/configparser.y" /* yacc.c:1646 */ +#line 1003 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3386,11 +3401,11 @@ yyparse (void) else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3390 "util/configparser.c" /* yacc.c:1646 */ +#line 3405 "util/configparser.c" /* yacc.c:1646 */ break; case 288: -#line 1011 "./util/configparser.y" /* yacc.c:1646 */ +#line 1012 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3398,11 +3413,11 @@ yyparse (void) else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3402 "util/configparser.c" /* yacc.c:1646 */ +#line 3417 "util/configparser.c" /* yacc.c:1646 */ break; case 289: -#line 1020 "./util/configparser.y" /* yacc.c:1646 */ +#line 1021 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3410,11 +3425,11 @@ yyparse (void) else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3414 "util/configparser.c" /* yacc.c:1646 */ +#line 3429 "util/configparser.c" /* yacc.c:1646 */ break; case 290: -#line 1029 "./util/configparser.y" /* yacc.c:1646 */ +#line 1030 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3423,11 +3438,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3427 "util/configparser.c" /* yacc.c:1646 */ +#line 3442 "util/configparser.c" /* yacc.c:1646 */ break; case 291: -#line 1039 "./util/configparser.y" /* yacc.c:1646 */ +#line 1040 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3436,22 +3451,22 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3440 "util/configparser.c" /* yacc.c:1646 */ +#line 3455 "util/configparser.c" /* yacc.c:1646 */ break; case 292: -#line 1049 "./util/configparser.y" /* yacc.c:1646 */ +#line 1050 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3451 "util/configparser.c" /* yacc.c:1646 */ +#line 3466 "util/configparser.c" /* yacc.c:1646 */ break; case 293: -#line 1057 "./util/configparser.y" /* yacc.c:1646 */ +#line 1058 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3463,11 +3478,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 3467 "util/configparser.c" /* yacc.c:1646 */ +#line 3482 "util/configparser.c" /* yacc.c:1646 */ break; case 294: -#line 1070 "./util/configparser.y" /* yacc.c:1646 */ +#line 1071 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3475,22 +3490,22 @@ yyparse (void) else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3479 "util/configparser.c" /* yacc.c:1646 */ +#line 3494 "util/configparser.c" /* yacc.c:1646 */ break; case 295: -#line 1079 "./util/configparser.y" /* yacc.c:1646 */ +#line 1080 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3490 "util/configparser.c" /* yacc.c:1646 */ +#line 3505 "util/configparser.c" /* yacc.c:1646 */ break; case 296: -#line 1087 "./util/configparser.y" /* yacc.c:1646 */ +#line 1088 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3498,22 +3513,22 @@ yyparse (void) else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3502 "util/configparser.c" /* yacc.c:1646 */ +#line 3517 "util/configparser.c" /* yacc.c:1646 */ break; case 297: -#line 1096 "./util/configparser.y" /* yacc.c:1646 */ +#line 1097 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3513 "util/configparser.c" /* yacc.c:1646 */ +#line 3528 "util/configparser.c" /* yacc.c:1646 */ break; case 298: -#line 1104 "./util/configparser.y" /* yacc.c:1646 */ +#line 1105 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3525,11 +3540,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 3529 "util/configparser.c" /* yacc.c:1646 */ +#line 3544 "util/configparser.c" /* yacc.c:1646 */ break; case 299: -#line 1117 "./util/configparser.y" /* yacc.c:1646 */ +#line 1118 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3537,21 +3552,21 @@ yyparse (void) else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3541 "util/configparser.c" /* yacc.c:1646 */ +#line 3556 "util/configparser.c" /* yacc.c:1646 */ break; case 300: -#line 1126 "./util/configparser.y" /* yacc.c:1646 */ +#line 1127 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 3551 "util/configparser.c" /* yacc.c:1646 */ +#line 3566 "util/configparser.c" /* yacc.c:1646 */ break; case 301: -#line 1133 "./util/configparser.y" /* yacc.c:1646 */ +#line 1134 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3560,11 +3575,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3564 "util/configparser.c" /* yacc.c:1646 */ +#line 3579 "util/configparser.c" /* yacc.c:1646 */ break; case 302: -#line 1143 "./util/configparser.y" /* yacc.c:1646 */ +#line 1144 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3573,11 +3588,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3577 "util/configparser.c" /* yacc.c:1646 */ +#line 3592 "util/configparser.c" /* yacc.c:1646 */ break; case 303: -#line 1153 "./util/configparser.y" /* yacc.c:1646 */ +#line 1154 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3586,11 +3601,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3590 "util/configparser.c" /* yacc.c:1646 */ +#line 3605 "util/configparser.c" /* yacc.c:1646 */ break; case 304: -#line 1163 "./util/configparser.y" /* yacc.c:1646 */ +#line 1164 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3599,11 +3614,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3603 "util/configparser.c" /* yacc.c:1646 */ +#line 3618 "util/configparser.c" /* yacc.c:1646 */ break; case 305: -#line 1173 "./util/configparser.y" /* yacc.c:1646 */ +#line 1174 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3612,11 +3627,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3616 "util/configparser.c" /* yacc.c:1646 */ +#line 3631 "util/configparser.c" /* yacc.c:1646 */ break; case 306: -#line 1183 "./util/configparser.y" /* yacc.c:1646 */ +#line 1184 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3625,11 +3640,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3629 "util/configparser.c" /* yacc.c:1646 */ +#line 3644 "util/configparser.c" /* yacc.c:1646 */ break; case 307: -#line 1193 "./util/configparser.y" /* yacc.c:1646 */ +#line 1194 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3638,11 +3653,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3642 "util/configparser.c" /* yacc.c:1646 */ +#line 3657 "util/configparser.c" /* yacc.c:1646 */ break; case 308: -#line 1203 "./util/configparser.y" /* yacc.c:1646 */ +#line 1204 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3651,41 +3666,41 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3655 "util/configparser.c" /* yacc.c:1646 */ +#line 3670 "util/configparser.c" /* yacc.c:1646 */ break; case 309: -#line 1213 "./util/configparser.y" /* yacc.c:1646 */ +#line 1214 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3665 "util/configparser.c" /* yacc.c:1646 */ +#line 3680 "util/configparser.c" /* yacc.c:1646 */ break; case 310: -#line 1220 "./util/configparser.y" /* yacc.c:1646 */ +#line 1221 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3675 "util/configparser.c" /* yacc.c:1646 */ +#line 3690 "util/configparser.c" /* yacc.c:1646 */ break; case 311: -#line 1227 "./util/configparser.y" /* yacc.c:1646 */ +#line 1228 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3685 "util/configparser.c" /* yacc.c:1646 */ +#line 3700 "util/configparser.c" /* yacc.c:1646 */ break; case 312: -#line 1234 "./util/configparser.y" /* yacc.c:1646 */ +#line 1235 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3693,11 +3708,11 @@ yyparse (void) else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3697 "util/configparser.c" /* yacc.c:1646 */ +#line 3712 "util/configparser.c" /* yacc.c:1646 */ break; case 313: -#line 1243 "./util/configparser.y" /* yacc.c:1646 */ +#line 1244 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3705,11 +3720,11 @@ yyparse (void) else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3709 "util/configparser.c" /* yacc.c:1646 */ +#line 3724 "util/configparser.c" /* yacc.c:1646 */ break; case 314: -#line 1252 "./util/configparser.y" /* yacc.c:1646 */ +#line 1253 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3717,21 +3732,21 @@ yyparse (void) else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3721 "util/configparser.c" /* yacc.c:1646 */ +#line 3736 "util/configparser.c" /* yacc.c:1646 */ break; case 315: -#line 1261 "./util/configparser.y" /* yacc.c:1646 */ +#line 1262 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3731 "util/configparser.c" /* yacc.c:1646 */ +#line 3746 "util/configparser.c" /* yacc.c:1646 */ break; case 316: -#line 1268 "./util/configparser.y" /* yacc.c:1646 */ +#line 1269 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3740,11 +3755,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3744 "util/configparser.c" /* yacc.c:1646 */ +#line 3759 "util/configparser.c" /* yacc.c:1646 */ break; case 317: -#line 1278 "./util/configparser.y" /* yacc.c:1646 */ +#line 1279 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && @@ -3760,21 +3775,21 @@ yyparse (void) fatal_exit("out of memory adding acl"); } } -#line 3764 "util/configparser.c" /* yacc.c:1646 */ +#line 3779 "util/configparser.c" /* yacc.c:1646 */ break; case 318: -#line 1295 "./util/configparser.y" /* yacc.c:1646 */ +#line 1296 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 3774 "util/configparser.c" /* yacc.c:1646 */ +#line 3789 "util/configparser.c" /* yacc.c:1646 */ break; case 319: -#line 1302 "./util/configparser.y" /* yacc.c:1646 */ +#line 1303 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -3791,11 +3806,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 3795 "util/configparser.c" /* yacc.c:1646 */ +#line 3810 "util/configparser.c" /* yacc.c:1646 */ break; case 320: -#line 1320 "./util/configparser.y" /* yacc.c:1646 */ +#line 1321 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -3807,11 +3822,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 3811 "util/configparser.c" /* yacc.c:1646 */ +#line 3826 "util/configparser.c" /* yacc.c:1646 */ break; case 321: -#line 1333 "./util/configparser.y" /* yacc.c:1646 */ +#line 1334 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -3823,11 +3838,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 3827 "util/configparser.c" /* yacc.c:1646 */ +#line 3842 "util/configparser.c" /* yacc.c:1646 */ break; case 322: -#line 1346 "./util/configparser.y" /* yacc.c:1646 */ +#line 1347 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3835,11 +3850,11 @@ yyparse (void) else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3839 "util/configparser.c" /* yacc.c:1646 */ +#line 3854 "util/configparser.c" /* yacc.c:1646 */ break; case 323: -#line 1355 "./util/configparser.y" /* yacc.c:1646 */ +#line 1356 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3847,11 +3862,11 @@ yyparse (void) else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3851 "util/configparser.c" /* yacc.c:1646 */ +#line 3866 "util/configparser.c" /* yacc.c:1646 */ break; case 324: -#line 1364 "./util/configparser.y" /* yacc.c:1646 */ +#line 1365 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3859,11 +3874,11 @@ yyparse (void) else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3863 "util/configparser.c" /* yacc.c:1646 */ +#line 3878 "util/configparser.c" /* yacc.c:1646 */ break; case 325: -#line 1373 "./util/configparser.y" /* yacc.c:1646 */ +#line 1374 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3871,11 +3886,11 @@ yyparse (void) else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3875 "util/configparser.c" /* yacc.c:1646 */ +#line 3890 "util/configparser.c" /* yacc.c:1646 */ break; case 326: -#line 1382 "./util/configparser.y" /* yacc.c:1646 */ +#line 1383 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3884,11 +3899,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3888 "util/configparser.c" /* yacc.c:1646 */ +#line 3903 "util/configparser.c" /* yacc.c:1646 */ break; case 327: -#line 1392 "./util/configparser.y" /* yacc.c:1646 */ +#line 1393 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3897,11 +3912,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3901 "util/configparser.c" /* yacc.c:1646 */ +#line 3916 "util/configparser.c" /* yacc.c:1646 */ break; case 328: -#line 1402 "./util/configparser.y" /* yacc.c:1646 */ +#line 1403 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3911,11 +3926,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3915 "util/configparser.c" /* yacc.c:1646 */ +#line 3930 "util/configparser.c" /* yacc.c:1646 */ break; case 329: -#line 1413 "./util/configparser.y" /* yacc.c:1646 */ +#line 1414 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3923,11 +3938,11 @@ yyparse (void) else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3927 "util/configparser.c" /* yacc.c:1646 */ +#line 3942 "util/configparser.c" /* yacc.c:1646 */ break; case 330: -#line 1422 "./util/configparser.y" /* yacc.c:1646 */ +#line 1423 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3935,11 +3950,11 @@ yyparse (void) else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3939 "util/configparser.c" /* yacc.c:1646 */ +#line 3954 "util/configparser.c" /* yacc.c:1646 */ break; case 331: -#line 1431 "./util/configparser.y" /* yacc.c:1646 */ +#line 1432 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3951,11 +3966,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 3955 "util/configparser.c" /* yacc.c:1646 */ +#line 3970 "util/configparser.c" /* yacc.c:1646 */ break; case 332: -#line 1444 "./util/configparser.y" /* yacc.c:1646 */ +#line 1445 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3967,11 +3982,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 3971 "util/configparser.c" /* yacc.c:1646 */ +#line 3986 "util/configparser.c" /* yacc.c:1646 */ break; case 333: -#line 1457 "./util/configparser.y" /* yacc.c:1646 */ +#line 1458 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3979,21 +3994,21 @@ yyparse (void) else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3983 "util/configparser.c" /* yacc.c:1646 */ +#line 3998 "util/configparser.c" /* yacc.c:1646 */ break; case 334: -#line 1466 "./util/configparser.y" /* yacc.c:1646 */ +#line 1467 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 3993 "util/configparser.c" /* yacc.c:1646 */ +#line 4008 "util/configparser.c" /* yacc.c:1646 */ break; case 335: -#line 1473 "./util/configparser.y" /* yacc.c:1646 */ +#line 1474 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4001,11 +4016,11 @@ yyparse (void) else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4005 "util/configparser.c" /* yacc.c:1646 */ +#line 4020 "util/configparser.c" /* yacc.c:1646 */ break; case 336: -#line 1482 "./util/configparser.y" /* yacc.c:1646 */ +#line 1483 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4013,11 +4028,11 @@ yyparse (void) else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4017 "util/configparser.c" /* yacc.c:1646 */ +#line 4032 "util/configparser.c" /* yacc.c:1646 */ break; case 337: -#line 1491 "./util/configparser.y" /* yacc.c:1646 */ +#line 1492 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4025,11 +4040,11 @@ yyparse (void) else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4029 "util/configparser.c" /* yacc.c:1646 */ +#line 4044 "util/configparser.c" /* yacc.c:1646 */ break; case 338: -#line 1500 "./util/configparser.y" /* yacc.c:1646 */ +#line 1501 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4038,22 +4053,22 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4042 "util/configparser.c" /* yacc.c:1646 */ +#line 4057 "util/configparser.c" /* yacc.c:1646 */ break; case 339: -#line 1509 "./util/configparser.y" /* yacc.c:1646 */ +#line 1510 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4053 "util/configparser.c" /* yacc.c:1646 */ +#line 4068 "util/configparser.c" /* yacc.c:1646 */ break; case 340: -#line 1517 "./util/configparser.y" /* yacc.c:1646 */ +#line 1518 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4065,22 +4080,22 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4069 "util/configparser.c" /* yacc.c:1646 */ +#line 4084 "util/configparser.c" /* yacc.c:1646 */ break; case 341: -#line 1530 "./util/configparser.y" /* yacc.c:1646 */ +#line 1531 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4080 "util/configparser.c" /* yacc.c:1646 */ +#line 4095 "util/configparser.c" /* yacc.c:1646 */ break; case 342: -#line 1538 "./util/configparser.y" /* yacc.c:1646 */ +#line 1539 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -4108,21 +4123,21 @@ yyparse (void) fatal_exit("out of memory adding local-zone"); } } -#line 4112 "util/configparser.c" /* yacc.c:1646 */ +#line 4127 "util/configparser.c" /* yacc.c:1646 */ break; case 343: -#line 1567 "./util/configparser.y" /* yacc.c:1646 */ +#line 1568 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 4122 "util/configparser.c" /* yacc.c:1646 */ +#line 4137 "util/configparser.c" /* yacc.c:1646 */ break; case 344: -#line 1574 "./util/configparser.y" /* yacc.c:1646 */ +#line 1575 "./util/configparser.y" /* yacc.c:1646 */ { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -4136,11 +4151,11 @@ yyparse (void) yyerror("local-data-ptr could not be reversed"); } } -#line 4140 "util/configparser.c" /* yacc.c:1646 */ +#line 4155 "util/configparser.c" /* yacc.c:1646 */ break; case 345: -#line 1589 "./util/configparser.y" /* yacc.c:1646 */ +#line 1590 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4149,11 +4164,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4153 "util/configparser.c" /* yacc.c:1646 */ +#line 4168 "util/configparser.c" /* yacc.c:1646 */ break; case 346: -#line 1599 "./util/configparser.y" /* yacc.c:1646 */ +#line 1600 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4162,31 +4177,31 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4166 "util/configparser.c" /* yacc.c:1646 */ +#line 4181 "util/configparser.c" /* yacc.c:1646 */ break; case 347: -#line 1609 "./util/configparser.y" /* yacc.c:1646 */ +#line 1610 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4176 "util/configparser.c" /* yacc.c:1646 */ +#line 4191 "util/configparser.c" /* yacc.c:1646 */ break; case 348: -#line 1616 "./util/configparser.y" /* yacc.c:1646 */ +#line 1617 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 4186 "util/configparser.c" /* yacc.c:1646 */ +#line 4201 "util/configparser.c" /* yacc.c:1646 */ break; case 349: -#line 1623 "./util/configparser.y" /* yacc.c:1646 */ +#line 1624 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4194,11 +4209,11 @@ yyparse (void) else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4198 "util/configparser.c" /* yacc.c:1646 */ +#line 4213 "util/configparser.c" /* yacc.c:1646 */ break; case 350: -#line 1632 "./util/configparser.y" /* yacc.c:1646 */ +#line 1633 "./util/configparser.y" /* yacc.c:1646 */ { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -4211,11 +4226,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4215 "util/configparser.c" /* yacc.c:1646 */ +#line 4230 "util/configparser.c" /* yacc.c:1646 */ break; case 351: -#line 1646 "./util/configparser.y" /* yacc.c:1646 */ +#line 1647 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4233,11 +4248,11 @@ yyparse (void) } } } -#line 4237 "util/configparser.c" /* yacc.c:1646 */ +#line 4252 "util/configparser.c" /* yacc.c:1646 */ break; case 352: -#line 1665 "./util/configparser.y" /* yacc.c:1646 */ +#line 1666 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4255,11 +4270,11 @@ yyparse (void) } } } -#line 4259 "util/configparser.c" /* yacc.c:1646 */ +#line 4274 "util/configparser.c" /* yacc.c:1646 */ break; case 353: -#line 1684 "./util/configparser.y" /* yacc.c:1646 */ +#line 1685 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, @@ -4270,11 +4285,11 @@ yyparse (void) free((yyvsp[0].str)); } } -#line 4274 "util/configparser.c" /* yacc.c:1646 */ +#line 4289 "util/configparser.c" /* yacc.c:1646 */ break; case 354: -#line 1696 "./util/configparser.y" /* yacc.c:1646 */ +#line 1697 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, @@ -4285,11 +4300,11 @@ yyparse (void) free((yyvsp[0].str)); } } -#line 4289 "util/configparser.c" /* yacc.c:1646 */ +#line 4304 "util/configparser.c" /* yacc.c:1646 */ break; case 355: -#line 1708 "./util/configparser.y" /* yacc.c:1646 */ +#line 1709 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, @@ -4300,11 +4315,11 @@ yyparse (void) free((yyvsp[0].str)); } } -#line 4304 "util/configparser.c" /* yacc.c:1646 */ +#line 4319 "util/configparser.c" /* yacc.c:1646 */ break; case 356: -#line 1720 "./util/configparser.y" /* yacc.c:1646 */ +#line 1721 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, @@ -4314,11 +4329,11 @@ yyparse (void) free((yyvsp[0].str)); } } -#line 4318 "util/configparser.c" /* yacc.c:1646 */ +#line 4333 "util/configparser.c" /* yacc.c:1646 */ break; case 357: -#line 1731 "./util/configparser.y" /* yacc.c:1646 */ +#line 1732 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4336,11 +4351,11 @@ yyparse (void) } } } -#line 4340 "util/configparser.c" /* yacc.c:1646 */ +#line 4355 "util/configparser.c" /* yacc.c:1646 */ break; case 358: -#line 1750 "./util/configparser.y" /* yacc.c:1646 */ +#line 1751 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4348,11 +4363,11 @@ yyparse (void) else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4352 "util/configparser.c" /* yacc.c:1646 */ +#line 4367 "util/configparser.c" /* yacc.c:1646 */ break; case 359: -#line 1760 "./util/configparser.y" /* yacc.c:1646 */ +#line 1761 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4360,33 +4375,33 @@ yyparse (void) else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4364 "util/configparser.c" /* yacc.c:1646 */ +#line 4379 "util/configparser.c" /* yacc.c:1646 */ break; case 360: -#line 1769 "./util/configparser.y" /* yacc.c:1646 */ +#line 1770 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4375 "util/configparser.c" /* yacc.c:1646 */ +#line 4390 "util/configparser.c" /* yacc.c:1646 */ break; case 361: -#line 1777 "./util/configparser.y" /* yacc.c:1646 */ +#line 1778 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4386 "util/configparser.c" /* yacc.c:1646 */ +#line 4401 "util/configparser.c" /* yacc.c:1646 */ break; case 362: -#line 1785 "./util/configparser.y" /* yacc.c:1646 */ +#line 1786 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4398,11 +4413,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4402 "util/configparser.c" /* yacc.c:1646 */ +#line 4417 "util/configparser.c" /* yacc.c:1646 */ break; case 363: -#line 1798 "./util/configparser.y" /* yacc.c:1646 */ +#line 1799 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4414,11 +4429,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4418 "util/configparser.c" /* yacc.c:1646 */ +#line 4433 "util/configparser.c" /* yacc.c:1646 */ break; case 364: -#line 1811 "./util/configparser.y" /* yacc.c:1646 */ +#line 1812 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -4430,11 +4445,11 @@ yyparse (void) "ratelimit-for-domain"); } } -#line 4434 "util/configparser.c" /* yacc.c:1646 */ +#line 4449 "util/configparser.c" /* yacc.c:1646 */ break; case 365: -#line 1824 "./util/configparser.y" /* yacc.c:1646 */ +#line 1825 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -4446,11 +4461,11 @@ yyparse (void) "ratelimit-below-domain"); } } -#line 4450 "util/configparser.c" /* yacc.c:1646 */ +#line 4465 "util/configparser.c" /* yacc.c:1646 */ break; case 366: -#line 1837 "./util/configparser.y" /* yacc.c:1646 */ +#line 1838 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4458,11 +4473,11 @@ yyparse (void) else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4462 "util/configparser.c" /* yacc.c:1646 */ +#line 4477 "util/configparser.c" /* yacc.c:1646 */ break; case 367: -#line 1846 "./util/configparser.y" /* yacc.c:1646 */ +#line 1847 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4470,11 +4485,11 @@ yyparse (void) else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4474 "util/configparser.c" /* yacc.c:1646 */ +#line 4489 "util/configparser.c" /* yacc.c:1646 */ break; case 368: -#line 1855 "./util/configparser.y" /* yacc.c:1646 */ +#line 1856 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4483,11 +4498,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4487 "util/configparser.c" /* yacc.c:1646 */ +#line 4502 "util/configparser.c" /* yacc.c:1646 */ break; case 369: -#line 1865 "./util/configparser.y" /* yacc.c:1646 */ +#line 1866 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4496,11 +4511,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4500 "util/configparser.c" /* yacc.c:1646 */ +#line 4515 "util/configparser.c" /* yacc.c:1646 */ break; case 370: -#line 1875 "./util/configparser.y" /* yacc.c:1646 */ +#line 1876 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -4512,11 +4527,11 @@ yyparse (void) OUTYY(("P(Compiled without IPsec module, ignoring)\n")); #endif } -#line 4516 "util/configparser.c" /* yacc.c:1646 */ +#line 4531 "util/configparser.c" /* yacc.c:1646 */ break; case 371: -#line 1888 "./util/configparser.y" /* yacc.c:1646 */ +#line 1889 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -4528,11 +4543,11 @@ yyparse (void) OUTYY(("P(Compiled without IPsec module, ignoring)\n")); #endif } -#line 4532 "util/configparser.c" /* yacc.c:1646 */ +#line 4547 "util/configparser.c" /* yacc.c:1646 */ break; case 372: -#line 1901 "./util/configparser.y" /* yacc.c:1646 */ +#line 1902 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -4542,11 +4557,11 @@ yyparse (void) OUTYY(("P(Compiled without IPsec module, ignoring)\n")); #endif } -#line 4546 "util/configparser.c" /* yacc.c:1646 */ +#line 4561 "util/configparser.c" /* yacc.c:1646 */ break; case 373: -#line 1912 "./util/configparser.y" /* yacc.c:1646 */ +#line 1913 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -4558,11 +4573,11 @@ yyparse (void) OUTYY(("P(Compiled without IPsec module, ignoring)\n")); #endif } -#line 4562 "util/configparser.c" /* yacc.c:1646 */ +#line 4577 "util/configparser.c" /* yacc.c:1646 */ break; case 374: -#line 1925 "./util/configparser.y" /* yacc.c:1646 */ +#line 1926 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -4572,11 +4587,11 @@ yyparse (void) OUTYY(("P(Compiled without IPsec module, ignoring)\n")); #endif } -#line 4576 "util/configparser.c" /* yacc.c:1646 */ +#line 4591 "util/configparser.c" /* yacc.c:1646 */ break; case 375: -#line 1936 "./util/configparser.y" /* yacc.c:1646 */ +#line 1937 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -4588,11 +4603,11 @@ yyparse (void) OUTYY(("P(Compiled without IPsec module, ignoring)\n")); #endif } -#line 4592 "util/configparser.c" /* yacc.c:1646 */ +#line 4607 "util/configparser.c" /* yacc.c:1646 */ break; case 376: -#line 1949 "./util/configparser.y" /* yacc.c:1646 */ +#line 1950 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -4601,31 +4616,31 @@ yyparse (void) free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 4605 "util/configparser.c" /* yacc.c:1646 */ +#line 4620 "util/configparser.c" /* yacc.c:1646 */ break; case 377: -#line 1959 "./util/configparser.y" /* yacc.c:1646 */ +#line 1960 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4615 "util/configparser.c" /* yacc.c:1646 */ +#line 4630 "util/configparser.c" /* yacc.c:1646 */ break; case 378: -#line 1966 "./util/configparser.y" /* yacc.c:1646 */ +#line 1967 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4625 "util/configparser.c" /* yacc.c:1646 */ +#line 4640 "util/configparser.c" /* yacc.c:1646 */ break; case 379: -#line 1973 "./util/configparser.y" /* yacc.c:1646 */ +#line 1974 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4633,11 +4648,11 @@ yyparse (void) else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4637 "util/configparser.c" /* yacc.c:1646 */ +#line 4652 "util/configparser.c" /* yacc.c:1646 */ break; case 380: -#line 1982 "./util/configparser.y" /* yacc.c:1646 */ +#line 1983 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4646,11 +4661,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4650 "util/configparser.c" /* yacc.c:1646 */ +#line 4665 "util/configparser.c" /* yacc.c:1646 */ break; case 381: -#line 1992 "./util/configparser.y" /* yacc.c:1646 */ +#line 1993 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4659,11 +4674,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4663 "util/configparser.c" /* yacc.c:1646 */ +#line 4678 "util/configparser.c" /* yacc.c:1646 */ break; case 382: -#line 2002 "./util/configparser.y" /* yacc.c:1646 */ +#line 2003 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -4672,31 +4687,31 @@ yyparse (void) free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 4676 "util/configparser.c" /* yacc.c:1646 */ +#line 4691 "util/configparser.c" /* yacc.c:1646 */ break; case 383: -#line 2012 "./util/configparser.y" /* yacc.c:1646 */ +#line 2013 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4686 "util/configparser.c" /* yacc.c:1646 */ +#line 4701 "util/configparser.c" /* yacc.c:1646 */ break; case 384: -#line 2019 "./util/configparser.y" /* yacc.c:1646 */ +#line 2020 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4696 "util/configparser.c" /* yacc.c:1646 */ +#line 4711 "util/configparser.c" /* yacc.c:1646 */ break; case 385: -#line 2026 "./util/configparser.y" /* yacc.c:1646 */ +#line 2027 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4704,11 +4719,11 @@ yyparse (void) else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4708 "util/configparser.c" /* yacc.c:1646 */ +#line 4723 "util/configparser.c" /* yacc.c:1646 */ break; case 386: -#line 2035 "./util/configparser.y" /* yacc.c:1646 */ +#line 2036 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4717,11 +4732,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4721 "util/configparser.c" /* yacc.c:1646 */ +#line 4736 "util/configparser.c" /* yacc.c:1646 */ break; case 387: -#line 2045 "./util/configparser.y" /* yacc.c:1646 */ +#line 2046 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -4730,41 +4745,41 @@ yyparse (void) free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 4734 "util/configparser.c" /* yacc.c:1646 */ +#line 4749 "util/configparser.c" /* yacc.c:1646 */ break; case 388: -#line 2055 "./util/configparser.y" /* yacc.c:1646 */ +#line 2056 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 4744 "util/configparser.c" /* yacc.c:1646 */ +#line 4759 "util/configparser.c" /* yacc.c:1646 */ break; case 389: -#line 2062 "./util/configparser.y" /* yacc.c:1646 */ +#line 2063 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4754 "util/configparser.c" /* yacc.c:1646 */ +#line 4769 "util/configparser.c" /* yacc.c:1646 */ break; case 390: -#line 2069 "./util/configparser.y" /* yacc.c:1646 */ +#line 2070 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4764 "util/configparser.c" /* yacc.c:1646 */ +#line 4779 "util/configparser.c" /* yacc.c:1646 */ break; case 391: -#line 2076 "./util/configparser.y" /* yacc.c:1646 */ +#line 2077 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4773,11 +4788,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4777 "util/configparser.c" /* yacc.c:1646 */ +#line 4792 "util/configparser.c" /* yacc.c:1646 */ break; case 392: -#line 2086 "./util/configparser.y" /* yacc.c:1646 */ +#line 2087 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4786,11 +4801,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4790 "util/configparser.c" /* yacc.c:1646 */ +#line 4805 "util/configparser.c" /* yacc.c:1646 */ break; case 393: -#line 2096 "./util/configparser.y" /* yacc.c:1646 */ +#line 2097 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4799,11 +4814,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4803 "util/configparser.c" /* yacc.c:1646 */ +#line 4818 "util/configparser.c" /* yacc.c:1646 */ break; case 394: -#line 2106 "./util/configparser.y" /* yacc.c:1646 */ +#line 2107 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -4812,11 +4827,11 @@ yyparse (void) free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 4816 "util/configparser.c" /* yacc.c:1646 */ +#line 4831 "util/configparser.c" /* yacc.c:1646 */ break; case 395: -#line 2116 "./util/configparser.y" /* yacc.c:1646 */ +#line 2117 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -4845,11 +4860,11 @@ yyparse (void) fatal_exit("out of memory adding local-zone"); } } -#line 4849 "util/configparser.c" /* yacc.c:1646 */ +#line 4864 "util/configparser.c" /* yacc.c:1646 */ break; case 396: -#line 2146 "./util/configparser.y" /* yacc.c:1646 */ +#line 2147 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -4858,22 +4873,22 @@ yyparse (void) fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 4862 "util/configparser.c" /* yacc.c:1646 */ +#line 4877 "util/configparser.c" /* yacc.c:1646 */ break; case 397: -#line 2156 "./util/configparser.y" /* yacc.c:1646 */ +#line 2157 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 4873 "util/configparser.c" /* yacc.c:1646 */ +#line 4888 "util/configparser.c" /* yacc.c:1646 */ break; case 398: -#line 2164 "./util/configparser.y" /* yacc.c:1646 */ +#line 2165 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { @@ -4881,11 +4896,11 @@ yyparse (void) free((yyvsp[0].str)); } } -#line 4885 "util/configparser.c" /* yacc.c:1646 */ +#line 4900 "util/configparser.c" /* yacc.c:1646 */ break; case 399: -#line 2173 "./util/configparser.y" /* yacc.c:1646 */ +#line 2174 "./util/configparser.y" /* yacc.c:1646 */ { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -4899,11 +4914,11 @@ yyparse (void) yyerror("local-data-ptr could not be reversed"); } } -#line 4903 "util/configparser.c" /* yacc.c:1646 */ +#line 4918 "util/configparser.c" /* yacc.c:1646 */ break; case 400: -#line 2188 "./util/configparser.y" /* yacc.c:1646 */ +#line 2189 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4911,19 +4926,19 @@ yyparse (void) else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4915 "util/configparser.c" /* yacc.c:1646 */ +#line 4930 "util/configparser.c" /* yacc.c:1646 */ break; case 401: -#line 2197 "./util/configparser.y" /* yacc.c:1646 */ +#line 2198 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(remote-control:)\n")); } -#line 4923 "util/configparser.c" /* yacc.c:1646 */ +#line 4938 "util/configparser.c" /* yacc.c:1646 */ break; case 412: -#line 2208 "./util/configparser.y" /* yacc.c:1646 */ +#line 2209 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4932,11 +4947,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4936 "util/configparser.c" /* yacc.c:1646 */ +#line 4951 "util/configparser.c" /* yacc.c:1646 */ break; case 413: -#line 2218 "./util/configparser.y" /* yacc.c:1646 */ +#line 2219 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4944,21 +4959,21 @@ yyparse (void) else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4948 "util/configparser.c" /* yacc.c:1646 */ +#line 4963 "util/configparser.c" /* yacc.c:1646 */ break; case 414: -#line 2227 "./util/configparser.y" /* yacc.c:1646 */ +#line 2228 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4958 "util/configparser.c" /* yacc.c:1646 */ +#line 4973 "util/configparser.c" /* yacc.c:1646 */ break; case 415: -#line 2234 "./util/configparser.y" /* yacc.c:1646 */ +#line 2235 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4967,122 +4982,122 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4971 "util/configparser.c" /* yacc.c:1646 */ +#line 4986 "util/configparser.c" /* yacc.c:1646 */ break; case 416: -#line 2244 "./util/configparser.y" /* yacc.c:1646 */ +#line 2245 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 4981 "util/configparser.c" /* yacc.c:1646 */ +#line 4996 "util/configparser.c" /* yacc.c:1646 */ break; case 417: -#line 2251 "./util/configparser.y" /* yacc.c:1646 */ +#line 2252 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 4991 "util/configparser.c" /* yacc.c:1646 */ +#line 5006 "util/configparser.c" /* yacc.c:1646 */ break; case 418: -#line 2258 "./util/configparser.y" /* yacc.c:1646 */ +#line 2259 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 5001 "util/configparser.c" /* yacc.c:1646 */ +#line 5016 "util/configparser.c" /* yacc.c:1646 */ break; case 419: -#line 2265 "./util/configparser.y" /* yacc.c:1646 */ +#line 2266 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 5011 "util/configparser.c" /* yacc.c:1646 */ +#line 5026 "util/configparser.c" /* yacc.c:1646 */ break; case 420: -#line 2272 "./util/configparser.y" /* yacc.c:1646 */ +#line 2273 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dnstap:)\n")); } -#line 5019 "util/configparser.c" /* yacc.c:1646 */ +#line 5034 "util/configparser.c" /* yacc.c:1646 */ break; case 435: -#line 2289 "./util/configparser.y" /* yacc.c:1646 */ +#line 2290 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); } -#line 5030 "util/configparser.c" /* yacc.c:1646 */ +#line 5045 "util/configparser.c" /* yacc.c:1646 */ break; case 436: -#line 2297 "./util/configparser.y" /* yacc.c:1646 */ +#line 2298 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 5040 "util/configparser.c" /* yacc.c:1646 */ +#line 5055 "util/configparser.c" /* yacc.c:1646 */ break; case 437: -#line 2304 "./util/configparser.y" /* yacc.c:1646 */ +#line 2305 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); } -#line 5051 "util/configparser.c" /* yacc.c:1646 */ +#line 5066 "util/configparser.c" /* yacc.c:1646 */ break; case 438: -#line 2312 "./util/configparser.y" /* yacc.c:1646 */ +#line 2313 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); } -#line 5062 "util/configparser.c" /* yacc.c:1646 */ +#line 5077 "util/configparser.c" /* yacc.c:1646 */ break; case 439: -#line 2320 "./util/configparser.y" /* yacc.c:1646 */ +#line 2321 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 5072 "util/configparser.c" /* yacc.c:1646 */ +#line 5087 "util/configparser.c" /* yacc.c:1646 */ break; case 440: -#line 2327 "./util/configparser.y" /* yacc.c:1646 */ +#line 2328 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 5082 "util/configparser.c" /* yacc.c:1646 */ +#line 5097 "util/configparser.c" /* yacc.c:1646 */ break; case 441: -#line 2334 "./util/configparser.y" /* yacc.c:1646 */ +#line 2335 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5090,11 +5105,11 @@ yyparse (void) else cfg_parser->cfg->dnstap_log_resolver_query_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 5094 "util/configparser.c" /* yacc.c:1646 */ +#line 5109 "util/configparser.c" /* yacc.c:1646 */ break; case 442: -#line 2343 "./util/configparser.y" /* yacc.c:1646 */ +#line 2344 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5102,11 +5117,11 @@ yyparse (void) else cfg_parser->cfg->dnstap_log_resolver_response_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 5106 "util/configparser.c" /* yacc.c:1646 */ +#line 5121 "util/configparser.c" /* yacc.c:1646 */ break; case 443: -#line 2352 "./util/configparser.y" /* yacc.c:1646 */ +#line 2353 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5114,11 +5129,11 @@ yyparse (void) else cfg_parser->cfg->dnstap_log_client_query_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 5118 "util/configparser.c" /* yacc.c:1646 */ +#line 5133 "util/configparser.c" /* yacc.c:1646 */ break; case 444: -#line 2361 "./util/configparser.y" /* yacc.c:1646 */ +#line 2362 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5126,11 +5141,11 @@ yyparse (void) else cfg_parser->cfg->dnstap_log_client_response_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 5130 "util/configparser.c" /* yacc.c:1646 */ +#line 5145 "util/configparser.c" /* yacc.c:1646 */ break; case 445: -#line 2370 "./util/configparser.y" /* yacc.c:1646 */ +#line 2371 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5138,11 +5153,11 @@ yyparse (void) else cfg_parser->cfg->dnstap_log_forwarder_query_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 5142 "util/configparser.c" /* yacc.c:1646 */ +#line 5157 "util/configparser.c" /* yacc.c:1646 */ break; case 446: -#line 2379 "./util/configparser.y" /* yacc.c:1646 */ +#line 2380 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5150,29 +5165,29 @@ yyparse (void) else cfg_parser->cfg->dnstap_log_forwarder_response_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 5154 "util/configparser.c" /* yacc.c:1646 */ +#line 5169 "util/configparser.c" /* yacc.c:1646 */ break; case 447: -#line 2388 "./util/configparser.y" /* yacc.c:1646 */ +#line 2389 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(python:)\n")); } -#line 5162 "util/configparser.c" /* yacc.c:1646 */ +#line 5177 "util/configparser.c" /* yacc.c:1646 */ break; case 451: -#line 2397 "./util/configparser.y" /* yacc.c:1646 */ +#line 2398 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->python_script); cfg_parser->cfg->python_script = (yyvsp[0].str); } -#line 5172 "util/configparser.c" /* yacc.c:1646 */ +#line 5187 "util/configparser.c" /* yacc.c:1646 */ break; case 452: -#line 2403 "./util/configparser.y" /* yacc.c:1646 */ +#line 2404 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5181,21 +5196,21 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5185 "util/configparser.c" /* yacc.c:1646 */ +#line 5200 "util/configparser.c" /* yacc.c:1646 */ break; case 453: -#line 2413 "./util/configparser.y" /* yacc.c:1646 */ +#line 2414 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 5195 "util/configparser.c" /* yacc.c:1646 */ +#line 5210 "util/configparser.c" /* yacc.c:1646 */ break; case 454: -#line 2420 "./util/configparser.y" /* yacc.c:1646 */ +#line 2421 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5203,31 +5218,31 @@ yyparse (void) (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 5207 "util/configparser.c" /* yacc.c:1646 */ +#line 5222 "util/configparser.c" /* yacc.c:1646 */ break; case 455: -#line 2429 "./util/configparser.y" /* yacc.c:1646 */ +#line 2430 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 5218 "util/configparser.c" /* yacc.c:1646 */ +#line 5233 "util/configparser.c" /* yacc.c:1646 */ break; case 456: -#line 2437 "./util/configparser.y" /* yacc.c:1646 */ +#line 2438 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dnscrypt:)\n")); OUTYY(("\nP(dnscrypt:)\n")); } -#line 5227 "util/configparser.c" /* yacc.c:1646 */ +#line 5242 "util/configparser.c" /* yacc.c:1646 */ break; case 469: -#line 2454 "./util/configparser.y" /* yacc.c:1646 */ +#line 2455 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5235,11 +5250,11 @@ yyparse (void) else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5239 "util/configparser.c" /* yacc.c:1646 */ +#line 5254 "util/configparser.c" /* yacc.c:1646 */ break; case 470: -#line 2464 "./util/configparser.y" /* yacc.c:1646 */ +#line 2465 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); @@ -5248,21 +5263,21 @@ yyparse (void) else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5252 "util/configparser.c" /* yacc.c:1646 */ +#line 5267 "util/configparser.c" /* yacc.c:1646 */ break; case 471: -#line 2474 "./util/configparser.y" /* yacc.c:1646 */ +#line 2475 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 5262 "util/configparser.c" /* yacc.c:1646 */ +#line 5277 "util/configparser.c" /* yacc.c:1646 */ break; case 472: -#line 2481 "./util/configparser.y" /* yacc.c:1646 */ +#line 2482 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) @@ -5270,21 +5285,21 @@ yyparse (void) if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 5274 "util/configparser.c" /* yacc.c:1646 */ +#line 5289 "util/configparser.c" /* yacc.c:1646 */ break; case 473: -#line 2490 "./util/configparser.y" /* yacc.c:1646 */ +#line 2491 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 5284 "util/configparser.c" /* yacc.c:1646 */ +#line 5299 "util/configparser.c" /* yacc.c:1646 */ break; case 474: -#line 2497 "./util/configparser.y" /* yacc.c:1646 */ +#line 2498 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) @@ -5292,22 +5307,22 @@ yyparse (void) if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 5296 "util/configparser.c" /* yacc.c:1646 */ +#line 5311 "util/configparser.c" /* yacc.c:1646 */ break; case 475: -#line 2506 "./util/configparser.y" /* yacc.c:1646 */ +#line 2507 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5307 "util/configparser.c" /* yacc.c:1646 */ +#line 5322 "util/configparser.c" /* yacc.c:1646 */ break; case 476: -#line 2514 "./util/configparser.y" /* yacc.c:1646 */ +#line 2515 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5319,22 +5334,22 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 5323 "util/configparser.c" /* yacc.c:1646 */ +#line 5338 "util/configparser.c" /* yacc.c:1646 */ break; case 477: -#line 2527 "./util/configparser.y" /* yacc.c:1646 */ +#line 2528 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5334 "util/configparser.c" /* yacc.c:1646 */ +#line 5349 "util/configparser.c" /* yacc.c:1646 */ break; case 478: -#line 2535 "./util/configparser.y" /* yacc.c:1646 */ +#line 2536 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5346,19 +5361,19 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 5350 "util/configparser.c" /* yacc.c:1646 */ +#line 5365 "util/configparser.c" /* yacc.c:1646 */ break; case 479: -#line 2548 "./util/configparser.y" /* yacc.c:1646 */ +#line 2549 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(cachedb:)\n")); } -#line 5358 "util/configparser.c" /* yacc.c:1646 */ +#line 5373 "util/configparser.c" /* yacc.c:1646 */ break; - case 484: -#line 2557 "./util/configparser.y" /* yacc.c:1646 */ + case 487: +#line 2559 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -5371,11 +5386,11 @@ yyparse (void) OUTYY(("P(Compiled without cachedb, ignoring)\n")); #endif } -#line 5375 "util/configparser.c" /* yacc.c:1646 */ +#line 5390 "util/configparser.c" /* yacc.c:1646 */ break; - case 485: -#line 2571 "./util/configparser.y" /* yacc.c:1646 */ + case 488: +#line 2573 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -5389,11 +5404,60 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5393 "util/configparser.c" /* yacc.c:1646 */ +#line 5408 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 489: +#line 2588 "./util/configparser.y" /* yacc.c:1646 */ + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); + free(cfg_parser->cfg->redis_server_host); + cfg_parser->cfg->redis_server_host = (yyvsp[0].str); + #else + OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); + free((yyvsp[0].str)); + #endif + } +#line 5423 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 490: +#line 2600 "./util/configparser.y" /* yacc.c:1646 */ + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + int port; + OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str))); + port = atoi((yyvsp[0].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)); + } +#line 5441 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 491: +#line 2615 "./util/configparser.y" /* yacc.c:1646 */ + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) + yyerror("redis timeout value expected"); + else cfg_parser->cfg->redis_timeout = atoi((yyvsp[0].str)); + #else + OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); + #endif + free((yyvsp[0].str)); + } +#line 5457 "util/configparser.c" /* yacc.c:1646 */ break; -#line 5397 "util/configparser.c" /* yacc.c:1646 */ +#line 5461 "util/configparser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -5621,7 +5685,7 @@ yyparse (void) #endif return yyresult; } -#line 2585 "./util/configparser.y" /* yacc.c:1906 */ +#line 2627 "./util/configparser.y" /* yacc.c:1906 */ /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 4960fe30c..719998770 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -268,14 +268,17 @@ extern int yydebug; VAR_CACHEDB = 478, VAR_CACHEDB_BACKEND = 479, VAR_CACHEDB_SECRETSEED = 480, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 481, - VAR_FOR_UPSTREAM = 482, - VAR_AUTH_ZONE = 483, - VAR_ZONEFILE = 484, - VAR_MASTER = 485, - VAR_URL = 486, - VAR_FOR_DOWNSTREAM = 487, - VAR_FALLBACK_ENABLED = 488 + VAR_CACHEDB_REDISHOST = 481, + VAR_CACHEDB_REDISPORT = 482, + VAR_CACHEDB_REDISTIMEOUT = 483, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 484, + VAR_FOR_UPSTREAM = 485, + VAR_AUTH_ZONE = 486, + VAR_ZONEFILE = 487, + VAR_MASTER = 488, + VAR_URL = 489, + VAR_FOR_DOWNSTREAM = 490, + VAR_FALLBACK_ENABLED = 491 }; #endif /* Tokens. */ @@ -502,14 +505,17 @@ extern int yydebug; #define VAR_CACHEDB 478 #define VAR_CACHEDB_BACKEND 479 #define VAR_CACHEDB_SECRETSEED 480 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 481 -#define VAR_FOR_UPSTREAM 482 -#define VAR_AUTH_ZONE 483 -#define VAR_ZONEFILE 484 -#define VAR_MASTER 485 -#define VAR_URL 486 -#define VAR_FOR_DOWNSTREAM 487 -#define VAR_FALLBACK_ENABLED 488 +#define VAR_CACHEDB_REDISHOST 481 +#define VAR_CACHEDB_REDISPORT 482 +#define VAR_CACHEDB_REDISTIMEOUT 483 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 484 +#define VAR_FOR_UPSTREAM 485 +#define VAR_AUTH_ZONE 486 +#define VAR_ZONEFILE 487 +#define VAR_MASTER 488 +#define VAR_URL 489 +#define VAR_FOR_DOWNSTREAM 490 +#define VAR_FALLBACK_ENABLED 491 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -520,7 +526,7 @@ union YYSTYPE char* str; -#line 524 "util/configparser.h" /* yacc.c:1909 */ +#line 530 "util/configparser.h" /* yacc.c:1909 */ }; typedef union YYSTYPE YYSTYPE; From cdfd558a9ca2bce0153fd89afeb2c458ef9a2090 Mon Sep 17 00:00:00 2001 From: JINMEI Tatuya Date: Wed, 7 Mar 2018 19:09:33 -0800 Subject: [PATCH 4/8] regenerated configure script --- configure | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 86 insertions(+), 6 deletions(-) diff --git a/configure b/configure index 1fbe38b00..6dc4512eb 100755 --- a/configure +++ b/configure @@ -796,6 +796,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -863,6 +864,7 @@ enable_tfo_client enable_tfo_server with_libevent with_libexpat +with_libhiredis enable_static_exe enable_systemd enable_lock_checks @@ -935,6 +937,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1187,6 +1190,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1324,7 +1336,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1477,6 +1489,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1606,6 +1619,7 @@ Optional Packages: an explicit path). Slower, but allows use of large outgoing port ranges. --with-libexpat=path specify explicit path for libexpat. + --with-libhiredis=path specify explicit path for libhiredis. --with-dnstap-socket-path=pathname set default dnstap socket path --with-protobuf-c=path Path where protobuf-c is installed, for dnstap @@ -15375,7 +15389,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15421,7 +15435,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15445,7 +15459,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15490,7 +15504,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15514,7 +15528,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -18682,6 +18696,72 @@ cat >>confdefs.h <<_ACEOF _ACEOF +# hiredis (redis C client for cachedb) + +# Check whether --with-libhiredis was given. +if test "${with_libhiredis+set}" = set; then : + withval=$with_libhiredis; +else + withval="no" +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libhiredis" >&5 +$as_echo_n "checking for libhiredis... " >&6; } +found_libhiredis="no" +if test x_$withval = x_yes -o x_$withval != x_no; then + if test x_$withval = x_ -o x_$withval = x_yes; then + withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" + fi + for dir in $withval ; do + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dir" >&5 +$as_echo "$dir" >&6; } + if test -f "$dir/include/hiredis/hiredis.h"; then + found_libhiredis="yes" + if test "$dir" != "/usr"; then + CPPFLAGS="$CPPFLAGS -I$dir/include" + LDFLAGS="$LDFLAGS -L$dir/lib" + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: found in $dir" >&5 +$as_echo "found in $dir" >&6; } + +$as_echo "#define USE_REDIS 1" >>confdefs.h + + LIBS="$LIBS -lhiredis" + break; + fi + done + if test x_$found_libhiredis != x_yes; then + as_fn_error $? "Could not find libhiredis, hiredis.h" "$LINENO" 5 + fi + for ac_header in hiredis/hiredis.h +do : + ac_fn_c_check_header_compile "$LINENO" "hiredis/hiredis.h" "ac_cv_header_hiredis_hiredis_h" "$ac_includes_default +" +if test "x$ac_cv_header_hiredis_hiredis_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_HIREDIS_HIREDIS_H 1 +_ACEOF + +fi + +done + + ac_fn_c_check_decl "$LINENO" "redisConnect" "ac_cv_have_decl_redisConnect" "$ac_includes_default + #include + +" +if test "x$ac_cv_have_decl_redisConnect" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_REDISCONNECT $ac_have_decl +_ACEOF + +fi + # set static linking if requested staticexe="" From f36bd7e707875088fbea05a9098112cad2c94b6c Mon Sep 17 00:00:00 2001 From: JINMEI Tatuya Date: Thu, 8 Mar 2018 12:51:41 -0800 Subject: [PATCH 5/8] check sys/endian.h and include it in cachedb if it exists this is necessary for BSDs and OSX to build cachedb.c. --- cachedb/cachedb.c | 8 ++++++++ config.h.in | 3 +++ configure.ac | 2 +- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/cachedb/cachedb.c b/cachedb/cachedb.c index 107efa5e0..cb12efb2e 100644 --- a/cachedb/cachedb.c +++ b/cachedb/cachedb.c @@ -57,6 +57,14 @@ #include "sldns/wire2str.h" #include "sldns/sbuffer.h" +/* header file for htobe64 */ +#ifdef HAVE_ENDIAN_H +# include +#endif +#ifdef HAVE_SYS_ENDIAN_H +# include +#endif + #ifdef USE_REDIS #include "hiredis/hiredis.h" #endif diff --git a/config.h.in b/config.h.in index cd40741b9..af98176d4 100644 --- a/config.h.in +++ b/config.h.in @@ -132,6 +132,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_ENDIAN_H +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_ENDIAN_H + /* Define to 1 if you have the `endprotoent' function. */ #undef HAVE_ENDPROTOENT diff --git a/configure.ac b/configure.ac index 5231543f6..1b83228e8 100644 --- a/configure.ac +++ b/configure.ac @@ -331,7 +331,7 @@ AC_CHECK_TOOL(STRIP, strip) ACX_LIBTOOL_C_ONLY # Checks for header files. -AC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/ipc.h sys/shm.h],,, [AC_INCLUDES_DEFAULT]) +AC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h sys/ipc.h sys/shm.h],,, [AC_INCLUDES_DEFAULT]) # check for types. # Using own tests for int64* because autoconf builtin only give 32bit. From 4ff0148c24d6ebe8ca6a589acffd06f40d5315aa Mon Sep 17 00:00:00 2001 From: JINMEI Tatuya Date: Thu, 8 Mar 2018 12:52:18 -0800 Subject: [PATCH 6/8] regenerate configure script --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 6dc4512eb..56a69cdd4 100755 --- a/configure +++ b/configure @@ -14487,7 +14487,7 @@ CC=$lt_save_CC # Checks for header files. -for ac_header in stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/ipc.h sys/shm.h +for ac_header in stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h sys/ipc.h sys/shm.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default From 427795e58565bc4be54950bc3a6a0562b39eb808 Mon Sep 17 00:00:00 2001 From: JINMEI Tatuya Date: Thu, 8 Mar 2018 14:29:28 -0800 Subject: [PATCH 7/8] include libkern/OSByteOrder.h when available this is necessary to bulid cachedb on MacOS X (the previous fix wasn't enough). --- cachedb/cachedb.c | 7 +++++++ config.h.in | 4 ++++ configure.ac | 2 +- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/cachedb/cachedb.c b/cachedb/cachedb.c index cb12efb2e..da36801aa 100644 --- a/cachedb/cachedb.c +++ b/cachedb/cachedb.c @@ -64,6 +64,13 @@ #ifdef HAVE_SYS_ENDIAN_H # include #endif +#ifdef HAVE_LIBKERN_OSBYTEORDER_H +/* In practice this is specific to MacOS X. We assume it doesn't have +* htobe64/be64toh but has alternatives with a different name. */ +# include +# define htobe64(x) OSSwapHostToBigInt64(x) +# define be64toh(x) OSSwapBigToHostInt64(x) +#endif #ifdef USE_REDIS #include "hiredis/hiredis.h" diff --git a/config.h.in b/config.h.in index af98176d4..dfffe5c07 100644 --- a/config.h.in +++ b/config.h.in @@ -135,6 +135,10 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_ENDIAN_H +/* Define to 1 if you have the header file, which is + * in effect MacOS X specific. */ +#undef HAVE_LIBKERN_OSBYTEORDER_H + /* Define to 1 if you have the `endprotoent' function. */ #undef HAVE_ENDPROTOENT diff --git a/configure.ac b/configure.ac index 1b83228e8..e30fad35c 100644 --- a/configure.ac +++ b/configure.ac @@ -331,7 +331,7 @@ AC_CHECK_TOOL(STRIP, strip) ACX_LIBTOOL_C_ONLY # Checks for header files. -AC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h sys/ipc.h sys/shm.h],,, [AC_INCLUDES_DEFAULT]) +AC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h],,, [AC_INCLUDES_DEFAULT]) # check for types. # Using own tests for int64* because autoconf builtin only give 32bit. From 111e2f83d6dcbe74e2ad75bb07f5a7734f64a517 Mon Sep 17 00:00:00 2001 From: JINMEI Tatuya Date: Thu, 8 Mar 2018 14:31:24 -0800 Subject: [PATCH 8/8] regenerate configure script --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 56a69cdd4..b7588b86b 100755 --- a/configure +++ b/configure @@ -14487,7 +14487,7 @@ CC=$lt_save_CC # Checks for header files. -for ac_header in stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h sys/ipc.h sys/shm.h +for ac_header in stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default