From cd7db58ce31e59f24dec86a896baf6706d4c3bc5 Mon Sep 17 00:00:00 2001 From: Wouter Wijngaards Date: Tue, 3 Jan 2017 13:43:29 +0000 Subject: [PATCH] - configure --enable-systemd and lets unbound use systemd sockets if you enable use-systemd: yes in unbound.conf. Also there are contrib/unbound.socket and contrib/unbound.service: systemd files for unbound, install them in /usr/lib/systemd/system. Contributed by Sami Kerola and Pavel Odintsov. git-svn-id: file:///svn/unbound/trunk@3975 be551aaa-1e26-0410-a405-d3ace91eadb9 --- aclocal.m4 | 326 +++++ config.h.in | 3 + configure | 350 ++++- configure.ac | 6 +- contrib/README | 2 + contrib/unbound.service.in | 8 + contrib/unbound.socket.in | 6 + daemon/daemon.c | 19 +- daemon/remote.c | 4 +- daemon/unbound.c | 5 + doc/Changelog | 7 + doc/example.conf.in | 4 + doc/unbound.conf.5.in | 7 +- services/listen_dnsport.c | 151 +- services/listen_dnsport.h | 9 +- services/outside_network.c | 4 +- systemd.m4 | 27 + util/config_file.c | 3 + util/config_file.h | 3 + util/configlexer.c | 2720 ++++++++++++++++++------------------ util/configlexer.lex | 1 + util/configparser.c | 1557 +++++++++++---------- util/configparser.h | 6 +- util/configparser.y | 12 +- 24 files changed, 3086 insertions(+), 2154 deletions(-) create mode 100644 contrib/unbound.service.in create mode 100644 contrib/unbound.socket.in create mode 100644 systemd.m4 diff --git a/aclocal.m4 b/aclocal.m4 index ea5d6e9f8..f21da5394 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -9044,3 +9044,329 @@ m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) +dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +dnl serial 11 (pkg-config-0.29.1) +dnl +dnl Copyright © 2004 Scott James Remnant . +dnl Copyright © 2012-2015 Dan Nicholson +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, but +dnl WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +dnl 02111-1307, USA. +dnl +dnl As a special exception to the GNU General Public License, if you +dnl distribute this file as part of a program that contains a +dnl configuration script generated by Autoconf, you may include it under +dnl the same distribution terms that you use for the rest of that +dnl program. + +dnl PKG_PREREQ(MIN-VERSION) +dnl ----------------------- +dnl Since: 0.29 +dnl +dnl Verify that the version of the pkg-config macros are at least +dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's +dnl installed version of pkg-config, this checks the developer's version +dnl of pkg.m4 when generating configure. +dnl +dnl To ensure that this macro is defined, also add: +dnl m4_ifndef([PKG_PREREQ], +dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) +dnl +dnl See the "Since" comment for each macro you use to see what version +dnl of the macros you require. +m4_defun([PKG_PREREQ], +[m4_define([PKG_MACROS_VERSION], [0.29.1]) +m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, + [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) +])dnl PKG_PREREQ + +dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) +dnl ---------------------------------- +dnl Since: 0.16 +dnl +dnl Search for the pkg-config tool and set the PKG_CONFIG variable to +dnl first found in the path. Checks that the version of pkg-config found +dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is +dnl used since that's the first version where most current features of +dnl pkg-config existed. +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +])dnl PKG_PROG_PKG_CONFIG + +dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------------------------------- +dnl Since: 0.18 +dnl +dnl Check to see whether a particular set of modules exists. Similar to +dnl PKG_CHECK_MODULES(), but does not set variables or print errors. +dnl +dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +dnl only at the first occurence in configure.ac, so if the first place +dnl it's called might be skipped (such as if it is within an "if", you +dnl have to call PKG_CHECK_EXISTS manually +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + +dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +dnl --------------------------------------------- +dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting +dnl pkg_failed based on the result. +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])dnl _PKG_CONFIG + +dnl _PKG_SHORT_ERRORS_SUPPORTED +dnl --------------------------- +dnl Internal check to see if pkg-config supports short errors. +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])dnl _PKG_SHORT_ERRORS_SUPPORTED + + +dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl -------------------------------------------------------------- +dnl Since: 0.4.0 +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES might not happen, you should be sure to include an +dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $1]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see .])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])dnl PKG_CHECK_MODULES + + +dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl --------------------------------------------------------------------- +dnl Since: 0.29 +dnl +dnl Checks for existence of MODULES and gathers its build flags with +dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags +dnl and VARIABLE-PREFIX_LIBS from --libs. +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to +dnl include an explicit call to PKG_PROG_PKG_CONFIG in your +dnl configure.ac. +AC_DEFUN([PKG_CHECK_MODULES_STATIC], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +_save_PKG_CONFIG=$PKG_CONFIG +PKG_CONFIG="$PKG_CONFIG --static" +PKG_CHECK_MODULES($@) +PKG_CONFIG=$_save_PKG_CONFIG[]dnl +])dnl PKG_CHECK_MODULES_STATIC + + +dnl PKG_INSTALLDIR([DIRECTORY]) +dnl ------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable pkgconfigdir as the location where a module +dnl should install pkg-config .pc files. By default the directory is +dnl $libdir/pkgconfig, but the default can be changed by passing +dnl DIRECTORY. The user can override through the --with-pkgconfigdir +dnl parameter. +AC_DEFUN([PKG_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, + [with_pkgconfigdir=]pkg_default) +AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_INSTALLDIR + + +dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) +dnl -------------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable noarch_pkgconfigdir as the location where a +dnl module should install arch-independent pkg-config .pc files. By +dnl default the directory is $datadir/pkgconfig, but the default can be +dnl changed by passing DIRECTORY. The user can override through the +dnl --with-noarch-pkgconfigdir parameter. +AC_DEFUN([PKG_NOARCH_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([noarch-pkgconfigdir], + [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, + [with_noarch_pkgconfigdir=]pkg_default) +AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_NOARCH_INSTALLDIR + + +dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------- +dnl Since: 0.28 +dnl +dnl Retrieves the value of the pkg-config variable for the given module. +AC_DEFUN([PKG_CHECK_VAR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +])dnl PKG_CHECK_VAR + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 2006-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + diff --git a/config.h.in b/config.h.in index 2484199bc..3a4f47b5c 100644 --- a/config.h.in +++ b/config.h.in @@ -454,6 +454,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYSLOG_H +/* Define to 1 if systemd should be used */ +#undef HAVE_SYSTEMD + /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H diff --git a/configure b/configure index 14702491b..97b32e6af 100755 --- a/configure +++ b/configure @@ -658,6 +658,15 @@ WIN_DAEMON_SRC WINAPPS WINDRES CHECKLOCK_OBJ +USE_SYSTEMD_FALSE +USE_SYSTEMD_TRUE +SYSTEMD_DAEMON_LIBS +SYSTEMD_DAEMON_CFLAGS +SYSTEMD_LIBS +SYSTEMD_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG staticexe PC_LIBEVENT_DEPENDENCY UNBOUND_EVENT_UNINSTALL @@ -841,6 +850,7 @@ enable_tfo_server with_libevent with_libexpat enable_static_exe +enable_systemd enable_lock_checks enable_allsymbols enable_dnstap @@ -862,7 +872,14 @@ CPP YACC YFLAGS LT_SYS_LIBRARY_PATH -PYTHON_VERSION' +PYTHON_VERSION +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +SYSTEMD_CFLAGS +SYSTEMD_LIBS +SYSTEMD_DAEMON_CFLAGS +SYSTEMD_DAEMON_LIBS' # Initialize some variables set by options. @@ -1508,6 +1525,7 @@ Optional Features: --enable-tfo-server Enable TCP Fast Open for server mode --enable-static-exe enable to compile executables statically against (event) libs, for debug purposes + --enable-systemd compile with systemd support --enable-lock-checks enable to check lock and unlock calls, for debug purposes --enable-allsymbols export all symbols from libunbound and link binaries @@ -1591,6 +1609,19 @@ Some influential environment variables: The installed Python version to use, for example '2.3'. This string will be appended to the Python interpreter canonical name. + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + SYSTEMD_CFLAGS + C compiler flags for SYSTEMD, overriding pkg-config + SYSTEMD_LIBS + linker flags for SYSTEMD, overriding pkg-config + SYSTEMD_DAEMON_CFLAGS + C compiler flags for SYSTEMD_DAEMON, overriding pkg-config + SYSTEMD_DAEMON_LIBS + linker flags for SYSTEMD_DAEMON, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -18468,6 +18499,315 @@ if test x_$enable_static_exe = x_yes; then fi fi +# Include systemd.m4 - begin +# macros for configuring systemd +# Copyright 2015, Sami Kerola, CloudFlare. +# BSD licensed. +# Check whether --enable-systemd was given. +if test "${enable_systemd+set}" = set; then : + enableval=$enable_systemd; +else + enable_systemd=no +fi + +have_systemd=no + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi +if test "x$enable_systemd" != xno; then : + + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SYSTEMD" >&5 +$as_echo_n "checking for SYSTEMD... " >&6; } + +if test -n "$SYSTEMD_CFLAGS"; then + pkg_cv_SYSTEMD_CFLAGS="$SYSTEMD_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libsystemd") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_SYSTEMD_CFLAGS=`$PKG_CONFIG --cflags "libsystemd" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$SYSTEMD_LIBS"; then + pkg_cv_SYSTEMD_LIBS="$SYSTEMD_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libsystemd") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_SYSTEMD_LIBS=`$PKG_CONFIG --libs "libsystemd" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + SYSTEMD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libsystemd" 2>&1` + else + SYSTEMD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libsystemd" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$SYSTEMD_PKG_ERRORS" >&5 + + have_systemd=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + have_systemd=no +else + SYSTEMD_CFLAGS=$pkg_cv_SYSTEMD_CFLAGS + SYSTEMD_LIBS=$pkg_cv_SYSTEMD_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + have_systemd=yes +fi + if test "x$have_systemd" != "xyes"; then : + + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SYSTEMD_DAEMON" >&5 +$as_echo_n "checking for SYSTEMD_DAEMON... " >&6; } + +if test -n "$SYSTEMD_DAEMON_CFLAGS"; then + pkg_cv_SYSTEMD_DAEMON_CFLAGS="$SYSTEMD_DAEMON_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd-daemon\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libsystemd-daemon") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_SYSTEMD_DAEMON_CFLAGS=`$PKG_CONFIG --cflags "libsystemd-daemon" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$SYSTEMD_DAEMON_LIBS"; then + pkg_cv_SYSTEMD_DAEMON_LIBS="$SYSTEMD_DAEMON_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd-daemon\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libsystemd-daemon") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_SYSTEMD_DAEMON_LIBS=`$PKG_CONFIG --libs "libsystemd-daemon" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + SYSTEMD_DAEMON_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libsystemd-daemon" 2>&1` + else + SYSTEMD_DAEMON_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libsystemd-daemon" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$SYSTEMD_DAEMON_PKG_ERRORS" >&5 + + have_systemd_daemon=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + have_systemd_daemon=no +else + SYSTEMD_DAEMON_CFLAGS=$pkg_cv_SYSTEMD_DAEMON_CFLAGS + SYSTEMD_DAEMON_LIBS=$pkg_cv_SYSTEMD_DAEMON_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + have_systemd_daemon=yes +fi + if test "x$have_systemd_daemon" = "xyes"; then : + have_systemd=yes +fi + +fi + case $enable_systemd:$have_systemd in #( + yes:no) : + as_fn_error $? "systemd enabled but libsystemd not found" "$LINENO" 5 ;; #( + *:yes) : + +$as_echo "#define HAVE_SYSTEMD 1" >>confdefs.h + + LIBS="$LIBS $SYSTEMD_LIBS" + + ;; #( + *) : + ;; +esac + +fi + if test "x$have_systemd" = xyes; then + USE_SYSTEMD_TRUE= + USE_SYSTEMD_FALSE='#' +else + USE_SYSTEMD_TRUE='#' + USE_SYSTEMD_FALSE= +fi + + +# Include systemd.m4 - end + # set lock checking if requested # Check whether --enable-lock_checks was given. if test "${enable_lock_checks+set}" = set; then : @@ -19991,7 +20331,7 @@ version=1.6.1 date=`date +'%b %e, %Y'` -ac_config_files="$ac_config_files Makefile doc/example.conf doc/libunbound.3 doc/unbound.8 doc/unbound-anchor.8 doc/unbound-checkconf.8 doc/unbound.conf.5 doc/unbound-control.8 doc/unbound-host.1 smallapp/unbound-control-setup.sh dnstap/dnstap_config.h contrib/libunbound.pc" +ac_config_files="$ac_config_files Makefile doc/example.conf doc/libunbound.3 doc/unbound.8 doc/unbound-anchor.8 doc/unbound-checkconf.8 doc/unbound.conf.5 doc/unbound-control.8 doc/unbound-host.1 smallapp/unbound-control-setup.sh dnstap/dnstap_config.h contrib/libunbound.pc contrib/unbound.socket contrib/unbound.service" ac_config_headers="$ac_config_headers config.h" @@ -20104,6 +20444,10 @@ LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs +if test -z "${USE_SYSTEMD_TRUE}" && test -z "${USE_SYSTEMD_FALSE}"; then + as_fn_error $? "conditional \"USE_SYSTEMD\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 @@ -20990,6 +21334,8 @@ do "smallapp/unbound-control-setup.sh") CONFIG_FILES="$CONFIG_FILES smallapp/unbound-control-setup.sh" ;; "dnstap/dnstap_config.h") CONFIG_FILES="$CONFIG_FILES dnstap/dnstap_config.h" ;; "contrib/libunbound.pc") CONFIG_FILES="$CONFIG_FILES contrib/libunbound.pc" ;; + "contrib/unbound.socket") CONFIG_FILES="$CONFIG_FILES contrib/unbound.socket" ;; + "contrib/unbound.service") CONFIG_FILES="$CONFIG_FILES contrib/unbound.service" ;; "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; diff --git a/configure.ac b/configure.ac index cf4c2c182..abb37360c 100644 --- a/configure.ac +++ b/configure.ac @@ -1054,6 +1054,10 @@ if test x_$enable_static_exe = x_yes; then fi fi +# Include systemd.m4 - begin +sinclude(systemd.m4) +# Include systemd.m4 - end + # set lock checking if requested AC_ARG_ENABLE(lock_checks, AC_HELP_STRING([--enable-lock-checks], [ enable to check lock and unlock calls, for debug purposes ]), @@ -1602,6 +1606,6 @@ dnl if this is a distro tarball, that was already done by makedist.sh AC_SUBST(version, [VERSION_MAJOR.VERSION_MINOR.VERSION_MICRO]) AC_SUBST(date, [`date +'%b %e, %Y'`]) -AC_CONFIG_FILES([Makefile doc/example.conf doc/libunbound.3 doc/unbound.8 doc/unbound-anchor.8 doc/unbound-checkconf.8 doc/unbound.conf.5 doc/unbound-control.8 doc/unbound-host.1 smallapp/unbound-control-setup.sh dnstap/dnstap_config.h contrib/libunbound.pc]) +AC_CONFIG_FILES([Makefile doc/example.conf doc/libunbound.3 doc/unbound.8 doc/unbound-anchor.8 doc/unbound-checkconf.8 doc/unbound.conf.5 doc/unbound-control.8 doc/unbound-host.1 smallapp/unbound-control-setup.sh dnstap/dnstap_config.h contrib/libunbound.pc contrib/unbound.socket contrib/unbound.service]) AC_CONFIG_HEADER([config.h]) AC_OUTPUT diff --git a/contrib/README b/contrib/README index 8eae9b5b7..7ccae735d 100644 --- a/contrib/README +++ b/contrib/README @@ -29,3 +29,5 @@ distribution but may be helpful. Patch from Stephane Lapie for ASAHI Net. * unbound_smf22.tar.gz: Solaris SMF installation/removal scripts. Contributed by Yuri Voinov. +* unbound.socket and unbound.service: systemd files for unbound, install them + in /usr/lib/systemd/system. Contributed by Sami Kerola and Pavel Odintsov. diff --git a/contrib/unbound.service.in b/contrib/unbound.service.in new file mode 100644 index 000000000..b33c3706d --- /dev/null +++ b/contrib/unbound.service.in @@ -0,0 +1,8 @@ +[Service] +Type=notify +NotifyAccess=main +ExecStart=/home/vagrant/unbound_systemd/unbound +ExecReload=/bin/kill -HUP $MAINPID + +[Install] +WantedBy=multi-user.target diff --git a/contrib/unbound.socket.in b/contrib/unbound.socket.in new file mode 100644 index 000000000..162fb3e02 --- /dev/null +++ b/contrib/unbound.socket.in @@ -0,0 +1,6 @@ +[Socket] +ListenDatagram=127.0.0.1:1153 +ListenStream=127.0.0.1:1153 +# ListenStream=@UNBOUND_RUN_DIR@/control +[Install] +WantedBy=sockets.target diff --git a/daemon/daemon.c b/daemon/daemon.c index 88c695be3..4cae43800 100644 --- a/daemon/daemon.c +++ b/daemon/daemon.c @@ -88,6 +88,10 @@ #include "sldns/keyraw.h" #include +#ifdef HAVE_SYSTEMD +#include +#endif + /** How many quit requests happened. */ static int sig_record_quit = 0; /** How many reload requests happened. */ @@ -175,8 +179,15 @@ static void signal_handling_playback(struct worker* wrk) { #ifdef SIGHUP - if(sig_record_reload) + if(sig_record_reload) { +# ifdef HAVE_SYSTEMD + sd_notify(0, "RELOADING=1"); +# endif worker_sighandler(SIGHUP, wrk); +# ifdef HAVE_SYSTEMD + sd_notify(0, "READY=1"); +# endif + } #endif if(sig_record_quit) worker_sighandler(SIGTERM, wrk); @@ -595,8 +606,14 @@ daemon_fork(struct daemon* daemon) signal_handling_playback(daemon->workers[0]); /* Start resolver service on main thread. */ +#ifdef HAVE_SYSTEMD + sd_notify(0, "READY=1"); +#endif log_info("start of service (%s).", PACKAGE_STRING); worker_work(daemon->workers[0]); +#ifdef HAVE_SYSTEMD + sd_notify(0, "STOPPING=1"); +#endif log_info("service stopped (%s).", PACKAGE_STRING); /* we exited! a signal happened! Stop other threads */ diff --git a/daemon/remote.c b/daemon/remote.c index d4ac833e3..c066fc9de 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -381,7 +381,7 @@ add_open(const char* ip, int nr, struct listen_port** list, int noproto_is_err, if(ip[0] == '/') { /* This looks like a local socket */ - fd = create_local_accept_sock(ip, &noproto); + fd = create_local_accept_sock(ip, &noproto, cfg->use_systemd); /* * Change socket ownership and permissions so users other * than root can access it provided they are in the same @@ -424,7 +424,7 @@ add_open(const char* ip, int nr, struct listen_port** list, int noproto_is_err, /* open fd */ fd = create_tcp_accept_sock(res, 1, &noproto, 0, - cfg->ip_transparent, 0, cfg->ip_freebind); + cfg->ip_transparent, 0, cfg->ip_freebind, cfg->use_systemd); freeaddrinfo(res); } diff --git a/daemon/unbound.c b/daemon/unbound.c index df9504254..ba7337d89 100644 --- a/daemon/unbound.c +++ b/daemon/unbound.c @@ -264,6 +264,11 @@ apply_settings(struct daemon* daemon, struct config_file* cfg, } daemon_apply_cfg(daemon, cfg); checkrlimits(cfg); + + if (cfg->use_systemd && cfg->do_daemonize) { + log_warn("use-systemd and do-daemonize should not be enabled at the same time"); + } + log_ident_set_fromdefault(cfg, log_default_identity); } diff --git a/doc/Changelog b/doc/Changelog index cb24a0a73..f1ec796ab 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,10 @@ +3 January 2017: Wouter + - configure --enable-systemd and lets unbound use systemd sockets if + you enable use-systemd: yes in unbound.conf. + Also there are contrib/unbound.socket and contrib/unbound.service: + systemd files for unbound, install them in /usr/lib/systemd/system. + Contributed by Sami Kerola and Pavel Odintsov. + 2 January 2017: Wouter - Fix #1194: Cross build fails when $host isn't `uname` for getentropy. diff --git a/doc/example.conf.in b/doc/example.conf.in index a8d61d3a2..1c42eba23 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -200,7 +200,11 @@ server: # Default is 0, system default MSS. # outgoing-tcp-mss: 0 + # Use systemd socket activation for UDP, TCP, and control sockets. + # use-systemd: no + # Detach from the terminal, run in background, "yes" or "no". + # Set the value to "no" when unbound runs as systemd service. # do-daemonize: yes # control which clients are allowed to make (recursive) queries diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 755558acc..12efc1652 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -413,9 +413,14 @@ turned off. The port number on which to provide TCP SSL service, default 853, only interfaces configured with that port number as @number get the SSL service. .TP +.B use\-systemd: \fI +Enable or disable systemd socket activation. +Default is no. +.TP .B do\-daemonize: \fI Enable or disable whether the unbound server forks into the background as -a daemon. Default is yes. +a daemon. Set the value to \fIno\fR when unbound runs as systemd service. +Default is yes. .TP .B access\-control: \fI The netblock is given as an IP4 or IP6 address with /size appended for a diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 129700fb8..9bf4290eb 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -63,6 +63,10 @@ #include #endif +#ifdef HAVE_SYSTEMD +#include +#endif + /** number of queued TCP connections for listen() */ #define TCP_BACKLOG 256 @@ -96,11 +100,71 @@ verbose_print_addr(struct addrinfo *addr) } } +#ifdef HAVE_SYSTEMD +static int +systemd_get_activated(int family, int socktype, int listen, + struct sockaddr *addr, socklen_t addrlen, + const char *path) +{ + int i = 0; + int r = 0; + int s = -1; + const char* listen_pid, *listen_fds; + + /* We should use "listen" option only for stream protocols. For UDP it should be -1 */ + + if((r = sd_booted()) < 1) { + if(r == 0) + log_warn("systemd is not running"); + else + log_err("systemd sd_booted(): %s", strerror(-r)); + return -1; + } + + listen_pid = getenv("LISTEN_PID"); + listen_fds = getenv("LISTEN_FDS"); + + if (!listen_pid) { + log_warn("Systemd mandatory ENV variable is not defined: LISTEN_PID"); + return -1; + } + + if (!listen_fds) { + log_warn("Systemd mandatory ENV variable is not defined: LISTEN_FDS"); + return -1; + } + + if((r = sd_listen_fds(0)) < 1) { + if(r == 0) + log_warn("systemd: did not return socket, check unit configuration"); + else + log_err("systemd sd_listen_fds(): %s", strerror(-r)); + return -1; + } + + for(i = 0; i < r; i++) { + if(sd_is_socket(SD_LISTEN_FDS_START + i, family, socktype, listen)) { + s = SD_LISTEN_FDS_START + i; + break; + } + } + if (s == -1) { + if (addr) + log_err_addr("systemd sd_listen_fds()", + "no such socket", + (struct sockaddr_storage *)addr, addrlen); + else + log_err("systemd sd_listen_fds(): %s", path); + } + return s; +} +#endif + int create_udp_sock(int family, int socktype, struct sockaddr* addr, socklen_t addrlen, int v6only, int* inuse, int* noproto, int rcv, int snd, int listen, int* reuseport, int transparent, - int freebind) + int freebind, int use_systemd) { int s; #if defined(SO_REUSEADDR) || defined(SO_REUSEPORT) || defined(IPV6_USE_MIN_MTU) || defined(IP_TRANSPARENT) || defined(IP_BINDANY) || defined(IP_FREEBIND) @@ -123,6 +187,14 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, #endif #if !defined(IP_FREEBIND) (void)freebind; +#endif +#ifdef HAVE_SYSTEMD + int got_fd_from_systemd = 0; + + if (!use_systemd + || (use_systemd + && (s = systemd_get_activated(family, socktype, -1, addr, + addrlen, NULL)) == -1)) { #endif if((s = socket(family, socktype, 0)) == -1) { *inuse = 0; @@ -144,6 +216,11 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, *noproto = 0; return -1; } +#ifdef HAVE_SYSTEMD + } else { + got_fd_from_systemd = 1; + } +#endif if(listen) { #ifdef SO_REUSEADDR if(setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void*)&on, @@ -465,7 +542,11 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, } # endif /* IPv4 MTU */ } - if(bind(s, (struct sockaddr*)addr, addrlen) != 0) { + if( +#ifdef HAVE_SYSTEMD + !got_fd_from_systemd && +#endif + bind(s, (struct sockaddr*)addr, addrlen) != 0) { *noproto = 0; *inuse = 0; #ifndef USE_WINSOCK @@ -488,7 +569,7 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, (struct sockaddr_storage*)addr, addrlen); } closesocket(s); -#endif +#endif /* USE_WINSOCK */ return -1; } if(!fd_set_nonblock(s)) { @@ -506,12 +587,15 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, int create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, - int* reuseport, int transparent, int mss, int freebind) + int* reuseport, int transparent, int mss, int freebind, int use_systemd) { int s; #if defined(SO_REUSEADDR) || defined(SO_REUSEPORT) || defined(IPV6_V6ONLY) || defined(IP_TRANSPARENT) || defined(IP_BINDANY) || defined(IP_FREEBIND) int on = 1; #endif +#ifdef HAVE_SYSTEMD + int got_fd_from_systemd = 0; +#endif #ifdef USE_TCP_FASTOPEN int qlen; #endif @@ -523,6 +607,13 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, #endif verbose_print_addr(addr); *noproto = 0; +#ifdef HAVE_SYSTEMD + if (!use_systemd || + (use_systemd + && (s = systemd_get_activated(addr->ai_family, addr->ai_socktype, 1, + addr->ai_addr, addr->ai_addrlen, + NULL)) == -1)) { +#endif if((s = socket(addr->ai_family, addr->ai_socktype, 0)) == -1) { #ifndef USE_WINSOCK if(errno == EAFNOSUPPORT || errno == EPROTONOSUPPORT) { @@ -560,6 +651,11 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, log_warn(" setsockopt(TCP_MAXSEG) unsupported"); #endif /* defined(IPPROTO_TCP) && defined(TCP_MAXSEG) */ } +#ifdef HAVE_SYSTEMD + } else { + got_fd_from_systemd = 1; + } +#endif #ifdef SO_REUSEADDR if(setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void*)&on, (socklen_t)sizeof(on)) < 0) { @@ -637,7 +733,11 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, (addr->ai_family==AF_INET6?"V6":""), strerror(errno)); } #endif /* IP_TRANSPARENT || IP_BINDANY */ - if(bind(s, addr->ai_addr, addr->ai_addrlen) != 0) { + if( +#ifdef HAVE_SYSTEMD + !got_fd_from_systemd && +#endif + bind(s, addr->ai_addr, addr->ai_addrlen) != 0) { #ifndef USE_WINSOCK /* detect freebsd jail with no ipv6 permission */ if(addr->ai_family==AF_INET6 && errno==EINVAL) @@ -695,8 +795,15 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, } int -create_local_accept_sock(const char *path, int* noproto) +create_local_accept_sock(const char *path, int* noproto, int use_systemd) { +#ifdef HAVE_SYSTEMD + int ret; + + if (use_systemd && (ret = systemd_get_activated(AF_LOCAL, SOCK_STREAM, 1, NULL, 0, path)) != -1) + return ret; + else { +#endif #ifdef HAVE_SYS_UN_H int s; struct sockaddr_un usock; @@ -751,6 +858,9 @@ err: #endif return -1; +#ifdef HAVE_SYSTEMD + } +#endif #else (void)path; log_err("Local sockets are not supported"); @@ -766,7 +876,7 @@ err: static int make_sock(int stype, const char* ifname, const char* port, struct addrinfo *hints, int v6only, int* noip6, size_t rcv, size_t snd, - int* reuseport, int transparent, int tcp_mss, int freebind) + int* reuseport, int transparent, int tcp_mss, int freebind, int use_systemd) { struct addrinfo *res = NULL; int r, s, inuse, noproto; @@ -794,7 +904,7 @@ make_sock(int stype, const char* ifname, const char* port, s = create_udp_sock(res->ai_family, res->ai_socktype, (struct sockaddr*)res->ai_addr, res->ai_addrlen, v6only, &inuse, &noproto, (int)rcv, (int)snd, 1, - reuseport, transparent, freebind); + reuseport, transparent, freebind, use_systemd); if(s == -1 && inuse) { log_err("bind: address already in use"); } else if(s == -1 && noproto && hints->ai_family == AF_INET6){ @@ -802,7 +912,7 @@ make_sock(int stype, const char* ifname, const char* port, } } else { s = create_tcp_accept_sock(res, v6only, &noproto, reuseport, - transparent, tcp_mss, freebind); + transparent, tcp_mss, freebind, use_systemd); if(s == -1 && noproto && hints->ai_family == AF_INET6){ *noip6 = 1; } @@ -815,7 +925,7 @@ make_sock(int stype, const char* ifname, const char* port, static int make_sock_port(int stype, const char* ifname, const char* port, struct addrinfo *hints, int v6only, int* noip6, size_t rcv, size_t snd, - int* reuseport, int transparent, int tcp_mss, int freebind) + int* reuseport, int transparent, int tcp_mss, int freebind, int use_systemd) { char* s = strchr(ifname, '@'); if(s) { @@ -837,10 +947,10 @@ make_sock_port(int stype, const char* ifname, const char* port, (void)strlcpy(p, s+1, sizeof(p)); p[strlen(s+1)]=0; return make_sock(stype, newif, p, hints, v6only, noip6, - rcv, snd, reuseport, transparent, tcp_mss, freebind); + rcv, snd, reuseport, transparent, tcp_mss, freebind, use_systemd); } return make_sock(stype, ifname, port, hints, v6only, noip6, rcv, snd, - reuseport, transparent, tcp_mss, freebind); + reuseport, transparent, tcp_mss, freebind, use_systemd); } /** @@ -937,13 +1047,14 @@ set_recvpktinfo(int s, int family) * @param transparent: set IP_TRANSPARENT socket option. * @param tcp_mss: maximum segment size of tcp socket. default if zero. * @param freebind: set IP_FREEBIND socket option. + * @param use_systemd: if true, fetch sockets from systemd. * @return: returns false on error. */ static int ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, struct addrinfo *hints, const char* port, struct listen_port** list, size_t rcv, size_t snd, int ssl_port, int* reuseport, int transparent, - int tcp_mss, int freebind) + int tcp_mss, int freebind, int use_systemd) { int s, noip6=0; if(!do_udp && !do_tcp) @@ -951,7 +1062,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, if(do_auto) { if((s = make_sock_port(SOCK_DGRAM, ifname, port, hints, 1, &noip6, rcv, snd, reuseport, transparent, - tcp_mss, freebind)) == -1) { + tcp_mss, freebind, use_systemd)) == -1) { if(noip6) { log_warn("IPv6 protocol not available"); return 1; @@ -979,7 +1090,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, /* regular udp socket */ if((s = make_sock_port(SOCK_DGRAM, ifname, port, hints, 1, &noip6, rcv, snd, reuseport, transparent, - tcp_mss, freebind)) == -1) { + tcp_mss, freebind, use_systemd)) == -1) { if(noip6) { log_warn("IPv6 protocol not available"); return 1; @@ -1001,7 +1112,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, (!strchr(ifname, '@') && atoi(port) == ssl_port)); if((s = make_sock_port(SOCK_STREAM, ifname, port, hints, 1, &noip6, 0, 0, reuseport, transparent, tcp_mss, - freebind)) == -1) { + freebind, use_systemd)) == -1) { if(noip6) { /*log_warn("IPv6 protocol not available");*/ return 1; @@ -1159,7 +1270,7 @@ listening_ports_open(struct config_file* cfg, int* reuseport) cfg->so_rcvbuf, cfg->so_sndbuf, cfg->ssl_port, reuseport, cfg->ip_transparent, - cfg->tcp_mss, cfg->ip_freebind)) { + cfg->tcp_mss, cfg->ip_freebind, cfg->use_systemd)) { listening_ports_free(list); return NULL; } @@ -1172,7 +1283,7 @@ listening_ports_open(struct config_file* cfg, int* reuseport) cfg->so_rcvbuf, cfg->so_sndbuf, cfg->ssl_port, reuseport, cfg->ip_transparent, - cfg->tcp_mss, cfg->ip_freebind)) { + cfg->tcp_mss, cfg->ip_freebind, cfg->use_systemd)) { listening_ports_free(list); return NULL; } @@ -1187,7 +1298,7 @@ listening_ports_open(struct config_file* cfg, int* reuseport) cfg->so_rcvbuf, cfg->so_sndbuf, cfg->ssl_port, reuseport, cfg->ip_transparent, - cfg->tcp_mss, cfg->ip_freebind)) { + cfg->tcp_mss, cfg->ip_freebind, cfg->use_systemd)) { listening_ports_free(list); return NULL; } @@ -1200,7 +1311,7 @@ listening_ports_open(struct config_file* cfg, int* reuseport) cfg->so_rcvbuf, cfg->so_sndbuf, cfg->ssl_port, reuseport, cfg->ip_transparent, - cfg->tcp_mss, cfg->ip_freebind)) { + cfg->tcp_mss, cfg->ip_freebind, cfg->use_systemd)) { listening_ports_free(list); return NULL; } diff --git a/services/listen_dnsport.h b/services/listen_dnsport.h index fbaa48321..4f2834b9c 100644 --- a/services/listen_dnsport.h +++ b/services/listen_dnsport.h @@ -191,11 +191,12 @@ void listen_start_accept(struct listen_dnsport* listen); * listening UDP port. Set to false on return if it failed to do so. * @param transparent: set IP_TRANSPARENT socket option. * @param freebind: set IP_FREEBIND socket option. + * @param use_systemd: if true, fetch sockets from systemd. * @return: the socket. -1 on error. */ int create_udp_sock(int family, int socktype, struct sockaddr* addr, socklen_t addrlen, int v6only, int* inuse, int* noproto, int rcv, - int snd, int listen, int* reuseport, int transparent, int freebind); + int snd, int listen, int* reuseport, int transparent, int freebind, int use_systemd); /** * Create and bind TCP listening socket @@ -207,18 +208,20 @@ int create_udp_sock(int family, int socktype, struct sockaddr* addr, * @param transparent: set IP_TRANSPARENT socket option. * @param mss: maximum segment size of the socket. if zero, leaves the default. * @param freebind: set IP_FREEBIND socket option. + * @param use_systemd: if true, fetch sockets from systemd. * @return: the socket. -1 on error. */ int create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, - int* reuseport, int transparent, int mss, int freebind); + int* reuseport, int transparent, int mss, int freebind, int use_systemd); /** * 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. + * @param use_systemd: if true, fetch sockets from systemd. * @return: the socket. -1 on error. */ -int create_local_accept_sock(const char* path, int* noproto); +int create_local_accept_sock(const char* path, int* noproto, int use_systemd); #endif /* LISTEN_DNSPORT_H */ diff --git a/services/outside_network.c b/services/outside_network.c index eba019520..0e993bd3d 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -966,13 +966,13 @@ udp_sockport(struct sockaddr_storage* addr, socklen_t addrlen, int pfxlen, } fd = create_udp_sock(AF_INET6, SOCK_DGRAM, (struct sockaddr*)&sa, addrlen, 1, inuse, &noproto, - 0, 0, 0, NULL, 0, freebind); + 0, 0, 0, NULL, 0, freebind, 0); } else { struct sockaddr_in* sa = (struct sockaddr_in*)addr; sa->sin_port = (in_port_t)htons((uint16_t)port); fd = create_udp_sock(AF_INET, SOCK_DGRAM, (struct sockaddr*)addr, addrlen, 1, inuse, &noproto, - 0, 0, 0, NULL, 0, 0); + 0, 0, 0, NULL, 0, 0, 0); } return fd; } diff --git a/systemd.m4 b/systemd.m4 new file mode 100644 index 000000000..553822418 --- /dev/null +++ b/systemd.m4 @@ -0,0 +1,27 @@ +# macros for configuring systemd +# Copyright 2015, Sami Kerola, CloudFlare. +# BSD licensed. +AC_ARG_ENABLE([systemd], + [AS_HELP_STRING([--enable-systemd], [compile with systemd support])], + [], [enable_systemd=no]) +have_systemd=no +AS_IF([test "x$enable_systemd" != xno], [ + dnl systemd v209 or newer + PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [have_systemd=yes], [have_systemd=no]) + dnl old systemd library + AS_IF([test "x$have_systemd" != "xyes"], [ + PKG_CHECK_MODULES([SYSTEMD_DAEMON], [libsystemd-daemon], + [have_systemd_daemon=yes], [have_systemd_daemon=no]) + AS_IF([test "x$have_systemd_daemon" = "xyes"], + [have_systemd=yes]) + ]) + AS_CASE([$enable_systemd:$have_systemd], + [yes:no], + [AC_MSG_ERROR([systemd enabled but libsystemd not found])], + [*:yes], + [AC_DEFINE([HAVE_SYSTEMD], [1], [Define to 1 if systemd should be used]) + LIBS="$LIBS $SYSTEMD_LIBS" + ] + ) +]) +AM_CONDITIONAL([USE_SYSTEMD], [test "x$have_systemd" = xyes]) diff --git a/util/config_file.c b/util/config_file.c index 881c85f59..50f8b3032 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -158,6 +158,7 @@ config_create(void) cfg->donotqueryaddrs = NULL; cfg->donotquery_localhost = 1; cfg->root_hints = NULL; + cfg->use_systemd = 0; cfg->do_daemonize = 1; cfg->if_automatic = 0; cfg->so_rcvbuf = 0; @@ -386,6 +387,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_STR("ssl-service-pem:", ssl_service_pem) else S_NUMBER_NONZERO("ssl-port:", ssl_port) else S_YNO("interface-automatic:", if_automatic) + else S_YNO("use-systemd:", use_systemd) else S_YNO("do-daemonize:", do_daemonize) else S_NUMBER_NONZERO("port:", port) else S_NUMBER_NONZERO("outgoing-range:", outgoing_num_ports) @@ -727,6 +729,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_STR(opt, "ssl-service-key", ssl_service_key) else O_STR(opt, "ssl-service-pem", ssl_service_pem) else O_DEC(opt, "ssl-port", ssl_port) + else O_YNO(opt, "use-systemd", use_systemd) else O_YNO(opt, "do-daemonize", do_daemonize) else O_STR(opt, "chroot", chrootdir) else O_STR(opt, "username", username) diff --git a/util/config_file.h b/util/config_file.h index 071b408e7..e4ed22895 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -344,6 +344,9 @@ struct config_file { /** Python script file */ char* python_script; + /** Use systemd socket activation. */ + int use_systemd; + /** daemonize, i.e. fork into the background. */ int do_daemonize; diff --git a/util/configlexer.c b/util/configlexer.c index c4f83b9bc..338f49192 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -10,7 +10,7 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 1 +#define YY_FLEX_SUBMINOR_VERSION 0 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -89,13 +89,25 @@ typedef unsigned int flex_uint32_t; #endif /* ! FLEXINT_H */ -/* TODO: this is always defined, so inline it */ -#define yyconst const +#ifdef __cplusplus -#if defined(__GNUC__) && __GNUC__ >= 3 -#define yynoreturn __attribute__((__noreturn__)) +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const #else -#define yynoreturn +#define yyconst #endif /* Returned upon end-of-file. */ @@ -156,7 +168,7 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE; typedef size_t yy_size_t; #endif -extern int yyleng; +extern yy_size_t yyleng; extern FILE *yyin, *yyout; @@ -172,7 +184,7 @@ extern FILE *yyin, *yyout; do \ { \ /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ + yy_size_t yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ @@ -195,12 +207,12 @@ struct yy_buffer_state /* Size of input buffer in bytes, not including room for EOB * characters. */ - int yy_buf_size; + yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - int yy_n_chars; + yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -223,7 +235,7 @@ struct yy_buffer_state int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ - + /* Whether to try to fill the input buffer when we reach the * end of it. */ @@ -251,7 +263,7 @@ struct yy_buffer_state /* Stack of input buffers. */ static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ +static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general @@ -270,11 +282,11 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; +static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ +yy_size_t yyleng; /* Points to current character in buffer. */ -static char *yy_c_buf_p = NULL; +static char *yy_c_buf_p = (char *) 0; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ @@ -299,7 +311,7 @@ static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); void *yyalloc (yy_size_t ); void *yyrealloc (void *,yy_size_t ); @@ -333,7 +345,7 @@ void yyfree (void * ); typedef unsigned char YY_CHAR; -FILE *yyin = NULL, *yyout = NULL; +FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; typedef int yy_state_type; @@ -350,7 +362,10 @@ extern char *yytext; static yy_state_type yy_get_previous_state (void ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); static int yy_get_next_buffer (void ); -static void yynoreturn yy_fatal_error (yyconst char* msg ); +#if defined(__GNUC__) && __GNUC__ >= 3 +__attribute__((__noreturn__)) +#endif +static void yy_fatal_error (yyconst char msg[] ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. @@ -358,13 +373,13 @@ static void yynoreturn yy_fatal_error (yyconst char* msg ); #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ (yytext_ptr) -= (yy_more_len); \ - yyleng = (int) (yy_cp - (yytext_ptr)); \ + yyleng = (size_t) (yy_cp - (yytext_ptr)); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 197 -#define YY_END_OF_BUFFER 198 +#define YY_NUM_RULES 198 +#define YY_END_OF_BUFFER 199 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -372,223 +387,223 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[1956] = +static yyconst flex_int16_t yy_accept[1961] = { 0, - 1, 1, 179, 179, 183, 183, 187, 187, 191, 191, - 1, 1, 198, 195, 1, 177, 177, 196, 2, 196, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 179, 180, 180, 181, 196, 183, 184, 184, 185, 196, - 190, 187, 188, 188, 189, 196, 191, 192, 192, 193, - 196, 194, 178, 2, 182, 196, 194, 195, 0, 1, - 2, 2, 2, 2, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 1, 1, 180, 180, 184, 184, 188, 188, 192, 192, + 1, 1, 199, 196, 1, 178, 178, 197, 2, 197, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 180, 181, 181, 182, 197, 184, 185, 185, 186, 197, + 191, 188, 189, 189, 190, 197, 192, 193, 193, 194, + 197, 195, 179, 2, 183, 197, 195, 196, 0, 1, + 2, 2, 2, 2, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 179, 0, - 183, 0, 190, 0, 187, 191, 0, 194, 0, 2, - 2, 194, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 180, 0, + 184, 0, 191, 0, 188, 192, 0, 195, 0, 2, + 2, 195, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 195, 195, 195, 195, 195, 195, 195, 195, 194, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 194, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 196, 196, 196, 196, 196, 196, 196, 196, 195, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 195, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 76, - 195, 195, 195, 195, 195, 195, 8, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 87, 194, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 77, + 196, 196, 196, 196, 196, 196, 8, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 88, 195, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 194, 195, 195, - 195, 195, 195, 36, 195, 195, 195, 195, 195, 195, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 195, 196, 196, + 196, 196, 196, 37, 196, 196, 196, 196, 196, 196, - 195, 195, 195, 195, 157, 195, 14, 15, 195, 18, - 17, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 143, 195, 195, 195, 195, - 195, 195, 195, 195, 3, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 194, 195, + 196, 196, 196, 196, 158, 196, 14, 15, 196, 18, + 17, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 144, 196, 196, 196, 196, + 196, 196, 196, 196, 3, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 195, 196, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 186, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 39, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 40, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 20, 195, 195, 195, 195, 195, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 187, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 40, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 41, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 20, 196, 196, 196, 196, 196, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 95, 195, 186, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 111, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 94, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 74, 195, 195, 195, 195, 195, 195, 195, 195, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 96, 196, 187, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 112, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 95, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 75, 196, 196, 196, 196, 196, 196, 196, - 195, 195, 195, 195, 195, 195, 195, 25, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 37, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 38, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 27, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 196, 196, 196, 196, 196, 196, 196, 196, 25, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 38, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 39, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 28, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 171, 195, 195, 195, 195, 195, 195, 195, 31, 195, - 32, 195, 195, 195, 77, 195, 78, 195, 195, 75, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 7, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 150, 195, 195, 195, 195, 97, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 172, 196, 196, 196, 196, 196, 196, 196, + 32, 196, 33, 196, 196, 196, 78, 196, 79, 196, + 196, 76, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 7, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 151, 196, 196, 196, 196, 98, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 28, 195, 195, 195, 195, 195, 195, 126, 195, 125, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 16, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 41, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 80, 79, 195, - 195, 195, 195, 195, 195, 195, 195, 121, 195, 195, - 195, 195, 195, 195, 195, 88, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 59, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 29, 196, 196, 196, 196, 196, 196, + 127, 196, 126, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 16, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 42, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 81, 80, 196, 196, 196, 196, 196, 196, 196, 196, + 122, 196, 196, 196, 196, 196, 196, 196, 196, 89, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 60, 196, 196, 196, 196, 196, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 63, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 35, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 124, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 6, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 117, 195, 195, 195, 195, 195, 195, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 64, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 36, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 125, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 6, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 26, + 196, 196, 196, 196, 196, 196, 196, 196, 118, 196, - 195, 195, 195, 136, 195, 118, 195, 195, 148, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 26, - 195, 195, 195, 195, 83, 195, 84, 195, 82, 195, - 195, 195, 195, 195, 195, 195, 93, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 119, - 195, 195, 195, 195, 195, 122, 195, 147, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 73, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 33, 195, 195, - 22, 195, 195, 195, 195, 19, 195, 102, 195, 195, + 196, 196, 196, 196, 196, 196, 196, 196, 137, 196, + 119, 196, 196, 149, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 27, 196, 196, 196, 196, 84, + 196, 85, 196, 83, 196, 196, 196, 196, 196, 196, + 196, 94, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 120, 196, 196, 196, 196, 196, + 123, 196, 148, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 74, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 34, 196, 196, 22, 196, 196, 196, 196, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 48, 50, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 158, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 85, 195, 195, - 195, 195, 195, 195, 195, 92, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 96, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 142, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 110, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 19, 196, 103, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 49, 51, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 159, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 86, 196, 196, 196, 196, 196, 196, 196, + 93, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 97, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 143, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 111, 196, 196, 196, 196, - 195, 195, 195, 195, 106, 195, 112, 195, 195, 195, - 195, 195, 91, 195, 195, 69, 195, 134, 195, 195, - 195, 195, 195, 149, 195, 195, 195, 195, 195, 195, - 195, 163, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 109, 195, 195, 195, 195, 195, - 51, 52, 195, 195, 34, 58, 113, 195, 127, 195, - 151, 123, 195, 195, 44, 195, 115, 195, 195, 195, - 195, 195, 9, 195, 195, 195, 72, 195, 195, 195, - 195, 173, 195, 133, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 107, + 196, 113, 196, 196, 196, 196, 196, 92, 196, 196, + 70, 196, 135, 196, 196, 196, 196, 196, 150, 196, + 196, 196, 196, 196, 196, 196, 164, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 110, + 196, 196, 196, 196, 196, 52, 53, 196, 196, 35, + 59, 114, 196, 128, 196, 152, 124, 196, 196, 45, + 196, 116, 196, 196, 196, 196, 196, 9, 196, 196, + 196, 73, 196, 196, 196, 196, 174, 196, 134, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 98, 162, 195, 195, 195, - 195, 195, 195, 195, 195, 144, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 114, 195, 195, 43, 45, 195, 195, 195, - 195, 195, 195, 195, 71, 195, 195, 195, 195, 172, - 195, 195, 195, 195, 138, 23, 24, 195, 195, 195, - 195, 195, 195, 195, 195, 68, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 140, 137, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 42, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 99, 163, 196, 196, 196, 196, 196, 196, 196, 196, + 145, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 115, 196, 196, + 44, 46, 196, 196, 196, 196, 196, 196, 196, 72, + 196, 196, 196, 196, 173, 196, 196, 196, 196, 139, + 23, 24, 196, 196, 196, 196, 196, 196, 196, 196, + 69, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 141, 138, 196, 196, 196, 196, 196, - 195, 195, 195, 195, 195, 195, 195, 195, 13, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 12, - 195, 195, 21, 195, 195, 195, 176, 195, 46, 195, - 146, 139, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 105, 104, 195, 195, 195, 195, - 141, 135, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 53, 195, 195, 195, 145, 195, 195, 195, - 195, 195, 195, 195, 195, 47, 195, 195, 81, 195, - 99, 101, 128, 195, 195, 195, 103, 195, 195, 152, + 196, 196, 196, 196, 43, 196, 196, 196, 196, 196, + 196, 196, 196, 13, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 12, 196, 196, 21, 196, 196, + 196, 177, 196, 47, 196, 147, 140, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 106, + 105, 196, 196, 196, 196, 142, 136, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 54, 196, 196, + 196, 146, 196, 196, 196, 196, 196, 196, 196, 196, + 48, 196, 196, 82, 196, 100, 102, 129, 196, 196, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 159, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 129, 195, 195, 195, 29, 195, - 195, 195, 195, 4, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 155, 195, 195, 195, 195, - 195, 195, 195, 195, 161, 195, 195, 132, 195, 195, - 195, 195, 195, 195, 195, 195, 56, 195, 30, 156, - 195, 11, 195, 195, 195, 195, 195, 195, 130, 60, - 195, 195, 195, 108, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 160, 89, 195, 86, 195, 195, + 196, 104, 196, 196, 153, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 160, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 130, + 196, 196, 196, 30, 196, 196, 196, 196, 4, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 156, 196, 196, 196, 196, 196, 196, 196, 196, 162, + 196, 196, 133, 196, 196, 196, 196, 196, 196, 196, + 196, 57, 196, 31, 157, 196, 11, 196, 196, 196, + 196, 196, 196, 131, 61, 196, 196, 196, 109, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 161, - 195, 62, 66, 61, 195, 54, 195, 10, 195, 195, - 195, 174, 195, 195, 107, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 67, 65, - 195, 55, 195, 120, 195, 195, 131, 195, 195, 195, - 195, 100, 49, 195, 195, 195, 195, 195, 195, 195, - 90, 64, 57, 195, 175, 195, 195, 195, 154, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 70, 195, - 153, 170, 195, 195, 195, 195, 195, 195, 5, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 90, 196, 87, 196, 196, 196, 63, 67, 62, 196, + 55, 196, 10, 196, 196, 196, 175, 196, 196, 108, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 68, 66, 196, 56, 196, 121, 196, + 196, 132, 196, 196, 196, 196, 101, 50, 196, 196, + 196, 196, 196, 196, 196, 91, 65, 58, 196, 176, + 196, 196, 196, 155, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 71, 196, 154, 171, 196, 196, 196, + 196, 196, 196, 5, 196, 196, 196, 196, 196, 196, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 116, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 166, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 164, 195, 167, 168, 195, 195, 195, - 195, 195, 165, 169, 0 + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 117, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 167, 196, 196, 196, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 165, 196, + 168, 169, 196, 196, 196, 196, 196, 166, 170, 0 } ; static yyconst YY_CHAR yy_ec[256] = @@ -631,15 +646,15 @@ static yyconst YY_CHAR yy_meta[40] = 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static yyconst flex_uint16_t yy_base[1970] = +static yyconst flex_uint16_t yy_base[1975] = { 0, 0, 0, 37, 40, 44, 51, 63, 75, 56, 68, - 87, 108, 2263, 2182, 50, 3865, 3865, 3865, 129, 94, + 87, 108, 1941, 1871, 50, 3872, 3872, 3872, 129, 94, 70, 104, 130, 90, 109, 106, 127, 111, 84, 122, 146, 148, 50, 170, 136, 158, 152, 180, 168, 191, - 1746, 3865, 3865, 3865, 70, 1530, 3865, 3865, 3865, 42, - 1355, 1349, 3865, 3865, 3865, 210, 1187, 3865, 3865, 3865, - 141, 955, 3865, 214, 3865, 218, 140, 911, 224, 167, + 1674, 3872, 3872, 3872, 70, 1503, 3872, 3872, 3872, 42, + 1423, 1366, 3872, 3872, 3872, 210, 1187, 3872, 3872, 3872, + 141, 955, 3872, 214, 3872, 218, 140, 911, 224, 167, 0, 235, 0, 0, 92, 162, 164, 174, 193, 217, 230, 219, 103, 178, 233, 225, 220, 221, 241, 243, 244, 189, 249, 247, 256, 245, 252, 255, 254, 260, @@ -669,12 +684,12 @@ static yyconst flex_uint16_t yy_base[1970] = 692, 694, 702, 698, 700, 709, 699, 710, 711, 703, 713, 712, 718, 720, 721, 723, 724, 725, 736, 728, 734, 731, 741, 739, 744, 750, 748, 742, 756, 759, - 758, 746, 760, 761, 764, 765, 770, 763, 771, 3865, - 776, 774, 778, 779, 780, 781, 3865, 783, 782, 785, + 758, 746, 760, 761, 764, 765, 770, 763, 771, 3872, + 776, 774, 778, 779, 780, 781, 3872, 783, 782, 785, 792, 789, 791, 797, 809, 811, 790, 794, 810, 807, 808, 816, 817, 837, 819, 821, 818, 825, 823, 824, 827, 833, 841, 831, 835, 849, 848, 850, 852, 851, - 854, 855, 859, 3865, 862, 874, 868, 861, 871, 875, + 854, 855, 859, 3872, 862, 874, 868, 861, 871, 875, 877, 878, 886, 882, 885, 887, 891, 889, 893, 900, 897, 904, 906, 913, 915, 917, 923, 898, 920, 907, @@ -686,392 +701,394 @@ static yyconst flex_uint16_t yy_base[1970] = 1025, 1029, 1027, 1032, 1030, 1034, 1035, 1042, 1038, 1039, 1051, 1055, 1049, 1041, 1054, 1044, 1056, 1061, 1062, 1064, 1072, 1073, 1065, 1074, 1066, 1076, 1079, 1080, 1084, 1082, - 1089, 1091, 1093, 3865, 1099, 1095, 1097, 1096, 1098, 1109, + 1089, 1091, 1093, 3872, 1099, 1095, 1097, 1096, 1098, 1109, - 1103, 1105, 1106, 1132, 3865, 1107, 3865, 3865, 1112, 3865, - 3865, 1117, 1113, 1114, 1120, 1130, 1155, 1128, 1124, 1127, + 1103, 1105, 1106, 1132, 3872, 1107, 3872, 3872, 1112, 3872, + 3872, 1117, 1113, 1114, 1120, 1130, 1155, 1128, 1124, 1127, 1135, 1140, 1136, 1145, 1134, 1147, 1153, 1160, 1161, 1168, 1150, 1164, 1171, 1172, 1175, 1177, 1165, 1178, 1181, 1183, 1193, 1194, 1195, 1185, 1197, 1199, 1200, 1201, 1202, 1203, - 1211, 1204, 1208, 1217, 1214, 3865, 1215, 1219, 1220, 1221, - 1225, 1227, 403, 1229, 3865, 1230, 1231, 1234, 1237, 1238, + 1211, 1204, 1208, 1217, 1214, 3872, 1215, 1219, 1220, 1221, + 1225, 1227, 403, 1229, 3872, 1230, 1231, 1234, 1237, 1238, 1239, 1241, 1243, 1244, 1245, 1249, 1253, 1252, 1248, 1268, 1256, 1261, 1274, 1277, 1278, 1270, 1271, 1279, 1273, 1280, - 1290, 1288, 1286, 1287, 1297, 1293, 1296, 1298, 1302, 1299, + 1290, 1292, 1286, 1287, 1293, 1296, 1298, 1299, 1302, 1303, - 1303, 1305, 1306, 1308, 1309, 1331, 1310, 1315, 1312, 1318, - 1317, 1320, 1323, 1325, 1332, 1333, 1326, 1344, 1345, 1348, - 1351, 1353, 1354, 1361, 1358, 1373, 1363, 1364, 1366, 1365, - 1370, 1378, 1368, 1382, 1384, 1386, 1387, 3865, 1393, 1394, - 1389, 1398, 1395, 1400, 1401, 1404, 1402, 1406, 1407, 1409, - 1410, 1417, 1412, 1416, 1424, 3865, 1421, 1423, 1422, 1428, - 1429, 1438, 1427, 1444, 1447, 1435, 3865, 1439, 1451, 1452, - 1454, 1449, 1458, 1459, 1460, 1461, 1462, 1465, 1466, 1467, - 1469, 1468, 1470, 1486, 1473, 1477, 1487, 1479, 1488, 1489, - 1491, 1498, 1494, 1496, 3865, 1492, 1500, 1502, 1505, 1511, + 1305, 1306, 1307, 1308, 1310, 1332, 1311, 1315, 1313, 1314, + 1320, 1321, 1329, 1326, 1333, 1323, 1342, 1344, 1345, 1338, + 1346, 1351, 1354, 1361, 1363, 1368, 1358, 1366, 1364, 1372, + 1379, 1377, 1373, 1375, 1383, 1386, 1388, 3872, 1395, 1393, + 1391, 1398, 1404, 1400, 1397, 1403, 1401, 1406, 1407, 1408, + 1409, 1414, 1418, 1421, 1424, 3872, 1420, 1422, 1427, 1431, + 1432, 1441, 1425, 1443, 1450, 1435, 3872, 1433, 1452, 1453, + 1455, 1456, 1459, 1460, 1461, 1462, 1463, 1464, 1466, 1467, + 1468, 1469, 1476, 1478, 1483, 1473, 1486, 1487, 1488, 1490, + 1493, 1499, 1495, 1496, 3872, 1497, 1508, 1498, 1502, 1517, - 1519, 1508, 1516, 1512, 1518, 1521, 1524, 1522, 1525, 1526, - 1527, 3865, 1528, 186, 1529, 1535, 1536, 1542, 1544, 1541, - 1548, 1549, 1551, 1554, 1555, 1538, 1560, 1558, 1561, 1569, - 1562, 1564, 1566, 1571, 1574, 1578, 1577, 1579, 1585, 1581, - 1586, 1587, 1589, 1596, 1590, 3865, 1594, 1597, 1600, 1602, - 1603, 1604, 1605, 1607, 1610, 1612, 1613, 1614, 1616, 1623, - 3865, 1625, 1624, 1627, 1622, 1628, 1634, 1644, 1637, 1640, - 1647, 1645, 1641, 1657, 1659, 1661, 1653, 1663, 1664, 1667, - 1669, 1670, 1655, 1677, 1680, 1678, 1681, 1686, 1687, 1651, - 1671, 3865, 1689, 1679, 1690, 1692, 1710, 1697, 1696, 1691, + 1518, 1504, 1516, 1523, 1520, 1524, 1525, 1530, 1527, 1531, + 1528, 1529, 3872, 1532, 186, 1534, 1535, 1533, 1541, 1549, + 1552, 1555, 1542, 1558, 1559, 1546, 1543, 1563, 1565, 1566, + 1568, 1569, 1571, 1573, 1574, 1575, 1577, 1581, 1578, 1584, + 1586, 1590, 1591, 1593, 1595, 1597, 3872, 1598, 1601, 1603, + 1605, 1606, 1607, 1608, 1609, 1611, 1613, 1617, 1615, 1619, + 1625, 3872, 1627, 1626, 1629, 1633, 1636, 1635, 1643, 1644, + 1645, 1648, 1651, 1646, 1657, 1660, 1662, 1656, 1666, 1668, + 1670, 1672, 1673, 1658, 1680, 1683, 1681, 1650, 1688, 1684, + 1691, 1682, 3872, 1690, 1692, 1695, 1696, 1715, 1698, 1699, - 1698, 1707, 1703, 1713, 1718, 1714, 1720, 3865, 1722, 1723, - 1724, 1727, 1730, 1732, 1734, 1733, 1736, 1737, 1740, 1741, - 1742, 1751, 1744, 1753, 1748, 3865, 1761, 1763, 1760, 1769, - 1766, 1767, 1768, 1771, 1772, 1773, 1774, 1781, 1780, 1778, - 1777, 1783, 1784, 1782, 1787, 1788, 1790, 1804, 1791, 1805, - 3865, 1796, 1818, 1799, 1811, 1807, 1816, 1825, 1822, 1821, - 1823, 1824, 1827, 1828, 1829, 1831, 1834, 1835, 1836, 1837, - 1840, 1841, 1843, 1844, 1852, 1839, 1859, 1848, 1860, 1861, - 1862, 1865, 1867, 1875, 1878, 1879, 1881, 3865, 1884, 1885, - 1874, 1888, 1877, 1871, 1899, 1901, 1887, 1895, 1897, 1902, + 1701, 1703, 1711, 1716, 1700, 1722, 1723, 1727, 3872, 1728, + 1719, 1729, 1733, 1730, 1736, 1737, 1739, 1741, 1743, 1744, + 1745, 1746, 1754, 1747, 1752, 1757, 1756, 3872, 1766, 1767, + 1768, 1775, 1771, 1759, 1772, 1777, 1774, 1779, 1781, 1787, + 1786, 1785, 1784, 1789, 1790, 1788, 1792, 1793, 1797, 1810, + 1795, 1798, 3872, 1801, 1824, 1812, 1814, 1813, 1816, 1831, + 1825, 1827, 1828, 1832, 1833, 1834, 1835, 1836, 1837, 1842, + 1840, 1843, 1848, 1846, 1849, 1844, 1845, 1865, 1852, 1866, + 1867, 1854, 1868, 1870, 1873, 1880, 1882, 1885, 1887, 3872, + 1890, 1879, 1881, 1892, 1893, 1894, 1901, 1903, 1895, 1904, - 1903, 1904, 1911, 1905, 1908, 1912, 1913, 1909, 1915, 1918, - 1919, 1926, 1925, 1935, 1938, 1917, 1939, 1940, 1941, 1942, - 3865, 1930, 1946, 1951, 1953, 1947, 1955, 1963, 3865, 1959, - 3865, 1962, 1968, 1971, 3865, 1973, 3865, 1979, 1960, 3865, - 1980, 1981, 1970, 1964, 1974, 1986, 1984, 1993, 1987, 1994, - 1990, 1997, 1996, 1998, 2001, 3865, 2003, 2004, 2005, 2009, - 2011, 2013, 2014, 2015, 2018, 2021, 2020, 2031, 2027, 2035, - 3865, 2028, 2037, 2029, 2039, 3865, 2032, 2040, 2043, 2044, - 2051, 2058, 2060, 2050, 2061, 2046, 2049, 2067, 2072, 2063, - 2068, 2070, 2079, 2075, 2082, 2076, 2078, 2085, 2086, 2088, + 1905, 1906, 1908, 1910, 1914, 1911, 1912, 1917, 1918, 1919, + 1920, 1925, 1921, 1926, 1934, 1939, 1942, 1944, 1943, 1945, + 1949, 1951, 3872, 1935, 1959, 1960, 1963, 1950, 1952, 1966, + 3872, 1964, 3872, 1969, 1975, 1978, 3872, 1980, 3872, 1984, + 1971, 3872, 1985, 1989, 1977, 1981, 1986, 1991, 1993, 1995, + 1997, 1998, 2002, 1999, 2004, 2005, 2007, 2011, 3872, 2013, + 2010, 2017, 2019, 2022, 2014, 2023, 2024, 2025, 2030, 2035, + 2041, 2029, 2042, 3872, 2038, 2047, 2039, 2044, 3872, 2048, + 2053, 2051, 2055, 2056, 2065, 2061, 2064, 2071, 2057, 2067, + 2083, 2068, 2077, 2079, 2080, 2086, 2084, 2090, 2087, 2088, - 2089, 2092, 2093, 2096, 2097, 2100, 2094, 2098, 2101, 2102, - 3865, 2104, 2111, 2105, 2117, 2113, 2119, 3865, 2121, 3865, - 2126, 2128, 2129, 2133, 2130, 2131, 2134, 2143, 2139, 2142, - 2145, 2147, 2149, 2150, 2156, 2157, 2154, 3865, 2158, 2159, - 2160, 2163, 2165, 2164, 2171, 2175, 2176, 3865, 2185, 2178, - 2188, 2195, 2191, 2181, 2203, 2189, 2204, 3865, 3865, 2192, - 2200, 2199, 2205, 2206, 2214, 2210, 2215, 3865, 2216, 2217, - 2219, 2222, 2229, 2228, 2218, 3865, 2220, 2231, 2232, 2238, - 2239, 2240, 2242, 2248, 2244, 2247, 2249, 2254, 2257, 2259, - 3865, 2262, 2263, 2269, 2264, 2266, 2270, 2273, 2274, 2275, + 2092, 2094, 2096, 2097, 2101, 2102, 2103, 2105, 2109, 2106, + 2107, 2108, 2111, 3872, 2113, 2119, 2120, 2123, 2125, 2128, + 3872, 2131, 3872, 2129, 2139, 2133, 2140, 2141, 2143, 2142, + 2147, 2149, 2153, 2163, 2150, 2155, 2160, 2165, 2164, 2169, + 3872, 2166, 2167, 2171, 2173, 2174, 2177, 2175, 2184, 2186, + 3872, 2192, 2188, 2194, 2200, 2197, 2198, 2207, 2201, 2208, + 3872, 3872, 2205, 2212, 2209, 2210, 2213, 2221, 2215, 2219, + 3872, 2226, 2223, 2229, 2230, 2234, 2236, 2238, 2227, 3872, + 2240, 2245, 2242, 2246, 2248, 2249, 2251, 2257, 2254, 2258, + 2259, 2263, 2264, 2269, 3872, 2272, 2271, 2274, 2275, 2278, - 2277, 2278, 2281, 2283, 2292, 2284, 2288, 2290, 2294, 2291, - 2301, 2295, 2303, 2304, 2314, 2312, 3865, 2318, 2306, 2322, - 2319, 2321, 2325, 2328, 2327, 2329, 2330, 2336, 2332, 3865, - 2333, 2334, 2338, 2335, 2342, 2345, 2348, 2353, 2357, 3865, - 2351, 2359, 2362, 2364, 2363, 2366, 2367, 2369, 2373, 3865, - 2374, 2380, 2376, 2378, 2386, 2387, 2384, 2388, 2390, 2391, - 2394, 2397, 2398, 2400, 2402, 2403, 2405, 2406, 2407, 2408, - 2410, 2414, 2427, 2419, 2432, 2415, 2424, 2417, 2434, 2440, - 2446, 2447, 2433, 2443, 2449, 2448, 2450, 2451, 2452, 2458, - 2456, 2462, 2461, 3865, 2464, 2465, 2469, 2471, 2472, 2474, + 2279, 2281, 2282, 2284, 2285, 2286, 2290, 2292, 2300, 2296, + 2299, 2301, 2303, 2304, 2309, 2298, 2311, 2312, 2320, 2322, + 3872, 2328, 2313, 2332, 2314, 2330, 2333, 2340, 2336, 2326, + 2337, 2343, 2341, 3872, 2342, 2344, 2352, 2345, 2353, 2347, + 2358, 2359, 2363, 3872, 2364, 2369, 2366, 2370, 2374, 2372, + 2375, 2378, 2379, 3872, 2382, 2389, 2385, 2386, 2396, 2397, + 2400, 2401, 2394, 2388, 2390, 2402, 2407, 2411, 2412, 2415, + 2413, 2417, 2418, 2419, 2420, 2421, 2425, 2431, 2435, 2422, + 2427, 2432, 2444, 2446, 2454, 2455, 2437, 2448, 2456, 3872, + 2457, 2458, 2459, 2440, 2466, 2464, 2472, 2468, 3872, 2470, - 2476, 2479, 2475, 3865, 2482, 3865, 2483, 2488, 3865, 2489, - 2491, 2493, 2494, 2496, 2497, 2495, 2502, 2509, 2498, 3865, - 2505, 2508, 2510, 2511, 3865, 2522, 3865, 2515, 3865, 2518, - 2523, 2529, 1246, 2527, 2530, 2535, 3865, 2536, 2525, 2538, - 2540, 2541, 2542, 2544, 2546, 2547, 2548, 2550, 2551, 3865, - 2552, 2553, 2559, 2560, 2561, 3865, 2566, 3865, 2564, 2580, - 2567, 2569, 2581, 2582, 2584, 2572, 2576, 2591, 2592, 2585, - 2594, 3865, 2588, 2595, 2600, 2603, 2601, 2605, 2611, 2608, - 2610, 2614, 2615, 2617, 2621, 2622, 2618, 3865, 2623, 2629, - 3865, 2632, 2633, 2636, 2635, 3865, 2637, 3865, 2638, 2640, + 2474, 2477, 2479, 2481, 2482, 2484, 2485, 2483, 3872, 2490, + 3872, 2493, 2487, 3872, 2494, 2498, 2500, 2502, 2503, 2504, + 2505, 2507, 2513, 2510, 3872, 2514, 2516, 2518, 2519, 3872, + 2530, 3872, 2517, 3872, 2522, 2525, 2536, 1246, 2540, 2542, + 2546, 3872, 2543, 2532, 2547, 2549, 2535, 2551, 2553, 2554, + 2538, 2555, 2557, 2559, 3872, 2562, 2569, 2560, 2568, 2574, + 3872, 2575, 3872, 2572, 2583, 2561, 2580, 2588, 2589, 2591, + 2592, 2593, 2600, 2597, 2598, 2599, 3872, 2601, 2603, 2605, + 2608, 2606, 2612, 2619, 2618, 2622, 2615, 2616, 2629, 2634, + 2626, 2630, 3872, 2636, 2638, 3872, 2637, 2639, 2640, 2644, - 2639, 2641, 2647, 2648, 2659, 2642, 2652, 2660, 2649, 2668, - 2666, 2669, 3865, 3865, 2671, 2672, 2676, 2677, 2673, 2679, - 2687, 2683, 2691, 3865, 2680, 2693, 2684, 2686, 2694, 2692, - 2695, 2703, 2696, 2704, 2708, 2706, 2709, 3865, 2712, 2714, - 2715, 2716, 2717, 2718, 2720, 3865, 2722, 2723, 2727, 2729, - 2733, 2724, 2745, 2748, 2734, 2742, 2751, 2753, 2757, 2754, - 2759, 2760, 2762, 2764, 2765, 3865, 2766, 2768, 2769, 2775, - 2772, 2770, 2777, 2781, 2786, 2779, 2787, 2789, 2792, 3865, - 2783, 2793, 2794, 2795, 2801, 2796, 2805, 2806, 2810, 2812, - 3865, 2807, 2813, 2814, 2817, 2820, 2822, 2823, 2825, 2824, + 3872, 2645, 3872, 2646, 2647, 2648, 2654, 2656, 2657, 2665, + 2649, 2667, 2669, 2670, 2677, 2653, 2675, 3872, 3872, 2679, + 2680, 2682, 2684, 2686, 2687, 2693, 2691, 2700, 3872, 2690, + 2692, 2694, 2701, 2702, 2703, 2704, 2709, 2706, 2711, 2713, + 2712, 2714, 3872, 2722, 2719, 2723, 2724, 2725, 2727, 2728, + 3872, 2730, 2731, 2732, 2736, 2735, 2751, 2754, 2756, 2744, + 2757, 2761, 2763, 2765, 2758, 2767, 2768, 2772, 2774, 2769, + 3872, 2775, 2779, 2776, 2782, 2783, 2784, 2737, 2791, 2794, + 2785, 2787, 2789, 2797, 3872, 2798, 2799, 2800, 2805, 2811, + 2806, 2813, 2803, 2816, 2814, 3872, 2819, 2821, 2820, 2824, - 2826, 2829, 2836, 2834, 3865, 2837, 3865, 2842, 2844, 2852, - 2849, 2846, 3865, 2848, 2853, 3865, 2855, 3865, 2856, 2860, - 2854, 2861, 2870, 3865, 2872, 2864, 2875, 2877, 2879, 2880, - 2881, 3865, 2883, 2885, 2891, 2892, 2884, 2886, 2894, 2896, - 2895, 2898, 2907, 2905, 3865, 2901, 2909, 2918, 2912, 2919, - 3865, 3865, 2910, 2922, 3865, 3865, 3865, 2926, 3865, 2916, - 3865, 3865, 2927, 2929, 3865, 2931, 3865, 2938, 2935, 2937, - 2939, 2940, 3865, 2941, 2942, 2944, 3865, 2946, 2952, 2948, - 2949, 3865, 2951, 3865, 2957, 2956, 2959, 2963, 2970, 2972, - 2975, 2965, 2967, 2978, 2976, 2980, 2981, 2982, 2983, 2990, + 2827, 2828, 2830, 2832, 2834, 2840, 2836, 2844, 2838, 3872, + 2841, 3872, 2846, 2851, 2858, 2856, 2854, 3872, 2860, 2859, + 3872, 2866, 3872, 2864, 2872, 2862, 2869, 2871, 3872, 2880, + 2873, 2883, 2885, 2886, 2888, 2889, 3872, 2891, 2893, 2899, + 2901, 2892, 2894, 2902, 2904, 2903, 2905, 2918, 2909, 3872, + 2911, 2917, 2924, 2920, 2929, 3872, 3872, 2921, 2925, 3872, + 3872, 3872, 2933, 3872, 2930, 3872, 3872, 2934, 2937, 3872, + 2941, 3872, 2943, 2944, 2942, 2946, 2947, 3872, 2950, 2949, + 2954, 3872, 2951, 2962, 2955, 2956, 3872, 2964, 3872, 2965, + 2972, 2966, 2976, 2978, 2983, 2985, 2967, 2975, 2986, 2988, - 2986, 2984, 2991, 2994, 2996, 2998, 2999, 2997, 3001, 3002, - 3004, 3008, 3015, 3017, 3021, 3865, 3865, 3005, 3018, 3023, - 3026, 3028, 3027, 3030, 3031, 3865, 3034, 3029, 3035, 3042, - 3039, 3040, 3041, 3044, 3043, 3051, 3057, 3055, 3056, 3061, - 3063, 3064, 3865, 3065, 3066, 3865, 3865, 3067, 3069, 3076, - 3077, 3070, 3079, 3082, 3865, 3081, 3089, 3091, 3094, 3865, - 3098, 3083, 3100, 3104, 3865, 3865, 3865, 3105, 3095, 3101, - 3109, 3108, 3110, 3111, 3112, 3865, 3116, 3119, 3121, 3122, - 3128, 3133, 3129, 3134, 3140, 3138, 3142, 3145, 3865, 3865, - 3146, 3152, 3149, 3150, 3148, 3151, 3154, 3156, 3158, 3865, + 2989, 2990, 2991, 2992, 2995, 2997, 2998, 2999, 3003, 3004, + 3007, 3008, 3005, 3011, 3010, 3013, 3015, 3023, 3026, 3030, + 3872, 3872, 3017, 3027, 3033, 3034, 3035, 3036, 3039, 3040, + 3872, 3043, 3038, 3046, 3051, 3048, 3049, 3050, 3053, 3052, + 3060, 3066, 3062, 3070, 3065, 3072, 3073, 3872, 3074, 3075, + 3872, 3872, 3076, 3078, 3087, 3082, 3088, 3090, 3091, 3872, + 3092, 3098, 3100, 3101, 3872, 3104, 3105, 3109, 3111, 3872, + 3872, 3872, 3112, 3115, 3116, 3117, 3118, 3120, 3119, 3122, + 3872, 3121, 3127, 3128, 3131, 3135, 3140, 3141, 3142, 3149, + 3145, 3152, 3154, 3872, 3872, 3143, 3160, 3157, 3158, 3159, - 3160, 3164, 3165, 3167, 3168, 3172, 3173, 3175, 3865, 3171, - 3176, 3178, 3186, 3179, 3182, 3188, 3194, 3187, 3199, 3865, - 3200, 3189, 3865, 3201, 3203, 3206, 3865, 3207, 3865, 3211, - 3865, 3865, 3212, 3213, 3216, 3219, 3224, 3226, 3228, 3218, - 3220, 3235, 3238, 3229, 3865, 3865, 3244, 3231, 3240, 3247, - 3865, 3865, 3245, 3241, 3248, 3249, 3251, 3252, 3256, 3257, - 3260, 3261, 3262, 3264, 3269, 3272, 3273, 3274, 3275, 3277, - 3279, 3282, 3865, 3284, 3287, 3291, 3865, 3285, 3293, 3300, - 3289, 3295, 3312, 3305, 3297, 3865, 3308, 3309, 3865, 3313, - 3865, 3865, 3865, 3314, 3315, 3320, 3865, 3322, 3324, 3865, + 3162, 3164, 3165, 3166, 3872, 3171, 3175, 3167, 3169, 3179, + 3181, 3183, 3186, 3872, 3173, 3176, 3187, 3194, 3189, 3191, + 3197, 3199, 3202, 3204, 3872, 3203, 3205, 3872, 3207, 3213, + 3214, 3872, 3215, 3872, 3220, 3872, 3872, 3217, 3221, 3224, + 3225, 3231, 3233, 3235, 3226, 3236, 3243, 3240, 3241, 3872, + 3872, 3247, 3248, 3249, 3256, 3872, 3872, 3252, 3258, 3254, + 3260, 3253, 3263, 3262, 3264, 3266, 3265, 3267, 3269, 3279, + 3272, 3281, 3282, 3285, 3287, 3289, 3290, 3872, 3292, 3294, + 3293, 3872, 3295, 3300, 3301, 3303, 3304, 3321, 3314, 3306, + 3872, 3308, 3318, 3872, 3307, 3872, 3872, 3872, 3323, 3324, - 3331, 3323, 3326, 3339, 3333, 3335, 3337, 3341, 3342, 3344, - 3865, 3345, 3347, 3349, 3350, 3352, 3351, 3353, 3357, 3358, - 3365, 3359, 3372, 3361, 3865, 3374, 3378, 3379, 3865, 3382, - 3368, 3375, 3383, 3865, 3386, 3389, 3390, 3392, 3394, 3395, - 3396, 3397, 3400, 3401, 3405, 3865, 3407, 3409, 3410, 3411, - 3415, 3423, 3420, 3422, 3865, 3425, 3426, 3865, 3428, 3430, - 3432, 3431, 3440, 3442, 3444, 3447, 3865, 3449, 3865, 3865, - 3450, 3865, 3454, 3455, 3456, 3457, 3459, 3460, 3865, 3865, - 3462, 3464, 3467, 3865, 3461, 3468, 3473, 3471, 3474, 3475, - 3479, 3480, 3484, 3485, 3865, 3865, 3486, 3865, 3492, 3500, + 3322, 3872, 3329, 3335, 3872, 3338, 3333, 3326, 3345, 3341, + 3343, 3347, 3349, 3350, 3352, 3872, 3353, 3354, 3356, 3357, + 3359, 3358, 3360, 3361, 3366, 3368, 3364, 3378, 3379, 3872, + 3382, 3384, 3386, 3872, 3388, 3385, 3371, 3389, 3872, 3392, + 3395, 3396, 3400, 3402, 3397, 3403, 3404, 3407, 3410, 3411, + 3872, 3414, 3417, 3419, 3420, 3421, 3428, 3427, 3430, 3872, + 3432, 3433, 3872, 3435, 3436, 3439, 3438, 3447, 3449, 3451, + 3454, 3872, 3456, 3872, 3872, 3457, 3872, 3461, 3462, 3463, + 3464, 3466, 3467, 3872, 3872, 3469, 3471, 3474, 3872, 3468, + 3475, 3480, 3478, 3481, 3482, 3486, 3487, 3491, 3492, 3872, - 3503, 3865, 3865, 3865, 3502, 3865, 3504, 3865, 3510, 3494, - 3511, 3865, 3514, 3515, 3865, 3516, 3487, 3517, 3520, 3522, - 3523, 3524, 3526, 3527, 3531, 3532, 3533, 3539, 3865, 3865, - 3543, 3865, 3545, 3865, 3546, 3551, 3865, 3477, 3553, 3547, - 3557, 3865, 3865, 3558, 3540, 3559, 3560, 3563, 3566, 3564, - 3865, 3865, 3865, 3567, 3865, 3568, 3569, 3571, 3865, 3575, - 3574, 3576, 3578, 3577, 3579, 3583, 3581, 3591, 3588, 3600, - 3603, 3605, 3606, 3592, 3594, 3612, 3608, 3614, 3865, 3615, - 3865, 3865, 3616, 3623, 3624, 3620, 3625, 3621, 3865, 3627, - 3626, 3629, 3631, 3628, 3632, 3643, 3633, 3649, 3646, 3653, + 3872, 3493, 3872, 3499, 3507, 3510, 3872, 3872, 3872, 3509, + 3872, 3511, 3872, 3517, 3501, 3518, 3872, 3521, 3522, 3872, + 3523, 3494, 3524, 3527, 3529, 3530, 3531, 3533, 3534, 3538, + 3539, 3540, 3546, 3872, 3872, 3550, 3872, 3552, 3872, 3553, + 3558, 3872, 3484, 3560, 3554, 3564, 3872, 3872, 3565, 3547, + 3566, 3567, 3570, 3573, 3571, 3872, 3872, 3872, 3574, 3872, + 3575, 3576, 3578, 3872, 3582, 3581, 3583, 3585, 3584, 3586, + 3590, 3588, 3598, 3595, 3607, 3610, 3612, 3613, 3599, 3601, + 3619, 3615, 3621, 3872, 3622, 3872, 3872, 3623, 3630, 3631, + 3627, 3632, 3628, 3872, 3634, 3633, 3636, 3638, 3635, 3639, - 3654, 3636, 3661, 3663, 3657, 3660, 3665, 3671, 3667, 3668, - 3865, 3669, 3670, 3672, 3675, 3676, 3673, 3680, 3682, 3692, - 3685, 3687, 3695, 3697, 3698, 3700, 3701, 3703, 3702, 3865, - 3704, 3706, 3710, 3712, 3715, 3713, 3717, 3718, 3723, 3726, - 3725, 3728, 3730, 3865, 3734, 3865, 3865, 3735, 3738, 3741, - 3743, 3745, 3865, 3865, 3865, 3773, 3780, 3787, 3794, 3801, - 94, 3808, 3815, 3822, 3829, 3836, 3843, 3850, 3857 + 3650, 3640, 3656, 3653, 3660, 3661, 3643, 3668, 3670, 3664, + 3667, 3672, 3678, 3674, 3675, 3872, 3676, 3677, 3679, 3682, + 3683, 3680, 3687, 3689, 3699, 3692, 3694, 3702, 3704, 3705, + 3707, 3708, 3710, 3709, 3872, 3711, 3713, 3717, 3719, 3722, + 3720, 3724, 3725, 3730, 3733, 3732, 3735, 3737, 3872, 3741, + 3872, 3872, 3742, 3745, 3748, 3750, 3752, 3872, 3872, 3872, + 3780, 3787, 3794, 3801, 3808, 94, 3815, 3822, 3829, 3836, + 3843, 3850, 3857, 3864 } ; -static yyconst flex_int16_t yy_def[1970] = +static yyconst flex_int16_t yy_def[1975] = { 0, - 1955, 1, 1956, 1956, 1957, 1957, 1958, 1958, 1959, 1959, - 1960, 1960, 1955, 1961, 1955, 1955, 1955, 1955, 1962, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1963, 1955, 1955, 1955, 1963, 1964, 1955, 1955, 1955, 1964, - 1965, 1955, 1955, 1955, 1955, 1965, 1966, 1955, 1955, 1955, - 1966, 1967, 1955, 1968, 1955, 1967, 1967, 1961, 1961, 1955, - 1969, 1962, 1969, 1962, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, + 1960, 1, 1961, 1961, 1962, 1962, 1963, 1963, 1964, 1964, + 1965, 1965, 1960, 1966, 1960, 1960, 1960, 1960, 1967, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1968, 1960, 1960, 1960, 1968, 1969, 1960, 1960, 1960, 1969, + 1970, 1960, 1960, 1960, 1960, 1970, 1971, 1960, 1960, 1960, + 1971, 1972, 1960, 1973, 1960, 1972, 1972, 1966, 1966, 1960, + 1974, 1967, 1974, 1967, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1963, 1963, - 1964, 1964, 1965, 1965, 1955, 1966, 1966, 1967, 1967, 1968, - 1968, 1967, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1968, 1968, + 1969, 1969, 1970, 1970, 1960, 1971, 1971, 1972, 1972, 1973, + 1973, 1972, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1967, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1967, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1972, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1972, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, - 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1955, 1967, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, + 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1960, 1972, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1967, 1961, 1961, - 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, 1961, 1961, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1972, 1966, 1966, + 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, - 1961, 1961, 1961, 1961, 1955, 1961, 1955, 1955, 1961, 1955, - 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1967, 1961, + 1966, 1966, 1966, 1966, 1960, 1966, 1960, 1960, 1966, 1960, + 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1972, 1966, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, 1961, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1955, 1961, 1967, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1960, 1966, 1972, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1961, - 1955, 1961, 1961, 1961, 1955, 1961, 1955, 1961, 1961, 1955, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1955, 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1960, 1966, 1960, 1966, 1966, 1966, 1960, 1966, 1960, 1966, + 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1960, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1955, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1955, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, + 1960, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1960, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, 1961, 1961, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966, - 1961, 1961, 1961, 1955, 1961, 1955, 1961, 1961, 1955, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, - 1961, 1961, 1961, 1961, 1955, 1961, 1955, 1961, 1955, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, - 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1955, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, - 1955, 1961, 1961, 1961, 1961, 1955, 1961, 1955, 1961, 1961, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966, + 1960, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1960, + 1966, 1960, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, + 1960, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1960, 1966, 1966, 1960, 1966, 1966, 1966, 1966, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1955, 1955, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, + 1960, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1960, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, - 1961, 1961, 1961, 1961, 1955, 1961, 1955, 1961, 1961, 1961, - 1961, 1961, 1955, 1961, 1961, 1955, 1961, 1955, 1961, 1961, - 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, 1961, - 1955, 1955, 1961, 1961, 1955, 1955, 1955, 1961, 1955, 1961, - 1955, 1955, 1961, 1961, 1955, 1961, 1955, 1961, 1961, 1961, - 1961, 1961, 1955, 1961, 1961, 1961, 1955, 1961, 1961, 1961, - 1961, 1955, 1961, 1955, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, + 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, + 1960, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1960, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, + 1966, 1966, 1966, 1966, 1966, 1960, 1960, 1966, 1966, 1960, + 1960, 1960, 1966, 1960, 1966, 1960, 1960, 1966, 1966, 1960, + 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, + 1966, 1960, 1966, 1966, 1966, 1966, 1960, 1966, 1960, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1955, 1955, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1955, 1961, 1961, 1955, 1955, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, 1955, - 1961, 1961, 1961, 1961, 1955, 1955, 1955, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1955, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1960, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, + 1960, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, + 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1960, + 1960, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1960, 1960, 1966, 1966, 1966, 1966, 1966, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, - 1961, 1961, 1955, 1961, 1961, 1961, 1955, 1961, 1955, 1961, - 1955, 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1955, 1955, 1961, 1961, 1961, 1961, - 1955, 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1955, 1961, 1961, 1961, 1955, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1955, 1961, - 1955, 1955, 1955, 1961, 1961, 1961, 1955, 1961, 1961, 1955, + 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1960, 1966, 1966, + 1966, 1960, 1966, 1960, 1966, 1960, 1960, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, + 1960, 1966, 1966, 1966, 1966, 1960, 1960, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, + 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1960, 1966, 1966, 1960, 1966, 1960, 1960, 1960, 1966, 1966, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1955, 1961, - 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1955, 1961, 1961, 1955, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1961, 1955, 1955, - 1961, 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1955, - 1961, 1961, 1961, 1955, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1955, 1955, 1961, 1955, 1961, 1961, + 1966, 1960, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, + 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1960, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, + 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1960, 1966, 1960, 1960, 1966, 1960, 1966, 1966, 1966, + 1966, 1966, 1966, 1960, 1960, 1966, 1966, 1966, 1960, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, - 1961, 1955, 1955, 1955, 1961, 1955, 1961, 1955, 1961, 1961, - 1961, 1955, 1961, 1961, 1955, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1955, - 1961, 1955, 1961, 1955, 1961, 1961, 1955, 1961, 1961, 1961, - 1961, 1955, 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1955, 1955, 1955, 1961, 1955, 1961, 1961, 1961, 1955, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1961, - 1955, 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1955, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, + 1960, 1966, 1960, 1966, 1966, 1966, 1960, 1960, 1960, 1966, + 1960, 1966, 1960, 1966, 1966, 1966, 1960, 1966, 1966, 1960, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1960, 1960, 1966, 1960, 1966, 1960, 1966, + 1966, 1960, 1966, 1966, 1966, 1966, 1960, 1960, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1960, 1960, 1960, 1966, 1960, + 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1960, 1966, 1960, 1960, 1966, 1966, 1966, + 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, 1966, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1955, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1955, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1955, 1961, 1955, 1955, 1961, 1961, 1961, - 1961, 1961, 1955, 1955, 0, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955 + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1960, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1960, 1966, + 1960, 1960, 1966, 1966, 1966, 1966, 1966, 1960, 1960, 0, + 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, + 1960, 1960, 1960, 1960 } ; -static yyconst flex_uint16_t yy_nxt[3905] = +static yyconst flex_uint16_t yy_nxt[3912] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, 14, 18, 20, 21, 14, 22, 23, 24, 25, 14, @@ -1212,300 +1229,301 @@ static yyconst flex_uint16_t yy_nxt[3905] = 673, 69, 69, 69, 679, 671, 69, 675, 682, 69, 69, 69, 680, 69, 677, 69, 69, 69, 69, 688, 69, 69, 687, 681, 69, 69, 694, 683, 69, 684, - 691, 686, 685, 69, 689, 1343, 690, 692, 693, 695, + 691, 686, 685, 69, 689, 1348, 690, 692, 693, 695, 69, 698, 69, 69, 699, 69, 69, 697, 696, 69, - 69, 69, 69, 705, 700, 702, 703, 706, 69, 69, + 69, 69, 69, 706, 700, 702, 704, 707, 69, 69, - 69, 701, 69, 707, 710, 69, 704, 712, 69, 69, - 69, 69, 709, 714, 139, 69, 708, 69, 69, 716, - 69, 69, 69, 727, 69, 711, 715, 69, 713, 69, - 69, 728, 69, 731, 719, 69, 717, 69, 69, 729, - 733, 720, 718, 69, 69, 69, 721, 732, 722, 736, - 135, 734, 723, 737, 724, 730, 69, 69, 735, 725, - 69, 738, 740, 69, 726, 69, 69, 134, 745, 746, - 69, 739, 744, 69, 741, 69, 69, 69, 69, 743, - 69, 753, 69, 756, 742, 69, 747, 752, 758, 755, - 69, 748, 754, 749, 69, 757, 69, 761, 69, 69, + 711, 701, 69, 703, 69, 69, 705, 708, 69, 713, + 69, 69, 710, 715, 139, 69, 709, 69, 69, 69, + 69, 717, 69, 69, 728, 69, 69, 69, 712, 714, + 716, 729, 69, 69, 720, 69, 732, 718, 69, 737, + 730, 69, 721, 719, 69, 69, 734, 722, 733, 723, + 69, 731, 735, 724, 69, 725, 69, 69, 69, 736, + 726, 739, 741, 69, 742, 727, 69, 135, 746, 738, + 69, 740, 745, 69, 747, 69, 69, 744, 69, 743, + 69, 748, 753, 754, 69, 69, 749, 69, 750, 69, + 755, 69, 757, 759, 758, 69, 756, 762, 69, 751, - 763, 69, 767, 762, 750, 69, 69, 69, 759, 764, - 69, 751, 69, 69, 69, 760, 69, 768, 69, 69, - 765, 69, 69, 766, 69, 770, 774, 772, 69, 69, - 771, 779, 769, 69, 69, 69, 69, 778, 773, 69, - 69, 69, 775, 776, 777, 783, 784, 69, 786, 782, - 69, 69, 780, 781, 788, 785, 69, 787, 791, 69, - 789, 69, 792, 69, 69, 793, 69, 790, 794, 795, - 69, 69, 69, 69, 69, 796, 800, 69, 69, 69, - 69, 69, 69, 803, 804, 69, 798, 805, 807, 69, - 797, 69, 799, 802, 809, 801, 806, 808, 69, 69, + 69, 760, 764, 69, 763, 69, 752, 69, 765, 69, + 69, 768, 69, 69, 761, 69, 69, 769, 69, 69, + 69, 69, 766, 767, 771, 775, 69, 773, 770, 772, + 69, 780, 69, 69, 69, 134, 69, 69, 774, 69, + 777, 776, 779, 69, 69, 69, 787, 69, 784, 785, + 778, 781, 782, 69, 783, 69, 788, 789, 786, 792, + 790, 791, 69, 793, 69, 69, 794, 69, 69, 795, + 796, 69, 69, 69, 69, 69, 69, 801, 69, 69, + 69, 69, 797, 804, 805, 69, 806, 799, 69, 809, + 69, 798, 803, 800, 808, 69, 802, 807, 69, 69, - 69, 69, 811, 69, 69, 816, 69, 810, 69, 812, - 69, 817, 69, 818, 69, 820, 815, 69, 823, 813, - 69, 814, 819, 69, 69, 821, 824, 826, 69, 822, - 69, 69, 830, 69, 69, 825, 69, 69, 69, 69, - 69, 69, 132, 827, 828, 829, 832, 69, 69, 839, - 69, 840, 831, 69, 69, 836, 69, 833, 841, 835, - 69, 69, 837, 69, 834, 842, 69, 69, 838, 847, - 69, 845, 69, 69, 69, 843, 69, 844, 69, 848, - 851, 69, 846, 69, 854, 849, 69, 856, 852, 69, - 69, 69, 850, 69, 853, 857, 858, 69, 69, 69, + 69, 812, 69, 811, 810, 69, 817, 69, 69, 69, + 69, 69, 818, 819, 69, 132, 69, 813, 816, 814, + 69, 822, 815, 821, 824, 825, 823, 820, 69, 69, + 69, 826, 69, 827, 828, 69, 69, 69, 832, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 841, 831, + 830, 829, 834, 69, 69, 69, 842, 833, 69, 835, + 838, 69, 839, 837, 69, 840, 836, 69, 845, 843, + 69, 69, 844, 848, 849, 69, 847, 69, 69, 853, + 69, 69, 850, 69, 846, 69, 69, 69, 858, 69, + 69, 856, 851, 69, 859, 854, 69, 852, 69, 862, - 860, 69, 69, 855, 863, 859, 69, 862, 69, 69, - 867, 861, 69, 865, 69, 69, 69, 69, 868, 69, - 864, 866, 69, 872, 69, 69, 69, 869, 69, 873, - 871, 877, 881, 870, 69, 69, 69, 69, 874, 69, - 69, 878, 876, 875, 880, 885, 69, 883, 879, 69, - 882, 887, 69, 69, 884, 888, 69, 69, 886, 69, - 891, 914, 893, 69, 894, 69, 890, 69, 889, 69, - 892, 69, 895, 69, 897, 69, 69, 899, 896, 69, - 898, 69, 69, 69, 904, 903, 901, 905, 900, 69, - 69, 69, 69, 69, 915, 906, 902, 907, 69, 69, + 860, 855, 69, 69, 861, 69, 857, 69, 865, 69, + 69, 864, 867, 69, 869, 69, 863, 69, 69, 69, + 69, 69, 870, 69, 866, 69, 874, 69, 868, 69, + 871, 69, 875, 873, 883, 879, 872, 69, 69, 69, + 876, 69, 880, 878, 877, 69, 882, 69, 69, 885, + 889, 881, 884, 887, 890, 69, 69, 69, 69, 888, + 69, 893, 69, 69, 896, 886, 909, 895, 69, 69, + 69, 892, 69, 897, 69, 891, 894, 899, 69, 898, + 69, 901, 69, 900, 69, 69, 130, 906, 905, 903, + 907, 902, 69, 69, 69, 69, 69, 915, 908, 904, - 913, 69, 69, 69, 69, 916, 917, 908, 69, 69, - 69, 924, 909, 919, 910, 69, 911, 920, 912, 69, - 918, 921, 69, 922, 925, 69, 69, 923, 926, 929, - 69, 931, 69, 927, 69, 69, 69, 932, 935, 69, - 933, 930, 69, 937, 69, 69, 69, 940, 69, 69, - 928, 938, 69, 69, 69, 934, 69, 942, 130, 944, - 69, 943, 936, 69, 945, 69, 939, 948, 949, 941, - 950, 947, 69, 69, 946, 69, 952, 951, 69, 69, - 69, 69, 956, 69, 69, 69, 69, 953, 960, 69, - 69, 955, 69, 69, 69, 69, 69, 966, 954, 69, + 69, 916, 69, 69, 69, 917, 918, 69, 69, 910, + 69, 69, 69, 69, 911, 69, 912, 921, 913, 919, + 914, 926, 922, 69, 924, 920, 923, 69, 69, 927, + 925, 69, 928, 931, 69, 69, 935, 930, 933, 69, + 69, 69, 69, 934, 937, 69, 929, 939, 69, 69, + 932, 69, 942, 69, 940, 69, 69, 69, 69, 69, + 936, 944, 938, 946, 69, 945, 69, 947, 69, 69, + 949, 69, 941, 952, 953, 943, 950, 948, 69, 69, + 69, 951, 955, 69, 69, 954, 69, 69, 959, 69, + 957, 69, 956, 69, 963, 958, 69, 69, 69, 69, - 69, 964, 69, 69, 957, 958, 961, 970, 69, 959, - 963, 69, 962, 965, 967, 971, 69, 69, 969, 69, - 977, 979, 973, 69, 968, 975, 972, 974, 69, 976, - 69, 978, 981, 69, 69, 69, 69, 69, 982, 69, - 69, 69, 980, 69, 983, 987, 69, 69, 69, 69, - 990, 69, 69, 69, 984, 69, 69, 986, 999, 988, - 69, 993, 985, 989, 69, 991, 994, 992, 995, 998, - 996, 69, 69, 69, 69, 997, 1000, 69, 1001, 69, - 1004, 1002, 1007, 69, 1006, 1008, 69, 69, 1003, 69, - 69, 69, 1009, 69, 1010, 1011, 69, 69, 1005, 69, + 69, 69, 69, 969, 69, 69, 960, 69, 967, 69, + 69, 961, 964, 69, 973, 976, 962, 966, 965, 968, + 970, 974, 69, 972, 69, 69, 69, 982, 69, 971, + 975, 978, 977, 980, 981, 979, 69, 69, 984, 69, + 69, 985, 983, 69, 69, 69, 69, 69, 69, 69, + 986, 990, 69, 993, 69, 69, 69, 69, 69, 987, + 69, 69, 1001, 989, 69, 991, 69, 996, 992, 1003, + 988, 995, 994, 998, 997, 1000, 999, 69, 69, 69, + 69, 1006, 69, 69, 1002, 69, 1007, 1010, 1005, 1011, + 1009, 69, 69, 69, 69, 1015, 1004, 69, 1012, 69, - 69, 1012, 1016, 1015, 1013, 1014, 1017, 69, 1019, 69, - 1018, 69, 1020, 69, 69, 69, 69, 69, 1027, 1021, - 69, 69, 1026, 69, 69, 69, 1022, 69, 1023, 69, - 69, 69, 1035, 1040, 1025, 1032, 1028, 69, 69, 1029, - 1024, 1036, 69, 1030, 1031, 1034, 1038, 69, 1033, 1037, - 69, 69, 69, 69, 69, 1039, 1044, 1048, 69, 69, - 1045, 1042, 1047, 69, 1041, 69, 1043, 69, 1049, 1050, - 1053, 69, 69, 1046, 69, 69, 69, 1051, 1057, 1055, - 69, 1056, 69, 69, 1058, 69, 69, 1052, 1060, 1054, - 1059, 69, 69, 69, 1062, 1061, 69, 1063, 69, 69, + 1013, 1014, 69, 1008, 69, 69, 69, 69, 1020, 1017, + 1022, 1016, 1021, 69, 1023, 69, 69, 69, 69, 1018, + 69, 1030, 69, 69, 69, 1019, 69, 1024, 1029, 69, + 69, 69, 69, 69, 1038, 1025, 1026, 69, 69, 1028, + 1960, 1039, 1031, 1032, 1027, 1035, 69, 69, 1033, 1034, + 1041, 69, 1037, 1036, 69, 69, 69, 69, 1040, 1042, + 1043, 69, 69, 69, 69, 1047, 1045, 1050, 1044, 1048, + 1051, 69, 69, 1056, 1046, 69, 69, 1052, 69, 1053, + 1054, 69, 1049, 69, 1055, 1060, 1058, 69, 1059, 69, + 69, 1061, 69, 69, 1057, 1062, 69, 69, 69, 1063, - 1065, 1064, 69, 1066, 1068, 69, 69, 1070, 69, 69, - 69, 1067, 1073, 69, 1076, 69, 69, 69, 1075, 1069, - 1072, 69, 1079, 69, 1071, 69, 69, 69, 1080, 1074, - 69, 1078, 69, 69, 1077, 1085, 1083, 1086, 1087, 69, - 69, 69, 1089, 69, 69, 1081, 1082, 69, 1091, 69, - 1084, 69, 69, 1095, 1090, 69, 69, 1093, 69, 1088, - 1092, 69, 69, 69, 1106, 1101, 1098, 1096, 1094, 1099, - 69, 1103, 69, 69, 1107, 69, 1097, 1102, 1104, 69, - 69, 1100, 69, 1105, 69, 1108, 1112, 69, 69, 1114, - 69, 69, 1113, 1109, 69, 1116, 1117, 69, 69, 1110, + 1064, 69, 1065, 69, 1066, 69, 1071, 69, 1069, 69, + 69, 69, 1068, 1072, 69, 1074, 69, 69, 1067, 69, + 1070, 1077, 69, 69, 1080, 69, 69, 1076, 1079, 69, + 1073, 69, 1083, 1075, 69, 69, 69, 69, 1078, 1084, + 1081, 69, 69, 1082, 1089, 1087, 1085, 69, 1091, 1093, + 69, 69, 1090, 69, 69, 1086, 69, 1088, 1095, 69, + 69, 1092, 1097, 69, 1094, 69, 1099, 69, 69, 69, + 1096, 1102, 1105, 69, 1103, 1100, 69, 69, 1106, 69, + 69, 1112, 1110, 69, 1098, 1107, 1104, 1101, 1108, 69, + 1111, 69, 69, 1116, 1109, 69, 69, 1118, 69, 69, - 69, 69, 1111, 1118, 69, 69, 69, 1125, 69, 69, - 69, 1115, 69, 69, 69, 1130, 69, 69, 1119, 1122, - 1123, 1120, 1124, 69, 1121, 69, 1126, 1128, 1131, 69, - 1127, 69, 1132, 69, 1134, 1129, 1133, 1135, 69, 1140, - 69, 69, 69, 69, 1141, 69, 69, 1136, 1137, 1149, - 1142, 69, 1144, 1138, 69, 69, 1150, 69, 1143, 69, - 1148, 69, 69, 1139, 1146, 1145, 69, 1147, 69, 69, - 69, 69, 69, 1159, 1152, 69, 69, 69, 1156, 1151, - 1153, 1162, 1154, 69, 1163, 1155, 1161, 69, 69, 1158, - 69, 1160, 1168, 69, 69, 1157, 1165, 69, 1164, 1166, + 69, 1117, 69, 1121, 69, 1120, 69, 1113, 69, 69, + 1114, 1122, 1115, 69, 69, 69, 1129, 69, 69, 69, + 69, 69, 1119, 69, 1134, 69, 1123, 1127, 1126, 1124, + 1128, 69, 69, 1125, 1132, 69, 1135, 69, 1130, 1131, + 69, 69, 1137, 69, 1133, 69, 1138, 1136, 1145, 1139, + 1144, 69, 69, 69, 69, 69, 1140, 1146, 1141, 69, + 1153, 69, 69, 1142, 1148, 69, 1143, 69, 1150, 1147, + 1152, 1151, 69, 1149, 1154, 69, 69, 69, 69, 69, + 1156, 69, 1155, 69, 1163, 69, 69, 69, 1167, 69, + 1157, 1158, 1159, 1160, 1166, 1165, 69, 1162, 69, 1172, - 69, 69, 1171, 69, 69, 1170, 1167, 69, 1169, 1172, - 1174, 69, 69, 1173, 1175, 69, 69, 69, 69, 1176, - 1179, 1183, 69, 1178, 1180, 1177, 69, 69, 69, 69, - 69, 69, 69, 1187, 69, 1181, 1188, 1182, 1184, 1189, - 69, 69, 1194, 69, 69, 1185, 1190, 1193, 1186, 1191, - 69, 69, 69, 1192, 69, 1200, 69, 1196, 1195, 69, - 69, 69, 1955, 1197, 1198, 1204, 69, 1203, 1201, 69, - 1206, 69, 1205, 1199, 69, 69, 69, 1202, 69, 1207, - 1209, 69, 69, 1211, 1208, 69, 69, 69, 1210, 69, - 69, 1212, 1215, 69, 1220, 69, 69, 1213, 1216, 1221, + 69, 1164, 1168, 1161, 69, 1169, 69, 1175, 1170, 69, + 69, 1174, 69, 69, 1178, 1176, 1171, 69, 1173, 69, + 69, 69, 69, 1180, 69, 69, 1179, 69, 1187, 1181, + 1177, 69, 1183, 69, 1184, 69, 1182, 1190, 69, 69, + 1185, 69, 69, 1188, 1186, 1192, 69, 1193, 69, 1189, + 69, 1194, 69, 1195, 69, 1191, 1199, 69, 69, 1196, + 69, 69, 1197, 69, 1205, 1201, 69, 1198, 1200, 69, + 69, 69, 1202, 1203, 1209, 69, 69, 1208, 1206, 1210, + 1211, 69, 1204, 69, 69, 1214, 69, 69, 1207, 1212, + 69, 69, 1213, 69, 69, 1216, 69, 69, 69, 1215, - 69, 1214, 69, 69, 69, 1225, 69, 69, 1219, 1955, - 1218, 1217, 1227, 69, 1229, 69, 69, 1222, 69, 1223, - 1230, 1231, 1224, 1226, 69, 1233, 69, 1232, 1228, 1235, - 69, 69, 1237, 69, 69, 1239, 1234, 69, 1238, 69, - 69, 69, 69, 1246, 69, 69, 69, 69, 69, 1250, - 69, 1240, 1241, 1242, 69, 1252, 1236, 69, 1243, 1248, - 69, 1244, 1245, 69, 1247, 69, 1255, 1249, 1256, 69, - 1258, 69, 1257, 1251, 69, 69, 69, 1253, 69, 69, - 1263, 69, 1254, 1260, 1261, 69, 69, 1267, 69, 1259, - 69, 1266, 69, 1270, 1271, 1272, 69, 1269, 69, 69, + 1217, 1220, 69, 1225, 69, 1218, 1221, 1226, 69, 1219, + 69, 69, 69, 69, 1230, 69, 69, 1224, 1223, 1222, + 1232, 69, 1234, 69, 69, 69, 69, 1236, 1235, 1227, + 1228, 1233, 69, 1229, 69, 1238, 1231, 1237, 69, 1240, + 69, 1242, 69, 1239, 69, 69, 1243, 1244, 69, 69, + 1251, 1241, 69, 69, 69, 69, 69, 69, 1249, 69, + 1245, 1246, 1247, 1255, 69, 69, 1257, 1248, 1253, 1250, + 69, 69, 1260, 1252, 1261, 69, 69, 1254, 69, 1258, + 1263, 69, 69, 1256, 69, 1262, 69, 69, 1268, 1265, + 69, 69, 1259, 1264, 69, 1266, 1272, 69, 69, 1271, - 69, 1265, 69, 69, 1262, 1273, 69, 1264, 1268, 69, - 69, 1274, 69, 1278, 69, 69, 1281, 69, 69, 69, - 69, 1277, 69, 1275, 1285, 1276, 69, 69, 1286, 69, - 1279, 69, 1282, 1955, 1284, 1287, 69, 1283, 1288, 69, - 1280, 1295, 1289, 1291, 69, 69, 69, 1290, 1292, 1294, - 1293, 1296, 69, 1297, 1299, 69, 1302, 1298, 69, 69, - 69, 69, 69, 69, 69, 1307, 1304, 1301, 69, 1309, - 69, 1300, 1303, 69, 69, 1305, 69, 69, 1312, 1311, - 1313, 69, 1314, 69, 69, 1310, 69, 69, 69, 1306, - 1308, 69, 1316, 1317, 69, 69, 1319, 1318, 1321, 1320, + 69, 69, 69, 1275, 1276, 1274, 69, 1270, 69, 69, + 1267, 1277, 69, 69, 69, 1279, 1269, 1273, 1278, 69, + 1280, 1281, 1283, 69, 69, 69, 1282, 69, 1286, 69, + 69, 69, 69, 69, 69, 1290, 1293, 69, 1291, 69, + 1287, 1284, 1292, 69, 69, 1289, 1296, 69, 1288, 69, + 1285, 1300, 69, 1298, 1294, 1297, 69, 1301, 69, 1295, + 69, 1302, 1304, 1307, 1299, 1303, 69, 69, 69, 69, + 69, 69, 1306, 1312, 1309, 1305, 69, 1311, 69, 1314, + 69, 1308, 69, 1310, 69, 1316, 69, 1317, 1318, 69, + 1319, 69, 1315, 69, 69, 69, 69, 69, 1313, 69, - 69, 69, 1324, 69, 1315, 69, 69, 69, 69, 69, - 69, 1329, 1322, 1323, 69, 1326, 1331, 69, 1333, 1330, - 69, 69, 69, 69, 1332, 1325, 1327, 69, 1328, 1334, - 69, 1336, 1337, 1338, 69, 69, 1342, 69, 1335, 69, - 1344, 69, 69, 1339, 1345, 1340, 1346, 69, 69, 1341, - 69, 1349, 69, 69, 69, 1347, 69, 1348, 69, 69, - 69, 1350, 69, 69, 69, 69, 1352, 1360, 1353, 1359, - 1354, 69, 69, 69, 1351, 1356, 69, 1362, 69, 69, - 1363, 69, 1357, 1358, 69, 1355, 1368, 1364, 69, 1361, - 1365, 1366, 69, 69, 69, 1369, 69, 69, 1374, 1370, + 1321, 1322, 69, 1323, 1324, 69, 69, 1325, 1326, 1329, + 69, 1327, 69, 1320, 69, 69, 69, 69, 1328, 69, + 1336, 1334, 69, 1331, 1335, 69, 69, 1338, 69, 69, + 69, 69, 1330, 1332, 69, 1333, 1337, 69, 1339, 1341, + 1342, 1343, 69, 1347, 69, 1344, 1340, 69, 69, 1345, + 69, 1346, 69, 1349, 69, 69, 1350, 1351, 69, 69, + 1354, 69, 1352, 69, 1353, 69, 69, 69, 1356, 69, + 1355, 69, 69, 69, 69, 1357, 1360, 1358, 1359, 1364, + 69, 69, 1361, 1365, 69, 1367, 69, 69, 1960, 1362, + 1366, 1363, 69, 1368, 1371, 69, 1369, 1373, 1370, 1372, - 69, 1371, 1372, 69, 69, 1367, 69, 69, 1373, 1375, - 1376, 1380, 69, 69, 1377, 69, 1381, 69, 1384, 1378, - 69, 1379, 69, 69, 1386, 1385, 69, 69, 1382, 69, - 69, 1390, 1391, 69, 69, 69, 1388, 1383, 1387, 1389, - 1394, 69, 1393, 1392, 69, 69, 1395, 69, 69, 69, - 69, 69, 69, 69, 69, 1400, 1401, 1396, 1405, 69, - 69, 69, 1404, 1399, 69, 1397, 1398, 1402, 1409, 1406, - 1407, 69, 69, 1408, 1411, 1412, 1403, 1410, 69, 1413, - 69, 69, 1416, 69, 69, 69, 1414, 1418, 69, 69, - 1419, 69, 69, 1417, 1422, 69, 69, 1420, 69, 69, + 69, 69, 1374, 69, 69, 69, 1375, 1379, 1376, 69, + 69, 69, 69, 69, 1380, 69, 1385, 69, 69, 1382, + 69, 1386, 1377, 1381, 69, 1378, 1389, 69, 69, 1384, + 69, 69, 1383, 1387, 69, 1390, 1391, 1393, 69, 1392, + 1394, 69, 69, 1395, 1388, 1396, 69, 1397, 69, 69, + 69, 69, 69, 1399, 1398, 1400, 69, 69, 69, 69, + 69, 69, 1401, 1405, 1406, 69, 69, 1410, 69, 69, + 1403, 1402, 1404, 1419, 1407, 1409, 1412, 69, 1411, 69, + 1413, 69, 69, 1414, 1417, 1408, 1415, 69, 1418, 69, + 1421, 69, 69, 1423, 69, 1416, 69, 1424, 69, 69, - 1423, 1415, 1424, 69, 69, 69, 69, 69, 69, 1421, - 1426, 1429, 1433, 1428, 1432, 69, 69, 1425, 69, 1427, - 69, 69, 1430, 1431, 69, 1435, 69, 69, 69, 69, - 69, 1434, 69, 1445, 69, 69, 69, 1450, 1446, 69, - 1437, 69, 1443, 1438, 1436, 69, 69, 1441, 1955, 1439, - 1442, 1440, 1447, 1444, 69, 1448, 1451, 69, 1449, 1452, - 69, 1453, 1455, 69, 1456, 69, 69, 1454, 1457, 69, - 1459, 69, 69, 1461, 69, 1462, 69, 69, 69, 1465, - 69, 69, 69, 1464, 69, 1458, 1467, 69, 1469, 69, - 1460, 69, 1470, 69, 1471, 69, 1463, 1473, 69, 69, + 1427, 1422, 69, 69, 69, 69, 69, 1420, 1428, 1431, + 1425, 1429, 69, 69, 69, 69, 69, 1426, 69, 1434, + 1437, 69, 1438, 69, 69, 69, 69, 1430, 1433, 1432, + 1440, 69, 1436, 1435, 69, 69, 69, 69, 1439, 69, + 69, 1450, 69, 69, 69, 1442, 1451, 69, 69, 69, + 1441, 1448, 1475, 1443, 1444, 1446, 69, 1452, 1447, 1445, + 1454, 1449, 1453, 69, 1455, 1456, 69, 1457, 69, 69, + 69, 1458, 1460, 69, 1461, 69, 1462, 69, 1464, 69, + 69, 69, 1459, 1466, 69, 1467, 69, 69, 69, 1463, + 1470, 69, 1469, 1472, 69, 69, 69, 69, 1465, 69, - 1466, 69, 1468, 1477, 69, 69, 69, 69, 69, 1472, - 1474, 1481, 1482, 69, 1475, 1478, 1484, 69, 69, 69, - 1476, 1480, 69, 1486, 69, 69, 69, 1483, 1479, 69, - 1489, 1488, 69, 1487, 69, 69, 69, 69, 69, 1493, - 1494, 69, 1491, 1499, 1485, 1496, 69, 1497, 69, 69, - 1500, 1490, 1495, 1492, 69, 1498, 69, 1503, 69, 1504, - 69, 69, 1505, 1502, 69, 69, 69, 69, 69, 1501, - 1506, 1512, 69, 69, 1510, 1509, 69, 1513, 1507, 1511, - 1508, 1516, 69, 1517, 69, 1515, 1514, 69, 1519, 69, - 1518, 69, 69, 69, 1523, 69, 69, 69, 69, 1524, + 1468, 69, 1474, 69, 1476, 1478, 69, 1471, 1482, 69, + 69, 69, 69, 1473, 1480, 69, 1479, 69, 69, 1477, + 1481, 1486, 1487, 69, 1489, 69, 69, 1485, 69, 1491, + 1483, 69, 69, 69, 1484, 1492, 69, 1488, 1494, 69, + 69, 1490, 69, 1493, 69, 1498, 69, 1499, 69, 1496, + 69, 1504, 69, 69, 1505, 1501, 69, 1495, 69, 1500, + 1497, 1502, 1503, 69, 1508, 1509, 69, 1507, 69, 1510, + 69, 69, 69, 1506, 69, 1960, 69, 1511, 69, 1517, + 1515, 69, 1521, 69, 69, 69, 1512, 1514, 1513, 1518, + 1516, 1522, 69, 1520, 1519, 69, 1524, 69, 69, 1523, - 1525, 1520, 1526, 69, 69, 1521, 69, 69, 69, 1527, - 69, 1522, 1531, 69, 1534, 1533, 1528, 69, 1529, 69, - 1530, 69, 69, 1535, 69, 1538, 1537, 1532, 69, 1536, - 69, 69, 1539, 1540, 69, 1542, 1541, 1543, 69, 69, - 1546, 69, 1547, 69, 1545, 1548, 1544, 69, 1549, 69, - 69, 69, 69, 69, 69, 1555, 69, 1552, 69, 1557, - 69, 69, 1560, 69, 69, 1550, 1554, 1556, 69, 69, - 1562, 69, 1553, 1551, 1561, 69, 1559, 69, 1558, 69, - 1564, 1565, 69, 1566, 69, 1563, 1567, 69, 69, 1568, - 69, 1570, 69, 69, 69, 69, 69, 1569, 69, 1574, + 69, 69, 1528, 69, 69, 69, 69, 1529, 1530, 1525, + 1531, 69, 1526, 69, 69, 69, 69, 69, 1532, 1527, + 1536, 69, 1538, 69, 1533, 1539, 1534, 1540, 1535, 69, + 69, 1543, 69, 69, 1542, 1537, 69, 69, 1547, 1541, + 1544, 69, 69, 1545, 1548, 69, 69, 1546, 1551, 69, + 1553, 1550, 1552, 69, 69, 69, 69, 1554, 69, 69, + 1549, 69, 69, 69, 1557, 1560, 69, 69, 69, 1562, + 1555, 1960, 1561, 1559, 69, 1565, 69, 69, 69, 69, + 1556, 1558, 1566, 1564, 69, 1563, 1567, 69, 69, 1570, + 69, 1573, 1568, 1569, 1571, 69, 1572, 69, 69, 1575, - 1571, 1576, 69, 69, 1572, 1573, 69, 1577, 69, 69, - 69, 69, 1583, 69, 69, 1575, 69, 69, 1584, 1580, - 69, 1587, 1578, 1579, 1582, 1588, 1589, 69, 1590, 69, - 69, 1585, 1581, 69, 1591, 69, 1586, 1592, 69, 69, - 69, 69, 69, 69, 1599, 1600, 69, 69, 1593, 1596, - 1601, 69, 69, 69, 69, 69, 69, 1594, 1595, 1597, - 1598, 1603, 1609, 69, 1610, 1602, 1604, 69, 69, 69, - 1605, 1606, 1607, 69, 1608, 69, 69, 69, 69, 69, - 1614, 69, 69, 1612, 1619, 1611, 1616, 1620, 69, 69, - 1623, 69, 1613, 69, 69, 69, 1615, 1617, 1624, 1618, + 69, 69, 69, 69, 69, 1574, 1581, 69, 1579, 69, + 69, 69, 1576, 1577, 1578, 69, 69, 69, 1582, 69, + 69, 1588, 69, 69, 1580, 69, 1589, 69, 1585, 69, + 1592, 1584, 1593, 1587, 1594, 69, 1583, 1595, 69, 69, + 1586, 1590, 69, 1596, 1591, 69, 69, 69, 69, 1597, + 69, 69, 69, 1604, 1605, 69, 1601, 1598, 69, 1606, + 69, 69, 69, 69, 69, 69, 1600, 1599, 1602, 1603, + 1608, 1614, 69, 1615, 69, 1609, 1607, 69, 69, 1610, + 1611, 1612, 69, 1613, 69, 69, 69, 69, 69, 1619, + 69, 1960, 1616, 1624, 69, 1621, 1618, 1617, 1625, 69, - 1622, 69, 1627, 69, 1621, 1626, 69, 69, 1625, 1629, - 69, 1631, 69, 69, 1630, 1632, 69, 69, 1633, 1628, - 69, 69, 69, 69, 69, 1637, 1635, 1638, 69, 1634, - 1636, 69, 1640, 69, 69, 1955, 1642, 1955, 1643, 1645, - 69, 69, 1639, 1641, 1646, 69, 69, 1649, 1647, 1644, - 69, 1648, 69, 1651, 69, 1650, 1652, 69, 69, 1654, - 69, 69, 69, 69, 69, 1655, 69, 1656, 69, 1657, - 69, 1653, 69, 1660, 1659, 1662, 69, 69, 1658, 69, - 69, 1663, 1661, 69, 69, 69, 1668, 69, 69, 1666, - 69, 69, 1665, 1667, 69, 1664, 1669, 1673, 69, 69, + 69, 1628, 69, 69, 69, 1620, 1622, 1629, 1623, 1626, + 69, 1632, 69, 69, 1631, 1634, 69, 69, 1627, 1630, + 1636, 69, 1637, 69, 69, 1638, 1633, 69, 69, 69, + 69, 69, 69, 69, 69, 1642, 1635, 1643, 1641, 69, + 69, 1640, 1645, 69, 1647, 1648, 1650, 69, 1646, 1639, + 1644, 1651, 69, 69, 69, 69, 1654, 69, 1649, 1653, + 1652, 69, 1655, 1656, 69, 1657, 69, 1659, 1658, 69, + 69, 69, 69, 1660, 69, 1661, 69, 69, 69, 69, + 1662, 69, 1665, 69, 1664, 69, 1667, 69, 69, 1663, + 1666, 69, 1668, 69, 1670, 69, 1673, 1669, 69, 69, - 69, 69, 1670, 1675, 1676, 1677, 69, 1678, 1671, 1672, - 1674, 69, 69, 69, 1681, 69, 1679, 1682, 69, 69, - 1685, 1680, 1686, 69, 69, 69, 1688, 1689, 69, 1683, - 69, 69, 69, 1684, 1690, 1691, 69, 1692, 69, 1693, - 69, 69, 1696, 69, 1687, 1698, 1695, 69, 1694, 1697, - 69, 1699, 69, 69, 1703, 1700, 69, 69, 1702, 69, - 69, 69, 1704, 69, 69, 1707, 1701, 1711, 69, 69, - 1705, 1706, 69, 69, 69, 1715, 69, 1716, 1710, 1708, - 1713, 69, 1717, 1709, 69, 69, 69, 69, 1712, 69, - 1719, 69, 1714, 1955, 69, 1725, 69, 69, 1722, 69, + 1671, 69, 1672, 69, 1675, 1678, 69, 1674, 1676, 69, + 1682, 69, 1680, 1681, 69, 69, 69, 69, 1677, 69, + 1679, 1684, 1683, 1687, 1685, 69, 69, 69, 1690, 69, + 1686, 1691, 69, 69, 1693, 1694, 69, 69, 69, 1688, + 1695, 1689, 1696, 69, 1697, 69, 1698, 69, 69, 1692, + 1701, 1702, 69, 69, 1704, 69, 1699, 1703, 1705, 69, + 69, 69, 1700, 1708, 69, 69, 69, 1707, 69, 1709, + 69, 1712, 69, 1716, 69, 69, 69, 69, 69, 69, + 1720, 69, 1721, 1706, 69, 1714, 1718, 1710, 1711, 1715, + 1713, 69, 1722, 69, 69, 1717, 1719, 69, 1724, 69, - 1718, 69, 1726, 69, 1729, 69, 1720, 69, 1727, 69, - 1731, 1723, 69, 1721, 1724, 1728, 1730, 69, 1736, 1733, - 69, 69, 1732, 1734, 69, 69, 69, 69, 1741, 1737, - 1735, 1740, 69, 1738, 69, 69, 69, 1744, 69, 1743, - 1745, 1742, 1746, 69, 1747, 69, 1749, 69, 1753, 69, - 1739, 69, 1751, 69, 69, 1755, 69, 69, 1748, 69, - 1758, 69, 69, 69, 69, 69, 1750, 1752, 1760, 69, - 69, 69, 1761, 69, 1757, 1759, 1756, 69, 1764, 1754, - 69, 1762, 1765, 1767, 69, 1769, 69, 69, 1763, 1770, - 69, 69, 1768, 1772, 69, 69, 1771, 1766, 69, 1776, + 1723, 69, 69, 1730, 69, 69, 69, 69, 1727, 1731, + 1732, 1734, 69, 69, 1725, 69, 69, 1735, 69, 69, + 69, 1728, 1729, 1726, 1736, 1733, 69, 1741, 1738, 1742, + 69, 1737, 1739, 69, 69, 69, 69, 1746, 69, 1740, + 1745, 69, 1743, 1747, 1744, 69, 1748, 69, 1749, 1751, + 69, 1750, 1754, 69, 1752, 69, 1758, 69, 1753, 69, + 1756, 69, 69, 1760, 69, 69, 69, 1763, 69, 69, + 69, 69, 69, 69, 1755, 1765, 69, 1757, 69, 1766, + 69, 1762, 1764, 69, 1761, 1770, 1769, 1759, 1767, 1772, + 69, 69, 1768, 1774, 69, 1775, 69, 69, 69, 1777, - 1773, 69, 69, 1779, 69, 1780, 69, 69, 69, 69, - 1774, 1784, 69, 69, 1775, 1777, 1785, 69, 1786, 69, - 1782, 69, 69, 69, 1778, 1789, 1781, 69, 1790, 1783, - 1792, 1787, 69, 1795, 69, 69, 1796, 69, 69, 1798, - 69, 1788, 69, 69, 69, 1955, 1791, 1799, 1801, 1793, - 1794, 1802, 69, 1803, 69, 1804, 69, 1797, 1800, 69, - 1806, 69, 69, 1807, 1805, 1808, 69, 69, 69, 69, - 1812, 69, 69, 69, 69, 1815, 69, 1813, 1811, 69, - 69, 1809, 1814, 69, 1816, 69, 69, 69, 1810, 69, - 1819, 69, 69, 1817, 1821, 1820, 69, 69, 69, 69, + 69, 69, 1771, 1776, 69, 1781, 1779, 69, 69, 69, + 1773, 1784, 69, 1785, 69, 69, 69, 1778, 1789, 69, + 1780, 1782, 69, 69, 1791, 1790, 69, 1787, 1786, 69, + 1783, 69, 69, 69, 1794, 1797, 1788, 1795, 1792, 69, + 69, 1800, 69, 1801, 69, 69, 1803, 69, 69, 1793, + 69, 69, 1796, 1804, 1960, 1806, 1798, 1799, 1807, 69, + 1808, 69, 1809, 69, 1802, 1805, 69, 1811, 69, 69, + 1812, 1810, 1813, 69, 69, 69, 69, 1817, 69, 69, + 69, 69, 1820, 69, 1818, 1816, 69, 69, 1814, 1819, + 69, 1821, 69, 69, 69, 1815, 69, 1824, 69, 69, - 1818, 1856, 1827, 1829, 69, 1822, 69, 1823, 1840, 1824, - 1825, 1830, 69, 1832, 69, 69, 69, 1826, 1828, 1831, - 1833, 1834, 69, 69, 1835, 1837, 69, 69, 69, 69, - 1841, 1842, 69, 1843, 69, 69, 69, 1836, 69, 69, - 1844, 1955, 1838, 69, 69, 69, 1839, 1861, 1848, 1849, - 1851, 69, 69, 1846, 1852, 69, 1853, 69, 69, 69, - 1847, 1845, 1855, 69, 1850, 69, 1857, 1854, 1859, 69, - 69, 69, 69, 1860, 1858, 69, 69, 1863, 69, 69, - 69, 69, 1867, 69, 1868, 1862, 69, 69, 69, 69, - 69, 69, 1866, 69, 1864, 69, 1865, 1870, 1871, 1872, + 1822, 1826, 1825, 69, 69, 69, 69, 1823, 1861, 1832, + 1834, 69, 1827, 69, 1828, 1845, 1829, 1830, 1835, 69, + 1837, 69, 69, 69, 1831, 1833, 1836, 1838, 1839, 69, + 69, 1840, 1842, 69, 69, 69, 69, 1846, 1847, 69, + 1848, 69, 69, 69, 1841, 69, 69, 1849, 1960, 1843, + 69, 69, 69, 1844, 1866, 1853, 1854, 1856, 69, 69, + 1851, 1857, 69, 1858, 69, 69, 69, 1852, 1850, 1860, + 69, 1855, 69, 1862, 1859, 1864, 69, 69, 69, 69, + 1865, 1863, 69, 69, 1868, 69, 69, 69, 69, 1872, + 69, 1873, 1867, 69, 69, 69, 69, 69, 69, 1871, - 69, 1869, 1879, 69, 69, 1875, 69, 1873, 1874, 1880, - 1877, 1881, 69, 1878, 1882, 69, 1876, 69, 69, 1887, - 69, 1886, 1883, 1884, 69, 1889, 69, 69, 69, 1885, - 1892, 1893, 69, 69, 1888, 69, 69, 69, 69, 69, - 69, 69, 1890, 69, 69, 69, 1894, 1891, 69, 1902, - 1895, 1955, 1896, 1897, 1899, 69, 1900, 1898, 69, 1901, - 1903, 69, 1905, 1906, 1904, 69, 69, 1909, 1910, 69, - 1907, 1908, 69, 69, 1911, 69, 1912, 69, 1915, 69, - 69, 69, 69, 69, 69, 69, 1918, 69, 69, 1922, - 1923, 1913, 69, 1917, 69, 1925, 1914, 69, 1916, 69, + 69, 1869, 69, 1870, 1875, 1876, 1877, 69, 1874, 1884, + 69, 69, 1880, 69, 1878, 1879, 1885, 1882, 1886, 69, + 1883, 1887, 69, 1881, 69, 69, 1892, 69, 1891, 1888, + 1889, 69, 1894, 69, 69, 69, 1890, 1897, 1898, 69, + 69, 1893, 69, 69, 69, 69, 69, 69, 69, 1895, + 69, 69, 69, 1899, 1896, 69, 1907, 1900, 1960, 1901, + 1902, 1904, 69, 1905, 1903, 69, 1906, 1908, 69, 1910, + 1911, 1909, 69, 69, 1914, 1915, 69, 1912, 1913, 69, + 69, 1916, 69, 1917, 69, 1920, 69, 69, 69, 69, + 69, 69, 69, 1923, 69, 69, 1927, 1928, 1918, 69, - 1921, 1919, 1927, 1920, 69, 1926, 1928, 69, 1930, 69, - 69, 1924, 69, 69, 69, 69, 69, 1931, 69, 1932, - 1934, 1936, 69, 1937, 69, 69, 1929, 69, 1940, 69, - 69, 1943, 1933, 1935, 1944, 69, 1946, 69, 69, 1947, - 69, 1938, 69, 1939, 1941, 1945, 69, 69, 1942, 1948, - 69, 1949, 1950, 69, 1953, 69, 1954, 69, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1951, - 1955, 1955, 1952, 41, 41, 41, 41, 41, 41, 41, - 46, 46, 46, 46, 46, 46, 46, 51, 51, 51, - 51, 51, 51, 51, 57, 57, 57, 57, 57, 57, + 1922, 69, 1930, 1919, 69, 1921, 69, 1926, 1924, 1932, + 1925, 69, 1931, 1933, 69, 1935, 69, 69, 1929, 69, + 69, 69, 69, 69, 1936, 69, 1937, 1939, 1941, 69, + 1942, 69, 69, 1934, 69, 1945, 69, 69, 1948, 1938, + 1940, 1949, 69, 1951, 69, 69, 1952, 69, 1943, 69, + 1944, 1946, 1950, 69, 69, 1947, 1953, 69, 1954, 1955, + 69, 1958, 69, 1959, 69, 1960, 1960, 1960, 1960, 1960, + 1960, 1960, 1960, 1960, 1960, 1960, 1956, 1960, 1960, 1957, + 41, 41, 41, 41, 41, 41, 41, 46, 46, 46, + 46, 46, 46, 46, 51, 51, 51, 51, 51, 51, - 57, 62, 62, 62, 62, 62, 62, 62, 72, 72, - 1955, 72, 72, 72, 72, 129, 129, 1955, 1955, 1955, - 129, 129, 131, 131, 1955, 1955, 131, 1955, 131, 133, - 1955, 1955, 1955, 1955, 1955, 133, 136, 136, 1955, 1955, - 1955, 136, 136, 138, 1955, 1955, 1955, 1955, 1955, 138, - 140, 140, 1955, 140, 140, 140, 140, 73, 73, 1955, - 73, 73, 73, 73, 13, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, + 51, 57, 57, 57, 57, 57, 57, 57, 62, 62, + 62, 62, 62, 62, 62, 72, 72, 1960, 72, 72, + 72, 72, 129, 129, 1960, 1960, 1960, 129, 129, 131, + 131, 1960, 1960, 131, 1960, 131, 133, 1960, 1960, 1960, + 1960, 1960, 133, 136, 136, 1960, 1960, 1960, 136, 136, + 138, 1960, 1960, 1960, 1960, 1960, 138, 140, 140, 1960, + 140, 140, 140, 140, 73, 73, 1960, 73, 73, 73, + 73, 13, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, + 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, + 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, - 1955, 1955, 1955, 1955 + 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, + 1960 } ; -static yyconst flex_int16_t yy_chk[3905] = +static yyconst flex_int16_t yy_chk[3912] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1516,7 +1534,7 @@ static yyconst flex_int16_t yy_chk[3905] = 9, 161, 33, 6, 7, 7, 7, 7, 9, 7, 10, 10, 10, 45, 45, 7, 8, 8, 8, 8, 10, 8, 21, 33, 161, 21, 21, 8, 11, 11, - 11, 11, 11, 11, 1961, 20, 29, 20, 20, 11, + 11, 11, 11, 11, 1966, 20, 29, 20, 20, 11, 20, 29, 24, 21, 75, 20, 24, 75, 11, 12, 12, 12, 12, 12, 12, 83, 22, 22, 26, 26, @@ -1527,7 +1545,7 @@ static yyconst flex_int16_t yy_chk[3905] = 32, 32, 35, 103, 37, 32, 67, 31, 70, 37, 36, 36, 70, 31, 76, 36, 77, 31, 76, 37, 39, 32, 34, 37, 37, 36, 78, 34, 36, 78, - 84, 34, 38, 38, 39, 38, 77, 34, 714, 39, + 84, 34, 38, 38, 39, 38, 77, 34, 715, 39, 34, 92, 78, 40, 40, 79, 92, 34, 40, 84, 38, 56, 40, 56, 56, 64, 56, 64, 64, 66, @@ -1644,299 +1662,300 @@ static yyconst flex_int16_t yy_chk[3905] = 553, 549, 551, 551, 554, 552, 555, 557, 553, 554, 547, 558, 559, 560, 550, 559, 557, 561, 561, 562, 558, 564, 566, 567, 564, 555, 568, 560, 567, 569, - 570, 571, 564, 572, 562, 573, 574, 575, 1233, 573, + 570, 571, 564, 572, 562, 573, 574, 575, 1238, 573, 579, 576, 572, 566, 578, 577, 579, 568, 581, 569, - 576, 571, 570, 582, 574, 1233, 575, 577, 578, 580, + 576, 571, 570, 582, 574, 1238, 575, 577, 578, 580, 580, 583, 586, 587, 584, 589, 583, 582, 581, 584, 585, 588, 590, 590, 585, 587, 588, 591, 593, 594, - 592, 586, 591, 592, 595, 596, 589, 597, 597, 595, - 598, 600, 594, 599, 599, 601, 593, 602, 603, 601, - 604, 605, 607, 607, 609, 596, 600, 608, 598, 611, - 610, 608, 612, 611, 604, 613, 602, 614, 617, 609, - 613, 605, 603, 606, 615, 616, 606, 612, 606, 616, - 52, 614, 606, 617, 606, 610, 618, 619, 615, 606, - 620, 618, 619, 621, 606, 622, 623, 51, 624, 625, - 625, 618, 623, 624, 620, 627, 628, 630, 629, 622, - 633, 628, 631, 631, 621, 626, 626, 627, 633, 630, - 632, 626, 629, 626, 634, 632, 635, 636, 636, 637, + 595, 586, 591, 587, 592, 595, 589, 592, 596, 597, + 597, 598, 594, 599, 599, 600, 593, 601, 602, 603, + 604, 601, 605, 607, 607, 609, 610, 608, 596, 598, + 600, 608, 611, 612, 604, 616, 611, 602, 614, 616, + 609, 613, 605, 603, 606, 615, 613, 606, 612, 606, + 620, 610, 614, 606, 617, 606, 618, 619, 621, 615, + 606, 618, 619, 622, 620, 606, 623, 52, 624, 617, + 627, 618, 623, 624, 625, 625, 629, 622, 628, 621, + 626, 626, 627, 628, 630, 633, 626, 634, 626, 632, + 629, 631, 631, 633, 632, 635, 630, 636, 636, 626, - 639, 641, 643, 637, 626, 639, 640, 643, 634, 640, - 642, 626, 644, 645, 647, 635, 646, 644, 648, 649, - 641, 650, 651, 642, 653, 646, 650, 648, 654, 652, - 647, 655, 645, 657, 659, 658, 655, 654, 649, 663, - 660, 661, 651, 652, 653, 660, 661, 666, 663, 659, - 662, 668, 657, 658, 665, 662, 664, 664, 669, 665, - 666, 672, 669, 669, 670, 670, 671, 668, 670, 671, - 673, 674, 675, 676, 677, 672, 676, 678, 679, 680, - 682, 681, 683, 679, 680, 685, 674, 681, 683, 686, - 673, 688, 675, 678, 685, 677, 682, 684, 684, 687, + 637, 634, 639, 641, 637, 640, 626, 639, 640, 645, + 642, 643, 644, 647, 635, 646, 643, 644, 648, 649, + 650, 651, 641, 642, 646, 650, 652, 648, 645, 647, + 653, 655, 657, 654, 658, 51, 655, 663, 649, 659, + 652, 651, 654, 660, 661, 668, 663, 666, 660, 661, + 653, 657, 658, 662, 659, 664, 664, 665, 662, 669, + 666, 668, 665, 669, 669, 670, 670, 671, 672, 670, + 671, 673, 674, 675, 676, 677, 678, 676, 679, 680, + 681, 682, 672, 679, 680, 686, 681, 674, 683, 684, + 684, 673, 678, 675, 683, 685, 677, 682, 687, 688, - 689, 690, 687, 691, 696, 692, 693, 686, 694, 688, - 692, 693, 697, 694, 698, 697, 691, 699, 700, 689, - 702, 690, 696, 700, 704, 698, 701, 703, 703, 699, - 705, 701, 707, 706, 708, 702, 707, 709, 710, 711, - 713, 715, 46, 704, 705, 706, 709, 716, 717, 718, - 726, 719, 708, 720, 718, 715, 719, 710, 720, 713, - 721, 722, 716, 723, 711, 721, 724, 725, 717, 726, - 728, 724, 727, 729, 731, 722, 732, 723, 733, 727, - 730, 730, 725, 734, 733, 728, 735, 735, 731, 737, - 736, 738, 729, 740, 732, 736, 737, 739, 741, 742, + 689, 687, 690, 686, 685, 691, 692, 693, 694, 696, + 698, 692, 693, 694, 699, 46, 702, 688, 691, 689, + 697, 698, 690, 697, 700, 701, 699, 696, 703, 700, + 701, 702, 705, 703, 704, 704, 706, 707, 708, 709, + 711, 712, 708, 710, 714, 718, 716, 717, 719, 707, + 706, 705, 710, 719, 723, 727, 720, 709, 726, 711, + 716, 720, 717, 714, 721, 718, 712, 722, 723, 721, + 724, 725, 722, 726, 727, 728, 725, 729, 730, 731, + 731, 732, 728, 733, 724, 734, 735, 736, 736, 737, + 739, 734, 729, 738, 737, 732, 740, 730, 741, 740, - 739, 743, 745, 734, 742, 738, 747, 741, 744, 748, - 747, 740, 749, 744, 750, 751, 752, 753, 748, 754, - 743, 745, 755, 752, 756, 757, 758, 749, 759, 753, - 751, 757, 762, 750, 765, 760, 763, 762, 754, 764, - 766, 758, 756, 755, 760, 766, 767, 764, 759, 769, - 763, 768, 770, 773, 765, 768, 768, 772, 767, 771, - 771, 790, 773, 790, 774, 777, 770, 783, 769, 774, - 772, 775, 775, 776, 777, 778, 779, 779, 776, 780, - 778, 781, 782, 791, 784, 783, 781, 785, 780, 784, - 786, 794, 785, 787, 791, 786, 782, 787, 788, 789, + 738, 733, 742, 743, 739, 744, 735, 745, 743, 746, + 748, 742, 745, 749, 748, 750, 741, 751, 752, 753, + 754, 755, 749, 756, 744, 757, 753, 759, 746, 758, + 750, 760, 754, 752, 763, 758, 751, 761, 764, 763, + 755, 765, 759, 757, 756, 766, 761, 768, 767, 765, + 769, 760, 764, 767, 769, 769, 770, 771, 774, 768, + 772, 772, 788, 773, 775, 766, 788, 774, 778, 775, + 784, 771, 776, 776, 777, 770, 773, 778, 779, 777, + 780, 780, 781, 779, 782, 783, 41, 785, 784, 782, + 786, 781, 785, 787, 792, 786, 790, 790, 787, 783, - 789, 793, 795, 800, 796, 793, 794, 788, 799, 798, - 801, 800, 788, 796, 788, 803, 788, 797, 788, 802, - 795, 797, 797, 798, 801, 804, 806, 799, 802, 805, - 805, 807, 807, 803, 809, 810, 811, 809, 812, 812, - 810, 806, 813, 814, 814, 816, 815, 817, 817, 818, - 804, 815, 819, 820, 821, 811, 823, 819, 41, 821, - 825, 820, 813, 822, 822, 824, 816, 825, 827, 818, - 828, 824, 829, 827, 823, 828, 830, 829, 831, 832, - 833, 830, 834, 834, 835, 836, 837, 831, 838, 841, - 840, 833, 839, 838, 844, 842, 843, 843, 832, 845, + 789, 791, 794, 791, 795, 792, 794, 796, 797, 789, + 799, 800, 805, 801, 789, 802, 789, 797, 789, 795, + 789, 801, 798, 803, 799, 796, 798, 798, 804, 802, + 800, 811, 803, 806, 806, 807, 811, 805, 808, 808, + 810, 812, 814, 810, 813, 813, 804, 815, 815, 816, + 807, 817, 818, 818, 816, 819, 820, 821, 822, 824, + 812, 820, 814, 822, 825, 821, 823, 823, 827, 826, + 825, 834, 817, 829, 830, 819, 826, 824, 829, 830, + 831, 827, 832, 833, 835, 831, 837, 832, 836, 836, + 834, 838, 833, 839, 840, 835, 843, 842, 841, 840, - 846, 841, 847, 849, 835, 836, 839, 847, 852, 837, - 840, 854, 839, 842, 844, 848, 848, 850, 846, 856, - 854, 856, 850, 855, 845, 853, 849, 852, 857, 853, - 853, 855, 858, 860, 859, 861, 862, 858, 859, 863, - 864, 865, 857, 866, 860, 864, 867, 868, 869, 870, - 867, 876, 871, 872, 861, 873, 874, 863, 876, 865, - 878, 870, 862, 866, 875, 868, 871, 869, 872, 875, - 873, 877, 879, 880, 881, 874, 877, 882, 878, 883, - 881, 879, 884, 894, 883, 885, 891, 884, 880, 893, - 885, 886, 886, 887, 887, 889, 889, 890, 882, 897, + 846, 844, 845, 845, 847, 848, 837, 851, 843, 849, + 852, 838, 841, 854, 849, 852, 839, 842, 841, 844, + 846, 850, 850, 848, 856, 858, 857, 858, 859, 847, + 851, 855, 854, 856, 857, 855, 855, 861, 860, 862, + 863, 861, 859, 860, 864, 865, 866, 867, 868, 869, + 862, 866, 871, 869, 870, 872, 876, 877, 874, 863, + 873, 875, 877, 865, 879, 867, 882, 872, 868, 879, + 864, 871, 870, 874, 873, 876, 875, 878, 880, 881, + 883, 882, 884, 14, 878, 885, 883, 886, 881, 887, + 885, 892, 886, 893, 887, 892, 880, 888, 888, 889, - 892, 890, 894, 893, 891, 892, 895, 898, 896, 899, - 895, 895, 896, 896, 900, 901, 902, 904, 903, 897, - 905, 908, 902, 903, 906, 907, 898, 909, 899, 916, - 910, 911, 911, 916, 901, 908, 904, 913, 912, 905, - 900, 912, 922, 906, 907, 910, 914, 914, 909, 913, - 915, 917, 918, 919, 920, 915, 920, 923, 923, 926, - 920, 918, 922, 924, 917, 925, 919, 927, 924, 925, - 928, 930, 939, 920, 932, 928, 944, 926, 934, 932, - 933, 933, 943, 934, 936, 936, 945, 927, 939, 930, - 938, 938, 941, 942, 942, 941, 947, 943, 946, 949, + 889, 891, 891, 884, 894, 895, 896, 899, 897, 894, + 898, 893, 897, 897, 898, 898, 900, 901, 902, 895, + 903, 905, 904, 906, 907, 896, 905, 899, 904, 908, + 909, 910, 911, 913, 913, 900, 901, 912, 914, 903, + 13, 914, 906, 907, 902, 910, 915, 924, 908, 909, + 916, 916, 912, 911, 917, 919, 918, 920, 915, 917, + 918, 921, 928, 922, 929, 922, 920, 924, 919, 922, + 925, 925, 926, 930, 921, 927, 932, 926, 930, 927, + 928, 934, 922, 941, 929, 936, 934, 935, 935, 945, + 936, 938, 938, 946, 932, 940, 940, 943, 947, 941, - 945, 944, 951, 946, 948, 948, 950, 950, 953, 952, - 954, 947, 953, 955, 957, 957, 958, 959, 955, 949, - 952, 960, 960, 961, 951, 962, 963, 964, 961, 954, - 965, 959, 967, 966, 958, 966, 964, 967, 968, 969, - 972, 974, 970, 968, 977, 962, 963, 970, 973, 973, - 965, 975, 978, 978, 972, 979, 980, 975, 986, 969, - 974, 987, 984, 981, 987, 982, 981, 979, 977, 981, - 982, 984, 983, 985, 988, 990, 980, 983, 985, 988, - 991, 981, 992, 986, 989, 989, 993, 994, 996, 995, - 997, 993, 994, 990, 995, 997, 998, 998, 999, 991, + 943, 944, 944, 948, 945, 949, 950, 950, 948, 951, + 952, 954, 947, 951, 953, 953, 955, 956, 946, 957, + 949, 956, 961, 958, 960, 960, 965, 955, 958, 962, + 952, 963, 963, 954, 964, 966, 967, 968, 957, 964, + 961, 972, 969, 962, 969, 967, 965, 970, 971, 973, + 975, 977, 970, 971, 973, 966, 978, 968, 976, 976, + 980, 972, 978, 982, 975, 981, 981, 983, 984, 989, + 977, 984, 985, 986, 984, 982, 987, 985, 986, 990, + 992, 992, 990, 988, 980, 987, 984, 983, 988, 993, + 991, 994, 995, 996, 989, 991, 997, 998, 996, 999, - 1000, 1001, 992, 999, 1002, 1003, 1007, 1006, 1004, 1005, - 1008, 996, 1006, 1009, 1010, 1012, 1012, 1014, 1000, 1003, - 1004, 1001, 1005, 1013, 1002, 1016, 1007, 1009, 1013, 1015, - 1008, 1017, 1014, 1019, 1016, 1010, 1015, 1016, 1021, 1022, - 1022, 1023, 1025, 1026, 1023, 1024, 1027, 1017, 1019, 1030, - 1024, 1029, 1026, 1019, 1030, 1028, 1031, 1031, 1025, 1032, - 1029, 1033, 1034, 1021, 1028, 1027, 1037, 1028, 1035, 1036, - 1039, 1040, 1041, 1041, 1033, 1042, 1044, 1043, 1037, 1032, - 1034, 1044, 1035, 1045, 1045, 1036, 1043, 1046, 1047, 1040, - 1050, 1042, 1049, 1054, 14, 1039, 1046, 1049, 1045, 1046, + 1000, 997, 998, 1001, 1001, 1000, 1002, 993, 1003, 1004, + 994, 1002, 995, 1005, 1006, 1007, 1009, 1008, 1010, 1011, + 1012, 1009, 999, 1013, 1015, 1015, 1003, 1007, 1006, 1004, + 1008, 1016, 1017, 1005, 1012, 1018, 1016, 1019, 1010, 1011, + 1020, 1024, 1018, 1022, 1013, 1026, 1019, 1017, 1026, 1019, + 1025, 1025, 1027, 1028, 1030, 1029, 1020, 1027, 1022, 1031, + 1033, 1032, 1035, 1022, 1029, 1033, 1024, 1036, 1031, 1028, + 1032, 1031, 1037, 1030, 1034, 1034, 1039, 1038, 1042, 1043, + 1036, 1040, 1035, 1044, 1044, 1045, 1046, 1048, 1048, 1047, + 1037, 1038, 1039, 1040, 1047, 1046, 1049, 1043, 1050, 1052, - 1051, 1056, 1052, 1053, 1060, 1051, 1047, 1052, 1050, 1053, - 1055, 1062, 1061, 1054, 1056, 1055, 1057, 1063, 1064, 1057, - 1061, 1065, 1066, 1060, 1062, 1057, 1065, 1067, 1069, 1070, - 1075, 1071, 1077, 1070, 1072, 1063, 1071, 1064, 1066, 1072, - 1074, 1073, 1078, 1078, 1079, 1067, 1073, 1077, 1069, 1074, - 1080, 1081, 1082, 1075, 1083, 1084, 1085, 1080, 1079, 1086, - 1084, 1087, 13, 1081, 1082, 1088, 1088, 1087, 1085, 1089, - 1090, 1090, 1089, 1083, 1092, 1093, 1095, 1086, 1096, 1092, - 1094, 1094, 1097, 1096, 1093, 1098, 1099, 1100, 1095, 1101, - 1102, 1097, 1100, 1103, 1104, 1104, 1106, 1098, 1101, 1105, + 1053, 1045, 1048, 1042, 1052, 1049, 1054, 1055, 1049, 1056, + 1057, 1054, 1055, 1059, 1058, 1056, 1050, 1063, 1053, 1058, + 1060, 1065, 1066, 1060, 1064, 1067, 1059, 1069, 1068, 1060, + 1057, 1070, 1064, 1068, 1065, 1073, 1063, 1072, 1072, 1079, + 1066, 1074, 1075, 1069, 1067, 1074, 1076, 1075, 1077, 1070, + 1078, 1076, 1081, 1077, 1083, 1073, 1082, 1082, 1084, 1078, + 1085, 1086, 1079, 1087, 1088, 1084, 1089, 1081, 1083, 1088, + 1090, 1091, 1085, 1086, 1092, 1092, 1093, 1091, 1089, 1093, + 1094, 1094, 1087, 1097, 1096, 1098, 1098, 1099, 1090, 1096, + 1100, 1101, 1097, 1102, 1103, 1100, 1104, 1105, 1106, 1099, - 1107, 1099, 1108, 1110, 1105, 1109, 1109, 1112, 1103, 0, - 1102, 1101, 1111, 1111, 1113, 1113, 1114, 1106, 1119, 1107, - 1114, 1115, 1108, 1110, 1116, 1118, 1115, 1116, 1112, 1120, - 1118, 1121, 1122, 1122, 1120, 1124, 1119, 1123, 1123, 1125, - 1124, 1126, 1127, 1128, 1129, 1131, 1132, 1134, 1128, 1133, - 1133, 1125, 1125, 1125, 1135, 1135, 1121, 1136, 1125, 1131, - 1137, 1126, 1127, 1141, 1129, 1138, 1138, 1132, 1139, 1139, - 1142, 1142, 1141, 1134, 1143, 1145, 1144, 1136, 1146, 1147, - 1147, 1148, 1137, 1144, 1145, 1149, 1151, 1152, 1153, 1143, - 1154, 1151, 1152, 1155, 1156, 1157, 1157, 1154, 1155, 1156, + 1101, 1104, 1107, 1108, 1108, 1102, 1105, 1109, 1110, 1103, + 1116, 1111, 1109, 1112, 1113, 1113, 1114, 1107, 1106, 1105, + 1115, 1115, 1117, 1117, 1118, 1123, 1125, 1119, 1118, 1110, + 1111, 1116, 1119, 1112, 1120, 1122, 1114, 1120, 1130, 1124, + 1122, 1126, 1126, 1123, 1124, 1127, 1127, 1128, 1129, 1131, + 1132, 1125, 1128, 1133, 1135, 1132, 1136, 1138, 1130, 1140, + 1129, 1129, 1129, 1137, 1137, 1139, 1139, 1129, 1135, 1131, + 1141, 1142, 1142, 1133, 1143, 1143, 1145, 1136, 1147, 1140, + 1146, 1146, 1148, 1138, 1150, 1145, 1149, 1151, 1151, 1148, + 1152, 1153, 1141, 1147, 1155, 1149, 1156, 1157, 1158, 1155, - 1158, 1149, 1159, 1160, 1146, 1158, 1161, 1148, 1153, 1162, - 1163, 1159, 1164, 1163, 1165, 1166, 1166, 1167, 1168, 1169, - 1170, 1162, 1171, 1160, 1170, 1161, 1172, 1176, 1171, 1178, - 1164, 1174, 1167, 0, 1169, 1172, 1177, 1168, 1173, 1173, - 1165, 1179, 1174, 1175, 1175, 1183, 1179, 1174, 1176, 1178, - 1177, 1180, 1180, 1181, 1182, 1184, 1185, 1181, 1181, 1182, - 1186, 1185, 1187, 1188, 1189, 1190, 1187, 1184, 1191, 1192, - 1190, 1183, 1186, 1193, 1192, 1188, 1195, 1196, 1196, 1195, - 1197, 1197, 1198, 1198, 1199, 1193, 1200, 1203, 1201, 1189, - 1191, 1202, 1200, 1201, 1205, 1207, 1203, 1202, 1207, 1205, + 1164, 1156, 1165, 1159, 1160, 1158, 1163, 1153, 1159, 1160, + 1150, 1161, 1161, 1162, 1166, 1163, 1152, 1157, 1162, 1167, + 1164, 1165, 1167, 1168, 1169, 1171, 1166, 1170, 1170, 1172, + 1173, 1174, 1175, 1176, 1180, 1174, 1177, 1177, 1175, 1181, + 1171, 1168, 1176, 1178, 1182, 1173, 1179, 1179, 1172, 1187, + 1169, 1183, 1194, 1181, 1178, 1180, 1183, 1184, 1184, 1178, + 1188, 1185, 1186, 1189, 1182, 1185, 1185, 1186, 1189, 1191, + 1192, 1193, 1188, 1195, 1192, 1187, 1196, 1194, 1195, 1197, + 1198, 1191, 1200, 1193, 1197, 1200, 1201, 1201, 1202, 1202, + 1203, 1203, 1198, 1204, 1205, 1208, 1206, 1207, 1196, 1213, - 1208, 1210, 1211, 1211, 1199, 1212, 1213, 1216, 1214, 1215, - 1219, 1216, 1208, 1210, 1217, 1213, 1218, 1221, 1221, 1217, - 1222, 1218, 1223, 1224, 1219, 1212, 1214, 1228, 1215, 1221, - 1230, 1223, 1224, 1226, 1226, 1231, 1232, 1239, 1222, 1234, - 1234, 1232, 1235, 1228, 1235, 1230, 1236, 1236, 1238, 1231, - 1240, 1240, 1241, 1242, 1243, 1238, 1244, 1239, 1245, 1246, - 1247, 1241, 1248, 1249, 1251, 1252, 1243, 1252, 1244, 1251, - 1245, 1253, 1254, 1255, 1242, 1247, 1259, 1254, 1257, 1261, - 1255, 1262, 1248, 1249, 1266, 1246, 1262, 1257, 1267, 1253, - 1259, 1260, 1260, 1263, 1264, 1263, 1265, 1270, 1268, 1264, + 1205, 1206, 1210, 1207, 1208, 1212, 1215, 1210, 1212, 1216, + 1216, 1213, 1217, 1204, 1218, 1219, 1220, 1221, 1215, 1222, + 1223, 1221, 1224, 1218, 1222, 1223, 1226, 1226, 1227, 1233, + 1228, 1229, 1217, 1219, 1235, 1220, 1224, 1236, 1226, 1228, + 1229, 1231, 1231, 1237, 1244, 1233, 1227, 1247, 1237, 1235, + 1251, 1236, 1239, 1239, 1240, 1243, 1240, 1241, 1241, 1245, + 1245, 1246, 1243, 1248, 1244, 1249, 1250, 1252, 1247, 1253, + 1246, 1254, 1258, 1266, 1256, 1248, 1251, 1249, 1250, 1256, + 1259, 1257, 1252, 1257, 1264, 1259, 1260, 1262, 0, 1253, + 1258, 1254, 1267, 1260, 1265, 1265, 1262, 1267, 1264, 1266, - 1273, 1265, 1266, 1268, 1269, 1261, 1271, 1274, 1267, 1269, - 1270, 1275, 1275, 1277, 1271, 1276, 1276, 1278, 1279, 1273, - 1280, 1274, 1281, 1279, 1281, 1280, 1282, 1283, 1277, 1284, - 1287, 1284, 1285, 1285, 1286, 1289, 1283, 1278, 1282, 1283, - 1289, 1290, 1287, 1286, 1292, 1293, 1290, 1295, 1294, 1297, - 1299, 1301, 1300, 1302, 1306, 1297, 1299, 1292, 1303, 1303, - 1304, 1309, 1302, 1295, 1307, 1293, 1294, 1300, 1307, 1304, - 1305, 1305, 1308, 1306, 1309, 1310, 1301, 1308, 1311, 1310, - 1310, 1312, 1315, 1315, 1316, 1319, 1311, 1317, 1317, 1318, - 1318, 1320, 1325, 1316, 1321, 1322, 1327, 1319, 1328, 1321, + 1268, 1269, 1268, 1270, 1271, 1272, 1269, 1273, 1270, 1274, + 1275, 1276, 1273, 1278, 1274, 1279, 1280, 1280, 1282, 1276, + 1281, 1281, 1271, 1275, 1283, 1272, 1284, 1287, 1288, 1279, + 1285, 1284, 1278, 1282, 1286, 1285, 1286, 1288, 1291, 1287, + 1288, 1289, 1292, 1289, 1283, 1290, 1290, 1291, 1294, 1297, + 1295, 1298, 1299, 1294, 1292, 1295, 1300, 1302, 1304, 1305, + 1306, 1311, 1297, 1302, 1304, 1316, 1307, 1308, 1308, 1309, + 1299, 1298, 1300, 1316, 1305, 1307, 1310, 1310, 1309, 1312, + 1311, 1313, 1314, 1312, 1315, 1306, 1313, 1317, 1315, 1315, + 1320, 1320, 1321, 1322, 1322, 1314, 1323, 1323, 1324, 1325, - 1322, 1312, 1323, 1323, 1330, 1326, 1329, 1331, 1333, 1320, - 1326, 1329, 1333, 1328, 1332, 1332, 1334, 1325, 1336, 1327, - 1335, 1337, 1330, 1331, 1339, 1335, 1340, 1341, 1342, 1343, - 1344, 1334, 1345, 1347, 1347, 1348, 1352, 1352, 1348, 1349, - 1337, 1350, 1344, 1339, 1336, 1351, 1355, 1342, 0, 1340, - 1343, 1341, 1349, 1345, 1356, 1350, 1353, 1353, 1351, 1354, - 1354, 1355, 1357, 1357, 1358, 1358, 1360, 1356, 1359, 1359, - 1361, 1361, 1362, 1363, 1363, 1364, 1364, 1365, 1367, 1368, - 1368, 1369, 1372, 1367, 1371, 1360, 1370, 1370, 1372, 1373, - 1362, 1376, 1373, 1374, 1374, 1381, 1365, 1375, 1375, 1377, + 1326, 1321, 1330, 1327, 1331, 1326, 1332, 1317, 1327, 1331, + 1324, 1328, 1328, 1333, 1334, 1335, 1336, 1325, 1338, 1334, + 1337, 1337, 1338, 1339, 1341, 1340, 1342, 1330, 1333, 1332, + 1340, 1345, 1336, 1335, 1344, 1346, 1347, 1348, 1339, 1349, + 1350, 1352, 1352, 1353, 1354, 1342, 1353, 1356, 1355, 1378, + 1341, 1349, 1378, 1344, 1345, 1347, 1360, 1354, 1348, 1346, + 1356, 1350, 1355, 1357, 1357, 1358, 1358, 1359, 1359, 1361, + 1365, 1360, 1362, 1362, 1363, 1363, 1364, 1364, 1366, 1366, + 1367, 1370, 1361, 1368, 1368, 1369, 1369, 1372, 1374, 1365, + 1373, 1373, 1372, 1375, 1375, 1376, 1377, 1381, 1367, 1382, - 1369, 1378, 1371, 1379, 1379, 1382, 1383, 1384, 1386, 1374, - 1376, 1384, 1385, 1385, 1377, 1381, 1387, 1387, 1388, 1392, - 1378, 1383, 1389, 1389, 1390, 1393, 1394, 1386, 1382, 1395, - 1393, 1392, 1396, 1390, 1397, 1398, 1400, 1399, 1401, 1397, - 1398, 1402, 1395, 1403, 1388, 1400, 1404, 1401, 1403, 1406, - 1404, 1394, 1399, 1396, 1408, 1402, 1409, 1409, 1412, 1410, - 1414, 1411, 1411, 1408, 1410, 1415, 1421, 1417, 1419, 1406, - 1411, 1419, 1420, 1422, 1415, 1414, 1426, 1420, 1412, 1417, - 1412, 1423, 1423, 1425, 1425, 1422, 1421, 1427, 1427, 1428, - 1426, 1429, 1430, 1431, 1431, 1433, 1437, 1434, 1438, 1433, + 1370, 1383, 1377, 1379, 1379, 1380, 1380, 1374, 1384, 1384, + 1386, 1387, 1388, 1376, 1382, 1393, 1381, 1389, 1391, 1379, + 1383, 1389, 1390, 1390, 1392, 1392, 1395, 1388, 1394, 1394, + 1386, 1397, 1399, 1398, 1387, 1395, 1400, 1391, 1398, 1401, + 1402, 1393, 1403, 1397, 1404, 1402, 1405, 1403, 1407, 1400, + 1409, 1408, 1406, 1411, 1409, 1405, 1408, 1399, 1413, 1404, + 1401, 1406, 1407, 1414, 1414, 1415, 1417, 1413, 1416, 1416, + 1415, 1420, 1419, 1411, 1426, 0, 1424, 1416, 1422, 1424, + 1420, 1427, 1428, 1428, 1425, 1431, 1417, 1419, 1417, 1425, + 1422, 1430, 1430, 1427, 1426, 1432, 1432, 1433, 1434, 1431, - 1434, 1428, 1435, 1435, 1436, 1429, 1439, 1441, 1440, 1436, - 1442, 1430, 1440, 1446, 1443, 1442, 1437, 1444, 1438, 1443, - 1439, 1447, 1453, 1444, 1449, 1448, 1447, 1441, 1460, 1446, - 1448, 1450, 1449, 1450, 1454, 1454, 1453, 1458, 1458, 1463, - 1464, 1464, 1466, 1466, 1463, 1468, 1460, 1469, 1469, 1470, - 1468, 1471, 1472, 1474, 1475, 1476, 1476, 1472, 1478, 1479, - 1480, 1481, 1483, 1483, 1479, 1470, 1475, 1478, 1486, 1485, - 1486, 1487, 1474, 1471, 1485, 1488, 1481, 1492, 1480, 1493, - 1488, 1489, 1489, 1490, 1490, 1487, 1491, 1491, 1495, 1492, - 1494, 1494, 1496, 1497, 1498, 1499, 1502, 1493, 1501, 1498, + 1435, 1436, 1436, 1438, 1442, 1439, 1443, 1438, 1439, 1433, + 1440, 1440, 1434, 1441, 1444, 1446, 1445, 1447, 1441, 1435, + 1445, 1449, 1447, 1451, 1442, 1448, 1443, 1449, 1444, 1452, + 1448, 1453, 1454, 1458, 1452, 1446, 1453, 1459, 1459, 1451, + 1454, 1455, 1465, 1455, 1463, 1463, 1468, 1458, 1469, 1469, + 1473, 1468, 1471, 1471, 1475, 1473, 1474, 1474, 1476, 1477, + 1465, 1480, 1479, 1483, 1477, 1481, 1481, 1485, 1486, 1484, + 1475, 0, 1483, 1480, 1484, 1488, 1488, 1490, 1492, 1497, + 1476, 1479, 1490, 1486, 1491, 1485, 1491, 1498, 1493, 1494, + 1494, 1497, 1492, 1493, 1495, 1495, 1496, 1496, 1499, 1499, - 1495, 1500, 1500, 1503, 1496, 1497, 1504, 1501, 1505, 1508, - 1506, 1507, 1507, 1509, 1510, 1499, 1511, 1518, 1508, 1504, - 1512, 1511, 1502, 1503, 1506, 1512, 1513, 1513, 1514, 1514, - 1519, 1509, 1505, 1515, 1515, 1520, 1510, 1518, 1521, 1523, - 1522, 1528, 1524, 1525, 1525, 1527, 1527, 1529, 1519, 1522, - 1528, 1531, 1532, 1533, 1530, 1535, 1534, 1520, 1521, 1523, - 1524, 1530, 1536, 1536, 1537, 1529, 1531, 1538, 1539, 1537, - 1532, 1533, 1534, 1540, 1535, 1541, 1542, 1544, 1545, 1548, - 1541, 1549, 1552, 1539, 1549, 1538, 1544, 1550, 1550, 1551, - 1553, 1553, 1540, 1556, 1554, 1562, 1542, 1545, 1554, 1548, + 1500, 1501, 1502, 1503, 1504, 1498, 1505, 1505, 1503, 1506, + 1507, 1508, 1500, 1501, 1502, 1509, 1510, 1513, 1506, 1511, + 1512, 1512, 1515, 1514, 1504, 1516, 1513, 1517, 1509, 1523, + 1516, 1508, 1517, 1511, 1518, 1518, 1507, 1519, 1519, 1524, + 1510, 1514, 1520, 1520, 1515, 1525, 1526, 1527, 1528, 1523, + 1533, 1529, 1530, 1530, 1532, 1532, 1527, 1524, 1534, 1533, + 1536, 1537, 1538, 1535, 1540, 1539, 1526, 1525, 1528, 1529, + 1535, 1541, 1541, 1542, 1543, 1536, 1534, 1545, 1542, 1537, + 1538, 1539, 1544, 1540, 1546, 1547, 1549, 1550, 1553, 1546, + 1554, 0, 1543, 1554, 1556, 1549, 1545, 1544, 1555, 1555, - 1552, 1557, 1558, 1558, 1551, 1557, 1559, 1569, 1556, 1561, - 1561, 1563, 1563, 1570, 1562, 1564, 1564, 1568, 1568, 1559, - 1572, 1571, 1573, 1574, 1575, 1572, 1570, 1573, 1577, 1569, - 1571, 1578, 1575, 1579, 1580, 0, 1578, 0, 1579, 1581, - 1581, 1583, 1574, 1577, 1582, 1582, 1584, 1585, 1583, 1580, - 1586, 1584, 1585, 1587, 1587, 1586, 1588, 1588, 1591, 1592, - 1595, 1593, 1594, 1596, 1592, 1593, 1597, 1594, 1598, 1595, - 1599, 1591, 1601, 1598, 1597, 1601, 1602, 1603, 1596, 1604, - 1605, 1602, 1599, 1610, 1606, 1607, 1607, 1608, 1611, 1605, - 1612, 1614, 1604, 1606, 1615, 1603, 1608, 1613, 1613, 1618, + 1557, 1558, 1558, 1559, 1561, 1547, 1550, 1559, 1553, 1556, + 1562, 1563, 1563, 1564, 1562, 1566, 1566, 1567, 1557, 1561, + 1568, 1568, 1569, 1569, 1573, 1573, 1564, 1574, 1575, 1576, + 1577, 1579, 1578, 1582, 1580, 1577, 1567, 1578, 1576, 1583, + 1584, 1575, 1580, 1585, 1583, 1584, 1586, 1586, 1582, 1574, + 1579, 1587, 1587, 1588, 1589, 1596, 1590, 1591, 1585, 1589, + 1588, 1590, 1591, 1592, 1592, 1593, 1593, 1597, 1596, 1598, + 1599, 1600, 1597, 1598, 1601, 1599, 1602, 1603, 1604, 1608, + 1600, 1609, 1603, 1606, 1602, 1615, 1606, 1607, 1616, 1601, + 1604, 1610, 1607, 1611, 1609, 1612, 1612, 1608, 1613, 1617, - 1616, 1622, 1610, 1615, 1616, 1617, 1617, 1618, 1611, 1612, - 1614, 1619, 1621, 1624, 1622, 1625, 1619, 1624, 1626, 1628, - 1628, 1621, 1630, 1630, 1633, 1634, 1634, 1635, 1635, 1625, - 1640, 1636, 1641, 1626, 1636, 1637, 1637, 1638, 1638, 1639, - 1639, 1644, 1642, 1648, 1633, 1644, 1641, 1642, 1640, 1643, - 1643, 1647, 1649, 1654, 1650, 1647, 1647, 1653, 1649, 1650, - 1655, 1656, 1653, 1657, 1658, 1655, 1648, 1659, 1659, 1660, - 1654, 1654, 1661, 1662, 1663, 1663, 1664, 1664, 1658, 1656, - 1661, 1665, 1665, 1657, 1666, 1667, 1668, 1669, 1660, 1670, - 1667, 1671, 1662, 0, 1672, 1674, 1674, 1678, 1670, 1675, + 1610, 1619, 1611, 1620, 1615, 1618, 1618, 1613, 1616, 1621, + 1622, 1622, 1620, 1621, 1623, 1626, 1624, 1627, 1617, 1629, + 1619, 1624, 1623, 1629, 1626, 1630, 1631, 1633, 1633, 1638, + 1627, 1635, 1635, 1639, 1639, 1640, 1640, 1641, 1645, 1630, + 1641, 1631, 1642, 1642, 1643, 1643, 1644, 1644, 1646, 1638, + 1647, 1648, 1648, 1649, 1652, 1647, 1645, 1649, 1652, 1652, + 1653, 1654, 1646, 1655, 1658, 1662, 1660, 1654, 1655, 1658, + 1659, 1660, 1661, 1664, 1664, 1663, 1665, 1667, 1666, 1668, + 1668, 1669, 1669, 1653, 1671, 1662, 1666, 1659, 1659, 1663, + 1661, 1670, 1670, 1672, 1673, 1665, 1667, 1674, 1672, 1675, - 1666, 1681, 1675, 1676, 1679, 1679, 1668, 1682, 1676, 1685, - 1681, 1671, 1680, 1669, 1672, 1678, 1680, 1684, 1685, 1683, - 1687, 1688, 1682, 1683, 1683, 1690, 1694, 1695, 1695, 1687, - 1684, 1694, 1696, 1688, 1698, 1702, 1699, 1699, 1703, 1698, - 1699, 1696, 1701, 1701, 1702, 1705, 1704, 1706, 1708, 1707, - 1690, 1704, 1706, 1708, 1709, 1710, 1710, 1712, 1703, 1713, - 1714, 1714, 1715, 1717, 1716, 1718, 1705, 1707, 1716, 1719, - 1720, 1722, 1717, 1724, 1713, 1715, 1712, 1721, 1720, 1709, - 1731, 1718, 1721, 1723, 1723, 1726, 1726, 1732, 1719, 1727, - 1727, 1728, 1724, 1730, 1730, 1733, 1728, 1722, 1735, 1735, + 1671, 1676, 1677, 1679, 1679, 1681, 1680, 1683, 1675, 1680, + 1681, 1684, 1684, 1685, 1673, 1686, 1687, 1685, 1690, 1695, + 1692, 1676, 1677, 1674, 1686, 1683, 1689, 1690, 1688, 1692, + 1693, 1687, 1688, 1688, 1701, 1699, 1700, 1700, 1708, 1689, + 1699, 1703, 1693, 1701, 1695, 1707, 1703, 1704, 1704, 1706, + 1706, 1704, 1709, 1710, 1707, 1711, 1713, 1709, 1708, 1712, + 1711, 1713, 1714, 1715, 1715, 1717, 1718, 1719, 1719, 1720, + 1722, 1721, 1723, 1724, 1710, 1721, 1727, 1712, 1725, 1722, + 1726, 1718, 1720, 1737, 1717, 1726, 1725, 1714, 1723, 1728, + 1728, 1729, 1724, 1731, 1731, 1732, 1732, 1736, 1733, 1735, - 1731, 1736, 1737, 1738, 1738, 1739, 1739, 1740, 1741, 1742, - 1732, 1743, 1743, 1744, 1733, 1736, 1744, 1745, 1745, 1747, - 1741, 1748, 1749, 1750, 1737, 1749, 1740, 1751, 1750, 1742, - 1752, 1747, 1753, 1754, 1754, 1752, 1756, 1756, 1757, 1759, - 1759, 1748, 1760, 1762, 1761, 0, 1751, 1760, 1762, 1753, - 1753, 1763, 1763, 1764, 1764, 1765, 1765, 1757, 1761, 1766, - 1768, 1768, 1771, 1771, 1766, 1773, 1773, 1774, 1775, 1776, - 1777, 1777, 1778, 1785, 1781, 1782, 1782, 1778, 1776, 1783, - 1786, 1774, 1781, 1788, 1783, 1787, 1789, 1790, 1775, 1838, - 1787, 1791, 1792, 1785, 1789, 1788, 1793, 1794, 1797, 1817, + 1735, 1738, 1727, 1733, 1740, 1740, 1737, 1741, 1742, 1745, + 1729, 1743, 1743, 1744, 1744, 1746, 1747, 1736, 1748, 1748, + 1738, 1741, 1749, 1750, 1750, 1749, 1752, 1746, 1745, 1753, + 1742, 1754, 1755, 1756, 1754, 1757, 1747, 1755, 1752, 1758, + 1757, 1759, 1759, 1761, 1761, 1762, 1764, 1764, 1765, 1753, + 1767, 1766, 1756, 1765, 0, 1767, 1758, 1758, 1768, 1768, + 1769, 1769, 1770, 1770, 1762, 1766, 1771, 1773, 1773, 1776, + 1776, 1771, 1778, 1778, 1779, 1780, 1781, 1782, 1782, 1783, + 1790, 1786, 1787, 1787, 1783, 1781, 1788, 1791, 1779, 1786, + 1793, 1788, 1792, 1794, 1795, 1780, 1843, 1792, 1796, 1797, - 1786, 1838, 1794, 1799, 1799, 1790, 1810, 1791, 1817, 1792, - 1792, 1800, 1800, 1805, 1805, 1801, 1807, 1793, 1797, 1801, - 1807, 1809, 1809, 1811, 1810, 1813, 1813, 1814, 1816, 1818, - 1818, 1819, 1819, 1820, 1820, 1821, 1822, 1811, 1823, 1824, - 1821, 0, 1814, 1825, 1826, 1827, 1816, 1845, 1825, 1826, - 1828, 1828, 1845, 1823, 1831, 1831, 1833, 1833, 1835, 1840, - 1824, 1822, 1836, 1836, 1827, 1839, 1839, 1835, 1841, 1841, - 1844, 1846, 1847, 1844, 1840, 1848, 1850, 1847, 1849, 1854, - 1856, 1857, 1854, 1858, 1856, 1846, 1861, 1860, 1862, 1864, - 1863, 1865, 1850, 1867, 1848, 1866, 1849, 1858, 1860, 1861, + 1790, 1794, 1793, 1798, 1799, 1802, 1822, 1791, 1843, 1799, + 1804, 1804, 1795, 1815, 1796, 1822, 1797, 1797, 1805, 1805, + 1810, 1810, 1806, 1812, 1798, 1802, 1806, 1812, 1814, 1814, + 1816, 1815, 1818, 1818, 1819, 1821, 1823, 1823, 1824, 1824, + 1825, 1825, 1826, 1827, 1816, 1828, 1829, 1826, 0, 1819, + 1830, 1831, 1832, 1821, 1850, 1830, 1831, 1833, 1833, 1850, + 1828, 1836, 1836, 1838, 1838, 1840, 1845, 1829, 1827, 1841, + 1841, 1832, 1844, 1844, 1840, 1846, 1846, 1849, 1851, 1852, + 1849, 1845, 1853, 1855, 1852, 1854, 1859, 1861, 1862, 1859, + 1863, 1861, 1851, 1866, 1865, 1867, 1869, 1868, 1870, 1855, - 1869, 1857, 1868, 1868, 1874, 1864, 1875, 1862, 1863, 1869, - 1866, 1870, 1870, 1867, 1871, 1871, 1865, 1872, 1873, 1876, - 1877, 1875, 1872, 1873, 1876, 1878, 1878, 1880, 1883, 1874, - 1884, 1885, 1886, 1888, 1877, 1884, 1885, 1887, 1891, 1890, - 1894, 1892, 1880, 1893, 1895, 1897, 1886, 1883, 1902, 1895, - 1887, 0, 1888, 1890, 1892, 1896, 1893, 1891, 1899, 1894, - 1896, 1898, 1898, 1899, 1897, 1900, 1901, 1902, 1903, 1905, - 1900, 1901, 1906, 1903, 1904, 1904, 1905, 1907, 1908, 1909, - 1910, 1912, 1913, 1908, 1914, 1917, 1912, 1915, 1916, 1916, - 1917, 1906, 1918, 1910, 1919, 1919, 1907, 1921, 1909, 1922, + 1872, 1853, 1871, 1854, 1863, 1865, 1866, 1874, 1862, 1873, + 1873, 1879, 1869, 1880, 1867, 1868, 1874, 1871, 1875, 1875, + 1872, 1876, 1876, 1870, 1877, 1878, 1881, 1882, 1880, 1877, + 1878, 1881, 1883, 1883, 1885, 1888, 1879, 1889, 1890, 1891, + 1893, 1882, 1889, 1890, 1892, 1896, 1895, 1899, 1897, 1885, + 1898, 1900, 1902, 1891, 1888, 1907, 1900, 1892, 0, 1893, + 1895, 1897, 1901, 1898, 1896, 1904, 1899, 1901, 1903, 1903, + 1904, 1902, 1905, 1906, 1907, 1908, 1910, 1905, 1906, 1911, + 1908, 1909, 1909, 1910, 1912, 1913, 1914, 1915, 1917, 1918, + 1913, 1919, 1922, 1917, 1920, 1921, 1921, 1922, 1911, 1923, - 1915, 1913, 1921, 1914, 1920, 1920, 1922, 1923, 1924, 1924, - 1925, 1918, 1926, 1927, 1929, 1928, 1931, 1925, 1932, 1926, - 1928, 1931, 1933, 1932, 1934, 1936, 1923, 1935, 1935, 1937, - 1938, 1938, 1927, 1929, 1939, 1939, 1941, 1941, 1940, 1942, - 1942, 1933, 1943, 1934, 1936, 1940, 1945, 1948, 1937, 1943, - 1949, 1945, 1948, 1950, 1951, 1951, 1952, 1952, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1949, - 0, 0, 1950, 1956, 1956, 1956, 1956, 1956, 1956, 1956, - 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1958, 1958, 1958, - 1958, 1958, 1958, 1958, 1959, 1959, 1959, 1959, 1959, 1959, + 1915, 1924, 1924, 1912, 1926, 1914, 1927, 1920, 1918, 1926, + 1919, 1925, 1925, 1927, 1928, 1929, 1929, 1930, 1923, 1931, + 1932, 1934, 1933, 1936, 1930, 1937, 1931, 1933, 1936, 1938, + 1937, 1939, 1941, 1928, 1940, 1940, 1942, 1943, 1943, 1932, + 1934, 1944, 1944, 1946, 1946, 1945, 1947, 1947, 1938, 1948, + 1939, 1941, 1945, 1950, 1953, 1942, 1948, 1954, 1950, 1953, + 1955, 1956, 1956, 1957, 1957, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1954, 0, 0, 1955, + 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1962, 1962, 1962, + 1962, 1962, 1962, 1962, 1963, 1963, 1963, 1963, 1963, 1963, - 1959, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1962, 1962, - 0, 1962, 1962, 1962, 1962, 1963, 1963, 0, 0, 0, - 1963, 1963, 1964, 1964, 0, 0, 1964, 0, 1964, 1965, - 0, 0, 0, 0, 0, 1965, 1966, 1966, 0, 0, - 0, 1966, 1966, 1967, 0, 0, 0, 0, 0, 1967, - 1968, 1968, 0, 1968, 1968, 1968, 1968, 1969, 1969, 0, - 1969, 1969, 1969, 1969, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, + 1963, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1965, 1965, + 1965, 1965, 1965, 1965, 1965, 1967, 1967, 0, 1967, 1967, + 1967, 1967, 1968, 1968, 0, 0, 0, 1968, 1968, 1969, + 1969, 0, 0, 1969, 0, 1969, 1970, 0, 0, 0, + 0, 0, 1970, 1971, 1971, 0, 0, 0, 1971, 1971, + 1972, 0, 0, 0, 0, 0, 1972, 1973, 1973, 0, + 1973, 1973, 1973, 1973, 1974, 1974, 0, 1974, 1974, 1974, + 1974, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, + 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, + 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, - 1955, 1955, 1955, 1955 + 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, + 1960 } ; static yy_state_type yy_last_accepting_state; @@ -2147,7 +2166,7 @@ static void config_end_include(void) #define YY_NO_INPUT 1 #endif -#line 2149 "" +#line 2168 "" #define INITIAL 0 #define quotedstring 1 @@ -2191,7 +2210,7 @@ FILE *yyget_out (void ); void yyset_out (FILE * _out_str ); - int yyget_leng (void ); +yy_size_t yyget_leng (void ); char *yyget_text (void ); @@ -2248,7 +2267,7 @@ static int input (void ); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) +#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, @@ -2272,7 +2291,7 @@ static int input (void ); else \ { \ errno=0; \ - while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ @@ -2370,7 +2389,7 @@ YY_DECL { #line 207 "./util/configlexer.lex" -#line 2372 "" +#line 2391 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2403,13 +2422,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 >= 1956 ) + if ( yy_current_state >= 1961 ) yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 3865 ); + while ( yy_base[yy_current_state] != 3872 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -2564,12 +2583,12 @@ YY_RULE_SETUP case 26: YY_RULE_SETUP #line 236 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_DAEMONIZE) } +{ YDVAR(1, VAR_USE_SYSTEMD) } YY_BREAK case 27: YY_RULE_SETUP #line 237 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE) } +{ YDVAR(1, VAR_DO_DAEMONIZE) } YY_BREAK case 28: YY_RULE_SETUP @@ -2579,785 +2598,790 @@ YY_RULE_SETUP case 29: YY_RULE_SETUP #line 239 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_INTERFACE) } +{ YDVAR(1, VAR_INTERFACE) } YY_BREAK case 30: YY_RULE_SETUP #line 240 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) } +{ YDVAR(1, VAR_OUTGOING_INTERFACE) } YY_BREAK case 31: YY_RULE_SETUP #line 241 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_RCVBUF) } +{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) } YY_BREAK case 32: YY_RULE_SETUP #line 242 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_SNDBUF) } +{ YDVAR(1, VAR_SO_RCVBUF) } YY_BREAK case 33: YY_RULE_SETUP #line 243 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_REUSEPORT) } +{ YDVAR(1, VAR_SO_SNDBUF) } YY_BREAK case 34: YY_RULE_SETUP #line 244 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_TRANSPARENT) } +{ YDVAR(1, VAR_SO_REUSEPORT) } YY_BREAK case 35: YY_RULE_SETUP #line 245 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_FREEBIND) } +{ YDVAR(1, VAR_IP_TRANSPARENT) } YY_BREAK case 36: YY_RULE_SETUP #line 246 "./util/configlexer.lex" -{ YDVAR(1, VAR_CHROOT) } +{ YDVAR(1, VAR_IP_FREEBIND) } YY_BREAK case 37: YY_RULE_SETUP #line 247 "./util/configlexer.lex" -{ YDVAR(1, VAR_USERNAME) } +{ YDVAR(1, VAR_CHROOT) } YY_BREAK case 38: YY_RULE_SETUP #line 248 "./util/configlexer.lex" -{ YDVAR(1, VAR_DIRECTORY) } +{ YDVAR(1, VAR_USERNAME) } YY_BREAK case 39: YY_RULE_SETUP #line 249 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOGFILE) } +{ YDVAR(1, VAR_DIRECTORY) } YY_BREAK case 40: YY_RULE_SETUP #line 250 "./util/configlexer.lex" -{ YDVAR(1, VAR_PIDFILE) } +{ YDVAR(1, VAR_LOGFILE) } YY_BREAK case 41: YY_RULE_SETUP #line 251 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_HINTS) } +{ YDVAR(1, VAR_PIDFILE) } YY_BREAK case 42: YY_RULE_SETUP #line 252 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) } +{ YDVAR(1, VAR_ROOT_HINTS) } YY_BREAK case 43: YY_RULE_SETUP #line 253 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } +{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) } YY_BREAK case 44: YY_RULE_SETUP #line 254 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SIZE) } +{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } YY_BREAK case 45: YY_RULE_SETUP #line 255 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SLABS) } +{ YDVAR(1, VAR_MSG_CACHE_SIZE) } YY_BREAK case 46: YY_RULE_SETUP #line 256 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } +{ YDVAR(1, VAR_MSG_CACHE_SLABS) } YY_BREAK case 47: YY_RULE_SETUP #line 257 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } +{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } YY_BREAK case 48: YY_RULE_SETUP #line 258 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_TTL) } +{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } YY_BREAK case 49: YY_RULE_SETUP #line 259 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } +{ YDVAR(1, VAR_CACHE_MAX_TTL) } YY_BREAK case 50: YY_RULE_SETUP #line 260 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MIN_TTL) } +{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } YY_BREAK case 51: YY_RULE_SETUP #line 261 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_HOST_TTL) } +{ YDVAR(1, VAR_CACHE_MIN_TTL) } YY_BREAK case 52: YY_RULE_SETUP #line 262 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_LAME_TTL) } +{ YDVAR(1, VAR_INFRA_HOST_TTL) } YY_BREAK case 53: YY_RULE_SETUP #line 263 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } +{ YDVAR(1, VAR_INFRA_LAME_TTL) } YY_BREAK case 54: YY_RULE_SETUP #line 264 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } +{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } YY_BREAK case 55: YY_RULE_SETUP #line 265 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } +{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } YY_BREAK case 56: YY_RULE_SETUP #line 266 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } +{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } YY_BREAK case 57: YY_RULE_SETUP #line 267 "./util/configlexer.lex" -{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } +{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } YY_BREAK case 58: YY_RULE_SETUP #line 268 "./util/configlexer.lex" -{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } +{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } YY_BREAK case 59: YY_RULE_SETUP #line 269 "./util/configlexer.lex" -{ YDVAR(1, VAR_DELAY_CLOSE) } +{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } YY_BREAK case 60: YY_RULE_SETUP #line 270 "./util/configlexer.lex" -{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } +{ YDVAR(1, VAR_DELAY_CLOSE) } YY_BREAK case 61: YY_RULE_SETUP #line 271 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } +{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } YY_BREAK case 62: YY_RULE_SETUP #line 272 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } +{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } YY_BREAK case 63: YY_RULE_SETUP #line 273 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_GLUE) } +{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } YY_BREAK case 64: YY_RULE_SETUP #line 274 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } +{ YDVAR(1, VAR_HARDEN_GLUE) } YY_BREAK case 65: YY_RULE_SETUP #line 275 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } +{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } YY_BREAK case 66: YY_RULE_SETUP #line 276 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } +{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } YY_BREAK case 67: YY_RULE_SETUP #line 277 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } +{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } YY_BREAK case 68: YY_RULE_SETUP #line 278 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } +{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } YY_BREAK case 69: YY_RULE_SETUP #line 279 "./util/configlexer.lex" -{ YDVAR(1, VAR_CAPS_WHITELIST) } +{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } YY_BREAK case 70: YY_RULE_SETUP #line 280 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } +{ YDVAR(1, VAR_CAPS_WHITELIST) } YY_BREAK case 71: YY_RULE_SETUP #line 281 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_ADDRESS) } +{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } YY_BREAK case 72: YY_RULE_SETUP #line 282 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_DOMAIN) } +{ YDVAR(1, VAR_PRIVATE_ADDRESS) } YY_BREAK case 73: YY_RULE_SETUP #line 283 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH_KEY) } +{ YDVAR(1, VAR_PRIVATE_DOMAIN) } YY_BREAK case 74: YY_RULE_SETUP #line 284 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH) } +{ YDVAR(1, VAR_PREFETCH_KEY) } YY_BREAK case 75: YY_RULE_SETUP #line 285 "./util/configlexer.lex" -{ YDVAR(0, VAR_STUB_ZONE) } +{ YDVAR(1, VAR_PREFETCH) } YY_BREAK case 76: YY_RULE_SETUP #line 286 "./util/configlexer.lex" -{ YDVAR(1, VAR_NAME) } +{ YDVAR(0, VAR_STUB_ZONE) } YY_BREAK case 77: YY_RULE_SETUP #line 287 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_ADDR) } +{ YDVAR(1, VAR_NAME) } YY_BREAK case 78: YY_RULE_SETUP #line 288 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_HOST) } +{ YDVAR(1, VAR_STUB_ADDR) } YY_BREAK case 79: YY_RULE_SETUP #line 289 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_PRIME) } +{ YDVAR(1, VAR_STUB_HOST) } YY_BREAK case 80: YY_RULE_SETUP #line 290 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_FIRST) } +{ YDVAR(1, VAR_STUB_PRIME) } YY_BREAK case 81: YY_RULE_SETUP #line 291 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } +{ YDVAR(1, VAR_STUB_FIRST) } YY_BREAK case 82: YY_RULE_SETUP #line 292 "./util/configlexer.lex" -{ YDVAR(0, VAR_FORWARD_ZONE) } +{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } YY_BREAK case 83: YY_RULE_SETUP #line 293 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_ADDR) } +{ YDVAR(0, VAR_FORWARD_ZONE) } YY_BREAK case 84: YY_RULE_SETUP #line 294 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_HOST) } +{ YDVAR(1, VAR_FORWARD_ADDR) } YY_BREAK case 85: YY_RULE_SETUP #line 295 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_FIRST) } +{ YDVAR(1, VAR_FORWARD_HOST) } YY_BREAK case 86: YY_RULE_SETUP #line 296 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } +{ YDVAR(1, VAR_FORWARD_FIRST) } YY_BREAK case 87: YY_RULE_SETUP #line 297 "./util/configlexer.lex" -{ YDVAR(0, VAR_VIEW) } +{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } YY_BREAK case 88: YY_RULE_SETUP #line 298 "./util/configlexer.lex" -{ YDVAR(1, VAR_VIEW_FIRST) } +{ YDVAR(0, VAR_VIEW) } YY_BREAK case 89: YY_RULE_SETUP #line 299 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } +{ YDVAR(1, VAR_VIEW_FIRST) } YY_BREAK case 90: YY_RULE_SETUP #line 300 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } +{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } YY_BREAK case 91: YY_RULE_SETUP #line 301 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL) } +{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } YY_BREAK case 92: YY_RULE_SETUP #line 302 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_IDENTITY) } +{ YDVAR(2, VAR_ACCESS_CONTROL) } YY_BREAK case 93: YY_RULE_SETUP #line 303 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_VERSION) } +{ YDVAR(1, VAR_HIDE_IDENTITY) } YY_BREAK case 94: YY_RULE_SETUP #line 304 "./util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } +{ YDVAR(1, VAR_HIDE_VERSION) } YY_BREAK case 95: YY_RULE_SETUP #line 305 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } +{ YDVAR(1, VAR_IDENTITY) } YY_BREAK case 96: YY_RULE_SETUP #line 306 "./util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } +{ YDVAR(1, VAR_VERSION) } YY_BREAK case 97: YY_RULE_SETUP #line 307 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } +{ YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 98: YY_RULE_SETUP #line 308 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 99: YY_RULE_SETUP #line 309 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 100: YY_RULE_SETUP #line 310 "./util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 101: YY_RULE_SETUP #line 311 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 102: YY_RULE_SETUP #line 312 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 103: YY_RULE_SETUP #line 313 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } +{ YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 104: YY_RULE_SETUP #line 314 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 105: YY_RULE_SETUP #line 315 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 106: YY_RULE_SETUP #line 316 "./util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 107: YY_RULE_SETUP #line 317 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } +{ YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 108: YY_RULE_SETUP #line 318 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 109: YY_RULE_SETUP #line 319 "./util/configlexer.lex" -{ YDVAR(1, VAR_IGNORE_CD_FLAG) } +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 110: YY_RULE_SETUP #line 320 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED) } +{ YDVAR(1, VAR_IGNORE_CD_FLAG) } YY_BREAK case 111: YY_RULE_SETUP #line 321 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_DSA) } +{ YDVAR(1, VAR_SERVE_EXPIRED) } YY_BREAK case 112: YY_RULE_SETUP #line 322 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_FAKE_DSA) } YY_BREAK case 113: YY_RULE_SETUP #line 323 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 114: YY_RULE_SETUP #line 324 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 115: YY_RULE_SETUP #line 325 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 116: YY_RULE_SETUP #line 326 "./util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 117: YY_RULE_SETUP -#line 328 "./util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +#line 327 "./util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 118: YY_RULE_SETUP #line 329 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 119: YY_RULE_SETUP #line 330 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 120: YY_RULE_SETUP #line 331 "./util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 121: YY_RULE_SETUP #line 332 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 122: YY_RULE_SETUP #line 333 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 123: YY_RULE_SETUP #line 334 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 124: YY_RULE_SETUP #line 335 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 125: YY_RULE_SETUP #line 336 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 126: YY_RULE_SETUP #line 337 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 127: YY_RULE_SETUP #line 338 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 128: YY_RULE_SETUP #line 339 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 129: YY_RULE_SETUP #line 340 "./util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 130: YY_RULE_SETUP #line 341 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 131: YY_RULE_SETUP #line 342 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 132: YY_RULE_SETUP #line 343 "./util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 133: YY_RULE_SETUP #line 344 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 134: YY_RULE_SETUP #line 345 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 135: YY_RULE_SETUP #line 346 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 136: YY_RULE_SETUP #line 347 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 137: YY_RULE_SETUP #line 348 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 138: YY_RULE_SETUP #line 349 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 139: YY_RULE_SETUP #line 350 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 140: YY_RULE_SETUP #line 351 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 141: YY_RULE_SETUP #line 352 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 142: YY_RULE_SETUP #line 353 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 143: YY_RULE_SETUP #line 354 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 144: YY_RULE_SETUP #line 355 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 145: YY_RULE_SETUP #line 356 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 146: YY_RULE_SETUP #line 357 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 147: YY_RULE_SETUP #line 358 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 148: YY_RULE_SETUP #line 359 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 149: YY_RULE_SETUP #line 360 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 150: YY_RULE_SETUP #line 361 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 151: YY_RULE_SETUP #line 362 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 152: YY_RULE_SETUP #line 363 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 153: YY_RULE_SETUP #line 364 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 154: YY_RULE_SETUP #line 365 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 155: YY_RULE_SETUP #line 366 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 156: YY_RULE_SETUP #line 367 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 157: YY_RULE_SETUP #line 368 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 158: YY_RULE_SETUP #line 369 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 159: YY_RULE_SETUP #line 370 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 160: YY_RULE_SETUP #line 371 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 161: YY_RULE_SETUP #line 372 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 162: YY_RULE_SETUP #line 373 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 163: YY_RULE_SETUP #line 374 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 164: YY_RULE_SETUP #line 375 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 165: YY_RULE_SETUP -#line 377 "./util/configlexer.lex" +#line 376 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 166: YY_RULE_SETUP -#line 379 "./util/configlexer.lex" +#line 378 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 167: YY_RULE_SETUP -#line 381 "./util/configlexer.lex" +#line 380 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 168: YY_RULE_SETUP -#line 383 "./util/configlexer.lex" +#line 382 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 169: YY_RULE_SETUP -#line 385 "./util/configlexer.lex" +#line 384 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 170: YY_RULE_SETUP -#line 387 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 386 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 171: YY_RULE_SETUP #line 388 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 172: YY_RULE_SETUP #line 389 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 173: YY_RULE_SETUP #line 390 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 174: YY_RULE_SETUP #line 391 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 175: YY_RULE_SETUP #line 392 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 176: YY_RULE_SETUP #line 393 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 177: -/* rule 177 can match eol */ YY_RULE_SETUP #line 394 "./util/configlexer.lex" +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } + YY_BREAK +case 178: +/* rule 178 can match eol */ +YY_RULE_SETUP +#line 395 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 178: +case 179: YY_RULE_SETUP -#line 397 "./util/configlexer.lex" +#line 398 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 398 "./util/configlexer.lex" +#line 399 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 179: -YY_RULE_SETUP -#line 403 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 180: -/* rule 180 can match eol */ YY_RULE_SETUP #line 404 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 181: +/* rule 181 can match eol */ +YY_RULE_SETUP +#line 405 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 181: +case 182: YY_RULE_SETUP -#line 406 "./util/configlexer.lex" +#line 407 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -3370,34 +3394,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 182: +case 183: YY_RULE_SETUP -#line 418 "./util/configlexer.lex" +#line 419 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 419 "./util/configlexer.lex" +#line 420 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 183: -YY_RULE_SETUP -#line 424 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 184: -/* rule 184 can match eol */ YY_RULE_SETUP #line 425 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 185: +/* rule 185 can match eol */ +YY_RULE_SETUP +#line 426 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 185: +case 186: YY_RULE_SETUP -#line 427 "./util/configlexer.lex" +#line 428 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -3410,38 +3434,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 186: +case 187: YY_RULE_SETUP -#line 439 "./util/configlexer.lex" +#line 440 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 441 "./util/configlexer.lex" +#line 442 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 187: -YY_RULE_SETUP -#line 445 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 188: -/* rule 188 can match eol */ YY_RULE_SETUP #line 446 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 189: +/* rule 189 can match eol */ YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 190: YY_RULE_SETUP #line 448 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 191: +YY_RULE_SETUP +#line 449 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext); @@ -3449,27 +3473,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 453 "./util/configlexer.lex" +#line 454 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 191: -YY_RULE_SETUP -#line 457 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 192: -/* rule 192 can match eol */ YY_RULE_SETUP #line 458 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 193: +/* rule 193 can match eol */ +YY_RULE_SETUP +#line 459 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 193: +case 194: YY_RULE_SETUP -#line 460 "./util/configlexer.lex" +#line 461 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -3479,7 +3503,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 466 "./util/configlexer.lex" +#line 467 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -3491,33 +3515,33 @@ case YY_STATE_EOF(val): } } YY_BREAK -case 194: +case 195: YY_RULE_SETUP -#line 477 "./util/configlexer.lex" +#line 478 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 195: +case 196: YY_RULE_SETUP -#line 481 "./util/configlexer.lex" +#line 482 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 196: +case 197: YY_RULE_SETUP -#line 485 "./util/configlexer.lex" +#line 486 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 197: +case 198: YY_RULE_SETUP -#line 489 "./util/configlexer.lex" +#line 490 "./util/configlexer.lex" ECHO; YY_BREAK -#line 3519 "" +#line 3543 "" case YY_END_OF_BUFFER: { @@ -3716,7 +3740,7 @@ static int yy_get_next_buffer (void) if ( b->yy_is_our_buffer ) { - int new_size = b->yy_buf_size * 2; + yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -3729,7 +3753,7 @@ static int yy_get_next_buffer (void) } else /* Can't grow it, we don't own it. */ - b->yy_ch_buf = NULL; + b->yy_ch_buf = 0; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( @@ -3771,9 +3795,9 @@ static int yy_get_next_buffer (void) else ret_val = EOB_ACT_CONTINUE_SCAN; - if ((int) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ - int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); @@ -3808,10 +3832,10 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1956 ) + if ( yy_current_state >= 1961 ) yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; } return yy_current_state; @@ -3836,11 +3860,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 >= 1956 ) + if ( yy_current_state >= 1961 ) yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; - yy_is_jam = (yy_current_state == 1955); + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 1960); return yy_is_jam ? 0 : yy_current_state; } @@ -3873,7 +3897,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - int offset = (yy_c_buf_p) - (yytext_ptr); + yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -3897,7 +3921,7 @@ static int yy_get_next_buffer (void) case EOB_ACT_END_OF_FILE: { if ( yywrap( ) ) - return 0; + return EOF; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; @@ -4145,7 +4169,7 @@ void yypop_buffer_state (void) */ static void yyensure_buffer_stack (void) { - int num_to_alloc; + yy_size_t num_to_alloc; if (!(yy_buffer_stack)) { @@ -4159,9 +4183,9 @@ static void yyensure_buffer_stack (void) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - + (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; @@ -4190,7 +4214,7 @@ static void yyensure_buffer_stack (void) * @param base the character buffer * @param size the size in bytes of the character buffer * - * @return the newly allocated buffer state object. + * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) { @@ -4200,7 +4224,7 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ - return NULL; + return 0; b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) @@ -4209,7 +4233,7 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; - b->yy_input_file = NULL; + b->yy_input_file = 0; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; @@ -4232,7 +4256,7 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) { - return yy_scan_bytes(yystr,(int) strlen(yystr) ); + return yy_scan_bytes(yystr,strlen(yystr) ); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will @@ -4242,7 +4266,7 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) +YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) { YY_BUFFER_STATE b; char *buf; @@ -4250,7 +4274,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ - n = (yy_size_t) _yybytes_len + 2; + n = _yybytes_len + 2; buf = (char *) yyalloc(n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); @@ -4276,7 +4300,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) #define YY_EXIT_FAILURE 2 #endif -static void yynoreturn yy_fatal_error (yyconst char* msg ) +static void yy_fatal_error (yyconst char* msg ) { (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); @@ -4289,7 +4313,7 @@ static void yynoreturn yy_fatal_error (yyconst char* msg ) do \ { \ /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ + yy_size_t yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = (yy_hold_char); \ (yy_c_buf_p) = yytext + yyless_macro_arg; \ @@ -4306,7 +4330,7 @@ static void yynoreturn yy_fatal_error (yyconst char* msg ) */ int yyget_lineno (void) { - + return yylineno; } @@ -4329,7 +4353,7 @@ FILE *yyget_out (void) /** Get the length of the current token. * */ -int yyget_leng (void) +yy_size_t yyget_leng (void) { return yyleng; } @@ -4385,10 +4409,10 @@ static int yy_init_globals (void) * This function is called from yylex_destroy(), so don't allocate here. */ - (yy_buffer_stack) = NULL; + (yy_buffer_stack) = 0; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = NULL; + (yy_c_buf_p) = (char *) 0; (yy_init) = 0; (yy_start) = 0; @@ -4397,8 +4421,8 @@ static int yy_init_globals (void) yyin = stdin; yyout = stdout; #else - yyin = NULL; - yyout = NULL; + yyin = (FILE *) 0; + yyout = (FILE *) 0; #endif /* For future reference: Set errno on error, since we are called by @@ -4456,7 +4480,7 @@ static int yy_flex_strlen (yyconst char * s ) void *yyalloc (yy_size_t size ) { - return malloc(size); + return (void *) malloc( size ); } void *yyrealloc (void * ptr, yy_size_t size ) @@ -4469,7 +4493,7 @@ void *yyrealloc (void * ptr, yy_size_t size ) * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ - return realloc(ptr, size); + return (void *) realloc( (char *) ptr, size ); } void yyfree (void * ptr ) @@ -4479,7 +4503,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 489 "./util/configlexer.lex" +#line 490 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index a42f3adfe..7a0710aad 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -233,6 +233,7 @@ ssl-upstream{COLON} { YDVAR(1, VAR_SSL_UPSTREAM) } ssl-service-key{COLON} { YDVAR(1, VAR_SSL_SERVICE_KEY) } ssl-service-pem{COLON} { YDVAR(1, VAR_SSL_SERVICE_PEM) } ssl-port{COLON} { YDVAR(1, VAR_SSL_PORT) } +use-systemd{COLON} { YDVAR(1, VAR_USE_SYSTEMD) } do-daemonize{COLON} { YDVAR(1, VAR_DO_DAEMONIZE) } interface{COLON} { YDVAR(1, VAR_INTERFACE) } ip-address{COLON} { YDVAR(1, VAR_INTERFACE) } diff --git a/util/configparser.c b/util/configparser.c index 1699a9a53..2db5fefd1 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -304,7 +304,8 @@ extern int yydebug; VAR_VIEW_FIRST = 435, VAR_SERVE_EXPIRED = 436, VAR_FAKE_DSA = 437, - VAR_LOG_IDENTITY = 438 + VAR_LOG_IDENTITY = 438, + VAR_USE_SYSTEMD = 439 }; #endif /* Tokens. */ @@ -489,6 +490,7 @@ extern int yydebug; #define VAR_SERVE_EXPIRED 436 #define VAR_FAKE_DSA 437 #define VAR_LOG_IDENTITY 438 +#define VAR_USE_SYSTEMD 439 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -499,7 +501,7 @@ union YYSTYPE char* str; -#line 503 "util/configparser.c" /* yacc.c:355 */ +#line 505 "util/configparser.c" /* yacc.c:355 */ }; typedef union YYSTYPE YYSTYPE; @@ -516,7 +518,7 @@ int yyparse (void); /* Copy the second part of user declarations. */ -#line 520 "util/configparser.c" /* yacc.c:358 */ +#line 522 "util/configparser.c" /* yacc.c:358 */ #ifdef short # undef short @@ -758,21 +760,21 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 363 +#define YYLAST 365 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 184 +#define YYNTOKENS 185 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 194 +#define YYNNTS 195 /* YYNRULES -- Number of rules. */ -#define YYNRULES 371 +#define YYNRULES 373 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 556 +#define YYNSTATES 559 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 438 +#define YYMAXUTOK 439 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -824,51 +826,51 @@ static const yytype_uint8 yytranslate[] = 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183 + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 137, 137, 137, 138, 138, 139, 139, 140, 140, - 140, 145, 150, 151, 152, 152, 152, 153, 153, 154, - 154, 155, 155, 156, 156, 157, 157, 157, 158, 158, - 158, 159, 159, 160, 160, 161, 161, 162, 162, 163, - 163, 164, 164, 165, 165, 166, 166, 167, 167, 167, - 168, 168, 168, 169, 169, 169, 170, 170, 171, 171, - 172, 172, 173, 173, 174, 174, 174, 175, 175, 176, - 176, 177, 177, 177, 178, 178, 179, 179, 180, 180, - 181, 181, 181, 182, 182, 183, 183, 184, 184, 185, - 185, 186, 186, 187, 187, 187, 188, 188, 189, 189, - 189, 190, 190, 190, 191, 191, 191, 192, 192, 192, - 193, 193, 193, 194, 194, 194, 195, 195, 196, 196, - 197, 197, 198, 198, 199, 199, 199, 200, 200, 201, - 201, 202, 202, 203, 203, 204, 204, 204, 205, 205, - 206, 206, 207, 207, 208, 208, 209, 209, 211, 223, - 224, 225, 225, 225, 225, 225, 226, 228, 240, 241, - 242, 242, 242, 242, 243, 245, 259, 260, 261, 261, - 261, 261, 263, 272, 281, 292, 301, 310, 319, 332, - 347, 356, 365, 374, 383, 392, 401, 410, 419, 428, - 437, 446, 455, 464, 473, 482, 489, 496, 505, 514, - 528, 537, 546, 553, 560, 584, 592, 599, 606, 613, - 620, 628, 636, 644, 651, 658, 667, 676, 683, 690, - 698, 706, 716, 726, 736, 749, 760, 768, 781, 790, - 799, 808, 818, 828, 836, 849, 858, 866, 875, 883, - 896, 905, 912, 922, 932, 942, 952, 962, 972, 982, - 992, 999, 1006, 1013, 1022, 1031, 1040, 1047, 1057, 1074, - 1081, 1099, 1112, 1125, 1134, 1143, 1152, 1161, 1171, 1181, - 1190, 1199, 1212, 1221, 1228, 1237, 1246, 1255, 1264, 1272, - 1285, 1293, 1321, 1328, 1343, 1353, 1363, 1370, 1377, 1386, - 1400, 1419, 1438, 1450, 1462, 1474, 1485, 1494, 1502, 1515, - 1528, 1541, 1550, 1560, 1570, 1580, 1587, 1594, 1603, 1613, - 1623, 1633, 1640, 1647, 1656, 1666, 1676, 1705, 1714, 1723, - 1728, 1729, 1730, 1730, 1730, 1731, 1731, 1731, 1732, 1732, - 1734, 1744, 1753, 1760, 1770, 1777, 1784, 1791, 1798, 1803, - 1804, 1805, 1805, 1806, 1806, 1807, 1807, 1808, 1809, 1810, - 1811, 1812, 1813, 1815, 1823, 1830, 1838, 1846, 1853, 1860, - 1869, 1878, 1887, 1896, 1905, 1914, 1919, 1920, 1921, 1923, - 1929, 1939 + 0, 138, 138, 138, 139, 139, 140, 140, 141, 141, + 141, 146, 151, 152, 153, 153, 153, 154, 154, 155, + 155, 156, 156, 157, 157, 158, 158, 158, 159, 159, + 159, 160, 160, 161, 161, 162, 162, 163, 163, 164, + 164, 165, 165, 166, 166, 167, 167, 168, 168, 168, + 169, 169, 169, 170, 170, 170, 171, 171, 172, 172, + 173, 173, 174, 174, 175, 175, 175, 176, 176, 177, + 177, 178, 178, 178, 179, 179, 180, 180, 181, 181, + 182, 182, 182, 183, 183, 184, 184, 185, 185, 186, + 186, 187, 187, 188, 188, 188, 189, 189, 190, 190, + 190, 191, 191, 191, 192, 192, 192, 193, 193, 193, + 194, 194, 194, 195, 195, 195, 196, 196, 197, 197, + 198, 198, 199, 199, 200, 200, 200, 201, 201, 202, + 202, 203, 203, 204, 204, 205, 205, 205, 206, 206, + 207, 207, 208, 208, 209, 209, 210, 210, 210, 212, + 224, 225, 226, 226, 226, 226, 226, 227, 229, 241, + 242, 243, 243, 243, 243, 244, 246, 260, 261, 262, + 262, 262, 262, 264, 273, 282, 293, 302, 311, 320, + 333, 348, 357, 366, 375, 384, 393, 402, 411, 420, + 429, 438, 447, 456, 465, 474, 483, 490, 497, 506, + 515, 524, 538, 547, 556, 563, 570, 594, 602, 609, + 616, 623, 630, 638, 646, 654, 661, 668, 677, 686, + 693, 700, 708, 716, 726, 736, 746, 759, 770, 778, + 791, 800, 809, 818, 828, 838, 846, 859, 868, 876, + 885, 893, 906, 915, 922, 932, 942, 952, 962, 972, + 982, 992, 1002, 1009, 1016, 1023, 1032, 1041, 1050, 1057, + 1067, 1084, 1091, 1109, 1122, 1135, 1144, 1153, 1162, 1171, + 1181, 1191, 1200, 1209, 1222, 1231, 1238, 1247, 1256, 1265, + 1274, 1282, 1295, 1303, 1331, 1338, 1353, 1363, 1373, 1380, + 1387, 1396, 1410, 1429, 1448, 1460, 1472, 1484, 1495, 1504, + 1512, 1525, 1538, 1551, 1560, 1570, 1580, 1590, 1597, 1604, + 1613, 1623, 1633, 1643, 1650, 1657, 1666, 1676, 1686, 1715, + 1724, 1733, 1738, 1739, 1740, 1740, 1740, 1741, 1741, 1741, + 1742, 1742, 1744, 1754, 1763, 1770, 1780, 1787, 1794, 1801, + 1808, 1813, 1814, 1815, 1815, 1816, 1816, 1817, 1817, 1818, + 1819, 1820, 1821, 1822, 1823, 1825, 1833, 1840, 1848, 1856, + 1863, 1870, 1879, 1888, 1897, 1906, 1915, 1924, 1929, 1930, + 1931, 1933, 1939, 1949 }; #endif @@ -942,22 +944,23 @@ static const char *const yytname[] = "VAR_LOCAL_ZONE_OVERRIDE", "VAR_ACCESS_CONTROL_TAG_ACTION", "VAR_ACCESS_CONTROL_TAG_DATA", "VAR_VIEW", "VAR_ACCESS_CONTROL_VIEW", "VAR_VIEW_FIRST", "VAR_SERVE_EXPIRED", "VAR_FAKE_DSA", - "VAR_LOG_IDENTITY", "$accept", "toplevelvars", "toplevelvar", - "serverstart", "contents_server", "content_server", "stubstart", - "contents_stub", "content_stub", "forwardstart", "contents_forward", - "content_forward", "viewstart", "contents_view", "content_view", - "server_num_threads", "server_verbosity", "server_statistics_interval", - "server_statistics_cumulative", "server_extended_statistics", - "server_port", "server_interface", "server_outgoing_interface", - "server_outgoing_range", "server_outgoing_port_permit", - "server_outgoing_port_avoid", "server_outgoing_num_tcp", - "server_incoming_num_tcp", "server_interface_automatic", "server_do_ip4", - "server_do_ip6", "server_do_udp", "server_do_tcp", "server_prefer_ip6", - "server_tcp_mss", "server_outgoing_tcp_mss", "server_tcp_upstream", - "server_ssl_upstream", "server_ssl_service_key", - "server_ssl_service_pem", "server_ssl_port", "server_do_daemonize", - "server_use_syslog", "server_log_time_ascii", "server_log_queries", - "server_chroot", "server_username", "server_directory", "server_logfile", + "VAR_LOG_IDENTITY", "VAR_USE_SYSTEMD", "$accept", "toplevelvars", + "toplevelvar", "serverstart", "contents_server", "content_server", + "stubstart", "contents_stub", "content_stub", "forwardstart", + "contents_forward", "content_forward", "viewstart", "contents_view", + "content_view", "server_num_threads", "server_verbosity", + "server_statistics_interval", "server_statistics_cumulative", + "server_extended_statistics", "server_port", "server_interface", + "server_outgoing_interface", "server_outgoing_range", + "server_outgoing_port_permit", "server_outgoing_port_avoid", + "server_outgoing_num_tcp", "server_incoming_num_tcp", + "server_interface_automatic", "server_do_ip4", "server_do_ip6", + "server_do_udp", "server_do_tcp", "server_prefer_ip6", "server_tcp_mss", + "server_outgoing_tcp_mss", "server_tcp_upstream", "server_ssl_upstream", + "server_ssl_service_key", "server_ssl_service_pem", "server_ssl_port", + "server_use_systemd", "server_do_daemonize", "server_use_syslog", + "server_log_time_ascii", "server_log_queries", "server_chroot", + "server_username", "server_directory", "server_logfile", "server_pidfile", "server_root_hints", "server_dlv_anchor_file", "server_dlv_anchor", "server_auto_trust_anchor_file", "server_trust_anchor_file", "server_trusted_keys_file", @@ -1046,7 +1049,7 @@ static const yytype_uint16 yytoknum[] = 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438 + 435, 436, 437, 438, 439 }; # endif @@ -1079,7 +1082,7 @@ static const yytype_int16 yypact[] = 127, 128, 129, 130, 132, 133, 136, 165, 166, 167, 172, 173, 174, 216, 217, 218, 219, 220, 221, 222, 223, 224, 228, 232, 233, 256, 257, 258, 259, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, -130, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, @@ -1093,33 +1096,33 @@ static const yytype_int16 yypact[] = -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, - -130, -130, -130, -130, 279, 280, 281, 303, 305, 309, - -130, -130, -130, -130, -130, -130, -130, 310, 311, 312, - 313, 314, -130, -130, -130, -130, -130, -130, 315, 316, - 317, 318, -130, -130, -130, -130, -130, 319, 320, 321, - 322, 323, 324, 325, 326, -130, -130, -130, -130, -130, - -130, -130, -130, -130, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, -130, -130, -130, -130, - -130, -130, -130, -130, -130, -130, -130, -130, -130, 339, + -130, -130, -130, -130, -130, -130, 280, 281, 303, 305, + 310, 311, -130, -130, -130, -130, -130, -130, -130, 312, + 313, 314, 315, 316, -130, -130, -130, -130, -130, -130, + 317, 318, 319, 320, -130, -130, -130, -130, -130, 321, + 322, 323, 324, 325, 326, 327, 328, -130, -130, -130, + -130, -130, -130, -130, -130, -130, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, 341, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, - -130, -130, -130, -130, -130, -130, -130, -130, 340, 341, + 342, 343, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, 344, + 345, -130, -130, -130, -130, -130, -130, -130, -130, 346, + 347, 348, 349, 350, 351, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, - -130, -130, -130, -130, -130, -130, -130, 342, 343, -130, - -130, -130, -130, -130, -130, -130, -130, 344, 345, 346, - 347, 348, 349, -130, -130, -130, -130, -130, -130, -130, - -130, -130, -130, -130, -130, -130, -130, -130, 350, -130, + -130, 352, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, - -130, -130, -130, -130, -130, -130, -130, -130, 351, 352, - 353, -130, -130, -130, -130, -130 + -130, 353, 354, 355, -130, -130, -130, -130, -130 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1127,8 +1130,8 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 1, 11, 148, 157, 319, 365, 338, 165, - 3, 13, 150, 159, 167, 321, 340, 367, 4, 5, + 2, 0, 1, 11, 149, 158, 321, 367, 340, 166, + 3, 13, 151, 160, 168, 323, 342, 369, 4, 5, 6, 10, 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, @@ -1142,47 +1145,47 @@ static const yytype_uint16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, - 14, 15, 74, 77, 86, 16, 25, 65, 17, 78, - 79, 36, 58, 73, 18, 19, 21, 22, 20, 23, - 24, 108, 109, 110, 111, 112, 75, 64, 90, 107, - 26, 27, 28, 29, 30, 66, 80, 81, 96, 52, - 62, 53, 91, 46, 47, 48, 49, 100, 104, 116, - 124, 135, 101, 59, 31, 32, 33, 88, 117, 118, - 119, 34, 35, 37, 38, 40, 41, 39, 122, 42, - 43, 44, 50, 69, 105, 83, 123, 76, 131, 84, - 85, 102, 103, 89, 45, 67, 70, 51, 54, 92, - 93, 68, 132, 94, 55, 56, 57, 106, 145, 146, - 95, 63, 97, 98, 99, 133, 60, 61, 82, 71, - 72, 87, 113, 114, 115, 120, 121, 136, 137, 139, - 141, 142, 140, 143, 125, 127, 126, 128, 129, 130, - 134, 144, 138, 147, 0, 0, 0, 0, 0, 0, - 149, 151, 152, 153, 155, 156, 154, 0, 0, 0, - 0, 0, 158, 160, 161, 162, 163, 164, 0, 0, - 0, 0, 166, 168, 169, 170, 171, 0, 0, 0, - 0, 0, 0, 0, 0, 320, 322, 324, 323, 329, - 325, 326, 327, 328, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 339, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 0, - 366, 368, 173, 172, 177, 180, 178, 186, 187, 190, - 188, 189, 191, 192, 202, 203, 204, 205, 206, 226, - 227, 228, 233, 234, 183, 235, 236, 239, 237, 238, - 241, 242, 243, 256, 215, 216, 217, 218, 244, 259, - 211, 213, 260, 266, 267, 268, 184, 225, 278, 279, - 212, 273, 199, 179, 207, 257, 263, 245, 0, 0, - 282, 185, 174, 198, 249, 175, 181, 182, 208, 209, - 280, 247, 251, 252, 176, 283, 229, 255, 200, 214, - 261, 262, 265, 272, 210, 276, 274, 275, 219, 224, - 253, 254, 220, 221, 246, 269, 201, 193, 194, 195, - 196, 197, 284, 285, 286, 230, 231, 232, 240, 287, - 288, 248, 222, 370, 296, 298, 297, 0, 0, 301, - 250, 264, 277, 302, 303, 223, 289, 0, 0, 0, - 0, 0, 0, 270, 271, 371, 304, 305, 306, 309, - 308, 307, 310, 311, 312, 313, 314, 315, 0, 317, - 318, 330, 332, 331, 334, 335, 336, 337, 333, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 369, 258, 281, 299, 300, 290, 291, 0, 0, - 0, 295, 316, 294, 292, 293 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 14, 15, 74, 77, 86, 16, 25, 65, 17, + 78, 79, 36, 58, 73, 18, 19, 21, 22, 20, + 23, 24, 108, 109, 110, 111, 112, 148, 75, 64, + 90, 107, 26, 27, 28, 29, 30, 66, 80, 81, + 96, 52, 62, 53, 91, 46, 47, 48, 49, 100, + 104, 116, 124, 135, 101, 59, 31, 32, 33, 88, + 117, 118, 119, 34, 35, 37, 38, 40, 41, 39, + 122, 42, 43, 44, 50, 69, 105, 83, 123, 76, + 131, 84, 85, 102, 103, 89, 45, 67, 70, 51, + 54, 92, 93, 68, 132, 94, 55, 56, 57, 106, + 145, 146, 95, 63, 97, 98, 99, 133, 60, 61, + 82, 71, 72, 87, 113, 114, 115, 120, 121, 136, + 137, 139, 141, 142, 140, 143, 125, 127, 126, 128, + 129, 130, 134, 144, 138, 147, 0, 0, 0, 0, + 0, 0, 150, 152, 153, 154, 156, 157, 155, 0, + 0, 0, 0, 0, 159, 161, 162, 163, 164, 165, + 0, 0, 0, 0, 167, 169, 170, 171, 172, 0, + 0, 0, 0, 0, 0, 0, 0, 322, 324, 326, + 325, 331, 327, 328, 329, 330, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 341, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 0, 368, 370, 174, 173, 178, 181, 179, 187, + 188, 191, 189, 190, 192, 193, 204, 205, 206, 207, + 208, 228, 229, 230, 235, 236, 184, 237, 238, 241, + 239, 240, 243, 244, 245, 258, 217, 218, 219, 220, + 246, 261, 213, 215, 262, 268, 269, 270, 185, 227, + 280, 281, 214, 275, 201, 180, 209, 259, 265, 247, + 0, 0, 284, 186, 175, 200, 251, 176, 182, 183, + 210, 211, 282, 249, 253, 254, 177, 285, 231, 257, + 202, 216, 263, 264, 267, 274, 212, 278, 276, 277, + 221, 226, 255, 256, 222, 223, 248, 271, 203, 194, + 195, 196, 197, 198, 286, 287, 288, 232, 233, 234, + 242, 289, 290, 250, 224, 372, 298, 300, 299, 0, + 0, 303, 252, 266, 279, 304, 305, 225, 291, 0, + 0, 0, 0, 0, 0, 272, 273, 373, 199, 306, + 307, 308, 311, 310, 309, 312, 313, 314, 315, 316, + 317, 0, 319, 320, 332, 334, 333, 336, 337, 338, + 339, 335, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 366, 371, 260, 283, 301, 302, 292, + 293, 0, 0, 0, 297, 318, 296, 294, 295 }; /* YYPGOTO[NTERM-NUM]. */ @@ -1207,32 +1210,32 @@ static const yytype_int16 yypgoto[] = -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, - -130, -130, -130, -130 + -130, -130, -130, -130, -130 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 10, 11, 18, 159, 12, 19, 300, 13, - 20, 312, 14, 21, 322, 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, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 301, 302, 303, - 304, 305, 306, 313, 314, 315, 316, 317, 323, 324, - 325, 326, 15, 22, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 16, 23, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 17, 24, - 370, 371, 292, 293 + -1, 1, 10, 11, 18, 160, 12, 19, 302, 13, + 20, 314, 14, 21, 324, 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, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 303, 304, + 305, 306, 307, 308, 315, 316, 317, 318, 319, 325, + 326, 327, 328, 15, 22, 337, 338, 339, 340, 341, + 342, 343, 344, 345, 16, 23, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 17, + 24, 372, 373, 294, 295 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1240,43 +1243,43 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint16 yytable[] = { - 2, 318, 294, 369, 295, 296, 307, 372, 373, 374, - 0, 3, 375, 376, 308, 309, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 327, 328, - 329, 330, 331, 332, 333, 334, 377, 319, 320, 378, - 379, 4, 380, 381, 382, 383, 384, 5, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 297, 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, 6, 427, 428, 298, 429, 299, 310, 430, 311, - 431, 432, 433, 434, 435, 436, 437, 7, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 321, 471, 472, 8, 0, 473, 25, 26, 27, + 2, 320, 296, 371, 297, 298, 309, 374, 375, 376, + 0, 3, 377, 378, 310, 311, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 329, 330, + 331, 332, 333, 334, 335, 336, 379, 321, 322, 380, + 381, 4, 382, 383, 384, 385, 386, 5, 387, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 299, 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, 6, 429, 430, 300, 431, 301, 312, 432, 313, + 433, 434, 435, 436, 437, 438, 439, 7, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 323, 473, 474, 8, 0, 475, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 474, 475, 476, 9, 53, - 54, 55, 477, 478, 479, 56, 57, 58, 59, 60, + 48, 49, 50, 51, 52, 476, 477, 478, 9, 53, + 54, 55, 479, 480, 481, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 480, 481, 482, 483, - 484, 485, 486, 487, 488, 97, 98, 99, 489, 100, - 101, 102, 490, 491, 103, 104, 105, 106, 107, 108, + 91, 92, 93, 94, 95, 96, 482, 483, 484, 485, + 486, 487, 488, 489, 490, 97, 98, 99, 491, 100, + 101, 102, 492, 493, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 492, 493, 494, 495, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, - 507, 508, 134, 135, 136, 137, 138, 139, 140, 141, + 119, 120, 121, 122, 123, 124, 494, 495, 496, 497, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 498, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, + 509, 510, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 509, 155, 510, 156, 157, 158, 511, - 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, - 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, - 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555 + 152, 153, 154, 511, 155, 512, 156, 157, 158, 159, + 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, + 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, + 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, + 553, 554, 555, 556, 557, 558 }; static const yytype_int16 yycheck[] = @@ -1312,21 +1315,21 @@ static const yytype_int16 yycheck[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 10, 179, 10, 181, 182, 183, 10, + 175, 176, 177, 10, 179, 10, 181, 182, 183, 184, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 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, 185, 0, 11, 41, 47, 91, 107, 144, 178, - 186, 187, 190, 193, 196, 346, 357, 372, 188, 191, - 194, 197, 347, 358, 373, 12, 13, 14, 15, 16, + 0, 186, 0, 11, 41, 47, 91, 107, 144, 178, + 187, 188, 191, 194, 197, 348, 359, 374, 189, 192, + 195, 198, 349, 360, 375, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 44, 45, 46, 50, 51, 52, 53, @@ -1339,8 +1342,8 @@ static const yytype_uint16 yystos[] = 126, 127, 128, 129, 130, 135, 136, 137, 138, 139, 140, 141, 142, 143, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 179, 181, 182, 183, 189, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 173, 174, 175, 176, 177, 179, 181, 182, 183, 184, + 190, 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, @@ -1353,15 +1356,15 @@ static const yytype_uint16 yystos[] = 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 376, 377, 40, 42, 43, 103, 132, 134, - 192, 331, 332, 333, 334, 335, 336, 40, 48, 49, - 131, 133, 195, 337, 338, 339, 340, 341, 40, 76, - 77, 180, 198, 342, 343, 344, 345, 92, 93, 94, - 95, 96, 97, 98, 99, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 108, - 374, 375, 10, 10, 10, 10, 10, 10, 10, 10, + 329, 330, 331, 332, 378, 379, 40, 42, 43, 103, + 132, 134, 193, 333, 334, 335, 336, 337, 338, 40, + 48, 49, 131, 133, 196, 339, 340, 341, 342, 343, + 40, 76, 77, 180, 199, 344, 345, 346, 347, 92, + 93, 94, 95, 96, 97, 98, 99, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 108, 376, 377, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1379,30 +1382,30 @@ 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 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 184, 185, 185, 186, 186, 186, 186, 186, 186, - 186, 187, 188, 188, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 190, 191, - 191, 192, 192, 192, 192, 192, 192, 193, 194, 194, - 195, 195, 195, 195, 195, 196, 197, 197, 198, 198, - 198, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 0, 185, 186, 186, 187, 187, 187, 187, 187, 187, + 187, 188, 189, 189, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 191, + 192, 192, 193, 193, 193, 193, 193, 193, 194, 195, + 195, 196, 196, 196, 196, 196, 197, 198, 198, 199, + 199, 199, 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, @@ -1417,12 +1420,12 @@ static const yytype_uint16 yyr1[] = 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 347, 348, 348, 348, 348, 348, 348, 348, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 358, 359, 359, 359, 359, 359, 359, 359, 359, 359, - 359, 359, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 373, 374, 375, - 376, 377 + 347, 348, 349, 349, 350, 350, 350, 350, 350, 350, + 350, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 360, 361, 361, 361, 361, 361, 361, 361, + 361, 361, 361, 361, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 375, + 376, 377, 378, 379 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1442,30 +1445,30 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 2, 0, - 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, - 3, 3, 4, 4, 4, 3, 2, 2, 2, 3, - 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 3, 2, 2, 1, - 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 0, 1, 1, 1, 1, 1, 1, 1, 2, + 0, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 0, 1, 2, - 2, 2 + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, + 2, 2, 3, 3, 4, 4, 4, 3, 2, 2, + 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, + 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, + 1, 2, 2, 2 }; @@ -2142,15 +2145,15 @@ yyreduce: switch (yyn) { case 11: -#line 146 "./util/configparser.y" /* yacc.c:1646 */ +#line 147 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(server:)\n")); } -#line 2150 "util/configparser.c" /* yacc.c:1646 */ +#line 2153 "util/configparser.c" /* yacc.c:1646 */ break; - case 148: -#line 212 "./util/configparser.y" /* yacc.c:1646 */ + case 149: +#line 213 "./util/configparser.y" /* yacc.c:1646 */ { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2161,11 +2164,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2165 "util/configparser.c" /* yacc.c:1646 */ +#line 2168 "util/configparser.c" /* yacc.c:1646 */ break; - case 157: -#line 229 "./util/configparser.y" /* yacc.c:1646 */ + case 158: +#line 230 "./util/configparser.y" /* yacc.c:1646 */ { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2176,11 +2179,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2180 "util/configparser.c" /* yacc.c:1646 */ +#line 2183 "util/configparser.c" /* yacc.c:1646 */ break; - case 165: -#line 246 "./util/configparser.y" /* yacc.c:1646 */ + case 166: +#line 247 "./util/configparser.y" /* yacc.c:1646 */ { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -2193,11 +2196,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2197 "util/configparser.c" /* yacc.c:1646 */ +#line 2200 "util/configparser.c" /* yacc.c:1646 */ break; - case 172: -#line 264 "./util/configparser.y" /* yacc.c:1646 */ + case 173: +#line 265 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2205,11 +2208,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2209 "util/configparser.c" /* yacc.c:1646 */ +#line 2212 "util/configparser.c" /* yacc.c:1646 */ break; - case 173: -#line 273 "./util/configparser.y" /* yacc.c:1646 */ + case 174: +#line 274 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2217,11 +2220,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2221 "util/configparser.c" /* yacc.c:1646 */ +#line 2224 "util/configparser.c" /* yacc.c:1646 */ break; - case 174: -#line 282 "./util/configparser.y" /* yacc.c:1646 */ + case 175: +#line 283 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -2231,11 +2234,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2235 "util/configparser.c" /* yacc.c:1646 */ +#line 2238 "util/configparser.c" /* yacc.c:1646 */ break; - case 175: -#line 293 "./util/configparser.y" /* yacc.c:1646 */ + case 176: +#line 294 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2243,11 +2246,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2247 "util/configparser.c" /* yacc.c:1646 */ +#line 2250 "util/configparser.c" /* yacc.c:1646 */ break; - case 176: -#line 302 "./util/configparser.y" /* yacc.c:1646 */ + case 177: +#line 303 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2255,11 +2258,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2259 "util/configparser.c" /* yacc.c:1646 */ +#line 2262 "util/configparser.c" /* yacc.c:1646 */ break; - case 177: -#line 311 "./util/configparser.y" /* yacc.c:1646 */ + case 178: +#line 312 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2267,11 +2270,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2271 "util/configparser.c" /* yacc.c:1646 */ +#line 2274 "util/configparser.c" /* yacc.c:1646 */ break; - case 178: -#line 320 "./util/configparser.y" /* yacc.c:1646 */ + case 179: +#line 321 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -2283,11 +2286,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 2287 "util/configparser.c" /* yacc.c:1646 */ +#line 2290 "util/configparser.c" /* yacc.c:1646 */ break; - case 179: -#line 333 "./util/configparser.y" /* yacc.c:1646 */ + case 180: +#line 334 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -2301,11 +2304,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 2305 "util/configparser.c" /* yacc.c:1646 */ +#line 2308 "util/configparser.c" /* yacc.c:1646 */ break; - case 180: -#line 348 "./util/configparser.y" /* yacc.c:1646 */ + case 181: +#line 349 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2313,11 +2316,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2317 "util/configparser.c" /* yacc.c:1646 */ +#line 2320 "util/configparser.c" /* yacc.c:1646 */ break; - case 181: -#line 357 "./util/configparser.y" /* yacc.c:1646 */ + case 182: +#line 358 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -2325,11 +2328,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 2329 "util/configparser.c" /* yacc.c:1646 */ +#line 2332 "util/configparser.c" /* yacc.c:1646 */ break; - case 182: -#line 366 "./util/configparser.y" /* yacc.c:1646 */ + case 183: +#line 367 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -2337,11 +2340,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 2341 "util/configparser.c" /* yacc.c:1646 */ +#line 2344 "util/configparser.c" /* yacc.c:1646 */ break; - case 183: -#line 375 "./util/configparser.y" /* yacc.c:1646 */ + case 184: +#line 376 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2349,11 +2352,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2353 "util/configparser.c" /* yacc.c:1646 */ +#line 2356 "util/configparser.c" /* yacc.c:1646 */ break; - case 184: -#line 384 "./util/configparser.y" /* yacc.c:1646 */ + case 185: +#line 385 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2361,11 +2364,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2365 "util/configparser.c" /* yacc.c:1646 */ +#line 2368 "util/configparser.c" /* yacc.c:1646 */ break; - case 185: -#line 393 "./util/configparser.y" /* yacc.c:1646 */ + case 186: +#line 394 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2373,11 +2376,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2377 "util/configparser.c" /* yacc.c:1646 */ +#line 2380 "util/configparser.c" /* yacc.c:1646 */ break; - case 186: -#line 402 "./util/configparser.y" /* yacc.c:1646 */ + case 187: +#line 403 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2385,11 +2388,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2389 "util/configparser.c" /* yacc.c:1646 */ +#line 2392 "util/configparser.c" /* yacc.c:1646 */ break; - case 187: -#line 411 "./util/configparser.y" /* yacc.c:1646 */ + case 188: +#line 412 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2397,11 +2400,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2401 "util/configparser.c" /* yacc.c:1646 */ +#line 2404 "util/configparser.c" /* yacc.c:1646 */ break; - case 188: -#line 420 "./util/configparser.y" /* yacc.c:1646 */ + case 189: +#line 421 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2409,11 +2412,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2413 "util/configparser.c" /* yacc.c:1646 */ +#line 2416 "util/configparser.c" /* yacc.c:1646 */ break; - case 189: -#line 429 "./util/configparser.y" /* yacc.c:1646 */ + case 190: +#line 430 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2421,11 +2424,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2425 "util/configparser.c" /* yacc.c:1646 */ +#line 2428 "util/configparser.c" /* yacc.c:1646 */ break; - case 190: -#line 438 "./util/configparser.y" /* yacc.c:1646 */ + case 191: +#line 439 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2433,11 +2436,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2437 "util/configparser.c" /* yacc.c:1646 */ +#line 2440 "util/configparser.c" /* yacc.c:1646 */ break; - case 191: -#line 447 "./util/configparser.y" /* yacc.c:1646 */ + case 192: +#line 448 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2445,11 +2448,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2449 "util/configparser.c" /* yacc.c:1646 */ +#line 2452 "util/configparser.c" /* yacc.c:1646 */ break; - case 192: -#line 456 "./util/configparser.y" /* yacc.c:1646 */ + case 193: +#line 457 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2457,11 +2460,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2461 "util/configparser.c" /* yacc.c:1646 */ +#line 2464 "util/configparser.c" /* yacc.c:1646 */ break; - case 193: -#line 465 "./util/configparser.y" /* yacc.c:1646 */ + case 194: +#line 466 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2469,11 +2472,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2473 "util/configparser.c" /* yacc.c:1646 */ +#line 2476 "util/configparser.c" /* yacc.c:1646 */ break; - case 194: -#line 474 "./util/configparser.y" /* yacc.c:1646 */ + case 195: +#line 475 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2481,31 +2484,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2485 "util/configparser.c" /* yacc.c:1646 */ +#line 2488 "util/configparser.c" /* yacc.c:1646 */ break; - case 195: -#line 483 "./util/configparser.y" /* yacc.c:1646 */ + case 196: +#line 484 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 2495 "util/configparser.c" /* yacc.c:1646 */ +#line 2498 "util/configparser.c" /* yacc.c:1646 */ break; - case 196: -#line 490 "./util/configparser.y" /* yacc.c:1646 */ + case 197: +#line 491 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 2505 "util/configparser.c" /* yacc.c:1646 */ +#line 2508 "util/configparser.c" /* yacc.c:1646 */ break; - case 197: -#line 497 "./util/configparser.y" /* yacc.c:1646 */ + case 198: +#line 498 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2513,11 +2516,23 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2517 "util/configparser.c" /* yacc.c:1646 */ +#line 2520 "util/configparser.c" /* yacc.c:1646 */ break; - case 198: -#line 506 "./util/configparser.y" /* yacc.c:1646 */ + case 199: +#line 507 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 2532 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 200: +#line 516 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2525,11 +2540,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2529 "util/configparser.c" /* yacc.c:1646 */ +#line 2544 "util/configparser.c" /* yacc.c:1646 */ break; - case 199: -#line 515 "./util/configparser.y" /* yacc.c:1646 */ + case 201: +#line 525 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2542,11 +2557,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2546 "util/configparser.c" /* yacc.c:1646 */ +#line 2561 "util/configparser.c" /* yacc.c:1646 */ break; - case 200: -#line 529 "./util/configparser.y" /* yacc.c:1646 */ + case 202: +#line 539 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2554,11 +2569,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2558 "util/configparser.c" /* yacc.c:1646 */ +#line 2573 "util/configparser.c" /* yacc.c:1646 */ break; - case 201: -#line 538 "./util/configparser.y" /* yacc.c:1646 */ + case 203: +#line 548 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2566,31 +2581,31 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2570 "util/configparser.c" /* yacc.c:1646 */ +#line 2585 "util/configparser.c" /* yacc.c:1646 */ break; - case 202: -#line 547 "./util/configparser.y" /* yacc.c:1646 */ + case 204: +#line 557 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 2580 "util/configparser.c" /* yacc.c:1646 */ +#line 2595 "util/configparser.c" /* yacc.c:1646 */ break; - case 203: -#line 554 "./util/configparser.y" /* yacc.c:1646 */ + case 205: +#line 564 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 2590 "util/configparser.c" /* yacc.c:1646 */ +#line 2605 "util/configparser.c" /* yacc.c:1646 */ break; - case 204: -#line 561 "./util/configparser.y" /* yacc.c:1646 */ + case 206: +#line 571 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -2613,115 +2628,115 @@ yyreduce: d, strerror(errno)); } } -#line 2617 "util/configparser.c" /* yacc.c:1646 */ +#line 2632 "util/configparser.c" /* yacc.c:1646 */ break; - case 205: -#line 585 "./util/configparser.y" /* yacc.c:1646 */ + case 207: +#line 595 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->logfile); cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 2628 "util/configparser.c" /* yacc.c:1646 */ +#line 2643 "util/configparser.c" /* yacc.c:1646 */ break; - case 206: -#line 593 "./util/configparser.y" /* yacc.c:1646 */ + case 208: +#line 603 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 2638 "util/configparser.c" /* yacc.c:1646 */ +#line 2653 "util/configparser.c" /* yacc.c:1646 */ break; - case 207: -#line 600 "./util/configparser.y" /* yacc.c:1646 */ + case 209: +#line 610 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 2648 "util/configparser.c" /* yacc.c:1646 */ +#line 2663 "util/configparser.c" /* yacc.c:1646 */ break; - case 208: -#line 607 "./util/configparser.y" /* yacc.c:1646 */ + case 210: +#line 617 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dlv_anchor_file); cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str); } -#line 2658 "util/configparser.c" /* yacc.c:1646 */ +#line 2673 "util/configparser.c" /* yacc.c:1646 */ break; - case 209: -#line 614 "./util/configparser.y" /* yacc.c:1646 */ + case 211: +#line 624 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 2668 "util/configparser.c" /* yacc.c:1646 */ +#line 2683 "util/configparser.c" /* yacc.c:1646 */ break; - case 210: -#line 621 "./util/configparser.y" /* yacc.c:1646 */ + case 212: +#line 631 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 2679 "util/configparser.c" /* yacc.c:1646 */ +#line 2694 "util/configparser.c" /* yacc.c:1646 */ break; - case 211: -#line 629 "./util/configparser.y" /* yacc.c:1646 */ + case 213: +#line 639 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 2690 "util/configparser.c" /* yacc.c:1646 */ +#line 2705 "util/configparser.c" /* yacc.c:1646 */ break; - case 212: -#line 637 "./util/configparser.y" /* yacc.c:1646 */ + case 214: +#line 647 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 2701 "util/configparser.c" /* yacc.c:1646 */ +#line 2716 "util/configparser.c" /* yacc.c:1646 */ break; - case 213: -#line 645 "./util/configparser.y" /* yacc.c:1646 */ + case 215: +#line 655 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 2711 "util/configparser.c" /* yacc.c:1646 */ +#line 2726 "util/configparser.c" /* yacc.c:1646 */ break; - case 214: -#line 652 "./util/configparser.y" /* yacc.c:1646 */ + case 216: +#line 662 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 2721 "util/configparser.c" /* yacc.c:1646 */ +#line 2736 "util/configparser.c" /* yacc.c:1646 */ break; - case 215: -#line 659 "./util/configparser.y" /* yacc.c:1646 */ + case 217: +#line 669 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2729,11 +2744,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2733 "util/configparser.c" /* yacc.c:1646 */ +#line 2748 "util/configparser.c" /* yacc.c:1646 */ break; - case 216: -#line 668 "./util/configparser.y" /* yacc.c:1646 */ + case 218: +#line 678 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2741,53 +2756,53 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2745 "util/configparser.c" /* yacc.c:1646 */ +#line 2760 "util/configparser.c" /* yacc.c:1646 */ break; - case 217: -#line 677 "./util/configparser.y" /* yacc.c:1646 */ + case 219: +#line 687 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 2755 "util/configparser.c" /* yacc.c:1646 */ +#line 2770 "util/configparser.c" /* yacc.c:1646 */ break; - case 218: -#line 684 "./util/configparser.y" /* yacc.c:1646 */ + case 220: +#line 694 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 2765 "util/configparser.c" /* yacc.c:1646 */ +#line 2780 "util/configparser.c" /* yacc.c:1646 */ break; - case 219: -#line 691 "./util/configparser.y" /* yacc.c:1646 */ + case 221: +#line 701 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 2776 "util/configparser.c" /* yacc.c:1646 */ +#line 2791 "util/configparser.c" /* yacc.c:1646 */ break; - case 220: -#line 699 "./util/configparser.y" /* yacc.c:1646 */ + case 222: +#line 709 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 2787 "util/configparser.c" /* yacc.c:1646 */ +#line 2802 "util/configparser.c" /* yacc.c:1646 */ break; - case 221: -#line 707 "./util/configparser.y" /* yacc.c:1646 */ + case 223: +#line 717 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2796,11 +2811,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2800 "util/configparser.c" /* yacc.c:1646 */ +#line 2815 "util/configparser.c" /* yacc.c:1646 */ break; - case 222: -#line 717 "./util/configparser.y" /* yacc.c:1646 */ + case 224: +#line 727 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2809,11 +2824,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2813 "util/configparser.c" /* yacc.c:1646 */ +#line 2828 "util/configparser.c" /* yacc.c:1646 */ break; - case 223: -#line 727 "./util/configparser.y" /* yacc.c:1646 */ + case 225: +#line 737 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2822,11 +2837,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2826 "util/configparser.c" /* yacc.c:1646 */ +#line 2841 "util/configparser.c" /* yacc.c:1646 */ break; - case 224: -#line 737 "./util/configparser.y" /* yacc.c:1646 */ + case 226: +#line 747 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2838,11 +2853,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2842 "util/configparser.c" /* yacc.c:1646 */ +#line 2857 "util/configparser.c" /* yacc.c:1646 */ break; - case 225: -#line 750 "./util/configparser.y" /* yacc.c:1646 */ + case 227: +#line 760 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2852,22 +2867,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2856 "util/configparser.c" /* yacc.c:1646 */ +#line 2871 "util/configparser.c" /* yacc.c:1646 */ break; - case 226: -#line 761 "./util/configparser.y" /* yacc.c:1646 */ + case 228: +#line 771 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 2867 "util/configparser.c" /* yacc.c:1646 */ +#line 2882 "util/configparser.c" /* yacc.c:1646 */ break; - case 227: -#line 769 "./util/configparser.y" /* yacc.c:1646 */ + case 229: +#line 779 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2879,11 +2894,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 2883 "util/configparser.c" /* yacc.c:1646 */ +#line 2898 "util/configparser.c" /* yacc.c:1646 */ break; - case 228: -#line 782 "./util/configparser.y" /* yacc.c:1646 */ + case 230: +#line 792 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2891,11 +2906,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2895 "util/configparser.c" /* yacc.c:1646 */ +#line 2910 "util/configparser.c" /* yacc.c:1646 */ break; - case 229: -#line 791 "./util/configparser.y" /* yacc.c:1646 */ + case 231: +#line 801 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2903,11 +2918,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2907 "util/configparser.c" /* yacc.c:1646 */ +#line 2922 "util/configparser.c" /* yacc.c:1646 */ break; - case 230: -#line 800 "./util/configparser.y" /* yacc.c:1646 */ + case 232: +#line 810 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2915,11 +2930,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2919 "util/configparser.c" /* yacc.c:1646 */ +#line 2934 "util/configparser.c" /* yacc.c:1646 */ break; - case 231: -#line 809 "./util/configparser.y" /* yacc.c:1646 */ + case 233: +#line 819 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2928,11 +2943,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2932 "util/configparser.c" /* yacc.c:1646 */ +#line 2947 "util/configparser.c" /* yacc.c:1646 */ break; - case 232: -#line 819 "./util/configparser.y" /* yacc.c:1646 */ + case 234: +#line 829 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2941,22 +2956,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2945 "util/configparser.c" /* yacc.c:1646 */ +#line 2960 "util/configparser.c" /* yacc.c:1646 */ break; - case 233: -#line 829 "./util/configparser.y" /* yacc.c:1646 */ + case 235: +#line 839 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 2956 "util/configparser.c" /* yacc.c:1646 */ +#line 2971 "util/configparser.c" /* yacc.c:1646 */ break; - case 234: -#line 837 "./util/configparser.y" /* yacc.c:1646 */ + case 236: +#line 847 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2968,11 +2983,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 2972 "util/configparser.c" /* yacc.c:1646 */ +#line 2987 "util/configparser.c" /* yacc.c:1646 */ break; - case 235: -#line 850 "./util/configparser.y" /* yacc.c:1646 */ + case 237: +#line 860 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2980,22 +2995,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2984 "util/configparser.c" /* yacc.c:1646 */ +#line 2999 "util/configparser.c" /* yacc.c:1646 */ break; - case 236: -#line 859 "./util/configparser.y" /* yacc.c:1646 */ + case 238: +#line 869 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2995 "util/configparser.c" /* yacc.c:1646 */ +#line 3010 "util/configparser.c" /* yacc.c:1646 */ break; - case 237: -#line 867 "./util/configparser.y" /* yacc.c:1646 */ + case 239: +#line 877 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3003,22 +3018,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3007 "util/configparser.c" /* yacc.c:1646 */ +#line 3022 "util/configparser.c" /* yacc.c:1646 */ break; - case 238: -#line 876 "./util/configparser.y" /* yacc.c:1646 */ + case 240: +#line 886 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3018 "util/configparser.c" /* yacc.c:1646 */ +#line 3033 "util/configparser.c" /* yacc.c:1646 */ break; - case 239: -#line 884 "./util/configparser.y" /* yacc.c:1646 */ + case 241: +#line 894 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3030,11 +3045,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3034 "util/configparser.c" /* yacc.c:1646 */ +#line 3049 "util/configparser.c" /* yacc.c:1646 */ break; - case 240: -#line 897 "./util/configparser.y" /* yacc.c:1646 */ + case 242: +#line 907 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3042,21 +3057,21 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3046 "util/configparser.c" /* yacc.c:1646 */ +#line 3061 "util/configparser.c" /* yacc.c:1646 */ break; - case 241: -#line 906 "./util/configparser.y" /* yacc.c:1646 */ + case 243: +#line 916 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 3056 "util/configparser.c" /* yacc.c:1646 */ +#line 3071 "util/configparser.c" /* yacc.c:1646 */ break; - case 242: -#line 913 "./util/configparser.y" /* yacc.c:1646 */ + case 244: +#line 923 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3065,11 +3080,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3069 "util/configparser.c" /* yacc.c:1646 */ +#line 3084 "util/configparser.c" /* yacc.c:1646 */ break; - case 243: -#line 923 "./util/configparser.y" /* yacc.c:1646 */ + case 245: +#line 933 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3078,11 +3093,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3082 "util/configparser.c" /* yacc.c:1646 */ +#line 3097 "util/configparser.c" /* yacc.c:1646 */ break; - case 244: -#line 933 "./util/configparser.y" /* yacc.c:1646 */ + case 246: +#line 943 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3091,11 +3106,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3095 "util/configparser.c" /* yacc.c:1646 */ +#line 3110 "util/configparser.c" /* yacc.c:1646 */ break; - case 245: -#line 943 "./util/configparser.y" /* yacc.c:1646 */ + case 247: +#line 953 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3104,11 +3119,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3108 "util/configparser.c" /* yacc.c:1646 */ +#line 3123 "util/configparser.c" /* yacc.c:1646 */ break; - case 246: -#line 953 "./util/configparser.y" /* yacc.c:1646 */ + case 248: +#line 963 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3117,11 +3132,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3121 "util/configparser.c" /* yacc.c:1646 */ +#line 3136 "util/configparser.c" /* yacc.c:1646 */ break; - case 247: -#line 963 "./util/configparser.y" /* yacc.c:1646 */ + case 249: +#line 973 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3130,11 +3145,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3134 "util/configparser.c" /* yacc.c:1646 */ +#line 3149 "util/configparser.c" /* yacc.c:1646 */ break; - case 248: -#line 973 "./util/configparser.y" /* yacc.c:1646 */ + case 250: +#line 983 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3143,11 +3158,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3147 "util/configparser.c" /* yacc.c:1646 */ +#line 3162 "util/configparser.c" /* yacc.c:1646 */ break; - case 249: -#line 983 "./util/configparser.y" /* yacc.c:1646 */ + case 251: +#line 993 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3156,41 +3171,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3160 "util/configparser.c" /* yacc.c:1646 */ +#line 3175 "util/configparser.c" /* yacc.c:1646 */ break; - case 250: -#line 993 "./util/configparser.y" /* yacc.c:1646 */ + case 252: +#line 1003 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3170 "util/configparser.c" /* yacc.c:1646 */ +#line 3185 "util/configparser.c" /* yacc.c:1646 */ break; - case 251: -#line 1000 "./util/configparser.y" /* yacc.c:1646 */ + case 253: +#line 1010 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3180 "util/configparser.c" /* yacc.c:1646 */ +#line 3195 "util/configparser.c" /* yacc.c:1646 */ break; - case 252: -#line 1007 "./util/configparser.y" /* yacc.c:1646 */ + case 254: +#line 1017 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3190 "util/configparser.c" /* yacc.c:1646 */ +#line 3205 "util/configparser.c" /* yacc.c:1646 */ break; - case 253: -#line 1014 "./util/configparser.y" /* yacc.c:1646 */ + case 255: +#line 1024 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3198,11 +3213,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3202 "util/configparser.c" /* yacc.c:1646 */ +#line 3217 "util/configparser.c" /* yacc.c:1646 */ break; - case 254: -#line 1023 "./util/configparser.y" /* yacc.c:1646 */ + case 256: +#line 1033 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3210,11 +3225,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3214 "util/configparser.c" /* yacc.c:1646 */ +#line 3229 "util/configparser.c" /* yacc.c:1646 */ break; - case 255: -#line 1032 "./util/configparser.y" /* yacc.c:1646 */ + case 257: +#line 1042 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3222,21 +3237,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3226 "util/configparser.c" /* yacc.c:1646 */ +#line 3241 "util/configparser.c" /* yacc.c:1646 */ break; - case 256: -#line 1041 "./util/configparser.y" /* yacc.c:1646 */ + case 258: +#line 1051 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3236 "util/configparser.c" /* yacc.c:1646 */ +#line 3251 "util/configparser.c" /* yacc.c:1646 */ break; - case 257: -#line 1048 "./util/configparser.y" /* yacc.c:1646 */ + case 259: +#line 1058 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3245,11 +3260,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3249 "util/configparser.c" /* yacc.c:1646 */ +#line 3264 "util/configparser.c" /* yacc.c:1646 */ break; - case 258: -#line 1058 "./util/configparser.y" /* yacc.c:1646 */ + case 260: +#line 1068 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && @@ -3265,21 +3280,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 3269 "util/configparser.c" /* yacc.c:1646 */ +#line 3284 "util/configparser.c" /* yacc.c:1646 */ break; - case 259: -#line 1075 "./util/configparser.y" /* yacc.c:1646 */ + case 261: +#line 1085 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 3279 "util/configparser.c" /* yacc.c:1646 */ +#line 3294 "util/configparser.c" /* yacc.c:1646 */ break; - case 260: -#line 1082 "./util/configparser.y" /* yacc.c:1646 */ + case 262: +#line 1092 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -3296,11 +3311,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3300 "util/configparser.c" /* yacc.c:1646 */ +#line 3315 "util/configparser.c" /* yacc.c:1646 */ break; - case 261: -#line 1100 "./util/configparser.y" /* yacc.c:1646 */ + case 263: +#line 1110 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -3312,11 +3327,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3316 "util/configparser.c" /* yacc.c:1646 */ +#line 3331 "util/configparser.c" /* yacc.c:1646 */ break; - case 262: -#line 1113 "./util/configparser.y" /* yacc.c:1646 */ + case 264: +#line 1123 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -3328,11 +3343,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3332 "util/configparser.c" /* yacc.c:1646 */ +#line 3347 "util/configparser.c" /* yacc.c:1646 */ break; - case 263: -#line 1126 "./util/configparser.y" /* yacc.c:1646 */ + case 265: +#line 1136 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3340,11 +3355,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3344 "util/configparser.c" /* yacc.c:1646 */ +#line 3359 "util/configparser.c" /* yacc.c:1646 */ break; - case 264: -#line 1135 "./util/configparser.y" /* yacc.c:1646 */ + case 266: +#line 1145 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3352,11 +3367,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3356 "util/configparser.c" /* yacc.c:1646 */ +#line 3371 "util/configparser.c" /* yacc.c:1646 */ break; - case 265: -#line 1144 "./util/configparser.y" /* yacc.c:1646 */ + case 267: +#line 1154 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3364,11 +3379,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3368 "util/configparser.c" /* yacc.c:1646 */ +#line 3383 "util/configparser.c" /* yacc.c:1646 */ break; - case 266: -#line 1153 "./util/configparser.y" /* yacc.c:1646 */ + case 268: +#line 1163 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3376,11 +3391,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3380 "util/configparser.c" /* yacc.c:1646 */ +#line 3395 "util/configparser.c" /* yacc.c:1646 */ break; - case 267: -#line 1162 "./util/configparser.y" /* yacc.c:1646 */ + case 269: +#line 1172 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3389,11 +3404,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3393 "util/configparser.c" /* yacc.c:1646 */ +#line 3408 "util/configparser.c" /* yacc.c:1646 */ break; - case 268: -#line 1172 "./util/configparser.y" /* yacc.c:1646 */ + case 270: +#line 1182 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3402,11 +3417,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3406 "util/configparser.c" /* yacc.c:1646 */ +#line 3421 "util/configparser.c" /* yacc.c:1646 */ break; - case 269: -#line 1182 "./util/configparser.y" /* yacc.c:1646 */ + case 271: +#line 1192 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3414,11 +3429,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3418 "util/configparser.c" /* yacc.c:1646 */ +#line 3433 "util/configparser.c" /* yacc.c:1646 */ break; - case 270: -#line 1191 "./util/configparser.y" /* yacc.c:1646 */ + case 272: +#line 1201 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3426,11 +3441,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3430 "util/configparser.c" /* yacc.c:1646 */ +#line 3445 "util/configparser.c" /* yacc.c:1646 */ break; - case 271: -#line 1200 "./util/configparser.y" /* yacc.c:1646 */ + case 273: +#line 1210 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3442,11 +3457,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3446 "util/configparser.c" /* yacc.c:1646 */ +#line 3461 "util/configparser.c" /* yacc.c:1646 */ break; - case 272: -#line 1213 "./util/configparser.y" /* yacc.c:1646 */ + case 274: +#line 1223 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3454,21 +3469,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3458 "util/configparser.c" /* yacc.c:1646 */ +#line 3473 "util/configparser.c" /* yacc.c:1646 */ break; - case 273: -#line 1222 "./util/configparser.y" /* yacc.c:1646 */ + case 275: +#line 1232 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 3468 "util/configparser.c" /* yacc.c:1646 */ +#line 3483 "util/configparser.c" /* yacc.c:1646 */ break; - case 274: -#line 1229 "./util/configparser.y" /* yacc.c:1646 */ + case 276: +#line 1239 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3476,11 +3491,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3480 "util/configparser.c" /* yacc.c:1646 */ +#line 3495 "util/configparser.c" /* yacc.c:1646 */ break; - case 275: -#line 1238 "./util/configparser.y" /* yacc.c:1646 */ + case 277: +#line 1248 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3488,11 +3503,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3492 "util/configparser.c" /* yacc.c:1646 */ +#line 3507 "util/configparser.c" /* yacc.c:1646 */ break; - case 276: -#line 1247 "./util/configparser.y" /* yacc.c:1646 */ + case 278: +#line 1257 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3500,11 +3515,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3504 "util/configparser.c" /* yacc.c:1646 */ +#line 3519 "util/configparser.c" /* yacc.c:1646 */ break; - case 277: -#line 1256 "./util/configparser.y" /* yacc.c:1646 */ + case 279: +#line 1266 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3513,22 +3528,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3517 "util/configparser.c" /* yacc.c:1646 */ +#line 3532 "util/configparser.c" /* yacc.c:1646 */ break; - case 278: -#line 1265 "./util/configparser.y" /* yacc.c:1646 */ + case 280: +#line 1275 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3528 "util/configparser.c" /* yacc.c:1646 */ +#line 3543 "util/configparser.c" /* yacc.c:1646 */ break; - case 279: -#line 1273 "./util/configparser.y" /* yacc.c:1646 */ + case 281: +#line 1283 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3540,22 +3555,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3544 "util/configparser.c" /* yacc.c:1646 */ +#line 3559 "util/configparser.c" /* yacc.c:1646 */ break; - case 280: -#line 1286 "./util/configparser.y" /* yacc.c:1646 */ + case 282: +#line 1296 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3555 "util/configparser.c" /* yacc.c:1646 */ +#line 3570 "util/configparser.c" /* yacc.c:1646 */ break; - case 281: -#line 1294 "./util/configparser.y" /* yacc.c:1646 */ + case 283: +#line 1304 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -3582,21 +3597,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 3586 "util/configparser.c" /* yacc.c:1646 */ +#line 3601 "util/configparser.c" /* yacc.c:1646 */ break; - case 282: -#line 1322 "./util/configparser.y" /* yacc.c:1646 */ + case 284: +#line 1332 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 3596 "util/configparser.c" /* yacc.c:1646 */ +#line 3611 "util/configparser.c" /* yacc.c:1646 */ break; - case 283: -#line 1329 "./util/configparser.y" /* yacc.c:1646 */ + case 285: +#line 1339 "./util/configparser.y" /* yacc.c:1646 */ { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -3610,11 +3625,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 3614 "util/configparser.c" /* yacc.c:1646 */ +#line 3629 "util/configparser.c" /* yacc.c:1646 */ break; - case 284: -#line 1344 "./util/configparser.y" /* yacc.c:1646 */ + case 286: +#line 1354 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3623,11 +3638,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3627 "util/configparser.c" /* yacc.c:1646 */ +#line 3642 "util/configparser.c" /* yacc.c:1646 */ break; - case 285: -#line 1354 "./util/configparser.y" /* yacc.c:1646 */ + case 287: +#line 1364 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3636,31 +3651,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3640 "util/configparser.c" /* yacc.c:1646 */ +#line 3655 "util/configparser.c" /* yacc.c:1646 */ break; - case 286: -#line 1364 "./util/configparser.y" /* yacc.c:1646 */ + case 288: +#line 1374 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3650 "util/configparser.c" /* yacc.c:1646 */ +#line 3665 "util/configparser.c" /* yacc.c:1646 */ break; - case 287: -#line 1371 "./util/configparser.y" /* yacc.c:1646 */ + case 289: +#line 1381 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 3660 "util/configparser.c" /* yacc.c:1646 */ +#line 3675 "util/configparser.c" /* yacc.c:1646 */ break; - case 288: -#line 1378 "./util/configparser.y" /* yacc.c:1646 */ + case 290: +#line 1388 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3668,11 +3683,11 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3672 "util/configparser.c" /* yacc.c:1646 */ +#line 3687 "util/configparser.c" /* yacc.c:1646 */ break; - case 289: -#line 1387 "./util/configparser.y" /* yacc.c:1646 */ + case 291: +#line 1397 "./util/configparser.y" /* yacc.c:1646 */ { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -3685,11 +3700,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3689 "util/configparser.c" /* yacc.c:1646 */ +#line 3704 "util/configparser.c" /* yacc.c:1646 */ break; - case 290: -#line 1401 "./util/configparser.y" /* yacc.c:1646 */ + case 292: +#line 1411 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -3707,11 +3722,11 @@ yyreduce: } } } -#line 3711 "util/configparser.c" /* yacc.c:1646 */ +#line 3726 "util/configparser.c" /* yacc.c:1646 */ break; - case 291: -#line 1420 "./util/configparser.y" /* yacc.c:1646 */ + case 293: +#line 1430 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -3729,11 +3744,11 @@ yyreduce: } } } -#line 3733 "util/configparser.c" /* yacc.c:1646 */ +#line 3748 "util/configparser.c" /* yacc.c:1646 */ break; - case 292: -#line 1439 "./util/configparser.y" /* yacc.c:1646 */ + case 294: +#line 1449 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, @@ -3744,11 +3759,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 3748 "util/configparser.c" /* yacc.c:1646 */ +#line 3763 "util/configparser.c" /* yacc.c:1646 */ break; - case 293: -#line 1451 "./util/configparser.y" /* yacc.c:1646 */ + case 295: +#line 1461 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, @@ -3759,11 +3774,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 3763 "util/configparser.c" /* yacc.c:1646 */ +#line 3778 "util/configparser.c" /* yacc.c:1646 */ break; - case 294: -#line 1463 "./util/configparser.y" /* yacc.c:1646 */ + case 296: +#line 1473 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, @@ -3774,11 +3789,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 3778 "util/configparser.c" /* yacc.c:1646 */ +#line 3793 "util/configparser.c" /* yacc.c:1646 */ break; - case 295: -#line 1475 "./util/configparser.y" /* yacc.c:1646 */ + case 297: +#line 1485 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, @@ -3788,11 +3803,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 3792 "util/configparser.c" /* yacc.c:1646 */ +#line 3807 "util/configparser.c" /* yacc.c:1646 */ break; - case 296: -#line 1486 "./util/configparser.y" /* yacc.c:1646 */ + case 298: +#line 1496 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3800,22 +3815,22 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3804 "util/configparser.c" /* yacc.c:1646 */ +#line 3819 "util/configparser.c" /* yacc.c:1646 */ break; - case 297: -#line 1495 "./util/configparser.y" /* yacc.c:1646 */ + case 299: +#line 1505 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3815 "util/configparser.c" /* yacc.c:1646 */ +#line 3830 "util/configparser.c" /* yacc.c:1646 */ break; - case 298: -#line 1503 "./util/configparser.y" /* yacc.c:1646 */ + case 300: +#line 1513 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3827,11 +3842,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3831 "util/configparser.c" /* yacc.c:1646 */ +#line 3846 "util/configparser.c" /* yacc.c:1646 */ break; - case 299: -#line 1516 "./util/configparser.y" /* yacc.c:1646 */ + case 301: +#line 1526 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -3843,11 +3858,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 3847 "util/configparser.c" /* yacc.c:1646 */ +#line 3862 "util/configparser.c" /* yacc.c:1646 */ break; - case 300: -#line 1529 "./util/configparser.y" /* yacc.c:1646 */ + case 302: +#line 1539 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -3859,11 +3874,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 3863 "util/configparser.c" /* yacc.c:1646 */ +#line 3878 "util/configparser.c" /* yacc.c:1646 */ break; - case 301: -#line 1542 "./util/configparser.y" /* yacc.c:1646 */ + case 303: +#line 1552 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3871,11 +3886,11 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3875 "util/configparser.c" /* yacc.c:1646 */ +#line 3890 "util/configparser.c" /* yacc.c:1646 */ break; - case 302: -#line 1551 "./util/configparser.y" /* yacc.c:1646 */ + case 304: +#line 1561 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3884,11 +3899,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3888 "util/configparser.c" /* yacc.c:1646 */ +#line 3903 "util/configparser.c" /* yacc.c:1646 */ break; - case 303: -#line 1561 "./util/configparser.y" /* yacc.c:1646 */ + case 305: +#line 1571 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3897,11 +3912,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3901 "util/configparser.c" /* yacc.c:1646 */ +#line 3916 "util/configparser.c" /* yacc.c:1646 */ break; - case 304: -#line 1571 "./util/configparser.y" /* yacc.c:1646 */ + case 306: +#line 1581 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -3910,31 +3925,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 3914 "util/configparser.c" /* yacc.c:1646 */ +#line 3929 "util/configparser.c" /* yacc.c:1646 */ break; - case 305: -#line 1581 "./util/configparser.y" /* yacc.c:1646 */ + case 307: +#line 1591 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3924 "util/configparser.c" /* yacc.c:1646 */ +#line 3939 "util/configparser.c" /* yacc.c:1646 */ break; - case 306: -#line 1588 "./util/configparser.y" /* yacc.c:1646 */ + case 308: +#line 1598 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3934 "util/configparser.c" /* yacc.c:1646 */ +#line 3949 "util/configparser.c" /* yacc.c:1646 */ break; - case 307: -#line 1595 "./util/configparser.y" /* yacc.c:1646 */ + case 309: +#line 1605 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3942,11 +3957,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3946 "util/configparser.c" /* yacc.c:1646 */ +#line 3961 "util/configparser.c" /* yacc.c:1646 */ break; - case 308: -#line 1604 "./util/configparser.y" /* yacc.c:1646 */ + case 310: +#line 1614 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3955,11 +3970,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3959 "util/configparser.c" /* yacc.c:1646 */ +#line 3974 "util/configparser.c" /* yacc.c:1646 */ break; - case 309: -#line 1614 "./util/configparser.y" /* yacc.c:1646 */ + case 311: +#line 1624 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3968,11 +3983,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3972 "util/configparser.c" /* yacc.c:1646 */ +#line 3987 "util/configparser.c" /* yacc.c:1646 */ break; - case 310: -#line 1624 "./util/configparser.y" /* yacc.c:1646 */ + case 312: +#line 1634 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -3981,31 +3996,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 3985 "util/configparser.c" /* yacc.c:1646 */ +#line 4000 "util/configparser.c" /* yacc.c:1646 */ break; - case 311: -#line 1634 "./util/configparser.y" /* yacc.c:1646 */ + case 313: +#line 1644 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3995 "util/configparser.c" /* yacc.c:1646 */ +#line 4010 "util/configparser.c" /* yacc.c:1646 */ break; - case 312: -#line 1641 "./util/configparser.y" /* yacc.c:1646 */ + case 314: +#line 1651 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4005 "util/configparser.c" /* yacc.c:1646 */ +#line 4020 "util/configparser.c" /* yacc.c:1646 */ break; - case 313: -#line 1648 "./util/configparser.y" /* yacc.c:1646 */ + case 315: +#line 1658 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4013,11 +4028,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4017 "util/configparser.c" /* yacc.c:1646 */ +#line 4032 "util/configparser.c" /* yacc.c:1646 */ break; - case 314: -#line 1657 "./util/configparser.y" /* yacc.c:1646 */ + case 316: +#line 1667 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4026,11 +4041,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4030 "util/configparser.c" /* yacc.c:1646 */ +#line 4045 "util/configparser.c" /* yacc.c:1646 */ break; - case 315: -#line 1667 "./util/configparser.y" /* yacc.c:1646 */ + case 317: +#line 1677 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -4039,11 +4054,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 4043 "util/configparser.c" /* yacc.c:1646 */ +#line 4058 "util/configparser.c" /* yacc.c:1646 */ break; - case 316: -#line 1677 "./util/configparser.y" /* yacc.c:1646 */ + case 318: +#line 1687 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -4071,11 +4086,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 4075 "util/configparser.c" /* yacc.c:1646 */ +#line 4090 "util/configparser.c" /* yacc.c:1646 */ break; - case 317: -#line 1706 "./util/configparser.y" /* yacc.c:1646 */ + case 319: +#line 1716 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { @@ -4083,11 +4098,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 4087 "util/configparser.c" /* yacc.c:1646 */ +#line 4102 "util/configparser.c" /* yacc.c:1646 */ break; - case 318: -#line 1715 "./util/configparser.y" /* yacc.c:1646 */ + case 320: +#line 1725 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4095,19 +4110,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4099 "util/configparser.c" /* yacc.c:1646 */ +#line 4114 "util/configparser.c" /* yacc.c:1646 */ break; - case 319: -#line 1724 "./util/configparser.y" /* yacc.c:1646 */ + case 321: +#line 1734 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(remote-control:)\n")); } -#line 4107 "util/configparser.c" /* yacc.c:1646 */ +#line 4122 "util/configparser.c" /* yacc.c:1646 */ break; - case 330: -#line 1735 "./util/configparser.y" /* yacc.c:1646 */ + case 332: +#line 1745 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4116,11 +4131,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4120 "util/configparser.c" /* yacc.c:1646 */ +#line 4135 "util/configparser.c" /* yacc.c:1646 */ break; - case 331: -#line 1745 "./util/configparser.y" /* yacc.c:1646 */ + case 333: +#line 1755 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4128,21 +4143,21 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4132 "util/configparser.c" /* yacc.c:1646 */ +#line 4147 "util/configparser.c" /* yacc.c:1646 */ break; - case 332: -#line 1754 "./util/configparser.y" /* yacc.c:1646 */ + case 334: +#line 1764 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4142 "util/configparser.c" /* yacc.c:1646 */ +#line 4157 "util/configparser.c" /* yacc.c:1646 */ break; - case 333: -#line 1761 "./util/configparser.y" /* yacc.c:1646 */ + case 335: +#line 1771 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4151,122 +4166,122 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4155 "util/configparser.c" /* yacc.c:1646 */ +#line 4170 "util/configparser.c" /* yacc.c:1646 */ break; - case 334: -#line 1771 "./util/configparser.y" /* yacc.c:1646 */ + case 336: +#line 1781 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 4165 "util/configparser.c" /* yacc.c:1646 */ +#line 4180 "util/configparser.c" /* yacc.c:1646 */ break; - case 335: -#line 1778 "./util/configparser.y" /* yacc.c:1646 */ + case 337: +#line 1788 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 4175 "util/configparser.c" /* yacc.c:1646 */ +#line 4190 "util/configparser.c" /* yacc.c:1646 */ break; - case 336: -#line 1785 "./util/configparser.y" /* yacc.c:1646 */ + case 338: +#line 1795 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 4185 "util/configparser.c" /* yacc.c:1646 */ +#line 4200 "util/configparser.c" /* yacc.c:1646 */ break; - case 337: -#line 1792 "./util/configparser.y" /* yacc.c:1646 */ + case 339: +#line 1802 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 4195 "util/configparser.c" /* yacc.c:1646 */ +#line 4210 "util/configparser.c" /* yacc.c:1646 */ break; - case 338: -#line 1799 "./util/configparser.y" /* yacc.c:1646 */ + case 340: +#line 1809 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dnstap:)\n")); } -#line 4203 "util/configparser.c" /* yacc.c:1646 */ +#line 4218 "util/configparser.c" /* yacc.c:1646 */ break; - case 353: -#line 1816 "./util/configparser.y" /* yacc.c:1646 */ + case 355: +#line 1826 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4214 "util/configparser.c" /* yacc.c:1646 */ +#line 4229 "util/configparser.c" /* yacc.c:1646 */ break; - case 354: -#line 1824 "./util/configparser.y" /* yacc.c:1646 */ + case 356: +#line 1834 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 4224 "util/configparser.c" /* yacc.c:1646 */ +#line 4239 "util/configparser.c" /* yacc.c:1646 */ break; - case 355: -#line 1831 "./util/configparser.y" /* yacc.c:1646 */ + case 357: +#line 1841 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4235 "util/configparser.c" /* yacc.c:1646 */ +#line 4250 "util/configparser.c" /* yacc.c:1646 */ break; - case 356: -#line 1839 "./util/configparser.y" /* yacc.c:1646 */ + case 358: +#line 1849 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4246 "util/configparser.c" /* yacc.c:1646 */ +#line 4261 "util/configparser.c" /* yacc.c:1646 */ break; - case 357: -#line 1847 "./util/configparser.y" /* yacc.c:1646 */ + case 359: +#line 1857 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 4256 "util/configparser.c" /* yacc.c:1646 */ +#line 4271 "util/configparser.c" /* yacc.c:1646 */ break; - case 358: -#line 1854 "./util/configparser.y" /* yacc.c:1646 */ + case 360: +#line 1864 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 4266 "util/configparser.c" /* yacc.c:1646 */ +#line 4281 "util/configparser.c" /* yacc.c:1646 */ break; - case 359: -#line 1861 "./util/configparser.y" /* yacc.c:1646 */ + case 361: +#line 1871 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4274,11 +4289,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_resolver_query_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4278 "util/configparser.c" /* yacc.c:1646 */ +#line 4293 "util/configparser.c" /* yacc.c:1646 */ break; - case 360: -#line 1870 "./util/configparser.y" /* yacc.c:1646 */ + case 362: +#line 1880 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4286,11 +4301,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_resolver_response_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4290 "util/configparser.c" /* yacc.c:1646 */ +#line 4305 "util/configparser.c" /* yacc.c:1646 */ break; - case 361: -#line 1879 "./util/configparser.y" /* yacc.c:1646 */ + case 363: +#line 1889 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4298,11 +4313,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_client_query_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4302 "util/configparser.c" /* yacc.c:1646 */ +#line 4317 "util/configparser.c" /* yacc.c:1646 */ break; - case 362: -#line 1888 "./util/configparser.y" /* yacc.c:1646 */ + case 364: +#line 1898 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4310,11 +4325,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_client_response_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4314 "util/configparser.c" /* yacc.c:1646 */ +#line 4329 "util/configparser.c" /* yacc.c:1646 */ break; - case 363: -#line 1897 "./util/configparser.y" /* yacc.c:1646 */ + case 365: +#line 1907 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4322,11 +4337,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_forwarder_query_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4326 "util/configparser.c" /* yacc.c:1646 */ +#line 4341 "util/configparser.c" /* yacc.c:1646 */ break; - case 364: -#line 1906 "./util/configparser.y" /* yacc.c:1646 */ + case 366: +#line 1916 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4334,29 +4349,29 @@ yyreduce: else cfg_parser->cfg->dnstap_log_forwarder_response_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4338 "util/configparser.c" /* yacc.c:1646 */ +#line 4353 "util/configparser.c" /* yacc.c:1646 */ break; - case 365: -#line 1915 "./util/configparser.y" /* yacc.c:1646 */ + case 367: +#line 1925 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(python:)\n")); } -#line 4346 "util/configparser.c" /* yacc.c:1646 */ +#line 4361 "util/configparser.c" /* yacc.c:1646 */ break; - case 369: -#line 1924 "./util/configparser.y" /* yacc.c:1646 */ + case 371: +#line 1934 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->python_script); cfg_parser->cfg->python_script = (yyvsp[0].str); } -#line 4356 "util/configparser.c" /* yacc.c:1646 */ +#line 4371 "util/configparser.c" /* yacc.c:1646 */ break; - case 370: -#line 1930 "./util/configparser.y" /* yacc.c:1646 */ + case 372: +#line 1940 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4365,21 +4380,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4369 "util/configparser.c" /* yacc.c:1646 */ +#line 4384 "util/configparser.c" /* yacc.c:1646 */ break; - case 371: -#line 1940 "./util/configparser.y" /* yacc.c:1646 */ + case 373: +#line 1950 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 4379 "util/configparser.c" /* yacc.c:1646 */ +#line 4394 "util/configparser.c" /* yacc.c:1646 */ break; -#line 4383 "util/configparser.c" /* yacc.c:1646 */ +#line 4398 "util/configparser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -4607,7 +4622,7 @@ yyreturn: #endif return yyresult; } -#line 1946 "./util/configparser.y" /* yacc.c:1906 */ +#line 1956 "./util/configparser.y" /* yacc.c:1906 */ /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 1e29666dd..d8e85a48c 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -225,7 +225,8 @@ extern int yydebug; VAR_VIEW_FIRST = 435, VAR_SERVE_EXPIRED = 436, VAR_FAKE_DSA = 437, - VAR_LOG_IDENTITY = 438 + VAR_LOG_IDENTITY = 438, + VAR_USE_SYSTEMD = 439 }; #endif /* Tokens. */ @@ -410,6 +411,7 @@ extern int yydebug; #define VAR_SERVE_EXPIRED 436 #define VAR_FAKE_DSA 437 #define VAR_LOG_IDENTITY 438 +#define VAR_USE_SYSTEMD 439 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -420,7 +422,7 @@ union YYSTYPE char* str; -#line 424 "util/configparser.h" /* yacc.c:1909 */ +#line 426 "util/configparser.h" /* yacc.c:1909 */ }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index 75be93914..9a19f92a1 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -132,6 +132,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_ACCESS_CONTROL_TAG_DATA VAR_VIEW VAR_ACCESS_CONTROL_VIEW %token VAR_VIEW_FIRST VAR_SERVE_EXPIRED VAR_FAKE_DSA %token VAR_LOG_IDENTITY +%token VAR_USE_SYSTEMD %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -206,7 +207,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_local_zone_override | server_access_control_tag_action | server_access_control_tag_data | server_access_control_view | server_qname_minimisation_strict | server_serve_expired | - server_fake_dsa | server_log_identity + server_fake_dsa | server_log_identity | server_use_systemd ; stubstart: VAR_STUB_ZONE { @@ -502,6 +503,15 @@ server_ssl_port: VAR_SSL_PORT STRING_ARG free($2); } ; +server_use_systemd: VAR_USE_SYSTEMD STRING_ARG + { + OUTYY(("P(server_use_systemd:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->use_systemd = (strcmp($2, "yes")==0); + free($2); + } + ; server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG { OUTYY(("P(server_do_daemonize:%s)\n", $2));