From df73be98bdd458682df5a5bb866e7fe5938657f8 Mon Sep 17 00:00:00 2001 From: Wouter Wijngaards Date: Tue, 6 Jan 2015 14:12:59 +0000 Subject: [PATCH] - patch for remote control over local sockets, from Dag-Erling Smorgrav, Ilya Bakulin. Use control-interface: /path/sock and control-use-cert: no. git-svn-id: file:///svn/unbound/trunk@3304 be551aaa-1e26-0410-a405-d3ace91eadb9 --- config.h.in | 6 + configure | 18 +- configure.ac | 8 +- daemon/remote.c | 118 +- daemon/remote.h | 2 + daemon/unbound.c | 37 +- doc/Changelog | 3 + doc/unbound.conf.5.in | 33 +- services/listen_dnsport.c | 59 + services/listen_dnsport.h | 9 + smallapp/unbound-checkconf.c | 2 +- smallapp/unbound-control.c | 85 +- util/config_file.c | 16 + util/config_file.h | 4 + util/configlexer.c | 2086 +++++++++++++++++----------------- util/configlexer.lex | 1 + util/configparser.c | 1191 +++++++++---------- util/configparser.h | 216 ++-- util/configparser.y | 13 +- util/net_help.c | 4 +- 20 files changed, 2091 insertions(+), 1820 deletions(-) diff --git a/config.h.in b/config.h.in index 1be23c388..1f06ee81d 100644 --- a/config.h.in +++ b/config.h.in @@ -353,6 +353,9 @@ /* Define to 1 if `ipi_spec_dst' is a member of `struct in_pktinfo'. */ #undef HAVE_STRUCT_IN_PKTINFO_IPI_SPEC_DST +/* Define to 1 if `sun_len' is a member of `struct sockaddr_un'. */ +#undef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN + /* Define if you have Swig libraries and header files. */ #undef HAVE_SWIG @@ -383,6 +386,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_UIO_H +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_UN_H + /* Define to 1 if you have the header file. */ #undef HAVE_SYS_WAIT_H diff --git a/configure b/configure index acfc7bc6b..6a9c1e982 100755 --- a/configure +++ b/configure @@ -13739,7 +13739,7 @@ CC="$lt_save_CC" # Checks for header files. -for ac_header in stdarg.h stdbool.h netinet/in.h sys/param.h sys/socket.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 +for ac_header in stdarg.h stdbool.h netinet/in.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 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 @@ -17844,6 +17844,22 @@ $as_echo "no" >&6; } fi +fi + +ac_fn_c_check_member "$LINENO" "struct sockaddr_un" "sun_len" "ac_cv_member_struct_sockaddr_un_sun_len" " +$ac_includes_default +#ifdef HAVE_SYS_UN_H +#include +#endif + +" +if test "x$ac_cv_member_struct_sockaddr_un_sun_len" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_SOCKADDR_UN_SUN_LEN 1 +_ACEOF + + fi ac_fn_c_check_member "$LINENO" "struct in_pktinfo" "ipi_spec_dst" "ac_cv_member_struct_in_pktinfo_ipi_spec_dst" " diff --git a/configure.ac b/configure.ac index d5818818c..cc59727e5 100644 --- a/configure.ac +++ b/configure.ac @@ -269,7 +269,7 @@ AC_CHECK_TOOL(STRIP, strip) ACX_LIBTOOL_C_ONLY # Checks for header files. -AC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.h sys/param.h sys/socket.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],,, [AC_INCLUDES_DEFAULT]) +AC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.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],,, [AC_INCLUDES_DEFAULT]) # check for types. # Using own tests for int64* because autoconf builtin only give 32bit. @@ -941,6 +941,12 @@ if test $ac_cv_func_daemon = yes; then ]) fi +AC_CHECK_MEMBERS([struct sockaddr_un.sun_len],,,[ +AC_INCLUDES_DEFAULT +#ifdef HAVE_SYS_UN_H +#include +#endif +]) AC_CHECK_MEMBERS([struct in_pktinfo.ipi_spec_dst],,,[ AC_INCLUDES_DEFAULT #if HAVE_SYS_PARAM_H diff --git a/daemon/remote.c b/daemon/remote.c index ff3d769d4..a1d2628a9 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -46,6 +46,10 @@ #ifdef HAVE_OPENSSL_ERR_H #include #endif +#ifndef HEADER_DH_H +#include +#endif + #include #include "daemon/remote.h" #include "daemon/worker.h" @@ -82,6 +86,9 @@ #ifdef HAVE_SYS_TYPES_H # include #endif +#ifdef HAVE_SYS_STAT_H +#include +#endif #ifdef HAVE_NETDB_H #include #endif @@ -131,6 +138,39 @@ timeval_divide(struct timeval* avg, const struct timeval* sum, size_t d) #endif } +/* + * The following function was generated using the openssl utility, using + * the command : "openssl dhparam -dsaparam -C 512" + */ +DH *get_dh512() +{ + static unsigned char dh512_p[]={ + 0xC9,0xD7,0x05,0xDA,0x5F,0xAB,0x14,0xE8,0x11,0x56,0x77,0x85, + 0xB1,0x24,0x2C,0x95,0x60,0xEA,0xE2,0x10,0x6F,0x0F,0x84,0xEC, + 0xF4,0x45,0xE8,0x90,0x7A,0xA7,0x03,0xFF,0x5B,0x88,0x53,0xDE, + 0xC4,0xDE,0xBC,0x42,0x78,0x71,0x23,0x7E,0x24,0xA5,0x5E,0x4E, + 0xEF,0x6F,0xFF,0x5F,0xAF,0xBE,0x8A,0x77,0x62,0xB4,0x65,0x82, + 0x7E,0xC9,0xED,0x2F, + }; + static unsigned char dh512_g[]={ + 0x8D,0x3A,0x52,0xBC,0x8A,0x71,0x94,0x33,0x2F,0xE1,0xE8,0x4C, + 0x73,0x47,0x03,0x4E,0x7D,0x40,0xE5,0x84,0xA0,0xB5,0x6D,0x10, + 0x6F,0x90,0x43,0x05,0x1A,0xF9,0x0B,0x6A,0xD1,0x2A,0x9C,0x25, + 0x0A,0xB9,0xD1,0x14,0xDC,0x35,0x1C,0x48,0x7C,0xC6,0x0C,0x6D, + 0x32,0x1D,0xD3,0xC8,0x10,0xA8,0x82,0x14,0xA2,0x1C,0xF4,0x53, + 0x23,0x3B,0x1C,0xB9, + }; + DH *dh; + + if ((dh=DH_new()) == NULL) return(NULL); + dh->p=BN_bin2bn(dh512_p,sizeof(dh512_p),NULL); + dh->g=BN_bin2bn(dh512_g,sizeof(dh512_g),NULL); + if ((dh->p == NULL) || (dh->g == NULL)) + { DH_free(dh); return(NULL); } + dh->length = 160; + return(dh); +} + struct daemon_remote* daemon_remote_create(struct config_file* cfg) { @@ -165,6 +205,24 @@ daemon_remote_create(struct config_file* cfg) daemon_remote_delete(rc); return NULL; } + + if (cfg->remote_control_use_cert == 0) { + /* No certificates are requested */ + if(!SSL_CTX_set_cipher_list(rc->ctx, "aNULL")) { + log_crypto_err("Failed to set aNULL cipher list"); + return NULL; + } + + /* Since we have no certificates and hence no source of + * DH params, let's generate and set them + */ + if(!SSL_CTX_set_tmp_dh(rc->ctx,get_dh512())) { + log_crypto_err("Wanted to set DH param, but failed"); + return NULL; + } + return rc; + } + rc->use_cert = 1; s_cert = fname_after_chroot(cfg->server_cert_file, cfg, 1); s_key = fname_after_chroot(cfg->server_key_file, cfg, 1); if(!s_cert || !s_key) { @@ -244,7 +302,8 @@ void daemon_remote_delete(struct daemon_remote* rc) * @return false on failure. */ static int -add_open(const char* ip, int nr, struct listen_port** list, int noproto_is_err) +add_open(const char* ip, int nr, struct listen_port** list, int noproto_is_err, + struct config_file* cfg) { struct addrinfo hints; struct addrinfo* res; @@ -255,29 +314,46 @@ add_open(const char* ip, int nr, struct listen_port** list, int noproto_is_err) snprintf(port, sizeof(port), "%d", nr); port[sizeof(port)-1]=0; memset(&hints, 0, sizeof(hints)); - hints.ai_socktype = SOCK_STREAM; - hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST; - if((r = getaddrinfo(ip, port, &hints, &res)) != 0 || !res) { -#ifdef USE_WINSOCK - if(!noproto_is_err && r == EAI_NONAME) { - /* tried to lookup the address as name */ - return 1; /* return success, but do nothing */ + + if(ip[0] == '/') { + /* This looks like a local socket */ + fd = create_local_accept_sock(ip, &noproto); + /* + * Change socket ownership and permissions so users other + * than root can access it provided they are in the same + * group as the user we run as. + */ + if(fd != -1) { + if (cfg->username && cfg->username[0]) + chown(ip, cfg->uid, cfg->gid); + chmod(ip, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP); } + } else { + hints.ai_socktype = SOCK_STREAM; + hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST; + if((r = getaddrinfo(ip, port, &hints, &res)) != 0 || !res) { +#ifdef USE_WINSOCK + if(!noproto_is_err && r == EAI_NONAME) { + /* tried to lookup the address as name */ + return 1; /* return success, but do nothing */ + } #endif /* USE_WINSOCK */ - log_err("control interface %s:%s getaddrinfo: %s %s", - ip?ip:"default", port, gai_strerror(r), + log_err("control interface %s:%s getaddrinfo: %s %s", + ip?ip:"default", port, gai_strerror(r), #ifdef EAI_SYSTEM - r==EAI_SYSTEM?(char*)strerror(errno):"" + r==EAI_SYSTEM?(char*)strerror(errno):"" #else - "" + "" #endif ); - return 0; + return 0; + } + + /* open fd */ + fd = create_tcp_accept_sock(res, 1, &noproto, 0); + freeaddrinfo(res); } - /* open fd */ - fd = create_tcp_accept_sock(res, 1, &noproto, 0); - freeaddrinfo(res); if(fd == -1 && noproto) { if(!noproto_is_err) return 1; /* return success, but do nothing */ @@ -314,7 +390,7 @@ struct listen_port* daemon_remote_open_ports(struct config_file* cfg) if(cfg->control_ifs) { struct config_strlist* p; for(p = cfg->control_ifs; p; p = p->next) { - if(!add_open(p->str, cfg->control_port, &l, 1)) { + if(!add_open(p->str, cfg->control_port, &l, 1, cfg)) { listening_ports_free(l); return NULL; } @@ -322,12 +398,12 @@ struct listen_port* daemon_remote_open_ports(struct config_file* cfg) } else { /* defaults */ if(cfg->do_ip6 && - !add_open("::1", cfg->control_port, &l, 0)) { + !add_open("::1", cfg->control_port, &l, 0, cfg)) { listening_ports_free(l); return NULL; } if(cfg->do_ip4 && - !add_open("127.0.0.1", cfg->control_port, &l, 1)) { + !add_open("127.0.0.1", cfg->control_port, &l, 1, cfg)) { listening_ports_free(l); return NULL; } @@ -2434,7 +2510,9 @@ int remote_control_callback(struct comm_point* c, void* arg, int err, s->shake_state = rc_none; /* once handshake has completed, check authentication */ - if(SSL_get_verify_result(s->ssl) == X509_V_OK) { + if (!rc->use_cert) { + verbose(VERB_ALGO, "unauthenticated remote control connection"); + } else if(SSL_get_verify_result(s->ssl) == X509_V_OK) { X509* x = SSL_get_peer_certificate(s->ssl); if(!x) { verbose(VERB_DETAIL, "remote control connection " diff --git a/daemon/remote.h b/daemon/remote.h index cc670b701..b25bfb1af 100644 --- a/daemon/remote.h +++ b/daemon/remote.h @@ -89,6 +89,8 @@ struct daemon_remote { struct worker* worker; /** commpoints for accepting remote control connections */ struct listen_list* accept_list; + /* if certificates are used */ + int use_cert; /** number of active commpoints that are handling remote control */ int active; /** max active commpoints */ diff --git a/daemon/unbound.c b/daemon/unbound.c index 5ded5a964..1663fa29b 100644 --- a/daemon/unbound.c +++ b/daemon/unbound.c @@ -443,18 +443,10 @@ perform_setup(struct daemon* daemon, struct config_file* cfg, int debug_mode, { #ifdef HAVE_GETPWNAM struct passwd *pwd = NULL; - uid_t uid; - gid_t gid; - /* initialize, but not to 0 (root) */ - memset(&uid, 112, sizeof(uid)); - memset(&gid, 112, sizeof(gid)); - log_assert(cfg); if(cfg->username && cfg->username[0]) { if((pwd = getpwnam(cfg->username)) == NULL) fatal_exit("user '%s' does not exist.", cfg->username); - uid = pwd->pw_uid; - gid = pwd->pw_gid; /* endpwent below, in case we need pwd for setusercontext */ } #endif @@ -511,18 +503,11 @@ perform_setup(struct daemon* daemon, struct config_file* cfg, int debug_mode, #ifdef HAVE_KILL if(cfg->pidfile && cfg->pidfile[0]) { writepid(daemon->pidfile, getpid()); - if(!(cfg->chrootdir && cfg->chrootdir[0]) || - (cfg->chrootdir && cfg->chrootdir[0] && - strncmp(daemon->pidfile, cfg->chrootdir, - strlen(cfg->chrootdir))==0)) { - /* delete of pidfile could potentially work, - * chown to get permissions */ - if(cfg->username && cfg->username[0]) { - if(chown(daemon->pidfile, uid, gid) == -1) { + if(cfg->username && cfg->username[0]) { + if(chown(daemon->pidfile, cfg->uid, cfg->gid) == -1) { log_err("cannot chown %u.%u %s: %s", - (unsigned)uid, (unsigned)gid, + (unsigned)cfg->uid, (unsigned)cfg->gid, daemon->pidfile, strerror(errno)); - } } } } @@ -537,7 +522,7 @@ perform_setup(struct daemon* daemon, struct config_file* cfg, int debug_mode, /* setusercontext does initgroups, setuid, setgid, and * also resource limits from login config, but we * still call setresuid, setresgid to be sure to set all uid*/ - if(setusercontext(NULL, pwd, uid, (unsigned) + if(setusercontext(NULL, pwd, cfg->uid, (unsigned) LOGIN_SETALL & ~LOGIN_SETUSER & ~LOGIN_SETGROUP) != 0) log_warn("unable to setusercontext %s: %s", cfg->username, strerror(errno)); @@ -601,27 +586,27 @@ perform_setup(struct daemon* daemon, struct config_file* cfg, int debug_mode, #ifdef HAVE_GETPWNAM if(cfg->username && cfg->username[0]) { # ifdef HAVE_INITGROUPS - if(initgroups(cfg->username, gid) != 0) + if(initgroups(cfg->username, cfg->gid) != 0) log_warn("unable to initgroups %s: %s", cfg->username, strerror(errno)); # endif /* HAVE_INITGROUPS */ endpwent(); #ifdef HAVE_SETRESGID - if(setresgid(gid,gid,gid) != 0) + if(setresgid(cfg->gid,cfg->gid,cfg->gid) != 0) #elif defined(HAVE_SETREGID) && !defined(DARWIN_BROKEN_SETREUID) - if(setregid(gid,gid) != 0) + if(setregid(cfg->gid,cfg->gid) != 0) #else /* use setgid */ - if(setgid(gid) != 0) + if(setgid(cfg->gid) != 0) #endif /* HAVE_SETRESGID */ fatal_exit("unable to set group id of %s: %s", cfg->username, strerror(errno)); #ifdef HAVE_SETRESUID - if(setresuid(uid,uid,uid) != 0) + if(setresuid(cfg->uid,cfg->uid,cfg->uid) != 0) #elif defined(HAVE_SETREUID) && !defined(DARWIN_BROKEN_SETREUID) - if(setreuid(uid,uid) != 0) + if(setreuid(cfg->uid,cfg->uid) != 0) #else /* use setuid */ - if(setuid(uid) != 0) + if(setuid(cfg->uid) != 0) #endif /* HAVE_SETRESUID */ fatal_exit("unable to set user id of %s: %s", cfg->username, strerror(errno)); diff --git a/doc/Changelog b/doc/Changelog index f90c2925b..81c7d4bf8 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,8 @@ 6 January 2015: Wouter - iana portlist update. + - patch for remote control over local sockets, from Dag-Erling + Smorgrav, Ilya Bakulin. Use control-interface: /path/sock and + control-use-cert: no. 5 January 2015: Wouter - getauxval test for ppc64 linux compatibility. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 36503815a..b096a760f 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -965,36 +965,47 @@ to setup SSLv3 / TLSv1 security for the connection. The section for options. To setup the correct self\-signed certificates use the \fIunbound\-control\-setup\fR(8) utility. .TP 5 -.B control\-enable: \fI +.B control\-enable: \fI The option is used to enable remote control, default is "no". If turned off, the server does not listen for control commands. .TP 5 -.B control\-interface: -Give IPv4 or IPv6 addresses to listen on for control commands. +.B control\-interface: \fI +Give IPv4 or IPv6 addresses or local socket path to listen on for +control commands. By default localhost (127.0.0.1 and ::1) is listened to. Use 0.0.0.0 and ::0 to listen to all interfaces. +If you change this and permissions have been dropped, you must restart +the server for the change to take effect. .TP 5 -.B control\-port: -The port number to listen on for control commands, default is 8953. -If you change this port number, and permissions have been dropped, -a reload is not sufficient to open the port again, you must then restart. +.B control\-port: \fI +The port number to listen on for IPv4 or IPv6 control interfaces, +default is 8953. +If you change this and permissions have been dropped, you must restart +the server for the change to take effect. .TP 5 -.B server\-key\-file: "" +.B control\-use\-cert: \fI +Whether to require certificate authentication of control connections. +The default is "yes". +This should not be changed unless there are other mechanisms in place +to prevent untrusted users from accessing the remote control +interface. +.TP 5 +.B server\-key\-file: \fI Path to the server private key, by default unbound_server.key. This file is generated by the \fIunbound\-control\-setup\fR utility. This file is used by the unbound server, but not by \fIunbound\-control\fR. .TP 5 -.B server\-cert\-file: "" +.B server\-cert\-file: \fI Path to the server self signed certificate, by default unbound_server.pem. This file is generated by the \fIunbound\-control\-setup\fR utility. This file is used by the unbound server, and also by \fIunbound\-control\fR. .TP 5 -.B control\-key\-file: "" +.B control\-key\-file: \fI Path to the control client private key, by default unbound_control.key. This file is generated by the \fIunbound\-control\-setup\fR utility. This file is used by \fIunbound\-control\fR. .TP 5 -.B control\-cert\-file: "" +.B control\-cert\-file: \fI Path to the control client certificate, by default unbound_control.pem. This certificate has to be signed with the server certificate. This file is generated by the \fIunbound\-control\-setup\fR utility. diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 9062a1f38..243a7b38b 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -56,6 +56,10 @@ #endif #include +#ifdef HAVE_SYS_UN_H +#include +#endif + /** number of queued TCP connections for listen() */ #define TCP_BACKLOG 256 @@ -589,6 +593,61 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, return s; } +int +create_local_accept_sock(const char *path, int* noproto) +{ +#ifdef HAVE_SYS_UN_H + int s; + struct sockaddr_un sun; + +#ifdef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN + /* this member exists on BSDs, not Linux */ + sun.sun_len = sizeof(sun); +#endif + sun.sun_family = AF_LOCAL; + /* length is 92-108, 104 on FreeBSD */ + strlcpy(sun.sun_path, path, sizeof(sun.sun_path)); + + if ((s = socket(PF_LOCAL, SOCK_STREAM, 0)) == -1) { + log_err("Cannot create local socket %s (%s)", + path, strerror(errno)); + return -1; + } + + if (unlink(path) && errno != ENOENT) { + /* The socket already exists and cannot be removed */ + log_err("Cannot remove old local socket %s (%s)", + path, strerror(errno)); + return -1; + } + + if (bind(s, (struct sockaddr *)&sun, + sizeof(struct sockaddr_un)) == -1) { + log_err("Cannot bind local socket %s (%s)", + path, strerror(errno)); + return -1; + } + + if (!fd_set_nonblock(s)) { + log_err("Cannot set non-blocking mode"); + return -1; + } + + if (listen(s, TCP_BACKLOG) == -1) { + log_err("can't listen: %s", strerror(errno)); + return -1; + } + + (void)noproto; /*unused*/ + return s; +#else + log_err("Local sockets are not supported"); + *noproto = 1; + return -1; +#endif +} + + /** * Create socket from getaddrinfo results */ diff --git a/services/listen_dnsport.h b/services/listen_dnsport.h index 075f6d281..e9883a8f4 100644 --- a/services/listen_dnsport.h +++ b/services/listen_dnsport.h @@ -207,4 +207,13 @@ int create_udp_sock(int family, int socktype, struct sockaddr* addr, int create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, int* reuseport); +/** + * Create and bind local listening socket + * @param path: path to the socket. + * @param noproto: on error, this is set true if cause is that local sockets + * are not supported. + * @return: the socket. -1 on error. + */ +int create_local_accept_sock(const char* path, int* noproto); + #endif /* LISTEN_DNSPORT_H */ diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index e83867f26..7723c3357 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -416,7 +416,7 @@ morechecks(struct config_file* cfg, const char* fname) endpwent(); } #endif - if(cfg->remote_control_enable) { + if(cfg->remote_control_enable && cfg->remote_control_use_cert) { check_chroot_string("server-key-file", &cfg->server_key_file, cfg->chrootdir, cfg); check_chroot_string("server-cert-file", &cfg->server_cert_file, diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index ff86184a8..759509201 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -59,6 +59,10 @@ #include "util/locks.h" #include "util/net_help.h" +#ifdef HAVE_SYS_UN_H +#include +#endif + /** Give unbound-control usage, and exit (1). */ static void usage() @@ -136,32 +140,40 @@ static void ssl_err(const char* s) static SSL_CTX* setup_ctx(struct config_file* cfg) { - char* s_cert, *c_key, *c_cert; + char* s_cert=NULL, *c_key=NULL, *c_cert=NULL; SSL_CTX* ctx; - s_cert = fname_after_chroot(cfg->server_cert_file, cfg, 1); - c_key = fname_after_chroot(cfg->control_key_file, cfg, 1); - c_cert = fname_after_chroot(cfg->control_cert_file, cfg, 1); - if(!s_cert || !c_key || !c_cert) - fatal_exit("out of memory"); + if(cfg->remote_control_use_cert) { + s_cert = fname_after_chroot(cfg->server_cert_file, cfg, 1); + c_key = fname_after_chroot(cfg->control_key_file, cfg, 1); + c_cert = fname_after_chroot(cfg->control_cert_file, cfg, 1); + if(!s_cert || !c_key || !c_cert) + fatal_exit("out of memory"); + } ctx = SSL_CTX_new(SSLv23_client_method()); if(!ctx) ssl_err("could not allocate SSL_CTX pointer"); if(!(SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2) & SSL_OP_NO_SSLv2)) ssl_err("could not set SSL_OP_NO_SSLv2"); - if(!(SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv3) & SSL_OP_NO_SSLv3)) - ssl_err("could not set SSL_OP_NO_SSLv3"); - if(!SSL_CTX_use_certificate_file(ctx,c_cert,SSL_FILETYPE_PEM) || - !SSL_CTX_use_PrivateKey_file(ctx,c_key,SSL_FILETYPE_PEM) - || !SSL_CTX_check_private_key(ctx)) - ssl_err("Error setting up SSL_CTX client key and cert"); - if (SSL_CTX_load_verify_locations(ctx, s_cert, NULL) != 1) - ssl_err("Error setting up SSL_CTX verify, server cert"); - SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, NULL); + if(cfg->remote_control_use_cert) { + if(!(SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv3) & SSL_OP_NO_SSLv3)) + ssl_err("could not set SSL_OP_NO_SSLv3"); + if(!SSL_CTX_use_certificate_file(ctx,c_cert,SSL_FILETYPE_PEM) || + !SSL_CTX_use_PrivateKey_file(ctx,c_key,SSL_FILETYPE_PEM) + || !SSL_CTX_check_private_key(ctx)) + ssl_err("Error setting up SSL_CTX client key and cert"); + if (SSL_CTX_load_verify_locations(ctx, s_cert, NULL) != 1) + ssl_err("Error setting up SSL_CTX verify, server cert"); + SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, NULL); - free(s_cert); - free(c_key); - free(c_cert); + free(s_cert); + free(c_key); + free(c_cert); + } else { + /* Use ciphers that don't require authentication */ + if(!SSL_CTX_set_cipher_list(ctx, "aNULL")) + ssl_err("Error setting NULL cipher!"); + } return ctx; } @@ -171,6 +183,7 @@ contact_server(const char* svr, struct config_file* cfg, int statuscmd) { struct sockaddr_storage addr; socklen_t addrlen; + int addrfamily = 0; int fd; /* use svr or the first config entry */ if(!svr) { @@ -189,12 +202,25 @@ contact_server(const char* svr, struct config_file* cfg, int statuscmd) if(strchr(svr, '@')) { if(!extstrtoaddr(svr, &addr, &addrlen)) fatal_exit("could not parse IP@port: %s", svr); +#ifdef HAVE_SYS_UN_H + } else if(svr[0] == '/') { + struct sockaddr_un* sun = (struct sockaddr_un *) &addr; + sun->sun_family = AF_LOCAL; +#ifdef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN + sun->sun_len = sizeof(sun); +#endif + strlcpy(sun->sun_path, svr, sizeof(sun->sun_path)); + addrlen = sizeof(struct sockaddr_un); + addrfamily = AF_LOCAL; +#endif } else { if(!ipstrtoaddr(svr, cfg->control_port, &addr, &addrlen)) fatal_exit("could not parse IP: %s", svr); } - fd = socket(addr_is_ip6(&addr, addrlen)?AF_INET6:AF_INET, - SOCK_STREAM, 0); + + if(addrfamily == 0) + addrfamily = addr_is_ip6(&addr, addrlen)?AF_INET6:AF_INET; + fd = socket(addrfamily, SOCK_STREAM, 0); if(fd == -1) { #ifndef USE_WINSOCK fatal_exit("socket: %s", strerror(errno)); @@ -223,7 +249,7 @@ contact_server(const char* svr, struct config_file* cfg, int statuscmd) /** setup SSL on the connection */ static SSL* -setup_ssl(SSL_CTX* ctx, int fd) +setup_ssl(SSL_CTX* ctx, int fd, struct config_file* cfg) { SSL* ssl; X509* x; @@ -249,10 +275,13 @@ setup_ssl(SSL_CTX* ctx, int fd) /* check authenticity of server */ if(SSL_get_verify_result(ssl) != X509_V_OK) ssl_err("SSL verification failed"); - x = SSL_get_peer_certificate(ssl); - if(!x) - ssl_err("Server presented no peer certificate"); - X509_free(x); + if(cfg->remote_control_use_cert) { + x = SSL_get_peer_certificate(ssl); + if(!x) + ssl_err("Server presented no peer certificate"); + X509_free(x); + } + return ssl; } @@ -330,11 +359,11 @@ go(const char* cfgfile, char* svr, int quiet, int argc, char* argv[]) if(!cfg->remote_control_enable) log_warn("control-enable is 'no' in the config file."); ctx = setup_ctx(cfg); - + /* contact server */ fd = contact_server(svr, cfg, argc>0&&strcmp(argv[0],"status")==0); - ssl = setup_ssl(ctx, fd); - + ssl = setup_ssl(ctx, fd, cfg); + /* send command */ ret = go_cmd(ssl, quiet, argc, argv); diff --git a/util/config_file.c b/util/config_file.c index 35bc6452a..bb39cf9bd 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -60,6 +60,9 @@ #ifdef HAVE_GLOB_H # include #endif +#ifdef HAVE_PWD_H +#include +#endif /** global config during parsing */ struct config_parser_state* cfg_parser = 0; @@ -131,6 +134,8 @@ config_create(void) goto error_exit; init_outgoing_availports(cfg->outgoing_avail_ports, 65536); if(!(cfg->username = strdup(UB_USERNAME))) goto error_exit; + cfg->uid = (uid_t)-1; + cfg->gid = (gid_t)-1; #ifdef HAVE_CHROOT if(!(cfg->chrootdir = strdup(CHROOT_DIR))) goto error_exit; #endif @@ -799,6 +804,17 @@ config_read(struct config_file* cfg, const char* filename, const char* chroot) errno=EINVAL; return 0; } + +#ifdef HAVE_GETPWNAM + /* translate username into uid and gid */ + if(cfg->username && cfg->username[0]) { + struct passwd *pwd; + if((pwd = getpwnam(cfg->username)) == NULL) + log_err("user '%s' does not exist.", cfg->username); + cfg->uid = pwd->pw_uid; + cfg->gid = pwd->pw_gid; + } +#endif return 1; } diff --git a/util/config_file.h b/util/config_file.h index 49ffbdde4..fd35d7863 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -192,6 +192,8 @@ struct config_file { char* chrootdir; /** username to change to, if not "". */ char* username; + uid_t uid; + gid_t gid; /** working directory */ char* directory; /** filename to log to. */ @@ -282,6 +284,8 @@ struct config_file { struct config_strlist* control_ifs; /** port number for the control port */ int control_port; + /** use certificates for remote control */ + int remote_control_use_cert; /** private key file for server */ char* server_key_file; /** certificate file for server */ diff --git a/util/configlexer.c b/util/configlexer.c index 4a0380e6a..b3df28154 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -363,8 +363,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 162 -#define YY_END_OF_BUFFER 163 +#define YY_NUM_RULES 163 +#define YY_END_OF_BUFFER 164 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -372,185 +372,186 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[1611] = +static yyconst flex_int16_t yy_accept[1620] = { 0, - 1, 1, 144, 144, 148, 148, 152, 152, 156, 156, - 1, 1, 163, 160, 1, 142, 142, 161, 2, 161, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 144, - 145, 145, 146, 161, 148, 149, 149, 150, 161, 155, - 152, 153, 153, 154, 161, 156, 157, 157, 158, 161, - 159, 143, 2, 147, 161, 159, 160, 0, 1, 2, - 2, 2, 2, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 144, 0, 148, 0, 155, 0, 152, 156, - 0, 159, 0, 2, 2, 159, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 159, 160, 160, 160, 160, 160, 160, - - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 159, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - - 160, 160, 160, 160, 160, 65, 160, 160, 160, 160, - 160, 6, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 159, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 159, 160, 160, 160, 160, 29, 160, 160, 160, - 160, 160, 160, 160, 160, 129, 160, 12, 13, 160, - 15, 14, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 122, - 160, 160, 160, 160, 160, 3, 160, 160, 160, 160, - - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 159, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 151, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 32, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 33, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 80, 151, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 79, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 63, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - - 160, 160, 20, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 30, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 31, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 22, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - - 160, 160, 160, 160, 26, 160, 27, 160, 160, 160, - 66, 160, 67, 160, 64, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 5, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 82, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 23, 160, 160, 160, - 160, 107, 106, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - - 160, 160, 34, 160, 160, 160, 160, 160, 160, 160, - 160, 69, 68, 160, 160, 160, 160, 160, 160, 160, - 103, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 50, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 54, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 105, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 4, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 100, 160, 160, 160, 160, 160, 160, - 160, 116, 101, 160, 127, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 21, 160, 160, 160, 160, - 71, 160, 72, 70, 160, 160, 160, 160, 160, 160, - 78, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 102, 160, 160, 160, 160, 126, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 62, 160, 160, - 160, 160, 160, 160, 160, 160, 28, 160, 160, 17, - - 160, 160, 160, 16, 160, 87, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 41, - 42, 160, 160, 160, 160, 160, 160, 130, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 73, 160, 160, 160, 160, 160, 77, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 81, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 121, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 91, 160, 95, 160, 160, 160, 160, 76, 160, - - 160, 114, 160, 160, 160, 128, 160, 160, 160, 160, - 160, 160, 160, 135, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 94, 160, 160, 160, 160, 43, - 44, 160, 49, 96, 160, 108, 104, 160, 160, 37, - 160, 98, 160, 160, 160, 160, 160, 7, 160, 61, - 113, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 83, 134, 160, 160, - 160, 160, 160, 160, 160, 160, 123, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 97, - - 160, 36, 38, 160, 160, 160, 160, 160, 60, 160, - 160, 160, 160, 117, 18, 19, 160, 160, 160, 160, - 160, 160, 160, 58, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 119, 160, 160, 160, 160, 160, 160, - 160, 160, 35, 160, 160, 160, 160, 160, 160, 11, - 160, 160, 160, 160, 160, 160, 160, 10, 160, 160, - 39, 160, 125, 118, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 90, 89, 160, 120, 115, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 45, 160, 124, 160, - - 160, 160, 160, 40, 160, 160, 160, 84, 86, 109, - 160, 160, 160, 88, 160, 160, 160, 160, 160, 160, - 160, 160, 131, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 24, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 133, 160, 160, 112, 160, 160, 160, 160, 160, - 160, 160, 25, 160, 9, 160, 160, 110, 51, 160, - 160, 160, 93, 160, 160, 160, 160, 160, 160, 132, - 74, 160, 160, 160, 53, 57, 52, 160, 46, 160, - 8, 160, 160, 92, 160, 160, 160, 160, 160, 160, - - 160, 160, 160, 56, 160, 47, 160, 111, 160, 160, - 85, 160, 160, 160, 160, 160, 160, 75, 55, 48, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 59, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 99, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 138, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 136, 160, - - 139, 140, 160, 160, 160, 160, 160, 137, 141, 0 + 1, 1, 145, 145, 149, 149, 153, 153, 157, 157, + 1, 1, 164, 161, 1, 143, 143, 162, 2, 162, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 145, + 146, 146, 147, 162, 149, 150, 150, 151, 162, 156, + 153, 154, 154, 155, 162, 157, 158, 158, 159, 162, + 160, 144, 2, 148, 162, 160, 161, 0, 1, 2, + 2, 2, 2, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 145, 0, 149, 0, 156, 0, 153, 157, + 0, 160, 0, 2, 2, 160, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 160, 161, 161, 161, 161, 161, 161, + + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 160, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + + 161, 161, 161, 161, 161, 65, 161, 161, 161, 161, + 161, 6, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 160, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 160, 161, 161, 161, 161, 29, 161, 161, 161, + 161, 161, 161, 161, 161, 130, 161, 12, 13, 161, + 15, 14, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 123, + 161, 161, 161, 161, 161, 3, 161, 161, 161, 161, + + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 160, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 152, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 32, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 33, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 80, 152, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 79, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 63, 161, 161, 161, 161, 161, 161, 161, 161, 161, + + 161, 161, 161, 20, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 30, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 31, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 22, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + + 161, 161, 161, 161, 161, 161, 26, 161, 27, 161, + 161, 161, 66, 161, 67, 161, 64, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 5, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 82, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 23, + 161, 161, 161, 161, 107, 106, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + + 161, 161, 161, 161, 161, 34, 161, 161, 161, 161, + 161, 161, 161, 161, 69, 68, 161, 161, 161, 161, + 161, 161, 161, 103, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 50, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 54, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 105, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 4, 161, 161, 161, 161, 161, 161, + + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 100, 161, 161, + 161, 161, 161, 161, 161, 116, 161, 101, 161, 128, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 21, 161, 161, 161, 161, 71, 161, 72, 70, 161, + 161, 161, 161, 161, 161, 78, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 102, 161, 161, 161, 161, + 127, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 62, 161, 161, 161, 161, 161, 161, 161, + + 161, 28, 161, 161, 17, 161, 161, 161, 16, 161, + 87, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 41, 42, 161, 161, 161, 161, + 161, 161, 161, 131, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 73, 161, 161, + 161, 161, 161, 77, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 81, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 122, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 91, 161, 95, + + 161, 161, 161, 161, 76, 161, 161, 114, 161, 161, + 161, 161, 129, 161, 161, 161, 161, 161, 161, 161, + 136, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 94, 161, 161, 161, 161, 43, 44, 161, 49, + 96, 161, 108, 104, 161, 161, 37, 161, 98, 161, + 161, 161, 161, 161, 7, 161, 61, 113, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 83, 135, 161, 161, 161, 161, + 161, 161, 161, 161, 124, 161, 161, 161, 161, 161, + + 161, 161, 161, 161, 161, 161, 161, 97, 161, 36, + 38, 161, 161, 161, 161, 161, 60, 161, 161, 161, + 161, 118, 18, 19, 161, 161, 161, 161, 161, 161, + 161, 58, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 120, 117, 161, 161, 161, 161, 161, 161, 161, + 161, 35, 161, 161, 161, 161, 161, 161, 11, 161, + 161, 161, 161, 161, 161, 161, 10, 161, 161, 39, + 161, 126, 119, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 90, 89, 161, 121, 115, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + + 161, 161, 161, 161, 161, 45, 161, 125, 161, 161, + 161, 161, 40, 161, 161, 161, 84, 86, 109, 161, + 161, 161, 88, 161, 161, 161, 161, 161, 161, 161, + 161, 132, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 24, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 134, 161, 161, 112, 161, 161, 161, 161, 161, 161, + 161, 25, 161, 9, 161, 161, 110, 51, 161, 161, + 161, 93, 161, 161, 161, 161, 161, 161, 133, 74, + 161, 161, 161, 53, 57, 52, 161, 46, 161, 8, + + 161, 161, 92, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 56, 161, 47, 161, 111, 161, 161, 85, + 161, 161, 161, 161, 161, 161, 75, 55, 48, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 59, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 99, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 139, 161, 161, 161, 161, 161, 161, + + 161, 161, 161, 161, 161, 161, 161, 137, 161, 140, + 141, 161, 161, 161, 161, 161, 138, 142, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -593,15 +594,15 @@ static yyconst flex_int32_t yy_meta[40] = 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static yyconst flex_int16_t yy_base[1625] = +static yyconst flex_int16_t yy_base[1634] = { 0, 0, 0, 37, 40, 44, 51, 63, 75, 56, 68, - 87, 108, 2844, 2315, 50, 3201, 3201, 3201, 129, 94, + 87, 108, 2238, 2151, 50, 3220, 3220, 3220, 129, 94, 70, 104, 130, 90, 92, 115, 127, 95, 84, 111, - 137, 148, 50, 150, 155, 157, 163, 171, 178, 2213, - 3201, 3201, 3201, 70, 2102, 3201, 3201, 3201, 42, 1930, - 1613, 3201, 3201, 3201, 195, 1340, 3201, 3201, 3201, 141, - 1156, 3201, 202, 3201, 206, 122, 1017, 212, 120, 0, + 137, 148, 50, 150, 155, 157, 163, 171, 178, 1935, + 3220, 3220, 3220, 70, 1925, 3220, 3220, 3220, 42, 1776, + 1709, 3220, 3220, 3220, 195, 1559, 3220, 3220, 3220, 141, + 1156, 3220, 202, 3220, 206, 122, 1017, 212, 120, 0, 223, 0, 0, 103, 147, 154, 158, 192, 199, 207, 208, 205, 209, 221, 218, 220, 224, 225, 229, 230, 231, 238, 251, 236, 247, 250, 237, 248, 256, 259, @@ -628,8 +629,8 @@ static yyconst flex_int16_t yy_base[1625] = 635, 637, 638, 640, 641, 644, 645, 656, 659, 648, 665, 662, 667, 664, 670, 593, 677, 673, 675, 674, - 676, 646, 682, 678, 688, 3201, 690, 679, 685, 692, - 695, 3201, 696, 697, 698, 703, 702, 709, 705, 706, + 676, 646, 682, 678, 688, 3220, 690, 679, 685, 692, + 695, 3220, 696, 697, 698, 703, 702, 709, 705, 706, 711, 714, 715, 719, 713, 720, 740, 722, 721, 731, 735, 725, 733, 727, 743, 747, 749, 750, 751, 753, 754, 755, 757, 758, 763, 774, 760, 768, 771, 778, @@ -642,324 +643,326 @@ static yyconst flex_int16_t yy_base[1625] = 892, 893, 888, 894, 897, 898, 899, 900, 901, 902, 906, 908, 909, 917, 903, 913, 919, 925, 927, 928, 910, 930, 931, 934, 933, 937, 941, 935, 945, 947, - 948, 949, 955, 957, 950, 959, 3201, 969, 963, 965, - 966, 970, 972, 951, 991, 3201, 973, 3201, 3201, 975, - 3201, 3201, 974, 979, 982, 994, 1014, 993, 981, 980, + 948, 949, 955, 957, 950, 959, 3220, 969, 963, 965, + 966, 970, 972, 951, 991, 3220, 973, 3220, 3220, 975, + 3220, 3220, 974, 979, 982, 994, 1014, 993, 981, 980, 1001, 1007, 995, 1008, 997, 1019, 1022, 1023, 1011, 1015, 1027, 1029, 1024, 1036, 1037, 1041, 1043, 1049, 1045, 1046, - 1047, 1050, 1051, 1056, 1053, 1063, 1057, 1064, 1066, 3201, - 1067, 1068, 1071, 1073, 1075, 3201, 1074, 1076, 1077, 1079, + 1047, 1050, 1051, 1056, 1053, 1063, 1057, 1064, 1066, 3220, + 1067, 1068, 1071, 1073, 1075, 3220, 1074, 1076, 1077, 1079, 1080, 1083, 1084, 1087, 1089, 1090, 1092, 1094, 1100, 1096, 1097, 1110, 1117, 1114, 1104, 1113, 1115, 1119, 1121, 1129, 1127, 1126, 1128, 1136, 1132, 1134, 1138, 1135, 1139, 1142, 1145, 1146, 1170, 1147, 1148, 1149, 1153, 1154, 1157, 1158, 1162, 1165, 1177, 1178, 1176, 1164, 1184, 1187, 1194, 1195, - 1197, 1191, 1155, 1199, 1204, 1206, 1208, 1188, 1211, 1212, - 3201, 1218, 1217, 1215, 1219, 1223, 1224, 1226, 1225, 1231, - 1227, 1237, 1229, 1245, 3201, 1230, 1239, 1233, 1241, 1250, - 1253, 1252, 1259, 1267, 3201, 1269, 1270, 1263, 1265, 1256, - 1272, 1273, 1277, 1278, 1279, 1281, 1284, 1287, 1289, 1288, - - 1292, 1291, 1293, 1296, 1300, 1299, 1302, 1301, 1305, 1303, - 1242, 1315, 1322, 1311, 1321, 1318, 1324, 1323, 1329, 1327, - 1330, 1328, 1331, 3201, 239, 1332, 1333, 1334, 1341, 1349, - 1350, 1343, 1351, 1353, 1352, 1359, 1342, 1363, 1360, 1364, - 1366, 1368, 1371, 1372, 1373, 1377, 1375, 1381, 1383, 1382, - 1384, 1385, 1391, 1394, 1392, 1396, 1397, 1398, 1399, 1400, - 1402, 1406, 1405, 1410, 3201, 1427, 1412, 1415, 1413, 1424, - 1435, 1428, 1431, 1432, 1442, 1438, 1440, 1443, 1449, 1446, - 1451, 1452, 1436, 1458, 1462, 1459, 1461, 1460, 1468, 3201, - 1463, 1470, 1471, 1472, 1473, 1475, 1477, 1480, 1481, 1488, - - 1482, 1494, 3201, 1496, 1490, 1484, 1501, 1502, 1505, 1507, - 1509, 1510, 1511, 1513, 1514, 1517, 1515, 1520, 1524, 3201, - 1528, 1532, 1529, 1540, 1536, 1525, 1537, 1539, 1541, 1542, - 1551, 1543, 1547, 1550, 1552, 1549, 1554, 1555, 1557, 1559, - 3201, 1571, 1572, 1574, 1414, 1562, 1583, 1556, 1575, 1558, - 1584, 1585, 1587, 1588, 1589, 1590, 1593, 1595, 1591, 1597, - 1596, 1599, 1600, 1608, 1598, 1617, 1618, 1619, 1601, 1623, - 1629, 1632, 1620, 3201, 1631, 1634, 1635, 1636, 1642, 1644, - 1638, 1640, 1645, 1646, 1647, 1656, 1648, 1650, 1654, 1658, - 1652, 1660, 1661, 1662, 1670, 1664, 1672, 1674, 1678, 1680, - - 1682, 1684, 1686, 1694, 3201, 1690, 3201, 1691, 1692, 1700, - 3201, 1702, 3201, 1704, 3201, 1707, 1711, 1699, 1697, 1705, - 1713, 1709, 1716, 1717, 1720, 1723, 1725, 1726, 1727, 1728, - 3201, 1729, 1734, 1731, 1735, 1738, 1739, 1740, 1744, 1756, - 1741, 1743, 1753, 1754, 3201, 1750, 1762, 1764, 1765, 1766, - 1773, 1770, 1771, 1777, 1767, 1778, 1788, 1786, 1779, 1789, - 1790, 1791, 1793, 1794, 1801, 1798, 1795, 1802, 1804, 1805, - 1806, 1807, 1814, 1811, 1812, 1815, 3201, 1823, 1821, 1817, - 1825, 3201, 3201, 1834, 1827, 1835, 1837, 1839, 1842, 1843, - 1845, 1849, 1847, 1850, 1851, 1856, 1857, 1858, 1859, 1862, - - 1860, 1866, 3201, 1872, 1868, 1878, 1869, 1865, 1887, 1879, - 1888, 3201, 3201, 1881, 1880, 1890, 1894, 1900, 1896, 1898, - 3201, 1899, 1901, 1902, 1904, 1906, 1914, 1903, 1910, 1918, - 1915, 1920, 1921, 1927, 1924, 1928, 1931, 1935, 1939, 3201, - 1940, 1942, 1943, 1945, 1944, 1947, 1948, 1951, 1952, 1957, - 1954, 1965, 1967, 1958, 1966, 1960, 1971, 1968, 1973, 1976, - 1983, 1981, 3201, 1987, 1986, 1994, 1990, 1992, 1995, 1998, - 1997, 1999, 2000, 2001, 2002, 2006, 2003, 2007, 2010, 3201, - 2013, 2018, 2012, 2024, 2025, 2014, 2032, 2026, 2028, 3201, - 2036, 2042, 2035, 2038, 2047, 2043, 2049, 2039, 2050, 2051, - - 2053, 2054, 2057, 2062, 2056, 2064, 2069, 2071, 2078, 2075, - 2081, 2082, 2079, 2083, 2089, 2086, 2087, 2088, 2092, 2099, - 2093, 2101, 2097, 3201, 2103, 2108, 2111, 2112, 2114, 2116, - 2104, 3201, 3201, 2120, 3201, 2121, 2124, 2125, 2126, 2128, - 2129, 2127, 2134, 2141, 2130, 3201, 2137, 2140, 2142, 2143, - 3201, 2154, 3201, 3201, 2147, 2155, 2156, 2159, 2162, 2166, - 3201, 2163, 2157, 2167, 2169, 2171, 2172, 2174, 2176, 2175, - 3201, 2180, 2179, 2178, 2188, 3201, 2187, 2193, 2182, 2189, - 2198, 2199, 2202, 2203, 2205, 2211, 2209, 3201, 2210, 2212, - 2216, 2218, 2219, 2220, 2223, 2224, 3201, 2233, 2234, 3201, - - 2227, 2217, 2235, 3201, 2241, 3201, 2242, 2243, 2244, 2245, - 2250, 2246, 2253, 2256, 2257, 2259, 2260, 2263, 2266, 3201, - 3201, 2267, 2271, 2277, 2268, 2279, 2282, 3201, 2265, 2283, - 2272, 2285, 2286, 2287, 2292, 2294, 2297, 2289, 2298, 2296, - 2299, 3201, 2302, 2306, 2307, 2309, 2310, 3201, 2312, 2313, - 2314, 2317, 2319, 2324, 2333, 2329, 2335, 2337, 2338, 2340, - 2344, 2341, 3201, 2345, 2347, 2348, 2352, 2353, 2349, 2356, - 2361, 2364, 2354, 2366, 3201, 2369, 2358, 2374, 2370, 2376, - 2378, 2372, 2380, 2381, 2382, 2385, 2386, 2389, 2390, 2396, - 2399, 3201, 2392, 3201, 2401, 2405, 2413, 2414, 3201, 2394, - - 2407, 3201, 2417, 2411, 2422, 3201, 2425, 2418, 2426, 2428, - 2429, 2430, 2433, 3201, 2431, 2436, 2438, 2441, 2442, 2444, - 2445, 2447, 2455, 2451, 3201, 2453, 2454, 2456, 2458, 3201, - 3201, 2466, 3201, 3201, 2471, 3201, 3201, 2463, 2473, 3201, - 2475, 3201, 2481, 2477, 2479, 2461, 2480, 3201, 2487, 3201, - 3201, 2484, 2488, 2482, 2492, 2494, 2499, 2501, 2491, 2502, - 2504, 2505, 2506, 2507, 2508, 2510, 2513, 2511, 2514, 2519, - 2515, 2521, 2523, 2524, 2525, 2527, 3201, 3201, 2531, 2536, - 2533, 2538, 2540, 2542, 2543, 2544, 3201, 2547, 2548, 2550, - 2552, 2553, 2556, 2559, 2564, 2573, 2560, 2566, 2567, 3201, - - 2569, 3201, 3201, 2574, 2576, 2581, 2577, 2582, 3201, 2584, - 2586, 2590, 2596, 3201, 3201, 3201, 2597, 2591, 2593, 2599, - 2601, 2603, 2607, 3201, 2608, 2609, 2611, 2610, 2618, 2620, - 2626, 2628, 2630, 3201, 2636, 2633, 2634, 2632, 2635, 2638, - 2640, 2612, 3201, 2644, 2642, 2643, 2648, 2653, 2649, 3201, - 2651, 2656, 2660, 2662, 2664, 2661, 2667, 3201, 2665, 2666, - 3201, 2677, 3201, 3201, 2668, 2680, 2682, 2684, 2687, 2690, - 2673, 2678, 2698, 2695, 2696, 3201, 3201, 2697, 3201, 3201, - 2699, 2701, 2702, 2704, 2705, 2708, 2709, 2710, 2711, 2712, - 2715, 2721, 2714, 2722, 2723, 2725, 3201, 2733, 3201, 2729, - - 2738, 2735, 2740, 3201, 2741, 2742, 2727, 3201, 3201, 3201, - 2746, 2743, 2753, 3201, 2755, 2756, 2757, 2758, 2759, 2766, - 2764, 2768, 3201, 2769, 2770, 2772, 2773, 2774, 2775, 2776, - 2781, 2779, 2780, 2792, 2793, 3201, 2796, 2783, 2787, 2801, - 2807, 2797, 2802, 2804, 2811, 2808, 2812, 2813, 2823, 2819, - 2822, 3201, 2826, 2815, 3201, 2827, 2828, 2830, 2839, 2843, - 2835, 2845, 3201, 2846, 3201, 2849, 2850, 3201, 3201, 2851, - 2853, 2856, 3201, 2857, 2854, 2858, 2860, 2863, 2864, 3201, - 3201, 2865, 2867, 2871, 3201, 3201, 3201, 2880, 3201, 2882, - 3201, 2888, 2868, 3201, 2873, 2890, 2870, 2881, 2876, 2893, - - 2894, 2892, 2901, 3201, 2903, 3201, 2905, 3201, 2906, 2907, - 3201, 2914, 2910, 2912, 2913, 2915, 2919, 3201, 3201, 3201, - 2916, 2921, 2923, 2925, 2922, 2926, 2927, 2928, 2930, 2937, - 2934, 2945, 2931, 2938, 2954, 2947, 3201, 2948, 2951, 2960, - 2962, 2958, 2964, 2959, 2965, 2966, 2967, 2968, 2969, 2971, - 2982, 2973, 2974, 2984, 2986, 2990, 2983, 2998, 2997, 2994, - 2999, 3000, 3008, 3004, 3007, 3201, 3005, 3006, 3009, 3011, - 3012, 3016, 3014, 3026, 3029, 3017, 3031, 3015, 3036, 3032, - 3037, 3040, 3041, 3042, 3201, 3043, 3045, 3047, 3049, 3051, - 3053, 3054, 3055, 3058, 3060, 3063, 3065, 3069, 3201, 3070, - - 3201, 3201, 3074, 3071, 3077, 3081, 3083, 3201, 3201, 3201, - 3109, 3116, 3123, 3130, 3137, 94, 3144, 3151, 3158, 3165, - 3172, 3179, 3186, 3193 + 1197, 1199, 1155, 1204, 1206, 1200, 1209, 1188, 1215, 1212, + 3220, 1222, 1224, 1210, 1218, 1220, 1219, 1226, 1228, 1232, + 1230, 1234, 1233, 1241, 3220, 1239, 1243, 1240, 1244, 1246, + 1252, 1245, 1259, 1267, 3220, 1269, 1270, 1253, 1263, 1265, + 1272, 1266, 1276, 1277, 1273, 1280, 1283, 1291, 1284, 1286, + + 1292, 1288, 1294, 1297, 1298, 1300, 1302, 1301, 1309, 1299, + 1303, 1321, 1323, 1314, 1325, 1308, 1320, 1326, 1332, 1322, + 1330, 1331, 1333, 3220, 239, 1335, 1336, 1337, 1346, 1347, + 1343, 1345, 1352, 1355, 1353, 1344, 1354, 1356, 1362, 1364, + 1365, 1367, 1372, 1374, 1370, 1376, 1378, 1380, 1383, 1384, + 1385, 1386, 1388, 1393, 1394, 1395, 1396, 1400, 1399, 1401, + 1402, 1408, 1406, 1405, 1415, 3220, 1428, 1413, 1409, 1416, + 1426, 1434, 1419, 1430, 1432, 1440, 1444, 1437, 1446, 1447, + 1449, 1450, 1439, 1452, 1459, 1461, 1457, 1460, 1463, 1465, + 3220, 1467, 1468, 1466, 1473, 1469, 1474, 1475, 1478, 1480, + + 1486, 1491, 1493, 3220, 1494, 1490, 1498, 1500, 1501, 1503, + 1504, 1508, 1510, 1511, 1512, 1513, 1514, 1519, 1522, 1524, + 3220, 1532, 1534, 1533, 1540, 1536, 1523, 1539, 1526, 1541, + 1543, 1549, 1547, 1548, 1546, 1551, 1553, 1554, 1556, 1555, + 1557, 1558, 3220, 1570, 1562, 1575, 1576, 1572, 1582, 1581, + 1584, 1587, 1588, 1589, 1591, 1590, 1592, 1593, 1598, 1594, + 1601, 1602, 1599, 1600, 1603, 1604, 1611, 1619, 1620, 1621, + 1622, 1625, 1631, 1637, 1623, 3220, 1634, 1636, 1638, 1639, + 1645, 1647, 1642, 1648, 1649, 1650, 1651, 1659, 1653, 1655, + 1660, 1662, 1656, 1663, 1665, 1676, 1666, 1664, 1673, 1678, + + 1682, 1689, 1685, 1691, 1683, 1697, 3220, 1693, 3220, 1694, + 1700, 1709, 3220, 1706, 3220, 1708, 3220, 1710, 1714, 1712, + 1696, 1716, 1717, 1718, 1720, 1723, 1724, 1726, 1728, 1731, + 1732, 1729, 3220, 1736, 1738, 1740, 1737, 1742, 1744, 1745, + 1750, 1758, 1746, 1761, 1749, 1760, 1765, 3220, 1767, 1768, + 1770, 1772, 1775, 1779, 1780, 1777, 1783, 1773, 1784, 1794, + 1795, 1790, 1797, 1799, 1800, 1801, 1802, 1804, 1806, 1809, + 1810, 1812, 1814, 1813, 1818, 1820, 1817, 1821, 1822, 3220, + 1823, 1826, 1835, 1829, 3220, 3220, 1840, 1846, 1848, 1834, + 1842, 1836, 1852, 1854, 1862, 1859, 1856, 1860, 1865, 1866, + + 1867, 1868, 1869, 1871, 1872, 3220, 1879, 1875, 1882, 1878, + 1881, 1894, 1885, 1888, 3220, 3220, 1895, 1896, 1899, 1900, + 1907, 1904, 1905, 3220, 1906, 1908, 1910, 1911, 1913, 1921, + 1914, 1924, 1928, 1922, 1929, 1931, 1938, 1932, 1934, 1940, + 1948, 1942, 1950, 3220, 1951, 1954, 1955, 1956, 1957, 1958, + 1959, 1963, 1962, 1965, 1964, 1973, 1980, 1969, 1976, 1977, + 1982, 1978, 1987, 1989, 1996, 1999, 3220, 2005, 1983, 2008, + 1992, 1994, 2006, 2009, 2010, 2011, 2012, 2013, 2014, 2016, + 2018, 2019, 2021, 3220, 2025, 2027, 2023, 2030, 2036, 2028, + 2039, 2042, 2043, 3220, 2046, 2052, 2049, 2048, 2057, 2053, + + 2061, 2060, 2050, 2062, 2063, 2066, 2064, 2075, 2071, 2077, + 2067, 2079, 2089, 2086, 2095, 2096, 2083, 2092, 2102, 2098, + 2099, 2100, 2101, 2111, 2105, 2113, 2107, 3220, 2114, 2116, + 2121, 2118, 2123, 2125, 2129, 3220, 2130, 3220, 2122, 3220, + 2132, 2137, 2133, 2139, 2140, 2141, 2142, 2145, 2152, 2143, + 3220, 2154, 2149, 2156, 2159, 3220, 2162, 3220, 3220, 2163, + 2169, 2170, 2171, 2173, 2179, 3220, 2174, 2176, 2182, 2180, + 2185, 2186, 2188, 2184, 2189, 3220, 2190, 2191, 2192, 2194, + 3220, 2202, 2205, 2206, 2207, 2211, 2214, 2215, 2208, 2217, + 2223, 2222, 3220, 2221, 2224, 2229, 2230, 2234, 2231, 2235, + + 2236, 3220, 2245, 2247, 3220, 2241, 2239, 2249, 3220, 2251, + 3220, 2255, 2253, 2256, 2258, 2263, 2260, 2271, 2264, 2272, + 2273, 2266, 2275, 2277, 3220, 3220, 2280, 2287, 2290, 2282, + 2284, 2288, 2296, 3220, 2292, 2298, 2297, 2299, 2300, 2301, + 2306, 2308, 2309, 2310, 2311, 2304, 2312, 3220, 2315, 2318, + 2321, 2323, 2324, 3220, 2327, 2329, 2328, 2333, 2343, 2348, + 2350, 2338, 2353, 2355, 2340, 2357, 2361, 2358, 3220, 2362, + 2364, 2365, 2369, 2370, 2366, 2371, 2375, 2379, 2373, 2381, + 3220, 2383, 2385, 2386, 2389, 2390, 2394, 2393, 2395, 2396, + 2400, 2397, 2401, 2404, 2406, 2414, 2403, 3220, 2415, 3220, + + 2416, 2421, 2424, 2427, 3220, 2423, 2429, 3220, 2430, 2426, + 2432, 2440, 3220, 2443, 2434, 2444, 2437, 2446, 2447, 2450, + 3220, 2453, 2455, 2462, 2454, 2456, 2463, 2464, 2465, 2473, + 2469, 3220, 2471, 2472, 2474, 2334, 3220, 3220, 2478, 3220, + 3220, 2481, 3220, 3220, 2483, 2486, 3220, 2490, 3220, 2496, + 2492, 2494, 2495, 2497, 3220, 2499, 3220, 3220, 2500, 2501, + 2504, 2506, 2508, 2513, 2515, 2509, 2516, 2519, 2520, 2523, + 2522, 2524, 2526, 2528, 2529, 2530, 2533, 2536, 2538, 2539, + 2540, 2542, 2549, 2554, 3220, 3220, 2541, 2551, 2543, 2556, + 2558, 2559, 2562, 2563, 3220, 2571, 2566, 2568, 2572, 2573, + + 2577, 2578, 2582, 2589, 2585, 2586, 2574, 3220, 2587, 3220, + 3220, 2588, 2592, 2599, 2596, 2601, 3220, 2603, 2604, 2610, + 2613, 3220, 3220, 3220, 2614, 2607, 2616, 2617, 2621, 2618, + 2620, 3220, 2624, 2627, 2630, 2631, 2634, 2641, 2643, 2645, + 2648, 3220, 3220, 2654, 2651, 2652, 2650, 2653, 2656, 2658, + 2660, 3220, 2662, 2661, 2666, 2667, 2669, 2671, 3220, 2673, + 2677, 2679, 2681, 2683, 2685, 2684, 3220, 2686, 2687, 3220, + 2698, 3220, 3220, 2688, 2701, 2691, 2704, 2706, 2710, 2699, + 2707, 2716, 2713, 2714, 3220, 3220, 2636, 3220, 3220, 2715, + 2719, 2720, 2722, 2723, 2726, 2727, 2728, 2729, 2730, 2734, + + 2735, 2739, 2741, 2743, 2744, 3220, 2751, 3220, 2745, 2756, + 2749, 2757, 3220, 2760, 2758, 2747, 3220, 3220, 3220, 2768, + 2761, 2765, 3220, 2771, 2775, 2777, 2778, 2779, 2785, 2781, + 2787, 3220, 2782, 2788, 2790, 2791, 2792, 2793, 2794, 2799, + 2795, 2796, 2810, 2811, 3220, 2814, 2805, 2807, 2818, 2820, + 2822, 2823, 2824, 2827, 2828, 2831, 2830, 2837, 2833, 2839, + 3220, 2843, 2834, 3220, 2845, 2847, 2855, 2857, 2861, 2858, + 2865, 3220, 2866, 3220, 2869, 2870, 3220, 3220, 2871, 2873, + 2876, 3220, 2877, 2862, 2874, 2878, 2883, 2884, 3220, 3220, + 2885, 2887, 2888, 3220, 3220, 3220, 2894, 3220, 2897, 3220, + + 2899, 2891, 3220, 2900, 2903, 2907, 2908, 2909, 2910, 2911, + 2912, 2914, 3220, 2920, 3220, 2922, 3220, 2917, 2924, 3220, + 2933, 2926, 2934, 2927, 2935, 2936, 3220, 3220, 3220, 2937, + 2938, 2942, 2943, 2945, 2944, 2947, 2949, 2951, 2948, 2954, + 2956, 2965, 2966, 2973, 2969, 3220, 2967, 2970, 2976, 2979, + 2977, 2975, 2978, 2980, 2984, 2985, 2986, 2987, 2995, 2996, + 2992, 3004, 3002, 3008, 3009, 2993, 3015, 3017, 3018, 3019, + 3020, 3026, 3022, 3023, 3220, 3024, 3027, 3028, 3030, 3031, + 3035, 3033, 3044, 3048, 3037, 3050, 3034, 3055, 3051, 3056, + 3059, 3060, 3061, 3220, 3062, 3064, 3066, 3068, 3070, 3072, + + 3073, 3074, 3077, 3079, 3082, 3084, 3088, 3220, 3089, 3220, + 3220, 3093, 3090, 3096, 3100, 3102, 3220, 3220, 3220, 3128, + 3135, 3142, 3149, 3156, 94, 3163, 3170, 3177, 3184, 3191, + 3198, 3205, 3212 } ; -static yyconst flex_int16_t yy_def[1625] = +static yyconst flex_int16_t yy_def[1634] = { 0, - 1610, 1, 1611, 1611, 1612, 1612, 1613, 1613, 1614, 1614, - 1615, 1615, 1610, 1616, 1610, 1610, 1610, 1610, 1617, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1618, - 1610, 1610, 1610, 1618, 1619, 1610, 1610, 1610, 1619, 1620, - 1610, 1610, 1610, 1610, 1620, 1621, 1610, 1610, 1610, 1621, - 1622, 1610, 1623, 1610, 1622, 1622, 1616, 1616, 1610, 1624, - 1617, 1624, 1617, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1618, 1618, 1619, 1619, 1620, 1620, 1610, 1621, - 1621, 1622, 1622, 1623, 1623, 1622, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1622, 1616, 1616, 1616, 1616, 1616, 1616, - - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1622, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - - 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, - 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1622, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1622, 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1610, 1610, 1616, - 1610, 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1610, - 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, - - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1622, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1610, 1622, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1610, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - - 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1610, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - - 1616, 1616, 1616, 1616, 1610, 1616, 1610, 1616, 1616, 1616, - 1610, 1616, 1610, 1616, 1610, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, - 1616, 1610, 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - - 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1610, 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1610, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1610, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1610, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1610, 1610, 1616, 1610, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, - 1610, 1616, 1610, 1610, 1616, 1616, 1616, 1616, 1616, 1616, - 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1610, 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1610, - - 1616, 1616, 1616, 1610, 1616, 1610, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1610, - 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1610, 1616, 1610, 1616, 1616, 1616, 1616, 1610, 1616, - - 1616, 1610, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1610, - 1610, 1616, 1610, 1610, 1616, 1610, 1610, 1616, 1616, 1610, - 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1610, - 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1610, 1610, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1610, - - 1616, 1610, 1610, 1616, 1616, 1616, 1616, 1616, 1610, 1616, - 1616, 1616, 1616, 1610, 1610, 1610, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1610, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, - 1610, 1616, 1610, 1610, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1610, 1610, 1616, 1610, 1610, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1610, 1616, - - 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1610, 1610, 1610, - 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1610, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1610, 1616, 1610, 1616, 1616, 1610, 1610, 1616, - 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1610, - 1610, 1616, 1616, 1616, 1610, 1610, 1610, 1616, 1610, 1616, - 1610, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, 1616, - - 1616, 1616, 1616, 1610, 1616, 1610, 1616, 1610, 1616, 1616, - 1610, 1616, 1616, 1616, 1616, 1616, 1616, 1610, 1610, 1610, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1610, 1616, 1616, 1616, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1610, 1616, - - 1610, 1610, 1616, 1616, 1616, 1616, 1616, 1610, 1610, 0, - 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, - 1610, 1610, 1610, 1610 + 1619, 1, 1620, 1620, 1621, 1621, 1622, 1622, 1623, 1623, + 1624, 1624, 1619, 1625, 1619, 1619, 1619, 1619, 1626, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1627, + 1619, 1619, 1619, 1627, 1628, 1619, 1619, 1619, 1628, 1629, + 1619, 1619, 1619, 1619, 1629, 1630, 1619, 1619, 1619, 1630, + 1631, 1619, 1632, 1619, 1631, 1631, 1625, 1625, 1619, 1633, + 1626, 1633, 1626, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1627, 1627, 1628, 1628, 1629, 1629, 1619, 1630, + 1630, 1631, 1631, 1632, 1632, 1631, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1631, 1625, 1625, 1625, 1625, 1625, 1625, + + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1631, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + + 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, + 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1631, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1631, 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1619, 1619, 1625, + 1619, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1619, + 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, + + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1631, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1619, 1631, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + + 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + + 1625, 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1619, 1625, + 1625, 1625, 1619, 1625, 1619, 1625, 1619, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1619, + 1625, 1625, 1625, 1625, 1619, 1619, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + + 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1619, 1619, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, + + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1619, 1625, 1619, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1619, 1625, 1625, 1625, 1625, 1619, 1625, 1619, 1619, 1625, + 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, + 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + + 1625, 1619, 1625, 1625, 1619, 1625, 1625, 1625, 1619, 1625, + 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1619, 1619, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, + 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1619, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1619, + + 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1619, 1625, 1625, + 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1619, 1625, 1625, 1625, 1625, 1619, 1619, 1625, 1619, + 1619, 1625, 1619, 1619, 1625, 1625, 1619, 1625, 1619, 1625, + 1625, 1625, 1625, 1625, 1619, 1625, 1619, 1619, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1619, 1619, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, + + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1619, + 1619, 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, + 1625, 1619, 1619, 1619, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1619, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1619, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1619, + 1625, 1619, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1619, 1619, 1625, 1619, 1619, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + + 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1619, 1625, 1625, + 1625, 1625, 1619, 1625, 1625, 1625, 1619, 1619, 1619, 1625, + 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1619, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1619, 1625, 1619, 1625, 1625, 1619, 1619, 1625, 1625, + 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1619, 1619, + 1625, 1625, 1625, 1619, 1619, 1619, 1625, 1619, 1625, 1619, + + 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1619, 1625, 1619, 1625, 1619, 1625, 1625, 1619, + 1625, 1625, 1625, 1625, 1625, 1625, 1619, 1619, 1619, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + 1625, 1625, 1625, 1619, 1625, 1625, 1625, 1625, 1625, 1625, + + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1619, 1625, 1619, + 1619, 1625, 1625, 1625, 1625, 1625, 1619, 1619, 0, 1619, + 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + 1619, 1619, 1619 } ; -static yyconst flex_int16_t yy_nxt[3241] = +static yyconst flex_int16_t yy_nxt[3260] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, 14, 18, 20, 21, 14, 22, 23, 24, 25, 14, @@ -1088,238 +1091,240 @@ static yyconst flex_int16_t yy_nxt[3241] = 612, 68, 615, 68, 617, 613, 618, 614, 68, 68, 68, 68, 619, 622, 68, 624, 68, 68, 68, 625, 133, 68, 616, 621, 68, 627, 620, 68, 68, 68, - 68, 68, 626, 636, 623, 68, 68, 68, 133, 68, - 68, 640, 630, 628, 68, 637, 68, 68, 643, 659, - 639, 629, 68, 641, 642, 631, 638, 632, 68, 68, - 68, 633, 644, 634, 645, 647, 68, 649, 635, 68, - - 68, 652, 648, 68, 646, 651, 68, 68, 653, 68, - 650, 68, 660, 654, 657, 655, 68, 658, 68, 664, - 68, 661, 665, 68, 68, 667, 662, 68, 666, 68, - 68, 68, 668, 656, 663, 68, 68, 68, 68, 68, - 671, 68, 68, 68, 670, 68, 669, 673, 675, 68, - 678, 68, 679, 68, 68, 672, 674, 68, 683, 676, - 682, 680, 68, 677, 68, 68, 716, 684, 68, 681, - 685, 68, 687, 686, 688, 68, 689, 68, 693, 68, - 690, 68, 68, 691, 68, 68, 692, 696, 695, 68, - 68, 68, 694, 68, 698, 699, 68, 700, 703, 68, - - 68, 68, 702, 68, 68, 68, 697, 706, 68, 701, - 704, 68, 68, 68, 68, 68, 711, 68, 705, 712, - 714, 707, 717, 68, 708, 710, 715, 68, 709, 718, - 68, 713, 720, 68, 68, 68, 68, 724, 719, 68, - 68, 68, 68, 68, 68, 68, 68, 723, 732, 721, - 722, 726, 131, 68, 68, 68, 733, 725, 729, 727, - 730, 68, 68, 68, 68, 68, 731, 734, 728, 735, - 737, 68, 68, 740, 741, 68, 68, 736, 68, 738, - 68, 745, 743, 68, 68, 68, 739, 68, 746, 68, - 742, 747, 749, 68, 68, 68, 68, 68, 744, 748, - - 752, 754, 751, 68, 68, 750, 68, 756, 68, 68, - 68, 68, 68, 753, 68, 757, 755, 68, 68, 758, - 764, 760, 68, 759, 68, 68, 68, 68, 848, 761, - 763, 767, 762, 765, 768, 770, 68, 766, 769, 68, - 68, 772, 773, 68, 68, 771, 774, 68, 68, 778, - 68, 779, 68, 777, 68, 68, 776, 780, 68, 775, - 781, 68, 782, 68, 68, 787, 786, 783, 784, 788, - 68, 68, 68, 68, 68, 68, 789, 790, 785, 796, - 68, 791, 68, 68, 68, 68, 792, 68, 793, 68, - 794, 795, 68, 68, 68, 801, 68, 797, 799, 805, - - 68, 798, 68, 802, 800, 807, 68, 809, 68, 806, - 803, 808, 811, 68, 68, 810, 813, 68, 804, 68, - 815, 68, 68, 68, 814, 68, 68, 68, 817, 68, - 820, 819, 68, 818, 812, 824, 68, 68, 822, 825, - 68, 68, 816, 823, 68, 821, 826, 827, 68, 68, - 831, 68, 68, 68, 68, 68, 829, 828, 834, 68, - 830, 68, 68, 68, 68, 838, 68, 68, 68, 68, - 68, 68, 851, 832, 68, 835, 843, 833, 844, 836, - 837, 839, 845, 68, 68, 841, 68, 68, 849, 853, - 850, 840, 842, 846, 847, 68, 68, 68, 852, 68, - - 68, 68, 68, 68, 856, 68, 859, 68, 68, 68, - 68, 68, 68, 68, 129, 855, 865, 862, 857, 866, - 68, 858, 854, 860, 863, 867, 861, 864, 868, 68, - 68, 68, 68, 876, 872, 68, 874, 871, 869, 875, - 873, 68, 877, 68, 68, 870, 68, 68, 68, 881, - 68, 878, 68, 882, 68, 883, 68, 68, 68, 68, - 68, 879, 68, 889, 68, 888, 68, 880, 68, 884, - 68, 885, 68, 68, 68, 897, 68, 887, 894, 890, - 899, 891, 68, 886, 68, 892, 68, 898, 896, 893, - 68, 903, 68, 895, 68, 901, 68, 900, 68, 904, - - 905, 907, 68, 68, 68, 910, 68, 911, 909, 68, - 902, 68, 68, 912, 68, 913, 68, 68, 906, 68, - 908, 68, 914, 68, 915, 68, 916, 921, 68, 68, - 919, 918, 68, 923, 917, 68, 920, 68, 68, 68, - 68, 68, 926, 68, 931, 928, 68, 68, 925, 922, - 68, 68, 68, 68, 935, 68, 68, 924, 927, 929, - 930, 936, 68, 937, 940, 68, 68, 932, 68, 939, - 933, 934, 941, 938, 68, 943, 68, 68, 68, 68, - 949, 946, 68, 68, 947, 68, 942, 950, 944, 68, - 68, 68, 951, 954, 952, 955, 948, 945, 68, 956, - - 68, 68, 68, 68, 953, 68, 68, 68, 960, 957, - 68, 962, 963, 68, 68, 964, 68, 68, 68, 68, - 958, 971, 959, 68, 68, 965, 68, 68, 961, 68, - 969, 968, 970, 68, 966, 68, 967, 68, 977, 68, - 976, 978, 981, 972, 973, 980, 68, 68, 974, 68, - 975, 68, 982, 979, 68, 68, 989, 68, 990, 68, - 984, 68, 68, 68, 986, 983, 988, 987, 68, 68, - 68, 68, 68, 985, 68, 997, 992, 68, 68, 1000, - 68, 68, 991, 994, 68, 1002, 993, 1003, 998, 996, - 68, 68, 68, 68, 1005, 995, 999, 1004, 1001, 68, - - 68, 1009, 68, 1007, 1006, 1010, 68, 1013, 68, 1008, - 68, 68, 68, 68, 68, 68, 68, 1017, 68, 1018, - 1011, 1019, 68, 1020, 1014, 1012, 68, 68, 1015, 1024, - 68, 1016, 68, 68, 1028, 1021, 68, 1023, 1022, 68, - 68, 1025, 128, 68, 1026, 1027, 1032, 68, 1029, 1031, - 1033, 68, 68, 1035, 68, 68, 68, 68, 1030, 68, - 68, 1034, 1037, 68, 68, 1038, 68, 1036, 1041, 68, - 68, 1039, 68, 1042, 1047, 1040, 1046, 68, 68, 68, - 68, 1045, 1051, 68, 1053, 68, 1043, 1054, 68, 1044, - 1055, 1048, 1050, 68, 1057, 68, 1056, 1049, 68, 68, - - 1052, 1059, 68, 1061, 68, 1063, 68, 68, 1062, 68, - 68, 68, 68, 68, 68, 68, 1058, 1071, 68, 68, - 1073, 1064, 68, 1065, 68, 68, 68, 1060, 1066, 1076, - 68, 1067, 1068, 1069, 1075, 1070, 68, 68, 68, 1077, - 68, 1072, 1074, 1078, 68, 1081, 1079, 68, 68, 1085, - 68, 68, 1080, 1084, 68, 68, 1083, 1087, 1088, 68, - 1089, 68, 68, 68, 1082, 68, 68, 1086, 68, 68, - 1090, 1091, 1095, 1097, 68, 1100, 68, 1092, 1096, 1098, - 1094, 68, 1093, 68, 1099, 1103, 1104, 68, 1105, 1107, - 68, 68, 1106, 68, 68, 68, 1110, 1102, 68, 68, - - 68, 68, 1101, 1112, 68, 68, 1115, 1109, 1117, 68, - 1111, 68, 1113, 68, 126, 68, 68, 1108, 1119, 1120, - 68, 1118, 1121, 68, 68, 1125, 68, 1116, 68, 1114, - 1122, 1123, 68, 68, 1124, 1128, 68, 68, 68, 68, - 68, 68, 68, 1133, 1126, 1127, 68, 1130, 1135, 68, - 1137, 1134, 68, 68, 68, 68, 1136, 1129, 1131, 68, - 1132, 1138, 1144, 1140, 1141, 1142, 68, 68, 68, 68, - 1139, 68, 1146, 1143, 68, 68, 1147, 1148, 68, 68, - 1151, 68, 1149, 68, 68, 1145, 68, 68, 68, 1150, - 68, 68, 68, 1159, 68, 1153, 1154, 1158, 1155, 68, - - 68, 68, 1152, 1156, 1163, 68, 1165, 1157, 1160, 1161, - 68, 68, 1166, 1162, 68, 68, 1167, 68, 1171, 1168, - 1164, 68, 68, 68, 68, 124, 1172, 1175, 68, 68, - 68, 68, 68, 1169, 1179, 68, 68, 1170, 1174, 68, - 1177, 1173, 1176, 1178, 1180, 68, 68, 68, 1181, 1185, - 1182, 1183, 1184, 68, 68, 68, 68, 68, 68, 1187, - 1188, 1192, 68, 1186, 1194, 68, 1191, 1193, 68, 68, - 1189, 68, 68, 1196, 1199, 68, 1197, 68, 68, 68, - 68, 1190, 1202, 68, 68, 1198, 1200, 1195, 1201, 68, - 1203, 68, 1204, 1206, 68, 68, 1205, 68, 68, 68, - - 1208, 68, 1207, 1211, 68, 1214, 68, 1209, 68, 68, - 68, 68, 1210, 1215, 68, 1217, 1216, 1212, 68, 68, - 1213, 68, 68, 1225, 68, 68, 68, 68, 1226, 68, - 1219, 68, 1229, 1223, 1218, 1230, 68, 1221, 1220, 1227, - 1222, 68, 1228, 1224, 1231, 68, 1233, 68, 1234, 68, - 68, 1236, 68, 68, 1232, 1237, 68, 68, 1240, 68, - 68, 68, 1239, 1242, 68, 68, 68, 1244, 68, 1235, - 68, 1245, 1238, 68, 1246, 1248, 68, 1250, 68, 1241, - 1251, 68, 68, 1243, 68, 1249, 68, 1253, 68, 1247, - 68, 1254, 68, 68, 68, 1256, 1252, 68, 68, 1260, - - 1255, 68, 68, 1265, 68, 1258, 68, 1262, 68, 1257, - 1263, 68, 1261, 68, 1259, 1266, 1264, 68, 1269, 68, - 1270, 1273, 1268, 68, 1267, 68, 68, 1271, 1276, 68, - 68, 1274, 1275, 1277, 68, 1272, 1278, 68, 68, 1280, - 68, 68, 68, 68, 1279, 68, 1284, 1285, 68, 1287, - 68, 1286, 1281, 68, 68, 1282, 68, 68, 1288, 68, - 1290, 1283, 1293, 68, 1292, 68, 68, 68, 68, 1294, - 68, 1296, 1298, 68, 1289, 68, 1297, 1291, 68, 1299, - 1301, 1295, 1300, 68, 1302, 68, 1303, 68, 1304, 68, - 1305, 68, 68, 68, 68, 1307, 68, 1308, 1309, 68, - - 68, 1310, 1311, 68, 68, 1314, 68, 1306, 1312, 1313, - 1315, 68, 1316, 68, 68, 1317, 68, 68, 68, 68, - 68, 1324, 68, 68, 1322, 68, 68, 68, 1319, 1320, - 1321, 68, 1318, 68, 1325, 68, 68, 68, 1334, 68, - 1323, 1332, 1333, 68, 1328, 68, 1327, 1330, 68, 1326, - 68, 1329, 68, 1331, 68, 68, 68, 1342, 1343, 68, - 68, 1339, 68, 1335, 68, 68, 1336, 1337, 68, 1344, - 1338, 68, 68, 1341, 1340, 1350, 68, 1345, 68, 68, - 1351, 68, 1346, 1347, 1348, 68, 68, 1352, 68, 68, - 1349, 1357, 1358, 68, 68, 1361, 68, 1353, 68, 1354, - - 1355, 1363, 68, 68, 1359, 68, 1356, 1364, 68, 68, - 1365, 68, 1360, 68, 1367, 68, 1368, 1362, 1369, 68, - 68, 68, 68, 68, 68, 1366, 1373, 1371, 1374, 1376, - 68, 1377, 68, 1378, 1370, 1372, 1388, 1375, 68, 1379, - 68, 1380, 68, 1381, 68, 68, 68, 68, 68, 1382, - 68, 1383, 68, 1384, 68, 68, 68, 1387, 1386, 1389, - 68, 68, 1385, 68, 1391, 68, 1393, 1390, 68, 1392, - 1394, 1397, 68, 68, 68, 1399, 68, 68, 68, 68, - 68, 1400, 1395, 1398, 1401, 68, 1402, 1396, 1404, 68, - 68, 1403, 68, 1406, 68, 1408, 68, 1407, 1409, 68, - - 1405, 1410, 68, 1411, 1412, 1413, 1414, 68, 68, 68, - 68, 68, 1415, 68, 68, 1416, 68, 68, 1419, 1423, - 68, 68, 68, 68, 68, 1427, 68, 68, 1417, 1418, - 1425, 1422, 1420, 68, 68, 68, 1421, 68, 1429, 68, - 1424, 68, 1426, 1428, 1432, 68, 1430, 68, 1434, 1436, - 68, 1437, 68, 68, 68, 68, 1443, 1433, 68, 1435, - 1431, 1438, 1439, 1442, 1441, 68, 1440, 68, 68, 68, - 68, 68, 1445, 1450, 1444, 1448, 68, 1446, 68, 1452, - 68, 68, 68, 1455, 68, 68, 68, 68, 68, 1449, - 1447, 68, 68, 68, 1456, 68, 1459, 1454, 1460, 68, - - 1453, 1451, 1457, 1463, 68, 68, 1458, 1465, 68, 68, - 1464, 1462, 1468, 68, 68, 1466, 68, 1461, 1469, 68, - 68, 1467, 1473, 68, 68, 68, 1471, 68, 1470, 1475, - 1477, 68, 1474, 1480, 68, 68, 1472, 1481, 68, 68, - 68, 1485, 68, 1610, 1476, 1484, 1482, 68, 1478, 1479, - 1486, 68, 1488, 1483, 1487, 68, 1489, 68, 68, 1490, - 1491, 68, 68, 68, 1494, 68, 68, 1492, 68, 68, - 68, 1493, 68, 1495, 1496, 68, 68, 68, 1504, 68, - 68, 1502, 68, 68, 1497, 68, 1498, 1505, 68, 1499, - 1500, 1506, 68, 68, 68, 1509, 1501, 1503, 1507, 1508, - - 68, 1511, 68, 1510, 68, 68, 68, 1512, 1513, 1514, - 1515, 1516, 1518, 68, 1519, 68, 1520, 68, 68, 68, - 1522, 1523, 68, 1517, 68, 68, 68, 68, 68, 1525, - 1521, 68, 1529, 68, 68, 68, 1524, 68, 68, 68, - 68, 1537, 68, 68, 1526, 1527, 68, 1528, 1531, 68, - 68, 1539, 1533, 1530, 1534, 1536, 1532, 68, 1538, 68, - 68, 1543, 1540, 68, 1535, 1542, 68, 1547, 1541, 1548, - 68, 68, 68, 1544, 68, 1545, 68, 68, 68, 68, - 68, 68, 1546, 68, 1549, 68, 68, 1560, 1557, 1550, - 1551, 1552, 1554, 1555, 68, 68, 68, 1553, 68, 1558, - - 1556, 1561, 68, 1562, 1559, 1565, 68, 1563, 1566, 68, - 68, 68, 68, 1567, 1564, 1570, 68, 68, 68, 68, - 68, 68, 1573, 68, 68, 1577, 68, 68, 68, 68, - 1568, 1569, 1572, 1578, 1582, 1571, 1576, 1574, 68, 1580, - 1575, 68, 1581, 68, 68, 1579, 1584, 1585, 68, 68, - 1583, 1586, 68, 68, 68, 68, 1587, 68, 1589, 68, - 1591, 68, 1592, 68, 1595, 68, 68, 68, 1598, 1599, - 68, 1588, 68, 1590, 1601, 68, 1602, 68, 1593, 1600, - 1594, 68, 68, 68, 1596, 1597, 68, 1604, 1603, 68, - 1610, 1605, 1608, 68, 1609, 68, 1610, 1610, 1610, 1610, - - 1610, 1610, 1606, 1610, 1610, 1610, 1610, 1610, 1607, 40, - 40, 40, 40, 40, 40, 40, 45, 45, 45, 45, - 45, 45, 45, 50, 50, 50, 50, 50, 50, 50, - 56, 56, 56, 56, 56, 56, 56, 61, 61, 61, - 61, 61, 61, 61, 71, 71, 1610, 71, 71, 71, - 71, 123, 123, 1610, 1610, 1610, 123, 123, 125, 125, - 1610, 1610, 125, 1610, 125, 127, 1610, 1610, 1610, 1610, - 1610, 127, 130, 130, 1610, 1610, 1610, 130, 130, 132, - 1610, 1610, 1610, 1610, 1610, 132, 134, 134, 1610, 134, - 134, 134, 134, 72, 72, 1610, 72, 72, 72, 72, - - 13, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, - 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, - 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, - 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610 + 68, 68, 626, 637, 623, 68, 68, 68, 133, 68, + 68, 641, 630, 628, 68, 638, 68, 68, 644, 660, + 640, 629, 68, 642, 643, 631, 639, 632, 68, 68, + 68, 633, 645, 634, 646, 648, 68, 650, 635, 68, + + 68, 653, 649, 636, 647, 652, 68, 68, 654, 68, + 651, 68, 68, 655, 658, 656, 68, 661, 68, 665, + 663, 68, 68, 662, 68, 659, 666, 68, 667, 668, + 68, 68, 68, 657, 68, 664, 68, 672, 68, 669, + 68, 670, 68, 671, 68, 68, 68, 674, 680, 676, + 673, 68, 68, 68, 679, 68, 68, 68, 68, 675, + 678, 684, 677, 685, 68, 68, 687, 683, 694, 686, + 681, 68, 688, 682, 689, 68, 690, 68, 68, 68, + 691, 68, 68, 692, 68, 68, 693, 697, 68, 68, + 695, 701, 68, 699, 700, 68, 68, 696, 68, 698, + + 68, 703, 704, 68, 68, 705, 68, 707, 702, 68, + 68, 68, 68, 68, 68, 68, 706, 712, 708, 713, + 68, 68, 716, 711, 715, 709, 68, 717, 718, 710, + 719, 714, 68, 68, 68, 68, 721, 68, 68, 722, + 725, 720, 68, 68, 68, 68, 723, 68, 68, 68, + 724, 727, 726, 733, 734, 68, 68, 68, 68, 68, + 735, 730, 728, 731, 68, 68, 68, 68, 68, 732, + 729, 736, 738, 743, 68, 740, 68, 68, 737, 68, + 739, 741, 68, 745, 68, 747, 68, 742, 68, 749, + 68, 748, 68, 751, 744, 68, 68, 68, 68, 746, + + 68, 754, 750, 756, 753, 68, 68, 68, 68, 758, + 752, 68, 68, 68, 68, 759, 755, 68, 68, 757, + 68, 68, 760, 761, 762, 68, 766, 68, 68, 772, + 763, 68, 765, 767, 764, 770, 769, 768, 68, 771, + 68, 775, 68, 774, 68, 776, 68, 780, 773, 68, + 777, 68, 68, 779, 782, 778, 68, 781, 68, 68, + 784, 68, 68, 783, 68, 787, 789, 786, 790, 68, + 785, 68, 68, 68, 791, 68, 792, 68, 68, 68, + 68, 68, 788, 798, 793, 68, 68, 68, 797, 794, + 68, 795, 68, 796, 803, 799, 800, 807, 68, 801, + + 802, 804, 68, 68, 809, 68, 68, 811, 805, 810, + 68, 813, 68, 68, 815, 68, 68, 806, 808, 817, + 68, 816, 68, 68, 68, 68, 68, 822, 819, 812, + 821, 68, 820, 814, 68, 68, 68, 833, 68, 826, + 824, 827, 818, 825, 68, 68, 68, 829, 68, 823, + 828, 68, 68, 68, 831, 68, 836, 830, 68, 68, + 68, 68, 832, 68, 840, 68, 68, 68, 68, 68, + 68, 131, 844, 834, 68, 846, 839, 847, 835, 837, + 838, 848, 68, 849, 68, 841, 843, 68, 68, 853, + 851, 842, 845, 68, 68, 850, 68, 854, 852, 68, + + 68, 68, 68, 68, 68, 68, 68, 855, 859, 862, + 68, 68, 68, 68, 68, 68, 68, 868, 856, 858, + 860, 870, 869, 68, 861, 864, 857, 865, 863, 866, + 867, 68, 68, 68, 68, 68, 879, 68, 877, 874, + 872, 871, 876, 68, 878, 880, 68, 873, 68, 68, + 68, 68, 884, 881, 68, 875, 885, 68, 886, 68, + 68, 68, 68, 68, 882, 68, 892, 68, 68, 891, + 883, 68, 68, 887, 68, 68, 68, 68, 68, 888, + 902, 890, 897, 901, 893, 68, 894, 889, 68, 900, + 68, 895, 899, 896, 68, 68, 898, 68, 903, 904, + + 906, 68, 907, 68, 910, 68, 68, 908, 68, 68, + 129, 912, 68, 913, 905, 909, 914, 915, 68, 916, + 68, 68, 68, 911, 68, 917, 68, 918, 68, 68, + 68, 924, 68, 920, 922, 68, 68, 926, 68, 919, + 68, 68, 921, 68, 68, 923, 931, 929, 68, 68, + 68, 928, 68, 934, 68, 925, 68, 68, 68, 938, + 927, 68, 68, 930, 933, 940, 932, 939, 942, 935, + 68, 944, 68, 68, 936, 943, 937, 68, 941, 68, + 68, 947, 68, 945, 68, 68, 953, 68, 128, 68, + 950, 68, 68, 951, 948, 68, 68, 954, 955, 958, + + 956, 959, 68, 946, 949, 952, 68, 68, 960, 68, + 957, 68, 68, 68, 68, 967, 68, 964, 68, 966, + 961, 68, 68, 968, 68, 68, 68, 975, 962, 68, + 68, 963, 68, 68, 68, 68, 965, 973, 68, 969, + 972, 68, 970, 974, 971, 980, 68, 68, 68, 976, + 979, 984, 68, 977, 68, 978, 981, 983, 68, 982, + 68, 985, 987, 988, 68, 986, 68, 989, 68, 993, + 994, 68, 68, 990, 68, 992, 991, 68, 68, 68, + 68, 68, 1001, 68, 68, 996, 1004, 68, 995, 1006, + 68, 68, 998, 68, 68, 997, 1007, 68, 1000, 1002, + + 68, 1009, 1003, 1011, 999, 1005, 68, 68, 68, 1012, + 1010, 68, 68, 1008, 1017, 1013, 68, 68, 68, 68, + 68, 1014, 68, 68, 1021, 68, 68, 1022, 1023, 1015, + 1024, 1016, 1018, 68, 68, 1019, 68, 126, 1020, 1028, + 68, 68, 1025, 68, 68, 1032, 68, 124, 1029, 1026, + 68, 1027, 68, 1030, 68, 1031, 1033, 1037, 1035, 1036, + 68, 1038, 68, 68, 1034, 1040, 68, 68, 68, 68, + 68, 68, 1039, 1042, 68, 68, 68, 68, 1043, 1041, + 1046, 68, 1044, 1047, 1051, 68, 1045, 1052, 68, 68, + 68, 1050, 68, 1056, 68, 68, 1048, 1049, 1058, 68, + + 1059, 68, 1053, 1060, 68, 1066, 68, 1054, 68, 1055, + 1057, 68, 1062, 1063, 1061, 1064, 1068, 68, 68, 1067, + 68, 68, 68, 68, 68, 68, 68, 1076, 68, 1065, + 68, 68, 1078, 68, 1069, 68, 1070, 68, 1081, 68, + 68, 1071, 68, 1072, 1073, 1074, 1080, 1075, 68, 1083, + 1082, 68, 1086, 1079, 68, 68, 1077, 1084, 68, 1090, + 68, 68, 68, 1089, 68, 68, 1085, 1092, 1093, 68, + 1094, 1088, 68, 68, 68, 68, 68, 1097, 68, 68, + 1087, 1091, 1095, 68, 1100, 1101, 1102, 68, 1105, 68, + 1099, 68, 1096, 1098, 1103, 68, 1108, 1109, 68, 1104, + + 1106, 68, 1110, 1112, 68, 1107, 1111, 68, 68, 1115, + 68, 68, 68, 68, 68, 1117, 1114, 68, 1120, 68, + 1122, 1113, 1116, 68, 1118, 68, 68, 1125, 68, 1124, + 68, 1123, 1126, 68, 68, 68, 1127, 68, 1119, 1121, + 1128, 68, 68, 1129, 68, 68, 1132, 1131, 1134, 68, + 1130, 68, 68, 68, 68, 68, 1133, 68, 1139, 1141, + 1136, 68, 1140, 68, 68, 1135, 68, 1143, 68, 1142, + 1137, 68, 1138, 1148, 68, 68, 1150, 1146, 1144, 1145, + 1147, 68, 68, 68, 1152, 68, 68, 1153, 68, 1149, + 1154, 68, 68, 1155, 68, 1157, 68, 68, 68, 1151, + + 68, 68, 68, 68, 68, 1165, 68, 1164, 1156, 1159, + 1160, 1162, 1161, 1158, 68, 1167, 1169, 68, 68, 68, + 68, 1163, 1166, 68, 1171, 1172, 68, 68, 1168, 68, + 1177, 1173, 1174, 68, 68, 68, 68, 1619, 1175, 1178, + 1181, 68, 68, 68, 1170, 1185, 68, 68, 68, 1176, + 1180, 68, 1179, 68, 1182, 1183, 1186, 68, 1184, 68, + 1187, 68, 1188, 68, 1189, 68, 1190, 68, 68, 1193, + 68, 1191, 68, 1194, 1198, 68, 68, 1192, 68, 1197, + 1195, 1199, 1200, 68, 68, 68, 1205, 68, 1202, 68, + 1203, 1204, 68, 1196, 68, 1201, 68, 1206, 1208, 68, + + 68, 1207, 68, 1209, 68, 1212, 1210, 1213, 68, 68, + 68, 68, 68, 68, 1211, 1215, 68, 1218, 68, 1221, + 68, 68, 68, 68, 68, 1222, 1217, 68, 1224, 1214, + 68, 1219, 1216, 68, 1220, 68, 68, 1223, 1232, 68, + 68, 68, 1225, 1226, 1233, 68, 68, 1230, 1306, 1228, + 68, 1227, 68, 1234, 1229, 68, 1236, 1231, 1235, 1237, + 68, 1238, 68, 1239, 1240, 68, 1241, 68, 1243, 68, + 68, 1242, 1244, 68, 68, 1247, 68, 68, 68, 1246, + 1249, 68, 68, 68, 1251, 68, 1252, 68, 1253, 1245, + 1255, 68, 1257, 68, 1258, 68, 1248, 68, 68, 1260, + + 1250, 68, 68, 1254, 1256, 68, 68, 68, 68, 68, + 1261, 1263, 68, 68, 1262, 68, 68, 1267, 68, 1273, + 1265, 1272, 1269, 1259, 1268, 1270, 68, 68, 68, 1266, + 1264, 1277, 1271, 68, 1276, 68, 68, 1275, 68, 68, + 1278, 68, 68, 1283, 68, 1282, 68, 1274, 1279, 68, + 1280, 1285, 68, 1281, 1286, 68, 68, 1288, 68, 68, + 1287, 1289, 68, 1292, 1284, 68, 68, 68, 68, 1293, + 1294, 1296, 1290, 1295, 68, 68, 68, 68, 1291, 1298, + 1301, 68, 1300, 68, 68, 68, 68, 1302, 1297, 1304, + 68, 1307, 1308, 68, 1305, 68, 1299, 1310, 68, 1303, + + 1309, 1311, 68, 1312, 68, 1313, 68, 68, 68, 68, + 1317, 68, 68, 68, 1316, 1319, 68, 1318, 68, 1322, + 68, 68, 1314, 1321, 1323, 68, 1324, 68, 68, 1315, + 1320, 68, 68, 1325, 68, 68, 68, 1332, 68, 1330, + 68, 68, 68, 1327, 1328, 68, 1326, 1329, 68, 1333, + 68, 68, 68, 68, 68, 68, 1331, 1340, 1336, 1341, + 1342, 68, 1335, 68, 1338, 1343, 68, 1334, 68, 1339, + 68, 68, 1337, 1344, 68, 68, 1351, 1346, 68, 1348, + 68, 1345, 1352, 68, 68, 68, 68, 1353, 1347, 68, + 68, 1349, 1350, 1359, 68, 1354, 1360, 68, 68, 68, + + 68, 68, 1355, 1356, 68, 1357, 1363, 1366, 68, 1358, + 1367, 68, 1361, 68, 1370, 68, 68, 1362, 1364, 68, + 1365, 1372, 68, 1368, 1373, 68, 68, 1374, 68, 68, + 68, 1369, 68, 68, 1377, 1371, 68, 1376, 1378, 68, + 1380, 1375, 68, 68, 1382, 1385, 68, 1383, 68, 1379, + 1387, 1381, 1386, 68, 1425, 68, 1388, 68, 1384, 1389, + 68, 1390, 68, 68, 68, 68, 68, 1391, 68, 1392, + 68, 1393, 68, 68, 68, 1396, 1395, 1398, 68, 68, + 1394, 68, 1402, 68, 1397, 68, 1399, 1400, 1401, 68, + 1406, 68, 1403, 68, 1408, 68, 68, 68, 68, 68, + + 68, 1410, 1407, 68, 1404, 1409, 1416, 1411, 1405, 1413, + 68, 68, 1412, 68, 1415, 1417, 68, 1418, 68, 68, + 1414, 1419, 68, 1422, 1423, 68, 68, 68, 68, 1420, + 1424, 68, 68, 1421, 68, 68, 1428, 1432, 68, 68, + 68, 68, 68, 1436, 1426, 1427, 68, 68, 1434, 1431, + 1429, 68, 1438, 68, 1430, 68, 68, 68, 1433, 68, + 1435, 68, 1437, 68, 1441, 1446, 1443, 1445, 68, 68, + 68, 1439, 68, 68, 1452, 1444, 1442, 68, 1447, 1440, + 68, 1448, 1449, 68, 1450, 1451, 1453, 68, 1454, 68, + 68, 68, 1459, 68, 68, 1457, 1455, 68, 1461, 68, + + 68, 1464, 68, 68, 68, 68, 68, 68, 68, 1458, + 1456, 68, 1465, 1462, 1468, 1463, 1469, 68, 1460, 68, + 1466, 1472, 68, 68, 1467, 1474, 68, 1471, 1473, 1477, + 68, 1478, 68, 1470, 68, 68, 68, 1475, 1482, 68, + 68, 1476, 68, 68, 1486, 68, 68, 1480, 1484, 68, + 1489, 68, 1483, 1479, 1490, 68, 1481, 68, 1619, 68, + 1619, 1485, 1487, 1488, 1493, 1491, 1494, 68, 1495, 68, + 68, 1492, 1496, 68, 68, 1497, 1498, 68, 68, 1499, + 1500, 68, 68, 68, 1503, 68, 68, 1501, 68, 68, + 68, 1502, 1506, 1504, 1505, 68, 68, 68, 1513, 68, + + 68, 1511, 1507, 68, 1514, 1515, 68, 1508, 1509, 68, + 1517, 68, 68, 1516, 1520, 68, 1510, 1512, 1518, 68, + 68, 68, 68, 68, 68, 1527, 68, 1524, 1525, 68, + 1519, 1528, 68, 1529, 68, 1522, 68, 1531, 68, 68, + 1532, 1530, 1523, 1526, 1521, 68, 68, 68, 68, 68, + 68, 1534, 1533, 1538, 68, 68, 68, 68, 1535, 68, + 68, 68, 1546, 68, 1537, 1536, 68, 1540, 68, 1547, + 1539, 1548, 1543, 1549, 1541, 1542, 1545, 68, 68, 68, + 1552, 68, 68, 1556, 1544, 68, 1557, 68, 68, 68, + 68, 68, 68, 1551, 1554, 1553, 68, 68, 68, 68, + + 1559, 1555, 1550, 1558, 68, 68, 1561, 68, 68, 1560, + 1563, 1564, 1566, 1567, 68, 1562, 68, 1569, 1565, 1570, + 68, 68, 1574, 1568, 1573, 1571, 1572, 68, 1575, 68, + 68, 68, 68, 1579, 68, 68, 68, 1576, 68, 68, + 68, 1582, 68, 68, 1586, 68, 68, 68, 1581, 68, + 1577, 1578, 1587, 1580, 1591, 1585, 68, 1589, 1583, 1584, + 68, 1590, 68, 68, 1588, 1593, 1594, 68, 68, 1592, + 1595, 68, 68, 68, 68, 1596, 68, 1598, 68, 1600, + 68, 1601, 68, 1604, 68, 68, 68, 1607, 1608, 68, + 1597, 68, 1599, 1610, 68, 1611, 68, 1602, 1609, 1603, + + 68, 68, 68, 1605, 1606, 68, 1613, 1612, 68, 1619, + 1614, 1617, 68, 1618, 68, 1619, 1619, 1619, 1619, 1619, + 1619, 1615, 1619, 1619, 1619, 1619, 1619, 1616, 40, 40, + 40, 40, 40, 40, 40, 45, 45, 45, 45, 45, + 45, 45, 50, 50, 50, 50, 50, 50, 50, 56, + 56, 56, 56, 56, 56, 56, 61, 61, 61, 61, + 61, 61, 61, 71, 71, 1619, 71, 71, 71, 71, + 123, 123, 1619, 1619, 1619, 123, 123, 125, 125, 1619, + 1619, 125, 1619, 125, 127, 1619, 1619, 1619, 1619, 1619, + 127, 130, 130, 1619, 1619, 1619, 130, 130, 132, 1619, + + 1619, 1619, 1619, 1619, 132, 134, 134, 1619, 134, 134, + 134, 134, 72, 72, 1619, 72, 72, 72, 72, 13, + 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619 } ; -static yyconst flex_int16_t yy_chk[3241] = +static yyconst flex_int16_t yy_chk[3260] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1330,7 +1335,7 @@ static yyconst flex_int16_t yy_chk[3241] = 9, 151, 33, 6, 7, 7, 7, 7, 9, 7, 10, 10, 10, 44, 44, 7, 8, 8, 8, 8, 10, 8, 21, 33, 151, 21, 21, 8, 11, 11, - 11, 11, 11, 11, 1616, 20, 29, 20, 20, 11, + 11, 11, 11, 11, 1625, 20, 29, 20, 20, 11, 20, 29, 24, 21, 25, 20, 24, 28, 11, 12, 12, 12, 12, 12, 12, 74, 22, 22, 74, 25, @@ -1453,230 +1458,232 @@ static yyconst flex_int16_t yy_chk[3241] = 537, 531, 533, 539, 540, 533, 536, 533, 545, 543, 544, 533, 542, 533, 543, 544, 547, 546, 533, 548, - 558, 549, 545, 552, 543, 548, 549, 550, 550, 551, - 547, 554, 554, 550, 551, 550, 555, 552, 556, 558, - 557, 555, 559, 559, 560, 562, 556, 564, 560, 563, - 562, 565, 563, 550, 557, 566, 567, 569, 568, 571, - 566, 573, 576, 570, 565, 578, 564, 568, 570, 572, - 573, 577, 574, 579, 611, 567, 569, 574, 579, 571, - 578, 576, 580, 572, 582, 581, 611, 580, 590, 577, - 581, 583, 583, 582, 584, 588, 586, 589, 588, 584, - 586, 586, 587, 587, 591, 592, 587, 591, 590, 593, - 594, 595, 589, 596, 593, 594, 597, 595, 598, 598, - - 600, 599, 597, 602, 601, 603, 592, 601, 604, 596, - 599, 606, 605, 608, 607, 610, 606, 609, 600, 607, - 609, 602, 612, 614, 603, 605, 610, 612, 604, 613, - 616, 608, 615, 615, 613, 618, 617, 619, 614, 620, - 622, 619, 621, 623, 626, 627, 628, 618, 629, 616, - 617, 621, 56, 629, 637, 632, 630, 620, 626, 622, - 627, 630, 631, 633, 635, 634, 628, 631, 623, 632, - 634, 636, 639, 637, 638, 638, 640, 633, 641, 635, - 642, 642, 640, 643, 644, 645, 636, 647, 643, 646, - 639, 644, 646, 648, 650, 649, 651, 652, 641, 645, - - 649, 651, 648, 653, 655, 647, 654, 653, 656, 657, - 658, 659, 660, 650, 661, 654, 652, 663, 662, 655, - 661, 657, 664, 656, 667, 669, 745, 668, 745, 658, - 660, 664, 659, 662, 666, 668, 670, 663, 667, 666, - 672, 670, 671, 673, 674, 669, 671, 671, 683, 675, - 676, 676, 677, 674, 675, 678, 673, 677, 680, 672, - 678, 679, 679, 681, 682, 684, 683, 680, 681, 685, - 684, 686, 688, 687, 685, 691, 686, 687, 682, 691, - 689, 688, 692, 693, 694, 695, 688, 696, 688, 697, - 688, 689, 698, 699, 701, 696, 706, 692, 694, 700, - - 700, 693, 705, 697, 695, 702, 702, 705, 704, 701, - 698, 704, 707, 707, 708, 706, 709, 709, 699, 710, - 711, 711, 712, 713, 710, 714, 715, 717, 713, 716, - 716, 715, 718, 714, 708, 721, 719, 726, 718, 722, - 721, 723, 712, 719, 722, 717, 723, 724, 725, 727, - 728, 728, 724, 729, 730, 732, 726, 725, 731, 733, - 727, 736, 734, 731, 735, 735, 737, 738, 748, 739, - 750, 740, 748, 729, 746, 732, 740, 730, 742, 733, - 734, 736, 742, 742, 743, 738, 744, 749, 746, 750, - 747, 737, 739, 743, 744, 747, 751, 752, 749, 753, - - 754, 755, 756, 759, 753, 757, 756, 758, 761, 760, - 765, 762, 763, 769, 51, 752, 762, 759, 754, 763, - 764, 755, 751, 757, 760, 764, 758, 761, 765, 766, - 767, 768, 773, 773, 769, 770, 771, 768, 766, 772, - 770, 771, 775, 775, 772, 767, 776, 777, 778, 779, - 781, 776, 782, 779, 779, 780, 780, 783, 784, 785, - 787, 777, 788, 786, 791, 785, 789, 778, 786, 781, - 790, 782, 792, 793, 794, 794, 796, 784, 791, 787, - 796, 788, 795, 783, 797, 789, 798, 795, 793, 790, - 799, 800, 800, 792, 801, 798, 802, 797, 803, 801, - - 802, 804, 806, 808, 809, 809, 804, 810, 808, 819, - 799, 818, 810, 812, 812, 814, 814, 820, 803, 816, - 806, 822, 816, 817, 817, 821, 818, 823, 823, 824, - 821, 820, 825, 825, 819, 826, 822, 827, 828, 829, - 830, 832, 828, 834, 834, 830, 833, 835, 827, 824, - 836, 837, 838, 841, 838, 842, 839, 826, 829, 832, - 833, 839, 846, 840, 843, 843, 844, 835, 840, 842, - 836, 837, 844, 841, 847, 847, 848, 849, 850, 855, - 851, 850, 852, 853, 850, 851, 846, 852, 848, 854, - 856, 859, 853, 856, 854, 857, 850, 849, 858, 858, - - 857, 860, 861, 862, 855, 863, 864, 867, 862, 859, - 866, 864, 865, 865, 868, 866, 869, 870, 871, 872, - 860, 873, 861, 874, 875, 867, 873, 876, 863, 880, - 871, 870, 872, 879, 868, 878, 869, 881, 880, 885, - 879, 880, 885, 874, 875, 884, 884, 886, 876, 887, - 878, 888, 886, 881, 889, 890, 892, 891, 893, 893, - 888, 892, 894, 895, 890, 887, 891, 890, 896, 897, - 898, 899, 901, 889, 900, 900, 895, 908, 902, 904, - 905, 907, 894, 897, 904, 906, 896, 907, 901, 899, - 906, 910, 915, 914, 909, 898, 902, 908, 905, 909, - - 911, 914, 916, 911, 910, 915, 917, 918, 919, 911, - 920, 922, 918, 923, 924, 928, 925, 923, 926, 924, - 916, 925, 929, 926, 919, 917, 927, 931, 920, 930, - 930, 922, 932, 933, 934, 927, 935, 929, 928, 934, - 936, 931, 50, 937, 932, 933, 938, 938, 935, 937, - 939, 939, 941, 942, 942, 943, 945, 944, 936, 946, - 947, 941, 944, 948, 949, 945, 951, 943, 948, 950, - 954, 946, 956, 949, 953, 947, 952, 952, 955, 953, - 958, 951, 957, 957, 959, 959, 949, 960, 960, 950, - 961, 954, 956, 962, 964, 961, 962, 955, 965, 964, - - 958, 966, 967, 968, 968, 970, 966, 969, 969, 971, - 970, 972, 973, 974, 975, 977, 965, 976, 976, 978, - 978, 971, 979, 971, 983, 981, 986, 967, 971, 982, - 982, 972, 973, 974, 981, 975, 984, 985, 988, 983, - 989, 977, 979, 984, 987, 987, 985, 993, 991, 992, - 994, 998, 986, 991, 992, 996, 989, 994, 995, 995, - 996, 997, 999, 1000, 988, 1001, 1002, 993, 1005, 1003, - 997, 998, 1002, 1004, 1004, 1006, 1006, 999, 1003, 1005, - 1001, 1007, 1000, 1008, 1005, 1009, 1010, 1010, 1011, 1012, - 1009, 1013, 1011, 1011, 1012, 1014, 1015, 1008, 1016, 1017, - - 1018, 1015, 1007, 1017, 1019, 1021, 1020, 1014, 1022, 1023, - 1016, 1020, 1018, 1022, 45, 1025, 1031, 1013, 1025, 1026, - 1026, 1023, 1027, 1027, 1028, 1031, 1029, 1021, 1030, 1019, - 1028, 1029, 1034, 1036, 1030, 1037, 1037, 1038, 1039, 1042, - 1040, 1041, 1045, 1042, 1034, 1036, 1043, 1039, 1044, 1047, - 1047, 1043, 1048, 1044, 1049, 1050, 1045, 1038, 1040, 1055, - 1041, 1047, 1056, 1049, 1050, 1052, 1052, 1056, 1057, 1063, - 1048, 1058, 1058, 1055, 1059, 1062, 1059, 1060, 1060, 1064, - 1064, 1065, 1062, 1066, 1067, 1057, 1068, 1070, 1069, 1063, - 1074, 1073, 1072, 1073, 1079, 1066, 1067, 1072, 1068, 1077, - - 1075, 1080, 1065, 1069, 1078, 1078, 1080, 1070, 1074, 1075, - 1081, 1082, 1081, 1077, 1083, 1084, 1082, 1085, 1086, 1083, - 1079, 1087, 1089, 1086, 1090, 40, 1087, 1091, 1091, 1102, - 1092, 1093, 1094, 1084, 1094, 1095, 1096, 1085, 1090, 1101, - 1093, 1089, 1092, 1093, 1095, 1098, 1099, 1103, 1096, 1102, - 1098, 1099, 1101, 1105, 1107, 1108, 1109, 1110, 1112, 1105, - 1107, 1111, 1111, 1103, 1113, 1113, 1110, 1112, 1114, 1115, - 1108, 1116, 1117, 1115, 1118, 1118, 1116, 1129, 1119, 1122, - 1125, 1109, 1123, 1123, 1131, 1117, 1119, 1114, 1122, 1124, - 1124, 1126, 1125, 1127, 1127, 1130, 1126, 1132, 1133, 1134, - - 1130, 1138, 1129, 1133, 1135, 1136, 1136, 1131, 1140, 1137, - 1139, 1141, 1132, 1137, 1143, 1139, 1138, 1134, 1144, 1145, - 1135, 1146, 1147, 1149, 1149, 1150, 1151, 14, 1150, 1152, - 1141, 1153, 1153, 1146, 1140, 1154, 1154, 1144, 1143, 1151, - 1145, 1156, 1152, 1147, 1155, 1155, 1157, 1157, 1158, 1158, - 1159, 1160, 1160, 1162, 1156, 1161, 1161, 1164, 1165, 1165, - 1166, 1169, 1164, 1167, 1167, 1168, 1173, 1169, 1170, 1159, - 1177, 1170, 1162, 1171, 1171, 1172, 1172, 1174, 1174, 1166, - 1176, 1176, 1179, 1168, 1182, 1173, 1178, 1178, 1180, 1171, - 1181, 1179, 1183, 1184, 1185, 1181, 1177, 1186, 1187, 1185, - - 1180, 1188, 1189, 1190, 1193, 1183, 1200, 1187, 1190, 1182, - 1188, 1191, 1186, 1195, 1184, 1191, 1189, 1196, 1196, 1201, - 1197, 1200, 1195, 1204, 1193, 1197, 1198, 1198, 1204, 1203, - 1208, 1201, 1203, 1205, 1205, 1198, 1207, 1207, 1209, 1209, - 1210, 1211, 1212, 1215, 1208, 1213, 1213, 1215, 1216, 1217, - 1217, 1216, 1210, 1218, 1219, 1211, 1220, 1221, 1218, 1222, - 1220, 1212, 1223, 1224, 1222, 1226, 1227, 1223, 1228, 1224, - 1229, 1227, 1229, 1246, 1219, 1238, 1228, 1221, 1232, 1232, - 1238, 1226, 1235, 1235, 1239, 1239, 1241, 1241, 1243, 1244, - 1244, 1245, 1247, 1243, 1254, 1246, 1252, 1247, 1249, 1249, - - 1253, 1252, 1253, 1259, 1255, 1256, 1256, 1245, 1254, 1255, - 1257, 1257, 1258, 1258, 1260, 1259, 1261, 1262, 1263, 1264, - 1265, 1266, 1266, 1268, 1264, 1267, 1269, 1271, 1261, 1262, - 1263, 1270, 1260, 1272, 1267, 1273, 1274, 1275, 1276, 1276, - 1265, 1274, 1275, 1279, 1270, 1281, 1269, 1272, 1280, 1268, - 1282, 1271, 1283, 1273, 1284, 1285, 1286, 1286, 1288, 1288, - 1289, 1283, 1290, 1279, 1291, 1292, 1280, 1281, 1293, 1289, - 1282, 1294, 1297, 1285, 1284, 1295, 1295, 1290, 1298, 1299, - 1296, 1301, 1291, 1292, 1293, 1296, 1304, 1297, 1305, 1307, - 1294, 1305, 1306, 1306, 1308, 1310, 1310, 1298, 1311, 1299, - - 1301, 1312, 1312, 1318, 1307, 1319, 1304, 1313, 1313, 1317, - 1317, 1320, 1308, 1321, 1319, 1322, 1320, 1311, 1321, 1323, - 1325, 1326, 1328, 1327, 1342, 1318, 1326, 1323, 1327, 1329, - 1329, 1330, 1330, 1331, 1322, 1325, 1342, 1328, 1331, 1332, - 1332, 1333, 1333, 1335, 1338, 1336, 1337, 1339, 1335, 1336, - 1340, 1337, 1341, 1338, 1345, 1346, 1344, 1341, 1340, 1344, - 1347, 1349, 1339, 1351, 1346, 1348, 1348, 1345, 1352, 1347, - 1349, 1353, 1353, 1356, 1354, 1355, 1355, 1359, 1360, 1357, - 1365, 1356, 1351, 1354, 1357, 1371, 1359, 1352, 1362, 1362, - 1372, 1360, 1366, 1366, 1367, 1368, 1368, 1367, 1369, 1369, - - 1365, 1370, 1370, 1371, 1372, 1373, 1374, 1374, 1375, 1378, - 1373, 1381, 1375, 1382, 1383, 1378, 1384, 1385, 1382, 1386, - 1386, 1387, 1388, 1389, 1390, 1390, 1393, 1391, 1381, 1381, - 1388, 1385, 1383, 1392, 1394, 1395, 1384, 1396, 1392, 1407, - 1387, 1400, 1389, 1391, 1395, 1398, 1393, 1402, 1398, 1401, - 1401, 1402, 1403, 1405, 1406, 1412, 1412, 1396, 1411, 1400, - 1394, 1403, 1405, 1411, 1407, 1413, 1406, 1415, 1416, 1417, - 1418, 1419, 1415, 1420, 1413, 1418, 1421, 1416, 1420, 1422, - 1422, 1424, 1425, 1426, 1426, 1427, 1428, 1429, 1430, 1419, - 1417, 1432, 1433, 1431, 1427, 1438, 1430, 1425, 1431, 1439, - - 1424, 1421, 1428, 1434, 1434, 1435, 1429, 1437, 1437, 1442, - 1435, 1433, 1440, 1440, 1443, 1438, 1444, 1432, 1441, 1441, - 1446, 1439, 1445, 1445, 1447, 1448, 1443, 1454, 1442, 1447, - 1449, 1450, 1446, 1451, 1451, 1449, 1444, 1453, 1453, 1456, - 1457, 1458, 1458, 13, 1448, 1457, 1454, 1461, 1450, 1450, - 1459, 1459, 1461, 1456, 1460, 1460, 1462, 1462, 1464, 1464, - 1466, 1466, 1467, 1470, 1471, 1471, 1475, 1467, 1472, 1474, - 1476, 1470, 1477, 1472, 1474, 1478, 1479, 1482, 1483, 1483, - 1493, 1479, 1497, 1484, 1475, 1495, 1476, 1484, 1499, 1477, - 1477, 1488, 1488, 1498, 1490, 1493, 1478, 1482, 1490, 1492, - - 1492, 1496, 1496, 1495, 1502, 1500, 1501, 1497, 1498, 1499, - 1500, 1501, 1503, 1503, 1505, 1505, 1507, 1507, 1509, 1510, - 1510, 1512, 1513, 1502, 1514, 1515, 1512, 1516, 1521, 1514, - 1509, 1517, 1521, 1522, 1525, 1523, 1513, 1524, 1526, 1527, - 1528, 1529, 1529, 1533, 1515, 1516, 1531, 1517, 1523, 1530, - 1534, 1531, 1525, 1522, 1526, 1528, 1524, 1532, 1530, 1536, - 1538, 1535, 1532, 1539, 1527, 1534, 1535, 1540, 1533, 1541, - 1542, 1544, 1540, 1536, 1541, 1538, 1543, 1545, 1546, 1547, - 1548, 1549, 1539, 1550, 1542, 1552, 1553, 1553, 1550, 1543, - 1544, 1545, 1547, 1548, 1551, 1557, 1554, 1546, 1555, 1551, - - 1549, 1554, 1556, 1555, 1552, 1558, 1560, 1556, 1559, 1559, - 1558, 1561, 1562, 1560, 1557, 1563, 1564, 1567, 1568, 1565, - 1563, 1569, 1567, 1570, 1571, 1571, 1573, 1578, 1572, 1576, - 1561, 1562, 1565, 1572, 1576, 1564, 1570, 1568, 1574, 1574, - 1569, 1575, 1575, 1577, 1580, 1573, 1578, 1579, 1579, 1581, - 1577, 1580, 1582, 1583, 1584, 1586, 1581, 1587, 1583, 1588, - 1586, 1589, 1587, 1590, 1590, 1591, 1592, 1593, 1593, 1594, - 1594, 1582, 1595, 1584, 1596, 1596, 1597, 1597, 1588, 1595, - 1589, 1598, 1600, 1604, 1591, 1592, 1603, 1600, 1598, 1605, - 0, 1603, 1606, 1606, 1607, 1607, 0, 0, 0, 0, - - 0, 0, 1604, 0, 0, 0, 0, 0, 1605, 1611, - 1611, 1611, 1611, 1611, 1611, 1611, 1612, 1612, 1612, 1612, - 1612, 1612, 1612, 1613, 1613, 1613, 1613, 1613, 1613, 1613, - 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1615, 1615, 1615, - 1615, 1615, 1615, 1615, 1617, 1617, 0, 1617, 1617, 1617, - 1617, 1618, 1618, 0, 0, 0, 1618, 1618, 1619, 1619, - 0, 0, 1619, 0, 1619, 1620, 0, 0, 0, 0, - 0, 1620, 1621, 1621, 0, 0, 0, 1621, 1621, 1622, - 0, 0, 0, 0, 0, 1622, 1623, 1623, 0, 1623, - 1623, 1623, 1623, 1624, 1624, 0, 1624, 1624, 1624, 1624, - - 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, - 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, - 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, - 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610 + 558, 549, 545, 533, 543, 548, 549, 550, 550, 551, + 547, 552, 556, 550, 551, 550, 554, 554, 555, 558, + 556, 557, 564, 555, 560, 552, 559, 559, 560, 562, + 565, 567, 566, 550, 562, 557, 563, 566, 568, 563, + 569, 564, 571, 565, 570, 573, 572, 568, 574, 570, + 567, 576, 578, 574, 573, 577, 579, 582, 580, 569, + 572, 579, 571, 580, 581, 588, 582, 578, 588, 581, + 576, 583, 583, 577, 584, 589, 586, 590, 592, 584, + 586, 586, 587, 587, 591, 595, 587, 591, 593, 594, + 589, 595, 596, 593, 594, 597, 599, 590, 600, 592, + + 602, 597, 598, 598, 601, 599, 603, 601, 596, 604, + 605, 610, 606, 608, 607, 611, 600, 606, 602, 607, + 616, 609, 610, 605, 609, 603, 614, 611, 612, 604, + 613, 608, 617, 612, 620, 613, 615, 615, 618, 616, + 619, 614, 621, 622, 619, 623, 617, 626, 627, 628, + 618, 621, 620, 629, 630, 631, 636, 632, 629, 630, + 631, 626, 622, 627, 633, 635, 637, 634, 638, 628, + 623, 632, 634, 639, 639, 636, 640, 641, 633, 642, + 635, 637, 645, 641, 643, 643, 644, 638, 646, 645, + 647, 644, 648, 647, 640, 649, 650, 651, 652, 642, + + 653, 650, 646, 652, 649, 654, 655, 656, 657, 654, + 648, 659, 658, 660, 661, 655, 651, 664, 663, 653, + 662, 669, 656, 657, 658, 668, 662, 665, 670, 669, + 659, 673, 661, 663, 660, 667, 665, 664, 671, 668, + 667, 672, 674, 671, 675, 672, 672, 676, 670, 678, + 673, 683, 676, 675, 678, 674, 677, 677, 679, 680, + 680, 681, 682, 679, 684, 683, 685, 682, 686, 687, + 681, 685, 688, 686, 687, 689, 688, 690, 694, 692, + 693, 696, 684, 692, 689, 695, 697, 698, 690, 689, + 699, 689, 700, 689, 697, 693, 694, 701, 701, 695, + + 696, 698, 706, 702, 703, 703, 705, 706, 699, 705, + 707, 708, 708, 709, 710, 710, 711, 700, 702, 712, + 712, 711, 713, 714, 715, 716, 717, 717, 714, 707, + 716, 718, 715, 709, 719, 727, 720, 729, 729, 722, + 719, 723, 713, 720, 722, 724, 723, 725, 726, 718, + 724, 728, 725, 730, 727, 731, 732, 726, 735, 733, + 734, 732, 728, 736, 736, 737, 738, 740, 739, 741, + 742, 56, 740, 730, 745, 742, 735, 744, 731, 733, + 734, 744, 744, 745, 748, 737, 739, 746, 747, 749, + 747, 738, 741, 750, 749, 746, 751, 750, 748, 752, + + 753, 754, 756, 755, 757, 758, 760, 751, 755, 758, + 759, 763, 764, 761, 762, 765, 766, 764, 752, 754, + 756, 766, 765, 767, 757, 760, 753, 761, 759, 762, + 763, 768, 769, 770, 771, 775, 775, 772, 773, 770, + 768, 767, 772, 773, 774, 777, 777, 769, 778, 774, + 779, 780, 781, 778, 783, 771, 781, 781, 782, 782, + 784, 785, 786, 787, 779, 789, 788, 790, 793, 787, + 780, 788, 791, 783, 792, 794, 798, 795, 797, 784, + 798, 786, 793, 797, 789, 799, 790, 785, 796, 796, + 800, 791, 795, 792, 801, 805, 794, 803, 799, 800, + + 802, 802, 803, 804, 806, 808, 810, 804, 821, 806, + 51, 810, 811, 811, 801, 805, 812, 814, 814, 816, + 816, 812, 818, 808, 820, 818, 819, 819, 822, 823, + 824, 825, 825, 821, 823, 826, 827, 827, 828, 820, + 829, 832, 822, 830, 831, 824, 832, 830, 834, 837, + 835, 829, 836, 836, 838, 826, 839, 840, 843, 840, + 828, 845, 841, 831, 835, 842, 834, 841, 844, 837, + 842, 846, 846, 844, 838, 845, 839, 847, 843, 849, + 850, 850, 851, 847, 852, 858, 854, 853, 50, 856, + 853, 854, 855, 853, 851, 857, 859, 855, 856, 859, + + 857, 860, 862, 849, 852, 853, 860, 861, 861, 863, + 858, 864, 865, 866, 867, 868, 868, 865, 869, 867, + 862, 870, 871, 869, 872, 874, 873, 876, 863, 877, + 875, 864, 876, 878, 879, 881, 866, 874, 882, 870, + 873, 884, 871, 875, 872, 882, 890, 883, 892, 877, + 881, 887, 887, 878, 891, 879, 883, 884, 888, 883, + 889, 888, 890, 891, 893, 889, 894, 892, 897, 895, + 896, 896, 898, 893, 895, 894, 893, 899, 900, 901, + 902, 903, 903, 904, 905, 898, 907, 908, 897, 909, + 910, 907, 900, 911, 909, 899, 910, 913, 902, 904, + + 914, 912, 905, 914, 901, 908, 912, 917, 918, 914, + 913, 919, 920, 911, 921, 917, 922, 923, 925, 921, + 926, 918, 927, 928, 926, 929, 931, 927, 928, 919, + 929, 920, 922, 930, 934, 923, 932, 45, 925, 933, + 933, 935, 930, 936, 938, 937, 939, 40, 934, 931, + 937, 932, 940, 935, 942, 936, 938, 942, 940, 941, + 941, 943, 943, 945, 939, 946, 946, 947, 948, 949, + 950, 951, 945, 948, 953, 952, 955, 954, 949, 947, + 952, 958, 950, 953, 956, 956, 951, 957, 959, 960, + 962, 955, 957, 961, 961, 969, 953, 954, 963, 963, + + 964, 964, 958, 965, 971, 972, 972, 959, 965, 960, + 962, 966, 968, 969, 966, 970, 974, 968, 973, 973, + 970, 974, 975, 976, 977, 978, 979, 980, 980, 971, + 981, 982, 982, 983, 975, 987, 975, 985, 986, 986, + 990, 975, 988, 976, 977, 978, 985, 979, 989, 988, + 987, 991, 991, 983, 992, 993, 981, 989, 995, 996, + 998, 997, 1003, 995, 996, 1000, 990, 998, 999, 999, + 1000, 993, 1002, 1001, 1004, 1005, 1007, 1003, 1006, 1011, + 992, 997, 1001, 1009, 1006, 1007, 1008, 1008, 1010, 1010, + 1005, 1012, 1002, 1004, 1009, 1017, 1013, 1014, 1014, 1009, + + 1011, 1013, 1015, 1016, 1018, 1012, 1015, 1015, 1016, 1019, + 1020, 1021, 1022, 1023, 1019, 1021, 1018, 1025, 1024, 1027, + 1026, 1017, 1020, 1024, 1022, 1026, 1029, 1030, 1030, 1029, + 1032, 1027, 1031, 1031, 1039, 1033, 1032, 1034, 1023, 1025, + 1033, 1035, 1037, 1034, 1041, 1043, 1039, 1037, 1042, 1042, + 1035, 1044, 1045, 1046, 1047, 1050, 1041, 1048, 1047, 1049, + 1044, 1053, 1048, 14, 1049, 1043, 1052, 1052, 1054, 1050, + 1045, 1055, 1046, 1057, 1057, 1060, 1061, 1054, 1052, 1053, + 1055, 1061, 1062, 1063, 1063, 1064, 1067, 1064, 1068, 1060, + 1065, 1065, 1070, 1067, 1069, 1069, 1074, 1071, 1072, 1062, + + 1073, 1075, 1077, 1078, 1079, 1078, 1080, 1077, 1068, 1071, + 1072, 1074, 1073, 1070, 1082, 1080, 1083, 1083, 1084, 1085, + 1089, 1075, 1079, 1086, 1085, 1086, 1087, 1088, 1082, 1090, + 1091, 1087, 1088, 1094, 1092, 1091, 1095, 13, 1089, 1092, + 1096, 1096, 1097, 1099, 1084, 1099, 1098, 1100, 1101, 1090, + 1095, 1107, 1094, 1106, 1097, 1098, 1100, 1103, 1098, 1104, + 1101, 1108, 1103, 1110, 1104, 1113, 1106, 1112, 1114, 1110, + 1115, 1107, 1117, 1112, 1116, 1116, 1119, 1108, 1122, 1115, + 1113, 1117, 1118, 1118, 1120, 1121, 1123, 1123, 1120, 1124, + 1121, 1122, 1127, 1114, 1130, 1119, 1131, 1124, 1128, 1128, + + 1132, 1127, 1129, 1129, 1135, 1132, 1130, 1133, 1133, 1137, + 1136, 1138, 1139, 1140, 1131, 1136, 1146, 1139, 1141, 1142, + 1142, 1143, 1144, 1145, 1147, 1143, 1138, 1149, 1145, 1135, + 1150, 1140, 1137, 1151, 1141, 1152, 1153, 1144, 1155, 1155, + 1157, 1156, 1146, 1147, 1156, 1158, 1236, 1152, 1236, 1150, + 1162, 1149, 1165, 1157, 1151, 1159, 1159, 1153, 1158, 1160, + 1160, 1161, 1161, 1162, 1163, 1163, 1164, 1164, 1166, 1166, + 1168, 1165, 1167, 1167, 1170, 1171, 1171, 1172, 1175, 1170, + 1173, 1173, 1174, 1176, 1175, 1179, 1176, 1177, 1177, 1168, + 1178, 1178, 1180, 1180, 1182, 1182, 1172, 1183, 1184, 1184, + + 1174, 1185, 1186, 1177, 1179, 1188, 1187, 1189, 1190, 1192, + 1185, 1187, 1191, 1193, 1186, 1197, 1194, 1191, 1195, 1197, + 1189, 1196, 1193, 1183, 1192, 1194, 1196, 1199, 1201, 1190, + 1188, 1203, 1195, 1202, 1202, 1206, 1203, 1201, 1210, 1204, + 1204, 1207, 1209, 1210, 1211, 1209, 1215, 1199, 1204, 1217, + 1206, 1212, 1212, 1207, 1214, 1214, 1216, 1216, 1218, 1219, + 1215, 1217, 1220, 1220, 1211, 1222, 1225, 1223, 1226, 1222, + 1223, 1225, 1218, 1224, 1224, 1227, 1228, 1229, 1219, 1227, + 1230, 1231, 1229, 1233, 1234, 1230, 1235, 1231, 1226, 1234, + 1239, 1239, 1242, 1242, 1235, 1245, 1228, 1246, 1246, 1233, + + 1245, 1248, 1248, 1250, 1251, 1251, 1252, 1253, 1250, 1254, + 1256, 1256, 1259, 1260, 1254, 1260, 1261, 1259, 1262, 1263, + 1263, 1266, 1252, 1262, 1264, 1264, 1265, 1265, 1267, 1253, + 1261, 1268, 1269, 1266, 1271, 1270, 1272, 1273, 1273, 1271, + 1274, 1275, 1276, 1268, 1269, 1277, 1267, 1270, 1278, 1274, + 1279, 1280, 1281, 1287, 1282, 1289, 1272, 1281, 1277, 1282, + 1283, 1283, 1276, 1288, 1279, 1284, 1284, 1275, 1290, 1280, + 1291, 1292, 1278, 1287, 1293, 1294, 1294, 1289, 1297, 1291, + 1298, 1288, 1296, 1296, 1299, 1300, 1307, 1297, 1290, 1301, + 1302, 1292, 1293, 1303, 1303, 1298, 1304, 1305, 1306, 1309, + + 1312, 1304, 1299, 1300, 1313, 1301, 1307, 1313, 1315, 1302, + 1314, 1314, 1305, 1316, 1318, 1318, 1319, 1306, 1309, 1326, + 1312, 1320, 1320, 1315, 1321, 1321, 1325, 1325, 1327, 1328, + 1330, 1316, 1331, 1329, 1328, 1319, 1333, 1327, 1329, 1334, + 1331, 1326, 1335, 1336, 1334, 1337, 1337, 1335, 1387, 1330, + 1339, 1333, 1338, 1338, 1387, 1339, 1340, 1340, 1336, 1341, + 1341, 1344, 1347, 1345, 1346, 1348, 1344, 1345, 1349, 1346, + 1350, 1347, 1351, 1354, 1353, 1350, 1349, 1353, 1355, 1356, + 1348, 1357, 1357, 1358, 1351, 1360, 1354, 1355, 1356, 1361, + 1362, 1362, 1358, 1363, 1364, 1364, 1366, 1365, 1368, 1369, + + 1374, 1366, 1363, 1376, 1360, 1365, 1376, 1368, 1361, 1371, + 1371, 1380, 1369, 1375, 1375, 1377, 1377, 1378, 1378, 1381, + 1374, 1379, 1379, 1382, 1383, 1383, 1384, 1390, 1382, 1380, + 1384, 1391, 1392, 1381, 1393, 1394, 1391, 1395, 1395, 1396, + 1397, 1398, 1399, 1399, 1390, 1390, 1400, 1401, 1397, 1394, + 1392, 1402, 1401, 1403, 1393, 1404, 1405, 1409, 1396, 1416, + 1398, 1411, 1400, 1407, 1404, 1411, 1407, 1410, 1410, 1412, + 1415, 1402, 1414, 1421, 1421, 1409, 1405, 1422, 1412, 1403, + 1420, 1414, 1415, 1424, 1416, 1420, 1422, 1425, 1424, 1426, + 1427, 1428, 1429, 1430, 1433, 1427, 1425, 1429, 1431, 1431, + + 1434, 1435, 1435, 1436, 1437, 1438, 1439, 1441, 1442, 1428, + 1426, 1440, 1436, 1433, 1439, 1434, 1440, 1447, 1430, 1448, + 1437, 1443, 1443, 1444, 1438, 1446, 1446, 1442, 1444, 1449, + 1449, 1450, 1450, 1441, 1451, 1452, 1453, 1447, 1454, 1454, + 1455, 1448, 1457, 1456, 1458, 1459, 1463, 1452, 1456, 1458, + 1460, 1460, 1455, 1451, 1462, 1462, 1453, 1465, 0, 1466, + 0, 1457, 1459, 1459, 1466, 1463, 1467, 1467, 1468, 1468, + 1470, 1465, 1469, 1469, 1484, 1470, 1471, 1471, 1473, 1473, + 1475, 1475, 1476, 1479, 1480, 1480, 1485, 1476, 1481, 1483, + 1486, 1479, 1484, 1481, 1483, 1487, 1488, 1491, 1492, 1492, + + 1493, 1488, 1485, 1502, 1493, 1497, 1497, 1486, 1486, 1499, + 1501, 1501, 1504, 1499, 1505, 1505, 1487, 1491, 1502, 1506, + 1507, 1508, 1509, 1510, 1511, 1512, 1512, 1509, 1510, 1518, + 1504, 1514, 1514, 1516, 1516, 1507, 1519, 1519, 1522, 1524, + 1521, 1518, 1508, 1511, 1506, 1521, 1523, 1525, 1526, 1530, + 1531, 1523, 1522, 1530, 1532, 1533, 1535, 1534, 1524, 1536, + 1539, 1537, 1538, 1538, 1526, 1525, 1540, 1532, 1541, 1539, + 1531, 1540, 1535, 1541, 1533, 1534, 1537, 1542, 1543, 1547, + 1544, 1545, 1548, 1549, 1536, 1544, 1550, 1552, 1549, 1551, + 1553, 1550, 1554, 1543, 1547, 1545, 1555, 1556, 1557, 1558, + + 1552, 1548, 1542, 1551, 1561, 1566, 1554, 1559, 1560, 1553, + 1556, 1557, 1559, 1560, 1563, 1555, 1562, 1562, 1558, 1563, + 1564, 1565, 1567, 1561, 1566, 1564, 1565, 1567, 1568, 1568, + 1569, 1570, 1571, 1572, 1573, 1574, 1576, 1569, 1572, 1577, + 1578, 1576, 1579, 1580, 1580, 1582, 1587, 1581, 1574, 1585, + 1570, 1571, 1581, 1573, 1585, 1579, 1583, 1583, 1577, 1578, + 1584, 1584, 1586, 1589, 1582, 1587, 1588, 1588, 1590, 1586, + 1589, 1591, 1592, 1593, 1595, 1590, 1596, 1592, 1597, 1595, + 1598, 1596, 1599, 1599, 1600, 1601, 1602, 1602, 1603, 1603, + 1591, 1604, 1593, 1605, 1605, 1606, 1606, 1597, 1604, 1598, + + 1607, 1609, 1613, 1600, 1601, 1612, 1609, 1607, 1614, 0, + 1612, 1615, 1615, 1616, 1616, 0, 0, 0, 0, 0, + 0, 1613, 0, 0, 0, 0, 0, 1614, 1620, 1620, + 1620, 1620, 1620, 1620, 1620, 1621, 1621, 1621, 1621, 1621, + 1621, 1621, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1623, + 1623, 1623, 1623, 1623, 1623, 1623, 1624, 1624, 1624, 1624, + 1624, 1624, 1624, 1626, 1626, 0, 1626, 1626, 1626, 1626, + 1627, 1627, 0, 0, 0, 1627, 1627, 1628, 1628, 0, + 0, 1628, 0, 1628, 1629, 0, 0, 0, 0, 0, + 1629, 1630, 1630, 0, 0, 0, 1630, 1630, 1631, 0, + + 0, 0, 0, 0, 1631, 1632, 1632, 0, 1632, 1632, + 1632, 1632, 1633, 1633, 0, 1633, 1633, 1633, 1633, 1619, + 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619 } ; static yy_state_type yy_last_accepting_state; @@ -1877,7 +1884,7 @@ static void config_end_include(void) #define YY_NO_INPUT 1 #endif -#line 1879 "" +#line 1886 "" #define INITIAL 0 #define quotedstring 1 @@ -2064,7 +2071,7 @@ YY_DECL #line 197 "./util/configlexer.lex" -#line 2066 "" +#line 2073 "" if ( !(yy_init) ) { @@ -2123,13 +2130,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1611 ) + if ( yy_current_state >= 1620 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 3201 ); + while ( yy_base[yy_current_state] != 3220 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -2740,169 +2747,174 @@ YY_RULE_SETUP case 117: YY_RULE_SETUP #line 318 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 118: YY_RULE_SETUP #line 319 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 119: YY_RULE_SETUP #line 320 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 120: YY_RULE_SETUP #line 321 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 121: YY_RULE_SETUP #line 322 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 122: YY_RULE_SETUP #line 323 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 123: YY_RULE_SETUP #line 324 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 124: YY_RULE_SETUP #line 325 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 125: YY_RULE_SETUP #line 326 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 126: YY_RULE_SETUP #line 327 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 127: YY_RULE_SETUP #line 328 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 128: YY_RULE_SETUP #line 329 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 129: YY_RULE_SETUP #line 330 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 130: YY_RULE_SETUP #line 331 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 131: YY_RULE_SETUP #line 332 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 132: YY_RULE_SETUP #line 333 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 133: YY_RULE_SETUP #line 334 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 134: YY_RULE_SETUP #line 335 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 135: YY_RULE_SETUP #line 336 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 136: YY_RULE_SETUP #line 337 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_VERSION) } + YY_BREAK +case 137: +YY_RULE_SETUP +#line 338 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK -case 137: +case 138: YY_RULE_SETUP -#line 339 "./util/configlexer.lex" +#line 340 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK -case 138: +case 139: YY_RULE_SETUP -#line 341 "./util/configlexer.lex" +#line 342 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK -case 139: +case 140: YY_RULE_SETUP -#line 343 "./util/configlexer.lex" +#line 344 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK -case 140: +case 141: YY_RULE_SETUP -#line 345 "./util/configlexer.lex" +#line 346 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK -case 141: +case 142: YY_RULE_SETUP -#line 347 "./util/configlexer.lex" +#line 348 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK -case 142: -/* rule 142 can match eol */ +case 143: +/* rule 143 can match eol */ YY_RULE_SETUP -#line 349 "./util/configlexer.lex" +#line 350 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 143: +case 144: YY_RULE_SETUP -#line 352 "./util/configlexer.lex" +#line 353 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 353 "./util/configlexer.lex" +#line 354 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 144: +case 145: YY_RULE_SETUP -#line 358 "./util/configlexer.lex" +#line 359 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 145: -/* rule 145 can match eol */ +case 146: +/* rule 146 can match eol */ YY_RULE_SETUP -#line 359 "./util/configlexer.lex" +#line 360 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 146: +case 147: YY_RULE_SETUP -#line 361 "./util/configlexer.lex" +#line 362 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -2915,34 +2927,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 147: +case 148: YY_RULE_SETUP -#line 373 "./util/configlexer.lex" +#line 374 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 374 "./util/configlexer.lex" +#line 375 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 148: +case 149: YY_RULE_SETUP -#line 379 "./util/configlexer.lex" +#line 380 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 149: -/* rule 149 can match eol */ +case 150: +/* rule 150 can match eol */ YY_RULE_SETUP -#line 380 "./util/configlexer.lex" +#line 381 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 150: +case 151: YY_RULE_SETUP -#line 382 "./util/configlexer.lex" +#line 383 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -2955,38 +2967,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 151: +case 152: YY_RULE_SETUP -#line 394 "./util/configlexer.lex" +#line 395 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 396 "./util/configlexer.lex" +#line 397 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 152: -YY_RULE_SETUP -#line 400 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 153: -/* rule 153 can match eol */ YY_RULE_SETUP #line 401 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 154: +/* rule 154 can match eol */ YY_RULE_SETUP #line 402 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 155: YY_RULE_SETUP #line 403 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 156: +YY_RULE_SETUP +#line 404 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext); @@ -2994,27 +3006,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 408 "./util/configlexer.lex" +#line 409 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 156: +case 157: YY_RULE_SETUP -#line 412 "./util/configlexer.lex" +#line 413 "./util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 157: -/* rule 157 can match eol */ +case 158: +/* rule 158 can match eol */ YY_RULE_SETUP -#line 413 "./util/configlexer.lex" +#line 414 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 158: +case 159: YY_RULE_SETUP -#line 415 "./util/configlexer.lex" +#line 416 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -3024,7 +3036,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 421 "./util/configlexer.lex" +#line 422 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -3036,33 +3048,33 @@ case YY_STATE_EOF(val): } } YY_BREAK -case 159: +case 160: YY_RULE_SETUP -#line 432 "./util/configlexer.lex" +#line 433 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 160: +case 161: YY_RULE_SETUP -#line 436 "./util/configlexer.lex" +#line 437 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 161: +case 162: YY_RULE_SETUP -#line 440 "./util/configlexer.lex" +#line 441 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 162: +case 163: YY_RULE_SETUP -#line 444 "./util/configlexer.lex" +#line 445 "./util/configlexer.lex" ECHO; YY_BREAK -#line 3064 "" +#line 3076 "" case YY_END_OF_BUFFER: { @@ -3352,7 +3364,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1611 ) + if ( yy_current_state >= 1620 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -3380,11 +3392,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 >= 1611 ) + if ( yy_current_state >= 1620 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 1610); + yy_is_jam = (yy_current_state == 1619); return yy_is_jam ? 0 : yy_current_state; } @@ -4017,7 +4029,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 444 "./util/configlexer.lex" +#line 445 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 7ee7b9bd9..eea1b8584 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -315,6 +315,7 @@ remote-control{COLON} { YDVAR(0, VAR_REMOTE_CONTROL) } control-enable{COLON} { YDVAR(1, VAR_CONTROL_ENABLE) } control-interface{COLON} { YDVAR(1, VAR_CONTROL_INTERFACE) } control-port{COLON} { YDVAR(1, VAR_CONTROL_PORT) } +control-use-cert{COLON} { YDVAR(1, VAR_CONTROL_USE_CERT) } server-key-file{COLON} { YDVAR(1, VAR_SERVER_KEY_FILE) } server-cert-file{COLON} { YDVAR(1, VAR_SERVER_CERT_FILE) } control-key-file{COLON} { YDVAR(1, VAR_CONTROL_KEY_FILE) } diff --git a/util/configparser.c b/util/configparser.c index dec876ae3..c411b40cb 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -220,59 +220,60 @@ extern int yydebug; VAR_SERVER_CERT_FILE = 348, VAR_CONTROL_KEY_FILE = 349, VAR_CONTROL_CERT_FILE = 350, - VAR_EXTENDED_STATISTICS = 351, - VAR_LOCAL_DATA_PTR = 352, - VAR_JOSTLE_TIMEOUT = 353, - VAR_STUB_PRIME = 354, - VAR_UNWANTED_REPLY_THRESHOLD = 355, - VAR_LOG_TIME_ASCII = 356, - VAR_DOMAIN_INSECURE = 357, - VAR_PYTHON = 358, - VAR_PYTHON_SCRIPT = 359, - VAR_VAL_SIG_SKEW_MIN = 360, - VAR_VAL_SIG_SKEW_MAX = 361, - VAR_CACHE_MIN_TTL = 362, - VAR_VAL_LOG_LEVEL = 363, - VAR_AUTO_TRUST_ANCHOR_FILE = 364, - VAR_KEEP_MISSING = 365, - VAR_ADD_HOLDDOWN = 366, - VAR_DEL_HOLDDOWN = 367, - VAR_SO_RCVBUF = 368, - VAR_EDNS_BUFFER_SIZE = 369, - VAR_PREFETCH = 370, - VAR_PREFETCH_KEY = 371, - VAR_SO_SNDBUF = 372, - VAR_SO_REUSEPORT = 373, - VAR_HARDEN_BELOW_NXDOMAIN = 374, - VAR_IGNORE_CD_FLAG = 375, - VAR_LOG_QUERIES = 376, - VAR_TCP_UPSTREAM = 377, - VAR_SSL_UPSTREAM = 378, - VAR_SSL_SERVICE_KEY = 379, - VAR_SSL_SERVICE_PEM = 380, - VAR_SSL_PORT = 381, - VAR_FORWARD_FIRST = 382, - VAR_STUB_FIRST = 383, - VAR_MINIMAL_RESPONSES = 384, - VAR_RRSET_ROUNDROBIN = 385, - VAR_MAX_UDP_SIZE = 386, - VAR_DELAY_CLOSE = 387, - VAR_UNBLOCK_LAN_ZONES = 388, - VAR_DNS64_PREFIX = 389, - VAR_DNS64_SYNTHALL = 390, - VAR_DNSTAP = 391, - VAR_DNSTAP_ENABLE = 392, - VAR_DNSTAP_SOCKET_PATH = 393, - VAR_DNSTAP_SEND_IDENTITY = 394, - VAR_DNSTAP_SEND_VERSION = 395, - VAR_DNSTAP_IDENTITY = 396, - VAR_DNSTAP_VERSION = 397, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 398, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 399, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 400, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 401, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 402, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 403 + VAR_CONTROL_USE_CERT = 351, + VAR_EXTENDED_STATISTICS = 352, + VAR_LOCAL_DATA_PTR = 353, + VAR_JOSTLE_TIMEOUT = 354, + VAR_STUB_PRIME = 355, + VAR_UNWANTED_REPLY_THRESHOLD = 356, + VAR_LOG_TIME_ASCII = 357, + VAR_DOMAIN_INSECURE = 358, + VAR_PYTHON = 359, + VAR_PYTHON_SCRIPT = 360, + VAR_VAL_SIG_SKEW_MIN = 361, + VAR_VAL_SIG_SKEW_MAX = 362, + VAR_CACHE_MIN_TTL = 363, + VAR_VAL_LOG_LEVEL = 364, + VAR_AUTO_TRUST_ANCHOR_FILE = 365, + VAR_KEEP_MISSING = 366, + VAR_ADD_HOLDDOWN = 367, + VAR_DEL_HOLDDOWN = 368, + VAR_SO_RCVBUF = 369, + VAR_EDNS_BUFFER_SIZE = 370, + VAR_PREFETCH = 371, + VAR_PREFETCH_KEY = 372, + VAR_SO_SNDBUF = 373, + VAR_SO_REUSEPORT = 374, + VAR_HARDEN_BELOW_NXDOMAIN = 375, + VAR_IGNORE_CD_FLAG = 376, + VAR_LOG_QUERIES = 377, + VAR_TCP_UPSTREAM = 378, + VAR_SSL_UPSTREAM = 379, + VAR_SSL_SERVICE_KEY = 380, + VAR_SSL_SERVICE_PEM = 381, + VAR_SSL_PORT = 382, + VAR_FORWARD_FIRST = 383, + VAR_STUB_FIRST = 384, + VAR_MINIMAL_RESPONSES = 385, + VAR_RRSET_ROUNDROBIN = 386, + VAR_MAX_UDP_SIZE = 387, + VAR_DELAY_CLOSE = 388, + VAR_UNBLOCK_LAN_ZONES = 389, + VAR_DNS64_PREFIX = 390, + VAR_DNS64_SYNTHALL = 391, + VAR_DNSTAP = 392, + VAR_DNSTAP_ENABLE = 393, + VAR_DNSTAP_SOCKET_PATH = 394, + VAR_DNSTAP_SEND_IDENTITY = 395, + VAR_DNSTAP_SEND_VERSION = 396, + VAR_DNSTAP_IDENTITY = 397, + VAR_DNSTAP_VERSION = 398, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 399, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 400, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 401, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 402, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 403, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 404 }; #endif /* Tokens. */ @@ -369,59 +370,60 @@ extern int yydebug; #define VAR_SERVER_CERT_FILE 348 #define VAR_CONTROL_KEY_FILE 349 #define VAR_CONTROL_CERT_FILE 350 -#define VAR_EXTENDED_STATISTICS 351 -#define VAR_LOCAL_DATA_PTR 352 -#define VAR_JOSTLE_TIMEOUT 353 -#define VAR_STUB_PRIME 354 -#define VAR_UNWANTED_REPLY_THRESHOLD 355 -#define VAR_LOG_TIME_ASCII 356 -#define VAR_DOMAIN_INSECURE 357 -#define VAR_PYTHON 358 -#define VAR_PYTHON_SCRIPT 359 -#define VAR_VAL_SIG_SKEW_MIN 360 -#define VAR_VAL_SIG_SKEW_MAX 361 -#define VAR_CACHE_MIN_TTL 362 -#define VAR_VAL_LOG_LEVEL 363 -#define VAR_AUTO_TRUST_ANCHOR_FILE 364 -#define VAR_KEEP_MISSING 365 -#define VAR_ADD_HOLDDOWN 366 -#define VAR_DEL_HOLDDOWN 367 -#define VAR_SO_RCVBUF 368 -#define VAR_EDNS_BUFFER_SIZE 369 -#define VAR_PREFETCH 370 -#define VAR_PREFETCH_KEY 371 -#define VAR_SO_SNDBUF 372 -#define VAR_SO_REUSEPORT 373 -#define VAR_HARDEN_BELOW_NXDOMAIN 374 -#define VAR_IGNORE_CD_FLAG 375 -#define VAR_LOG_QUERIES 376 -#define VAR_TCP_UPSTREAM 377 -#define VAR_SSL_UPSTREAM 378 -#define VAR_SSL_SERVICE_KEY 379 -#define VAR_SSL_SERVICE_PEM 380 -#define VAR_SSL_PORT 381 -#define VAR_FORWARD_FIRST 382 -#define VAR_STUB_FIRST 383 -#define VAR_MINIMAL_RESPONSES 384 -#define VAR_RRSET_ROUNDROBIN 385 -#define VAR_MAX_UDP_SIZE 386 -#define VAR_DELAY_CLOSE 387 -#define VAR_UNBLOCK_LAN_ZONES 388 -#define VAR_DNS64_PREFIX 389 -#define VAR_DNS64_SYNTHALL 390 -#define VAR_DNSTAP 391 -#define VAR_DNSTAP_ENABLE 392 -#define VAR_DNSTAP_SOCKET_PATH 393 -#define VAR_DNSTAP_SEND_IDENTITY 394 -#define VAR_DNSTAP_SEND_VERSION 395 -#define VAR_DNSTAP_IDENTITY 396 -#define VAR_DNSTAP_VERSION 397 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 398 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 399 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 400 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 401 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 402 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 403 +#define VAR_CONTROL_USE_CERT 351 +#define VAR_EXTENDED_STATISTICS 352 +#define VAR_LOCAL_DATA_PTR 353 +#define VAR_JOSTLE_TIMEOUT 354 +#define VAR_STUB_PRIME 355 +#define VAR_UNWANTED_REPLY_THRESHOLD 356 +#define VAR_LOG_TIME_ASCII 357 +#define VAR_DOMAIN_INSECURE 358 +#define VAR_PYTHON 359 +#define VAR_PYTHON_SCRIPT 360 +#define VAR_VAL_SIG_SKEW_MIN 361 +#define VAR_VAL_SIG_SKEW_MAX 362 +#define VAR_CACHE_MIN_TTL 363 +#define VAR_VAL_LOG_LEVEL 364 +#define VAR_AUTO_TRUST_ANCHOR_FILE 365 +#define VAR_KEEP_MISSING 366 +#define VAR_ADD_HOLDDOWN 367 +#define VAR_DEL_HOLDDOWN 368 +#define VAR_SO_RCVBUF 369 +#define VAR_EDNS_BUFFER_SIZE 370 +#define VAR_PREFETCH 371 +#define VAR_PREFETCH_KEY 372 +#define VAR_SO_SNDBUF 373 +#define VAR_SO_REUSEPORT 374 +#define VAR_HARDEN_BELOW_NXDOMAIN 375 +#define VAR_IGNORE_CD_FLAG 376 +#define VAR_LOG_QUERIES 377 +#define VAR_TCP_UPSTREAM 378 +#define VAR_SSL_UPSTREAM 379 +#define VAR_SSL_SERVICE_KEY 380 +#define VAR_SSL_SERVICE_PEM 381 +#define VAR_SSL_PORT 382 +#define VAR_FORWARD_FIRST 383 +#define VAR_STUB_FIRST 384 +#define VAR_MINIMAL_RESPONSES 385 +#define VAR_RRSET_ROUNDROBIN 386 +#define VAR_MAX_UDP_SIZE 387 +#define VAR_DELAY_CLOSE 388 +#define VAR_UNBLOCK_LAN_ZONES 389 +#define VAR_DNS64_PREFIX 390 +#define VAR_DNS64_SYNTHALL 391 +#define VAR_DNSTAP 392 +#define VAR_DNSTAP_ENABLE 393 +#define VAR_DNSTAP_SOCKET_PATH 394 +#define VAR_DNSTAP_SEND_IDENTITY 395 +#define VAR_DNSTAP_SEND_VERSION 396 +#define VAR_DNSTAP_IDENTITY 397 +#define VAR_DNSTAP_VERSION 398 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 399 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 400 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 401 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 402 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 403 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 404 @@ -435,7 +437,7 @@ typedef union YYSTYPE /* Line 387 of yacc.c */ -#line 439 "util/configparser.c" +#line 441 "util/configparser.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -463,7 +465,7 @@ int yyparse (); /* Copy the second part of user declarations. */ /* Line 390 of yacc.c */ -#line 467 "util/configparser.c" +#line 469 "util/configparser.c" #ifdef short # undef short @@ -683,20 +685,20 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 276 +#define YYLAST 278 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 149 +#define YYNTOKENS 150 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 154 +#define YYNNTS 155 /* YYNRULES -- Number of rules. */ -#define YYNRULES 293 +#define YYNRULES 295 /* YYNRULES -- Number of states. */ -#define YYNSTATES 429 +#define YYNSTATES 432 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 403 +#define YYMAXUTOK 404 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -744,7 +746,7 @@ static const yytype_uint8 yytranslate[] = 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148 + 145, 146, 147, 148, 149 }; #if YYDEBUG @@ -777,124 +779,125 @@ static const yytype_uint16 yyprhs[] = 534, 537, 540, 543, 546, 549, 552, 555, 558, 562, 565, 568, 571, 574, 577, 580, 583, 586, 589, 592, 595, 598, 601, 604, 607, 610, 612, 615, 616, 618, - 620, 622, 624, 626, 628, 630, 633, 636, 639, 642, - 645, 648, 651, 653, 656, 657, 659, 661, 663, 665, - 667, 669, 671, 673, 675, 677, 679, 681, 684, 687, - 690, 693, 696, 699, 702, 705, 708, 711, 714, 717, - 719, 722, 723, 725 + 620, 622, 624, 626, 628, 630, 632, 635, 638, 641, + 644, 647, 650, 653, 656, 658, 661, 662, 664, 666, + 668, 670, 672, 674, 676, 678, 680, 682, 684, 686, + 689, 692, 695, 698, 701, 704, 707, 710, 713, 716, + 719, 722, 724, 727, 728, 730 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 150, 0, -1, -1, 150, 151, -1, 152, 153, -1, - 155, 156, -1, 158, 159, -1, 299, 300, -1, 274, - 275, -1, 284, 285, -1, 11, -1, 153, 154, -1, - -1, 161, -1, 162, -1, 166, -1, 169, -1, 175, - -1, 176, -1, 177, -1, 178, -1, 167, -1, 188, - -1, 189, -1, 190, -1, 191, -1, 192, -1, 210, - -1, 211, -1, 212, -1, 216, -1, 217, -1, 172, - -1, 218, -1, 219, -1, 222, -1, 220, -1, 221, - -1, 223, -1, 224, -1, 225, -1, 236, -1, 201, - -1, 202, -1, 203, -1, 204, -1, 226, -1, 239, - -1, 197, -1, 199, -1, 240, -1, 245, -1, 246, - -1, 247, -1, 173, -1, 209, -1, 254, -1, 255, - -1, 198, -1, 250, -1, 185, -1, 168, -1, 193, - -1, 237, -1, 243, -1, 227, -1, 238, -1, 257, - -1, 258, -1, 174, -1, 163, -1, 184, -1, 230, - -1, 164, -1, 170, -1, 171, -1, 194, -1, 195, - -1, 256, -1, 229, -1, 231, -1, 232, -1, 165, - -1, 259, -1, 213, -1, 235, -1, 186, -1, 200, - -1, 241, -1, 242, -1, 244, -1, 249, -1, 196, - -1, 251, -1, 252, -1, 253, -1, 205, -1, 208, - -1, 233, -1, 234, -1, 206, -1, 228, -1, 248, - -1, 187, -1, 179, -1, 180, -1, 181, -1, 182, - -1, 183, -1, 260, -1, 261, -1, 262, -1, 207, - -1, 214, -1, 215, -1, 263, -1, 264, -1, 38, - -1, 156, 157, -1, -1, 265, -1, 266, -1, 267, - -1, 269, -1, 268, -1, 44, -1, 159, 160, -1, - -1, 270, -1, 271, -1, 272, -1, 273, -1, 13, + 151, 0, -1, -1, 151, 152, -1, 153, 154, -1, + 156, 157, -1, 159, 160, -1, 301, 302, -1, 275, + 276, -1, 286, 287, -1, 11, -1, 154, 155, -1, + -1, 162, -1, 163, -1, 167, -1, 170, -1, 176, + -1, 177, -1, 178, -1, 179, -1, 168, -1, 189, + -1, 190, -1, 191, -1, 192, -1, 193, -1, 211, + -1, 212, -1, 213, -1, 217, -1, 218, -1, 173, + -1, 219, -1, 220, -1, 223, -1, 221, -1, 222, + -1, 224, -1, 225, -1, 226, -1, 237, -1, 202, + -1, 203, -1, 204, -1, 205, -1, 227, -1, 240, + -1, 198, -1, 200, -1, 241, -1, 246, -1, 247, + -1, 248, -1, 174, -1, 210, -1, 255, -1, 256, + -1, 199, -1, 251, -1, 186, -1, 169, -1, 194, + -1, 238, -1, 244, -1, 228, -1, 239, -1, 258, + -1, 259, -1, 175, -1, 164, -1, 185, -1, 231, + -1, 165, -1, 171, -1, 172, -1, 195, -1, 196, + -1, 257, -1, 230, -1, 232, -1, 233, -1, 166, + -1, 260, -1, 214, -1, 236, -1, 187, -1, 201, + -1, 242, -1, 243, -1, 245, -1, 250, -1, 197, + -1, 252, -1, 253, -1, 254, -1, 206, -1, 209, + -1, 234, -1, 235, -1, 207, -1, 229, -1, 249, + -1, 188, -1, 180, -1, 181, -1, 182, -1, 183, + -1, 184, -1, 261, -1, 262, -1, 263, -1, 208, + -1, 215, -1, 216, -1, 264, -1, 265, -1, 38, + -1, 157, 158, -1, -1, 266, -1, 267, -1, 268, + -1, 270, -1, 269, -1, 44, -1, 160, 161, -1, + -1, 271, -1, 272, -1, 273, -1, 274, -1, 13, 10, -1, 12, 10, -1, 76, 10, -1, 79, 10, - -1, 96, 10, -1, 14, 10, -1, 16, 10, -1, + -1, 97, 10, -1, 14, 10, -1, 16, 10, -1, 67, 10, -1, 15, 10, -1, 80, 10, -1, 81, 10, -1, 31, 10, -1, 60, 10, -1, 75, 10, -1, 17, 10, -1, 18, 10, -1, 19, 10, -1, - 20, 10, -1, 122, 10, -1, 123, 10, -1, 124, - 10, -1, 125, 10, -1, 126, 10, -1, 77, 10, - -1, 66, 10, -1, 101, 10, -1, 121, 10, -1, + 20, 10, -1, 123, 10, -1, 124, 10, -1, 125, + 10, -1, 126, 10, -1, 127, 10, -1, 77, 10, + -1, 66, 10, -1, 102, 10, -1, 122, 10, -1, 21, 10, -1, 22, 10, -1, 23, 10, -1, 24, 10, -1, 25, 10, -1, 68, 10, -1, 82, 10, - -1, 83, 10, -1, 109, 10, -1, 54, 10, -1, - 64, 10, -1, 55, 10, -1, 102, 10, -1, 48, + -1, 83, 10, -1, 110, 10, -1, 54, 10, -1, + 64, 10, -1, 55, 10, -1, 103, 10, -1, 48, 10, -1, 49, 10, -1, 50, 10, -1, 51, 10, - -1, 113, 10, -1, 117, 10, -1, 118, 10, -1, - 114, 10, -1, 61, 10, -1, 26, 10, -1, 27, - 10, -1, 28, 10, -1, 98, 10, -1, 132, 10, - -1, 133, 10, -1, 29, 10, -1, 30, 10, -1, + -1, 114, 10, -1, 118, 10, -1, 119, 10, -1, + 115, 10, -1, 61, 10, -1, 26, 10, -1, 27, + 10, -1, 28, 10, -1, 99, 10, -1, 133, 10, + -1, 134, 10, -1, 29, 10, -1, 30, 10, -1, 32, 10, -1, 33, 10, -1, 35, 10, -1, 36, 10, -1, 34, 10, -1, 41, 10, -1, 42, 10, -1, 43, 10, -1, 52, 10, -1, 71, 10, -1, - 119, 10, -1, 85, 10, -1, 78, 10, -1, 86, - 10, -1, 87, 10, -1, 115, 10, -1, 116, 10, - -1, 100, 10, -1, 47, 10, -1, 69, 10, -1, + 120, 10, -1, 85, 10, -1, 78, 10, -1, 86, + 10, -1, 87, 10, -1, 116, 10, -1, 117, 10, + -1, 101, 10, -1, 47, 10, -1, 69, 10, -1, 72, 10, 10, -1, 53, 10, -1, 56, 10, -1, - 105, 10, -1, 106, 10, -1, 70, 10, -1, 107, + 106, 10, -1, 107, 10, -1, 70, 10, -1, 108, 10, -1, 57, 10, -1, 58, 10, -1, 59, 10, - -1, 120, 10, -1, 108, 10, -1, 65, 10, -1, - 111, 10, -1, 112, 10, -1, 110, 10, -1, 62, + -1, 121, 10, -1, 109, 10, -1, 65, 10, -1, + 112, 10, -1, 113, 10, -1, 111, 10, -1, 62, 10, -1, 63, 10, -1, 84, 10, -1, 73, 10, - 10, -1, 74, 10, -1, 97, 10, -1, 129, 10, - -1, 130, 10, -1, 131, 10, -1, 134, 10, -1, - 135, 10, -1, 37, 10, -1, 39, 10, -1, 40, - 10, -1, 128, 10, -1, 99, 10, -1, 37, 10, - -1, 45, 10, -1, 46, 10, -1, 127, 10, -1, - 88, -1, 275, 276, -1, -1, 277, -1, 279, -1, - 278, -1, 280, -1, 281, -1, 282, -1, 283, -1, - 89, 10, -1, 91, 10, -1, 90, 10, -1, 92, - 10, -1, 93, 10, -1, 94, 10, -1, 95, 10, - -1, 136, -1, 285, 286, -1, -1, 287, -1, 288, - -1, 289, -1, 290, -1, 291, -1, 292, -1, 293, - -1, 294, -1, 295, -1, 296, -1, 297, -1, 298, - -1, 137, 10, -1, 138, 10, -1, 139, 10, -1, - 140, 10, -1, 141, 10, -1, 142, 10, -1, 143, - 10, -1, 144, 10, -1, 145, 10, -1, 146, 10, - -1, 147, 10, -1, 148, 10, -1, 103, -1, 300, - 301, -1, -1, 302, -1, 104, 10, -1 + 10, -1, 74, 10, -1, 98, 10, -1, 130, 10, + -1, 131, 10, -1, 132, 10, -1, 135, 10, -1, + 136, 10, -1, 37, 10, -1, 39, 10, -1, 40, + 10, -1, 129, 10, -1, 100, 10, -1, 37, 10, + -1, 45, 10, -1, 46, 10, -1, 128, 10, -1, + 88, -1, 276, 277, -1, -1, 278, -1, 280, -1, + 279, -1, 282, -1, 283, -1, 284, -1, 285, -1, + 281, -1, 89, 10, -1, 91, 10, -1, 90, 10, + -1, 96, 10, -1, 92, 10, -1, 93, 10, -1, + 94, 10, -1, 95, 10, -1, 137, -1, 287, 288, + -1, -1, 289, -1, 290, -1, 291, -1, 292, -1, + 293, -1, 294, -1, 295, -1, 296, -1, 297, -1, + 298, -1, 299, -1, 300, -1, 138, 10, -1, 139, + 10, -1, 140, 10, -1, 141, 10, -1, 142, 10, + -1, 143, 10, -1, 144, 10, -1, 145, 10, -1, + 146, 10, -1, 147, 10, -1, 148, 10, -1, 149, + 10, -1, 104, -1, 302, 303, -1, -1, 304, -1, + 105, 10, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 121, 121, 121, 122, 122, 123, 123, 124, 124, - 128, 133, 134, 135, 135, 135, 136, 136, 137, 137, - 137, 138, 138, 138, 139, 139, 139, 140, 140, 141, - 141, 142, 142, 143, 143, 144, 144, 145, 145, 146, - 146, 147, 147, 148, 148, 148, 149, 149, 149, 150, - 150, 150, 151, 151, 152, 152, 153, 153, 154, 154, - 155, 155, 155, 156, 156, 157, 157, 158, 158, 158, - 159, 159, 160, 160, 161, 161, 162, 162, 162, 163, - 163, 164, 164, 165, 165, 166, 166, 167, 167, 168, - 168, 168, 169, 169, 170, 170, 170, 171, 171, 171, - 172, 172, 172, 173, 173, 173, 174, 174, 174, 175, - 175, 175, 176, 176, 176, 177, 177, 179, 191, 192, - 193, 193, 193, 193, 193, 195, 207, 208, 209, 209, - 209, 209, 211, 220, 229, 240, 249, 258, 267, 280, - 295, 304, 313, 322, 331, 340, 349, 358, 367, 376, - 385, 394, 403, 410, 417, 426, 435, 449, 458, 467, - 474, 481, 488, 496, 503, 510, 517, 524, 532, 540, - 548, 555, 562, 571, 580, 587, 594, 602, 610, 620, - 633, 644, 652, 665, 674, 683, 692, 702, 710, 723, - 732, 740, 749, 757, 770, 777, 787, 797, 807, 817, - 827, 837, 847, 854, 861, 870, 879, 888, 895, 905, - 922, 929, 947, 960, 973, 982, 991, 1000, 1010, 1020, - 1029, 1038, 1045, 1054, 1063, 1072, 1080, 1093, 1101, 1124, - 1131, 1146, 1156, 1166, 1173, 1180, 1189, 1199, 1206, 1213, - 1222, 1232, 1242, 1249, 1256, 1265, 1270, 1271, 1272, 1272, - 1272, 1273, 1273, 1273, 1274, 1276, 1286, 1295, 1302, 1309, - 1316, 1323, 1330, 1335, 1336, 1337, 1337, 1338, 1338, 1339, - 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1347, 1355, 1362, - 1370, 1378, 1385, 1392, 1401, 1410, 1419, 1428, 1437, 1446, - 1451, 1452, 1453, 1455 + 0, 122, 122, 122, 123, 123, 124, 124, 125, 125, + 129, 134, 135, 136, 136, 136, 137, 137, 138, 138, + 138, 139, 139, 139, 140, 140, 140, 141, 141, 142, + 142, 143, 143, 144, 144, 145, 145, 146, 146, 147, + 147, 148, 148, 149, 149, 149, 150, 150, 150, 151, + 151, 151, 152, 152, 153, 153, 154, 154, 155, 155, + 156, 156, 156, 157, 157, 158, 158, 159, 159, 159, + 160, 160, 161, 161, 162, 162, 163, 163, 163, 164, + 164, 165, 165, 166, 166, 167, 167, 168, 168, 169, + 169, 169, 170, 170, 171, 171, 171, 172, 172, 172, + 173, 173, 173, 174, 174, 174, 175, 175, 175, 176, + 176, 176, 177, 177, 177, 178, 178, 180, 192, 193, + 194, 194, 194, 194, 194, 196, 208, 209, 210, 210, + 210, 210, 212, 221, 230, 241, 250, 259, 268, 281, + 296, 305, 314, 323, 332, 341, 350, 359, 368, 377, + 386, 395, 404, 411, 418, 427, 436, 450, 459, 468, + 475, 482, 489, 497, 504, 511, 518, 525, 533, 541, + 549, 556, 563, 572, 581, 588, 595, 603, 611, 621, + 634, 645, 653, 666, 675, 684, 693, 703, 711, 724, + 733, 741, 750, 758, 771, 778, 788, 798, 808, 818, + 828, 838, 848, 855, 862, 871, 880, 889, 896, 906, + 923, 930, 948, 961, 974, 983, 992, 1001, 1011, 1021, + 1030, 1039, 1046, 1055, 1064, 1073, 1081, 1094, 1102, 1125, + 1132, 1147, 1157, 1167, 1174, 1181, 1190, 1200, 1207, 1214, + 1223, 1233, 1243, 1250, 1257, 1266, 1271, 1272, 1273, 1273, + 1273, 1274, 1274, 1274, 1275, 1275, 1277, 1287, 1296, 1303, + 1313, 1320, 1327, 1334, 1341, 1346, 1347, 1348, 1348, 1349, + 1349, 1350, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1358, + 1366, 1373, 1381, 1389, 1396, 1403, 1412, 1421, 1430, 1439, + 1448, 1457, 1462, 1463, 1464, 1466 }; #endif @@ -933,22 +936,23 @@ static const char *const yytname[] = "VAR_PRIVATE_DOMAIN", "VAR_REMOTE_CONTROL", "VAR_CONTROL_ENABLE", "VAR_CONTROL_INTERFACE", "VAR_CONTROL_PORT", "VAR_SERVER_KEY_FILE", "VAR_SERVER_CERT_FILE", "VAR_CONTROL_KEY_FILE", "VAR_CONTROL_CERT_FILE", - "VAR_EXTENDED_STATISTICS", "VAR_LOCAL_DATA_PTR", "VAR_JOSTLE_TIMEOUT", - "VAR_STUB_PRIME", "VAR_UNWANTED_REPLY_THRESHOLD", "VAR_LOG_TIME_ASCII", - "VAR_DOMAIN_INSECURE", "VAR_PYTHON", "VAR_PYTHON_SCRIPT", - "VAR_VAL_SIG_SKEW_MIN", "VAR_VAL_SIG_SKEW_MAX", "VAR_CACHE_MIN_TTL", - "VAR_VAL_LOG_LEVEL", "VAR_AUTO_TRUST_ANCHOR_FILE", "VAR_KEEP_MISSING", - "VAR_ADD_HOLDDOWN", "VAR_DEL_HOLDDOWN", "VAR_SO_RCVBUF", - "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH", "VAR_PREFETCH_KEY", - "VAR_SO_SNDBUF", "VAR_SO_REUSEPORT", "VAR_HARDEN_BELOW_NXDOMAIN", - "VAR_IGNORE_CD_FLAG", "VAR_LOG_QUERIES", "VAR_TCP_UPSTREAM", - "VAR_SSL_UPSTREAM", "VAR_SSL_SERVICE_KEY", "VAR_SSL_SERVICE_PEM", - "VAR_SSL_PORT", "VAR_FORWARD_FIRST", "VAR_STUB_FIRST", - "VAR_MINIMAL_RESPONSES", "VAR_RRSET_ROUNDROBIN", "VAR_MAX_UDP_SIZE", - "VAR_DELAY_CLOSE", "VAR_UNBLOCK_LAN_ZONES", "VAR_DNS64_PREFIX", - "VAR_DNS64_SYNTHALL", "VAR_DNSTAP", "VAR_DNSTAP_ENABLE", - "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_SEND_IDENTITY", - "VAR_DNSTAP_SEND_VERSION", "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION", + "VAR_CONTROL_USE_CERT", "VAR_EXTENDED_STATISTICS", "VAR_LOCAL_DATA_PTR", + "VAR_JOSTLE_TIMEOUT", "VAR_STUB_PRIME", "VAR_UNWANTED_REPLY_THRESHOLD", + "VAR_LOG_TIME_ASCII", "VAR_DOMAIN_INSECURE", "VAR_PYTHON", + "VAR_PYTHON_SCRIPT", "VAR_VAL_SIG_SKEW_MIN", "VAR_VAL_SIG_SKEW_MAX", + "VAR_CACHE_MIN_TTL", "VAR_VAL_LOG_LEVEL", "VAR_AUTO_TRUST_ANCHOR_FILE", + "VAR_KEEP_MISSING", "VAR_ADD_HOLDDOWN", "VAR_DEL_HOLDDOWN", + "VAR_SO_RCVBUF", "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH", + "VAR_PREFETCH_KEY", "VAR_SO_SNDBUF", "VAR_SO_REUSEPORT", + "VAR_HARDEN_BELOW_NXDOMAIN", "VAR_IGNORE_CD_FLAG", "VAR_LOG_QUERIES", + "VAR_TCP_UPSTREAM", "VAR_SSL_UPSTREAM", "VAR_SSL_SERVICE_KEY", + "VAR_SSL_SERVICE_PEM", "VAR_SSL_PORT", "VAR_FORWARD_FIRST", + "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES", "VAR_RRSET_ROUNDROBIN", + "VAR_MAX_UDP_SIZE", "VAR_DELAY_CLOSE", "VAR_UNBLOCK_LAN_ZONES", + "VAR_DNS64_PREFIX", "VAR_DNS64_SYNTHALL", "VAR_DNSTAP", + "VAR_DNSTAP_ENABLE", "VAR_DNSTAP_SOCKET_PATH", + "VAR_DNSTAP_SEND_IDENTITY", "VAR_DNSTAP_SEND_VERSION", + "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION", "VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES", "VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES", "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES", @@ -1004,10 +1008,11 @@ static const char *const yytname[] = "stub_first", "stub_prime", "forward_name", "forward_host", "forward_addr", "forward_first", "rcstart", "contents_rc", "content_rc", "rc_control_enable", "rc_control_port", "rc_control_interface", - "rc_server_key_file", "rc_server_cert_file", "rc_control_key_file", - "rc_control_cert_file", "dtstart", "contents_dt", "content_dt", - "dt_dnstap_enable", "dt_dnstap_socket_path", "dt_dnstap_send_identity", - "dt_dnstap_send_version", "dt_dnstap_identity", "dt_dnstap_version", + "rc_control_use_cert", "rc_server_key_file", "rc_server_cert_file", + "rc_control_key_file", "rc_control_cert_file", "dtstart", "contents_dt", + "content_dt", "dt_dnstap_enable", "dt_dnstap_socket_path", + "dt_dnstap_send_identity", "dt_dnstap_send_version", + "dt_dnstap_identity", "dt_dnstap_version", "dt_dnstap_log_resolver_query_messages", "dt_dnstap_log_resolver_response_messages", "dt_dnstap_log_client_query_messages", @@ -1037,43 +1042,43 @@ static const yytype_uint16 yytoknum[] = 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 + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 149, 150, 150, 151, 151, 151, 151, 151, 151, - 152, 153, 153, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 155, 156, 156, - 157, 157, 157, 157, 157, 158, 159, 159, 160, 160, - 160, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 275, 276, 276, - 276, 276, 276, 276, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 285, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 287, 288, 289, + 0, 150, 151, 151, 152, 152, 152, 152, 152, 152, + 153, 154, 154, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 156, 157, 157, + 158, 158, 158, 158, 158, 159, 160, 160, 161, 161, + 161, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 276, 277, 277, + 277, 277, 277, 277, 277, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 287, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 300, 301, 302 + 300, 301, 302, 302, 303, 304 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -1104,11 +1109,11 @@ static const yytype_uint8 yyr2[] = 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, - 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, - 2, 0, 1, 2 + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 1, 2, 0, 1, 2 }; /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. @@ -1116,8 +1121,8 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 1, 10, 117, 125, 245, 289, 262, 3, - 12, 119, 127, 247, 264, 291, 4, 5, 6, 8, + 2, 0, 1, 10, 117, 125, 245, 291, 264, 3, + 12, 119, 127, 247, 266, 293, 4, 5, 6, 8, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1141,24 +1146,25 @@ static const yytype_uint16 yydefact[] = 56, 57, 78, 67, 68, 83, 109, 110, 111, 115, 116, 0, 0, 0, 0, 0, 118, 120, 121, 122, 124, 123, 0, 0, 0, 0, 126, 128, 129, 130, - 131, 0, 0, 0, 0, 0, 0, 0, 246, 248, - 250, 249, 251, 252, 253, 254, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 263, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 0, 290, 292, 133, 132, 137, 140, 138, 146, - 147, 148, 149, 159, 160, 161, 162, 163, 181, 182, - 183, 187, 188, 143, 189, 190, 193, 191, 192, 194, - 195, 196, 207, 172, 173, 174, 175, 197, 210, 168, - 170, 211, 216, 217, 218, 144, 180, 225, 226, 169, - 221, 156, 139, 164, 208, 214, 198, 0, 0, 229, - 145, 134, 155, 201, 135, 141, 142, 165, 166, 227, - 200, 202, 203, 136, 230, 184, 206, 157, 171, 212, - 213, 215, 220, 167, 224, 222, 223, 176, 179, 204, - 205, 177, 178, 199, 219, 158, 150, 151, 152, 153, - 154, 231, 232, 233, 185, 186, 234, 235, 236, 237, - 238, 240, 239, 241, 242, 243, 244, 255, 257, 256, - 258, 259, 260, 261, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 293, 209, 228 + 131, 0, 0, 0, 0, 0, 0, 0, 0, 246, + 248, 250, 249, 255, 251, 252, 253, 254, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 265, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 0, 292, 294, 133, 132, 137, 140, + 138, 146, 147, 148, 149, 159, 160, 161, 162, 163, + 181, 182, 183, 187, 188, 143, 189, 190, 193, 191, + 192, 194, 195, 196, 207, 172, 173, 174, 175, 197, + 210, 168, 170, 211, 216, 217, 218, 144, 180, 225, + 226, 169, 221, 156, 139, 164, 208, 214, 198, 0, + 0, 229, 145, 134, 155, 201, 135, 141, 142, 165, + 166, 227, 200, 202, 203, 136, 230, 184, 206, 157, + 171, 212, 213, 215, 220, 167, 224, 222, 223, 176, + 179, 204, 205, 177, 178, 199, 219, 158, 150, 151, + 152, 153, 154, 231, 232, 233, 185, 186, 234, 235, + 236, 237, 238, 240, 239, 241, 242, 243, 244, 256, + 258, 257, 260, 261, 262, 263, 259, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 295, + 209, 228 }; /* YYDEFGOTO[NTERM-NUM]. */ @@ -1176,81 +1182,82 @@ static const yytype_int16 yydefgoto[] = 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 237, 238, 239, 240, - 241, 247, 248, 249, 250, 13, 19, 258, 259, 260, - 261, 262, 263, 264, 265, 14, 20, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 15, 21, 292, 293 + 241, 247, 248, 249, 250, 13, 19, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 14, 20, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 15, 21, 294, 295 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -123 +#define YYPACT_NINF -124 static const yytype_int16 yypact[] = { - -123, 0, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, 92, -36, -32, -62, - -122, -102, -4, -3, -2, -1, 2, 24, 25, 26, - 27, 29, 30, 31, 32, 33, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 79, 80, - 81, 83, 84, 86, 87, 88, 89, 90, 91, 119, - 120, 121, 122, 127, 128, 170, 171, 172, 173, 174, - 175, 176, 177, 181, 185, 186, 209, 210, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, 236, 237, 238, 239, 240, -123, -123, -123, -123, - -123, -123, 241, 242, 243, 244, -123, -123, -123, -123, - -123, 245, 246, 247, 248, 249, 250, 251, -123, -123, - -123, -123, -123, -123, -123, -123, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, 264, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, 265, 266, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123 + -124, 0, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, 93, -36, -32, -62, + -123, -103, -4, -3, -2, -1, 2, 25, 26, 27, + 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, + 82, 84, 85, 87, 88, 89, 90, 91, 92, 120, + 121, 122, 123, 128, 129, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 183, 187, 188, 211, 212, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, 237, 238, 239, 240, 241, -124, -124, -124, -124, + -124, -124, 242, 243, 244, 245, -124, -124, -124, -124, + -124, 246, 247, 248, 249, 250, 251, 252, 253, -124, + -124, -124, -124, -124, -124, -124, -124, -124, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, 266, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, 267, + 268, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, -123 + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -1259,108 +1266,108 @@ static const yytype_int8 yypgoto[] = #define YYTABLE_NINF -1 static const yytype_uint16 yytable[] = { - 2, 231, 291, 232, 233, 242, 294, 295, 296, 297, - 0, 3, 298, 243, 244, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 251, 252, 253, - 254, 255, 256, 257, 299, 300, 301, 302, 4, 303, - 304, 305, 306, 307, 5, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 234, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 6, 350, - 351, 352, 235, 353, 354, 245, 355, 356, 357, 358, - 359, 360, 0, 7, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 361, - 362, 363, 364, 47, 48, 49, 8, 365, 366, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 367, 368, 369, 370, 371, 372, 373, 374, 91, 92, - 93, 375, 94, 95, 96, 376, 377, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 378, - 379, 119, 120, 121, 122, 123, 124, 125, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428 + 2, 231, 293, 232, 233, 242, 296, 297, 298, 299, + 0, 3, 300, 243, 244, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 251, 252, 253, + 254, 255, 256, 257, 258, 301, 302, 303, 4, 304, + 305, 306, 307, 308, 5, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 234, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 6, 351, + 352, 353, 354, 235, 355, 356, 245, 357, 358, 359, + 360, 361, 362, 0, 7, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 363, 364, 365, 366, 47, 48, 49, 8, 367, 368, + 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, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 91, 92, 93, 378, 94, 95, 96, 379, 380, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 381, 382, 119, 120, 121, 122, 123, 124, 125, + 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 }; #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-123))) + (!!((Yystate) == (-124))) #define yytable_value_is_error(Yytable_value) \ YYID (0) static const yytype_int16 yycheck[] = { - 0, 37, 104, 39, 40, 37, 10, 10, 10, 10, - -1, 11, 10, 45, 46, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 89, 90, 91, - 92, 93, 94, 95, 10, 10, 10, 10, 38, 10, + 0, 37, 105, 39, 40, 37, 10, 10, 10, 10, + -1, 11, 10, 45, 46, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 89, 90, 91, + 92, 93, 94, 95, 96, 10, 10, 10, 38, 10, 10, 10, 10, 10, 44, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 99, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 100, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 88, 10, - 10, 10, 128, 10, 10, 127, 10, 10, 10, 10, - 10, 10, -1, 103, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 10, - 10, 10, 10, 41, 42, 43, 136, 10, 10, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 10, 10, 10, 10, 10, 10, 10, 10, 96, 97, - 98, 10, 100, 101, 102, 10, 10, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 10, - 10, 129, 130, 131, 132, 133, 134, 135, 10, 10, + 10, 10, 10, 129, 10, 10, 128, 10, 10, 10, + 10, 10, 10, -1, 104, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 10, 10, 10, 10, 41, 42, 43, 137, 10, 10, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 97, 98, 99, 10, 101, 102, 103, 10, 10, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 10, 10, 130, 131, 132, 133, 134, 135, 136, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 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, 150, 0, 11, 38, 44, 88, 103, 136, 151, - 152, 155, 158, 274, 284, 299, 153, 156, 159, 275, - 285, 300, 12, 13, 14, 15, 16, 17, 18, 19, + 0, 151, 0, 11, 38, 44, 88, 104, 137, 152, + 153, 156, 159, 275, 286, 301, 154, 157, 160, 276, + 287, 302, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 41, 42, 43, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 96, 97, 98, 100, 101, 102, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 129, - 130, 131, 132, 133, 134, 135, 154, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 37, 39, 40, 99, 128, 157, 265, 266, 267, - 268, 269, 37, 45, 46, 127, 160, 270, 271, 272, - 273, 89, 90, 91, 92, 93, 94, 95, 276, 277, - 278, 279, 280, 281, 282, 283, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 286, 287, + 87, 97, 98, 99, 101, 102, 103, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 130, + 131, 132, 133, 134, 135, 136, 155, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 37, 39, 40, 100, 129, 158, 266, 267, 268, + 269, 270, 37, 45, 46, 128, 161, 271, 272, 273, + 274, 89, 90, 91, 92, 93, 94, 95, 96, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 104, 301, 302, 10, 10, 10, 10, 10, 10, + 298, 299, 300, 105, 303, 304, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1373,7 +1380,8 @@ static const yytype_uint16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10 + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10 }; #define yyerrok (yyerrstatus = 0) @@ -2175,7 +2183,7 @@ yyreduce: { case 10: /* Line 1792 of yacc.c */ -#line 129 "./util/configparser.y" +#line 130 "./util/configparser.y" { OUTYY(("\nP(server:)\n")); } @@ -2183,7 +2191,7 @@ yyreduce: case 117: /* Line 1792 of yacc.c */ -#line 180 "./util/configparser.y" +#line 181 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2198,7 +2206,7 @@ yyreduce: case 125: /* Line 1792 of yacc.c */ -#line 196 "./util/configparser.y" +#line 197 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2213,7 +2221,7 @@ yyreduce: case 132: /* Line 1792 of yacc.c */ -#line 212 "./util/configparser.y" +#line 213 "./util/configparser.y" { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2225,7 +2233,7 @@ yyreduce: case 133: /* Line 1792 of yacc.c */ -#line 221 "./util/configparser.y" +#line 222 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2237,7 +2245,7 @@ yyreduce: case 134: /* Line 1792 of yacc.c */ -#line 230 "./util/configparser.y" +#line 231 "./util/configparser.y" { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "") == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) @@ -2251,7 +2259,7 @@ yyreduce: case 135: /* Line 1792 of yacc.c */ -#line 241 "./util/configparser.y" +#line 242 "./util/configparser.y" { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2263,7 +2271,7 @@ yyreduce: case 136: /* Line 1792 of yacc.c */ -#line 250 "./util/configparser.y" +#line 251 "./util/configparser.y" { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2275,7 +2283,7 @@ yyreduce: case 137: /* Line 1792 of yacc.c */ -#line 259 "./util/configparser.y" +#line 260 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2287,7 +2295,7 @@ yyreduce: case 138: /* Line 1792 of yacc.c */ -#line 268 "./util/configparser.y" +#line 269 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -2303,7 +2311,7 @@ yyreduce: case 139: /* Line 1792 of yacc.c */ -#line 281 "./util/configparser.y" +#line 282 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -2321,7 +2329,7 @@ yyreduce: case 140: /* Line 1792 of yacc.c */ -#line 296 "./util/configparser.y" +#line 297 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2333,7 +2341,7 @@ yyreduce: case 141: /* Line 1792 of yacc.c */ -#line 305 "./util/configparser.y" +#line 306 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 1, @@ -2345,7 +2353,7 @@ yyreduce: case 142: /* Line 1792 of yacc.c */ -#line 314 "./util/configparser.y" +#line 315 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 0, @@ -2357,7 +2365,7 @@ yyreduce: case 143: /* Line 1792 of yacc.c */ -#line 323 "./util/configparser.y" +#line 324 "./util/configparser.y" { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2369,7 +2377,7 @@ yyreduce: case 144: /* Line 1792 of yacc.c */ -#line 332 "./util/configparser.y" +#line 333 "./util/configparser.y" { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2381,7 +2389,7 @@ yyreduce: case 145: /* Line 1792 of yacc.c */ -#line 341 "./util/configparser.y" +#line 342 "./util/configparser.y" { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2393,7 +2401,7 @@ yyreduce: case 146: /* Line 1792 of yacc.c */ -#line 350 "./util/configparser.y" +#line 351 "./util/configparser.y" { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2405,7 +2413,7 @@ yyreduce: case 147: /* Line 1792 of yacc.c */ -#line 359 "./util/configparser.y" +#line 360 "./util/configparser.y" { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2417,7 +2425,7 @@ yyreduce: case 148: /* Line 1792 of yacc.c */ -#line 368 "./util/configparser.y" +#line 369 "./util/configparser.y" { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2429,7 +2437,7 @@ yyreduce: case 149: /* Line 1792 of yacc.c */ -#line 377 "./util/configparser.y" +#line 378 "./util/configparser.y" { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2441,7 +2449,7 @@ yyreduce: case 150: /* Line 1792 of yacc.c */ -#line 386 "./util/configparser.y" +#line 387 "./util/configparser.y" { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2453,7 +2461,7 @@ yyreduce: case 151: /* Line 1792 of yacc.c */ -#line 395 "./util/configparser.y" +#line 396 "./util/configparser.y" { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2465,7 +2473,7 @@ yyreduce: case 152: /* Line 1792 of yacc.c */ -#line 404 "./util/configparser.y" +#line 405 "./util/configparser.y" { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->ssl_service_key); @@ -2475,7 +2483,7 @@ yyreduce: case 153: /* Line 1792 of yacc.c */ -#line 411 "./util/configparser.y" +#line 412 "./util/configparser.y" { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->ssl_service_pem); @@ -2485,7 +2493,7 @@ yyreduce: case 154: /* Line 1792 of yacc.c */ -#line 418 "./util/configparser.y" +#line 419 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2497,7 +2505,7 @@ yyreduce: case 155: /* Line 1792 of yacc.c */ -#line 427 "./util/configparser.y" +#line 428 "./util/configparser.y" { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2509,7 +2517,7 @@ yyreduce: case 156: /* Line 1792 of yacc.c */ -#line 436 "./util/configparser.y" +#line 437 "./util/configparser.y" { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2526,7 +2534,7 @@ yyreduce: case 157: /* Line 1792 of yacc.c */ -#line 450 "./util/configparser.y" +#line 451 "./util/configparser.y" { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2538,7 +2546,7 @@ yyreduce: case 158: /* Line 1792 of yacc.c */ -#line 459 "./util/configparser.y" +#line 460 "./util/configparser.y" { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2550,7 +2558,7 @@ yyreduce: case 159: /* Line 1792 of yacc.c */ -#line 468 "./util/configparser.y" +#line 469 "./util/configparser.y" { OUTYY(("P(server_chroot:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->chrootdir); @@ -2560,7 +2568,7 @@ yyreduce: case 160: /* Line 1792 of yacc.c */ -#line 475 "./util/configparser.y" +#line 476 "./util/configparser.y" { OUTYY(("P(server_username:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->username); @@ -2570,7 +2578,7 @@ yyreduce: case 161: /* Line 1792 of yacc.c */ -#line 482 "./util/configparser.y" +#line 483 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->directory); @@ -2580,7 +2588,7 @@ yyreduce: case 162: /* Line 1792 of yacc.c */ -#line 489 "./util/configparser.y" +#line 490 "./util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->logfile); @@ -2591,7 +2599,7 @@ yyreduce: case 163: /* Line 1792 of yacc.c */ -#line 497 "./util/configparser.y" +#line 498 "./util/configparser.y" { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->pidfile); @@ -2601,7 +2609,7 @@ yyreduce: case 164: /* Line 1792 of yacc.c */ -#line 504 "./util/configparser.y" +#line 505 "./util/configparser.y" { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[(2) - (2)].str))) @@ -2611,7 +2619,7 @@ yyreduce: case 165: /* Line 1792 of yacc.c */ -#line 511 "./util/configparser.y" +#line 512 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->dlv_anchor_file); @@ -2621,7 +2629,7 @@ yyreduce: case 166: /* Line 1792 of yacc.c */ -#line 518 "./util/configparser.y" +#line 519 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[(2) - (2)].str))) @@ -2631,7 +2639,7 @@ yyreduce: case 167: /* Line 1792 of yacc.c */ -#line 525 "./util/configparser.y" +#line 526 "./util/configparser.y" { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> @@ -2642,7 +2650,7 @@ yyreduce: case 168: /* Line 1792 of yacc.c */ -#line 533 "./util/configparser.y" +#line 534 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> @@ -2653,7 +2661,7 @@ yyreduce: case 169: /* Line 1792 of yacc.c */ -#line 541 "./util/configparser.y" +#line 542 "./util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> @@ -2664,7 +2672,7 @@ yyreduce: case 170: /* Line 1792 of yacc.c */ -#line 549 "./util/configparser.y" +#line 550 "./util/configparser.y" { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[(2) - (2)].str))) @@ -2674,7 +2682,7 @@ yyreduce: case 171: /* Line 1792 of yacc.c */ -#line 556 "./util/configparser.y" +#line 557 "./util/configparser.y" { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[(2) - (2)].str))) @@ -2684,7 +2692,7 @@ yyreduce: case 172: /* Line 1792 of yacc.c */ -#line 563 "./util/configparser.y" +#line 564 "./util/configparser.y" { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2696,7 +2704,7 @@ yyreduce: case 173: /* Line 1792 of yacc.c */ -#line 572 "./util/configparser.y" +#line 573 "./util/configparser.y" { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2708,7 +2716,7 @@ yyreduce: case 174: /* Line 1792 of yacc.c */ -#line 581 "./util/configparser.y" +#line 582 "./util/configparser.y" { OUTYY(("P(server_identity:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->identity); @@ -2718,7 +2726,7 @@ yyreduce: case 175: /* Line 1792 of yacc.c */ -#line 588 "./util/configparser.y" +#line 589 "./util/configparser.y" { OUTYY(("P(server_version:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->version); @@ -2728,7 +2736,7 @@ yyreduce: case 176: /* Line 1792 of yacc.c */ -#line 595 "./util/configparser.y" +#line 596 "./util/configparser.y" { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_rcvbuf)) @@ -2739,7 +2747,7 @@ yyreduce: case 177: /* Line 1792 of yacc.c */ -#line 603 "./util/configparser.y" +#line 604 "./util/configparser.y" { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_sndbuf)) @@ -2750,7 +2758,7 @@ yyreduce: case 178: /* Line 1792 of yacc.c */ -#line 611 "./util/configparser.y" +#line 612 "./util/configparser.y" { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2763,7 +2771,7 @@ yyreduce: case 179: /* Line 1792 of yacc.c */ -#line 621 "./util/configparser.y" +#line 622 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2779,7 +2787,7 @@ yyreduce: case 180: /* Line 1792 of yacc.c */ -#line 634 "./util/configparser.y" +#line 635 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2793,7 +2801,7 @@ yyreduce: case 181: /* Line 1792 of yacc.c */ -#line 645 "./util/configparser.y" +#line 646 "./util/configparser.y" { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->msg_cache_size)) @@ -2804,7 +2812,7 @@ yyreduce: case 182: /* Line 1792 of yacc.c */ -#line 653 "./util/configparser.y" +#line 654 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2820,7 +2828,7 @@ yyreduce: case 183: /* Line 1792 of yacc.c */ -#line 666 "./util/configparser.y" +#line 667 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2832,7 +2840,7 @@ yyreduce: case 184: /* Line 1792 of yacc.c */ -#line 675 "./util/configparser.y" +#line 676 "./util/configparser.y" { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2844,7 +2852,7 @@ yyreduce: case 185: /* Line 1792 of yacc.c */ -#line 684 "./util/configparser.y" +#line 685 "./util/configparser.y" { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2856,7 +2864,7 @@ yyreduce: case 186: /* Line 1792 of yacc.c */ -#line 693 "./util/configparser.y" +#line 694 "./util/configparser.y" { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2869,7 +2877,7 @@ yyreduce: case 187: /* Line 1792 of yacc.c */ -#line 703 "./util/configparser.y" +#line 704 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->rrset_cache_size)) @@ -2880,7 +2888,7 @@ yyreduce: case 188: /* Line 1792 of yacc.c */ -#line 711 "./util/configparser.y" +#line 712 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2896,7 +2904,7 @@ yyreduce: case 189: /* Line 1792 of yacc.c */ -#line 724 "./util/configparser.y" +#line 725 "./util/configparser.y" { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2908,7 +2916,7 @@ yyreduce: case 190: /* Line 1792 of yacc.c */ -#line 733 "./util/configparser.y" +#line 734 "./util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[(2) - (2)].str))); verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " @@ -2919,7 +2927,7 @@ yyreduce: case 191: /* Line 1792 of yacc.c */ -#line 741 "./util/configparser.y" +#line 742 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2931,7 +2939,7 @@ yyreduce: case 192: /* Line 1792 of yacc.c */ -#line 750 "./util/configparser.y" +#line 751 "./util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[(2) - (2)].str))); verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " @@ -2942,7 +2950,7 @@ yyreduce: case 193: /* Line 1792 of yacc.c */ -#line 758 "./util/configparser.y" +#line 759 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2958,7 +2966,7 @@ yyreduce: case 194: /* Line 1792 of yacc.c */ -#line 771 "./util/configparser.y" +#line 772 "./util/configparser.y" { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->target_fetch_policy); @@ -2968,7 +2976,7 @@ yyreduce: case 195: /* Line 1792 of yacc.c */ -#line 778 "./util/configparser.y" +#line 779 "./util/configparser.y" { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2981,7 +2989,7 @@ yyreduce: case 196: /* Line 1792 of yacc.c */ -#line 788 "./util/configparser.y" +#line 789 "./util/configparser.y" { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2994,7 +3002,7 @@ yyreduce: case 197: /* Line 1792 of yacc.c */ -#line 798 "./util/configparser.y" +#line 799 "./util/configparser.y" { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3007,7 +3015,7 @@ yyreduce: case 198: /* Line 1792 of yacc.c */ -#line 808 "./util/configparser.y" +#line 809 "./util/configparser.y" { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3020,7 +3028,7 @@ yyreduce: case 199: /* Line 1792 of yacc.c */ -#line 818 "./util/configparser.y" +#line 819 "./util/configparser.y" { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3033,7 +3041,7 @@ yyreduce: case 200: /* Line 1792 of yacc.c */ -#line 828 "./util/configparser.y" +#line 829 "./util/configparser.y" { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3046,7 +3054,7 @@ yyreduce: case 201: /* Line 1792 of yacc.c */ -#line 838 "./util/configparser.y" +#line 839 "./util/configparser.y" { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3059,7 +3067,7 @@ yyreduce: case 202: /* Line 1792 of yacc.c */ -#line 848 "./util/configparser.y" +#line 849 "./util/configparser.y" { OUTYY(("P(server_private_address:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[(2) - (2)].str))) @@ -3069,7 +3077,7 @@ yyreduce: case 203: /* Line 1792 of yacc.c */ -#line 855 "./util/configparser.y" +#line 856 "./util/configparser.y" { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[(2) - (2)].str))) @@ -3079,7 +3087,7 @@ yyreduce: case 204: /* Line 1792 of yacc.c */ -#line 862 "./util/configparser.y" +#line 863 "./util/configparser.y" { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3091,7 +3099,7 @@ yyreduce: case 205: /* Line 1792 of yacc.c */ -#line 871 "./util/configparser.y" +#line 872 "./util/configparser.y" { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3103,7 +3111,7 @@ yyreduce: case 206: /* Line 1792 of yacc.c */ -#line 880 "./util/configparser.y" +#line 881 "./util/configparser.y" { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3115,7 +3123,7 @@ yyreduce: case 207: /* Line 1792 of yacc.c */ -#line 889 "./util/configparser.y" +#line 890 "./util/configparser.y" { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[(2) - (2)].str))) @@ -3125,7 +3133,7 @@ yyreduce: case 208: /* Line 1792 of yacc.c */ -#line 896 "./util/configparser.y" +#line 897 "./util/configparser.y" { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3138,7 +3146,7 @@ yyreduce: case 209: /* Line 1792 of yacc.c */ -#line 906 "./util/configparser.y" +#line 907 "./util/configparser.y" { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); if(strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 && @@ -3158,7 +3166,7 @@ yyreduce: case 210: /* Line 1792 of yacc.c */ -#line 923 "./util/configparser.y" +#line 924 "./util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->module_conf); @@ -3168,7 +3176,7 @@ yyreduce: case 211: /* Line 1792 of yacc.c */ -#line 930 "./util/configparser.y" +#line 931 "./util/configparser.y" { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[(2) - (2)].str))); if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { @@ -3189,7 +3197,7 @@ yyreduce: case 212: /* Line 1792 of yacc.c */ -#line 948 "./util/configparser.y" +#line 949 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[(2) - (2)].str))); if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { @@ -3205,7 +3213,7 @@ yyreduce: case 213: /* Line 1792 of yacc.c */ -#line 961 "./util/configparser.y" +#line 962 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[(2) - (2)].str))); if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { @@ -3221,7 +3229,7 @@ yyreduce: case 214: /* Line 1792 of yacc.c */ -#line 974 "./util/configparser.y" +#line 975 "./util/configparser.y" { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3233,7 +3241,7 @@ yyreduce: case 215: /* Line 1792 of yacc.c */ -#line 983 "./util/configparser.y" +#line 984 "./util/configparser.y" { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3245,7 +3253,7 @@ yyreduce: case 216: /* Line 1792 of yacc.c */ -#line 992 "./util/configparser.y" +#line 993 "./util/configparser.y" { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3257,7 +3265,7 @@ yyreduce: case 217: /* Line 1792 of yacc.c */ -#line 1001 "./util/configparser.y" +#line 1002 "./util/configparser.y" { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3270,7 +3278,7 @@ yyreduce: case 218: /* Line 1792 of yacc.c */ -#line 1011 "./util/configparser.y" +#line 1012 "./util/configparser.y" { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3283,7 +3291,7 @@ yyreduce: case 219: /* Line 1792 of yacc.c */ -#line 1021 "./util/configparser.y" +#line 1022 "./util/configparser.y" { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3295,7 +3303,7 @@ yyreduce: case 220: /* Line 1792 of yacc.c */ -#line 1030 "./util/configparser.y" +#line 1031 "./util/configparser.y" { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3307,7 +3315,7 @@ yyreduce: case 221: /* Line 1792 of yacc.c */ -#line 1039 "./util/configparser.y" +#line 1040 "./util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); @@ -3317,7 +3325,7 @@ yyreduce: case 222: /* Line 1792 of yacc.c */ -#line 1046 "./util/configparser.y" +#line 1047 "./util/configparser.y" { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3329,7 +3337,7 @@ yyreduce: case 223: /* Line 1792 of yacc.c */ -#line 1055 "./util/configparser.y" +#line 1056 "./util/configparser.y" { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3341,7 +3349,7 @@ yyreduce: case 224: /* Line 1792 of yacc.c */ -#line 1064 "./util/configparser.y" +#line 1065 "./util/configparser.y" { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3353,7 +3361,7 @@ yyreduce: case 225: /* Line 1792 of yacc.c */ -#line 1073 "./util/configparser.y" +#line 1074 "./util/configparser.y" { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->key_cache_size)) @@ -3364,7 +3372,7 @@ yyreduce: case 226: /* Line 1792 of yacc.c */ -#line 1081 "./util/configparser.y" +#line 1082 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -3380,7 +3388,7 @@ yyreduce: case 227: /* Line 1792 of yacc.c */ -#line 1094 "./util/configparser.y" +#line 1095 "./util/configparser.y" { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->neg_cache_size)) @@ -3391,7 +3399,7 @@ yyreduce: case 228: /* Line 1792 of yacc.c */ -#line 1102 "./util/configparser.y" +#line 1103 "./util/configparser.y" { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && @@ -3417,7 +3425,7 @@ yyreduce: case 229: /* Line 1792 of yacc.c */ -#line 1125 "./util/configparser.y" +#line 1126 "./util/configparser.y" { OUTYY(("P(server_local_data:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[(2) - (2)].str))) @@ -3427,7 +3435,7 @@ yyreduce: case 230: /* Line 1792 of yacc.c */ -#line 1132 "./util/configparser.y" +#line 1133 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str))); @@ -3445,7 +3453,7 @@ yyreduce: case 231: /* Line 1792 of yacc.c */ -#line 1147 "./util/configparser.y" +#line 1148 "./util/configparser.y" { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3458,7 +3466,7 @@ yyreduce: case 232: /* Line 1792 of yacc.c */ -#line 1157 "./util/configparser.y" +#line 1158 "./util/configparser.y" { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3471,7 +3479,7 @@ yyreduce: case 233: /* Line 1792 of yacc.c */ -#line 1167 "./util/configparser.y" +#line 1168 "./util/configparser.y" { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[(2) - (2)].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[(2) - (2)].str)); @@ -3481,7 +3489,7 @@ yyreduce: case 234: /* Line 1792 of yacc.c */ -#line 1174 "./util/configparser.y" +#line 1175 "./util/configparser.y" { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->dns64_prefix); @@ -3491,7 +3499,7 @@ yyreduce: case 235: /* Line 1792 of yacc.c */ -#line 1181 "./util/configparser.y" +#line 1182 "./util/configparser.y" { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3503,7 +3511,7 @@ yyreduce: case 236: /* Line 1792 of yacc.c */ -#line 1190 "./util/configparser.y" +#line 1191 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->stubs->name) @@ -3516,7 +3524,7 @@ yyreduce: case 237: /* Line 1792 of yacc.c */ -#line 1200 "./util/configparser.y" +#line 1201 "./util/configparser.y" { OUTYY(("P(stub-host:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[(2) - (2)].str))) @@ -3526,7 +3534,7 @@ yyreduce: case 238: /* Line 1792 of yacc.c */ -#line 1207 "./util/configparser.y" +#line 1208 "./util/configparser.y" { OUTYY(("P(stub-addr:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[(2) - (2)].str))) @@ -3536,7 +3544,7 @@ yyreduce: case 239: /* Line 1792 of yacc.c */ -#line 1214 "./util/configparser.y" +#line 1215 "./util/configparser.y" { OUTYY(("P(stub-first:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3548,7 +3556,7 @@ yyreduce: case 240: /* Line 1792 of yacc.c */ -#line 1223 "./util/configparser.y" +#line 1224 "./util/configparser.y" { OUTYY(("P(stub-prime:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3561,7 +3569,7 @@ yyreduce: case 241: /* Line 1792 of yacc.c */ -#line 1233 "./util/configparser.y" +#line 1234 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->forwards->name) @@ -3574,7 +3582,7 @@ yyreduce: case 242: /* Line 1792 of yacc.c */ -#line 1243 "./util/configparser.y" +#line 1244 "./util/configparser.y" { OUTYY(("P(forward-host:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[(2) - (2)].str))) @@ -3584,7 +3592,7 @@ yyreduce: case 243: /* Line 1792 of yacc.c */ -#line 1250 "./util/configparser.y" +#line 1251 "./util/configparser.y" { OUTYY(("P(forward-addr:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[(2) - (2)].str))) @@ -3594,7 +3602,7 @@ yyreduce: case 244: /* Line 1792 of yacc.c */ -#line 1257 "./util/configparser.y" +#line 1258 "./util/configparser.y" { OUTYY(("P(forward-first:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3606,15 +3614,15 @@ yyreduce: case 245: /* Line 1792 of yacc.c */ -#line 1266 "./util/configparser.y" +#line 1267 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } break; - case 255: + case 256: /* Line 1792 of yacc.c */ -#line 1277 "./util/configparser.y" +#line 1278 "./util/configparser.y" { OUTYY(("P(control_enable:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3625,9 +3633,9 @@ yyreduce: } break; - case 256: + case 257: /* Line 1792 of yacc.c */ -#line 1287 "./util/configparser.y" +#line 1288 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -3637,9 +3645,9 @@ yyreduce: } break; - case 257: + case 258: /* Line 1792 of yacc.c */ -#line 1296 "./util/configparser.y" +#line 1297 "./util/configparser.y" { OUTYY(("P(control_interface:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[(2) - (2)].str))) @@ -3647,9 +3655,22 @@ yyreduce: } break; - case 258: + case 259: /* Line 1792 of yacc.c */ -#line 1303 "./util/configparser.y" +#line 1304 "./util/configparser.y" + { + OUTYY(("P(control_use_cert:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->remote_control_use_cert = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); + } + break; + + case 260: +/* Line 1792 of yacc.c */ +#line 1314 "./util/configparser.y" { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->server_key_file); @@ -3657,9 +3678,9 @@ yyreduce: } break; - case 259: + case 261: /* Line 1792 of yacc.c */ -#line 1310 "./util/configparser.y" +#line 1321 "./util/configparser.y" { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->server_cert_file); @@ -3667,9 +3688,9 @@ yyreduce: } break; - case 260: + case 262: /* Line 1792 of yacc.c */ -#line 1317 "./util/configparser.y" +#line 1328 "./util/configparser.y" { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->control_key_file); @@ -3677,9 +3698,9 @@ yyreduce: } break; - case 261: + case 263: /* Line 1792 of yacc.c */ -#line 1324 "./util/configparser.y" +#line 1335 "./util/configparser.y" { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->control_cert_file); @@ -3687,17 +3708,17 @@ yyreduce: } break; - case 262: + case 264: /* Line 1792 of yacc.c */ -#line 1331 "./util/configparser.y" +#line 1342 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } break; - case 277: + case 279: /* Line 1792 of yacc.c */ -#line 1348 "./util/configparser.y" +#line 1359 "./util/configparser.y" { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3706,9 +3727,9 @@ yyreduce: } break; - case 278: + case 280: /* Line 1792 of yacc.c */ -#line 1356 "./util/configparser.y" +#line 1367 "./util/configparser.y" { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->dnstap_socket_path); @@ -3716,9 +3737,9 @@ yyreduce: } break; - case 279: + case 281: /* Line 1792 of yacc.c */ -#line 1363 "./util/configparser.y" +#line 1374 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3727,9 +3748,9 @@ yyreduce: } break; - case 280: + case 282: /* Line 1792 of yacc.c */ -#line 1371 "./util/configparser.y" +#line 1382 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3738,9 +3759,9 @@ yyreduce: } break; - case 281: + case 283: /* Line 1792 of yacc.c */ -#line 1379 "./util/configparser.y" +#line 1390 "./util/configparser.y" { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->dnstap_identity); @@ -3748,9 +3769,9 @@ yyreduce: } break; - case 282: + case 284: /* Line 1792 of yacc.c */ -#line 1386 "./util/configparser.y" +#line 1397 "./util/configparser.y" { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->dnstap_version); @@ -3758,9 +3779,9 @@ yyreduce: } break; - case 283: + case 285: /* Line 1792 of yacc.c */ -#line 1393 "./util/configparser.y" +#line 1404 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3770,9 +3791,9 @@ yyreduce: } break; - case 284: + case 286: /* Line 1792 of yacc.c */ -#line 1402 "./util/configparser.y" +#line 1413 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3782,9 +3803,9 @@ yyreduce: } break; - case 285: + case 287: /* Line 1792 of yacc.c */ -#line 1411 "./util/configparser.y" +#line 1422 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3794,9 +3815,9 @@ yyreduce: } break; - case 286: + case 288: /* Line 1792 of yacc.c */ -#line 1420 "./util/configparser.y" +#line 1431 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3806,9 +3827,9 @@ yyreduce: } break; - case 287: + case 289: /* Line 1792 of yacc.c */ -#line 1429 "./util/configparser.y" +#line 1440 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3818,9 +3839,9 @@ yyreduce: } break; - case 288: + case 290: /* Line 1792 of yacc.c */ -#line 1438 "./util/configparser.y" +#line 1449 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3830,17 +3851,17 @@ yyreduce: } break; - case 289: + case 291: /* Line 1792 of yacc.c */ -#line 1447 "./util/configparser.y" +#line 1458 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } break; - case 293: + case 295: /* Line 1792 of yacc.c */ -#line 1456 "./util/configparser.y" +#line 1467 "./util/configparser.y" { OUTYY(("P(python-script:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->python_script); @@ -3850,7 +3871,7 @@ yyreduce: /* Line 1792 of yacc.c */ -#line 3854 "util/configparser.c" +#line 3875 "util/configparser.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -4082,7 +4103,7 @@ yyreturn: /* Line 2055 of yacc.c */ -#line 1461 "./util/configparser.y" +#line 1472 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 0ee72661d..dfb668d8e 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -139,59 +139,60 @@ extern int yydebug; VAR_SERVER_CERT_FILE = 348, VAR_CONTROL_KEY_FILE = 349, VAR_CONTROL_CERT_FILE = 350, - VAR_EXTENDED_STATISTICS = 351, - VAR_LOCAL_DATA_PTR = 352, - VAR_JOSTLE_TIMEOUT = 353, - VAR_STUB_PRIME = 354, - VAR_UNWANTED_REPLY_THRESHOLD = 355, - VAR_LOG_TIME_ASCII = 356, - VAR_DOMAIN_INSECURE = 357, - VAR_PYTHON = 358, - VAR_PYTHON_SCRIPT = 359, - VAR_VAL_SIG_SKEW_MIN = 360, - VAR_VAL_SIG_SKEW_MAX = 361, - VAR_CACHE_MIN_TTL = 362, - VAR_VAL_LOG_LEVEL = 363, - VAR_AUTO_TRUST_ANCHOR_FILE = 364, - VAR_KEEP_MISSING = 365, - VAR_ADD_HOLDDOWN = 366, - VAR_DEL_HOLDDOWN = 367, - VAR_SO_RCVBUF = 368, - VAR_EDNS_BUFFER_SIZE = 369, - VAR_PREFETCH = 370, - VAR_PREFETCH_KEY = 371, - VAR_SO_SNDBUF = 372, - VAR_SO_REUSEPORT = 373, - VAR_HARDEN_BELOW_NXDOMAIN = 374, - VAR_IGNORE_CD_FLAG = 375, - VAR_LOG_QUERIES = 376, - VAR_TCP_UPSTREAM = 377, - VAR_SSL_UPSTREAM = 378, - VAR_SSL_SERVICE_KEY = 379, - VAR_SSL_SERVICE_PEM = 380, - VAR_SSL_PORT = 381, - VAR_FORWARD_FIRST = 382, - VAR_STUB_FIRST = 383, - VAR_MINIMAL_RESPONSES = 384, - VAR_RRSET_ROUNDROBIN = 385, - VAR_MAX_UDP_SIZE = 386, - VAR_DELAY_CLOSE = 387, - VAR_UNBLOCK_LAN_ZONES = 388, - VAR_DNS64_PREFIX = 389, - VAR_DNS64_SYNTHALL = 390, - VAR_DNSTAP = 391, - VAR_DNSTAP_ENABLE = 392, - VAR_DNSTAP_SOCKET_PATH = 393, - VAR_DNSTAP_SEND_IDENTITY = 394, - VAR_DNSTAP_SEND_VERSION = 395, - VAR_DNSTAP_IDENTITY = 396, - VAR_DNSTAP_VERSION = 397, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 398, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 399, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 400, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 401, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 402, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 403 + VAR_CONTROL_USE_CERT = 351, + VAR_EXTENDED_STATISTICS = 352, + VAR_LOCAL_DATA_PTR = 353, + VAR_JOSTLE_TIMEOUT = 354, + VAR_STUB_PRIME = 355, + VAR_UNWANTED_REPLY_THRESHOLD = 356, + VAR_LOG_TIME_ASCII = 357, + VAR_DOMAIN_INSECURE = 358, + VAR_PYTHON = 359, + VAR_PYTHON_SCRIPT = 360, + VAR_VAL_SIG_SKEW_MIN = 361, + VAR_VAL_SIG_SKEW_MAX = 362, + VAR_CACHE_MIN_TTL = 363, + VAR_VAL_LOG_LEVEL = 364, + VAR_AUTO_TRUST_ANCHOR_FILE = 365, + VAR_KEEP_MISSING = 366, + VAR_ADD_HOLDDOWN = 367, + VAR_DEL_HOLDDOWN = 368, + VAR_SO_RCVBUF = 369, + VAR_EDNS_BUFFER_SIZE = 370, + VAR_PREFETCH = 371, + VAR_PREFETCH_KEY = 372, + VAR_SO_SNDBUF = 373, + VAR_SO_REUSEPORT = 374, + VAR_HARDEN_BELOW_NXDOMAIN = 375, + VAR_IGNORE_CD_FLAG = 376, + VAR_LOG_QUERIES = 377, + VAR_TCP_UPSTREAM = 378, + VAR_SSL_UPSTREAM = 379, + VAR_SSL_SERVICE_KEY = 380, + VAR_SSL_SERVICE_PEM = 381, + VAR_SSL_PORT = 382, + VAR_FORWARD_FIRST = 383, + VAR_STUB_FIRST = 384, + VAR_MINIMAL_RESPONSES = 385, + VAR_RRSET_ROUNDROBIN = 386, + VAR_MAX_UDP_SIZE = 387, + VAR_DELAY_CLOSE = 388, + VAR_UNBLOCK_LAN_ZONES = 389, + VAR_DNS64_PREFIX = 390, + VAR_DNS64_SYNTHALL = 391, + VAR_DNSTAP = 392, + VAR_DNSTAP_ENABLE = 393, + VAR_DNSTAP_SOCKET_PATH = 394, + VAR_DNSTAP_SEND_IDENTITY = 395, + VAR_DNSTAP_SEND_VERSION = 396, + VAR_DNSTAP_IDENTITY = 397, + VAR_DNSTAP_VERSION = 398, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 399, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 400, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 401, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 402, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 403, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 404 }; #endif /* Tokens. */ @@ -288,59 +289,60 @@ extern int yydebug; #define VAR_SERVER_CERT_FILE 348 #define VAR_CONTROL_KEY_FILE 349 #define VAR_CONTROL_CERT_FILE 350 -#define VAR_EXTENDED_STATISTICS 351 -#define VAR_LOCAL_DATA_PTR 352 -#define VAR_JOSTLE_TIMEOUT 353 -#define VAR_STUB_PRIME 354 -#define VAR_UNWANTED_REPLY_THRESHOLD 355 -#define VAR_LOG_TIME_ASCII 356 -#define VAR_DOMAIN_INSECURE 357 -#define VAR_PYTHON 358 -#define VAR_PYTHON_SCRIPT 359 -#define VAR_VAL_SIG_SKEW_MIN 360 -#define VAR_VAL_SIG_SKEW_MAX 361 -#define VAR_CACHE_MIN_TTL 362 -#define VAR_VAL_LOG_LEVEL 363 -#define VAR_AUTO_TRUST_ANCHOR_FILE 364 -#define VAR_KEEP_MISSING 365 -#define VAR_ADD_HOLDDOWN 366 -#define VAR_DEL_HOLDDOWN 367 -#define VAR_SO_RCVBUF 368 -#define VAR_EDNS_BUFFER_SIZE 369 -#define VAR_PREFETCH 370 -#define VAR_PREFETCH_KEY 371 -#define VAR_SO_SNDBUF 372 -#define VAR_SO_REUSEPORT 373 -#define VAR_HARDEN_BELOW_NXDOMAIN 374 -#define VAR_IGNORE_CD_FLAG 375 -#define VAR_LOG_QUERIES 376 -#define VAR_TCP_UPSTREAM 377 -#define VAR_SSL_UPSTREAM 378 -#define VAR_SSL_SERVICE_KEY 379 -#define VAR_SSL_SERVICE_PEM 380 -#define VAR_SSL_PORT 381 -#define VAR_FORWARD_FIRST 382 -#define VAR_STUB_FIRST 383 -#define VAR_MINIMAL_RESPONSES 384 -#define VAR_RRSET_ROUNDROBIN 385 -#define VAR_MAX_UDP_SIZE 386 -#define VAR_DELAY_CLOSE 387 -#define VAR_UNBLOCK_LAN_ZONES 388 -#define VAR_DNS64_PREFIX 389 -#define VAR_DNS64_SYNTHALL 390 -#define VAR_DNSTAP 391 -#define VAR_DNSTAP_ENABLE 392 -#define VAR_DNSTAP_SOCKET_PATH 393 -#define VAR_DNSTAP_SEND_IDENTITY 394 -#define VAR_DNSTAP_SEND_VERSION 395 -#define VAR_DNSTAP_IDENTITY 396 -#define VAR_DNSTAP_VERSION 397 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 398 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 399 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 400 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 401 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 402 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 403 +#define VAR_CONTROL_USE_CERT 351 +#define VAR_EXTENDED_STATISTICS 352 +#define VAR_LOCAL_DATA_PTR 353 +#define VAR_JOSTLE_TIMEOUT 354 +#define VAR_STUB_PRIME 355 +#define VAR_UNWANTED_REPLY_THRESHOLD 356 +#define VAR_LOG_TIME_ASCII 357 +#define VAR_DOMAIN_INSECURE 358 +#define VAR_PYTHON 359 +#define VAR_PYTHON_SCRIPT 360 +#define VAR_VAL_SIG_SKEW_MIN 361 +#define VAR_VAL_SIG_SKEW_MAX 362 +#define VAR_CACHE_MIN_TTL 363 +#define VAR_VAL_LOG_LEVEL 364 +#define VAR_AUTO_TRUST_ANCHOR_FILE 365 +#define VAR_KEEP_MISSING 366 +#define VAR_ADD_HOLDDOWN 367 +#define VAR_DEL_HOLDDOWN 368 +#define VAR_SO_RCVBUF 369 +#define VAR_EDNS_BUFFER_SIZE 370 +#define VAR_PREFETCH 371 +#define VAR_PREFETCH_KEY 372 +#define VAR_SO_SNDBUF 373 +#define VAR_SO_REUSEPORT 374 +#define VAR_HARDEN_BELOW_NXDOMAIN 375 +#define VAR_IGNORE_CD_FLAG 376 +#define VAR_LOG_QUERIES 377 +#define VAR_TCP_UPSTREAM 378 +#define VAR_SSL_UPSTREAM 379 +#define VAR_SSL_SERVICE_KEY 380 +#define VAR_SSL_SERVICE_PEM 381 +#define VAR_SSL_PORT 382 +#define VAR_FORWARD_FIRST 383 +#define VAR_STUB_FIRST 384 +#define VAR_MINIMAL_RESPONSES 385 +#define VAR_RRSET_ROUNDROBIN 386 +#define VAR_MAX_UDP_SIZE 387 +#define VAR_DELAY_CLOSE 388 +#define VAR_UNBLOCK_LAN_ZONES 389 +#define VAR_DNS64_PREFIX 390 +#define VAR_DNS64_SYNTHALL 391 +#define VAR_DNSTAP 392 +#define VAR_DNSTAP_ENABLE 393 +#define VAR_DNSTAP_SOCKET_PATH 394 +#define VAR_DNSTAP_SEND_IDENTITY 395 +#define VAR_DNSTAP_SEND_VERSION 396 +#define VAR_DNSTAP_IDENTITY 397 +#define VAR_DNSTAP_VERSION 398 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 399 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 400 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 401 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 402 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 403 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 404 @@ -354,7 +356,7 @@ typedef union YYSTYPE /* Line 2058 of yacc.c */ -#line 358 "util/configparser.h" +#line 360 "util/configparser.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ diff --git a/util/configparser.y b/util/configparser.y index 05f0c6cf3..a2657bc07 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -95,6 +95,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_PRIVATE_DOMAIN VAR_REMOTE_CONTROL VAR_CONTROL_ENABLE %token VAR_CONTROL_INTERFACE VAR_CONTROL_PORT VAR_SERVER_KEY_FILE %token VAR_SERVER_CERT_FILE VAR_CONTROL_KEY_FILE VAR_CONTROL_CERT_FILE +%token VAR_CONTROL_USE_CERT %token VAR_EXTENDED_STATISTICS VAR_LOCAL_DATA_PTR VAR_JOSTLE_TIMEOUT %token VAR_STUB_PRIME VAR_UNWANTED_REPLY_THRESHOLD VAR_LOG_TIME_ASCII %token VAR_DOMAIN_INSECURE VAR_PYTHON VAR_PYTHON_SCRIPT VAR_VAL_SIG_SKEW_MIN @@ -1271,7 +1272,7 @@ contents_rc: contents_rc content_rc | ; content_rc: rc_control_enable | rc_control_interface | rc_control_port | rc_server_key_file | rc_server_cert_file | rc_control_key_file | - rc_control_cert_file + rc_control_cert_file | rc_control_use_cert ; rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG { @@ -1299,6 +1300,16 @@ rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG yyerror("out of memory"); } ; +rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG + { + OUTYY(("P(control_use_cert:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->remote_control_use_cert = + (strcmp($2, "yes")==0); + free($2); + } + ; rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG { OUTYY(("P(rc_server_key_file:%s)\n", $2)); diff --git a/util/net_help.c b/util/net_help.c index 8c2bac737..335ee7499 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -156,7 +156,7 @@ log_addr(enum verbosity_value v, const char* str, case AF_INET6: family="ip6"; sinaddr = &((struct sockaddr_in6*)addr)->sin6_addr; break; - case AF_UNIX: family="unix"; break; + case AF_LOCAL: family="local"; break; default: break; } if(inet_ntop(af, sinaddr, dest, (socklen_t)sizeof(dest)) == 0) { @@ -313,7 +313,7 @@ void log_name_addr(enum verbosity_value v, const char* str, uint8_t* zone, case AF_INET6: family=""; sinaddr = &((struct sockaddr_in6*)addr)->sin6_addr; break; - case AF_UNIX: family="unix_family "; break; + case AF_LOCAL: family="local "; break; default: break; } if(inet_ntop(af, sinaddr, dest, (socklen_t)sizeof(dest)) == 0) { -- 2.47.2