]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
Add the basic EDE (RFC8914) cases (#604)
authortcarpay <8014108+TCY16@users.noreply.github.com>
Fri, 6 May 2022 10:48:53 +0000 (12:48 +0200)
committerGitHub <noreply@github.com>
Fri, 6 May 2022 10:48:53 +0000 (12:48 +0200)
90 files changed:
Makefile.in
configure
daemon/worker.c
doc/example.conf.in
doc/unbound.conf.5.in
services/authzone.c
services/cache/dns.c
services/localzone.c
services/mesh.c
sldns/pkthdr.h
sldns/rrdef.h
sldns/wire2str.c
testcode/testpkts.c
testcode/testpkts.h
testcode/unitmsgparse.c
testcode/unitverify.c
testdata/autotrust_init_fail.rpl
testdata/autotrust_init_failsig.rpl
testdata/autotrust_probefail.rpl
testdata/autotrust_probefailsig.rpl
testdata/black_ds_entry.rpl
testdata/black_key_entry.rpl
testdata/black_prime_entry.rpl
testdata/ede.tdir/bogus/clean.sh [new file with mode: 0755]
testdata/ede.tdir/bogus/dnskey-failures.test [new file with mode: 0644]
testdata/ede.tdir/bogus/dnssec-failures.test [new file with mode: 0644]
testdata/ede.tdir/bogus/make-broken-zone.sh [new file with mode: 0755]
testdata/ede.tdir/bogus/nsec-failures.test [new file with mode: 0644]
testdata/ede.tdir/bogus/rrsig-failures.test [new file with mode: 0644]
testdata/ede.tdir/ede-auth.conf [new file with mode: 0644]
testdata/ede.tdir/ede.conf [new file with mode: 0644]
testdata/ede.tdir/ede.dsc [new file with mode: 0644]
testdata/ede.tdir/ede.post [new file with mode: 0644]
testdata/ede.tdir/ede.pre [new file with mode: 0644]
testdata/ede.tdir/ede.test [new file with mode: 0644]
testdata/ede_acl_refused.rpl [new file with mode: 0644]
testdata/ede_cache_snoop_noth_auth.rpl [new file with mode: 0644]
testdata/ede_localzone_dname_expansion.rpl [new file with mode: 0644]
testdata/edns_keepalive.rpl
testdata/nsid_bogus.rpl
testdata/root_key_sentinel.rpl
testdata/serve_expired.rpl
testdata/serve_expired_client_timeout.rpl
testdata/serve_expired_reply_ttl.rpl
testdata/serve_expired_servfail.rpl
testdata/serve_expired_zerottl.rpl
testdata/serve_original_ttl.rpl
testdata/val_cnametocloser_nosig.rpl
testdata/val_cnametonodata_nonsec.rpl
testdata/val_cnametoposnowc.rpl
testdata/val_deleg_nons.rpl
testdata/val_dnamewc.rpl
testdata/val_ds_cname.rpl
testdata/val_faildnskey.rpl
testdata/val_nodata_failsig.rpl
testdata/val_nodata_failwc.rpl
testdata/val_nokeyprime.rpl
testdata/val_nsec3_b1_nameerror_nowc.rpl
testdata/val_nsec3_b2_nodata_nons.rpl
testdata/val_nsec3_entnodata_optout_badopt.rpl
testdata/val_nsec3_nods_badsig.rpl
testdata/val_nx_failwc.rpl
testdata/val_nx_overreach.rpl
testdata/val_secds_nosig.rpl
testdata/val_ta_algo_missing.rpl
util/config_file.c
util/config_file.h
util/configlexer.c
util/configlexer.lex
util/configparser.c
util/configparser.h
util/configparser.y
util/data/msgparse.c
util/data/msgparse.h
util/data/msgreply.c
util/data/msgreply.h
util/module.c
util/module.h
validator/autotrust.c
validator/val_kcache.c
validator/val_kentry.c
validator/val_kentry.h
validator/val_nsec.c
validator/val_nsec3.c
validator/val_nsec3.h
validator/val_sigcrypt.c
validator/val_sigcrypt.h
validator/val_utils.c
validator/val_utils.h
validator/validator.c

index 7d9974e0099315aec63898849b0010371f0a0cd0..9438877990e5e7c567c3b7707a8cea7d8e0392b8 100644 (file)
@@ -344,7 +344,18 @@ longcheck: longtest
 test:  unittest$(EXEEXT) testbound$(EXEEXT)
        ./unittest$(EXEEXT)
        ./testbound$(EXEEXT) -s
-       for x in $(srcdir)/testdata/*.rpl; do printf "%s" "$$x "; if ./testbound$(EXEEXT) -p $$x >/dev/null 2>&1; then echo OK; else echo failed; exit 1; fi done
+       for x in $(srcdir)/testdata/*.rpl; do \
+               printf "%s" "$$x "; \
+               if ./testbound$(EXEEXT) -p $$x >/dev/null 2>&1; then \
+                       echo OK; \
+               else \
+                       echo failed; \
+                       ./testbound$(EXEEXT) -p $$x -o -vvvvv; \
+                       printf "%s" "$$x "; \
+                       echo failed; \
+                       exit 1; \
+               fi; \
+       done
        @echo test OK
 
 longtest:      tests
index ac79c9a813c6d2a0c954080329956424ca7ef3f7..1a9367f89b64ce0201756b638e05db46a62f5963 100755 (executable)
--- a/configure
+++ b/configure
@@ -5,7 +5,8 @@
 # Report bugs to <unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues>.
 #
 #
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
+# Inc.
 #
 #
 # This configure script is free software; the Free Software Foundation
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+as_nop=:
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
   emulate sh
   NULLCMD=:
   # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
-else
+else $as_nop
   case `(set -o) 2>/dev/null` in #(
   *posix*) :
     set -o posix ;; #(
@@ -33,46 +36,46 @@ esac
 fi
 
 
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
 as_nl='
 '
 export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-       expr "X$arg" : "X\\(.*\\)$as_nl";
-       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
+IFS=" ""       $as_nl"
+
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh).  This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2)            ; then :; else exec 2>/dev/null; fi
 
 # The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
+if ${PATH_SEPARATOR+false} :; then
   PATH_SEPARATOR=:
   (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
     (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
@@ -81,13 +84,6 @@ if test "${PATH_SEPARATOR+set}" != set; then
 fi
 
 
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""       $as_nl"
-
 # Find who we are.  Look in the path if we contain no directory separator.
 as_myself=
 case $0 in #((
@@ -96,8 +92,12 @@ case $0 in #((
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    test -r "$as_dir$0" && as_myself=$as_dir$0 && break
   done
 IFS=$as_save_IFS
 
@@ -109,30 +109,10 @@ if test "x$as_myself" = x; then
   as_myself=$0
 fi
 if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
   exit 1
 fi
 
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
 # Use a proper internal environment variable to ensure we don't fall
   # into an infinite loop, continuously re-executing ourselves.
@@ -154,20 +134,22 @@ esac
 exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
 # Admittedly, this is quite paranoid, since all the known shells bail
 # out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
   fi
   # We don't want this to propagate to other subprocesses.
           { _as_can_reexec=; unset _as_can_reexec;}
 if test "x$CONFIG_SHELL" = x; then
-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  as_bourne_compatible="as_nop=:
+if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
   emulate sh
   NULLCMD=:
   # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '\${1+\"\$@\"}'='\"\$@\"'
   setopt NO_GLOB_SUBST
-else
+else \$as_nop
   case \`(set -o) 2>/dev/null\` in #(
   *posix*) :
     set -o posix ;; #(
@@ -187,18 +169,20 @@ as_fn_success || { exitcode=1; echo as_fn_success failed.; }
 as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
 as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
 as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+if ( set x; as_fn_ret_success y && test x = \"\$1\" )
+then :
 
-else
+else \$as_nop
   exitcode=1; echo positional parameters were not saved.
 fi
 test x\$exitcode = x0 || exit 1
+blah=\$(echo \$(echo blah))
+test x\"\$blah\" = xblah || exit 1
 test -x / || exit 1"
   as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
   as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
   eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
   test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
-test \$(( 1 + 1 )) = 2 || exit 1
 
   test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
     ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
@@ -206,31 +190,40 @@ test \$(( 1 + 1 )) = 2 || exit 1
     ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
     PATH=/empty FPATH=/empty; export PATH FPATH
     test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
-      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1"
-  if (eval "$as_required") 2>/dev/null; then :
+      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null
+then :
   as_have_required=yes
-else
+else $as_nop
   as_have_required=no
 fi
-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null
+then :
 
-else
+else $as_nop
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 as_found=false
 for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
   as_found=:
   case $as_dir in #(
         /*)
           for as_base in sh bash ksh sh5; do
             # Try only shells that exist, to save several forks.
-            as_shell=$as_dir/$as_base
+            as_shell=$as_dir$as_base
             if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-                   { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+                   as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
   CONFIG_SHELL=$as_shell as_have_required=yes
-                  if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+                  if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null
+then :
   break 2
 fi
 fi
@@ -238,14 +231,21 @@ fi
        esac
   as_found=false
 done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
-             { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
-  CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
 IFS=$as_save_IFS
+if $as_found
+then :
+
+else $as_nop
+  if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+             as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi
+fi
 
 
-      if test "x$CONFIG_SHELL" != x; then :
+      if test "x$CONFIG_SHELL" != x
+then :
   export CONFIG_SHELL
              # We cannot yet assume a decent shell, so we have to provide a
 # neutralization value for shells without unset; and this also
@@ -263,18 +263,19 @@ esac
 exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
 # Admittedly, this is quite paranoid, since all the known shells bail
 # out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
 exit 255
 fi
 
-    if test x$as_have_required = xno; then :
-  $as_echo "$0: This script requires a shell more modern than all"
-  $as_echo "$0: the shells that I found on your system."
-  if test x${ZSH_VERSION+set} = xset ; then
-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+    if test x$as_have_required = xno
+then :
+  printf "%s\n" "$0: This script requires a shell more modern than all"
+  printf "%s\n" "$0: the shells that I found on your system."
+  if test ${ZSH_VERSION+y} ; then
+    printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later."
   else
-    $as_echo "$0: Please tell bug-autoconf@gnu.org and
+    printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and
 $0: unbound-bugs@nlnetlabs.nl or
 $0: https://github.com/NLnetLabs/unbound/issues about your
 $0: system, including any error possibly output before this
@@ -303,6 +304,7 @@ as_fn_unset ()
 }
 as_unset=as_fn_unset
 
+
 # as_fn_set_status STATUS
 # -----------------------
 # Set $? to STATUS, without forking.
@@ -320,6 +322,14 @@ as_fn_exit ()
   as_fn_set_status $1
   exit $1
 } # as_fn_exit
+# as_fn_nop
+# ---------
+# Do nothing but, unlike ":", preserve the value of $?.
+as_fn_nop ()
+{
+  return $?
+}
+as_nop=as_fn_nop
 
 # as_fn_mkdir_p
 # -------------
@@ -334,7 +344,7 @@ as_fn_mkdir_p ()
     as_dirs=
     while :; do
       case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
       *) as_qdir=$as_dir;;
       esac
       as_dirs="'$as_qdir' $as_dirs"
@@ -343,7 +353,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
         X"$as_dir" : 'X\(//\)[^/]' \| \
         X"$as_dir" : 'X\(//\)$' \| \
         X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+printf "%s\n" X"$as_dir" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
            s//\1/
            q
@@ -382,12 +392,13 @@ as_fn_executable_p ()
 # advantage of any shell optimizations that allow amortized linear growth over
 # repeated appends, instead of the typical quadratic growth present in naive
 # implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
   eval 'as_fn_append ()
   {
     eval $1+=\$2
   }'
-else
+else $as_nop
   as_fn_append ()
   {
     eval $1=\$$1\$2
@@ -399,18 +410,27 @@ fi # as_fn_append
 # Perform arithmetic evaluation on the ARGs, and store the result in the
 # global $as_val. Take advantage of shells that can avoid forks. The arguments
 # must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
   eval 'as_fn_arith ()
   {
     as_val=$(( $* ))
   }'
-else
+else $as_nop
   as_fn_arith ()
   {
     as_val=`expr "$@" || test $? -eq 1`
   }
 fi # as_fn_arith
 
+# as_fn_nop
+# ---------
+# Do nothing but, unlike ":", preserve the value of $?.
+as_fn_nop ()
+{
+  return $?
+}
+as_nop=as_fn_nop
 
 # as_fn_error STATUS ERROR [LINENO LOG_FD]
 # ----------------------------------------
@@ -422,9 +442,9 @@ as_fn_error ()
   as_status=$1; test $as_status -eq 0 && as_status=1
   if test "$4"; then
     as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
   fi
-  $as_echo "$as_me: error: $2" >&2
+  printf "%s\n" "$as_me: error: $2" >&2
   as_fn_exit $as_status
 } # as_fn_error
 
@@ -451,7 +471,7 @@ as_me=`$as_basename -- "$0" ||
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
         X"$0" : 'X\(//\)$' \| \
         X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+printf "%s\n" X/"$0" |
     sed '/^.*\/\([^/][^/]*\)\/*$/{
            s//\1/
            q
@@ -495,7 +515,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
       s/-\n.*//
     ' >$as_me.lineno &&
   chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+    { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
 
   # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
   # already done that, so ensure we don't try to do so again and fall
@@ -509,6 +529,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
   exit
 }
 
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
 ECHO_C= ECHO_N= ECHO_T=
 case `echo -n x` in #(((((
 -n*)
@@ -522,6 +546,13 @@ case `echo -n x` in #(((((
   ECHO_N='-n';;
 esac
 
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n.  New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
+
 rm -f conf$$ conf$$.exe conf$$.file
 if test -d conf$$.dir; then
   rm -f conf$$.dir/conf$$.file
@@ -598,40 +629,37 @@ PACKAGE_URL=''
 
 # Factoring default headers for most tests.
 ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
+#include <stddef.h>
+#ifdef HAVE_STDIO_H
+# include <stdio.h>
 #endif
-#ifdef STDC_HEADERS
+#ifdef HAVE_STDLIB_H
 # include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
-# endif
 #endif
 #ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-#  include <memory.h>
-# endif
 # include <string.h>
 #endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
 #ifdef HAVE_INTTYPES_H
 # include <inttypes.h>
 #endif
 #ifdef HAVE_STDINT_H
 # include <stdint.h>
 #endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
 #ifdef HAVE_UNISTD_H
 # include <unistd.h>
 #endif"
 
+ac_header_c_list=
+ac_func_c_list=
 ac_subst_vars='LTLIBOBJS
 date
 version
@@ -724,6 +752,7 @@ SYSTEMD_LIBS
 SYSTEMD_CFLAGS
 RUNTIME_PATH
 LIBOBJS
+CPP
 PKG_CONFIG_LIBDIR
 PKG_CONFIG_PATH
 PKG_CONFIG
@@ -745,6 +774,8 @@ ac_ct_DUMPBIN
 DUMPBIN
 LD
 FGREP
+EGREP
+GREP
 SED
 LIBTOOL
 AR
@@ -778,9 +809,6 @@ ub_conf_file
 UNBOUND_LOCALSTATE_DIR
 UNBOUND_SYSCONF_DIR
 UNBOUND_SBIN_DIR
-EGREP
-GREP
-CPP
 OBJEXT
 EXEEXT
 ac_ct_CC
@@ -915,13 +943,13 @@ CFLAGS
 LDFLAGS
 LIBS
 CPPFLAGS
-CPP
 YACC
 YFLAGS
 LT_SYS_LIBRARY_PATH
 PKG_CONFIG
 PKG_CONFIG_PATH
 PKG_CONFIG_LIBDIR
+CPP
 SYSTEMD_CFLAGS
 SYSTEMD_LIBS
 SYSTEMD_DAEMON_CFLAGS
@@ -995,8 +1023,6 @@ do
   *)    ac_optarg=yes ;;
   esac
 
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
   case $ac_dashdash$ac_option in
   --)
     ac_dashdash=yes ;;
@@ -1037,9 +1063,9 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
+      as_fn_error $? "invalid feature name: \`$ac_useropt'"
     ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
       *"
 "enable_$ac_useropt"
@@ -1063,9 +1089,9 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
+      as_fn_error $? "invalid feature name: \`$ac_useropt'"
     ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
       *"
 "enable_$ac_useropt"
@@ -1276,9 +1302,9 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
+      as_fn_error $? "invalid package name: \`$ac_useropt'"
     ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
       *"
 "with_$ac_useropt"
@@ -1292,9 +1318,9 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
+      as_fn_error $? "invalid package name: \`$ac_useropt'"
     ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
       *"
 "with_$ac_useropt"
@@ -1338,9 +1364,9 @@ Try \`$0 --help' for more information"
 
   *)
     # FIXME: should be removed in autoconf 3.0.
-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2
     expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+      printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2
     : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
     ;;
 
@@ -1356,7 +1382,7 @@ if test -n "$ac_unrecognized_opts"; then
   case $enable_option_checking in
     no) ;;
     fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+    *)     printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
   esac
 fi
 
@@ -1420,7 +1446,7 @@ $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
         X"$as_myself" : 'X\(//\)[^/]' \| \
         X"$as_myself" : 'X\(//\)$' \| \
         X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
+printf "%s\n" X"$as_myself" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
            s//\1/
            q
@@ -1692,7 +1718,6 @@ Some influential environment variables:
   LIBS        libraries to pass to the linker, e.g. -l<library>
   CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
               you have headers in a nonstandard directory <include dir>
-  CPP         C preprocessor
   YACC        The `Yet Another Compiler Compiler' implementation to use.
               Defaults to the first program found out of: `bison -y', `byacc',
               `yacc'.
@@ -1706,6 +1731,7 @@ Some influential environment variables:
               directories to add to pkg-config's search path
   PKG_CONFIG_LIBDIR
               path overriding pkg-config's built-in search path
+  CPP         C preprocessor
   SYSTEMD_CFLAGS
               C compiler flags for SYSTEMD, overriding pkg-config
   SYSTEMD_LIBS
@@ -1738,9 +1764,9 @@ if test "$ac_init_help" = "recursive"; then
 case "$ac_dir" in
 .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
 *)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
   # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
   case $ac_top_builddir_sub in
   "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
   *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -1768,7 +1794,8 @@ esac
 ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
 
     cd "$ac_dir" || { ac_status=$?; continue; }
-    # Check for guested configure.
+    # Check for configure.gnu first; this name is used for a wrapper for
+    # Metaconfig's "Configure" on case-insensitive file systems.
     if test -f "$ac_srcdir/configure.gnu"; then
       echo &&
       $SHELL "$ac_srcdir/configure.gnu" --help=recursive
@@ -1776,7 +1803,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
       echo &&
       $SHELL "$ac_srcdir/configure" --help=recursive
     else
-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+      printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2
     fi || ac_status=$?
     cd "$ac_pwd" || { ac_status=$?; break; }
   done
@@ -1788,7 +1815,7 @@ if $ac_init_version; then
 unbound configure 1.15.1
 generated by GNU Autoconf 2.69
 
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2021 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
@@ -1805,14 +1832,14 @@ fi
 ac_fn_c_try_compile ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
+  rm -f conftest.$ac_objext conftest.beam
   if { { ac_try="$ac_compile"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$ac_compile") 2>conftest.err
   ac_status=$?
   if test -s conftest.err; then
@@ -1820,14 +1847,15 @@ $as_echo "$ac_try_echo"; } >&5
     cat conftest.er1 >&5
     mv -f conftest.er1 conftest.err
   fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; } && {
         test -z "$ac_c_werror_flag" ||
         test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
+       } && test -s conftest.$ac_objext
+then :
   ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+  printf "%s\n" "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
        ac_retval=1
@@ -1837,176 +1865,6 @@ fi
 
 } # ac_fn_c_try_compile
 
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_cpp ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } > conftest.i && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-    ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_cpp
-
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if eval \${$3+:} false; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_header_compiler=yes
-else
-  ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  ac_header_preproc=yes
-else
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
-  yes:no: )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## --------------------------------------------------------------------------------------- ##
-## Report this to unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues ##
-## --------------------------------------------------------------------------------------- ##"
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_mongrel
-
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-       $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=$ac_status
-fi
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_run
-
 # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
 # -------------------------------------------------------
 # Tests whether HEADER exists and can be compiled using the include files in
@@ -2014,26 +1872,28 @@ fi
 ac_fn_c_check_header_compile ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
 #include <$2>
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   eval "$3=yes"
-else
+else $as_nop
   eval "$3=no"
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+              { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
 } # ac_fn_c_check_header_compile
@@ -2044,14 +1904,14 @@ $as_echo "$ac_res" >&6; }
 ac_fn_c_try_link ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
+  rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext
   if { { ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$ac_link") 2>conftest.err
   ac_status=$?
   if test -s conftest.err; then
@@ -2059,17 +1919,18 @@ $as_echo "$ac_try_echo"; } >&5
     cat conftest.er1 >&5
     mv -f conftest.er1 conftest.err
   fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; } && {
         test -z "$ac_c_werror_flag" ||
         test ! -s conftest.err
        } && test -s conftest$ac_exeext && {
         test "$cross_compiling" = yes ||
         test -x conftest$ac_exeext
-       }; then :
+       }
+then :
   ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+  printf "%s\n" "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
        ac_retval=1
@@ -2090,11 +1951,12 @@ fi
 ac_fn_c_check_func ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 /* Define $2 to an innocuous variant, in case <limits.h> declares $2.
@@ -2102,16 +1964,9 @@ else
 #define $2 innocuous_$2
 
 /* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $2 (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+   which can conflict with char $2 (); below.  */
 
+#include <limits.h>
 #undef $2
 
 /* Override any GCC internal prototype to avoid an error.
@@ -2129,24 +1984,25 @@ choke me
 #endif
 
 int
-main ()
+main (void)
 {
 return $2 ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   eval "$3=yes"
-else
+else $as_nop
   eval "$3=no"
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 fi
 eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+              { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
 } # ac_fn_c_check_func
@@ -2158,17 +2014,18 @@ $as_echo "$ac_res" >&6; }
 ac_fn_c_check_type ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   eval "$3=no"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
 int
-main ()
+main (void)
 {
 if (sizeof ($2))
         return 0;
@@ -2176,12 +2033,13 @@ if (sizeof ($2))
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
 int
-main ()
+main (void)
 {
 if (sizeof (($2)))
            return 0;
@@ -2189,66 +2047,150 @@ if (sizeof (($2)))
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
 
-else
+else $as_nop
   eval "$3=yes"
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+              { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
 } # ac_fn_c_check_type
 
-# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
-# --------------------------------------------
-# Tries to find the compile-time value of EXPR in a program that includes
-# INCLUDES, setting VAR accordingly. Returns whether the value could be
-# computed
-ac_fn_c_compute_int ()
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if test "$cross_compiling" = yes; then
-    # Depending upon the size, compute the lo and hi bounds.
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) >= 0)];
-test_array [0] = 0;
-return test_array [0];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_lo=0 ac_mid=0
-  while :; do
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }
+then :
+  ac_retval=0
+else $as_nop
+  printf "%s\n" "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that
+# executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }
+then :
+  ac_retval=0
+else $as_nop
+  printf "%s\n" "$as_me: program exited with status $ac_status" >&5
+       printf "%s\n" "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
+# --------------------------------------------
+# Tries to find the compile-time value of EXPR in a program that includes
+# INCLUDES, setting VAR accordingly. Returns whether the value could be
+# computed
+ac_fn_c_compute_int ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if test "$cross_compiling" = yes; then
+    # Depending upon the size, compute the lo and hi bounds.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main (void)
+{
+static int test_array [1 - 2 * !(($2) >= 0)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main (void)
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_hi=$ac_mid; break
-else
+else $as_nop
   as_fn_arith $ac_mid + 1 && ac_lo=$as_val
                        if test $ac_lo -le $ac_mid; then
                          ac_lo= ac_hi=
@@ -2256,14 +2198,14 @@ else
                        fi
                        as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   done
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
 int
-main ()
+main (void)
 {
 static int test_array [1 - 2 * !(($2) < 0)];
 test_array [0] = 0;
@@ -2273,14 +2215,15 @@ return test_array [0];
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_hi=-1 ac_mid=-1
   while :; do
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
 int
-main ()
+main (void)
 {
 static int test_array [1 - 2 * !(($2) >= $ac_mid)];
 test_array [0] = 0;
@@ -2290,9 +2233,10 @@ return test_array [0];
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_lo=$ac_mid; break
-else
+else $as_nop
   as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
                        if test $ac_mid -le $ac_hi; then
                          ac_lo= ac_hi=
@@ -2300,14 +2244,14 @@ else
                        fi
                        as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   done
-else
+else $as_nop
   ac_lo= ac_hi=
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 # Binary search between lo and hi bounds.
 while test "x$ac_lo" != "x$ac_hi"; do
   as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
@@ -2315,7 +2259,7 @@ while test "x$ac_lo" != "x$ac_hi"; do
 /* end confdefs.h.  */
 $4
 int
-main ()
+main (void)
 {
 static int test_array [1 - 2 * !(($2) <= $ac_mid)];
 test_array [0] = 0;
@@ -2325,12 +2269,13 @@ return test_array [0];
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_hi=$ac_mid
-else
+else $as_nop
   as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 done
 case $ac_lo in #((
 ?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
@@ -2340,12 +2285,12 @@ esac
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
-static long int longval () { return $2; }
-static unsigned long int ulongval () { return $2; }
+static long int longval (void) { return $2; }
+static unsigned long int ulongval (void) { return $2; }
 #include <stdio.h>
 #include <stdlib.h>
 int
-main ()
+main (void)
 {
 
   FILE *f = fopen ("conftest.val", "w");
@@ -2373,9 +2318,10 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
   echo >>conftest.val; read $3 <conftest.val; ac_retval=0
-else
+else $as_nop
   ac_retval=1
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -2388,25 +2334,28 @@ rm -f conftest.val
 
 } # ac_fn_c_compute_int
 
-# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
-# ---------------------------------------------
+# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR
+# ------------------------------------------------------------------
 # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
-# accordingly.
-ac_fn_c_check_decl ()
+# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR.
+ac_fn_check_decl ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
   as_decl_name=`echo $2|sed 's/ *(.*//'`
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+printf %s "checking whether $as_decl_name is declared... " >&6; }
+if eval test \${$3+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
-$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  eval ac_save_FLAGS=\$$6
+  as_fn_append $6 " $5"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
 int
-main ()
+main (void)
 {
 #ifndef $as_decl_name
 #ifdef __cplusplus
@@ -2420,19 +2369,22 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   eval "$3=yes"
-else
+else $as_nop
   eval "$3=no"
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+  eval $6=\$ac_save_FLAGS
+
 fi
 eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+              { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_decl
+} # ac_fn_check_decl
 
 # ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
 # ----------------------------------------------------
@@ -2441,16 +2393,17 @@ $as_echo "$ac_res" >&6; }
 ac_fn_c_check_member ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
-$as_echo_n "checking for $2.$3... " >&6; }
-if eval \${$4+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
+printf %s "checking for $2.$3... " >&6; }
+if eval test \${$4+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $5
 int
-main ()
+main (void)
 {
 static $2 ac_aggr;
 if (ac_aggr.$3)
@@ -2459,14 +2412,15 @@ return 0;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   eval "$4=yes"
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $5
 int
-main ()
+main (void)
 {
 static $2 ac_aggr;
 if (sizeof ac_aggr.$3)
@@ -2475,21 +2429,42 @@ return 0;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   eval "$4=yes"
-else
+else $as_nop
   eval "$4=no"
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 eval ac_res=\$$4
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+              { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
 } # ac_fn_c_check_member
+ac_configure_args_raw=
+for ac_arg
+do
+  case $ac_arg in
+  *\'*)
+    ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+  esac
+  as_fn_append ac_configure_args_raw " '$ac_arg'"
+done
+
+case $ac_configure_args_raw in
+  *$as_nl*)
+    ac_safe_unquote= ;;
+  *)
+    ac_unsafe_z='|&;<>()$`\\"*?[ ''    ' # This string ends in space, tab.
+    ac_unsafe_a="$ac_unsafe_z#~"
+    ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g"
+    ac_configure_args_raw=`      printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;;
+esac
+
 cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
@@ -2497,7 +2472,7 @@ running configure, to aid debugging if configure makes a mistake.
 It was created by unbound $as_me 1.15.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
-  $ $0 $@
+  $ $0$ac_configure_args_raw
 
 _ACEOF
 exec 5>>config.log
@@ -2530,8 +2505,12 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    $as_echo "PATH: $as_dir"
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    printf "%s\n" "PATH: $as_dir"
   done
 IFS=$as_save_IFS
 
@@ -2566,7 +2545,7 @@ do
     | -silent | --silent | --silen | --sile | --sil)
       continue ;;
     *\'*)
-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+      ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
     esac
     case $ac_pass in
     1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
@@ -2601,11 +2580,13 @@ done
 # WARNING: Use '\'' to represent an apostrophe within the trap.
 # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
 trap 'exit_status=$?
+  # Sanitize IFS.
+  IFS=" ""     $as_nl"
   # Save into config.log some information that might help in debugging.
   {
     echo
 
-    $as_echo "## ---------------- ##
+    printf "%s\n" "## ---------------- ##
 ## Cache variables. ##
 ## ---------------- ##"
     echo
@@ -2616,8 +2597,8 @@ trap 'exit_status=$?
     case $ac_val in #(
     *${as_nl}*)
       case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       esac
       case $ac_var in #(
       _ | IFS | as_nl) ;; #(
@@ -2641,7 +2622,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
 )
     echo
 
-    $as_echo "## ----------------- ##
+    printf "%s\n" "## ----------------- ##
 ## Output variables. ##
 ## ----------------- ##"
     echo
@@ -2649,14 +2630,14 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
     do
       eval ac_val=\$$ac_var
       case $ac_val in
-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
       esac
-      $as_echo "$ac_var='\''$ac_val'\''"
+      printf "%s\n" "$ac_var='\''$ac_val'\''"
     done | sort
     echo
 
     if test -n "$ac_subst_files"; then
-      $as_echo "## ------------------- ##
+      printf "%s\n" "## ------------------- ##
 ## File substitutions. ##
 ## ------------------- ##"
       echo
@@ -2664,15 +2645,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       do
        eval ac_val=\$$ac_var
        case $ac_val in
-       *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+       *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
        esac
-       $as_echo "$ac_var='\''$ac_val'\''"
+       printf "%s\n" "$ac_var='\''$ac_val'\''"
       done | sort
       echo
     fi
 
     if test -s confdefs.h; then
-      $as_echo "## ----------- ##
+      printf "%s\n" "## ----------- ##
 ## confdefs.h. ##
 ## ----------- ##"
       echo
@@ -2680,8 +2661,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       echo
     fi
     test "$ac_signal" != 0 &&
-      $as_echo "$as_me: caught signal $ac_signal"
-    $as_echo "$as_me: exit $exit_status"
+      printf "%s\n" "$as_me: caught signal $ac_signal"
+    printf "%s\n" "$as_me: exit $exit_status"
   } >&5
   rm -f core *.core core.conftest.* &&
     rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
@@ -2695,63 +2676,48 @@ ac_signal=0
 # confdefs.h avoids OS command line length limits that DEFS can exceed.
 rm -f -r conftest* confdefs.h
 
-$as_echo "/* confdefs.h */" > confdefs.h
+printf "%s\n" "/* confdefs.h */" > confdefs.h
 
 # Predefined preprocessor variables.
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
+printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
+printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
+printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
+printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
+printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
+printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h
 
 
 # Let the site file select an alternate cache file if it wants to.
 # Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
 if test -n "$CONFIG_SITE"; then
-  # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in #((
-    -*)  ac_site_file1=./$CONFIG_SITE;;
-    */*) ac_site_file1=$CONFIG_SITE;;
-    *)   ac_site_file1=./$CONFIG_SITE;;
-  esac
+  ac_site_files="$CONFIG_SITE"
 elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
+  ac_site_files="$prefix/share/config.site $prefix/etc/config.site"
 else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
+  ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
 fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+
+for ac_site_file in $ac_site_files
 do
-  test "x$ac_site_file" = xNONE && continue
-  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+  case $ac_site_file in #(
+  */*) :
+     ;; #(
+  *) :
+    ac_site_file=./$ac_site_file ;;
+esac
+  if test -f "$ac_site_file" && test -r "$ac_site_file"; then
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;}
     sed 's/^/| /' "$ac_site_file" >&5
     . "$ac_site_file" \
-      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+      || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "failed to load site script $ac_site_file
 See \`config.log' for more details" "$LINENO" 5; }
   fi
@@ -2761,19 +2727,439 @@ if test -r "$cache_file"; then
   # Some versions of bash will fail to source /dev/null (special files
   # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
   if test /dev/null != "$cache_file" && test -f "$cache_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+printf "%s\n" "$as_me: loading cache $cache_file" >&6;}
     case $cache_file in
       [\\/]* | ?:[\\/]* ) . "$cache_file";;
       *)                      . "./$cache_file";;
     esac
   fi
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+printf "%s\n" "$as_me: creating cache $cache_file" >&6;}
   >$cache_file
 fi
 
+as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H"
+# Test code for whether the C compiler supports C89 (global declarations)
+ac_c_conftest_c89_globals='
+/* Does the compiler advertise C89 conformance?
+   Do not test the value of __STDC__, because some compilers set it to 0
+   while being otherwise adequately conformant. */
+#if !defined __STDC__
+# error "Compiler does not advertise C89 conformance"
+#endif
+
+#include <stddef.h>
+#include <stdarg.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7 src/conf.sh.  */
+struct buf { int x; };
+struct buf * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not \xHH hex character constants.
+   These do not provoke an error unfortunately, instead are silently treated
+   as an "x".  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously \x00 != x always comes out true, for an
+   array size at least.  It is necessary to write \x00 == 0 to get something
+   that is true only with -std.  */
+int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) '\''x'\''
+int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int),
+               int, int);'
+
+# Test code for whether the C compiler supports C89 (body of main).
+ac_c_conftest_c89_main='
+ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]);
+'
+
+# Test code for whether the C compiler supports C99 (global declarations)
+ac_c_conftest_c99_globals='
+// Does the compiler advertise C99 conformance?
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L
+# error "Compiler does not advertise C99 conformance"
+#endif
+
+#include <stdbool.h>
+extern int puts (const char *);
+extern int printf (const char *, ...);
+extern int dprintf (int, const char *, ...);
+extern void *malloc (size_t);
+
+// Check varargs macros.  These examples are taken from C99 6.10.3.5.
+// dprintf is used instead of fprintf to avoid needing to declare
+// FILE and stderr.
+#define debug(...) dprintf (2, __VA_ARGS__)
+#define showlist(...) puts (#__VA_ARGS__)
+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
+static void
+test_varargs_macros (void)
+{
+  int x = 1234;
+  int y = 5678;
+  debug ("Flag");
+  debug ("X = %d\n", x);
+  showlist (The first, second, and third items.);
+  report (x>y, "x is %d but y is %d", x, y);
+}
+
+// Check long long types.
+#define BIG64 18446744073709551615ull
+#define BIG32 4294967295ul
+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
+#if !BIG_OK
+  #error "your preprocessor is broken"
+#endif
+#if BIG_OK
+#else
+  #error "your preprocessor is broken"
+#endif
+static long long int bignum = -9223372036854775807LL;
+static unsigned long long int ubignum = BIG64;
+
+struct incomplete_array
+{
+  int datasize;
+  double data[];
+};
+
+struct named_init {
+  int number;
+  const wchar_t *name;
+  double average;
+};
+
+typedef const char *ccp;
+
+static inline int
+test_restrict (ccp restrict text)
+{
+  // See if C++-style comments work.
+  // Iterate through items via the restricted pointer.
+  // Also check for declarations in for loops.
+  for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i)
+    continue;
+  return 0;
+}
+
+// Check varargs and va_copy.
+static bool
+test_varargs (const char *format, ...)
+{
+  va_list args;
+  va_start (args, format);
+  va_list args_copy;
+  va_copy (args_copy, args);
+
+  const char *str = "";
+  int number = 0;
+  float fnumber = 0;
+
+  while (*format)
+    {
+      switch (*format++)
+       {
+       case '\''s'\'': // string
+         str = va_arg (args_copy, const char *);
+         break;
+       case '\''d'\'': // int
+         number = va_arg (args_copy, int);
+         break;
+       case '\''f'\'': // float
+         fnumber = va_arg (args_copy, double);
+         break;
+       default:
+         break;
+       }
+    }
+  va_end (args_copy);
+  va_end (args);
+
+  return *str && number && fnumber;
+}
+'
+
+# Test code for whether the C compiler supports C99 (body of main).
+ac_c_conftest_c99_main='
+  // Check bool.
+  _Bool success = false;
+  success |= (argc != 0);
+
+  // Check restrict.
+  if (test_restrict ("String literal") == 0)
+    success = true;
+  char *restrict newvar = "Another string";
+
+  // Check varargs.
+  success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234);
+  test_varargs_macros ();
+
+  // Check flexible array members.
+  struct incomplete_array *ia =
+    malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+  ia->datasize = 10;
+  for (int i = 0; i < ia->datasize; ++i)
+    ia->data[i] = i * 1.234;
+
+  // Check named initializers.
+  struct named_init ni = {
+    .number = 34,
+    .name = L"Test wide string",
+    .average = 543.34343,
+  };
+
+  ni.number = 58;
+
+  int dynamic_array[ni.number];
+  dynamic_array[0] = argv[0][0];
+  dynamic_array[ni.number - 1] = 543;
+
+  // work around unused variable warnings
+  ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\''
+        || dynamic_array[ni.number - 1] != 543);
+'
+
+# Test code for whether the C compiler supports C11 (global declarations)
+ac_c_conftest_c11_globals='
+// Does the compiler advertise C11 conformance?
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L
+# error "Compiler does not advertise C11 conformance"
+#endif
+
+// Check _Alignas.
+char _Alignas (double) aligned_as_double;
+char _Alignas (0) no_special_alignment;
+extern char aligned_as_int;
+char _Alignas (0) _Alignas (int) aligned_as_int;
+
+// Check _Alignof.
+enum
+{
+  int_alignment = _Alignof (int),
+  int_array_alignment = _Alignof (int[100]),
+  char_alignment = _Alignof (char)
+};
+_Static_assert (0 < -_Alignof (int), "_Alignof is signed");
+
+// Check _Noreturn.
+int _Noreturn does_not_return (void) { for (;;) continue; }
+
+// Check _Static_assert.
+struct test_static_assert
+{
+  int x;
+  _Static_assert (sizeof (int) <= sizeof (long int),
+                  "_Static_assert does not work in struct");
+  long int y;
+};
+
+// Check UTF-8 literals.
+#define u8 syntax error!
+char const utf8_literal[] = u8"happens to be ASCII" "another string";
+
+// Check duplicate typedefs.
+typedef long *long_ptr;
+typedef long int *long_ptr;
+typedef long_ptr long_ptr;
+
+// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1.
+struct anonymous
+{
+  union {
+    struct { int i; int j; };
+    struct { int k; long int l; } w;
+  };
+  int m;
+} v1;
+'
+
+# Test code for whether the C compiler supports C11 (body of main).
+ac_c_conftest_c11_main='
+  _Static_assert ((offsetof (struct anonymous, i)
+                  == offsetof (struct anonymous, w.k)),
+                 "Anonymous union alignment botch");
+  v1.i = 2;
+  v1.w.k = 5;
+  ok |= v1.i != 5;
+'
+
+# Test code for whether the C compiler supports C11 (complete).
+ac_c_conftest_c11_program="${ac_c_conftest_c89_globals}
+${ac_c_conftest_c99_globals}
+${ac_c_conftest_c11_globals}
+
+int
+main (int argc, char **argv)
+{
+  int ok = 0;
+  ${ac_c_conftest_c89_main}
+  ${ac_c_conftest_c99_main}
+  ${ac_c_conftest_c11_main}
+  return ok;
+}
+"
+
+# Test code for whether the C compiler supports C99 (complete).
+ac_c_conftest_c99_program="${ac_c_conftest_c89_globals}
+${ac_c_conftest_c99_globals}
+
+int
+main (int argc, char **argv)
+{
+  int ok = 0;
+  ${ac_c_conftest_c89_main}
+  ${ac_c_conftest_c99_main}
+  return ok;
+}
+"
+
+# Test code for whether the C compiler supports C89 (complete).
+ac_c_conftest_c89_program="${ac_c_conftest_c89_globals}
+
+int
+main (int argc, char **argv)
+{
+  int ok = 0;
+  ${ac_c_conftest_c89_main}
+  return ok;
+}
+"
+
+as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H"
+as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H"
+as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H"
+as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H"
+as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H"
+as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H"
+as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H"
+as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H"
+as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H"
+as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H"
+as_fn_append ac_header_c_list " vfork.h vfork_h HAVE_VFORK_H"
+as_fn_append ac_func_c_list " fork HAVE_FORK"
+as_fn_append ac_func_c_list " vfork HAVE_VFORK"
+
+# Auxiliary files required by this configure script.
+ac_aux_files="ltmain.sh config.guess config.sub"
+
+# Locations in which to look for auxiliary files.
+ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.."
+
+# Search for a directory containing all of the required auxiliary files,
+# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates.
+# If we don't find one directory that contains all the files we need,
+# we report the set of missing files from the *first* directory in
+# $ac_aux_dir_candidates and give up.
+ac_missing_aux_files=""
+ac_first_candidate=:
+printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in $ac_aux_dir_candidates
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+  as_found=:
+
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}:  trying $as_dir" >&5
+  ac_aux_dir_found=yes
+  ac_install_sh=
+  for ac_aux in $ac_aux_files
+  do
+    # As a special case, if "install-sh" is required, that requirement
+    # can be satisfied by any of "install-sh", "install.sh", or "shtool",
+    # and $ac_install_sh is set appropriately for whichever one is found.
+    if test x"$ac_aux" = x"install-sh"
+    then
+      if test -f "${as_dir}install-sh"; then
+        printf "%s\n" "$as_me:${as_lineno-$LINENO}:   ${as_dir}install-sh found" >&5
+        ac_install_sh="${as_dir}install-sh -c"
+      elif test -f "${as_dir}install.sh"; then
+        printf "%s\n" "$as_me:${as_lineno-$LINENO}:   ${as_dir}install.sh found" >&5
+        ac_install_sh="${as_dir}install.sh -c"
+      elif test -f "${as_dir}shtool"; then
+        printf "%s\n" "$as_me:${as_lineno-$LINENO}:   ${as_dir}shtool found" >&5
+        ac_install_sh="${as_dir}shtool install -c"
+      else
+        ac_aux_dir_found=no
+        if $ac_first_candidate; then
+          ac_missing_aux_files="${ac_missing_aux_files} install-sh"
+        else
+          break
+        fi
+      fi
+    else
+      if test -f "${as_dir}${ac_aux}"; then
+        printf "%s\n" "$as_me:${as_lineno-$LINENO}:   ${as_dir}${ac_aux} found" >&5
+      else
+        ac_aux_dir_found=no
+        if $ac_first_candidate; then
+          ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}"
+        else
+          break
+        fi
+      fi
+    fi
+  done
+  if test "$ac_aux_dir_found" = yes; then
+    ac_aux_dir="$as_dir"
+    break
+  fi
+  ac_first_candidate=false
+
+  as_found=false
+done
+IFS=$as_save_IFS
+if $as_found
+then :
+
+else $as_nop
+  as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5
+fi
+
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+if test -f "${ac_aux_dir}config.guess"; then
+  ac_config_guess="$SHELL ${ac_aux_dir}config.guess"
+fi
+if test -f "${ac_aux_dir}config.sub"; then
+  ac_config_sub="$SHELL ${ac_aux_dir}config.sub"
+fi
+if test -f "$ac_aux_dir/configure"; then
+  ac_configure="$SHELL ${ac_aux_dir}configure"
+fi
+
 # Check that the precious variables saved in the cache have kept the same
 # value.
 ac_cache_corrupted=false
@@ -2784,12 +3170,12 @@ for ac_var in $ac_precious_vars; do
   eval ac_new_val=\$ac_env_${ac_var}_value
   case $ac_old_set,$ac_new_set in
     set,)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,set)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,);;
     *)
@@ -2798,24 +3184,24 @@ $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
        ac_old_val_w=`echo x $ac_old_val`
        ac_new_val_w=`echo x $ac_new_val`
        if test "$ac_old_val_w" != "$ac_new_val_w"; then
-         { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
          ac_cache_corrupted=:
        else
-         { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
          eval $ac_var=\$ac_old_val
        fi
-       { $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-       { $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+printf "%s\n" "$as_me:   former value:  \`$ac_old_val'" >&2;}
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+printf "%s\n" "$as_me:   current value: \`$ac_new_val'" >&2;}
       fi;;
   esac
   # Pass precious variables to config.status.
   if test "$ac_new_set" = set; then
     case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
     *) ac_arg=$ac_var=$ac_new_val ;;
     esac
     case " $ac_configure_args " in
@@ -2825,11 +3211,12 @@ $as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
   fi
 done
 if $ac_cache_corrupted; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file'
+           and start over" "$LINENO" 5
 fi
 ## -------------------- ##
 ## Main body of script. ##
@@ -2960,25 +3347,33 @@ LIBUNBOUND_AGE=1
 
 cmdln="`echo $@ | sed -e 's/\\\\/\\\\\\\\/g' | sed -e 's/"/\\\\"/'g`"
 
-cat >>confdefs.h <<_ACEOF
-#define CONFCMDLINE "$cmdln"
-_ACEOF
+printf "%s\n" "#define CONFCMDLINE \"$cmdln\"" >>confdefs.h
 
 
 CFLAGS="$CFLAGS"
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}gcc; 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_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
@@ -2986,11 +3381,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -3001,11 +3400,11 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -3014,11 +3413,12 @@ if test -z "$ac_cv_prog_CC"; then
   ac_ct_CC=$CC
   # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; 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_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$ac_ct_CC"; then
   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
 else
@@ -3026,11 +3426,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -3041,11 +3445,11 @@ fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
   if test "x$ac_ct_CC" = x; then
@@ -3053,8 +3457,8 @@ fi
   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;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     CC=$ac_ct_CC
@@ -3067,11 +3471,12 @@ if test -z "$CC"; then
           if test -n "$ac_tool_prefix"; then
     # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}cc; 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_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
@@ -3079,11 +3484,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -3094,11 +3503,11 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -3107,11 +3516,12 @@ fi
 if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; 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_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
@@ -3120,15 +3530,19 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
        ac_prog_rejected=yes
        continue
      fi
     ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -3144,18 +3558,18 @@ if test $ac_prog_rejected = yes; then
     # However, it has the same basename, so the bogon will be chosen
     # first if we set CC to just the basename; use the full file name.
     shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+    ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@"
   fi
 fi
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -3166,11 +3580,12 @@ if test -z "$CC"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; 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_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
@@ -3178,11 +3593,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -3193,11 +3612,11 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -3210,11 +3629,12 @@ if test -z "$CC"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; 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_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$ac_ct_CC"; then
   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
 else
@@ -3222,11 +3642,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -3237,11 +3661,11 @@ fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -3253,8 +3677,8 @@ done
   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;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     CC=$ac_ct_CC
@@ -3262,25 +3686,129 @@ esac
 fi
 
 fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args.
+set dummy ${ac_tool_prefix}clang; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}clang"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "clang", so it can be a program name with args.
+set dummy clang; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="clang"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
 
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+fi
+
+
+test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "no acceptable C compiler found in \$PATH
 See \`config.log' for more details" "$LINENO" 5; }
 
 # Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
 set X $ac_compile
 ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
+for ac_option in --version -v -V -qversion -version; do
   { { ac_try="$ac_compiler $ac_option >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$ac_compiler $ac_option >&5") 2>conftest.err
   ac_status=$?
   if test -s conftest.err; then
@@ -3290,7 +3818,7 @@ $as_echo "$ac_try_echo"; } >&5
     cat conftest.er1 >&5
   fi
   rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }
 done
 
@@ -3298,7 +3826,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
   ;
@@ -3310,9 +3838,9 @@ ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
 # Try to create an executable without -o first, disregard a.out.
 # It will help us diagnose broken compilers, and finding out an intuition
 # of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+printf %s "checking whether the C compiler works... " >&6; }
+ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
 
 # The possible output files:
 ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
@@ -3333,11 +3861,12 @@ case "(($ac_try" in
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$ac_link_default") 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+then :
   # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
 # So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
 # in a Makefile.  We should not override ac_cv_exeext if it was cached,
@@ -3354,7 +3883,7 @@ do
        # certainly right.
        break;;
     *.* )
-       if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+       if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no;
        then :; else
           ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
        fi
@@ -3370,44 +3899,46 @@ do
 done
 test "$ac_cv_exeext" = no && ac_cv_exeext=
 
-else
+else $as_nop
   ac_file=''
 fi
-if test -z "$ac_file"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
+if test -z "$ac_file"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+printf "%s\n" "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error 77 "C compiler cannot create executables
 See \`config.log' for more details" "$LINENO" 5; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+printf %s "checking for C compiler default output file name... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+printf "%s\n" "$ac_file" >&6; }
 ac_exeext=$ac_cv_exeext
 
 rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
 ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+printf %s "checking for suffix of executables... " >&6; }
 if { { ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$ac_link") 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+then :
   # If both `conftest.exe' and `conftest' are `present' (well, observable)
 # catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
 # work properly (i.e., refer to `conftest.exe'), while it won't with
@@ -3421,15 +3952,15 @@ for ac_file in conftest.exe conftest conftest.*; do
     * ) break;;
   esac
 done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+else $as_nop
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "cannot compute suffix of executables: cannot compile and link
 See \`config.log' for more details" "$LINENO" 5; }
 fi
 rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+printf "%s\n" "$ac_cv_exeext" >&6; }
 
 rm -f conftest.$ac_ext
 EXEEXT=$ac_cv_exeext
@@ -3438,7 +3969,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdio.h>
 int
-main ()
+main (void)
 {
 FILE *f = fopen ("conftest.out", "w");
  return ferror (f) || fclose (f) != 0;
@@ -3450,8 +3981,8 @@ _ACEOF
 ac_clean_files="$ac_clean_files conftest.out"
 # Check that the compiler produces executables we can run.  If not, either
 # the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+printf %s "checking whether we are cross compiling... " >&6; }
 if test "$cross_compiling" != yes; then
   { { ac_try="$ac_link"
 case "(($ac_try" in
@@ -3459,10 +3990,10 @@ case "(($ac_try" in
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$ac_link") 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }
   if { ac_try='./conftest$ac_cv_exeext'
   { { case "(($ac_try" in
@@ -3470,39 +4001,40 @@ $as_echo "$ac_try_echo"; } >&5
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$ac_try") 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; }; then
     cross_compiling=no
   else
     if test "$cross_compiling" = maybe; then
        cross_compiling=yes
     else
-       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
+       { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot run C compiled programs.
 If you meant to cross compile, use \`--host'.
 See \`config.log' for more details" "$LINENO" 5; }
     fi
   fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+printf "%s\n" "$cross_compiling" >&6; }
 
 rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
 ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+printf %s "checking for suffix of object files... " >&6; }
+if test ${ac_cv_objext+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
   ;
@@ -3516,11 +4048,12 @@ case "(($ac_try" in
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$ac_compile") 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+then :
   for ac_file in conftest.o conftest.obj conftest.*; do
   test -f "$ac_file" || continue;
   case $ac_file in
@@ -3529,31 +4062,32 @@ $as_echo "$ac_try_echo"; } >&5
        break;;
   esac
 done
-else
-  $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+  printf "%s\n" "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "cannot compute suffix of object files: cannot compile
 See \`config.log' for more details" "$LINENO" 5; }
 fi
 rm -f conftest.$ac_cv_objext conftest.$ac_ext
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+printf "%s\n" "$ac_cv_objext" >&6; }
 OBJEXT=$ac_cv_objext
 ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5
+printf %s "checking whether the compiler supports GNU C... " >&6; }
+if test ${ac_cv_c_compiler_gnu+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 #ifndef __GNUC__
        choke me
@@ -3563,29 +4097,33 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_compiler_gnu=yes
-else
+else $as_nop
   ac_compiler_gnu=no
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 ac_cv_c_compiler_gnu=$ac_compiler_gnu
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; }
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
 if test $ac_compiler_gnu = yes; then
   GCC=yes
 else
   GCC=
 fi
-ac_test_CFLAGS=${CFLAGS+set}
+ac_test_CFLAGS=${CFLAGS+y}
 ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+printf %s "checking whether $CC accepts -g... " >&6; }
+if test ${ac_cv_prog_cc_g+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_save_c_werror_flag=$ac_c_werror_flag
    ac_c_werror_flag=yes
    ac_cv_prog_cc_g=no
@@ -3594,57 +4132,60 @@ else
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_prog_cc_g=yes
-else
+else $as_nop
   CFLAGS=""
       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
 
-else
+else $as_nop
   ac_c_werror_flag=$ac_save_c_werror_flag
         CFLAGS="-g"
         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_prog_cc_g=yes
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
    ac_c_werror_flag=$ac_save_c_werror_flag
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+printf "%s\n" "$ac_cv_prog_cc_g" >&6; }
+if test $ac_test_CFLAGS; then
   CFLAGS=$ac_save_CFLAGS
 elif test $ac_cv_prog_cc_g = yes; then
   if test "$GCC" = yes; then
@@ -3659,232 +4200,144 @@ else
     CFLAGS=
   fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
+ac_prog_cc_stdc=no
+if test x$ac_prog_cc_stdc = xno
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5
+printf %s "checking for $CC option to enable C11 features... " >&6; }
+if test ${ac_cv_prog_cc_c11+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  ac_cv_prog_cc_c11=no
 ac_save_CC=$CC
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
+$ac_c_conftest_c11_program
 _ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+for ac_arg in '' -std=gnu11
 do
   CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
+  if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_cv_prog_cc_c11=$ac_arg
 fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+  test "x$ac_cv_prog_cc_c11" != "xno" && break
 done
 rm -f conftest.$ac_ext
 CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
 fi
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if ${ac_cv_prog_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+if test "x$ac_cv_prog_cc_c11" = xno
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+  if test "x$ac_cv_prog_cc_c11" = x
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5
+printf "%s\n" "$ac_cv_prog_cc_c11" >&6; }
+     CC="$CC $ac_cv_prog_cc_c11"
+fi
+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11
+  ac_prog_cc_stdc=c11
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5
+printf %s "checking for $CC option to enable C99 features... " >&6; }
+if test ${ac_cv_prog_cc_c99+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
+$ac_c_conftest_c99_program
 _ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99=
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_cv_prog_cc_c99=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+  test "x$ac_cv_prog_cc_c99" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
 fi
-rm -f conftest.err conftest.i conftest.$ac_ext
 
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+if test "x$ac_cv_prog_cc_c99" = xno
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+  if test "x$ac_cv_prog_cc_c99" = x
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+printf "%s\n" "$ac_cv_prog_cc_c99" >&6; }
+     CC="$CC $ac_cv_prog_cc_c99"
+fi
+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
+  ac_prog_cc_stdc=c99
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5
+printf %s "checking for $CC option to enable C89 features... " >&6; }
+if test ${ac_cv_prog_cc_c89+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+$ac_c_conftest_c89_program
 _ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_cv_prog_cc_c89=$ac_arg
 fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
 done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CPP=$CPP
-
-fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
 
-else
-  # Broken: fails on valid input.
-continue
+if test "x$ac_cv_prog_cc_c89" = xno
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+  if test "x$ac_cv_prog_cc_c89" = x
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+printf "%s\n" "$ac_cv_prog_cc_c89" >&6; }
+     CC="$CC $ac_cv_prog_cc_c89"
 fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
+  ac_prog_cc_stdc=c89
 fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
 fi
 
 ac_ext=c
@@ -3894,329 +4347,179 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+ac_header= ac_cache=
+for ac_item in $ac_header_c_list
 do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in grep ggrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
+  if test $ac_cache; then
+    ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default"
+    if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then
+      printf "%s\n" "#define $ac_item 1" >> confdefs.h
     fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_GREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+    ac_header= ac_cache=
+  elif test $ac_header; then
+    ac_cache=$ac_item
+  else
+    ac_header=$ac_item
   fi
-else
-  ac_cv_path_GREP=$GREP
-fi
+done
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in egrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
 
-      $ac_path_EGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_EGREP=$EGREP
-fi
 
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
 
-int
-main ()
-{
+if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes
+then :
+
+printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
 
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
 
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
 
-fi
 
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
+printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if test ${ac_cv_safe_to_define___extensions__+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <stdlib.h>
 
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
+#         define __EXTENSIONS__ 1
+          $ac_includes_default
+int
+main (void)
+{
 
-else
-  ac_cv_header_stdc=no
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_cv_safe_to_define___extensions__=yes
+else $as_nop
+  ac_cv_safe_to_define___extensions__=no
 fi
-rm -f conftest*
-
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
+printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; }
 
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5
+printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; }
+if test ${ac_cv_should_define__xopen_source+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  ac_cv_should_define__xopen_source=no
+    if test $ac_cv_header_wchar_h = yes
+then :
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-                  (('a' <= (c) && (c) <= 'i') \
-                    || ('j' <= (c) && (c) <= 'r') \
-                    || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
 
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+          #include <wchar.h>
+          mbstate_t x;
 int
-main ()
+main (void)
 {
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-       || toupper (i) != TOUPPER (i))
-      return 2;
+
+  ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
 
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
+else $as_nop
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+            #define _XOPEN_SOURCE 500
+            #include <wchar.h>
+            mbstate_t x;
+int
+main (void)
+{
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_cv_should_define__xopen_source=yes
 fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-                 inttypes.h stdint.h unistd.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
 fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5
+printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; }
 
-done
+  printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h
 
+  printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h
 
+  printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h
 
-  ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
-if test "x$ac_cv_header_minix_config_h" = xyes; then :
-  MINIX=yes
-else
-  MINIX=
-fi
+  printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h
 
+  printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h
 
-  if test "$MINIX" = yes; then
+  printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h
 
-$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
+  printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
 
+  printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h
 
-$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
+  printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h
 
+  printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h
 
-$as_echo "#define _MINIX 1" >>confdefs.h
+  printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h
 
-  fi
+  printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h
 
+  printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
-$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
-if ${ac_cv_safe_to_define___extensions__+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+  printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h
 
-#         define __EXTENSIONS__ 1
-          $ac_includes_default
-int
-main ()
-{
+  printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_safe_to_define___extensions__=yes
-else
-  ac_cv_safe_to_define___extensions__=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
-$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
-  test $ac_cv_safe_to_define___extensions__ = yes &&
-    $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
+  if test $ac_cv_header_minix_config_h = yes
+then :
+  MINIX=yes
+    printf "%s\n" "#define _MINIX 1" >>confdefs.h
 
-  $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
+    printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h
 
-  $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
+    printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h
 
-  $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+else $as_nop
+  MINIX=
+fi
+  if test $ac_cv_safe_to_define___extensions__ = yes
+then :
+  printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h
 
-  $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
+fi
+  if test $ac_cv_should_define__xopen_source = yes
+then :
+  printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h
 
+fi
 
 if test "$ac_cv_header_minix_config_h" = "yes"; then
 
-$as_echo "#define _NETBSD_SOURCE 1" >>confdefs.h
+printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h
 
 fi
 
@@ -4254,7 +4557,8 @@ else
 fi
 
 # Check whether --with-conf_file was given.
-if test "${with_conf_file+set}" = set; then :
+if test ${with_conf_file+y}
+then :
   withval=$with_conf_file; ub_conf_file="$withval"
 fi
 
@@ -4262,16 +4566,14 @@ fi
 hdr_config="`echo $ub_conf_file | sed -e 's/\\\\/\\\\\\\\/g'`"
 
 
-cat >>confdefs.h <<_ACEOF
-#define CONFIGFILE "$hdr_config"
-_ACEOF
+printf "%s\n" "#define CONFIGFILE \"$hdr_config\"" >>confdefs.h
 
 ub_conf_dir=`$as_dirname -- "$ub_conf_file" ||
 $as_expr X"$ub_conf_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
         X"$ub_conf_file" : 'X\(//\)[^/]' \| \
         X"$ub_conf_file" : 'X\(//\)$' \| \
         X"$ub_conf_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ub_conf_file" |
+printf "%s\n" X"$ub_conf_file" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
            s//\1/
            q
@@ -4294,9 +4596,10 @@ $as_echo X"$ub_conf_file" |
 # Determine run, chroot directory and pidfile locations
 
 # Check whether --with-run-dir was given.
-if test "${with_run_dir+set}" = set; then :
+if test ${with_run_dir+y}
+then :
   withval=$with_run_dir; UNBOUND_RUN_DIR="$withval"
-else
+else $as_nop
   if test $on_mingw = no; then
     UNBOUND_RUN_DIR=`dirname "$ub_conf_file"`
 else
@@ -4309,16 +4612,15 @@ fi
 hdr_run="`echo $UNBOUND_RUN_DIR | sed -e 's/\\\\/\\\\\\\\/g'`"
 
 
-cat >>confdefs.h <<_ACEOF
-#define RUN_DIR "$hdr_run"
-_ACEOF
+printf "%s\n" "#define RUN_DIR \"$hdr_run\"" >>confdefs.h
 
 
 
 # Check whether --with-chroot-dir was given.
-if test "${with_chroot_dir+set}" = set; then :
+if test ${with_chroot_dir+y}
+then :
   withval=$with_chroot_dir; UNBOUND_CHROOT_DIR="$withval"
-else
+else $as_nop
   if test $on_mingw = no; then
     UNBOUND_CHROOT_DIR="$UNBOUND_RUN_DIR"
 else
@@ -4331,31 +4633,29 @@ fi
 hdr_chroot="`echo $UNBOUND_CHROOT_DIR | sed -e 's/\\\\/\\\\\\\\/g'`"
 
 
-cat >>confdefs.h <<_ACEOF
-#define CHROOT_DIR "$hdr_chroot"
-_ACEOF
+printf "%s\n" "#define CHROOT_DIR \"$hdr_chroot\"" >>confdefs.h
 
 
 
 # Check whether --with-share-dir was given.
-if test "${with_share_dir+set}" = set; then :
+if test ${with_share_dir+y}
+then :
   withval=$with_share_dir; UNBOUND_SHARE_DIR="$withval"
-else
+else $as_nop
   UNBOUND_SHARE_DIR="$UNBOUND_RUN_DIR"
 fi
 
 
 
-cat >>confdefs.h <<_ACEOF
-#define SHARE_DIR "$UNBOUND_SHARE_DIR"
-_ACEOF
+printf "%s\n" "#define SHARE_DIR \"$UNBOUND_SHARE_DIR\"" >>confdefs.h
 
 
 
 # Check whether --with-pidfile was given.
-if test "${with_pidfile+set}" = set; then :
+if test ${with_pidfile+y}
+then :
   withval=$with_pidfile; UNBOUND_PIDFILE="$withval"
-else
+else $as_nop
   if test $on_mingw = no; then
     UNBOUND_PIDFILE="$UNBOUND_RUN_DIR/unbound.pid"
 else
@@ -4368,16 +4668,15 @@ fi
 hdr_pid="`echo $UNBOUND_PIDFILE | sed -e 's/\\\\/\\\\\\\\/g'`"
 
 
-cat >>confdefs.h <<_ACEOF
-#define PIDFILE "$hdr_pid"
-_ACEOF
+printf "%s\n" "#define PIDFILE \"$hdr_pid\"" >>confdefs.h
 
 
 
 # Check whether --with-rootkey-file was given.
-if test "${with_rootkey_file+set}" = set; then :
+if test ${with_rootkey_file+y}
+then :
   withval=$with_rootkey_file; UNBOUND_ROOTKEY_FILE="$withval"
-else
+else $as_nop
   if test $on_mingw = no; then
     UNBOUND_ROOTKEY_FILE="$UNBOUND_RUN_DIR/root.key"
 else
@@ -4390,16 +4689,15 @@ fi
 hdr_rkey="`echo $UNBOUND_ROOTKEY_FILE | sed -e 's/\\\\/\\\\\\\\/g'`"
 
 
-cat >>confdefs.h <<_ACEOF
-#define ROOT_ANCHOR_FILE "$hdr_rkey"
-_ACEOF
+printf "%s\n" "#define ROOT_ANCHOR_FILE \"$hdr_rkey\"" >>confdefs.h
 
 
 
 # Check whether --with-rootcert-file was given.
-if test "${with_rootcert_file+set}" = set; then :
+if test ${with_rootcert_file+y}
+then :
   withval=$with_rootcert_file; UNBOUND_ROOTCERT_FILE="$withval"
-else
+else $as_nop
   if test $on_mingw = no; then
     UNBOUND_ROOTCERT_FILE="$UNBOUND_RUN_DIR/icannbundle.pem"
 else
@@ -4412,48 +4710,44 @@ fi
 hdr_rpem="`echo $UNBOUND_ROOTCERT_FILE | sed -e 's/\\\\/\\\\\\\\/g'`"
 
 
-cat >>confdefs.h <<_ACEOF
-#define ROOT_CERT_FILE "$hdr_rpem"
-_ACEOF
+printf "%s\n" "#define ROOT_CERT_FILE \"$hdr_rpem\"" >>confdefs.h
 
 
 
 # Check whether --with-username was given.
-if test "${with_username+set}" = set; then :
+if test ${with_username+y}
+then :
   withval=$with_username; UNBOUND_USERNAME="$withval"
-else
+else $as_nop
   UNBOUND_USERNAME="unbound"
 fi
 
 
 
-cat >>confdefs.h <<_ACEOF
-#define UB_USERNAME "$UNBOUND_USERNAME"
-_ACEOF
+printf "%s\n" "#define UB_USERNAME \"$UNBOUND_USERNAME\"" >>confdefs.h
 
 
 
-$as_echo "#define WINVER 0x0502" >>confdefs.h
+printf "%s\n" "#define WINVER 0x0502" >>confdefs.h
 
 wnvs=`echo $PACKAGE_VERSION | sed -e 's/^[^0-9]*\([0-9][0-9]*\)[^0-9][^0-9]*\([0-9][0-9]*\)[^0-9][^0-9]*\([0-9][0-9]*\)[^0-9][^0-9]*\([0-9][0-9]*\).*$/\1,\2,\3,\4/' -e 's/^[^0-9]*\([0-9][0-9]*\)[^0-9][^0-9]*\([0-9][0-9]*\)[^0-9][^0-9]*\([0-9][0-9]*\)[^0-9]*$/\1,\2,\3,0/' `
 
 
-cat >>confdefs.h <<_ACEOF
-#define RSRC_PACKAGE_VERSION $wnvs
-_ACEOF
+printf "%s\n" "#define RSRC_PACKAGE_VERSION $wnvs" >>confdefs.h
 
 
 # Checks for typedefs, structures, and compiler characteristics.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
-$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if ${ac_cv_c_const+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
+printf %s "checking for an ANSI C-conforming const... " >&6; }
+if test ${ac_cv_c_const+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
 #ifndef __cplusplus
@@ -4466,7 +4760,7 @@ main ()
   /* NEC SVR4.0.2 mips cc rejects this.  */
   struct point {int x, y;};
   static struct point const zero = {0,0};
-  /* AIX XL C 1.02.0.0 rejects this.
+  /* IBM XL C 1.02.0.0 rejects this.
      It does not let you subtract one const X* pointer from another in
      an arm of an if-expression whose if-part is not a constant
      expression */
@@ -4494,7 +4788,7 @@ main ()
     iptr p = 0;
     ++p;
   }
-  { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
+  { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying
        "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
     struct s { int j; const int *ap[3]; } bx;
     struct s *b = &bx; b->j = 5;
@@ -4510,18 +4804,19 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_c_const=yes
-else
+else $as_nop
   ac_cv_c_const=no
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
-$as_echo "$ac_cv_c_const" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
+printf "%s\n" "$ac_cv_c_const" >&6; }
 if test $ac_cv_c_const = no; then
 
-$as_echo "#define const /**/" >>confdefs.h
+printf "%s\n" "#define const /**/" >>confdefs.h
 
 fi
 
@@ -4536,12 +4831,13 @@ default_cflags=no
 if test "x$CFLAGS" = "x" ; then
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -g" >&5
-$as_echo_n "checking whether $CC supports -g... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -g" >&5
+printf %s "checking whether $CC supports -g... " >&6; }
 cache=`echo g | sed 'y%.=/+-%___p_%'`
-if eval \${cv_prog_cc_flag_$cache+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if eval test \${cv_prog_cc_flag_$cache+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 echo 'void f(void){}' >conftest.c
 if test -z "`$CC $CPPFLAGS $CFLAGS -g -c conftest.c 2>&1`"; then
@@ -4554,25 +4850,26 @@ rm -f conftest conftest.o conftest.c
 fi
 
 if eval "test \"`echo '$cv_prog_cc_flag_'$cache`\" = yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 :
 CFLAGS="$CFLAGS -g"
 else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 :
 
 fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -O2" >&5
-$as_echo_n "checking whether $CC supports -O2... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -O2" >&5
+printf %s "checking whether $CC supports -O2... " >&6; }
 cache=`echo O2 | sed 'y%.=/+-%___p_%'`
-if eval \${cv_prog_cc_flag_$cache+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if eval test \${cv_prog_cc_flag_$cache+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 echo 'void f(void){}' >conftest.c
 if test -z "`$CC $CPPFLAGS $CFLAGS -O2 -c conftest.c 2>&1`"; then
@@ -4585,13 +4882,13 @@ rm -f conftest conftest.o conftest.c
 fi
 
 if eval "test \"`echo '$cv_prog_cc_flag_'$cache`\" = yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 :
 CFLAGS="$CFLAGS -O2"
 else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 :
 
 fi
@@ -4606,11 +4903,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}gcc; 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_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
@@ -4618,11 +4916,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -4633,11 +4935,11 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -4646,11 +4948,12 @@ if test -z "$ac_cv_prog_CC"; then
   ac_ct_CC=$CC
   # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; 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_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$ac_ct_CC"; then
   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
 else
@@ -4658,11 +4961,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -4673,11 +4980,11 @@ fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
   if test "x$ac_ct_CC" = x; then
@@ -4685,8 +4992,8 @@ fi
   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;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     CC=$ac_ct_CC
@@ -4699,11 +5006,12 @@ if test -z "$CC"; then
           if test -n "$ac_tool_prefix"; then
     # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}cc; 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_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
@@ -4711,11 +5019,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -4726,11 +5038,11 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -4739,11 +5051,12 @@ fi
 if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; 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_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
@@ -4752,15 +5065,19 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
        ac_prog_rejected=yes
        continue
      fi
     ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -4776,18 +5093,18 @@ if test $ac_prog_rejected = yes; then
     # However, it has the same basename, so the bogon will be chosen
     # first if we set CC to just the basename; use the full file name.
     shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+    ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@"
   fi
 fi
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -4798,11 +5115,12 @@ if test -z "$CC"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; 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_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
@@ -4810,11 +5128,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -4825,11 +5147,11 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -4842,11 +5164,12 @@ if test -z "$CC"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; 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_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$ac_ct_CC"; then
   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
 else
@@ -4854,11 +5177,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -4869,11 +5196,11 @@ fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -4885,34 +5212,138 @@ done
   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;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args.
+set dummy ${ac_tool_prefix}clang; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}clang"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "clang", so it can be a program name with args.
+set dummy clang; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="clang"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     CC=$ac_ct_CC
   fi
+else
+  CC="$ac_cv_prog_CC"
 fi
 
 fi
 
 
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "no acceptable C compiler found in \$PATH
 See \`config.log' for more details" "$LINENO" 5; }
 
 # Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
 set X $ac_compile
 ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
+for ac_option in --version -v -V -qversion -version; do
   { { ac_try="$ac_compiler $ac_option >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$ac_compiler $ac_option >&5") 2>conftest.err
   ac_status=$?
   if test -s conftest.err; then
@@ -4922,20 +5353,21 @@ $as_echo "$ac_try_echo"; } >&5
     cat conftest.er1 >&5
   fi
   rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }
 done
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5
+printf %s "checking whether the compiler supports GNU C... " >&6; }
+if test ${ac_cv_c_compiler_gnu+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 #ifndef __GNUC__
        choke me
@@ -4945,29 +5377,33 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_compiler_gnu=yes
-else
+else $as_nop
   ac_compiler_gnu=no
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 ac_cv_c_compiler_gnu=$ac_compiler_gnu
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; }
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
 if test $ac_compiler_gnu = yes; then
   GCC=yes
 else
   GCC=
 fi
-ac_test_CFLAGS=${CFLAGS+set}
+ac_test_CFLAGS=${CFLAGS+y}
 ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+printf %s "checking whether $CC accepts -g... " >&6; }
+if test ${ac_cv_prog_cc_g+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_save_c_werror_flag=$ac_c_werror_flag
    ac_c_werror_flag=yes
    ac_cv_prog_cc_g=no
@@ -4976,57 +5412,60 @@ else
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_prog_cc_g=yes
-else
+else $as_nop
   CFLAGS=""
       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
 
-else
+else $as_nop
   ac_c_werror_flag=$ac_save_c_werror_flag
         CFLAGS="-g"
         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_prog_cc_g=yes
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
    ac_c_werror_flag=$ac_save_c_werror_flag
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+printf "%s\n" "$ac_cv_prog_cc_g" >&6; }
+if test $ac_test_CFLAGS; then
   CFLAGS=$ac_save_CFLAGS
 elif test $ac_cv_prog_cc_g = yes; then
   if test "$GCC" = yes; then
@@ -5041,94 +5480,144 @@ else
     CFLAGS=
   fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
+ac_prog_cc_stdc=no
+if test x$ac_prog_cc_stdc = xno
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5
+printf %s "checking for $CC option to enable C11 features... " >&6; }
+if test ${ac_cv_prog_cc_c11+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  ac_cv_prog_cc_c11=no
 ac_save_CC=$CC
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+$ac_c_conftest_c11_program
+_ACEOF
+for ac_arg in '' -std=gnu11
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_cv_prog_cc_c11=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+  test "x$ac_cv_prog_cc_c11" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+fi
 
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+if test "x$ac_cv_prog_cc_c11" = xno
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+  if test "x$ac_cv_prog_cc_c11" = x
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5
+printf "%s\n" "$ac_cv_prog_cc_c11" >&6; }
+     CC="$CC $ac_cv_prog_cc_c11"
+fi
+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11
+  ac_prog_cc_stdc=c11
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5
+printf %s "checking for $CC option to enable C99 features... " >&6; }
+if test ${ac_cv_prog_cc_c99+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_c_conftest_c99_program
+_ACEOF
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99=
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_cv_prog_cc_c99=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+  test "x$ac_cv_prog_cc_c99" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+fi
 
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
+if test "x$ac_cv_prog_cc_c99" = xno
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+  if test "x$ac_cv_prog_cc_c99" = x
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+printf "%s\n" "$ac_cv_prog_cc_c99" >&6; }
+     CC="$CC $ac_cv_prog_cc_c99"
+fi
+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
+  ac_prog_cc_stdc=c99
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5
+printf %s "checking for $CC option to enable C89 features... " >&6; }
+if test ${ac_cv_prog_cc_c89+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_c_conftest_c89_program
 _ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
 do
   CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
+  if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_prog_cc_c89=$ac_arg
 fi
-rm -f core conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext conftest.beam
   test "x$ac_cv_prog_cc_c89" != "xno" && break
 done
 rm -f conftest.$ac_ext
 CC=$ac_save_CC
-
 fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
 
+if test "x$ac_cv_prog_cc_c89" = xno
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+  if test "x$ac_cv_prog_cc_c89" = x
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+printf "%s\n" "$ac_cv_prog_cc_c89" >&6; }
+     CC="$CC $ac_cv_prog_cc_c89"
+fi
+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
+  ac_prog_cc_stdc=c89
+fi
 fi
 
 ac_ext=c
@@ -5138,8 +5627,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $CC dependency flag" >&5
-$as_echo_n "checking $CC dependency flag... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking $CC dependency flag" >&5
+printf %s "checking $CC dependency flag... " >&6; }
 echo 'void f(){}' >conftest.c
 if test "`$CC -MM conftest.c 2>&1`" = "conftest.o: conftest.c"; then
        DEPFLAG="-MM"
@@ -5150,20 +5639,21 @@ else
        DEPFLAG="-MM"  # dunno do something
   fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $DEPFLAG" >&5
-$as_echo "$DEPFLAG" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DEPFLAG" >&5
+printf "%s\n" "$DEPFLAG" >&6; }
 rm -f conftest.c
 
 
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Werror" >&5
-$as_echo_n "checking whether $CC supports -Werror... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Werror" >&5
+printf %s "checking whether $CC supports -Werror... " >&6; }
 cache=`echo Werror | sed 'y%.=/+-%___p_%'`
-if eval \${cv_prog_cc_flag_$cache+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if eval test \${cv_prog_cc_flag_$cache+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 echo 'void f(void){}' >conftest.c
 if test -z "`$CC $CPPFLAGS $CFLAGS -Werror -c conftest.c 2>&1`"; then
@@ -5176,25 +5666,26 @@ rm -f conftest conftest.o conftest.c
 fi
 
 if eval "test \"`echo '$cv_prog_cc_flag_'$cache`\" = yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 :
 ERRFLAG="-Werror"
 else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 :
 ERRFLAG="-errwarn"
 fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wall" >&5
-$as_echo_n "checking whether $CC supports -Wall... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wall" >&5
+printf %s "checking whether $CC supports -Wall... " >&6; }
 cache=`echo Wall | sed 'y%.=/+-%___p_%'`
-if eval \${cv_prog_cc_flag_$cache+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if eval test \${cv_prog_cc_flag_$cache+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 echo 'void f(void){}' >conftest.c
 if test -z "`$CC $CPPFLAGS $CFLAGS -Wall -c conftest.c 2>&1`"; then
@@ -5207,13 +5698,13 @@ rm -f conftest conftest.o conftest.c
 fi
 
 if eval "test \"`echo '$cv_prog_cc_flag_'$cache`\" = yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 :
 ERRFLAG="$ERRFLAG -Wall"
 else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 :
 ERRFLAG="$ERRFLAG -errfmt"
 fi
@@ -5222,12 +5713,13 @@ fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -std=c99" >&5
-$as_echo_n "checking whether $CC supports -std=c99... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -std=c99" >&5
+printf %s "checking whether $CC supports -std=c99... " >&6; }
 cache=`echo std=c99 | sed 'y%.=/+-%___p_%'`
-if eval \${cv_prog_cc_flag_$cache+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if eval test \${cv_prog_cc_flag_$cache+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 echo 'void f(void){}' >conftest.c
 if test -z "`$CC $CPPFLAGS $CFLAGS -std=c99 -c conftest.c 2>&1`"; then
@@ -5240,25 +5732,26 @@ rm -f conftest conftest.o conftest.c
 fi
 
 if eval "test \"`echo '$cv_prog_cc_flag_'$cache`\" = yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 :
 C99FLAG="-std=c99"
 else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 :
 
 fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -xc99" >&5
-$as_echo_n "checking whether $CC supports -xc99... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -xc99" >&5
+printf %s "checking whether $CC supports -xc99... " >&6; }
 cache=`echo xc99 | sed 'y%.=/+-%___p_%'`
-if eval \${cv_prog_cc_flag_$cache+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if eval test \${cv_prog_cc_flag_$cache+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 echo 'void f(void){}' >conftest.c
 if test -z "`$CC $CPPFLAGS $CFLAGS -xc99 -c conftest.c 2>&1`"; then
@@ -5271,42 +5764,44 @@ rm -f conftest conftest.o conftest.c
 fi
 
 if eval "test \"`echo '$cv_prog_cc_flag_'$cache`\" = yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 :
 C99FLAG="-xc99"
 else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 :
 
 fi
 
 
-for ac_header in getopt.h time.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+ac_fn_c_check_header_compile "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default
 "
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+if test "x$ac_cv_header_getopt_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_GETOPT_H 1" >>confdefs.h
 
 fi
+ac_fn_c_check_header_compile "$LINENO" "time.h" "ac_cv_header_time_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_time_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_TIME_H 1" >>confdefs.h
 
-done
+fi
 
 
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE as a flag for $CC" >&5
-$as_echo_n "checking whether we need $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE as a flag for $CC... " >&6; }
-cache=`$as_echo "$C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE" | $as_tr_sh`
-if eval \${cv_prog_cc_flag_needed_$cache+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we need $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE as a flag for $CC" >&5
+printf %s "checking whether we need $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE as a flag for $CC... " >&6; }
+cache=`printf "%s\n" "$C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE" | $as_tr_sh`
+if eval test \${cv_prog_cc_flag_needed_$cache+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 echo '
 #include "confdefs.h"
@@ -5365,14 +5860,14 @@ rm -f conftest conftest.c conftest.o
 fi
 
 if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 :
 CFLAGS="$CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE"
 else
 if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = no"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 #echo 'Test with flag is no!'
 #cat conftest.c
 #echo "$CC $CPPFLAGS $CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE $ERRFLAG -c conftest.c 2>&1"
@@ -5381,8 +5876,8 @@ $as_echo "no" >&6; }
 :
 
 else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+printf "%s\n" "failed" >&6; }
 :
 
 fi
@@ -5392,12 +5887,13 @@ fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE as a flag for $CC" >&5
-$as_echo_n "checking whether we need $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE as a flag for $CC... " >&6; }
-cache=`$as_echo "$C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE" | $as_tr_sh`
-if eval \${cv_prog_cc_flag_needed_$cache+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we need $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE as a flag for $CC" >&5
+printf %s "checking whether we need $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE as a flag for $CC... " >&6; }
+cache=`printf "%s\n" "$C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE" | $as_tr_sh`
+if eval test \${cv_prog_cc_flag_needed_$cache+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 echo '
 #include "confdefs.h"
@@ -5456,14 +5952,14 @@ rm -f conftest conftest.c conftest.o
 fi
 
 if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 :
 CFLAGS="$CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE"
 else
 if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = no"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 #echo 'Test with flag is no!'
 #cat conftest.c
 #echo "$CC $CPPFLAGS $CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE $ERRFLAG -c conftest.c 2>&1"
@@ -5472,8 +5968,8 @@ $as_echo "no" >&6; }
 :
 
 else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+printf "%s\n" "failed" >&6; }
 :
 
 fi
@@ -5483,12 +5979,13 @@ fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need $C99FLAG as a flag for $CC" >&5
-$as_echo_n "checking whether we need $C99FLAG as a flag for $CC... " >&6; }
-cache=`$as_echo "$C99FLAG" | $as_tr_sh`
-if eval \${cv_prog_cc_flag_needed_$cache+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we need $C99FLAG as a flag for $CC" >&5
+printf %s "checking whether we need $C99FLAG as a flag for $CC... " >&6; }
+cache=`printf "%s\n" "$C99FLAG" | $as_tr_sh`
+if eval test \${cv_prog_cc_flag_needed_$cache+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 echo '
 #include <stdbool.h>
@@ -5520,14 +6017,14 @@ rm -f conftest conftest.c conftest.o
 fi
 
 if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 :
 CFLAGS="$CFLAGS $C99FLAG"
 else
 if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = no"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 #echo 'Test with flag is no!'
 #cat conftest.c
 #echo "$CC $CPPFLAGS $CFLAGS $C99FLAG $ERRFLAG -c conftest.c 2>&1"
@@ -5536,8 +6033,8 @@ $as_echo "no" >&6; }
 :
 
 else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+printf "%s\n" "failed" >&6; }
 :
 
 fi
@@ -5547,12 +6044,13 @@ fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need -D_BSD_SOURCE -D_DEFAULT_SOURCE as a flag for $CC" >&5
-$as_echo_n "checking whether we need -D_BSD_SOURCE -D_DEFAULT_SOURCE as a flag for $CC... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we need -D_BSD_SOURCE -D_DEFAULT_SOURCE as a flag for $CC" >&5
+printf %s "checking whether we need -D_BSD_SOURCE -D_DEFAULT_SOURCE as a flag for $CC... " >&6; }
 cache=_D_BSD_SOURCE__D_DEFAULT_SOURCE
-if eval \${cv_prog_cc_flag_needed_$cache+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if eval test \${cv_prog_cc_flag_needed_$cache+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 echo '
 #include <ctype.h>
@@ -5585,14 +6083,14 @@ rm -f conftest conftest.c conftest.o
 fi
 
 if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 :
 CFLAGS="$CFLAGS -D_BSD_SOURCE -D_DEFAULT_SOURCE"
 else
 if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = no"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 #echo 'Test with flag is no!'
 #cat conftest.c
 #echo "$CC $CPPFLAGS $CFLAGS -D_BSD_SOURCE -D_DEFAULT_SOURCE $ERRFLAG -c conftest.c 2>&1"
@@ -5601,8 +6099,8 @@ $as_echo "no" >&6; }
 :
 
 else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+printf "%s\n" "failed" >&6; }
 :
 
 fi
@@ -5612,12 +6110,13 @@ fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need -D_GNU_SOURCE as a flag for $CC" >&5
-$as_echo_n "checking whether we need -D_GNU_SOURCE as a flag for $CC... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we need -D_GNU_SOURCE as a flag for $CC" >&5
+printf %s "checking whether we need -D_GNU_SOURCE as a flag for $CC... " >&6; }
 cache=_D_GNU_SOURCE
-if eval \${cv_prog_cc_flag_needed_$cache+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if eval test \${cv_prog_cc_flag_needed_$cache+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 echo '
 #include <netinet/in.h>
@@ -5650,14 +6149,14 @@ rm -f conftest conftest.c conftest.o
 fi
 
 if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 :
 CFLAGS="$CFLAGS -D_GNU_SOURCE"
 else
 if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = no"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 #echo 'Test with flag is no!'
 #cat conftest.c
 #echo "$CC $CPPFLAGS $CFLAGS -D_GNU_SOURCE $ERRFLAG -c conftest.c 2>&1"
@@ -5666,8 +6165,8 @@ $as_echo "no" >&6; }
 :
 
 else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+printf "%s\n" "failed" >&6; }
 :
 
 fi
@@ -5680,12 +6179,13 @@ fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need -D_GNU_SOURCE -D_FRSRESGID as a flag for $CC" >&5
-$as_echo_n "checking whether we need -D_GNU_SOURCE -D_FRSRESGID as a flag for $CC... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we need -D_GNU_SOURCE -D_FRSRESGID as a flag for $CC" >&5
+printf %s "checking whether we need -D_GNU_SOURCE -D_FRSRESGID as a flag for $CC... " >&6; }
 cache=_D_GNU_SOURCE__D_FRSRESGID
-if eval \${cv_prog_cc_flag_needed_$cache+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if eval test \${cv_prog_cc_flag_needed_$cache+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 echo '
 #include <unistd.h>
@@ -5718,14 +6218,14 @@ rm -f conftest conftest.c conftest.o
 fi
 
 if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 :
 CFLAGS="$CFLAGS -D_GNU_SOURCE"
 else
 if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = no"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 #echo 'Test with flag is no!'
 #cat conftest.c
 #echo "$CC $CPPFLAGS $CFLAGS -D_GNU_SOURCE -D_FRSRESGID $ERRFLAG -c conftest.c 2>&1"
@@ -5734,8 +6234,8 @@ $as_echo "no" >&6; }
 :
 
 else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+printf "%s\n" "failed" >&6; }
 :
 
 fi
@@ -5745,12 +6245,13 @@ fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need -D_POSIX_C_SOURCE=200112 as a flag for $CC" >&5
-$as_echo_n "checking whether we need -D_POSIX_C_SOURCE=200112 as a flag for $CC... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we need -D_POSIX_C_SOURCE=200112 as a flag for $CC" >&5
+printf %s "checking whether we need -D_POSIX_C_SOURCE=200112 as a flag for $CC... " >&6; }
 cache=_D_POSIX_C_SOURCE_200112
-if eval \${cv_prog_cc_flag_needed_$cache+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if eval test \${cv_prog_cc_flag_needed_$cache+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 echo '
 #include "confdefs.h"
@@ -5794,14 +6295,14 @@ rm -f conftest conftest.c conftest.o
 fi
 
 if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 :
 CFLAGS="$CFLAGS -D_POSIX_C_SOURCE=200112"
 else
 if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = no"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 #echo 'Test with flag is no!'
 #cat conftest.c
 #echo "$CC $CPPFLAGS $CFLAGS -D_POSIX_C_SOURCE=200112 $ERRFLAG -c conftest.c 2>&1"
@@ -5810,8 +6311,8 @@ $as_echo "no" >&6; }
 :
 
 else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+printf "%s\n" "failed" >&6; }
 :
 
 fi
@@ -5821,12 +6322,13 @@ fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need -D__EXTENSIONS__ as a flag for $CC" >&5
-$as_echo_n "checking whether we need -D__EXTENSIONS__ as a flag for $CC... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we need -D__EXTENSIONS__ as a flag for $CC" >&5
+printf %s "checking whether we need -D__EXTENSIONS__ as a flag for $CC... " >&6; }
 cache=_D__EXTENSIONS__
-if eval \${cv_prog_cc_flag_needed_$cache+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if eval test \${cv_prog_cc_flag_needed_$cache+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 echo '
 #include "confdefs.h"
@@ -5876,14 +6378,14 @@ rm -f conftest conftest.c conftest.o
 fi
 
 if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 :
 CFLAGS="$CFLAGS -D__EXTENSIONS__"
 else
 if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = no"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 #echo 'Test with flag is no!'
 #cat conftest.c
 #echo "$CC $CPPFLAGS $CFLAGS -D__EXTENSIONS__ $ERRFLAG -c conftest.c 2>&1"
@@ -5892,8 +6394,8 @@ $as_echo "no" >&6; }
 :
 
 else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+printf "%s\n" "failed" >&6; }
 :
 
 fi
@@ -5904,12 +6406,14 @@ fi
 
 # debug mode flags warnings
 # Check whether --enable-checking was given.
-if test "${enable_checking+set}" = set; then :
+if test ${enable_checking+y}
+then :
   enableval=$enable_checking;
 fi
 
 # Check whether --enable-debug was given.
-if test "${enable_debug+set}" = set; then :
+if test ${enable_debug+y}
+then :
   enableval=$enable_debug;
 fi
 
@@ -5920,12 +6424,13 @@ case "$debug_enabled" in
         yes)
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -W" >&5
-$as_echo_n "checking whether $CC supports -W... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -W" >&5
+printf %s "checking whether $CC supports -W... " >&6; }
 cache=`echo W | sed 'y%.=/+-%___p_%'`
-if eval \${cv_prog_cc_flag_$cache+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if eval test \${cv_prog_cc_flag_$cache+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 echo 'void f(void){}' >conftest.c
 if test -z "`$CC $CPPFLAGS $CFLAGS -W -c conftest.c 2>&1`"; then
@@ -5938,25 +6443,26 @@ rm -f conftest conftest.o conftest.c
 fi
 
 if eval "test \"`echo '$cv_prog_cc_flag_'$cache`\" = yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 :
 CFLAGS="$CFLAGS -W"
 else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 :
 
 fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wall" >&5
-$as_echo_n "checking whether $CC supports -Wall... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wall" >&5
+printf %s "checking whether $CC supports -Wall... " >&6; }
 cache=`echo Wall | sed 'y%.=/+-%___p_%'`
-if eval \${cv_prog_cc_flag_$cache+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if eval test \${cv_prog_cc_flag_$cache+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 echo 'void f(void){}' >conftest.c
 if test -z "`$CC $CPPFLAGS $CFLAGS -Wall -c conftest.c 2>&1`"; then
@@ -5969,25 +6475,26 @@ rm -f conftest conftest.o conftest.c
 fi
 
 if eval "test \"`echo '$cv_prog_cc_flag_'$cache`\" = yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 :
 CFLAGS="$CFLAGS -Wall"
 else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 :
 
 fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wextra" >&5
-$as_echo_n "checking whether $CC supports -Wextra... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wextra" >&5
+printf %s "checking whether $CC supports -Wextra... " >&6; }
 cache=`echo Wextra | sed 'y%.=/+-%___p_%'`
-if eval \${cv_prog_cc_flag_$cache+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if eval test \${cv_prog_cc_flag_$cache+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 echo 'void f(void){}' >conftest.c
 if test -z "`$CC $CPPFLAGS $CFLAGS -Wextra -c conftest.c 2>&1`"; then
@@ -6000,25 +6507,26 @@ rm -f conftest conftest.o conftest.c
 fi
 
 if eval "test \"`echo '$cv_prog_cc_flag_'$cache`\" = yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 :
 CFLAGS="$CFLAGS -Wextra"
 else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 :
 
 fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wdeclaration-after-statement" >&5
-$as_echo_n "checking whether $CC supports -Wdeclaration-after-statement... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wdeclaration-after-statement" >&5
+printf %s "checking whether $CC supports -Wdeclaration-after-statement... " >&6; }
 cache=`echo Wdeclaration-after-statement | sed 'y%.=/+-%___p_%'`
-if eval \${cv_prog_cc_flag_$cache+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if eval test \${cv_prog_cc_flag_$cache+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 echo 'void f(void){}' >conftest.c
 if test -z "`$CC $CPPFLAGS $CFLAGS -Wdeclaration-after-statement -c conftest.c 2>&1`"; then
@@ -6031,19 +6539,19 @@ rm -f conftest conftest.o conftest.c
 fi
 
 if eval "test \"`echo '$cv_prog_cc_flag_'$cache`\" = yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 :
 CFLAGS="$CFLAGS -Wdeclaration-after-statement"
 else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 :
 
 fi
 
 
-$as_echo "#define UNBOUND_DEBUG /**/" >>confdefs.h
+printf "%s\n" "#define UNBOUND_DEBUG /**/" >>confdefs.h
 
                ;;
        no|*)
@@ -6056,58 +6564,63 @@ if test "$default_cflags" = "yes"; then
        # be able to turn off these options and set the CFLAGS wanted.
 
     # Check whether --enable-flto was given.
-if test "${enable_flto+set}" = set; then :
+if test ${enable_flto+y}
+then :
   enableval=$enable_flto;
 fi
 
-    if test "x$enable_flto" != "xno"; then :
+    if test "x$enable_flto" != "xno"
+then :
 
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -flto" >&5
-$as_echo_n "checking if $CC supports -flto... " >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -flto" >&5
+printf %s "checking if $CC supports -flto... " >&6; }
         BAKCFLAGS="$CFLAGS"
         CFLAGS="$CFLAGS -flto"
         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
 
             if $CC $CFLAGS -o conftest conftest.c 2>&1 | $GREP -e "warning: no debug symbols in executable" -e "warning: object" >/dev/null; then
                 CFLAGS="$BAKCFLAGS"
-                { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
             else
-                { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
             fi
             rm -f conftest conftest.c conftest.o
 
-else
-  CFLAGS="$BAKCFLAGS" ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+  CFLAGS="$BAKCFLAGS" ; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 
 fi
 
 
     # Check whether --enable-pie was given.
-if test "${enable_pie+set}" = set; then :
+if test ${enable_pie+y}
+then :
   enableval=$enable_pie;
 fi
 
-    if test "x$enable_pie" = "xyes"; then :
+    if test "x$enable_pie" = "xyes"
+then :
 
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports PIE" >&5
-$as_echo_n "checking if $CC supports PIE... " >&6; }
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports PIE" >&5
+printf %s "checking if $CC supports PIE... " >&6; }
        BAKLDFLAGS="$LDFLAGS"
        BAKCFLAGS="$CFLAGS"
        LDFLAGS="$LDFLAGS -pie"
@@ -6116,106 +6629,112 @@ $as_echo_n "checking if $CC supports PIE... " >&6; }
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
 
            if $CC $CFLAGS $LDFLAGS -o conftest conftest.c 2>&1 | grep "warning: no debug symbols in executable" >/dev/null; then
                LDFLAGS="$BAKLDFLAGS"
-               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
            else
-               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
            fi
            rm -f conftest conftest.c conftest.o
 
-else
-  LDFLAGS="$BAKLDFLAGS" ; CFLAGS="$BAKCFLAGS" ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+  LDFLAGS="$BAKLDFLAGS" ; CFLAGS="$BAKCFLAGS" ; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 
 fi
 
 
     # Check whether --enable-relro_now was given.
-if test "${enable_relro_now+set}" = set; then :
+if test ${enable_relro_now+y}
+then :
   enableval=$enable_relro_now;
 fi
 
-    if test "x$enable_relro_now" = "xyes"; then :
+    if test "x$enable_relro_now" = "xyes"
+then :
 
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wl,-z,relro,-z,now" >&5
-$as_echo_n "checking if $CC supports -Wl,-z,relro,-z,now... " >&6; }
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wl,-z,relro,-z,now" >&5
+printf %s "checking if $CC supports -Wl,-z,relro,-z,now... " >&6; }
        BAKLDFLAGS="$LDFLAGS"
        LDFLAGS="$LDFLAGS -Wl,-z,relro,-z,now"
        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
 
            if $CC $CFLAGS $LDFLAGS -o conftest conftest.c 2>&1 | grep "warning: no debug symbols in executable" >/dev/null; then
                LDFLAGS="$BAKLDFLAGS"
-               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
            else
-               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
            fi
            rm -f conftest conftest.c conftest.o
 
-else
-  LDFLAGS="$BAKLDFLAGS" ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+  LDFLAGS="$BAKLDFLAGS" ; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 
 fi
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
-$as_echo_n "checking for inline... " >&6; }
-if ${ac_cv_c_inline+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+printf %s "checking for inline... " >&6; }
+if test ${ac_cv_c_inline+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #ifndef __cplusplus
 typedef int foo_t;
-static $ac_kw foo_t static_foo () {return 0; }
-$ac_kw foo_t foo () {return 0; }
+static $ac_kw foo_t static_foo (void) {return 0; }
+$ac_kw foo_t foo (void) {return 0; }
 #endif
 
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_c_inline=$ac_kw
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   test "$ac_cv_c_inline" != no && break
 done
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
-$as_echo "$ac_cv_c_inline" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+printf "%s\n" "$ac_cv_c_inline" >&6; }
 
 case $ac_cv_c_inline in
   inline | yes) ;;
@@ -6233,11 +6752,12 @@ _ACEOF
 esac
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler (${CC-cc}) accepts the \"format\" attribute" >&5
-$as_echo_n "checking whether the C compiler (${CC-cc}) accepts the \"format\" attribute... " >&6; }
-if ${ac_cv_c_format_attribute+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler (${CC-cc}) accepts the \"format\" attribute" >&5
+printf %s "checking whether the C compiler (${CC-cc}) accepts the \"format\" attribute... " >&6; }
+if test ${ac_cv_c_format_attribute+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_cv_c_format_attribute=no
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -6246,7 +6766,7 @@ void f (char *format, ...) __attribute__ ((format (printf, 1, 2)));
 void (*pf) (char *format, ...) __attribute__ ((format (printf, 1, 2)));
 
 int
-main ()
+main (void)
 {
 
    f ("%s", "str");
@@ -6255,30 +6775,32 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_c_format_attribute="yes"
-else
+else $as_nop
   ac_cv_c_format_attribute="no"
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_format_attribute" >&5
-$as_echo "$ac_cv_c_format_attribute" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_format_attribute" >&5
+printf "%s\n" "$ac_cv_c_format_attribute" >&6; }
 if test $ac_cv_c_format_attribute = yes; then
 
-$as_echo "#define HAVE_ATTR_FORMAT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ATTR_FORMAT 1" >>confdefs.h
 
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler (${CC-cc}) accepts the \"unused\" attribute" >&5
-$as_echo_n "checking whether the C compiler (${CC-cc}) accepts the \"unused\" attribute... " >&6; }
-if ${ac_cv_c_unused_attribute+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler (${CC-cc}) accepts the \"unused\" attribute" >&5
+printf %s "checking whether the C compiler (${CC-cc}) accepts the \"unused\" attribute... " >&6; }
+if test ${ac_cv_c_unused_attribute+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_cv_c_unused_attribute=no
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -6286,7 +6808,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 void f (char *u __attribute__((unused)));
 
 int
-main ()
+main (void)
 {
 
    f ("x");
@@ -6295,34 +6817,36 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_c_unused_attribute="yes"
-else
+else $as_nop
   ac_cv_c_unused_attribute="no"
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 
 fi
 
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_unused_attribute" >&5
-$as_echo "$ac_cv_c_unused_attribute" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_unused_attribute" >&5
+printf "%s\n" "$ac_cv_c_unused_attribute" >&6; }
 if test $ac_cv_c_unused_attribute = yes; then
 
-$as_echo "#define HAVE_ATTR_UNUSED 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ATTR_UNUSED 1" >>confdefs.h
 
 fi
 
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler (${CC-cc}) accepts the \"weak\" attribute" >&5
-$as_echo_n "checking whether the C compiler (${CC-cc}) accepts the \"weak\" attribute... " >&6; }
-if ${ac_cv_c_weak_attribute+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler (${CC-cc}) accepts the \"weak\" attribute" >&5
+printf %s "checking whether the C compiler (${CC-cc}) accepts the \"weak\" attribute... " >&6; }
+if test ${ac_cv_c_weak_attribute+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_cv_c_weak_attribute=no
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -6330,7 +6854,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 __attribute__((weak)) void f(int x) { printf("%d", x); }
 
 int
-main ()
+main (void)
 {
 
    f(1);
@@ -6339,35 +6863,37 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_c_weak_attribute="yes"
-else
+else $as_nop
   ac_cv_c_weak_attribute="no"
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_weak_attribute" >&5
-$as_echo "$ac_cv_c_weak_attribute" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_weak_attribute" >&5
+printf "%s\n" "$ac_cv_c_weak_attribute" >&6; }
 if test $ac_cv_c_weak_attribute = yes; then
 
-$as_echo "#define HAVE_ATTR_WEAK 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ATTR_WEAK 1" >>confdefs.h
 
 
-$as_echo "#define ATTR_WEAK __attribute__((weak))" >>confdefs.h
+printf "%s\n" "#define ATTR_WEAK __attribute__((weak))" >>confdefs.h
 
 fi
 
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler (${CC-cc}) accepts the \"noreturn\" attribute" >&5
-$as_echo_n "checking whether the C compiler (${CC-cc}) accepts the \"noreturn\" attribute... " >&6; }
-if ${ac_cv_c_noreturn_attribute+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler (${CC-cc}) accepts the \"noreturn\" attribute" >&5
+printf %s "checking whether the C compiler (${CC-cc}) accepts the \"noreturn\" attribute... " >&6; }
+if test ${ac_cv_c_noreturn_attribute+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_cv_c_noreturn_attribute=no
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -6375,7 +6901,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 __attribute__((noreturn)) void f(int x) { printf("%d", x); }
 
 int
-main ()
+main (void)
 {
 
    f(1);
@@ -6384,24 +6910,25 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_c_noreturn_attribute="yes"
-else
+else $as_nop
   ac_cv_c_noreturn_attribute="no"
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_noreturn_attribute" >&5
-$as_echo "$ac_cv_c_noreturn_attribute" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_noreturn_attribute" >&5
+printf "%s\n" "$ac_cv_c_noreturn_attribute" >&6; }
 if test $ac_cv_c_noreturn_attribute = yes; then
 
-$as_echo "#define HAVE_ATTR_NORETURN 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ATTR_NORETURN 1" >>confdefs.h
 
 
-$as_echo "#define ATTR_NORETURN __attribute__((__noreturn__))" >>confdefs.h
+printf "%s\n" "#define ATTR_NORETURN __attribute__((__noreturn__))" >>confdefs.h
 
 fi
 
@@ -6418,11 +6945,12 @@ for ac_prog in flex lex
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; 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_prog_LEX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_LEX+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$LEX"; then
   ac_cv_prog_LEX="$LEX" # Let the user override the test.
 else
@@ -6430,11 +6958,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_LEX="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -6445,11 +6977,11 @@ fi
 fi
 LEX=$ac_cv_prog_LEX
 if test -n "$LEX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5
-$as_echo "$LEX" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5
+printf "%s\n" "$LEX" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -6457,15 +6989,26 @@ fi
 done
 test -n "$LEX" || LEX=":"
 
-if test "x$LEX" != "x:"; then
-  cat >conftest.l <<_ACEOF
+  if test "x$LEX" != "x:"; then
+    cat >conftest.l <<_ACEOF
+%{
+#ifdef __cplusplus
+extern "C"
+#endif
+int yywrap(void);
+%}
 %%
 a { ECHO; }
 b { REJECT; }
 c { yymore (); }
 d { yyless (1); }
 e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument.  */
-    yyless ((input () != 0)); }
+#ifdef __cplusplus
+    yyless ((yyinput () != 0));
+#else
+    yyless ((input () != 0));
+#endif
+  }
 f { unput (yytext[0]); }
 . { BEGIN INITIAL; }
 %%
@@ -6473,101 +7016,144 @@ f { unput (yytext[0]); }
 extern char *yytext;
 #endif
 int
+yywrap (void)
+{
+  return 1;
+}
+int
 main (void)
 {
-  return ! yylex () + ! yywrap ();
+  return ! yylex ();
 }
 _ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lex output file root" >&5
+printf %s "checking for lex output file root... " >&6; }
+if test ${ac_cv_prog_lex_root+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+
+ac_cv_prog_lex_root=unknown
 { { ac_try="$LEX conftest.l"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$LEX conftest.l") 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5
-$as_echo_n "checking lex output file root... " >&6; }
-if ${ac_cv_prog_lex_root+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } &&
 if test -f lex.yy.c; then
   ac_cv_prog_lex_root=lex.yy
 elif test -f lexyy.c; then
   ac_cv_prog_lex_root=lexyy
-else
-  as_fn_error $? "cannot find output from $LEX; giving up" "$LINENO" 5
 fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5
-$as_echo "$ac_cv_prog_lex_root" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5
+printf "%s\n" "$ac_cv_prog_lex_root" >&6; }
+if test "$ac_cv_prog_lex_root" = unknown
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot find output from $LEX; giving up on $LEX" >&5
+printf "%s\n" "$as_me: WARNING: cannot find output from $LEX; giving up on $LEX" >&2;}
+   LEX=: LEXLIB=
+fi
 LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root
 
-if test -z "${LEXLIB+set}"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5
-$as_echo_n "checking lex library... " >&6; }
-if ${ac_cv_lib_lex+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if test ${LEXLIB+y}
+then :
+
+else $as_nop
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lex library" >&5
+printf %s "checking for lex library... " >&6; }
+if test ${ac_cv_lib_lex+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+
+    ac_save_LIBS="$LIBS"
+    ac_found=false
+    for ac_cv_lib_lex in 'none needed' -lfl -ll 'not found'; do
+      case $ac_cv_lib_lex in #(
+  'none needed') :
+     ;; #(
+  'not found') :
+    break ;; #(
+  *) :
+    LIBS="$ac_cv_lib_lex $ac_save_LIBS" ;; #(
+  *) :
+     ;;
+esac
 
-    ac_save_LIBS=$LIBS
-    ac_cv_lib_lex='none needed'
-    for ac_lib in '' -lfl -ll; do
-      LIBS="$ac_lib $ac_save_LIBS"
       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 `cat $LEX_OUTPUT_ROOT.c`
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_lex=$ac_lib
+if ac_fn_c_try_link "$LINENO"
+then :
+  ac_found=:
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
-      test "$ac_cv_lib_lex" != 'none needed' && break
+      if $ac_found; then
+        break
+      fi
     done
-    LIBS=$ac_save_LIBS
+    LIBS="$ac_save_LIBS"
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5
-$as_echo "$ac_cv_lib_lex" >&6; }
-  test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5
+printf "%s\n" "$ac_cv_lib_lex" >&6; }
+  if test "$ac_cv_lib_lex" = 'not found'
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: required lex library not found; giving up on $LEX" >&5
+printf "%s\n" "$as_me: WARNING: required lex library not found; giving up on $LEX" >&2;}
+        LEX=: LEXLIB=
+elif test "$ac_cv_lib_lex" = 'none needed'
+then :
+  LEXLIB=''
+else $as_nop
+  LEXLIB=$ac_cv_lib_lex
 fi
 
+fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5
-$as_echo_n "checking whether yytext is a pointer... " >&6; }
-if ${ac_cv_prog_lex_yytext_pointer+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+
+if test "$LEX" != :
+then :
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5
+printf %s "checking whether yytext is a pointer... " >&6; }
+if test ${ac_cv_prog_lex_yytext_pointer+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   # POSIX says lex can declare yytext either as a pointer or an array; the
 # default is implementation-dependent.  Figure out which it is, since
 # not all implementations provide the %pointer and %array declarations.
 ac_cv_prog_lex_yytext_pointer=no
-ac_save_LIBS=$LIBS
-LIBS="$LEXLIB $ac_save_LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
   #define YYTEXT_POINTER 1
 `cat $LEX_OUTPUT_ROOT.c`
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_prog_lex_yytext_pointer=yes
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_save_LIBS
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5
-$as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5
+printf "%s\n" "$ac_cv_prog_lex_yytext_pointer" >&6; }
 if test $ac_cv_prog_lex_yytext_pointer = yes; then
 
-$as_echo "#define YYTEXT_POINTER 1" >>confdefs.h
+printf "%s\n" "#define YYTEXT_POINTER 1" >>confdefs.h
+
+fi
 
 fi
 rm -f conftest.l $LEX_OUTPUT_ROOT.c
@@ -6575,32 +7161,32 @@ rm -f conftest.l $LEX_OUTPUT_ROOT.c
 fi
 if test "$LEX" != "" -a "$LEX" != ":"; then
 
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for yylex_destroy" >&5
-$as_echo_n "checking for yylex_destroy... " >&6; }
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for yylex_destroy" >&5
+printf %s "checking for yylex_destroy... " >&6; }
        if echo %% | $LEX -t 2>&1 | grep yylex_destroy >/dev/null 2>&1; then
 
-$as_echo "#define LEX_HAS_YYLEX_DESTROY 1" >>confdefs.h
+printf "%s\n" "#define LEX_HAS_YYLEX_DESTROY 1" >>confdefs.h
 
-               { $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; };
+               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+       else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; };
                LEX=":"
        fi
 
 fi
 if test "$LEX" != "" -a "$LEX" != ":"; then
 
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lex %option" >&5
-$as_echo_n "checking for lex %option... " >&6; }
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lex %option" >&5
+printf %s "checking for lex %option... " >&6; }
        if cat <<EOF | $LEX -t 2>&1 | grep yy_delete_buffer >/dev/null 2>&1; then
 %option nounput
 %%
 EOF
-               { $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; };
+               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+       else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; };
                LEX=":"
        fi
 
@@ -6609,11 +7195,12 @@ for ac_prog in 'bison -y' byacc
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; 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_prog_YACC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_YACC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$YACC"; then
   ac_cv_prog_YACC="$YACC" # Let the user override the test.
 else
@@ -6621,11 +7208,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_YACC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -6636,11 +7227,11 @@ fi
 fi
 YACC=$ac_cv_prog_YACC
 if test -n "$YACC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5
-$as_echo "$YACC" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5
+printf "%s\n" "$YACC" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -6650,11 +7241,12 @@ test -n "$YACC" || YACC="yacc"
 
 # Extract the first word of "doxygen", so it can be a program name with args.
 set dummy doxygen; 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_prog_doxygen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_doxygen+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$doxygen"; then
   ac_cv_prog_doxygen="$doxygen" # Let the user override the test.
 else
@@ -6662,11 +7254,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_doxygen="doxygen"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -6677,22 +7273,23 @@ fi
 fi
 doxygen=$ac_cv_prog_doxygen
 if test -n "$doxygen"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $doxygen" >&5
-$as_echo "$doxygen" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $doxygen" >&5
+printf "%s\n" "$doxygen" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
 set dummy ${ac_tool_prefix}strip; 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_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_STRIP+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$STRIP"; then
   ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
 else
@@ -6700,11 +7297,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -6715,11 +7316,11 @@ fi
 fi
 STRIP=$ac_cv_prog_STRIP
 if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+printf "%s\n" "$STRIP" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -6728,11 +7329,12 @@ if test -z "$ac_cv_prog_STRIP"; then
   ac_ct_STRIP=$STRIP
   # Extract the first word of "strip", so it can be a program name with args.
 set dummy strip; 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_prog_ac_ct_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_STRIP+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$ac_ct_STRIP"; then
   ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
 else
@@ -6740,11 +7342,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -6755,11 +7361,11 @@ fi
 fi
 ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
 if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+printf "%s\n" "$ac_ct_STRIP" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
   if test "x$ac_ct_STRIP" = x; then
@@ -6767,8 +7373,8 @@ fi
   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;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     STRIP=$ac_ct_STRIP
@@ -6777,55 +7383,30 @@ else
   STRIP="$ac_cv_prog_STRIP"
 fi
 
-ac_aux_dir=
-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
-  if test -f "$ac_dir/install-sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f "$ac_dir/install.sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  elif test -f "$ac_dir/shtool"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/shtool install -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
-fi
 
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
 
 
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+  # Make sure we can run config.sub.
+$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+printf %s "checking build system type... " >&6; }
+if test ${ac_cv_build+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_build_alias=$build_alias
 test "x$ac_build_alias" = x &&
-  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+  ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"`
 test "x$ac_build_alias" = x &&
   as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` ||
+  as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+printf "%s\n" "$ac_cv_build" >&6; }
 case $ac_cv_build in
 *-*-*) ;;
 *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
@@ -6844,21 +7425,22 @@ IFS=$ac_save_IFS
 case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+printf %s "checking host system type... " >&6; }
+if test ${ac_cv_host+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test "x$host_alias" = x; then
   ac_cv_host=$ac_cv_build
 else
-  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+  ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` ||
+    as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5
 fi
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+printf "%s\n" "$ac_cv_host" >&6; }
 case $ac_cv_host in
 *-*-*) ;;
 *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
@@ -6900,11 +7482,12 @@ fi
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ar; 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_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_AR+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $AR in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_AR="$AR" # Let the user override the test with a path.
@@ -6914,11 +7497,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     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_AR="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_AR="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -6930,11 +7517,11 @@ esac
 fi
 AR=$ac_cv_path_AR
 if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+printf "%s\n" "$AR" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -6943,11 +7530,12 @@ if test -z "$ac_cv_path_AR"; then
   ac_pt_AR=$AR
   # Extract the first word of "ar", so it can be a program name with args.
 set dummy ar; 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_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_AR+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $ac_pt_AR in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_ac_pt_AR="$ac_pt_AR" # Let the user override the test with a path.
@@ -6957,11 +7545,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     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_AR="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_AR="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -6973,11 +7565,11 @@ esac
 fi
 ac_pt_AR=$ac_cv_path_ac_pt_AR
 if test -n "$ac_pt_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_AR" >&5
-$as_echo "$ac_pt_AR" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_AR" >&5
+printf "%s\n" "$ac_pt_AR" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
   if test "x$ac_pt_AR" = x; then
@@ -6985,8 +7577,8 @@ fi
   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;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     AR=$ac_pt_AR
@@ -6999,10 +7591,11 @@ if test $AR = false; then
        as_fn_error $? "Cannot find 'ar', please extend PATH to include it" "$LINENO" 5
 fi
 
+
 case `pwd` in
   *\ * | *\    *)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
-$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
 esac
 
 
@@ -7022,6 +7615,7 @@ macro_revision='2.4.6'
 
 
 
+
 ltmain=$ac_aux_dir/ltmain.sh
 
 # Backslashify metacharacters that are still active within
@@ -7045,8 +7639,8 @@ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
 ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
-$as_echo_n "checking how to print strings... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+printf %s "checking how to print strings... " >&6; }
 # Test print first, because it will be a builtin if present.
 if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
    test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
@@ -7072,12 +7666,12 @@ func_echo_all ()
 }
 
 case $ECHO in
-  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
-$as_echo "printf" >&6; } ;;
-  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
-$as_echo "print -r" >&6; } ;;
-  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
-$as_echo "cat" >&6; } ;;
+  printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+printf "%s\n" "printf" >&6; } ;;
+  print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+printf "%s\n" "print -r" >&6; } ;;
+  *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+printf "%s\n" "cat" >&6; } ;;
 esac
 
 
@@ -7093,11 +7687,12 @@ esac
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+printf %s "checking for a sed that does not truncate output... " >&6; }
+if test ${ac_cv_path_SED+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
             ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
      for ac_i in 1 2 3 4 5 6 7; do
        ac_script="$ac_script$as_nl$ac_script"
@@ -7111,10 +7706,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in sed gsed; do
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_prog in sed gsed
+   do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      ac_path_SED="$as_dir$ac_prog$ac_exec_ext"
       as_fn_executable_p "$ac_path_SED" || continue
 # Check for GNU ac_path_SED and select it if it is found.
   # Check for GNU $ac_path_SED
@@ -7123,13 +7723,13 @@ case `"$ac_path_SED" --version 2>&1` in
   ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
 *)
   ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
+  printf %s 0123456789 >"conftest.in"
   while :
   do
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    $as_echo '' >> "conftest.nl"
+    printf "%s\n" '' >> "conftest.nl"
     "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
@@ -7157,8 +7757,8 @@ else
 fi
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+printf "%s\n" "$ac_cv_path_SED" >&6; }
  SED="$ac_cv_path_SED"
   rm -f conftest.sed
 
@@ -7175,11 +7775,154 @@ Xsed="$SED -e 1s/^X//"
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
-$as_echo_n "checking for fgrep... " >&6; }
-if ${ac_cv_path_FGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+printf %s "checking for grep that handles long lines and -e... " >&6; }
+if test ${ac_cv_path_GREP+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_prog in grep ggrep
+   do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  printf %s 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    printf "%s\n" 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+printf "%s\n" "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+printf %s "checking for egrep... " >&6; }
+if test ${ac_cv_path_EGREP+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_prog in egrep
+   do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  printf %s 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    printf "%s\n" 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
 else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+printf "%s\n" "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+printf %s "checking for fgrep... " >&6; }
+if test ${ac_cv_path_FGREP+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
    then ac_cv_path_FGREP="$GREP -F"
    else
@@ -7190,10 +7933,15 @@ else
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in fgrep; do
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_prog in fgrep
+   do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+      ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext"
       as_fn_executable_p "$ac_path_FGREP" || continue
 # Check for GNU ac_path_FGREP and select it if it is found.
   # Check for GNU $ac_path_FGREP
@@ -7202,13 +7950,13 @@ case `"$ac_path_FGREP" --version 2>&1` in
   ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
 *)
   ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
+  printf %s 0123456789 >"conftest.in"
   while :
   do
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    $as_echo 'FGREP' >> "conftest.nl"
+    printf "%s\n" 'FGREP' >> "conftest.nl"
     "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
@@ -7237,8 +7985,8 @@ fi
 
    fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
-$as_echo "$ac_cv_path_FGREP" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+printf "%s\n" "$ac_cv_path_FGREP" >&6; }
  FGREP="$ac_cv_path_FGREP"
 
 
@@ -7263,17 +8011,18 @@ test -z "$GREP" && GREP=grep
 
 
 # Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
+if test ${with_gnu_ld+y}
+then :
   withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
-else
+else $as_nop
   with_gnu_ld=no
 fi
 
 ac_prog=ld
 if test yes = "$GCC"; then
   # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+printf %s "checking for ld used by $CC... " >&6; }
   case $host in
   *-*-mingw*)
     # gcc leaves a trailing carriage return, which upsets mingw
@@ -7302,15 +8051,16 @@ $as_echo_n "checking for ld used by $CC... " >&6; }
     ;;
   esac
 elif test yes = "$with_gnu_ld"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+printf %s "checking for GNU ld... " >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+printf %s "checking for non-GNU ld... " >&6; }
 fi
-if ${lt_cv_path_LD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if test ${lt_cv_path_LD+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -z "$LD"; then
   lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
   for ac_dir in $PATH; do
@@ -7339,18 +8089,19 @@ fi
 
 LD=$lt_cv_path_LD
 if test -n "$LD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+printf "%s\n" "$LD" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${lt_cv_prog_gnu_ld+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+printf %s "checking if the linker ($LD) is GNU ld... " >&6; }
+if test ${lt_cv_prog_gnu_ld+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   # I'd rather use --version here, but apparently some GNU lds only accept -v.
 case `$LD -v 2>&1 </dev/null` in
 *GNU* | *'with BFD'*)
@@ -7361,8 +8112,8 @@ case `$LD -v 2>&1 </dev/null` in
   ;;
 esac
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; }
 with_gnu_ld=$lt_cv_prog_gnu_ld
 
 
@@ -7373,11 +8124,12 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
-$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
-if ${lt_cv_path_NM+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if test ${lt_cv_path_NM+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$NM"; then
   # Let the user override the test.
   lt_cv_path_NM=$NM
@@ -7427,8 +8179,8 @@ else
   : ${lt_cv_path_NM=no}
 fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
-$as_echo "$lt_cv_path_NM" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+printf "%s\n" "$lt_cv_path_NM" >&6; }
 if test no != "$lt_cv_path_NM"; then
   NM=$lt_cv_path_NM
 else
@@ -7441,11 +8193,12 @@ else
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; 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_prog_DUMPBIN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_DUMPBIN+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$DUMPBIN"; then
   ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
 else
@@ -7453,11 +8206,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -7468,11 +8225,11 @@ fi
 fi
 DUMPBIN=$ac_cv_prog_DUMPBIN
 if test -n "$DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
-$as_echo "$DUMPBIN" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+printf "%s\n" "$DUMPBIN" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -7485,11 +8242,12 @@ if test -z "$DUMPBIN"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; 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_prog_ac_ct_DUMPBIN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_DUMPBIN+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$ac_ct_DUMPBIN"; then
   ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
 else
@@ -7497,11 +8255,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -7512,11 +8274,11 @@ fi
 fi
 ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
 if test -n "$ac_ct_DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
-$as_echo "$ac_ct_DUMPBIN" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+printf "%s\n" "$ac_ct_DUMPBIN" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -7528,8 +8290,8 @@ done
   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;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     DUMPBIN=$ac_ct_DUMPBIN
@@ -7557,11 +8319,12 @@ test -z "$NM" && NM=nm
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
-$as_echo_n "checking the name lister ($NM) interface... " >&6; }
-if ${lt_cv_nm_interface+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+printf %s "checking the name lister ($NM) interface... " >&6; }
+if test ${lt_cv_nm_interface+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   lt_cv_nm_interface="BSD nm"
   echo "int some_variable = 0;" > conftest.$ac_ext
   (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
@@ -7577,26 +8340,27 @@ else
   fi
   rm -f conftest*
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
-$as_echo "$lt_cv_nm_interface" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+printf "%s\n" "$lt_cv_nm_interface" >&6; }
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+printf %s "checking whether ln -s works... " >&6; }
 LN_S=$as_ln_s
 if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+printf "%s\n" "no, using $LN_S" >&6; }
 fi
 
 # find the maximum length of command line arguments
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
-$as_echo_n "checking the maximum length of command line arguments... " >&6; }
-if ${lt_cv_sys_max_cmd_len+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+printf %s "checking the maximum length of command line arguments... " >&6; }
+if test ${lt_cv_sys_max_cmd_len+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
     i=0
   teststring=ABCD
 
@@ -7723,11 +8487,11 @@ else
 fi
 
 if test -n "$lt_cv_sys_max_cmd_len"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
-$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
-$as_echo "none" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5
+printf "%s\n" "none" >&6; }
 fi
 max_cmd_len=$lt_cv_sys_max_cmd_len
 
@@ -7771,11 +8535,12 @@ esac
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-if ${lt_cv_to_host_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
+printf %s "checking how to convert $build file names to $host format... " >&6; }
+if test ${lt_cv_to_host_file_cmd+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $host in
   *-*-mingw* )
     case $build in
@@ -7811,18 +8576,19 @@ esac
 fi
 
 to_host_file_cmd=$lt_cv_to_host_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-$as_echo "$lt_cv_to_host_file_cmd" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
+printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; }
 
 
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-if ${lt_cv_to_tool_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
+printf %s "checking how to convert $build file names to toolchain format... " >&6; }
+if test ${lt_cv_to_tool_file_cmd+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   #assume ordinary cross tools, or native build.
 lt_cv_to_tool_file_cmd=func_convert_file_noop
 case $host in
@@ -7838,22 +8604,23 @@ esac
 fi
 
 to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
+printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; }
 
 
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
-$as_echo_n "checking for $LD option to reload object files... " >&6; }
-if ${lt_cv_ld_reload_flag+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+printf %s "checking for $LD option to reload object files... " >&6; }
+if test ${lt_cv_ld_reload_flag+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   lt_cv_ld_reload_flag='-r'
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
-$as_echo "$lt_cv_ld_reload_flag" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+printf "%s\n" "$lt_cv_ld_reload_flag" >&6; }
 reload_flag=$lt_cv_ld_reload_flag
 case $reload_flag in
 "" | " "*) ;;
@@ -7886,11 +8653,12 @@ esac
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
 set dummy ${ac_tool_prefix}objdump; 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_prog_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_OBJDUMP+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$OBJDUMP"; then
   ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
 else
@@ -7898,11 +8666,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -7913,11 +8685,11 @@ fi
 fi
 OBJDUMP=$ac_cv_prog_OBJDUMP
 if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+printf "%s\n" "$OBJDUMP" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -7926,11 +8698,12 @@ if test -z "$ac_cv_prog_OBJDUMP"; then
   ac_ct_OBJDUMP=$OBJDUMP
   # Extract the first word of "objdump", so it can be a program name with args.
 set dummy objdump; 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_prog_ac_ct_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_OBJDUMP+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$ac_ct_OBJDUMP"; then
   ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
 else
@@ -7938,11 +8711,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_OBJDUMP="objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -7953,11 +8730,11 @@ fi
 fi
 ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
 if test -n "$ac_ct_OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+printf "%s\n" "$ac_ct_OBJDUMP" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
   if test "x$ac_ct_OBJDUMP" = x; then
@@ -7965,8 +8742,8 @@ fi
   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;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     OBJDUMP=$ac_ct_OBJDUMP
@@ -7985,11 +8762,12 @@ test -z "$OBJDUMP" && OBJDUMP=objdump
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
-$as_echo_n "checking how to recognize dependent libraries... " >&6; }
-if ${lt_cv_deplibs_check_method+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+printf %s "checking how to recognize dependent libraries... " >&6; }
+if test ${lt_cv_deplibs_check_method+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   lt_cv_file_magic_cmd='$MAGIC_CMD'
 lt_cv_file_magic_test_file=
 lt_cv_deplibs_check_method='unknown'
@@ -8185,8 +8963,8 @@ os2*)
 esac
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
-$as_echo "$lt_cv_deplibs_check_method" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+printf "%s\n" "$lt_cv_deplibs_check_method" >&6; }
 
 file_magic_glob=
 want_nocaseglob=no
@@ -8230,11 +9008,12 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
 set dummy ${ac_tool_prefix}dlltool; 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_prog_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_DLLTOOL+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$DLLTOOL"; then
   ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
 else
@@ -8242,11 +9021,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -8257,11 +9040,11 @@ fi
 fi
 DLLTOOL=$ac_cv_prog_DLLTOOL
 if test -n "$DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+printf "%s\n" "$DLLTOOL" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -8270,11 +9053,12 @@ if test -z "$ac_cv_prog_DLLTOOL"; then
   ac_ct_DLLTOOL=$DLLTOOL
   # Extract the first word of "dlltool", so it can be a program name with args.
 set dummy dlltool; 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_prog_ac_ct_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_DLLTOOL+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$ac_ct_DLLTOOL"; then
   ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
 else
@@ -8282,11 +9066,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -8297,11 +9085,11 @@ fi
 fi
 ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
 if test -n "$ac_ct_DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+printf "%s\n" "$ac_ct_DLLTOOL" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
   if test "x$ac_ct_DLLTOOL" = x; then
@@ -8309,8 +9097,8 @@ fi
   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;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     DLLTOOL=$ac_ct_DLLTOOL
@@ -8330,11 +9118,12 @@ test -z "$DLLTOOL" && DLLTOOL=dlltool
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
+printf %s "checking how to associate runtime and link libraries... " >&6; }
+if test ${lt_cv_sharedlib_from_linklib_cmd+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   lt_cv_sharedlib_from_linklib_cmd='unknown'
 
 case $host_os in
@@ -8357,8 +9146,8 @@ cygwin* | mingw* | pw32* | cegcc*)
 esac
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
+printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
 sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
 test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
 
@@ -8373,11 +9162,12 @@ if test -n "$ac_tool_prefix"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; 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_prog_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_AR+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$AR"; then
   ac_cv_prog_AR="$AR" # Let the user override the test.
 else
@@ -8385,11 +9175,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -8400,11 +9194,11 @@ fi
 fi
 AR=$ac_cv_prog_AR
 if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+printf "%s\n" "$AR" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -8417,11 +9211,12 @@ if test -z "$AR"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; 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_prog_ac_ct_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_AR+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$ac_ct_AR"; then
   ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
 else
@@ -8429,11 +9224,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_AR="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -8444,11 +9243,11 @@ fi
 fi
 ac_ct_AR=$ac_cv_prog_ac_ct_AR
 if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+printf "%s\n" "$ac_ct_AR" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -8460,8 +9259,8 @@ done
   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;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     AR=$ac_ct_AR
@@ -8481,30 +9280,32 @@ fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
-$as_echo_n "checking for archiver @FILE support... " >&6; }
-if ${lt_cv_ar_at_file+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+printf %s "checking for archiver @FILE support... " >&6; }
+if test ${lt_cv_ar_at_file+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   lt_cv_ar_at_file=no
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   echo conftest.$ac_objext > conftest.lst
       lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
       { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
   (eval $lt_ar_try) 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }
       if test 0 -eq "$ac_status"; then
        # Ensure the archiver fails upon bogus file names.
@@ -8512,7 +9313,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
        { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
   (eval $lt_ar_try) 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }
        if test 0 -ne "$ac_status"; then
           lt_cv_ar_at_file=@
@@ -8521,11 +9322,11 @@ if ac_fn_c_try_compile "$LINENO"; then :
       rm -f conftest.* libconftest.a
 
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
-$as_echo "$lt_cv_ar_at_file" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+printf "%s\n" "$lt_cv_ar_at_file" >&6; }
 
 if test no = "$lt_cv_ar_at_file"; then
   archiver_list_spec=
@@ -8542,11 +9343,12 @@ fi
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
 set dummy ${ac_tool_prefix}strip; 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_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_STRIP+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$STRIP"; then
   ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
 else
@@ -8554,11 +9356,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -8569,11 +9375,11 @@ fi
 fi
 STRIP=$ac_cv_prog_STRIP
 if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+printf "%s\n" "$STRIP" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -8582,11 +9388,12 @@ if test -z "$ac_cv_prog_STRIP"; then
   ac_ct_STRIP=$STRIP
   # Extract the first word of "strip", so it can be a program name with args.
 set dummy strip; 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_prog_ac_ct_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_STRIP+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$ac_ct_STRIP"; then
   ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
 else
@@ -8594,11 +9401,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -8609,11 +9420,11 @@ fi
 fi
 ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
 if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+printf "%s\n" "$ac_ct_STRIP" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
   if test "x$ac_ct_STRIP" = x; then
@@ -8621,8 +9432,8 @@ fi
   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;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     STRIP=$ac_ct_STRIP
@@ -8641,11 +9452,12 @@ test -z "$STRIP" && STRIP=:
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ranlib; 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_prog_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_RANLIB+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$RANLIB"; then
   ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
 else
@@ -8653,11 +9465,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -8668,11 +9484,11 @@ fi
 fi
 RANLIB=$ac_cv_prog_RANLIB
 if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+printf "%s\n" "$RANLIB" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -8681,11 +9497,12 @@ if test -z "$ac_cv_prog_RANLIB"; then
   ac_ct_RANLIB=$RANLIB
   # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; 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_prog_ac_ct_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_RANLIB+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$ac_ct_RANLIB"; then
   ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
 else
@@ -8693,11 +9510,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -8708,11 +9529,11 @@ fi
 fi
 ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
 if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+printf "%s\n" "$ac_ct_RANLIB" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
   if test "x$ac_ct_RANLIB" = x; then
@@ -8720,8 +9541,8 @@ fi
   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;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     RANLIB=$ac_ct_RANLIB
@@ -8785,11 +9606,12 @@ for ac_prog in gawk mawk nawk awk
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; 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_prog_AWK+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_AWK+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$AWK"; then
   ac_cv_prog_AWK="$AWK" # Let the user override the test.
 else
@@ -8797,11 +9619,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_AWK="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -8812,11 +9638,11 @@ fi
 fi
 AWK=$ac_cv_prog_AWK
 if test -n "$AWK"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+printf "%s\n" "$AWK" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -8852,11 +9678,12 @@ compiler=$CC
 
 
 # Check for command to grab the raw symbol name followed by C symbol from nm.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
-$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
-if ${lt_cv_sys_global_symbol_pipe+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+printf %s "checking command to parse $NM output from $compiler object... " >&6; }
+if test ${lt_cv_sys_global_symbol_pipe+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 # These are sane defaults that work on at least a few old systems.
 # [They come from Ultrix.  What could be older than Ultrix?!! ;)]
@@ -9008,14 +9835,14 @@ _LT_EOF
   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
     # Now try to grab the symbols.
     nlist=conftest.nm
     if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
   (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; } && test -s "$nlist"; then
       # Try sorting and uniquifying the output.
       if sort "$nlist" | uniq > "$nlist"T; then
@@ -9084,7 +9911,7 @@ _LT_EOF
          if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; } && test -s conftest$ac_exeext; then
            pipe_works=yes
          fi
@@ -9119,11 +9946,11 @@ if test -z "$lt_cv_sys_global_symbol_pipe"; then
   lt_cv_sys_global_symbol_to_cdecl=
 fi
 if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+printf "%s\n" "failed" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
-$as_echo "ok" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+printf "%s\n" "ok" >&6; }
 fi
 
 # Response file support.
@@ -9169,13 +9996,14 @@ fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
-$as_echo_n "checking for sysroot... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+printf %s "checking for sysroot... " >&6; }
 
 # Check whether --with-sysroot was given.
-if test "${with_sysroot+set}" = set; then :
+if test ${with_sysroot+y}
+then :
   withval=$with_sysroot;
-else
+else $as_nop
   with_sysroot=no
 fi
 
@@ -9193,24 +10021,25 @@ case $with_sysroot in #(
  no|'')
    ;; #(
  *)
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5
-$as_echo "$with_sysroot" >&6; }
+   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5
+printf "%s\n" "$with_sysroot" >&6; }
    as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
    ;;
 esac
 
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
-$as_echo "${lt_sysroot:-no}" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
+printf "%s\n" "${lt_sysroot:-no}" >&6; }
 
 
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5
-$as_echo_n "checking for a working dd... " >&6; }
-if ${ac_cv_path_lt_DD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5
+printf %s "checking for a working dd... " >&6; }
+if test ${ac_cv_path_lt_DD+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   printf 0123456789abcdef0123456789abcdef >conftest.i
 cat conftest.i conftest.i >conftest2.i
 : ${lt_DD:=$DD}
@@ -9221,10 +10050,15 @@ if test -z "$lt_DD"; then
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in dd; do
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_prog in dd
+   do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext"
+      ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext"
       as_fn_executable_p "$ac_path_lt_DD" || continue
 if "$ac_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
   cmp -s conftest.i conftest.out \
 
 rm -f conftest.i conftest2.i conftest.out
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5
-$as_echo "$ac_cv_path_lt_DD" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5
+printf "%s\n" "$ac_cv_path_lt_DD" >&6; }
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5
-$as_echo_n "checking how to truncate binary pipes... " >&6; }
-if ${lt_cv_truncate_bin+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5
+printf %s "checking how to truncate binary pipes... " >&6; }
+if test ${lt_cv_truncate_bin+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   printf 0123456789abcdef0123456789abcdef >conftest.i
 cat conftest.i conftest.i >conftest2.i
 lt_cv_truncate_bin=
@@ -9263,8 +10098,8 @@ fi
 rm -f conftest.i conftest2.i conftest.out
 test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5
-$as_echo "$lt_cv_truncate_bin" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5
+printf "%s\n" "$lt_cv_truncate_bin" >&6; }
 
 
 
@@ -9287,7 +10122,8 @@ func_cc_basename ()
 }
 
 # Check whether --enable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then :
+if test ${enable_libtool_lock+y}
+then :
   enableval=$enable_libtool_lock;
 fi
 
@@ -9303,7 +10139,7 @@ ia64-*-hpux*)
   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
     case `/usr/bin/file conftest.$ac_objext` in
       *ELF-32*)
@@ -9323,7 +10159,7 @@ ia64-*-hpux*)
   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
     if test yes = "$lt_cv_prog_gnu_ld"; then
       case `/usr/bin/file conftest.$ac_objext` in
@@ -9361,7 +10197,7 @@ mips64*-*linux*)
   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
     emul=elf
     case `/usr/bin/file conftest.$ac_objext` in
@@ -9402,7 +10238,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
     case `/usr/bin/file conftest.o` in
       *32-bit*)
@@ -9465,11 +10301,12 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # On SCO OpenServer 5, we need -belf to get full-featured binaries.
   SAVE_CFLAGS=$CFLAGS
   CFLAGS="$CFLAGS -belf"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
-$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
-if ${lt_cv_cc_needs_belf+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+printf %s "checking whether the C compiler needs -belf... " >&6; }
+if test ${lt_cv_cc_needs_belf+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -9480,19 +10317,20 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   lt_cv_cc_needs_belf=yes
-else
+else $as_nop
   lt_cv_cc_needs_belf=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
      ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -9501,8 +10339,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
-$as_echo "$lt_cv_cc_needs_belf" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+printf "%s\n" "$lt_cv_cc_needs_belf" >&6; }
   if test yes != "$lt_cv_cc_needs_belf"; then
     # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
     CFLAGS=$SAVE_CFLAGS
@@ -9515,7 +10353,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; }
   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
     case `/usr/bin/file conftest.o` in
     *64-bit*)
@@ -9552,11 +10390,12 @@ need_locks=$enable_libtool_lock
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
 set dummy ${ac_tool_prefix}mt; 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_prog_MANIFEST_TOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_MANIFEST_TOOL+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$MANIFEST_TOOL"; then
   ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
 else
@@ -9564,11 +10403,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
 fi
 MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
 if test -n "$MANIFEST_TOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
-$as_echo "$MANIFEST_TOOL" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
+printf "%s\n" "$MANIFEST_TOOL" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -9592,11 +10435,12 @@ if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
   ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
   # Extract the first word of "mt", so it can be a program name with args.
 set dummy mt; 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_prog_ac_ct_MANIFEST_TOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$ac_ct_MANIFEST_TOOL"; then
   ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
 else
@@ -9604,11 +10448,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
 fi
 ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
 if test -n "$ac_ct_MANIFEST_TOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
-$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
+printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
   if test "x$ac_ct_MANIFEST_TOOL" = x; then
@@ -9631,8 +10479,8 @@ fi
   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;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
@@ -9642,11 +10490,12 @@ else
 fi
 
 test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
-$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-if ${lt_cv_path_mainfest_tool+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
+printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
+if test ${lt_cv_path_mainfest_tool+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   lt_cv_path_mainfest_tool=no
   echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
   $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
@@ -9656,8 +10505,8 @@ else
   fi
   rm -f conftest*
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-$as_echo "$lt_cv_path_mainfest_tool" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
+printf "%s\n" "$lt_cv_path_mainfest_tool" >&6; }
 if test yes != "$lt_cv_path_mainfest_tool"; then
   MANIFEST_TOOL=:
 fi
     if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
 set dummy ${ac_tool_prefix}dsymutil; 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_prog_DSYMUTIL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_DSYMUTIL+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$DSYMUTIL"; then
   ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
 else
@@ -9684,11 +10534,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
 fi
 DSYMUTIL=$ac_cv_prog_DSYMUTIL
 if test -n "$DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
-$as_echo "$DSYMUTIL" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+printf "%s\n" "$DSYMUTIL" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -9712,11 +10566,12 @@ if test -z "$ac_cv_prog_DSYMUTIL"; then
   ac_ct_DSYMUTIL=$DSYMUTIL
   # Extract the first word of "dsymutil", so it can be a program name with args.
 set dummy dsymutil; 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_prog_ac_ct_DSYMUTIL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_DSYMUTIL+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$ac_ct_DSYMUTIL"; then
   ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
 else
@@ -9724,11 +10579,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
 fi
 ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
 if test -n "$ac_ct_DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
-$as_echo "$ac_ct_DSYMUTIL" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+printf "%s\n" "$ac_ct_DSYMUTIL" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
   if test "x$ac_ct_DSYMUTIL" = x; then
@@ -9751,8 +10610,8 @@ fi
   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;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     DSYMUTIL=$ac_ct_DSYMUTIL
     if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
 set dummy ${ac_tool_prefix}nmedit; 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_prog_NMEDIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_NMEDIT+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$NMEDIT"; then
   ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
 else
@@ -9776,11 +10636,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
 fi
 NMEDIT=$ac_cv_prog_NMEDIT
 if test -n "$NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
-$as_echo "$NMEDIT" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+printf "%s\n" "$NMEDIT" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -9804,11 +10668,12 @@ if test -z "$ac_cv_prog_NMEDIT"; then
   ac_ct_NMEDIT=$NMEDIT
   # Extract the first word of "nmedit", so it can be a program name with args.
 set dummy nmedit; 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_prog_ac_ct_NMEDIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_NMEDIT+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$ac_ct_NMEDIT"; then
   ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
 else
@@ -9816,11 +10681,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_NMEDIT="nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
 fi
 ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
 if test -n "$ac_ct_NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
-$as_echo "$ac_ct_NMEDIT" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+printf "%s\n" "$ac_ct_NMEDIT" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
   if test "x$ac_ct_NMEDIT" = x; then
@@ -9843,8 +10712,8 @@ fi
   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;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     NMEDIT=$ac_ct_NMEDIT
     if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
 set dummy ${ac_tool_prefix}lipo; 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_prog_LIPO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_LIPO+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$LIPO"; then
   ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
 else
@@ -9868,11 +10738,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
 fi
 LIPO=$ac_cv_prog_LIPO
 if test -n "$LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
-$as_echo "$LIPO" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+printf "%s\n" "$LIPO" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -9896,11 +10770,12 @@ if test -z "$ac_cv_prog_LIPO"; then
   ac_ct_LIPO=$LIPO
   # Extract the first word of "lipo", so it can be a program name with args.
 set dummy lipo; 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_prog_ac_ct_LIPO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_LIPO+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$ac_ct_LIPO"; then
   ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
 else
@@ -9908,11 +10783,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_LIPO="lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
 fi
 ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
 if test -n "$ac_ct_LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
-$as_echo "$ac_ct_LIPO" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+printf "%s\n" "$ac_ct_LIPO" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
   if test "x$ac_ct_LIPO" = x; then
@@ -9935,8 +10814,8 @@ fi
   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;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     LIPO=$ac_ct_LIPO
     if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
 set dummy ${ac_tool_prefix}otool; 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_prog_OTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_OTOOL+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$OTOOL"; then
   ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
 else
@@ -9960,11 +10840,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
 fi
 OTOOL=$ac_cv_prog_OTOOL
 if test -n "$OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
-$as_echo "$OTOOL" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+printf "%s\n" "$OTOOL" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -9988,11 +10872,12 @@ if test -z "$ac_cv_prog_OTOOL"; then
   ac_ct_OTOOL=$OTOOL
   # Extract the first word of "otool", so it can be a program name with args.
 set dummy otool; 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_prog_ac_ct_OTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_OTOOL+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$ac_ct_OTOOL"; then
   ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
 else
@@ -10000,11 +10885,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_OTOOL="otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
 fi
 ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
 if test -n "$ac_ct_OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
-$as_echo "$ac_ct_OTOOL" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+printf "%s\n" "$ac_ct_OTOOL" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
   if test "x$ac_ct_OTOOL" = x; then
@@ -10027,8 +10916,8 @@ fi
   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;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     OTOOL=$ac_ct_OTOOL
     if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
 set dummy ${ac_tool_prefix}otool64; 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_prog_OTOOL64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_OTOOL64+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$OTOOL64"; then
   ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
 else
@@ -10052,11 +10942,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
 fi
 OTOOL64=$ac_cv_prog_OTOOL64
 if test -n "$OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
-$as_echo "$OTOOL64" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+printf "%s\n" "$OTOOL64" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -10080,11 +10974,12 @@ if test -z "$ac_cv_prog_OTOOL64"; then
   ac_ct_OTOOL64=$OTOOL64
   # Extract the first word of "otool64", so it can be a program name with args.
 set dummy otool64; 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_prog_ac_ct_OTOOL64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_OTOOL64+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$ac_ct_OTOOL64"; then
   ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
 else
@@ -10092,11 +10987,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_OTOOL64="otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
 fi
 ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
 if test -n "$ac_ct_OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
-$as_echo "$ac_ct_OTOOL64" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+printf "%s\n" "$ac_ct_OTOOL64" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
   if test "x$ac_ct_OTOOL64" = x; then
@@ -10119,8 +11018,8 @@ fi
   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;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     OTOOL64=$ac_ct_OTOOL64
 
 
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
-$as_echo_n "checking for -single_module linker flag... " >&6; }
-if ${lt_cv_apple_cc_single_mod+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+printf %s "checking for -single_module linker flag... " >&6; }
+if test ${lt_cv_apple_cc_single_mod+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   lt_cv_apple_cc_single_mod=no
       if test -z "$LT_MULTI_MODULE"; then
        # By default we will add the -single_module flag. You can override
@@ -10188,14 +11088,15 @@ else
        rm -f conftest.*
       fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
-$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
-$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
-if ${lt_cv_ld_exported_symbols_list+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+printf %s "checking for -exported_symbols_list linker flag... " >&6; }
+if test ${lt_cv_ld_exported_symbols_list+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   lt_cv_ld_exported_symbols_list=no
       save_LDFLAGS=$LDFLAGS
       echo "_main" > conftest.sym
@@ -10204,31 +11105,33 @@ else
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   lt_cv_ld_exported_symbols_list=yes
-else
+else $as_nop
   lt_cv_ld_exported_symbols_list=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
        LDFLAGS=$save_LDFLAGS
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
-$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
-$as_echo_n "checking for -force_load linker flag... " >&6; }
-if ${lt_cv_ld_force_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+printf %s "checking for -force_load linker flag... " >&6; }
+if test ${lt_cv_ld_force_load+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   lt_cv_ld_force_load=no
       cat > conftest.c << _LT_EOF
 int forced_loaded() { return 2;}
@@ -10256,8 +11159,8 @@ _LT_EOF
         rm -rf conftest.dSYM
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
-$as_echo "$lt_cv_ld_force_load" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+printf "%s\n" "$lt_cv_ld_force_load" >&6; }
     case $host_os in
     rhapsody* | darwin1.[012])
       _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
@@ -10328,19 +11231,14 @@ func_munge_path_list ()
     esac
 }
 
-for ac_header in dlfcn.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
 "
-if test "x$ac_cv_header_dlfcn_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
-_ACEOF
+if test "x$ac_cv_header_dlfcn_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h
 
 fi
 
-done
-
 
 
 
@@ -10358,7 +11256,8 @@ done
 
 
             # Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then :
+if test ${enable_shared+y}
+then :
   enableval=$enable_shared; p=${PACKAGE-default}
     case $enableval in
     yes) enable_shared=yes ;;
@@ -10376,7 +11275,7 @@ if test "${enable_shared+set}" = set; then :
       IFS=$lt_save_ifs
       ;;
     esac
-else
+else $as_nop
   enable_shared=yes
 fi
 
@@ -10389,7 +11288,8 @@ fi
 
 
   # Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then :
+if test ${enable_static+y}
+then :
   enableval=$enable_static; p=${PACKAGE-default}
     case $enableval in
     yes) enable_static=yes ;;
@@ -10407,7 +11307,7 @@ if test "${enable_static+set}" = set; then :
       IFS=$lt_save_ifs
       ;;
     esac
-else
+else $as_nop
   enable_static=yes
 fi
 
@@ -10421,7 +11321,8 @@ fi
 
 
 # Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then :
+if test ${with_pic+y}
+then :
   withval=$with_pic; lt_p=${PACKAGE-default}
     case $withval in
     yes|no) pic_mode=$withval ;;
@@ -10438,7 +11339,7 @@ if test "${with_pic+set}" = set; then :
       IFS=$lt_save_ifs
       ;;
     esac
-else
+else $as_nop
   pic_mode=default
 fi
 
@@ -10450,7 +11351,8 @@ fi
 
 
   # Check whether --enable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then :
+if test ${enable_fast_install+y}
+then :
   enableval=$enable_fast_install; p=${PACKAGE-default}
     case $enableval in
     yes) enable_fast_install=yes ;;
@@ -10468,7 +11370,7 @@ if test "${enable_fast_install+set}" = set; then :
       IFS=$lt_save_ifs
       ;;
     esac
-else
+else $as_nop
   enable_fast_install=yes
 fi
 
   shared_archive_member_spec=
 case $host,$enable_shared in
 power*-*-aix[5-9]*,yes)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5
-$as_echo_n "checking which variant of shared library versioning to provide... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5
+printf %s "checking which variant of shared library versioning to provide... " >&6; }
 
 # Check whether --with-aix-soname was given.
-if test "${with_aix_soname+set}" = set; then :
+if test ${with_aix_soname+y}
+then :
   withval=$with_aix_soname; case $withval in
     aix|svr4|both)
       ;;
@@ -10495,18 +11398,19 @@ if test "${with_aix_soname+set}" = set; then :
       ;;
     esac
     lt_cv_with_aix_soname=$with_aix_soname
-else
-  if ${lt_cv_with_aix_soname+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+else $as_nop
+  if test ${lt_cv_with_aix_soname+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   lt_cv_with_aix_soname=aix
 fi
 
     with_aix_soname=$lt_cv_with_aix_soname
 fi
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5
-$as_echo "$with_aix_soname" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5
+printf "%s\n" "$with_aix_soname" >&6; }
   if test aix != "$with_aix_soname"; then
     # For the AIX way of multilib, we name the shared archive member
     # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
@@ -10588,11 +11492,12 @@ if test -n "${ZSH_VERSION+set}"; then
    setopt NO_GLOB_SUBST
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
-$as_echo_n "checking for objdir... " >&6; }
-if ${lt_cv_objdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+printf %s "checking for objdir... " >&6; }
+if test ${lt_cv_objdir+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   rm -f .libs 2>/dev/null
 mkdir .libs 2>/dev/null
 if test -d .libs; then
@@ -10603,17 +11508,15 @@ else
 fi
 rmdir .libs 2>/dev/null
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
-$as_echo "$lt_cv_objdir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+printf "%s\n" "$lt_cv_objdir" >&6; }
 objdir=$lt_cv_objdir
 
 
 
 
 
-cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
-_ACEOF
+printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h
 
 
 
@@ -10659,11 +11562,12 @@ test -z "$MAGIC_CMD" && MAGIC_CMD=file
 case $deplibs_check_method in
 file_magic*)
   if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
-$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+printf %s "checking for ${ac_tool_prefix}file... " >&6; }
+if test ${lt_cv_path_MAGIC_CMD+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $MAGIC_CMD in
 [\\/*] |  ?:[\\/]*)
   lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
 
 MAGIC_CMD=$lt_cv_path_MAGIC_CMD
 if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+printf "%s\n" "$MAGIC_CMD" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
 
 if test -z "$lt_cv_path_MAGIC_CMD"; then
   if test -n "$ac_tool_prefix"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
-$as_echo_n "checking for file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+printf %s "checking for file... " >&6; }
+if test ${lt_cv_path_MAGIC_CMD+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $MAGIC_CMD in
 [\\/*] |  ?:[\\/]*)
   lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
 
 MAGIC_CMD=$lt_cv_path_MAGIC_CMD
 if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+printf "%s\n" "$MAGIC_CMD" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -10863,11 +11768,12 @@ if test yes = "$GCC"; then
     lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
   esac
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
-if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if test ${lt_cv_prog_compiler_rtti_exceptions+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   lt_cv_prog_compiler_rtti_exceptions=no
    ac_outfile=conftest.$ac_objext
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
@@ -10898,8 +11804,8 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
 
 if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then
     lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
@@ -11256,26 +12162,28 @@ case $host_os in
     ;;
 esac
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+printf %s "checking for $compiler option to produce PIC... " >&6; }
+if test ${lt_cv_prog_compiler_pic+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
-$as_echo "$lt_cv_prog_compiler_pic" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
+printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; }
 lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
 
 #
 # Check to make sure the PIC flag actually works.
 #
 if test -n "$lt_prog_compiler_pic"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if test ${lt_cv_prog_compiler_pic_works+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   lt_cv_prog_compiler_pic_works=no
    ac_outfile=conftest.$ac_objext
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
@@ -11306,8 +12214,8 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; }
 
 if test yes = "$lt_cv_prog_compiler_pic_works"; then
     case $lt_prog_compiler_pic in
 # Check to make sure the static flag actually works.
 #
 wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if test ${lt_cv_prog_compiler_static_works+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   lt_cv_prog_compiler_static_works=no
    save_LDFLAGS=$LDFLAGS
    LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
@@ -11363,8 +12272,8 @@ else
    LDFLAGS=$save_LDFLAGS
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
-$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; }
 
 if test yes = "$lt_cv_prog_compiler_static_works"; then
     :
 
 
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test ${lt_cv_prog_compiler_c_o+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   lt_cv_prog_compiler_c_o=no
    $RM -r conftest 2>/dev/null
    mkdir conftest
@@ -11425,19 +12335,20 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; }
 
 
 
 
 
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test ${lt_cv_prog_compiler_c_o+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   lt_cv_prog_compiler_c_o=no
    $RM -r conftest 2>/dev/null
    mkdir conftest
@@ -11480,8 +12391,8 @@ else
    $RM conftest*
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; }
 
 
 
@@ -11489,19 +12400,19 @@ $as_echo "$lt_cv_prog_compiler_c_o" >&6; }
 hard_links=nottested
 if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then
   # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+printf %s "checking if we can lock with hard links... " >&6; }
   hard_links=yes
   $RM conftest*
   ln conftest.a conftest.b 2>/dev/null && hard_links=no
   touch conftest.a
   ln conftest.a conftest.b 2>&5 || hard_links=no
   ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+printf "%s\n" "$hard_links" >&6; }
   if test no = "$hard_links"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
+printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
     need_locks=warn
   fi
 else
@@ -11513,8 +12424,8 @@ fi
 
 
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
 
   runpath_var=
   allow_undefined_flag=
@@ -12069,21 +12980,23 @@ _LT_EOF
         if test set = "${lt_cv_aix_libpath+set}"; then
   aix_libpath=$lt_cv_aix_libpath
 else
-  if ${lt_cv_aix_libpath_+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  if test ${lt_cv_aix_libpath_+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
 
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
@@ -12098,7 +13011,7 @@ if ac_fn_c_try_link "$LINENO"; then :
     lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
   fi
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
   if test -z "$lt_cv_aix_libpath_"; then
     lt_cv_aix_libpath_=/usr/lib:/lib
         if test set = "${lt_cv_aix_libpath+set}"; then
   aix_libpath=$lt_cv_aix_libpath
 else
-  if ${lt_cv_aix_libpath_+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  if test ${lt_cv_aix_libpath_+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
 
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
@@ -12151,7 +13066,7 @@ if ac_fn_c_try_link "$LINENO"; then :
     lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
   fi
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
   if test -z "$lt_cv_aix_libpath_"; then
     lt_cv_aix_libpath_=/usr/lib:/lib
 
          # Older versions of the 11.00 compiler do not understand -b yet
          # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
-$as_echo_n "checking if $CC understands -b... " >&6; }
-if ${lt_cv_prog_compiler__b+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+printf %s "checking if $CC understands -b... " >&6; }
+if test ${lt_cv_prog_compiler__b+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   lt_cv_prog_compiler__b=no
    save_LDFLAGS=$LDFLAGS
    LDFLAGS="$LDFLAGS -b"
@@ -12430,8 +13346,8 @@ else
    LDFLAGS=$save_LDFLAGS
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
-$as_echo "$lt_cv_prog_compiler__b" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+printf "%s\n" "$lt_cv_prog_compiler__b" >&6; }
 
 if test yes = "$lt_cv_prog_compiler__b"; then
     archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
        # work, assume that -exports_file does not work either and
        # implicitly export all symbols.
        # This should be the same for all languages, so no per-tag cache variable.
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
+printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
+if test ${lt_cv_irix_exported_symbol+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   save_LDFLAGS=$LDFLAGS
           LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
           cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 int foo (void) { return 0; }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   lt_cv_irix_exported_symbol=yes
-else
+else $as_nop
   lt_cv_irix_exported_symbol=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
            LDFLAGS=$save_LDFLAGS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
+printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; }
        if test yes = "$lt_cv_irix_exported_symbol"; then
           archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
        fi
@@ -12772,8 +13690,8 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
     fi
   fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
-$as_echo "$ld_shlibs" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+printf "%s\n" "$ld_shlibs" >&6; }
 test no = "$ld_shlibs" && can_build_shared=no
 
 with_gnu_ld=$with_gnu_ld
@@ -12809,18 +13727,19 @@ x|xyes)
       # Test whether the compiler implicitly links with -lc since on some
       # systems, -lgcc has to come before -lc. If gcc already passes -lc
       # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+printf %s "checking whether -lc should be explicitly linked in... " >&6; }
+if test ${lt_cv_archive_cmds_need_lc+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   $RM conftest*
        echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
        if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; } 2>conftest.err; then
          soname=conftest
          lib=conftest
@@ -12838,7 +13757,7 @@ else
          if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
   (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }
          then
            lt_cv_archive_cmds_need_lc=no
@@ -12852,8 +13771,8 @@ else
        $RM conftest*
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; }
       archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
       ;;
     esac
@@ -13012,8 +13931,8 @@ esac
 
 
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+printf %s "checking dynamic linker characteristics... " >&6; }
 
 if test yes = "$GCC"; then
   case $host_os in
@@ -13574,9 +14493,10 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   shlibpath_overrides_runpath=no
 
   # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  if test ${lt_cv_shlibpath_overrides_runpath+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   lt_cv_shlibpath_overrides_runpath=no
     save_LDFLAGS=$LDFLAGS
     save_libdir=$libdir
@@ -13586,19 +14506,21 @@ else
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+if ac_fn_c_try_link "$LINENO"
+then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null
+then :
   lt_cv_shlibpath_overrides_runpath=yes
 fi
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
     LDFLAGS=$save_LDFLAGS
     libdir=$save_libdir
@@ -13833,8 +14755,8 @@ uts4*)
   dynamic_linker=no
   ;;
 esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+printf "%s\n" "$dynamic_linker" >&6; }
 test no = "$dynamic_linker" && can_build_shared=no
 
 variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
@@ -13955,8 +14877,8 @@ configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
 
 
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+printf %s "checking how to hardcode library paths into programs... " >&6; }
 hardcode_action=
 if test -n "$hardcode_libdir_flag_spec" ||
    test -n "$runpath_var" ||
@@ -13980,8 +14902,8 @@ else
   # directories.
   hardcode_action=unsupported
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
-$as_echo "$hardcode_action" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+printf "%s\n" "$hardcode_action" >&6; }
 
 if test relink = "$hardcode_action" ||
    test yes = "$inherit_rpath"; then
@@ -14025,11 +14947,12 @@ else
 
   darwin*)
     # if libdl is installed we need to link against it
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+printf %s "checking for dlopen in -ldl... " >&6; }
+if test ${ac_cv_lib_dl_dlopen+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldl  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -14038,32 +14961,31 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char dlopen ();
 int
-main ()
+main (void)
 {
 return dlopen ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_dl_dlopen=yes
-else
+else $as_nop
   ac_cv_lib_dl_dlopen=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes
+then :
   lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
-else
+else $as_nop
 
     lt_cv_dlopen=dyld
     lt_cv_dlopen_libs=
 
   *)
     ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
-if test "x$ac_cv_func_shl_load" = xyes; then :
+if test "x$ac_cv_func_shl_load" = xyes
+then :
   lt_cv_dlopen=shl_load
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
-$as_echo_n "checking for shl_load in -ldld... " >&6; }
-if ${ac_cv_lib_dld_shl_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+printf %s "checking for shl_load in -ldld... " >&6; }
+if test ${ac_cv_lib_dld_shl_load+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldld  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -14099,41 +15023,42 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char shl_load ();
 int
-main ()
+main (void)
 {
 return shl_load ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_dld_shl_load=yes
-else
+else $as_nop
   ac_cv_lib_dld_shl_load=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
-$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes
+then :
   lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld
-else
+else $as_nop
   ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
-if test "x$ac_cv_func_dlopen" = xyes; then :
+if test "x$ac_cv_func_dlopen" = xyes
+then :
   lt_cv_dlopen=dlopen
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+printf %s "checking for dlopen in -ldl... " >&6; }
+if test ${ac_cv_lib_dl_dlopen+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldl  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -14142,37 +15067,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char dlopen ();
 int
-main ()
+main (void)
 {
 return dlopen ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_dl_dlopen=yes
-else
+else $as_nop
   ac_cv_lib_dl_dlopen=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes
+then :
   lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
-$as_echo_n "checking for dlopen in -lsvld... " >&6; }
-if ${ac_cv_lib_svld_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+printf %s "checking for dlopen in -lsvld... " >&6; }
+if test ${ac_cv_lib_svld_dlopen+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsvld  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -14181,37 +15106,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char dlopen ();
 int
-main ()
+main (void)
 {
 return dlopen ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_svld_dlopen=yes
-else
+else $as_nop
   ac_cv_lib_svld_dlopen=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
-$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
-if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = xyes
+then :
   lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
-$as_echo_n "checking for dld_link in -ldld... " >&6; }
-if ${ac_cv_lib_dld_dld_link+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+printf %s "checking for dld_link in -ldld... " >&6; }
+if test ${ac_cv_lib_dld_dld_link+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldld  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -14220,30 +15145,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char dld_link ();
 int
-main ()
+main (void)
 {
 return dld_link ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_dld_dld_link=yes
-else
+else $as_nop
   ac_cv_lib_dld_dld_link=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
-$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
-if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = xyes
+then :
   lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld
 fi
 
     save_LIBS=$LIBS
     LIBS="$lt_cv_dlopen_libs $LIBS"
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
-$as_echo_n "checking whether a program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+printf %s "checking whether a program can dlopen itself... " >&6; }
+if test ${lt_cv_dlopen_self+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
          if test yes = "$cross_compiling"; then :
   lt_cv_dlopen_self=cross
 else
@@ -14365,7 +15290,7 @@ _LT_EOF
   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
     (./conftest; exit; ) >&5 2>/dev/null
     lt_status=$?
@@ -14383,16 +15308,17 @@ rm -fr conftest*
 
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
-$as_echo "$lt_cv_dlopen_self" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+printf "%s\n" "$lt_cv_dlopen_self" >&6; }
 
     if test yes = "$lt_cv_dlopen_self"; then
       wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
-$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self_static+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+printf %s "checking whether a statically linked program can dlopen itself... " >&6; }
+if test ${lt_cv_dlopen_self_static+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
          if test yes = "$cross_compiling"; then :
   lt_cv_dlopen_self_static=cross
 else
@@ -14471,7 +15397,7 @@ _LT_EOF
   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
     (./conftest; exit; ) >&5 2>/dev/null
     lt_status=$?
@@ -14489,8 +15415,8 @@ rm -fr conftest*
 
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
-$as_echo "$lt_cv_dlopen_self_static" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+printf "%s\n" "$lt_cv_dlopen_self_static" >&6; }
     fi
 
     CPPFLAGS=$save_CPPFLAGS
 
 striplib=
 old_striplib=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
-$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+printf %s "checking whether stripping libraries is possible... " >&6; }
 if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
   test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
   test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 else
 # FIXME - insert some real tests, host_os isn't really good enough
   case $host_os in
@@ -14542,16 +15468,16 @@ else
     if test -n "$STRIP"; then
       striplib="$STRIP -x"
       old_striplib="$STRIP -S"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
     else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
     fi
     ;;
   *)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
     ;;
   esac
 fi
 
 
   # Report what library types will actually be built
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+printf %s "checking if libtool supports shared libraries... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+printf "%s\n" "$can_build_shared" >&6; }
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+printf %s "checking whether to build shared libraries... " >&6; }
   test no = "$can_build_shared" && enable_shared=no
 
   # On AIX, shared libraries and static libraries use the same namespace, and
@@ -14598,15 +15524,15 @@ $as_echo_n "checking whether to build shared libraries... " >&6; }
     fi
     ;;
   esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+printf "%s\n" "$enable_shared" >&6; }
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+printf %s "checking whether to build static libraries... " >&6; }
   # Make sure either enable_shared or enable_static is yes.
   test yes = "$enable_shared" || enable_static=yes
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+printf "%s\n" "$enable_static" >&6; }
 
 
 
@@ -14657,11 +15583,12 @@ 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
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PKG_CONFIG+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $PKG_CONFIG in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
@@ -14671,11 +15598,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     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
+  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"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -14687,11 +15618,11 @@ 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; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+printf "%s\n" "$PKG_CONFIG" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -14700,11 +15631,12 @@ 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
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_PKG_CONFIG+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   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.
@@ -14714,11 +15646,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     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
+  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"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -14730,11 +15666,11 @@ 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; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
   if test "x$ac_pt_PKG_CONFIG" = x; then
@@ -14742,8 +15678,8 @@ fi
   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;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     PKG_CONFIG=$ac_pt_PKG_CONFIG
 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; }
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+printf %s "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; }
+               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
        else
-               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
                PKG_CONFIG=""
        fi
 fi
 fi
 
-# Checks for header files.
-for ac_header in stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/select.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h ifaddrs.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+# Checks for header files.
+ac_fn_c_check_header_compile "$LINENO" "stdarg.h" "ac_cv_header_stdarg_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_stdarg_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_STDARG_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "stdbool.h" "ac_cv_header_stdbool_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_stdbool_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_STDBOOL_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "netinet/in.h" "ac_cv_header_netinet_in_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_netinet_in_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_NETINET_IN_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "netinet/tcp.h" "ac_cv_header_netinet_tcp_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_netinet_tcp_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_NETINET_TCP_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_sys_param_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_sys_select_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_sys_socket_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/un.h" "ac_cv_header_sys_un_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_sys_un_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_UN_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/uio.h" "ac_cv_header_sys_uio_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_sys_uio_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_UIO_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_sys_resource_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_RESOURCE_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "arpa/inet.h" "ac_cv_header_arpa_inet_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_arpa_inet_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_ARPA_INET_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "syslog.h" "ac_cv_header_syslog_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_syslog_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYSLOG_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "netdb.h" "ac_cv_header_netdb_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_netdb_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_NETDB_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_sys_wait_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_WAIT_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "pwd.h" "ac_cv_header_pwd_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_pwd_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_PWD_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "glob.h" "ac_cv_header_glob_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_glob_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_GLOB_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "grp.h" "ac_cv_header_grp_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_grp_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_GRP_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "login_cap.h" "ac_cv_header_login_cap_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_login_cap_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_LOGIN_CAP_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "winsock2.h" "ac_cv_header_winsock2_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_winsock2_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_WINSOCK2_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "ws2tcpip.h" "ac_cv_header_ws2tcpip_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_ws2tcpip_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_WS2TCPIP_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "endian.h" "ac_cv_header_endian_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_endian_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_ENDIAN_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/endian.h" "ac_cv_header_sys_endian_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_sys_endian_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_ENDIAN_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "libkern/OSByteOrder.h" "ac_cv_header_libkern_OSByteOrder_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_libkern_OSByteOrder_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_LIBKERN_OSBYTEORDER_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/ipc.h" "ac_cv_header_sys_ipc_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_sys_ipc_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_IPC_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/shm.h" "ac_cv_header_sys_shm_h" "$ac_includes_default
 "
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+if test "x$ac_cv_header_sys_shm_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_SHM_H 1" >>confdefs.h
 
 fi
+ac_fn_c_check_header_compile "$LINENO" "ifaddrs.h" "ac_cv_header_ifaddrs_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_ifaddrs_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_IFADDRS_H 1" >>confdefs.h
 
-done
+fi
 
 # net/if.h portability for Darwin see:
 # https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Header-Portability.html
-for ac_header in net/if.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "net/if.h" "ac_cv_header_net_if_h" "
+ac_fn_c_check_header_compile "$LINENO" "net/if.h" "ac_cv_header_net_if_h" "
 #include <stdio.h>
 #ifdef STDC_HEADERS
 # include <stdlib.h>
@@ -14802,33 +15905,23 @@ do :
 #endif
 
 "
-if test "x$ac_cv_header_net_if_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_NET_IF_H 1
-_ACEOF
+if test "x$ac_cv_header_net_if_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_NET_IF_H 1" >>confdefs.h
 
 fi
 
-done
-
 
 # Check for Apple header. This uncovers TARGET_OS_IPHONE, TARGET_OS_TV or TARGET_OS_WATCH
-for ac_header in TargetConditionals.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "TargetConditionals.h" "ac_cv_header_TargetConditionals_h" "$ac_includes_default
+ac_fn_c_check_header_compile "$LINENO" "TargetConditionals.h" "ac_cv_header_TargetConditionals_h" "$ac_includes_default
 "
-if test "x$ac_cv_header_TargetConditionals_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_TARGETCONDITIONALS_H 1
-_ACEOF
+if test "x$ac_cv_header_TargetConditionals_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_TARGETCONDITIONALS_H 1" >>confdefs.h
 
 fi
 
-done
-
-for ac_header in netioapi.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "netioapi.h" "ac_cv_header_netioapi_h" "$ac_includes_default
+ac_fn_c_check_header_compile "$LINENO" "netioapi.h" "ac_cv_header_netioapi_h" "$ac_includes_default
 #if HAVE_SYS_PARAM_H
 #include <sys/param.h>
 #endif
@@ -14862,177 +15955,324 @@ do :
 #endif
 
 "
-if test "x$ac_cv_header_netioapi_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_NETIOAPI_H 1
-_ACEOF
+if test "x$ac_cv_header_netioapi_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_NETIOAPI_H 1" >>confdefs.h
 
 fi
 
-done
-
 
 # check for types.
 # Using own tests for int64* because autoconf builtin only give 32bit.
 ac_fn_c_check_type "$LINENO" "int8_t" "ac_cv_type_int8_t" "$ac_includes_default"
-if test "x$ac_cv_type_int8_t" = xyes; then :
+if test "x$ac_cv_type_int8_t" = xyes
+then :
 
-else
+else $as_nop
 
-cat >>confdefs.h <<_ACEOF
-#define int8_t signed char
-_ACEOF
+printf "%s\n" "#define int8_t signed char" >>confdefs.h
 
 fi
 
 ac_fn_c_check_type "$LINENO" "int16_t" "ac_cv_type_int16_t" "$ac_includes_default"
-if test "x$ac_cv_type_int16_t" = xyes; then :
+if test "x$ac_cv_type_int16_t" = xyes
+then :
 
-else
+else $as_nop
 
-cat >>confdefs.h <<_ACEOF
-#define int16_t short
-_ACEOF
+printf "%s\n" "#define int16_t short" >>confdefs.h
 
 fi
 
 ac_fn_c_check_type "$LINENO" "int32_t" "ac_cv_type_int32_t" "$ac_includes_default"
-if test "x$ac_cv_type_int32_t" = xyes; then :
+if test "x$ac_cv_type_int32_t" = xyes
+then :
 
-else
+else $as_nop
 
-cat >>confdefs.h <<_ACEOF
-#define int32_t int
-_ACEOF
+printf "%s\n" "#define int32_t int" >>confdefs.h
 
 fi
 
 ac_fn_c_check_type "$LINENO" "int64_t" "ac_cv_type_int64_t" "$ac_includes_default"
-if test "x$ac_cv_type_int64_t" = xyes; then :
+if test "x$ac_cv_type_int64_t" = xyes
+then :
 
-else
+else $as_nop
 
-cat >>confdefs.h <<_ACEOF
-#define int64_t long long
-_ACEOF
+printf "%s\n" "#define int64_t long long" >>confdefs.h
 
 fi
 
 ac_fn_c_check_type "$LINENO" "uint8_t" "ac_cv_type_uint8_t" "$ac_includes_default"
-if test "x$ac_cv_type_uint8_t" = xyes; then :
+if test "x$ac_cv_type_uint8_t" = xyes
+then :
 
-else
+else $as_nop
 
-cat >>confdefs.h <<_ACEOF
-#define uint8_t unsigned char
-_ACEOF
+printf "%s\n" "#define uint8_t unsigned char" >>confdefs.h
 
 fi
 
 ac_fn_c_check_type "$LINENO" "uint16_t" "ac_cv_type_uint16_t" "$ac_includes_default"
-if test "x$ac_cv_type_uint16_t" = xyes; then :
+if test "x$ac_cv_type_uint16_t" = xyes
+then :
 
-else
+else $as_nop
 
-cat >>confdefs.h <<_ACEOF
-#define uint16_t unsigned short
-_ACEOF
+printf "%s\n" "#define uint16_t unsigned short" >>confdefs.h
 
 fi
 
 ac_fn_c_check_type "$LINENO" "uint32_t" "ac_cv_type_uint32_t" "$ac_includes_default"
-if test "x$ac_cv_type_uint32_t" = xyes; then :
+if test "x$ac_cv_type_uint32_t" = xyes
+then :
 
-else
+else $as_nop
 
-cat >>confdefs.h <<_ACEOF
-#define uint32_t unsigned int
-_ACEOF
+printf "%s\n" "#define uint32_t unsigned int" >>confdefs.h
 
 fi
 
 ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "$ac_includes_default"
-if test "x$ac_cv_type_uint64_t" = xyes; then :
+if test "x$ac_cv_type_uint64_t" = xyes
+then :
 
-else
+else $as_nop
 
-cat >>confdefs.h <<_ACEOF
-#define uint64_t unsigned long long
-_ACEOF
+printf "%s\n" "#define uint64_t unsigned long long" >>confdefs.h
 
 fi
 
 ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
+if test "x$ac_cv_type_size_t" = xyes
+then :
 
-else
+else $as_nop
 
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_ACEOF
+printf "%s\n" "#define size_t unsigned int" >>confdefs.h
 
 fi
 
 ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default"
-if test "x$ac_cv_type_ssize_t" = xyes; then :
+if test "x$ac_cv_type_ssize_t" = xyes
+then :
 
-else
+else $as_nop
+
+printf "%s\n" "#define ssize_t int" >>confdefs.h
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+printf %s "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test ${ac_cv_prog_CPP+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+      # Double quotes because $CC needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"
+then :
+
+else $as_nop
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
 
-cat >>confdefs.h <<_ACEOF
-#define ssize_t int
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
 _ACEOF
+if ac_fn_c_try_cpp "$LINENO"
+then :
+  # Broken: success on invalid input.
+continue
+else $as_nop
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
 
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok
+then :
+  break
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
-$as_echo_n "checking for uid_t in sys/types.h... " >&6; }
-if ${ac_cv_type_uid_t+:} false; then :
-  $as_echo_n "(cached) " >&6
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
 else
+  ac_cv_prog_CPP=$CPP
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+printf "%s\n" "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"
+then :
+
+else $as_nop
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"
+then :
+  # Broken: success on invalid input.
+continue
+else $as_nop
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok
+then :
+
+else $as_nop
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
+printf %s "checking for uid_t in sys/types.h... " >&6; }
+if test ${ac_cv_type_uid_t+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "uid_t" >/dev/null 2>&1; then :
+  $EGREP "uid_t" >/dev/null 2>&1
+then :
   ac_cv_type_uid_t=yes
-else
+else $as_nop
   ac_cv_type_uid_t=no
 fi
-rm -f conftest*
+rm -rf conftest*
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5
-$as_echo "$ac_cv_type_uid_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5
+printf "%s\n" "$ac_cv_type_uid_t" >&6; }
 if test $ac_cv_type_uid_t = no; then
 
-$as_echo "#define uid_t int" >>confdefs.h
+printf "%s\n" "#define uid_t int" >>confdefs.h
 
 
-$as_echo "#define gid_t int" >>confdefs.h
+printf "%s\n" "#define gid_t int" >>confdefs.h
 
 fi
 
-ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default"
-if test "x$ac_cv_type_pid_t" = xyes; then :
 
-else
+  ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default
+"
+if test "x$ac_cv_type_pid_t" = xyes
+then :
+
+else $as_nop
+                                          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+          #if defined _WIN64 && !defined __CYGWIN__
+          LLP64
+          #endif
+
+int
+main (void)
+{
+
+  ;
+  return 0;
+}
 
-cat >>confdefs.h <<_ACEOF
-#define pid_t int
 _ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_pid_type='int'
+else $as_nop
+  ac_pid_type='__int64'
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+printf "%s\n" "#define pid_t $ac_pid_type" >>confdefs.h
+
 
 fi
 
+
 ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default"
-if test "x$ac_cv_type_off_t" = xyes; then :
+if test "x$ac_cv_type_off_t" = xyes
+then :
 
-else
+else $as_nop
 
-cat >>confdefs.h <<_ACEOF
-#define off_t long int
-_ACEOF
+printf "%s\n" "#define off_t long int" >>confdefs.h
 
 fi
 
@@ -15043,11 +16283,12 @@ $ac_includes_default
 #endif
 
 "
-if test "x$ac_cv_type_u_char" = xyes; then :
+if test "x$ac_cv_type_u_char" = xyes
+then :
 
-else
+else $as_nop
 
-$as_echo "#define u_char unsigned char" >>confdefs.h
+printf "%s\n" "#define u_char unsigned char" >>confdefs.h
 
 fi
 
@@ -15058,11 +16299,12 @@ $ac_includes_default
 #endif
 
 "
-if test "x$ac_cv_type_rlim_t" = xyes; then :
+if test "x$ac_cv_type_rlim_t" = xyes
+then :
 
-else
+else $as_nop
 
-$as_echo "#define rlim_t unsigned long" >>confdefs.h
+printf "%s\n" "#define rlim_t unsigned long" >>confdefs.h
 
 fi
 
@@ -15077,11 +16319,12 @@ $ac_includes_default
 #endif
 
 "
-if test "x$ac_cv_type_socklen_t" = xyes; then :
+if test "x$ac_cv_type_socklen_t" = xyes
+then :
 
-else
+else $as_nop
 
-$as_echo "#define socklen_t int" >>confdefs.h
+printf "%s\n" "#define socklen_t int" >>confdefs.h
 
 fi
 
@@ -15095,11 +16338,12 @@ $ac_includes_default
 #endif
 
 "
-if test "x$ac_cv_type_in_addr_t" = xyes; then :
+if test "x$ac_cv_type_in_addr_t" = xyes
+then :
 
-else
+else $as_nop
 
-$as_echo "#define in_addr_t uint32_t" >>confdefs.h
+printf "%s\n" "#define in_addr_t uint32_t" >>confdefs.h
 
 fi
 
@@ -15113,21 +16357,23 @@ $ac_includes_default
 #endif
 
 "
-if test "x$ac_cv_type_in_port_t" = xyes; then :
+if test "x$ac_cv_type_in_port_t" = xyes
+then :
 
-else
+else $as_nop
 
-$as_echo "#define in_port_t uint16_t" >>confdefs.h
+printf "%s\n" "#define in_port_t uint16_t" >>confdefs.h
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if memcmp compares unsigned" >&5
-$as_echo_n "checking if memcmp compares unsigned... " >&6; }
-if test "$cross_compiling" = yes; then :
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: cross-compile no" >&5
-$as_echo "cross-compile no" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if memcmp compares unsigned" >&5
+printf %s "checking if memcmp compares unsigned... " >&6; }
+if test "$cross_compiling" = yes
+then :
+   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cross-compile no" >&5
+printf "%s\n" "cross-compile no" >&6; }
 
-$as_echo "#define MEMCMP_IS_BROKEN 1" >>confdefs.h
+printf "%s\n" "#define MEMCMP_IS_BROKEN 1" >>confdefs.h
 
   case " $LIBOBJS " in
   *" memcmp.$ac_objext "* ) ;;
@@ -15136,7 +16382,7 @@ $as_echo "#define MEMCMP_IS_BROKEN 1" >>confdefs.h
 esac
 
 
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -15152,14 +16398,15 @@ int main(void)
 }
 
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; 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; }
+if ac_fn_c_try_run "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 
-$as_echo "#define MEMCMP_IS_BROKEN 1" >>confdefs.h
+printf "%s\n" "#define MEMCMP_IS_BROKEN 1" >>confdefs.h
 
   case " $LIBOBJS " in
   *" memcmp.$ac_objext "* ) ;;
 # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
 # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
 # This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5
-$as_echo_n "checking size of time_t... " >&6; }
-if ${ac_cv_sizeof_time_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5
+printf %s "checking size of time_t... " >&6; }
+if test ${ac_cv_sizeof_time_t+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (time_t))" "ac_cv_sizeof_time_t"        "
 $ac_includes_default
 #ifdef TIME_WITH_SYS_TIME
@@ -15196,12 +16444,13 @@ $ac_includes_default
 # endif
 #endif
 
-"; then :
+"
+then :
 
-else
+else $as_nop
   if test "$ac_cv_type_time_t" = yes; then
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+     { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error 77 "cannot compute sizeof (time_t)
 See \`config.log' for more details" "$LINENO" 5; }
    else
@@ -15210,31 +16459,31 @@ See \`config.log' for more details" "$LINENO" 5; }
 fi
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_time_t" >&5
-$as_echo "$ac_cv_sizeof_time_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_time_t" >&5
+printf "%s\n" "$ac_cv_sizeof_time_t" >&6; }
 
 
 
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_TIME_T $ac_cv_sizeof_time_t
-_ACEOF
+printf "%s\n" "#define SIZEOF_TIME_T $ac_cv_sizeof_time_t" >>confdefs.h
 
 
 # The cast to long int works around a bug in the HP C Compiler
 # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
 # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
 # This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5
-$as_echo_n "checking size of size_t... " >&6; }
-if ${ac_cv_sizeof_size_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t"        "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5
+printf %s "checking size of size_t... " >&6; }
+if test ${ac_cv_sizeof_size_t+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t"        "$ac_includes_default"
+then :
+
+else $as_nop
   if test "$ac_cv_type_size_t" = yes; then
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+     { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error 77 "cannot compute sizeof (size_t)
 See \`config.log' for more details" "$LINENO" 5; }
    else
@@ -15243,23 +16492,22 @@ See \`config.log' for more details" "$LINENO" 5; }
 fi
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5
-$as_echo "$ac_cv_sizeof_size_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5
+printf "%s\n" "$ac_cv_sizeof_size_t" >&6; }
 
 
 
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t
-_ACEOF
+printf "%s\n" "#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t" >>confdefs.h
 
 
 
 # add option to disable the evil rpath
 
 # Check whether --enable-rpath was given.
-if test "${enable_rpath+set}" = set; then :
+if test ${enable_rpath+y}
+then :
   enableval=$enable_rpath; enable_rpath=$enableval
-else
+else $as_nop
   enable_rpath=yes
 fi
 
 
 
 # check to see if libraries are needed for these functions.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing inet_pton" >&5
-$as_echo_n "checking for library containing inet_pton... " >&6; }
-if ${ac_cv_search_inet_pton+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing inet_pton" >&5
+printf %s "checking for library containing inet_pton... " >&6; }
+if test ${ac_cv_search_inet_pton+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -15283,55 +16532,58 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char inet_pton ();
 int
-main ()
+main (void)
 {
 return inet_pton ();
   ;
   return 0;
 }
 _ACEOF
-for ac_lib in '' nsl; do
+for ac_lib in '' nsl
+do
   if test -z "$ac_lib"; then
     ac_res="none required"
   else
     ac_res=-l$ac_lib
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
   fi
-  if ac_fn_c_try_link "$LINENO"; then :
+  if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_search_inet_pton=$ac_res
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext
-  if ${ac_cv_search_inet_pton+:} false; then :
+  if test ${ac_cv_search_inet_pton+y}
+then :
   break
 fi
 done
-if ${ac_cv_search_inet_pton+:} false; then :
+if test ${ac_cv_search_inet_pton+y}
+then :
 
-else
+else $as_nop
   ac_cv_search_inet_pton=no
 fi
 rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_inet_pton" >&5
-$as_echo "$ac_cv_search_inet_pton" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_inet_pton" >&5
+printf "%s\n" "$ac_cv_search_inet_pton" >&6; }
 ac_res=$ac_cv_search_inet_pton
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5
-$as_echo_n "checking for library containing socket... " >&6; }
-if ${ac_cv_search_socket+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5
+printf %s "checking for library containing socket... " >&6; }
+if test ${ac_cv_search_socket+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -15339,46 +16591,48 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char socket ();
 int
-main ()
+main (void)
 {
 return socket ();
   ;
   return 0;
 }
 _ACEOF
-for ac_lib in '' socket; do
+for ac_lib in '' socket
+do
   if test -z "$ac_lib"; then
     ac_res="none required"
   else
     ac_res=-l$ac_lib
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
   fi
-  if ac_fn_c_try_link "$LINENO"; then :
+  if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_search_socket=$ac_res
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext
-  if ${ac_cv_search_socket+:} false; then :
+  if test ${ac_cv_search_socket+y}
+then :
   break
 fi
 done
-if ${ac_cv_search_socket+:} false; then :
+if test ${ac_cv_search_socket+y}
+then :
 
-else
+else $as_nop
   ac_cv_search_socket=no
 fi
 rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5
-$as_echo "$ac_cv_search_socket" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5
+printf "%s\n" "$ac_cv_search_socket" >&6; }
 ac_res=$ac_cv_search_socket
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
 fi
 # check whether strptime also works
 
 # check some functions of the OS before linking libs (while still runnable).
-for ac_header in unistd.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default"
-if test "x$ac_cv_header_unistd_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_UNISTD_H 1
-_ACEOF
-
-fi
-
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working chown" >&5
-$as_echo_n "checking for working chown... " >&6; }
-if ${ac_cv_func_chown_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ac_cv_func_chown_works=no
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working chown" >&5
+printf %s "checking for working chown... " >&6; }
+if test ${ac_cv_func_chown_works+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if test "$cross_compiling" = yes
+then :
+  case "$host_os" in # ((
+                         # Guess yes on glibc systems.
+                 *-gnu*) ac_cv_func_chown_works=yes ;;
+                         # If we don't know, assume the worst.
+                 *)      ac_cv_func_chown_works=no ;;
+               esac
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $ac_includes_default
 #include <fcntl.h>
 
 int
-main ()
+main (void)
 {
   char *f = "conftest.chown";
   struct stat before, after;
@@ -15432,9 +16681,10 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
   ac_cv_func_chown_works=yes
-else
+else $as_nop
   ac_cv_func_chown_works=no
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
 rm -f conftest.chown
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_chown_works" >&5
-$as_echo "$ac_cv_func_chown_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_chown_works" >&5
+printf "%s\n" "$ac_cv_func_chown_works" >&6; }
 if test $ac_cv_func_chown_works = yes; then
 
-$as_echo "#define HAVE_CHOWN 1" >>confdefs.h
+printf "%s\n" "#define HAVE_CHOWN 1" >>confdefs.h
 
 fi
 
-for ac_header in vfork.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "vfork.h" "ac_cv_header_vfork_h" "$ac_includes_default"
-if test "x$ac_cv_header_vfork_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_VFORK_H 1
-_ACEOF
-
-fi
 
+ac_func=
+for ac_item in $ac_func_c_list
+do
+  if test $ac_func; then
+    ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func
+    if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then
+      echo "#define $ac_item 1" >> confdefs.h
+    fi
+    ac_func=
+  else
+    ac_func=$ac_item
+  fi
 done
 
-for ac_func in fork vfork
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
 
-fi
-done
 
 if test "x$ac_cv_func_fork" = xyes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5
-$as_echo_n "checking for working fork... " >&6; }
-if ${ac_cv_func_fork_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5
+printf %s "checking for working fork... " >&6; }
+if test ${ac_cv_func_fork_works+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if test "$cross_compiling" = yes
+then :
   ac_cv_func_fork_works=cross
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $ac_includes_default
 int
-main ()
+main (void)
 {
 
          /* By Ruediger Kuhlmann. */
@@ -15499,9 +16744,10 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
   ac_cv_func_fork_works=yes
-else
+else $as_nop
   ac_cv_func_fork_works=no
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -15509,8 +16755,8 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
 fi
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5
-$as_echo "$ac_cv_func_fork_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5
+printf "%s\n" "$ac_cv_func_fork_works" >&6; }
 
 else
   ac_cv_func_fork_works=$ac_cv_func_fork
@@ -15525,27 +16771,37 @@ if test "x$ac_cv_func_fork_works" = xcross; then
       ac_cv_func_fork_works=yes
       ;;
   esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5
-$as_echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5
+printf "%s\n" "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;}
 fi
 ac_cv_func_vfork_works=$ac_cv_func_vfork
 if test "x$ac_cv_func_vfork" = xyes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5
-$as_echo_n "checking for working vfork... " >&6; }
-if ${ac_cv_func_vfork_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5
+printf %s "checking for working vfork... " >&6; }
+if test ${ac_cv_func_vfork_works+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if test "$cross_compiling" = yes
+then :
   ac_cv_func_vfork_works=cross
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 /* Thanks to Paul Eggert for this test.  */
 $ac_includes_default
+#include <signal.h>
 #include <sys/wait.h>
 #ifdef HAVE_VFORK_H
 # include <vfork.h>
 #endif
+
+static void
+do_nothing (int sig)
+{
+  (void) sig;
+}
+
 /* On some sparc systems, changes by the child to local and incoming
    argument registers are propagated back to the parent.  The compiler
    is told about this with #include <vfork.h>, but some compilers
@@ -15553,11 +16809,7 @@ $ac_includes_default
    static variable whose address is put into a register that is
    clobbered by the vfork.  */
 static void
-#ifdef __cplusplus
 sparc_address_test (int arg)
-# else
-sparc_address_test (arg) int arg;
-#endif
 {
   static pid_t child;
   if (!child) {
@@ -15575,13 +16827,18 @@ sparc_address_test (arg) int arg;
 }
 
 int
-main ()
+main (void)
 {
   pid_t parent = getpid ();
   pid_t child;
 
   sparc_address_test (0);
 
+  /* On Solaris 2.4, changes by the child to the signal handler
+     also munge signal handlers in the parent.  To detect this,
+     start by putting the parent's handler in a known state.  */
+  signal (SIGTERM, SIG_DFL);
+
   child = vfork ();
 
   if (child == 0) {
@@ -15603,6 +16860,10 @@ main ()
        || p != p5 || p != p6 || p != p7)
       _exit(1);
 
+    /* Alter the child's signal handler.  */
+    if (signal (SIGTERM, do_nothing) != SIG_DFL)
+      _exit(1);
+
     /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent
        from child file descriptors.  If the child closes a descriptor
        before it execs or exits, this munges the parent's descriptor
@@ -15618,6 +16879,9 @@ main ()
         /* Was there some problem with vforking?  */
         child < 0
 
+        /* Did the child munge the parent's signal handler?  */
+        || signal (SIGTERM, SIG_DFL) != SIG_DFL
+
         /* Did the child fail?  (This shouldn't happen.)  */
         || status
 
@@ -15630,9 +16894,10 @@ main ()
   }
 }
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
   ac_cv_func_vfork_works=yes
-else
+else $as_nop
   ac_cv_func_vfork_works=no
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -15640,46 +16905,47 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
 fi
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5
-$as_echo "$ac_cv_func_vfork_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5
+printf "%s\n" "$ac_cv_func_vfork_works" >&6; }
 
 fi;
 if test "x$ac_cv_func_fork_works" = xcross; then
   ac_cv_func_vfork_works=$ac_cv_func_vfork
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5
-$as_echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5
+printf "%s\n" "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;}
 fi
 
 if test "x$ac_cv_func_vfork_works" = xyes; then
 
-$as_echo "#define HAVE_WORKING_VFORK 1" >>confdefs.h
+printf "%s\n" "#define HAVE_WORKING_VFORK 1" >>confdefs.h
 
 else
 
-$as_echo "#define vfork fork" >>confdefs.h
+printf "%s\n" "#define vfork fork" >>confdefs.h
 
 fi
 if test "x$ac_cv_func_fork_works" = xyes; then
 
-$as_echo "#define HAVE_WORKING_FORK 1" >>confdefs.h
+printf "%s\n" "#define HAVE_WORKING_FORK 1" >>confdefs.h
 
 fi
 
 
-$as_echo "#define RETSIGTYPE void" >>confdefs.h
+printf "%s\n" "#define RETSIGTYPE void" >>confdefs.h
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5
-$as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_source+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5
+printf %s "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; }
+if test ${ac_cv_sys_largefile_source+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   while :; do
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h> /* for off_t */
      #include <stdio.h>
 int
-main ()
+main (void)
 {
 int (*fp) (FILE *, off_t, int) = fseeko;
      return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
@@ -15687,10 +16953,11 @@ int (*fp) (FILE *, off_t, int) = fseeko;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_sys_largefile_source=no; break
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -15698,7 +16965,7 @@ rm -f core conftest.err conftest.$ac_objext \
 #include <sys/types.h> /* for off_t */
      #include <stdio.h>
 int
-main ()
+main (void)
 {
 int (*fp) (FILE *, off_t, int) = fseeko;
      return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
@@ -15706,23 +16973,22 @@ int (*fp) (FILE *, off_t, int) = fseeko;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_sys_largefile_source=1; break
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
   ac_cv_sys_largefile_source=unknown
   break
 done
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5
-$as_echo "$ac_cv_sys_largefile_source" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5
+printf "%s\n" "$ac_cv_sys_largefile_source" >&6; }
 case $ac_cv_sys_largefile_source in #(
   no | unknown) ;;
   *)
-cat >>confdefs.h <<_ACEOF
-#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source
-_ACEOF
+printf "%s\n" "#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source" >>confdefs.h
 ;;
 esac
 rm -rf conftest*
@@ -15732,23 +16998,25 @@ rm -rf conftest*
 # If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
 if test $ac_cv_sys_largefile_source != unknown; then
 
-$as_echo "#define HAVE_FSEEKO 1" >>confdefs.h
+printf "%s\n" "#define HAVE_FSEEKO 1" >>confdefs.h
 
 fi
 
 
 # Check whether --enable-largefile was given.
-if test "${enable_largefile+set}" = set; then :
+if test ${enable_largefile+y}
+then :
   enableval=$enable_largefile;
 fi
 
 if test "$enable_largefile" != no; then
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
-$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+printf %s "checking for special C compiler options needed for large files... " >&6; }
+if test ${ac_cv_sys_largefile_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_cv_sys_largefile_CC=no
      if test "$GCC" != yes; then
        ac_save_CC=$CC
@@ -15762,44 +17030,47 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
 int
-main ()
+main (void)
 {
 
   ;
   return 0;
 }
 _ACEOF
-        if ac_fn_c_try_compile "$LINENO"; then :
+        if ac_fn_c_try_compile "$LINENO"
+then :
   break
 fi
-rm -f core conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext conftest.beam
         CC="$CC -n32"
-        if ac_fn_c_try_compile "$LINENO"; then :
+        if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_sys_largefile_CC=' -n32'; break
 fi
-rm -f core conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext conftest.beam
         break
        done
        CC=$ac_save_CC
        rm -f conftest.$ac_ext
     fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
-$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+printf "%s\n" "$ac_cv_sys_largefile_CC" >&6; }
   if test "$ac_cv_sys_largefile_CC" != no; then
     CC=$CC$ac_cv_sys_largefile_CC
   fi
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
-if ${ac_cv_sys_file_offset_bits+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if test ${ac_cv_sys_file_offset_bits+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   while :; do
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -15808,22 +17079,23 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
 int
-main ()
+main (void)
 {
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_sys_file_offset_bits=no; break
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #define _FILE_OFFSET_BITS 64
@@ -15832,43 +17104,43 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
 int
-main ()
+main (void)
 {
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_sys_file_offset_bits=64; break
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   ac_cv_sys_file_offset_bits=unknown
   break
 done
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
-$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+printf "%s\n" "$ac_cv_sys_file_offset_bits" >&6; }
 case $ac_cv_sys_file_offset_bits in #(
   no | unknown) ;;
   *)
-cat >>confdefs.h <<_ACEOF
-#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
-_ACEOF
+printf "%s\n" "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h
 ;;
 esac
 rm -rf conftest*
   if test $ac_cv_sys_file_offset_bits = unknown; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
-$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
-if ${ac_cv_sys_large_files+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+printf %s "checking for _LARGE_FILES value needed for large files... " >&6; }
+if test ${ac_cv_sys_large_files+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   while :; do
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -15877,22 +17149,23 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
 int
-main ()
+main (void)
 {
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_sys_large_files=no; break
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #define _LARGE_FILES 1
@@ -15901,51 +17174,49 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
 int
-main ()
+main (void)
 {
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_sys_large_files=1; break
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   ac_cv_sys_large_files=unknown
   break
 done
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
-$as_echo "$ac_cv_sys_large_files" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+printf "%s\n" "$ac_cv_sys_large_files" >&6; }
 case $ac_cv_sys_large_files in #(
   no | unknown) ;;
   *)
-cat >>confdefs.h <<_ACEOF
-#define _LARGE_FILES $ac_cv_sys_large_files
-_ACEOF
+printf "%s\n" "#define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h
 ;;
 esac
 rm -rf conftest*
-  fi
-
-
+  fi
 fi
 
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need -D_LARGEFILE_SOURCE=1 as a flag for $CC" >&5
-$as_echo_n "checking whether we need -D_LARGEFILE_SOURCE=1 as a flag for $CC... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we need -D_LARGEFILE_SOURCE=1 as a flag for $CC" >&5
+printf %s "checking whether we need -D_LARGEFILE_SOURCE=1 as a flag for $CC... " >&6; }
 cache=_D_LARGEFILE_SOURCE_1
-if eval \${cv_prog_cc_flag_needed_$cache+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if eval test \${cv_prog_cc_flag_needed_$cache+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 echo '
 #include <stdio.h>
@@ -15976,14 +17247,14 @@ rm -f conftest conftest.c conftest.o
 fi
 
 if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 :
 CFLAGS="$CFLAGS -D_LARGEFILE_SOURCE=1"
 else
 if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = no"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 #echo 'Test with flag is no!'
 #cat conftest.c
 #echo "$CC $CPPFLAGS $CFLAGS -D_LARGEFILE_SOURCE=1 $ERRFLAG -c conftest.c 2>&1"
@@ -15992,8 +17263,8 @@ $as_echo "no" >&6; }
 :
 
 else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+printf "%s\n" "failed" >&6; }
 :
 
 fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if nonblocking sockets work" >&5
-$as_echo_n "checking if nonblocking sockets work... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if nonblocking sockets work" >&5
+printf %s "checking if nonblocking sockets work... " >&6; }
 if echo $host | grep mingw >/dev/null; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (windows)" >&5
-$as_echo "no (windows)" >&6; }
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (windows)" >&5
+printf "%s\n" "no (windows)" >&6; }
 
-$as_echo "#define NONBLOCKING_IS_BROKEN 1" >>confdefs.h
+printf "%s\n" "#define NONBLOCKING_IS_BROKEN 1" >>confdefs.h
 
 else
-if test "$cross_compiling" = yes; then :
+if test "$cross_compiling" = yes
+then :
 
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: crosscompile(yes)" >&5
-$as_echo "crosscompile(yes)" >&6; }
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: crosscompile(yes)" >&5
+printf "%s\n" "crosscompile(yes)" >&6; }
 
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -16142,17 +17414,18 @@ int main(void)
 }
 
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
 
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 
-else
+else $as_nop
 
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 
-$as_echo "#define NONBLOCKING_IS_BROKEN 1" >>confdefs.h
+printf "%s\n" "#define NONBLOCKING_IS_BROKEN 1" >>confdefs.h
 
 
 fi
@@ -16163,8 +17436,8 @@ fi
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mkdir has one arg" >&5
-$as_echo_n "checking whether mkdir has one arg... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mkdir has one arg" >&5
+printf %s "checking whether mkdir has one arg... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -16178,7 +17451,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 #endif
 
 int
-main ()
+main (void)
 {
 
        (void)mkdir("directory");
@@ -16187,37 +17460,39 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 
-$as_echo "#define MKDIR_HAS_ONE_ARG 1" >>confdefs.h
+printf "%s\n" "#define MKDIR_HAS_ONE_ARG 1" >>confdefs.h
 
 
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 
-for ac_func in strptime
+
+  for ac_func in strptime
 do :
   ac_fn_c_check_func "$LINENO" "strptime" "ac_cv_func_strptime"
-if test "x$ac_cv_func_strptime" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_STRPTIME 1
-_ACEOF
+if test "x$ac_cv_func_strptime" = xyes
+then :
+  printf "%s\n" "#define HAVE_STRPTIME 1" >>confdefs.h
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether strptime works" >&5
-$as_echo_n "checking whether strptime works... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether strptime works" >&5
+printf %s "checking whether strptime works... " >&6; }
 if test c${cross_compiling} = cno; then
-if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+if test "$cross_compiling" = yes
+then :
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "cannot run test program while cross compiling
 See \`config.log' for more details" "$LINENO" 5; }
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -16230,9 +17505,10 @@ res = strptime("20070207111842", "%Y%m%d%H%M%S", &tm);
 if (!res) return 1; return 0; }
 
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
   eval "ac_cv_c_strptime_works=yes"
-else
+else $as_nop
   eval "ac_cv_c_strptime_works=no"
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -16242,8 +17518,8 @@ fi
 else
 eval "ac_cv_c_strptime_works=maybe"
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_strptime_works" >&5
-$as_echo "$ac_cv_c_strptime_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_strptime_works" >&5
+printf "%s\n" "$ac_cv_c_strptime_works" >&6; }
 if test $ac_cv_c_strptime_works = no; then
 case " $LIBOBJS " in
   *" strptime.$ac_objext "* ) ;;
@@ -16253,13 +17529,11 @@ esac
 
 else
 
-cat >>confdefs.h <<_ACEOF
-#define STRPTIME_WORKS 1
-_ACEOF
+printf "%s\n" "#define STRPTIME_WORKS 1" >>confdefs.h
 
 fi
 
-else
+else $as_nop
   case " $LIBOBJS " in
   *" strptime.$ac_objext "* ) ;;
   *) LIBOBJS="$LIBOBJS strptime.$ac_objext"
@@ -16267,8 +17541,8 @@ else
 esac
 
 fi
-done
 
+done
 
 # check if we can use SO_REUSEPORT
 reuseport_default=0
@@ -16276,11 +17550,11 @@ if echo "$host" | $GREP -i -e linux >/dev/null; then reuseport_default=1; fi
 if echo "$host" | $GREP -i -e dragonfly >/dev/null; then reuseport_default=1; fi
 if test "$reuseport_default" = 1; then
 
-$as_echo "#define REUSEPORT_DEFAULT 1" >>confdefs.h
+printf "%s\n" "#define REUSEPORT_DEFAULT 1" >>confdefs.h
 
 else
 
-$as_echo "#define REUSEPORT_DEFAULT 0" >>confdefs.h
+printf "%s\n" "#define REUSEPORT_DEFAULT 0" >>confdefs.h
 
 fi
 
 #   Copyright 2015, Sami Kerola, CloudFlare.
 #   BSD licensed.
 # Check whether --enable-systemd was given.
-if test "${enable_systemd+set}" = set; then :
+if test ${enable_systemd+y}
+then :
   enableval=$enable_systemd;
-else
+else $as_nop
   enable_systemd=no
 fi
 
 have_systemd=no
-if test "x$enable_systemd" != xno; then :
+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; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SYSTEMD" >&5
+printf %s "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
+    { { printf "%s\n" "$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
+  printf "%s\n" "$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
@@ -16325,10 +17601,10 @@ 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
+    { { printf "%s\n" "$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
+  printf "%s\n" "$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
@@ -16342,8 +17618,8 @@ fi
 
 
 if test $pkg_failed = yes; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 
 if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
         _pkg_short_errors_supported=yes
 
        have_systemd=no
 elif test $pkg_failed = untried; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "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; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
        have_systemd=yes
 fi
-               if test "x$have_systemd" != "xyes"; then :
+               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; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SYSTEMD_DAEMON" >&5
+printf %s "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
+    { { printf "%s\n" "$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
+  printf "%s\n" "$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
@@ -16398,10 +17675,10 @@ 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
+    { { printf "%s\n" "$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
+  printf "%s\n" "$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
@@ -16415,8 +17692,8 @@ fi
 
 
 if test $pkg_failed = yes; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 
 if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
         _pkg_short_errors_supported=yes
 
        have_systemd_daemon=no
 elif test $pkg_failed = untried; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "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; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
        have_systemd_daemon=yes
 fi
-               if test "x$have_systemd_daemon" = "xyes"; then :
+               if test "x$have_systemd_daemon" = "xyes"
+then :
   have_systemd=yes
 fi
 
@@ -16453,7 +17731,7 @@ fi
     as_fn_error $? "systemd enabled but libsystemd not found" "$LINENO" 5 ;; #(
   *:yes) :
 
-$as_echo "#define HAVE_SYSTEMD 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SYSTEMD 1" >>confdefs.h
 
                LIBS="$LIBS $SYSTEMD_LIBS"
 
 
 # set memory allocation checking if requested
 # Check whether --enable-alloc-checks was given.
-if test "${enable_alloc_checks+set}" = set; then :
+if test ${enable_alloc_checks+y}
+then :
   enableval=$enable_alloc_checks;
 fi
 
 # Check whether --enable-alloc-lite was given.
-if test "${enable_alloc_lite+set}" = set; then :
+if test ${enable_alloc_lite+y}
+then :
   enableval=$enable_alloc_lite;
 fi
 
 # Check whether --enable-alloc-nonregional was given.
-if test "${enable_alloc_nonregional+set}" = set; then :
+if test ${enable_alloc_nonregional+y}
+then :
   enableval=$enable_alloc_nonregional;
 fi
 
 if test x_$enable_alloc_nonregional = x_yes; then
 
-$as_echo "#define UNBOUND_ALLOC_NONREGIONAL 1" >>confdefs.h
+printf "%s\n" "#define UNBOUND_ALLOC_NONREGIONAL 1" >>confdefs.h
 
 fi
 if test x_$enable_alloc_checks = x_yes; then
 
-$as_echo "#define UNBOUND_ALLOC_STATS 1" >>confdefs.h
+printf "%s\n" "#define UNBOUND_ALLOC_STATS 1" >>confdefs.h
 
        SLDNS_ALLOCCHECK_EXTRA_OBJ="alloc.lo log.lo"
 
@@ -16507,15 +17788,16 @@ $as_echo "#define UNBOUND_ALLOC_STATS 1" >>confdefs.h
 else
        if test x_$enable_alloc_lite = x_yes; then
 
-$as_echo "#define UNBOUND_ALLOC_LITE 1" >>confdefs.h
+printf "%s\n" "#define UNBOUND_ALLOC_LITE 1" >>confdefs.h
 
        else
 
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5
-$as_echo_n "checking for GNU libc compatible malloc... " >&6; }
-       if test "$cross_compiling" = yes; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (crosscompile)" >&5
-$as_echo "no (crosscompile)" >&6; }
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5
+printf %s "checking for GNU libc compatible malloc... " >&6; }
+       if test "$cross_compiling" = yes
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (crosscompile)" >&5
+printf "%s\n" "no (crosscompile)" >&6; }
        case " $LIBOBJS " in
   *" malloc.$ac_objext "* ) ;;
   *) LIBOBJS="$LIBOBJS malloc.$ac_objext"
@@ -16523,11 +17805,9 @@ $as_echo "no (crosscompile)" >&6; }
 esac
 
 
-cat >>confdefs.h <<_ACEOF
-#define malloc rpl_malloc_unbound
-_ACEOF
+printf "%s\n" "#define malloc rpl_malloc_unbound" >>confdefs.h
 
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #if defined STDC_HEADERS || defined HAVE_STDLIB_H
@@ -16537,7 +17817,7 @@ char *malloc ();
 #endif
 
 int
-main ()
+main (void)
 {
  if(malloc(0) != 0) return 1;
   ;
@@ -16545,9 +17825,10 @@ main ()
 }
 
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if ac_fn_c_try_run "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
        case " $LIBOBJS " in
   *" malloc.$ac_objext "* ) ;;
   *) LIBOBJS="$LIBOBJS malloc.$ac_objext"
@@ -16555,15 +17836,13 @@ $as_echo "no" >&6; }
 esac
 
 
-cat >>confdefs.h <<_ACEOF
-#define malloc rpl_malloc_unbound
-_ACEOF
+printf "%s\n" "#define malloc rpl_malloc_unbound" >>confdefs.h
 
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 
-$as_echo "#define HAVE_MALLOC 1" >>confdefs.h
+printf "%s\n" "#define HAVE_MALLOC 1" >>confdefs.h
 
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
 # check windows threads (we use them, not pthreads, on windows).
 if test "$on_mingw" = "yes"; then
 # check windows threads
-       for ac_header in windows.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "windows.h" "ac_cv_header_windows_h" "$ac_includes_default
+       ac_fn_c_check_header_compile "$LINENO" "windows.h" "ac_cv_header_windows_h" "$ac_includes_default
 "
-if test "x$ac_cv_header_windows_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_WINDOWS_H 1
-_ACEOF
+if test "x$ac_cv_header_windows_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_WINDOWS_H 1" >>confdefs.h
 
 fi
 
-done
-
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CreateThread" >&5
-$as_echo_n "checking for CreateThread... " >&6; }
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CreateThread" >&5
+printf %s "checking for CreateThread... " >&6; }
        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -16600,7 +17874,7 @@ $as_echo_n "checking for CreateThread... " >&6; }
 #endif
 
 int
-main ()
+main (void)
 {
 
        HANDLE t = CreateThread(NULL, 0, NULL, NULL, 0, NULL);
@@ -16609,19 +17883,20 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 
-$as_echo "#define HAVE_WINDOWS_THREADS 1" >>confdefs.h
+printf "%s\n" "#define HAVE_WINDOWS_THREADS 1" >>confdefs.h
 
 
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 
 else
 # not on mingw, check thread libraries.
@@ -16632,9 +17907,10 @@ else
 # the non-threadsafe C libraries.
 
 # Check whether --with-pthreads was given.
-if test "${with_pthreads+set}" = set; then :
+if test ${with_pthreads+y}
+then :
   withval=$with_pthreads;
-else
+else $as_nop
    withval="yes"
 fi
 
@@ -16662,33 +17938,31 @@ if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
         save_LIBS="$LIBS"
         LIBS="$PTHREAD_LIBS $LIBS"
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5
-$as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5
+printf %s "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; }
         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char pthread_join ();
 int
-main ()
+main (void)
 {
 return pthread_join ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ax_pthread_ok=yes
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
-$as_echo "$ax_pthread_ok" >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
+printf "%s\n" "$ax_pthread_ok" >&6; }
         if test x"$ax_pthread_ok" = xno; then
                 PTHREAD_LIBS=""
                 PTHREAD_CFLAGS=""
@@ -16752,8 +18026,8 @@ esac
 # -Werror. We throw in some extra Clang-specific options to ensure that
 # this doesn't happen for GCC, which also accepts -Werror.
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler needs -Werror to reject unknown flags" >&5
-$as_echo_n "checking if compiler needs -Werror to reject unknown flags... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler needs -Werror to reject unknown flags" >&5
+printf %s "checking if compiler needs -Werror to reject unknown flags... " >&6; }
 save_CFLAGS="$CFLAGS"
 ax_pthread_extra_flags="-Werror"
 CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument"
@@ -16761,22 +18035,23 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 int foo(void);
 int
-main ()
+main (void)
 {
 foo()
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
   ax_pthread_extra_flags=
-                   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+                   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 CFLAGS="$save_CFLAGS"
 
 if test x"$ax_pthread_ok" = xno; then
@@ -16784,24 +18059,25 @@ for flag in $ax_pthread_flags; do
 
         case $flag in
                 none)
-                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5
-$as_echo_n "checking whether pthreads work without any flags... " >&6; }
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5
+printf %s "checking whether pthreads work without any flags... " >&6; }
                 ;;
 
                 -*)
-                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5
-$as_echo_n "checking whether pthreads work with $flag... " >&6; }
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5
+printf %s "checking whether pthreads work with $flag... " >&6; }
                 PTHREAD_CFLAGS="$flag"
                 ;;
 
                 pthread-config)
                 # Extract the first word of "pthread-config", so it can be a program name with args.
 set dummy pthread-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_prog_ax_pthread_config+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ax_pthread_config+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$ax_pthread_config"; then
   ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test.
 else
@@ -16809,11 +18085,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_ax_pthread_config="yes"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
 fi
 ax_pthread_config=$ac_cv_prog_ax_pthread_config
 if test -n "$ax_pthread_config"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5
-$as_echo "$ax_pthread_config" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5
+printf "%s\n" "$ax_pthread_config" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -16839,8 +18119,8 @@ fi
                 ;;
 
                 *)
-                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5
-$as_echo_n "checking for the pthreads library -l$flag... " >&6; }
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5
+printf %s "checking for the pthreads library -l$flag... " >&6; }
                 PTHREAD_LIBS="-l$flag"
                 ;;
         esac
@@ -16865,7 +18145,7 @@ $as_echo_n "checking for the pthreads library -l$flag... " >&6; }
                         static void routine(void *a) { *((int*)a) = 0; }
                         static void *start_routine(void *a) { return a; }
 int
-main ()
+main (void)
 {
 pthread_t th; pthread_attr_t attr;
                         pthread_create(&th, 0, start_routine, 0);
@@ -16877,17 +18157,18 @@ pthread_t th; pthread_attr_t attr;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ax_pthread_ok=yes
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 
         LIBS="$save_LIBS"
         CFLAGS="$save_CFLAGS"
 
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
-$as_echo "$ax_pthread_ok" >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
+printf "%s\n" "$ax_pthread_ok" >&6; }
         if test "x$ax_pthread_ok" = xyes; then
                 break;
         fi
@@ -16905,39 +18186,38 @@ if test "x$ax_pthread_ok" = xyes; then
         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
 
         # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5
-$as_echo_n "checking for joinable pthread attribute... " >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5
+printf %s "checking for joinable pthread attribute... " >&6; }
         attr_name=unknown
         for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
             cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <pthread.h>
 int
-main ()
+main (void)
 {
 int attr = $attr; return attr /* ; */
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   attr_name=$attr; break
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
         done
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5
-$as_echo "$attr_name" >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5
+printf "%s\n" "$attr_name" >&6; }
         if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
 
-cat >>confdefs.h <<_ACEOF
-#define PTHREAD_CREATE_JOINABLE $attr_name
-_ACEOF
+printf "%s\n" "#define PTHREAD_CREATE_JOINABLE $attr_name" >>confdefs.h
 
         fi
 
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5
-$as_echo_n "checking if more special flags are required for pthreads... " >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5
+printf %s "checking if more special flags are required for pthreads... " >&6; }
         flag=no
         case ${host_os} in
             aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
@@ -16951,43 +18231,46 @@ $as_echo_n "checking if more special flags are required for pthreads... " >&6; }
             fi
             ;;
         esac
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag" >&5
-$as_echo "$flag" >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $flag" >&5
+printf "%s\n" "$flag" >&6; }
         if test "x$flag" != xno; then
             PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
         fi
 
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5
-$as_echo_n "checking for PTHREAD_PRIO_INHERIT... " >&6; }
-if ${ax_cv_PTHREAD_PRIO_INHERIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5
+printf %s "checking for PTHREAD_PRIO_INHERIT... " >&6; }
+if test ${ax_cv_PTHREAD_PRIO_INHERIT+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
                 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <pthread.h>
 int
-main ()
+main (void)
 {
 int i = PTHREAD_PRIO_INHERIT;
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ax_cv_PTHREAD_PRIO_INHERIT=yes
-else
+else $as_nop
   ax_cv_PTHREAD_PRIO_INHERIT=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5
-$as_echo "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; }
-        if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5
+printf "%s\n" "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; }
+        if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"
+then :
 
-$as_echo "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h
 
 fi
 
@@ -17003,7 +18286,8 @@ fi
     #handle absolute path differently from PATH based program lookup
                    case "x$CC" in #(
   x/*) :
-    if as_fn_executable_p ${CC}_r; then :
+    if as_fn_executable_p ${CC}_r
+then :
   PTHREAD_CC="${CC}_r"
 fi ;; #(
   *) :
@@ -17011,11 +18295,12 @@ fi ;; #(
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; 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_prog_PTHREAD_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_PTHREAD_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$PTHREAD_CC"; then
   ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test.
 else
@@ -17023,11 +18308,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_PTHREAD_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
 fi
 PTHREAD_CC=$ac_cv_prog_PTHREAD_CC
 if test -n "$PTHREAD_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5
-$as_echo "$PTHREAD_CC" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5
+printf "%s\n" "$PTHREAD_CC" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -17069,7 +18358,7 @@ test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
 if test x"$ax_pthread_ok" = xyes; then
 
 
-$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h
+printf "%s\n" "#define HAVE_PTHREAD 1" >>confdefs.h
 
                if test -n "$PTHREAD_LIBS"; then
                  LIBS="$PTHREAD_LIBS $LIBS"
@@ -17079,29 +18368,27 @@ $as_echo "#define HAVE_PTHREAD 1" >>confdefs.h
                ub_have_pthreads=yes
                ac_fn_c_check_type "$LINENO" "pthread_spinlock_t" "ac_cv_type_pthread_spinlock_t" "#include <pthread.h>
 "
-if test "x$ac_cv_type_pthread_spinlock_t" = xyes; then :
+if test "x$ac_cv_type_pthread_spinlock_t" = xyes
+then :
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_PTHREAD_SPINLOCK_T 1
-_ACEOF
+printf "%s\n" "#define HAVE_PTHREAD_SPINLOCK_T 1" >>confdefs.h
 
 
 fi
 ac_fn_c_check_type "$LINENO" "pthread_rwlock_t" "ac_cv_type_pthread_rwlock_t" "#include <pthread.h>
 "
-if test "x$ac_cv_type_pthread_rwlock_t" = xyes; then :
+if test "x$ac_cv_type_pthread_rwlock_t" = xyes
+then :
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_PTHREAD_RWLOCK_T 1
-_ACEOF
+printf "%s\n" "#define HAVE_PTHREAD_RWLOCK_T 1" >>confdefs.h
 
 
 fi
 
 
                if echo "$CFLAGS" | $GREP -e "-pthread" >/dev/null; then
-               { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -pthread unused during linking" >&5
-$as_echo_n "checking if -pthread unused during linking... " >&6; }
+               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if -pthread unused during linking" >&5
+printf %s "checking if -pthread unused during linking... " >&6; }
                # catch clang warning 'argument unused during compilation'
                cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -17119,18 +18406,18 @@ _ACEOF
                        echo "$CC $CFLAGS -Werror $LDFLAGS $LIBS -o conftest contest.o" >&5
                        $CC $CFLAGS -Werror $LDFLAGS $LIBS -o conftest conftest.o 2>&5 >&5
                        if test $? -ne 0; then
-                               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+                               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
                                CFLAGS=`echo "$CFLAGS" | sed -e 's/-pthread//'`
                                PTHREAD_CFLAGS_ONLY="-pthread"
 
                        else
-                               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+                               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
                        fi
                else
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+                       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
                fi # endif cc successful
                rm -f conftest conftest.c conftest.o
                fi # endif -pthread in CFLAGS
 # check solaris thread library
 
 # Check whether --with-solaris-threads was given.
-if test "${with_solaris_threads+set}" = set; then :
+if test ${with_solaris_threads+y}
+then :
   withval=$with_solaris_threads;
-else
+else $as_nop
    withval="no"
 fi
 
 ub_have_sol_threads=no
 if test x_$withval != x_no; then
        if test x_$ub_have_pthreads != x_no; then
-           { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Have pthreads already, ignoring --with-solaris-threads" >&5
-$as_echo "$as_me: WARNING: Have pthreads already, ignoring --with-solaris-threads" >&2;}
+           { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Have pthreads already, ignoring --with-solaris-threads" >&5
+printf "%s\n" "$as_me: WARNING: Have pthreads already, ignoring --with-solaris-threads" >&2;}
        else
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing thr_create" >&5
-$as_echo_n "checking for library containing thr_create... " >&6; }
-if ${ac_cv_search_thr_create+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing thr_create" >&5
+printf %s "checking for library containing thr_create... " >&6; }
+if test ${ac_cv_search_thr_create+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -17177,60 +18466,63 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char thr_create ();
 int
-main ()
+main (void)
 {
 return thr_create ();
   ;
   return 0;
 }
 _ACEOF
-for ac_lib in '' thread; do
+for ac_lib in '' thread
+do
   if test -z "$ac_lib"; then
     ac_res="none required"
   else
     ac_res=-l$ac_lib
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
   fi
-  if ac_fn_c_try_link "$LINENO"; then :
+  if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_search_thr_create=$ac_res
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext
-  if ${ac_cv_search_thr_create+:} false; then :
+  if test ${ac_cv_search_thr_create+y}
+then :
   break
 fi
 done
-if ${ac_cv_search_thr_create+:} false; then :
+if test ${ac_cv_search_thr_create+y}
+then :
 
-else
+else $as_nop
   ac_cv_search_thr_create=no
 fi
 rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_thr_create" >&5
-$as_echo "$ac_cv_search_thr_create" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_thr_create" >&5
+printf "%s\n" "$ac_cv_search_thr_create" >&6; }
 ac_res=$ac_cv_search_thr_create
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
 
-$as_echo "#define HAVE_SOLARIS_THREADS 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SOLARIS_THREADS 1" >>confdefs.h
 
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -mt" >&5
-$as_echo_n "checking whether $CC supports -mt... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -mt" >&5
+printf %s "checking whether $CC supports -mt... " >&6; }
 cache=`echo mt | sed 'y%.=/+-%___p_%'`
-if eval \${cv_prog_cc_flag_$cache+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if eval test \${cv_prog_cc_flag_$cache+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 echo 'void f(void){}' >conftest.c
 if test -z "`$CC $CPPFLAGS $CFLAGS -mt -c conftest.c 2>&1`"; then
@@ -17243,20 +18535,20 @@ rm -f conftest conftest.o conftest.c
 fi
 
 if eval "test \"`echo '$cv_prog_cc_flag_'$cache`\" = yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 :
 CFLAGS="$CFLAGS -mt"
 else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 :
 CFLAGS="$CFLAGS -D_REENTRANT"
 fi
 
                ub_have_sol_threads=yes
 
-else
+else $as_nop
 
                as_fn_error $? "no solaris threads found." "$LINENO" 5
 
@@ -17270,7 +18562,8 @@ fi # end of non-mingw check of thread libraries
 # Check for SYSLOG_FACILITY
 
 # Check whether --with-syslog-facility was given.
-if test "${with_syslog_facility+set}" = set; then :
+if test ${with_syslog_facility+y}
+then :
   withval=$with_syslog_facility;  UNBOUND_SYSLOG_FACILITY="$withval"
 fi
 
@@ -17282,24 +18575,23 @@ case "${UNBOUND_SYSLOG_FACILITY}" in
 
 esac
 
-cat >>confdefs.h <<_ACEOF
-#define UB_SYSLOG_FACILITY ${UNBOUND_SYSLOG_FACILITY}
-_ACEOF
+printf "%s\n" "#define UB_SYSLOG_FACILITY ${UNBOUND_SYSLOG_FACILITY}" >>confdefs.h
 
 
 # Check for dynamic library module
 
 # Check whether --with-dynlibmodule was given.
-if test "${with_dynlibmodule+set}" = set; then :
+if test ${with_dynlibmodule+y}
+then :
   withval=$with_dynlibmodule;
-else
+else $as_nop
    withval="no"
 fi
 
 
 if test x_$withval != x_no; then
 
-$as_echo "#define WITH_DYNLIBMODULE 1" >>confdefs.h
+printf "%s\n" "#define WITH_DYNLIBMODULE 1" >>confdefs.h
 
   WITH_DYNLIBMODULE=yes
 
@@ -17311,11 +18603,12 @@ $as_echo "#define WITH_DYNLIBMODULE 1" >>confdefs.h
     # link with -ldl if not already there, for all executables because
     # dlopen call is in the dynlib module.  For unbound executable, also
     # export symbols.
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5
-$as_echo_n "checking for library containing dlopen... " >&6; }
-if ${ac_cv_search_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5
+printf %s "checking for library containing dlopen... " >&6; }
+if test ${ac_cv_search_dlopen+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -17323,46 +18616,48 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char dlopen ();
 int
-main ()
+main (void)
 {
 return dlopen ();
   ;
   return 0;
 }
 _ACEOF
-for ac_lib in '' dl; do
+for ac_lib in '' dl
+do
   if test -z "$ac_lib"; then
     ac_res="none required"
   else
     ac_res=-l$ac_lib
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
   fi
-  if ac_fn_c_try_link "$LINENO"; then :
+  if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_search_dlopen=$ac_res
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext
-  if ${ac_cv_search_dlopen+:} false; then :
+  if test ${ac_cv_search_dlopen+y}
+then :
   break
 fi
 done
-if ${ac_cv_search_dlopen+:} false; then :
+if test ${ac_cv_search_dlopen+y}
+then :
 
-else
+else $as_nop
   ac_cv_search_dlopen=no
 fi
 rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5
-$as_echo "$ac_cv_search_dlopen" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5
+printf "%s\n" "$ac_cv_search_dlopen" >&6; }
 ac_res=$ac_cv_search_dlopen
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
 fi
 # Check for PyUnbound
 
 # Check whether --with-pyunbound was given.
-if test "${with_pyunbound+set}" = set; then :
+if test ${with_pyunbound+y}
+then :
   withval=$with_pyunbound;
-else
+else $as_nop
    withval="no"
 fi
 
 # Check for Python module
 
 # Check whether --with-pythonmodule was given.
-if test "${with_pythonmodule+set}" = set; then :
+if test ${with_pythonmodule+y}
+then :
   withval=$with_pythonmodule;
-else
+else $as_nop
    withval="no"
 fi
 
@@ -17420,11 +18717,12 @@ if test x_$ub_test_python != x_no; then
 
         # Extract the first word of "python[$PYTHON_VERSION]", so it can be a program name with args.
 set dummy python$PYTHON_VERSION; 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_PYTHON+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $PYTHON in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
@@ -17434,11 +18732,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     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_PYTHON="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -17450,11 +18752,11 @@ esac
 fi
 PYTHON=$ac_cv_path_PYTHON
 if test -n "$PYTHON"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -17504,8 +18806,8 @@ $as_echo "no" >&6; }
         #
         # Check for Python include path
         #
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5
-$as_echo_n "checking for Python include path... " >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5
+printf %s "checking for Python include path... " >&6; }
         if test -z "$PYTHON_CPPFLAGS"; then
                if test "$sysconfig_module" = "sysconfig"; then
                        python_path=`$PYTHON -c 'import sysconfig; \
@@ -17519,21 +18821,21 @@ $as_echo_n "checking for Python include path... " >&6; }
                 fi
                 PYTHON_CPPFLAGS=$python_path
         fi
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5
-$as_echo "$PYTHON_CPPFLAGS" >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5
+printf "%s\n" "$PYTHON_CPPFLAGS" >&6; }
 
 
         #
         # Check for Python library path
         #
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5
-$as_echo_n "checking for Python library path... " >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5
+printf %s "checking for Python library path... " >&6; }
         if test -z "$PYTHON_LDFLAGS"; then
                 PYTHON_LDFLAGS=`$PYTHON -c "from $sysconfig_module import *; \
                         print('-L'+get_config_var('LIBDIR')+' -L'+get_config_var('LIBDEST')+' '+get_config_var('BLDLIBRARY'));"`
         fi
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
-$as_echo "$PYTHON_LDFLAGS" >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
+printf "%s\n" "$PYTHON_LDFLAGS" >&6; }
 
 
         if test -z "$PYTHON_LIBDIR"; then
@@ -17544,8 +18846,8 @@ $as_echo "$PYTHON_LDFLAGS" >&6; }
         #
         # Check for site packages
         #
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python site-packages path" >&5
-$as_echo_n "checking for Python site-packages path... " >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python site-packages path" >&5
+printf %s "checking for Python site-packages path... " >&6; }
         if test -z "$PYTHON_SITE_PKG"; then
                if test "$sysconfig_module" = "sysconfig"; then
                        PYTHON_SITE_PKG=`$PYTHON -c 'import sysconfig; \
@@ -17555,15 +18857,15 @@ $as_echo_n "checking for Python site-packages path... " >&6; }
                                print(distutils.sysconfig.get_python_lib(1,0));"`
                fi
         fi
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SITE_PKG" >&5
-$as_echo "$PYTHON_SITE_PKG" >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SITE_PKG" >&5
+printf "%s\n" "$PYTHON_SITE_PKG" >&6; }
 
 
         #
         # final check to see if everything compiles alright
         #
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking consistency of all components of python development environment" >&5
-$as_echo_n "checking consistency of all components of python development environment... " >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking consistency of all components of python development environment" >&5
+printf %s "checking consistency of all components of python development environment... " >&6; }
         ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -17582,7 +18884,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
                 #include <Python.h>
 
 int
-main ()
+main (void)
 {
 
                 Py_Initialize();
@@ -17591,16 +18893,17 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   pythonexists=yes
-else
+else $as_nop
   pythonexists=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pythonexists" >&5
-$as_echo "$pythonexists" >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pythonexists" >&5
+printf "%s\n" "$pythonexists" >&6; }
 
         if test ! "$pythonexists" = "yes"; then
            as_fn_error $? "
@@ -17639,7 +18942,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
       # Have Python
 
-$as_echo "#define HAVE_PYTHON 1" >>confdefs.h
+printf "%s\n" "#define HAVE_PYTHON 1" >>confdefs.h
 
       if test x_$ub_with_pythonmod != x_no; then
         if test -n "$LIBS"; then
@@ -17666,10 +18969,10 @@ $as_echo "#define HAVE_PYTHON 1" >>confdefs.h
       fi
       ub_have_python=yes
       if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\"python\${PY_MAJOR_VERSION}\"\""; } >&5
+    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\"python\${PY_MAJOR_VERSION}\"\""; } >&5
   ($PKG_CONFIG --exists --print-errors ""python${PY_MAJOR_VERSION}"") 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   PC_PY_DEPENDENCY="python${PY_MAJOR_VERSION}"
 else
@@ -17680,7 +18983,8 @@ fi
       # Check for SWIG
       ub_have_swig=no
       # Check whether --enable-swig-version-check was given.
-if test "${enable_swig_version_check+set}" = set; then :
+if test ${enable_swig_version_check+y}
+then :
   enableval=$enable_swig_version_check;
 fi
 
 
         # Extract the first word of "swig", so it can be a program name with args.
 set dummy swig; 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_SWIG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_SWIG+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $SWIG in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_SWIG="$SWIG" # Let the user override the test with a path.
@@ -17702,11 +19007,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     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_SWIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_SWIG="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -17718,24 +19027,24 @@ esac
 fi
 SWIG=$ac_cv_path_SWIG
 if test -n "$SWIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG" >&5
-$as_echo "$SWIG" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SWIG" >&5
+printf "%s\n" "$SWIG" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
         if test -z "$SWIG" ; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot find 'swig' program. You should look at http://www.swig.org" >&5
-$as_echo "$as_me: WARNING: cannot find 'swig' program. You should look at http://www.swig.org" >&2;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot find 'swig' program. You should look at http://www.swig.org" >&5
+printf "%s\n" "$as_me: WARNING: cannot find 'swig' program. You should look at http://www.swig.org" >&2;}
                 SWIG='echo "Error: SWIG is not installed. You should look at http://www.swig.org" ; false'
         elif test -n "2.0.1" ; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SWIG version" >&5
-$as_echo_n "checking for SWIG version... " >&6; }
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SWIG version" >&5
+printf %s "checking for SWIG version... " >&6; }
                 swig_version=`$SWIG -version 2>&1 | grep 'SWIG Version' | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`
-                { $as_echo "$as_me:${as_lineno-$LINENO}: result: $swig_version" >&5
-$as_echo "$swig_version" >&6; }
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $swig_version" >&5
+printf "%s\n" "$swig_version" >&6; }
                 if test -n "$swig_version" ; then
                         # Calculate the required version number components
                         required=2.0.1
@@ -17783,19 +19092,19 @@ $as_echo "$swig_version" >&6; }
                                badversion=1
                        fi
                        if test $badversion -eq 1 ; then
-                                { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: SWIG version >= 2.0.1 is required.  You have $swig_version.  You should look at http://www.swig.org" >&5
-$as_echo "$as_me: WARNING: SWIG version >= 2.0.1 is required.  You have $swig_version.  You should look at http://www.swig.org" >&2;}
+                                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: SWIG version >= 2.0.1 is required.  You have $swig_version.  You should look at http://www.swig.org" >&5
+printf "%s\n" "$as_me: WARNING: SWIG version >= 2.0.1 is required.  You have $swig_version.  You should look at http://www.swig.org" >&2;}
                                 SWIG='echo "Error: SWIG version >= 2.0.1 is required.  You have '"$swig_version"'.  You should look at http://www.swig.org" ; false'
                         else
-                                { $as_echo "$as_me:${as_lineno-$LINENO}: SWIG executable is '$SWIG'" >&5
-$as_echo "$as_me: SWIG executable is '$SWIG'" >&6;}
+                                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: SWIG executable is '$SWIG'" >&5
+printf "%s\n" "$as_me: SWIG executable is '$SWIG'" >&6;}
                                 SWIG_LIB=`$SWIG -swiglib`
-                                { $as_echo "$as_me:${as_lineno-$LINENO}: SWIG library directory is '$SWIG_LIB'" >&5
-$as_echo "$as_me: SWIG library directory is '$SWIG_LIB'" >&6;}
+                                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: SWIG library directory is '$SWIG_LIB'" >&5
+printf "%s\n" "$as_me: SWIG library directory is '$SWIG_LIB'" >&6;}
                         fi
                 else
-                        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine SWIG version" >&5
-$as_echo "$as_me: WARNING: cannot determine SWIG version" >&2;}
+                        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine SWIG version" >&5
+printf "%s\n" "$as_me: WARNING: cannot determine SWIG version" >&2;}
                         SWIG='echo "Error: Cannot determine SWIG version.  You should look at http://www.swig.org" ; false'
                 fi
         fi
@@ -17805,11 +19114,12 @@ $as_echo "$as_me: WARNING: cannot determine SWIG version" >&2;}
 
         # Extract the first word of "swig", so it can be a program name with args.
 set dummy swig; 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_SWIG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_SWIG+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $SWIG in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_SWIG="$SWIG" # Let the user override the test with a path.
@@ -17819,11 +19129,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     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_SWIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_SWIG="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -17835,24 +19149,24 @@ esac
 fi
 SWIG=$ac_cv_path_SWIG
 if test -n "$SWIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG" >&5
-$as_echo "$SWIG" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SWIG" >&5
+printf "%s\n" "$SWIG" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
         if test -z "$SWIG" ; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot find 'swig' program. You should look at http://www.swig.org" >&5
-$as_echo "$as_me: WARNING: cannot find 'swig' program. You should look at http://www.swig.org" >&2;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot find 'swig' program. You should look at http://www.swig.org" >&5
+printf "%s\n" "$as_me: WARNING: cannot find 'swig' program. You should look at http://www.swig.org" >&2;}
                 SWIG='echo "Error: SWIG is not installed. You should look at http://www.swig.org" ; false'
         elif test -n "" ; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SWIG version" >&5
-$as_echo_n "checking for SWIG version... " >&6; }
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SWIG version" >&5
+printf %s "checking for SWIG version... " >&6; }
                 swig_version=`$SWIG -version 2>&1 | grep 'SWIG Version' | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`
-                { $as_echo "$as_me:${as_lineno-$LINENO}: result: $swig_version" >&5
-$as_echo "$swig_version" >&6; }
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $swig_version" >&5
+printf "%s\n" "$swig_version" >&6; }
                 if test -n "$swig_version" ; then
                         # Calculate the required version number components
                         required=
@@ -17900,43 +19214,43 @@ $as_echo "$swig_version" >&6; }
                                badversion=1
                        fi
                        if test $badversion -eq 1 ; then
-                                { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: SWIG version >=  is required.  You have $swig_version.  You should look at http://www.swig.org" >&5
-$as_echo "$as_me: WARNING: SWIG version >=  is required.  You have $swig_version.  You should look at http://www.swig.org" >&2;}
+                                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: SWIG version >=  is required.  You have $swig_version.  You should look at http://www.swig.org" >&5
+printf "%s\n" "$as_me: WARNING: SWIG version >=  is required.  You have $swig_version.  You should look at http://www.swig.org" >&2;}
                                 SWIG='echo "Error: SWIG version >=  is required.  You have '"$swig_version"'.  You should look at http://www.swig.org" ; false'
                         else
-                                { $as_echo "$as_me:${as_lineno-$LINENO}: SWIG executable is '$SWIG'" >&5
-$as_echo "$as_me: SWIG executable is '$SWIG'" >&6;}
+                                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: SWIG executable is '$SWIG'" >&5
+printf "%s\n" "$as_me: SWIG executable is '$SWIG'" >&6;}
                                 SWIG_LIB=`$SWIG -swiglib`
-                                { $as_echo "$as_me:${as_lineno-$LINENO}: SWIG library directory is '$SWIG_LIB'" >&5
-$as_echo "$as_me: SWIG library directory is '$SWIG_LIB'" >&6;}
+                                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: SWIG library directory is '$SWIG_LIB'" >&5
+printf "%s\n" "$as_me: SWIG library directory is '$SWIG_LIB'" >&6;}
                         fi
                 else
-                        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine SWIG version" >&5
-$as_echo "$as_me: WARNING: cannot determine SWIG version" >&2;}
+                        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine SWIG version" >&5
+printf "%s\n" "$as_me: WARNING: cannot determine SWIG version" >&2;}
                         SWIG='echo "Error: Cannot determine SWIG version.  You should look at http://www.swig.org" ; false'
                 fi
         fi
 
 
       fi
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking SWIG" >&5
-$as_echo_n "checking SWIG... " >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking SWIG" >&5
+printf %s "checking SWIG... " >&6; }
       if test ! -x "$SWIG"; then
          as_fn_error $? "failed to find swig tool, install it, or do not build Python module and PyUnbound" "$LINENO" 5
       else
 
-$as_echo "#define HAVE_SWIG 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SWIG 1" >>confdefs.h
 
          swig="$SWIG"
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: result: present" >&5
-$as_echo "present" >&6; }
+         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: present" >&5
+printf "%s\n" "present" >&6; }
 
          # If have Python & SWIG
          # Declare PythonMod
          if test x_$ub_with_pythonmod != x_no; then
 
-$as_echo "#define WITH_PYTHONMODULE 1" >>confdefs.h
+printf "%s\n" "#define WITH_PYTHONMODULE 1" >>confdefs.h
 
             WITH_PYTHONMODULE=yes
 
@@ -17953,7 +19267,7 @@ $as_echo "#define WITH_PYTHONMODULE 1" >>confdefs.h
          # Declare PyUnbound
          if test x_$ub_with_pyunbound != x_no; then
 
-$as_echo "#define WITH_PYUNBOUND 1" >>confdefs.h
+printf "%s\n" "#define WITH_PYUNBOUND 1" >>confdefs.h
 
             WITH_PYUNBOUND=yes
 
@@ -17968,8 +19282,8 @@ $as_echo "#define WITH_PYUNBOUND 1" >>confdefs.h
          fi
       fi
    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** Python libraries not found, won't build PythonMod or PyUnbound ***" >&5
-$as_echo "*** Python libraries not found, won't build PythonMod or PyUnbound ***" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: *** Python libraries not found, won't build PythonMod or PyUnbound ***" >&5
+printf "%s\n" "*** Python libraries not found, won't build PythonMod or PyUnbound ***" >&6; }
       ub_with_pyunbound=no
       ub_with_pythonmod=no
    fi
@@ -17994,11 +19308,12 @@ CONFIG_DATE=`date +%Y%m%d`
 USE_NSS="no"
 
 # Check whether --with-nss was given.
-if test "${with_nss+set}" = set; then :
+if test ${with_nss+y}
+then :
   withval=$with_nss;
        USE_NSS="yes"
 
-$as_echo "#define HAVE_NSS 1" >>confdefs.h
+printf "%s\n" "#define HAVE_NSS 1" >>confdefs.h
 
        if test "$withval" != "" -a "$withval" != "yes"; then
                CPPFLAGS="$CPPFLAGS -I$withval/include/nss3"
 USE_NETTLE="no"
 
 # Check whether --with-nettle was given.
-if test "${with_nettle+set}" = set; then :
+if test ${with_nettle+y}
+then :
   withval=$with_nettle;
        USE_NETTLE="yes"
 
-$as_echo "#define HAVE_NETTLE 1" >>confdefs.h
+printf "%s\n" "#define HAVE_NETTLE 1" >>confdefs.h
 
-       for ac_header in nettle/dsa-compat.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "nettle/dsa-compat.h" "ac_cv_header_nettle_dsa_compat_h" "$ac_includes_default
+       ac_fn_c_check_header_compile "$LINENO" "nettle/dsa-compat.h" "ac_cv_header_nettle_dsa_compat_h" "$ac_includes_default
 "
-if test "x$ac_cv_header_nettle_dsa_compat_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_NETTLE_DSA_COMPAT_H 1
-_ACEOF
+if test "x$ac_cv_header_nettle_dsa_compat_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_NETTLE_DSA_COMPAT_H 1" >>confdefs.h
 
 fi
 
-done
-
        if test "$withval" != "" -a "$withval" != "yes"; then
                CPPFLAGS="$CPPFLAGS -I$withval/include/nettle"
                LDFLAGS="$LDFLAGS -L$withval/lib"
@@ -18074,10 +19385,11 @@ if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then
 
 
 # Check whether --with-ssl was given.
-if test "${with_ssl+set}" = set; then :
+if test ${with_ssl+y}
+then :
   withval=$with_ssl;
 
-else
+else $as_nop
 
             withval="yes"
 
@@ -18089,8 +19401,8 @@ fi
 
     withval=$withval
     if test x_$withval != x_no; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL" >&5
-$as_echo_n "checking for SSL... " >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SSL" >&5
+printf %s "checking for SSL... " >&6; }
        if test -n "$withval"; then
                                                                                if test ! -f "$withval/include/openssl/ssl.h" -a -f "$withval/openssl/ssl.h"; then
                        ssldir="$withval"
@@ -18129,12 +19441,10 @@ $as_echo_n "checking for SSL... " >&6; }
         if test x_$found_ssl != x_yes; then
             as_fn_error $? "Cannot find the SSL libraries in $withval" "$LINENO" 5
         else
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: found in $ssldir" >&5
-$as_echo "found in $ssldir" >&6; }
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found in $ssldir" >&5
+printf "%s\n" "found in $ssldir" >&6; }
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_SSL /**/
-_ACEOF
+printf "%s\n" "#define HAVE_SSL /**/" >>confdefs.h
 
             HAVE_SSL=yes
                        if test "$ssldir" != "/usr"; then
@@ -18151,15 +19461,15 @@ _ACEOF
 
            fi
 
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EVP_sha256 in -lcrypto" >&5
-$as_echo_n "checking for EVP_sha256 in -lcrypto... " >&6; }
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for EVP_sha256 in -lcrypto" >&5
+printf %s "checking for EVP_sha256 in -lcrypto... " >&6; }
             LIBS="$LIBS -lcrypto"
             LIBSSL_LIBS="$LIBSSL_LIBS -lcrypto"
             cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
                 int EVP_sha256(void);
@@ -18169,30 +19479,31 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
 
-                { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 
-$as_echo "#define HAVE_EVP_SHA256 1" >>confdefs.h
+printf "%s\n" "#define HAVE_EVP_SHA256 1" >>confdefs.h
 
 
-else
+else $as_nop
 
-                { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
                 # check if -lwsock32 or -lgdi32 are needed.
                 BAKLIBS="$LIBS"
                 BAKSSLLIBS="$LIBSSL_LIBS"
                LIBS="$LIBS -lgdi32 -lws2_32"
                LIBSSL_LIBS="$LIBSSL_LIBS -lgdi32 -lws2_32"
-                { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -lcrypto needs -lgdi32" >&5
-$as_echo_n "checking if -lcrypto needs -lgdi32... " >&6; }
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if -lcrypto needs -lgdi32" >&5
+printf %s "checking if -lcrypto needs -lgdi32... " >&6; }
                 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
                     int EVP_sha256(void);
@@ -18202,29 +19513,30 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
 
 
-$as_echo "#define HAVE_EVP_SHA256 1" >>confdefs.h
+printf "%s\n" "#define HAVE_EVP_SHA256 1" >>confdefs.h
 
-                    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+                    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 
-else
+else $as_nop
 
-                    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+                    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
                     LIBS="$BAKLIBS"
                     LIBSSL_LIBS="$BAKSSLLIBS"
                     LIBS="$LIBS -ldl"
                     LIBSSL_LIBS="$LIBSSL_LIBS -ldl"
-                    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -lcrypto needs -ldl" >&5
-$as_echo_n "checking if -lcrypto needs -ldl... " >&6; }
+                    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if -lcrypto needs -ldl" >&5
+printf %s "checking if -lcrypto needs -ldl... " >&6; }
                     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
                         int EVP_sha256(void);
@@ -18234,29 +19546,30 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
 
 
-$as_echo "#define HAVE_EVP_SHA256 1" >>confdefs.h
+printf "%s\n" "#define HAVE_EVP_SHA256 1" >>confdefs.h
 
-                        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+                        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 
-else
+else $as_nop
 
-                        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+                        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
                         LIBS="$BAKLIBS"
                         LIBSSL_LIBS="$BAKSSLLIBS"
                         LIBS="$LIBS -ldl -pthread"
                         LIBSSL_LIBS="$LIBSSL_LIBS -ldl -pthread"
-                        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -lcrypto needs -ldl -pthread" >&5
-$as_echo_n "checking if -lcrypto needs -ldl -pthread... " >&6; }
+                        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if -lcrypto needs -ldl -pthread" >&5
+printf %s "checking if -lcrypto needs -ldl -pthread... " >&6; }
                         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
                             int EVP_sha256(void);
@@ -18266,120 +19579,105 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
 
 
-$as_echo "#define HAVE_EVP_SHA256 1" >>confdefs.h
+printf "%s\n" "#define HAVE_EVP_SHA256 1" >>confdefs.h
 
-                            { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+                            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 
-else
+else $as_nop
 
-                            { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+                            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
                             as_fn_error $? "OpenSSL found in $ssldir, but version 0.9.7 or higher is required" "$LINENO" 5
 
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
         fi
 
 
     fi
-for ac_header in openssl/ssl.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "openssl/ssl.h" "ac_cv_header_openssl_ssl_h" "$ac_includes_default
+ac_fn_c_check_header_compile "$LINENO" "openssl/ssl.h" "ac_cv_header_openssl_ssl_h" "$ac_includes_default
 "
-if test "x$ac_cv_header_openssl_ssl_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_OPENSSL_SSL_H 1
-_ACEOF
+if test "x$ac_cv_header_openssl_ssl_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_OPENSSL_SSL_H 1" >>confdefs.h
 
 fi
 
-done
-
-for ac_header in openssl/err.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "openssl/err.h" "ac_cv_header_openssl_err_h" "$ac_includes_default
+ac_fn_c_check_header_compile "$LINENO" "openssl/err.h" "ac_cv_header_openssl_err_h" "$ac_includes_default
 "
-if test "x$ac_cv_header_openssl_err_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_OPENSSL_ERR_H 1
-_ACEOF
+if test "x$ac_cv_header_openssl_err_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_OPENSSL_ERR_H 1" >>confdefs.h
 
 fi
 
-done
-
-for ac_header in openssl/rand.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "openssl/rand.h" "ac_cv_header_openssl_rand_h" "$ac_includes_default
+ac_fn_c_check_header_compile "$LINENO" "openssl/rand.h" "ac_cv_header_openssl_rand_h" "$ac_includes_default
 "
-if test "x$ac_cv_header_openssl_rand_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_OPENSSL_RAND_H 1
-_ACEOF
+if test "x$ac_cv_header_openssl_rand_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_OPENSSL_RAND_H 1" >>confdefs.h
 
 fi
 
-done
-
 
 
 
 # check if libssl needs libdl
 BAKLIBS="$LIBS"
 LIBS="-lssl $LIBS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if libssl needs libdl" >&5
-$as_echo_n "checking if libssl needs libdl... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libssl needs libdl" >&5
+printf %s "checking if libssl needs libdl... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char SSL_CTX_new ();
 int
-main ()
+main (void)
 {
 return SSL_CTX_new ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
 
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
        LIBS="$BAKLIBS"
 
-else
+else $as_nop
 
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
        LIBS="$BAKLIBS"
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5
-$as_echo_n "checking for library containing dlopen... " >&6; }
-if ${ac_cv_search_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5
+printf %s "checking for library containing dlopen... " >&6; }
+if test ${ac_cv_search_dlopen+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -18387,53 +19685,55 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char dlopen ();
 int
-main ()
+main (void)
 {
 return dlopen ();
   ;
   return 0;
 }
 _ACEOF
-for ac_lib in '' dl; do
+for ac_lib in '' dl
+do
   if test -z "$ac_lib"; then
     ac_res="none required"
   else
     ac_res=-l$ac_lib
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
   fi
-  if ac_fn_c_try_link "$LINENO"; then :
+  if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_search_dlopen=$ac_res
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext
-  if ${ac_cv_search_dlopen+:} false; then :
+  if test ${ac_cv_search_dlopen+y}
+then :
   break
 fi
 done
-if ${ac_cv_search_dlopen+:} false; then :
+if test ${ac_cv_search_dlopen+y}
+then :
 
-else
+else $as_nop
   ac_cv_search_dlopen=no
 fi
 rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5
-$as_echo "$ac_cv_search_dlopen" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5
+printf "%s\n" "$ac_cv_search_dlopen" >&6; }
 ac_res=$ac_cv_search_dlopen
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
 fi
 
 
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 SSLLIB="-lssl"
 
@@ -18443,13 +19743,13 @@ PC_CRYPTO_DEPENDENCY=""
 # check if -lcrypt32 is needed because CAPIENG needs that. (on windows)
 BAKLIBS="$LIBS"
 LIBS="-lssl $LIBS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if libssl needs -lcrypt32" >&5
-$as_echo_n "checking if libssl needs -lcrypt32... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libssl needs -lcrypt32" >&5
+printf %s "checking if libssl needs -lcrypt32... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
        int EVP_sha256(void);
@@ -18459,123 +19759,427 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
 
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+       LIBS="$BAKLIBS"
+
+else $as_nop
+
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
        LIBS="$BAKLIBS"
+       LIBS="$LIBS -lcrypt32"
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LibreSSL" >&5
+printf %s "checking for LibreSSL... " >&6; }
+if grep VERSION_TEXT $ssldir_include/openssl/opensslv.h | grep "LibreSSL" >/dev/null; then
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+
+printf "%s\n" "#define HAVE_LIBRESSL 1" >>confdefs.h
+
+       # libressl provides these compat functions, but they may also be
+       # declared by the OS in libc.  See if they have been declared.
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5
+printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; }
+if test ${ac_cv_c_undeclared_builtin_options+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  ac_save_CFLAGS=$CFLAGS
+   ac_cv_c_undeclared_builtin_options='cannot detect'
+   for ac_arg in '' -fno-builtin; do
+     CFLAGS="$ac_save_CFLAGS $ac_arg"
+     # This test program should *not* compile successfully.
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main (void)
+{
+(void) strchr;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+
+else $as_nop
+  # This test program should compile successfully.
+        # No library function is consistently available on
+        # freestanding implementations, so test against a dummy
+        # declaration.  Include always-available headers on the
+        # off chance that they somehow elicit warnings.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <float.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stddef.h>
+extern void ac_decl (int, char *);
+
+int
+main (void)
+{
+(void) ac_decl (0, (char *) 0);
+  (void) ac_decl;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  if test x"$ac_arg" = x
+then :
+  ac_cv_c_undeclared_builtin_options='none needed'
+else $as_nop
+  ac_cv_c_undeclared_builtin_options=$ac_arg
+fi
+          break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+    done
+    CFLAGS=$ac_save_CFLAGS
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5
+printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; }
+  case $ac_cv_c_undeclared_builtin_options in #(
+  'cannot detect') :
+    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot make $CC report undeclared builtins
+See \`config.log' for more details" "$LINENO" 5; } ;; #(
+  'none needed') :
+    ac_c_undeclared_builtin_options='' ;; #(
+  *) :
+    ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;;
+esac
+
+ac_fn_check_decl "$LINENO" "strlcpy" "ac_cv_have_decl_strlcpy" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_strlcpy" = xyes
+then :
+  ac_have_decl=1
+else $as_nop
+  ac_have_decl=0
+fi
+printf "%s\n" "#define HAVE_DECL_STRLCPY $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "strlcat" "ac_cv_have_decl_strlcat" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_strlcat" = xyes
+then :
+  ac_have_decl=1
+else $as_nop
+  ac_have_decl=0
+fi
+printf "%s\n" "#define HAVE_DECL_STRLCAT $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "arc4random" "ac_cv_have_decl_arc4random" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_arc4random" = xyes
+then :
+  ac_have_decl=1
+else $as_nop
+  ac_have_decl=0
+fi
+printf "%s\n" "#define HAVE_DECL_ARC4RANDOM $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "arc4random_uniform" "ac_cv_have_decl_arc4random_uniform" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_arc4random_uniform" = xyes
+then :
+  ac_have_decl=1
+else $as_nop
+  ac_have_decl=0
+fi
+printf "%s\n" "#define HAVE_DECL_ARC4RANDOM_UNIFORM $ac_have_decl" >>confdefs.h
 
 else
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+ac_fn_c_check_header_compile "$LINENO" "openssl/conf.h" "ac_cv_header_openssl_conf_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_openssl_conf_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_OPENSSL_CONF_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "openssl/engine.h" "ac_cv_header_openssl_engine_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_openssl_engine_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_OPENSSL_ENGINE_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "openssl/bn.h" "ac_cv_header_openssl_bn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_openssl_bn_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_OPENSSL_BN_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "openssl/dh.h" "ac_cv_header_openssl_dh_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_openssl_dh_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_OPENSSL_DH_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "openssl/dsa.h" "ac_cv_header_openssl_dsa_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_openssl_dsa_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_OPENSSL_DSA_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "openssl/rsa.h" "ac_cv_header_openssl_rsa_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_openssl_rsa_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_OPENSSL_RSA_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "openssl/core_names.h" "ac_cv_header_openssl_core_names_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_openssl_core_names_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_OPENSSL_CORE_NAMES_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "openssl/param_build.h" "ac_cv_header_openssl_param_build_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_openssl_param_build_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_OPENSSL_PARAM_BUILD_H 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_func "$LINENO" "OPENSSL_config" "ac_cv_func_OPENSSL_config"
+if test "x$ac_cv_func_OPENSSL_config" = xyes
+then :
+  printf "%s\n" "#define HAVE_OPENSSL_CONFIG 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "EVP_sha1" "ac_cv_func_EVP_sha1"
+if test "x$ac_cv_func_EVP_sha1" = xyes
+then :
+  printf "%s\n" "#define HAVE_EVP_SHA1 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "EVP_sha256" "ac_cv_func_EVP_sha256"
+if test "x$ac_cv_func_EVP_sha256" = xyes
+then :
+  printf "%s\n" "#define HAVE_EVP_SHA256 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "EVP_sha512" "ac_cv_func_EVP_sha512"
+if test "x$ac_cv_func_EVP_sha512" = xyes
+then :
+  printf "%s\n" "#define HAVE_EVP_SHA512 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "FIPS_mode" "ac_cv_func_FIPS_mode"
+if test "x$ac_cv_func_FIPS_mode" = xyes
+then :
+  printf "%s\n" "#define HAVE_FIPS_MODE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "EVP_MD_CTX_new" "ac_cv_func_EVP_MD_CTX_new"
+if test "x$ac_cv_func_EVP_MD_CTX_new" = xyes
+then :
+  printf "%s\n" "#define HAVE_EVP_MD_CTX_NEW 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "OpenSSL_add_all_digests" "ac_cv_func_OpenSSL_add_all_digests"
+if test "x$ac_cv_func_OpenSSL_add_all_digests" = xyes
+then :
+  printf "%s\n" "#define HAVE_OPENSSL_ADD_ALL_DIGESTS 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "OPENSSL_init_crypto" "ac_cv_func_OPENSSL_init_crypto"
+if test "x$ac_cv_func_OPENSSL_init_crypto" = xyes
+then :
+  printf "%s\n" "#define HAVE_OPENSSL_INIT_CRYPTO 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "EVP_cleanup" "ac_cv_func_EVP_cleanup"
+if test "x$ac_cv_func_EVP_cleanup" = xyes
+then :
+  printf "%s\n" "#define HAVE_EVP_CLEANUP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "ENGINE_cleanup" "ac_cv_func_ENGINE_cleanup"
+if test "x$ac_cv_func_ENGINE_cleanup" = xyes
+then :
+  printf "%s\n" "#define HAVE_ENGINE_CLEANUP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "ERR_load_crypto_strings" "ac_cv_func_ERR_load_crypto_strings"
+if test "x$ac_cv_func_ERR_load_crypto_strings" = xyes
+then :
+  printf "%s\n" "#define HAVE_ERR_LOAD_CRYPTO_STRINGS 1" >>confdefs.h
 
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-       LIBS="$BAKLIBS"
-       LIBS="$LIBS -lcrypt32"
+fi
+ac_fn_c_check_func "$LINENO" "CRYPTO_cleanup_all_ex_data" "ac_cv_func_CRYPTO_cleanup_all_ex_data"
+if test "x$ac_cv_func_CRYPTO_cleanup_all_ex_data" = xyes
+then :
+  printf "%s\n" "#define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1" >>confdefs.h
 
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
+ac_fn_c_check_func "$LINENO" "ERR_free_strings" "ac_cv_func_ERR_free_strings"
+if test "x$ac_cv_func_ERR_free_strings" = xyes
+then :
+  printf "%s\n" "#define HAVE_ERR_FREE_STRINGS 1" >>confdefs.h
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LibreSSL" >&5
-$as_echo_n "checking for LibreSSL... " >&6; }
-if grep VERSION_TEXT $ssldir_include/openssl/opensslv.h | grep "LibreSSL" >/dev/null; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+fi
+ac_fn_c_check_func "$LINENO" "RAND_cleanup" "ac_cv_func_RAND_cleanup"
+if test "x$ac_cv_func_RAND_cleanup" = xyes
+then :
+  printf "%s\n" "#define HAVE_RAND_CLEANUP 1" >>confdefs.h
 
-$as_echo "#define HAVE_LIBRESSL 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "DSA_SIG_set0" "ac_cv_func_DSA_SIG_set0"
+if test "x$ac_cv_func_DSA_SIG_set0" = xyes
+then :
+  printf "%s\n" "#define HAVE_DSA_SIG_SET0 1" >>confdefs.h
 
-       # libressl provides these compat functions, but they may also be
-       # declared by the OS in libc.  See if they have been declared.
-       ac_fn_c_check_decl "$LINENO" "strlcpy" "ac_cv_have_decl_strlcpy" "$ac_includes_default"
-if test "x$ac_cv_have_decl_strlcpy" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
 fi
+ac_fn_c_check_func "$LINENO" "EVP_dss1" "ac_cv_func_EVP_dss1"
+if test "x$ac_cv_func_EVP_dss1" = xyes
+then :
+  printf "%s\n" "#define HAVE_EVP_DSS1 1" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_STRLCPY $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "strlcat" "ac_cv_have_decl_strlcat" "$ac_includes_default"
-if test "x$ac_cv_have_decl_strlcat" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
 fi
+ac_fn_c_check_func "$LINENO" "EVP_DigestVerify" "ac_cv_func_EVP_DigestVerify"
+if test "x$ac_cv_func_EVP_DigestVerify" = xyes
+then :
+  printf "%s\n" "#define HAVE_EVP_DIGESTVERIFY 1" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_STRLCAT $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "arc4random" "ac_cv_have_decl_arc4random" "$ac_includes_default"
-if test "x$ac_cv_have_decl_arc4random" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
 fi
+ac_fn_c_check_func "$LINENO" "EVP_aes_256_cbc" "ac_cv_func_EVP_aes_256_cbc"
+if test "x$ac_cv_func_EVP_aes_256_cbc" = xyes
+then :
+  printf "%s\n" "#define HAVE_EVP_AES_256_CBC 1" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_ARC4RANDOM $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "arc4random_uniform" "ac_cv_have_decl_arc4random_uniform" "$ac_includes_default"
-if test "x$ac_cv_have_decl_arc4random_uniform" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
 fi
+ac_fn_c_check_func "$LINENO" "EVP_EncryptInit_ex" "ac_cv_func_EVP_EncryptInit_ex"
+if test "x$ac_cv_func_EVP_EncryptInit_ex" = xyes
+then :
+  printf "%s\n" "#define HAVE_EVP_ENCRYPTINIT_EX 1" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_ARC4RANDOM_UNIFORM $ac_have_decl
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "HMAC_Init_ex" "ac_cv_func_HMAC_Init_ex"
+if test "x$ac_cv_func_HMAC_Init_ex" = xyes
+then :
+  printf "%s\n" "#define HAVE_HMAC_INIT_EX 1" >>confdefs.h
 
-else
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
 fi
-for ac_header in openssl/conf.h openssl/engine.h openssl/bn.h openssl/dh.h openssl/dsa.h openssl/rsa.h openssl/core_names.h openssl/param_build.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "CRYPTO_THREADID_set_callback" "ac_cv_func_CRYPTO_THREADID_set_callback"
+if test "x$ac_cv_func_CRYPTO_THREADID_set_callback" = xyes
+then :
+  printf "%s\n" "#define HAVE_CRYPTO_THREADID_SET_CALLBACK 1" >>confdefs.h
 
 fi
+ac_fn_c_check_func "$LINENO" "EVP_MAC_CTX_set_params" "ac_cv_func_EVP_MAC_CTX_set_params"
+if test "x$ac_cv_func_EVP_MAC_CTX_set_params" = xyes
+then :
+  printf "%s\n" "#define HAVE_EVP_MAC_CTX_SET_PARAMS 1" >>confdefs.h
 
-done
+fi
+ac_fn_c_check_func "$LINENO" "OSSL_PARAM_BLD_new" "ac_cv_func_OSSL_PARAM_BLD_new"
+if test "x$ac_cv_func_OSSL_PARAM_BLD_new" = xyes
+then :
+  printf "%s\n" "#define HAVE_OSSL_PARAM_BLD_NEW 1" >>confdefs.h
 
-for ac_func in OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback EVP_MAC_CTX_set_params OSSL_PARAM_BLD_new BIO_set_callback_ex
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "BIO_set_callback_ex" "ac_cv_func_BIO_set_callback_ex"
+if test "x$ac_cv_func_BIO_set_callback_ex" = xyes
+then :
+  printf "%s\n" "#define HAVE_BIO_SET_CALLBACK_EX 1" >>confdefs.h
 
 fi
-done
 
 
 # these check_funcs need -lssl
 BAKLIBS="$LIBS"
 LIBS="-lssl $LIBS"
-for ac_func in OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites SSL_CTX_set_tlsext_ticket_key_evp_cb SSL_CTX_set_alpn_select_cb SSL_get0_alpn_selected SSL_CTX_set_alpn_protos SSL_get1_peer_certificate
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "OPENSSL_init_ssl" "ac_cv_func_OPENSSL_init_ssl"
+if test "x$ac_cv_func_OPENSSL_init_ssl" = xyes
+then :
+  printf "%s\n" "#define HAVE_OPENSSL_INIT_SSL 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "SSL_CTX_set_security_level" "ac_cv_func_SSL_CTX_set_security_level"
+if test "x$ac_cv_func_SSL_CTX_set_security_level" = xyes
+then :
+  printf "%s\n" "#define HAVE_SSL_CTX_SET_SECURITY_LEVEL 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "SSL_set1_host" "ac_cv_func_SSL_set1_host"
+if test "x$ac_cv_func_SSL_set1_host" = xyes
+then :
+  printf "%s\n" "#define HAVE_SSL_SET1_HOST 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "SSL_get0_peername" "ac_cv_func_SSL_get0_peername"
+if test "x$ac_cv_func_SSL_get0_peername" = xyes
+then :
+  printf "%s\n" "#define HAVE_SSL_GET0_PEERNAME 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "X509_VERIFY_PARAM_set1_host" "ac_cv_func_X509_VERIFY_PARAM_set1_host"
+if test "x$ac_cv_func_X509_VERIFY_PARAM_set1_host" = xyes
+then :
+  printf "%s\n" "#define HAVE_X509_VERIFY_PARAM_SET1_HOST 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "SSL_CTX_set_ciphersuites" "ac_cv_func_SSL_CTX_set_ciphersuites"
+if test "x$ac_cv_func_SSL_CTX_set_ciphersuites" = xyes
+then :
+  printf "%s\n" "#define HAVE_SSL_CTX_SET_CIPHERSUITES 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "SSL_CTX_set_tlsext_ticket_key_evp_cb" "ac_cv_func_SSL_CTX_set_tlsext_ticket_key_evp_cb"
+if test "x$ac_cv_func_SSL_CTX_set_tlsext_ticket_key_evp_cb" = xyes
+then :
+  printf "%s\n" "#define HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "SSL_CTX_set_alpn_select_cb" "ac_cv_func_SSL_CTX_set_alpn_select_cb"
+if test "x$ac_cv_func_SSL_CTX_set_alpn_select_cb" = xyes
+then :
+  printf "%s\n" "#define HAVE_SSL_CTX_SET_ALPN_SELECT_CB 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "SSL_get0_alpn_selected" "ac_cv_func_SSL_get0_alpn_selected"
+if test "x$ac_cv_func_SSL_get0_alpn_selected" = xyes
+then :
+  printf "%s\n" "#define HAVE_SSL_GET0_ALPN_SELECTED 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "SSL_CTX_set_alpn_protos" "ac_cv_func_SSL_CTX_set_alpn_protos"
+if test "x$ac_cv_func_SSL_CTX_set_alpn_protos" = xyes
+then :
+  printf "%s\n" "#define HAVE_SSL_CTX_SET_ALPN_PROTOS 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "SSL_get1_peer_certificate" "ac_cv_func_SSL_get1_peer_certificate"
+if test "x$ac_cv_func_SSL_get1_peer_certificate" = xyes
+then :
+  printf "%s\n" "#define HAVE_SSL_GET1_PEER_CERTIFICATE 1" >>confdefs.h
 
 fi
-done
 
 LIBS="$BAKLIBS"
 
-ac_fn_c_check_decl "$LINENO" "SSL_COMP_get_compression_methods" "ac_cv_have_decl_SSL_COMP_get_compression_methods" "
+ac_fn_check_decl "$LINENO" "SSL_COMP_get_compression_methods" "ac_cv_have_decl_SSL_COMP_get_compression_methods" "
 $ac_includes_default
 #ifdef HAVE_OPENSSL_ERR_H
 #include <openssl/err.h>
@@ -18595,17 +20199,15 @@ $ac_includes_default
 #include <openssl/ssl.h>
 #include <openssl/evp.h>
 
-"
-if test "x$ac_cv_have_decl_SSL_COMP_get_compression_methods" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_SSL_COMP_get_compression_methods" = xyes
+then :
   ac_have_decl=1
-else
+else $as_nop
   ac_have_decl=0
 fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SSL_COMP_GET_COMPRESSION_METHODS $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "sk_SSL_COMP_pop_free" "ac_cv_have_decl_sk_SSL_COMP_pop_free" "
+printf "%s\n" "#define HAVE_DECL_SSL_COMP_GET_COMPRESSION_METHODS $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "sk_SSL_COMP_pop_free" "ac_cv_have_decl_sk_SSL_COMP_pop_free" "
 $ac_includes_default
 #ifdef HAVE_OPENSSL_ERR_H
 #include <openssl/err.h>
@@ -18625,17 +20227,15 @@ $ac_includes_default
 #include <openssl/ssl.h>
 #include <openssl/evp.h>
 
-"
-if test "x$ac_cv_have_decl_sk_SSL_COMP_pop_free" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_sk_SSL_COMP_pop_free" = xyes
+then :
   ac_have_decl=1
-else
+else $as_nop
   ac_have_decl=0
 fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SK_SSL_COMP_POP_FREE $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "SSL_CTX_set_ecdh_auto" "ac_cv_have_decl_SSL_CTX_set_ecdh_auto" "
+printf "%s\n" "#define HAVE_DECL_SK_SSL_COMP_POP_FREE $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "SSL_CTX_set_ecdh_auto" "ac_cv_have_decl_SSL_CTX_set_ecdh_auto" "
 $ac_includes_default
 #ifdef HAVE_OPENSSL_ERR_H
 #include <openssl/err.h>
@@ -18655,22 +20255,20 @@ $ac_includes_default
 #include <openssl/ssl.h>
 #include <openssl/evp.h>
 
-"
-if test "x$ac_cv_have_decl_SSL_CTX_set_ecdh_auto" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_SSL_CTX_set_ecdh_auto" = xyes
+then :
   ac_have_decl=1
-else
+else $as_nop
   ac_have_decl=0
 fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SSL_CTX_SET_ECDH_AUTO $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_SSL_CTX_SET_ECDH_AUTO $ac_have_decl" >>confdefs.h
 
 
 if test "$ac_cv_func_HMAC_Init_ex" = "yes"; then
 # check function return type.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the return type of HMAC_Init_ex" >&5
-$as_echo_n "checking the return type of HMAC_Init_ex... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the return type of HMAC_Init_ex" >&5
+printf %s "checking the return type of HMAC_Init_ex... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -18693,7 +20291,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 #include <openssl/evp.h>
 
 int
-main ()
+main (void)
 {
 
        HMAC_CTX* hmac_ctx = NULL;
@@ -18706,21 +20304,22 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
 
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: int" >&5
-$as_echo "int" >&6; }
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: int" >&5
+printf "%s\n" "int" >&6; }
 
-else
+else $as_nop
 
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: void" >&5
-$as_echo "void" >&6; }
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: void" >&5
+printf "%s\n" "void" >&6; }
 
-$as_echo "#define HMAC_INIT_EX_RETURNS_VOID 1" >>confdefs.h
+printf "%s\n" "#define HMAC_INIT_EX_RETURNS_VOID 1" >>confdefs.h
 
 
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
 fi
 # libbsd
 
 # Check whether --with-libbsd was given.
-if test "${with_libbsd+set}" = set; then :
+if test ${with_libbsd+y}
+then :
   withval=$with_libbsd;
-       for ac_header in bsd/string.h bsd/stdlib.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+       ac_fn_c_check_header_compile "$LINENO" "bsd/string.h" "ac_cv_header_bsd_string_h" "$ac_includes_default
 "
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+if test "x$ac_cv_header_bsd_string_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_BSD_STRING_H 1" >>confdefs.h
 
 fi
+ac_fn_c_check_header_compile "$LINENO" "bsd/stdlib.h" "ac_cv_header_bsd_stdlib_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_bsd_stdlib_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_BSD_STDLIB_H 1" >>confdefs.h
 
-done
+fi
 
        if test "x$ac_cv_header_bsd_string_h" = xyes -a "x$ac_cv_header_bsd_stdlib_h" = xyes; then
                for func in strlcpy strlcat arc4random arc4random_uniform reallocarray; do
-                       as_ac_Search=`$as_echo "ac_cv_search_$func" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing $func" >&5
-$as_echo_n "checking for library containing $func... " >&6; }
-if eval \${$as_ac_Search+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+                       as_ac_Search=`printf "%s\n" "ac_cv_search_$func" | $as_tr_sh`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing $func" >&5
+printf %s "checking for library containing $func... " >&6; }
+if eval test \${$as_ac_Search+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -18760,51 +20362,53 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char $func ();
 int
-main ()
+main (void)
 {
 return $func ();
   ;
   return 0;
 }
 _ACEOF
-for ac_lib in '' bsd; do
+for ac_lib in '' bsd
+do
   if test -z "$ac_lib"; then
     ac_res="none required"
   else
     ac_res=-l$ac_lib
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
   fi
-  if ac_fn_c_try_link "$LINENO"; then :
+  if ac_fn_c_try_link "$LINENO"
+then :
   eval "$as_ac_Search=\$ac_res"
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext
-  if eval \${$as_ac_Search+:} false; then :
+  if eval test \${$as_ac_Search+y}
+then :
   break
 fi
 done
-if eval \${$as_ac_Search+:} false; then :
+if eval test \${$as_ac_Search+y}
+then :
 
-else
+else $as_nop
   eval "$as_ac_Search=no"
 fi
 rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
 eval ac_res=\$$as_ac_Search
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+              { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
 eval ac_res=\$$as_ac_Search
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
 
-$as_echo "#define HAVE_LIBBSD 1" >>confdefs.h
+printf "%s\n" "#define HAVE_LIBBSD 1" >>confdefs.h
 
                                PC_LIBBSD_DEPENDENCY=libbsd
 
@@ -18818,7 +20422,8 @@ fi
 
 
 # Check whether --enable-sha1 was given.
-if test "${enable_sha1+set}" = set; then :
+if test ${enable_sha1+y}
+then :
   enableval=$enable_sha1;
 fi
 
@@ -18827,14 +20432,15 @@ case "$enable_sha1" in
        ;;
        yes|*)
 
-$as_echo "#define USE_SHA1 1" >>confdefs.h
+printf "%s\n" "#define USE_SHA1 1" >>confdefs.h
 
        ;;
 esac
 
 
 # Check whether --enable-sha2 was given.
-if test "${enable_sha2+set}" = set; then :
+if test ${enable_sha2+y}
+then :
   enableval=$enable_sha2;
 fi
 
@@ -18843,20 +20449,21 @@ case "$enable_sha2" in
        ;;
        yes|*)
 
-$as_echo "#define USE_SHA2 1" >>confdefs.h
+printf "%s\n" "#define USE_SHA2 1" >>confdefs.h
 
        ;;
 esac
 
 # Check whether --enable-subnet was given.
-if test "${enable_subnet+set}" = set; then :
+if test ${enable_subnet+y}
+then :
   enableval=$enable_subnet;
 fi
 
 case "$enable_subnet" in
        yes)
 
-$as_echo "#define CLIENT_SUBNET 1" >>confdefs.h
+printf "%s\n" "#define CLIENT_SUBNET 1" >>confdefs.h
 
        SUBNET_OBJ="edns-subnet.lo subnetmod.lo addrtree.lo subnet-whitelist.lo"
 
@@ -18870,7 +20477,8 @@ esac
 # check whether gost also works
 
 # Check whether --enable-gost was given.
-if test "${enable_gost+set}" = set; then :
+if test ${enable_gost+y}
+then :
   enableval=$enable_gost;
 fi
 
@@ -18881,33 +20489,36 @@ case "$enable_gost" in
        ;;
        *)
        ac_fn_c_check_func "$LINENO" "EVP_PKEY_set_type_str" "ac_cv_func_EVP_PKEY_set_type_str"
-if test "x$ac_cv_func_EVP_PKEY_set_type_str" = xyes; then :
+if test "x$ac_cv_func_EVP_PKEY_set_type_str" = xyes
+then :
   :
-else
+else $as_nop
   as_fn_error $? "OpenSSL 1.0.0 is needed for GOST support" "$LINENO" 5
 fi
 
        ac_fn_c_check_func "$LINENO" "EC_KEY_new" "ac_cv_func_EC_KEY_new"
-if test "x$ac_cv_func_EC_KEY_new" = xyes; then :
+if test "x$ac_cv_func_EC_KEY_new" = xyes
+then :
 
-else
+else $as_nop
   as_fn_error $? "OpenSSL does not support ECC, needed for GOST support" "$LINENO" 5
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if GOST works" >&5
-$as_echo_n "checking if GOST works... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if GOST works" >&5
+printf %s "checking if GOST works... " >&6; }
 if test c${cross_compiling} = cno; then
 BAKCFLAGS="$CFLAGS"
 if test -n "$ssldir"; then
        CFLAGS="$CFLAGS -Wl,-rpath,$ssldir_lib"
 fi
-if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+if test "$cross_compiling" = yes
+then :
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "cannot run test program while cross compiling
 See \`config.log' for more details" "$LINENO" 5; }
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -18993,9 +20604,10 @@ int main(void) {
 }
 
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
   eval "ac_cv_c_gost_works=yes"
-else
+else $as_nop
   eval "ac_cv_c_gost_works=no"
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -19006,20 +20618,21 @@ CFLAGS="$BAKCFLAGS"
 else
 eval "ac_cv_c_gost_works=maybe"
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_gost_works" >&5
-$as_echo "$ac_cv_c_gost_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_gost_works" >&5
+printf "%s\n" "$ac_cv_c_gost_works" >&6; }
 
        if test "$ac_cv_c_gost_works" != no; then
                use_gost="yes"
 
-$as_echo "#define USE_GOST 1" >>confdefs.h
+printf "%s\n" "#define USE_GOST 1" >>confdefs.h
 
        fi
        ;;
 esac
 fi
 # Check whether --enable-ecdsa was given.
-if test "${enable_ecdsa+set}" = set; then :
+if test ${enable_ecdsa+y}
+then :
   enableval=$enable_ecdsa;
 fi
 
@@ -19030,90 +20643,87 @@ case "$enable_ecdsa" in
     *)
       if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then
              ac_fn_c_check_func "$LINENO" "ECDSA_sign" "ac_cv_func_ECDSA_sign"
-if test "x$ac_cv_func_ECDSA_sign" = xyes; then :
+if test "x$ac_cv_func_ECDSA_sign" = xyes
+then :
 
-else
+else $as_nop
   as_fn_error $? "OpenSSL does not support ECDSA: please upgrade or rerun with --disable-ecdsa" "$LINENO" 5
 fi
 
              ac_fn_c_check_func "$LINENO" "SHA384_Init" "ac_cv_func_SHA384_Init"
-if test "x$ac_cv_func_SHA384_Init" = xyes; then :
+if test "x$ac_cv_func_SHA384_Init" = xyes
+then :
 
-else
+else $as_nop
   as_fn_error $? "OpenSSL does not support SHA384: please upgrade or rerun with --disable-ecdsa" "$LINENO" 5
 fi
 
-             ac_fn_c_check_decl "$LINENO" "NID_X9_62_prime256v1" "ac_cv_have_decl_NID_X9_62_prime256v1" "$ac_includes_default
+             ac_fn_check_decl "$LINENO" "NID_X9_62_prime256v1" "ac_cv_have_decl_NID_X9_62_prime256v1" "$ac_includes_default
 #include <openssl/evp.h>
 
-"
-if test "x$ac_cv_have_decl_NID_X9_62_prime256v1" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_NID_X9_62_prime256v1" = xyes
+then :
   ac_have_decl=1
-else
+else $as_nop
   ac_have_decl=0
 fi
+printf "%s\n" "#define HAVE_DECL_NID_X9_62_PRIME256V1 $ac_have_decl" >>confdefs.h
+if test $ac_have_decl = 1
+then :
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NID_X9_62_PRIME256V1 $ac_have_decl
-_ACEOF
-if test $ac_have_decl = 1; then :
-
-else
+else $as_nop
   as_fn_error $? "OpenSSL does not support the ECDSA curves: please upgrade or rerun with --disable-ecdsa" "$LINENO" 5
 fi
-ac_fn_c_check_decl "$LINENO" "NID_secp384r1" "ac_cv_have_decl_NID_secp384r1" "$ac_includes_default
+ac_fn_check_decl "$LINENO" "NID_secp384r1" "ac_cv_have_decl_NID_secp384r1" "$ac_includes_default
 #include <openssl/evp.h>
 
-"
-if test "x$ac_cv_have_decl_NID_secp384r1" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_NID_secp384r1" = xyes
+then :
   ac_have_decl=1
-else
+else $as_nop
   ac_have_decl=0
 fi
+printf "%s\n" "#define HAVE_DECL_NID_SECP384R1 $ac_have_decl" >>confdefs.h
+if test $ac_have_decl = 1
+then :
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NID_SECP384R1 $ac_have_decl
-_ACEOF
-if test $ac_have_decl = 1; then :
-
-else
+else $as_nop
   as_fn_error $? "OpenSSL does not support the ECDSA curves: please upgrade or rerun with --disable-ecdsa" "$LINENO" 5
 fi
 
              # see if OPENSSL 1.0.0 or later (has EVP MD and Verify independency)
-             { $as_echo "$as_me:${as_lineno-$LINENO}: checking if openssl supports SHA2 and ECDSA with EVP" >&5
-$as_echo_n "checking if openssl supports SHA2 and ECDSA with EVP... " >&6; }
+             { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if openssl supports SHA2 and ECDSA with EVP" >&5
+printf %s "checking if openssl supports SHA2 and ECDSA with EVP... " >&6; }
              if grep OPENSSL_VERSION_TEXT $ssldir_include/openssl/opensslv.h | grep "OpenSSL" >/dev/null; then
                if grep OPENSSL_VERSION_NUMBER $ssldir_include/openssl/opensslv.h | grep 0x0 >/dev/null; then
-                 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+                 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 
-cat >>confdefs.h <<_ACEOF
-#define USE_ECDSA_EVP_WORKAROUND 1
-_ACEOF
+printf "%s\n" "#define USE_ECDSA_EVP_WORKAROUND 1" >>confdefs.h
 
                else
-                 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+                 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
                fi
              else
                # not OpenSSL, thus likely LibreSSL, which supports it
-               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
              fi
       fi
       # we now know we have ECDSA and the required curves.
 
-cat >>confdefs.h <<_ACEOF
-#define USE_ECDSA 1
-_ACEOF
+printf "%s\n" "#define USE_ECDSA 1" >>confdefs.h
 
       use_ecdsa="yes"
       ;;
 esac
 
 # Check whether --enable-dsa was given.
-if test "${enable_dsa+set}" = set; then :
+if test ${enable_dsa+y}
+then :
   enableval=$enable_dsa;
 fi
 
@@ -19123,9 +20733,10 @@ case "$enable_dsa" in
       # detect if DSA is supported, and turn it off if not.
       if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then
       ac_fn_c_check_func "$LINENO" "DSA_SIG_new" "ac_cv_func_DSA_SIG_new"
-if test "x$ac_cv_func_DSA_SIG_new" = xyes; then :
+if test "x$ac_cv_func_DSA_SIG_new" = xyes
+then :
 
-      as_ac_Type=`$as_echo "ac_cv_type_DSA_SIG*" | $as_tr_sh`
+      as_ac_Type=`printf "%s\n" "ac_cv_type_DSA_SIG*" | $as_tr_sh`
 ac_fn_c_check_type "$LINENO" "DSA_SIG*" "$as_ac_Type" "
 $ac_includes_default
 #ifdef HAVE_OPENSSL_ERR_H
@@ -19145,30 +20756,27 @@ $ac_includes_default
 #endif
 
 "
-if eval test \"x\$"$as_ac_Type"\" = x"yes"; then :
+if eval test \"x\$"$as_ac_Type"\" = x"yes"
+then :
 
 
-cat >>confdefs.h <<_ACEOF
-#define USE_DSA 1
-_ACEOF
+printf "%s\n" "#define USE_DSA 1" >>confdefs.h
 
 
-else
+else $as_nop
   if test "x$enable_dsa" = "xyes"; then as_fn_error $? "OpenSSL does not support DSA and you used --enable-dsa." "$LINENO" 5
                fi
 fi
 
 
-else
+else $as_nop
   if test "x$enable_dsa" = "xyes"; then as_fn_error $? "OpenSSL does not support DSA and you used --enable-dsa." "$LINENO" 5
                fi
 fi
 
       else
 
-cat >>confdefs.h <<_ACEOF
-#define USE_DSA 1
-_ACEOF
+printf "%s\n" "#define USE_DSA 1" >>confdefs.h
 
       fi
       ;;
@@ -19180,18 +20788,20 @@ esac
 
 
 # Check whether --with-deprecate-rsa-1024 was given.
-if test "${with_deprecate_rsa_1024+set}" = set; then :
+if test ${with_deprecate_rsa_1024+y}
+then :
   withval=$with_deprecate_rsa_1024;
 fi
 
 if test "$with_deprecate_rsa_1024" = "yes"; then
 
-$as_echo "#define DEPRECATE_RSA_1024 1" >>confdefs.h
+printf "%s\n" "#define DEPRECATE_RSA_1024 1" >>confdefs.h
 
 fi
 
 # Check whether --enable-ed25519 was given.
-if test "${enable_ed25519+set}" = set; then :
+if test ${enable_ed25519+y}
+then :
   enableval=$enable_ed25519;
 fi
 
@@ -19201,56 +20811,52 @@ case "$enable_ed25519" in
       ;;
     *)
       if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then
-             ac_fn_c_check_decl "$LINENO" "NID_ED25519" "ac_cv_have_decl_NID_ED25519" "$ac_includes_default
+             ac_fn_check_decl "$LINENO" "NID_ED25519" "ac_cv_have_decl_NID_ED25519" "$ac_includes_default
 #include <openssl/evp.h>
 
-"
-if test "x$ac_cv_have_decl_NID_ED25519" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_NID_ED25519" = xyes
+then :
   ac_have_decl=1
-else
+else $as_nop
   ac_have_decl=0
 fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NID_ED25519 $ac_have_decl
-_ACEOF
-if test $ac_have_decl = 1; then :
+printf "%s\n" "#define HAVE_DECL_NID_ED25519 $ac_have_decl" >>confdefs.h
+if test $ac_have_decl = 1
+then :
 
                use_ed25519="yes"
 
-else
+else $as_nop
    if test "x$enable_ed25519" = "xyes"; then as_fn_error $? "OpenSSL does not support ED25519 and you used --enable-ed25519." "$LINENO" 5
                fi
 fi
 
       fi
       if test $USE_NETTLE = "yes"; then
-               for ac_header in nettle/eddsa.h
+                      for ac_header in nettle/eddsa.h
 do :
   ac_fn_c_check_header_compile "$LINENO" "nettle/eddsa.h" "ac_cv_header_nettle_eddsa_h" "$ac_includes_default
 "
-if test "x$ac_cv_header_nettle_eddsa_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_NETTLE_EDDSA_H 1
-_ACEOF
+if test "x$ac_cv_header_nettle_eddsa_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_NETTLE_EDDSA_H 1" >>confdefs.h
  use_ed25519="yes"
 fi
 
 done
-
       fi
       if test $use_ed25519 = "yes"; then
 
-cat >>confdefs.h <<_ACEOF
-#define USE_ED25519 1
-_ACEOF
+printf "%s\n" "#define USE_ED25519 1" >>confdefs.h
 
       fi
       ;;
 esac
 
 # Check whether --enable-ed448 was given.
-if test "${enable_ed448+set}" = set; then :
+if test ${enable_ed448+y}
+then :
   enableval=$enable_ed448;
 fi
 
@@ -19260,24 +20866,23 @@ case "$enable_ed448" in
       ;;
     *)
       if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then
-             ac_fn_c_check_decl "$LINENO" "NID_ED448" "ac_cv_have_decl_NID_ED448" "$ac_includes_default
+             ac_fn_check_decl "$LINENO" "NID_ED448" "ac_cv_have_decl_NID_ED448" "$ac_includes_default
 #include <openssl/evp.h>
 
-"
-if test "x$ac_cv_have_decl_NID_ED448" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_NID_ED448" = xyes
+then :
   ac_have_decl=1
-else
+else $as_nop
   ac_have_decl=0
 fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NID_ED448 $ac_have_decl
-_ACEOF
-if test $ac_have_decl = 1; then :
+printf "%s\n" "#define HAVE_DECL_NID_ED448 $ac_have_decl" >>confdefs.h
+if test $ac_have_decl = 1
+then :
 
                use_ed448="yes"
 
-else
+else $as_nop
    if test "x$enable_ed448" = "xyes"; then as_fn_error $? "OpenSSL does not support ED448 and you used --enable-ed448." "$LINENO" 5
                fi
 fi
       fi
       if test $use_ed448 = "yes"; then
 
-cat >>confdefs.h <<_ACEOF
-#define USE_ED448 1
-_ACEOF
+printf "%s\n" "#define USE_ED448 1" >>confdefs.h
 
       fi
       ;;
 esac
 
 # Check whether --enable-event-api was given.
-if test "${enable_event_api+set}" = set; then :
+if test ${enable_event_api+y}
+then :
   enableval=$enable_event_api;
 fi
 
@@ -19310,45 +20914,42 @@ case "$enable_event_api" in
 esac
 
 # Check whether --enable-tfo-client was given.
-if test "${enable_tfo_client+set}" = set; then :
+if test ${enable_tfo_client+y}
+then :
   enableval=$enable_tfo_client;
 fi
 
 case "$enable_tfo_client" in
        yes)
                case "$host_os" in
-                       linux*) ac_fn_c_check_decl "$LINENO" "MSG_FASTOPEN" "ac_cv_have_decl_MSG_FASTOPEN" "$ac_includes_default
+                       linux*) ac_fn_check_decl "$LINENO" "MSG_FASTOPEN" "ac_cv_have_decl_MSG_FASTOPEN" "$ac_includes_default
 #include <netinet/tcp.h>
 
-"
-if test "x$ac_cv_have_decl_MSG_FASTOPEN" = xyes; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO" >&5
-$as_echo "$as_me: WARNING: Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO" >&2;}
-else
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_MSG_FASTOPEN" = xyes
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO" >&5
+printf "%s\n" "$as_me: WARNING: Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO" >&2;}
+else $as_nop
   as_fn_error $? "TCP Fast Open is not available for client mode: please rerun without --enable-tfo-client" "$LINENO" 5
 fi
 
-
-cat >>confdefs.h <<_ACEOF
-#define USE_MSG_FASTOPEN 1
-_ACEOF
+printf "%s\n" "#define USE_MSG_FASTOPEN 1" >>confdefs.h
 
                                ;;
-                       darwin*) ac_fn_c_check_decl "$LINENO" "CONNECT_RESUME_ON_READ_WRITE" "ac_cv_have_decl_CONNECT_RESUME_ON_READ_WRITE" "$ac_includes_default
+                       darwin*) ac_fn_check_decl "$LINENO" "CONNECT_RESUME_ON_READ_WRITE" "ac_cv_have_decl_CONNECT_RESUME_ON_READ_WRITE" "$ac_includes_default
 #include <sys/socket.h>
 
-"
-if test "x$ac_cv_have_decl_CONNECT_RESUME_ON_READ_WRITE" = xyes; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO" >&5
-$as_echo "$as_me: WARNING: Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO" >&2;}
-else
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_CONNECT_RESUME_ON_READ_WRITE" = xyes
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO" >&5
+printf "%s\n" "$as_me: WARNING: Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO" >&2;}
+else $as_nop
   as_fn_error $? "TCP Fast Open is not available for client mode: please rerun without --enable-tfo-client" "$LINENO" 5
 fi
 
-
-cat >>confdefs.h <<_ACEOF
-#define USE_OSX_MSG_FASTOPEN 1
-_ACEOF
+printf "%s\n" "#define USE_OSX_MSG_FASTOPEN 1" >>confdefs.h
 
                                ;;
                esac
@@ -19358,27 +20959,26 @@ _ACEOF
 esac
 
 # Check whether --enable-tfo-server was given.
-if test "${enable_tfo_server+set}" = set; then :
+if test ${enable_tfo_server+y}
+then :
   enableval=$enable_tfo_server;
 fi
 
 case "$enable_tfo_server" in
        yes)
-             ac_fn_c_check_decl "$LINENO" "TCP_FASTOPEN" "ac_cv_have_decl_TCP_FASTOPEN" "$ac_includes_default
+             ac_fn_check_decl "$LINENO" "TCP_FASTOPEN" "ac_cv_have_decl_TCP_FASTOPEN" "$ac_includes_default
 #include <netinet/tcp.h>
 
-"
-if test "x$ac_cv_have_decl_TCP_FASTOPEN" = xyes; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Check the platform specific TFO kernel parameters are correctly configured to support server mode TFO" >&5
-$as_echo "$as_me: WARNING: Check the platform specific TFO kernel parameters are correctly configured to support server mode TFO" >&2;}
-else
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_TCP_FASTOPEN" = xyes
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Check the platform specific TFO kernel parameters are correctly configured to support server mode TFO" >&5
+printf "%s\n" "$as_me: WARNING: Check the platform specific TFO kernel parameters are correctly configured to support server mode TFO" >&2;}
+else $as_nop
   as_fn_error $? "TCP Fast Open is not available for server mode: please rerun without --enable-tfo-server" "$LINENO" 5
 fi
 
-
-cat >>confdefs.h <<_ACEOF
-#define USE_TCP_FASTOPEN 1
-_ACEOF
+printf "%s\n" "#define USE_TCP_FASTOPEN 1" >>confdefs.h
 
                ;;
        no|*)
@@ -19388,18 +20988,19 @@ esac
 # check for libevent
 
 # Check whether --with-libevent was given.
-if test "${with_libevent+set}" = set; then :
+if test ${with_libevent+y}
+then :
   withval=$with_libevent;
-else
+else $as_nop
    with_libevent="no"
 fi
 
 if test "x_$with_libevent" != x_no; then
 
-$as_echo "#define USE_LIBEVENT 1" >>confdefs.h
+printf "%s\n" "#define USE_LIBEVENT 1" >>confdefs.h
 
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libevent" >&5
-$as_echo_n "checking for libevent... " >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libevent" >&5
+printf %s "checking for libevent... " >&6; }
         if test "x_$with_libevent" = x_ -o "x_$with_libevent" = x_yes; then
             with_libevent="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr"
         fi
@@ -19416,8 +21017,8 @@ $as_echo_n "checking for libevent... " >&6; }
         if test x_$found_libevent != x_yes; then
                if test -f "$dir/event.h" -a \( -f "$dir/libevent.la" -o -f "$dir/libev.la" \) ; then
                        # libevent source directory
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: result: found in $thedir" >&5
-$as_echo "found in $thedir" >&6; }
+                       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found in $thedir" >&5
+printf "%s\n" "found in $thedir" >&6; }
                        CPPFLAGS="$CPPFLAGS -I$thedir -I$thedir/include"
                        BAK_LDFLAGS_SET="1"
                        BAK_LDFLAGS="$LDFLAGS"
@@ -19440,8 +21041,8 @@ Please note that this alternative is not as capable as libevent when using
 large outgoing port ranges.  " "$LINENO" 5
                fi
         else
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: found in $thedir" >&5
-$as_echo "found in $thedir" >&6; }
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found in $thedir" >&5
+printf "%s\n" "found in $thedir" >&6; }
                    if test ! -f $thedir/lib/libevent.a -a ! -f $thedir/lib/libevent.so -a -d "$thedir/lib/event2"; then
                    LDFLAGS="$LDFLAGS -L$thedir/lib/event2"
 
@@ -19465,11 +21066,12 @@ $as_echo "found in $thedir" >&6; }
            fi
         fi
        # check for library used by libevent after 1.3c
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5
-$as_echo_n "checking for library containing clock_gettime... " >&6; }
-if ${ac_cv_search_clock_gettime+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5
+printf %s "checking for library containing clock_gettime... " >&6; }
+if test ${ac_cv_search_clock_gettime+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -19477,76 +21079,75 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char clock_gettime ();
 int
-main ()
+main (void)
 {
 return clock_gettime ();
   ;
   return 0;
 }
 _ACEOF
-for ac_lib in '' rt; do
+for ac_lib in '' rt
+do
   if test -z "$ac_lib"; then
     ac_res="none required"
   else
     ac_res=-l$ac_lib
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
   fi
-  if ac_fn_c_try_link "$LINENO"; then :
+  if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_search_clock_gettime=$ac_res
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext
-  if ${ac_cv_search_clock_gettime+:} false; then :
+  if test ${ac_cv_search_clock_gettime+y}
+then :
   break
 fi
 done
-if ${ac_cv_search_clock_gettime+:} false; then :
+if test ${ac_cv_search_clock_gettime+y}
+then :
 
-else
+else $as_nop
   ac_cv_search_clock_gettime=no
 fi
 rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5
-$as_echo "$ac_cv_search_clock_gettime" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5
+printf "%s\n" "$ac_cv_search_clock_gettime" >&6; }
 ac_res=$ac_cv_search_clock_gettime
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
 fi
 
 
        # is the event.h header libev or libevent?
-       for ac_header in event.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "event.h" "ac_cv_header_event_h" "$ac_includes_default
+       ac_fn_c_check_header_compile "$LINENO" "event.h" "ac_cv_header_event_h" "$ac_includes_default
 "
-if test "x$ac_cv_header_event_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_EVENT_H 1
-_ACEOF
+if test "x$ac_cv_header_event_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_EVENT_H 1" >>confdefs.h
 
 fi
 
-done
-
-       ac_fn_c_check_decl "$LINENO" "EV_VERSION_MAJOR" "ac_cv_have_decl_EV_VERSION_MAJOR" "$ac_includes_default
+       ac_fn_check_decl "$LINENO" "EV_VERSION_MAJOR" "ac_cv_have_decl_EV_VERSION_MAJOR" "$ac_includes_default
 #include <event.h>
 
-"
-if test "x$ac_cv_have_decl_EV_VERSION_MAJOR" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_EV_VERSION_MAJOR" = xyes
+then :
 
-               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing event_set" >&5
-$as_echo_n "checking for library containing event_set... " >&6; }
-if ${ac_cv_search_event_set+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing event_set" >&5
+printf %s "checking for library containing event_set... " >&6; }
+if test ${ac_cv_search_event_set+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -19554,58 +21155,61 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char event_set ();
 int
-main ()
+main (void)
 {
 return event_set ();
   ;
   return 0;
 }
 _ACEOF
-for ac_lib in '' ev; do
+for ac_lib in '' ev
+do
   if test -z "$ac_lib"; then
     ac_res="none required"
   else
     ac_res=-l$ac_lib
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
   fi
-  if ac_fn_c_try_link "$LINENO"; then :
+  if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_search_event_set=$ac_res
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext
-  if ${ac_cv_search_event_set+:} false; then :
+  if test ${ac_cv_search_event_set+y}
+then :
   break
 fi
 done
-if ${ac_cv_search_event_set+:} false; then :
+if test ${ac_cv_search_event_set+y}
+then :
 
-else
+else $as_nop
   ac_cv_search_event_set=no
 fi
 rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_event_set" >&5
-$as_echo "$ac_cv_search_event_set" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_event_set" >&5
+printf "%s\n" "$ac_cv_search_event_set" >&6; }
 ac_res=$ac_cv_search_event_set
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
 fi
 
 
-else
+else $as_nop
 
-               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing event_set" >&5
-$as_echo_n "checking for library containing event_set... " >&6; }
-if ${ac_cv_search_event_set+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing event_set" >&5
+printf %s "checking for library containing event_set... " >&6; }
+if test ${ac_cv_search_event_set+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -19613,147 +21217,118 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char event_set ();
 int
-main ()
+main (void)
 {
 return event_set ();
   ;
   return 0;
 }
 _ACEOF
-for ac_lib in '' event; do
+for ac_lib in '' event
+do
   if test -z "$ac_lib"; then
     ac_res="none required"
   else
     ac_res=-l$ac_lib
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
   fi
-  if ac_fn_c_try_link "$LINENO"; then :
+  if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_search_event_set=$ac_res
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext
-  if ${ac_cv_search_event_set+:} false; then :
+  if test ${ac_cv_search_event_set+y}
+then :
   break
 fi
 done
-if ${ac_cv_search_event_set+:} false; then :
+if test ${ac_cv_search_event_set+y}
+then :
 
-else
+else $as_nop
   ac_cv_search_event_set=no
 fi
 rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_event_set" >&5
-$as_echo "$ac_cv_search_event_set" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_event_set" >&5
+printf "%s\n" "$ac_cv_search_event_set" >&6; }
 ac_res=$ac_cv_search_event_set
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
 fi
 
 
 fi
-
-       for ac_func in event_base_free
-do :
-  ac_fn_c_check_func "$LINENO" "event_base_free" "ac_cv_func_event_base_free"
-if test "x$ac_cv_func_event_base_free" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_EVENT_BASE_FREE 1
-_ACEOF
+       ac_fn_c_check_func "$LINENO" "event_base_free" "ac_cv_func_event_base_free"
+if test "x$ac_cv_func_event_base_free" = xyes
+then :
+  printf "%s\n" "#define HAVE_EVENT_BASE_FREE 1" >>confdefs.h
 
 fi
-done
  # only in libevent 1.2 and later
-       for ac_func in event_base_once
-do :
-  ac_fn_c_check_func "$LINENO" "event_base_once" "ac_cv_func_event_base_once"
-if test "x$ac_cv_func_event_base_once" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_EVENT_BASE_ONCE 1
-_ACEOF
+       ac_fn_c_check_func "$LINENO" "event_base_once" "ac_cv_func_event_base_once"
+if test "x$ac_cv_func_event_base_once" = xyes
+then :
+  printf "%s\n" "#define HAVE_EVENT_BASE_ONCE 1" >>confdefs.h
 
 fi
-done
  # only in libevent 1.4.1 and later
-       for ac_func in event_base_new
-do :
-  ac_fn_c_check_func "$LINENO" "event_base_new" "ac_cv_func_event_base_new"
-if test "x$ac_cv_func_event_base_new" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_EVENT_BASE_NEW 1
-_ACEOF
+       ac_fn_c_check_func "$LINENO" "event_base_new" "ac_cv_func_event_base_new"
+if test "x$ac_cv_func_event_base_new" = xyes
+then :
+  printf "%s\n" "#define HAVE_EVENT_BASE_NEW 1" >>confdefs.h
 
 fi
-done
  # only in libevent 1.4.1 and later
-       for ac_func in event_base_get_method
-do :
-  ac_fn_c_check_func "$LINENO" "event_base_get_method" "ac_cv_func_event_base_get_method"
-if test "x$ac_cv_func_event_base_get_method" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_EVENT_BASE_GET_METHOD 1
-_ACEOF
+       ac_fn_c_check_func "$LINENO" "event_base_get_method" "ac_cv_func_event_base_get_method"
+if test "x$ac_cv_func_event_base_get_method" = xyes
+then :
+  printf "%s\n" "#define HAVE_EVENT_BASE_GET_METHOD 1" >>confdefs.h
 
 fi
-done
  # only in libevent 1.4.3 and later
-       for ac_func in ev_loop
-do :
-  ac_fn_c_check_func "$LINENO" "ev_loop" "ac_cv_func_ev_loop"
-if test "x$ac_cv_func_ev_loop" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_EV_LOOP 1
-_ACEOF
+       ac_fn_c_check_func "$LINENO" "ev_loop" "ac_cv_func_ev_loop"
+if test "x$ac_cv_func_ev_loop" = xyes
+then :
+  printf "%s\n" "#define HAVE_EV_LOOP 1" >>confdefs.h
 
 fi
-done
  # only in libev. (tested on 3.51)
-       for ac_func in ev_default_loop
-do :
-  ac_fn_c_check_func "$LINENO" "ev_default_loop" "ac_cv_func_ev_default_loop"
-if test "x$ac_cv_func_ev_default_loop" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_EV_DEFAULT_LOOP 1
-_ACEOF
+       ac_fn_c_check_func "$LINENO" "ev_default_loop" "ac_cv_func_ev_default_loop"
+if test "x$ac_cv_func_ev_default_loop" = xyes
+then :
+  printf "%s\n" "#define HAVE_EV_DEFAULT_LOOP 1" >>confdefs.h
 
 fi
-done
  # only in libev. (tested on 4.00)
-       for ac_func in event_assign
-do :
-  ac_fn_c_check_func "$LINENO" "event_assign" "ac_cv_func_event_assign"
-if test "x$ac_cv_func_event_assign" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_EVENT_ASSIGN 1
-_ACEOF
+       ac_fn_c_check_func "$LINENO" "event_assign" "ac_cv_func_event_assign"
+if test "x$ac_cv_func_event_assign" = xyes
+then :
+  printf "%s\n" "#define HAVE_EVENT_ASSIGN 1" >>confdefs.h
 
 fi
-done
  # in libevent, for thread-safety
-       ac_fn_c_check_decl "$LINENO" "evsignal_assign" "ac_cv_have_decl_evsignal_assign" "$ac_includes_default
+       ac_fn_check_decl "$LINENO" "evsignal_assign" "ac_cv_have_decl_evsignal_assign" "$ac_includes_default
 #ifdef HAVE_EVENT_H
 #  include <event.h>
 #else
 #  include \"event2/event.h\"
 #endif
 
-"
-if test "x$ac_cv_have_decl_evsignal_assign" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_evsignal_assign" = xyes
+then :
   ac_have_decl=1
-else
+else $as_nop
   ac_have_decl=0
 fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_EVSIGNAL_ASSIGN $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_EVSIGNAL_ASSIGN $ac_have_decl" >>confdefs.h
 
         PC_LIBEVENT_DEPENDENCY="libevent"
 
@@ -19762,21 +21337,22 @@ _ACEOF
        fi
 else
 
-$as_echo "#define USE_MINI_EVENT 1" >>confdefs.h
+printf "%s\n" "#define USE_MINI_EVENT 1" >>confdefs.h
 
 fi
 
 # check for libexpat
 
 # Check whether --with-libexpat was given.
-if test "${with_libexpat+set}" = set; then :
+if test ${with_libexpat+y}
+then :
   withval=$with_libexpat;
-else
+else $as_nop
    withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr"
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libexpat" >&5
-$as_echo_n "checking for libexpat... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libexpat" >&5
+printf %s "checking for libexpat... " >&6; }
 found_libexpat="no"
 for dir in $withval ; do
             if test -f "$dir/include/expat.h"; then
@@ -19785,55 +21361,49 @@ for dir in $withval ; do
                     CPPFLAGS="$CPPFLAGS -I$dir/include"
                    LDFLAGS="$LDFLAGS -L$dir/lib"
                fi
-               { $as_echo "$as_me:${as_lineno-$LINENO}: result: found in $dir" >&5
-$as_echo "found in $dir" >&6; }
+               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found in $dir" >&5
+printf "%s\n" "found in $dir" >&6; }
                 break;
             fi
 done
 if test x_$found_libexpat != x_yes; then
        as_fn_error $? "Could not find libexpat, expat.h" "$LINENO" 5
 fi
-for ac_header in expat.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "expat.h" "ac_cv_header_expat_h" "$ac_includes_default
+ac_fn_c_check_header_compile "$LINENO" "expat.h" "ac_cv_header_expat_h" "$ac_includes_default
 "
-if test "x$ac_cv_header_expat_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_EXPAT_H 1
-_ACEOF
+if test "x$ac_cv_header_expat_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_EXPAT_H 1" >>confdefs.h
 
 fi
 
-done
-
-ac_fn_c_check_decl "$LINENO" "XML_StopParser" "ac_cv_have_decl_XML_StopParser" "$ac_includes_default
+ac_fn_check_decl "$LINENO" "XML_StopParser" "ac_cv_have_decl_XML_StopParser" "$ac_includes_default
 #include <expat.h>
 
-"
-if test "x$ac_cv_have_decl_XML_StopParser" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_XML_StopParser" = xyes
+then :
   ac_have_decl=1
-else
+else $as_nop
   ac_have_decl=0
 fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_XML_STOPPARSER $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_XML_STOPPARSER $ac_have_decl" >>confdefs.h
 
 
 # hiredis (redis C client for cachedb)
 
 # Check whether --with-libhiredis was given.
-if test "${with_libhiredis+set}" = set; then :
+if test ${with_libhiredis+y}
+then :
   withval=$with_libhiredis;
-else
+else $as_nop
    withval="no"
 fi
 
 found_libhiredis="no"
 if test x_$withval = x_yes -o x_$withval != x_no; then
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libhiredis" >&5
-$as_echo_n "checking for libhiredis... " >&6; }
+   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libhiredis" >&5
+printf %s "checking for libhiredis... " >&6; }
    if test x_$withval = x_ -o x_$withval = x_yes; then
             withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr"
    fi
@@ -19844,10 +21414,10 @@ $as_echo_n "checking for libhiredis... " >&6; }
                     CPPFLAGS="$CPPFLAGS -I$dir/include"
                    LDFLAGS="$LDFLAGS -L$dir/lib"
                fi
-               { $as_echo "$as_me:${as_lineno-$LINENO}: result: found in $dir" >&5
-$as_echo "found in $dir" >&6; }
+               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found in $dir" >&5
+printf "%s\n" "found in $dir" >&6; }
 
-$as_echo "#define USE_REDIS 1" >>confdefs.h
+printf "%s\n" "#define USE_REDIS 1" >>confdefs.h
 
                LIBS="$LIBS -lhiredis"
                 break;
@@ -19856,48 +21426,42 @@ $as_echo "#define USE_REDIS 1" >>confdefs.h
     if test x_$found_libhiredis != x_yes; then
        as_fn_error $? "Could not find libhiredis, hiredis.h" "$LINENO" 5
     fi
-    for ac_header in hiredis/hiredis.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "hiredis/hiredis.h" "ac_cv_header_hiredis_hiredis_h" "$ac_includes_default
+    ac_fn_c_check_header_compile "$LINENO" "hiredis/hiredis.h" "ac_cv_header_hiredis_hiredis_h" "$ac_includes_default
 "
-if test "x$ac_cv_header_hiredis_hiredis_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_HIREDIS_HIREDIS_H 1
-_ACEOF
+if test "x$ac_cv_header_hiredis_hiredis_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_HIREDIS_HIREDIS_H 1" >>confdefs.h
 
 fi
 
-done
-
-    ac_fn_c_check_decl "$LINENO" "redisConnect" "ac_cv_have_decl_redisConnect" "$ac_includes_default
+    ac_fn_check_decl "$LINENO" "redisConnect" "ac_cv_have_decl_redisConnect" "$ac_includes_default
     #include <hiredis/hiredis.h>
 
-"
-if test "x$ac_cv_have_decl_redisConnect" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_redisConnect" = xyes
+then :
   ac_have_decl=1
-else
+else $as_nop
   ac_have_decl=0
 fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_REDISCONNECT $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_REDISCONNECT $ac_have_decl" >>confdefs.h
 
 fi
 
 # nghttp2
 
 # Check whether --with-libnghttp2 was given.
-if test "${with_libnghttp2+set}" = set; then :
+if test ${with_libnghttp2+y}
+then :
   withval=$with_libnghttp2;
-else
+else $as_nop
    withval="no"
 fi
 
 found_libnghttp2="no"
 if test x_$withval = x_yes -o x_$withval != x_no; then
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libnghttp2" >&5
-$as_echo_n "checking for libnghttp2... " >&6; }
+   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libnghttp2" >&5
+printf %s "checking for libnghttp2... " >&6; }
    if test x_$withval = x_ -o x_$withval = x_yes; then
             withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr"
    fi
@@ -19908,10 +21472,10 @@ $as_echo_n "checking for libnghttp2... " >&6; }
                     CPPFLAGS="$CPPFLAGS -I$dir/include"
                    LDFLAGS="$LDFLAGS -L$dir/lib"
                fi
-               { $as_echo "$as_me:${as_lineno-$LINENO}: result: found in $dir" >&5
-$as_echo "found in $dir" >&6; }
+               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found in $dir" >&5
+printf "%s\n" "found in $dir" >&6; }
 
-$as_echo "#define HAVE_NGHTTP2 1" >>confdefs.h
+printf "%s\n" "#define HAVE_NGHTTP2 1" >>confdefs.h
 
                LIBS="$LIBS -lnghttp2"
                 break;
@@ -19920,32 +21484,25 @@ $as_echo "#define HAVE_NGHTTP2 1" >>confdefs.h
     if test x_$found_libnghttp2 != x_yes; then
        as_fn_error $? "Could not find libnghttp2, nghttp2.h" "$LINENO" 5
     fi
-    for ac_header in nghttp2/nghttp2.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "nghttp2/nghttp2.h" "ac_cv_header_nghttp2_nghttp2_h" "$ac_includes_default
+    ac_fn_c_check_header_compile "$LINENO" "nghttp2/nghttp2.h" "ac_cv_header_nghttp2_nghttp2_h" "$ac_includes_default
 "
-if test "x$ac_cv_header_nghttp2_nghttp2_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_NGHTTP2_NGHTTP2_H 1
-_ACEOF
+if test "x$ac_cv_header_nghttp2_nghttp2_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_NGHTTP2_NGHTTP2_H 1" >>confdefs.h
 
 fi
 
-done
-
-    ac_fn_c_check_decl "$LINENO" "nghttp2_session_server_new" "ac_cv_have_decl_nghttp2_session_server_new" "$ac_includes_default
+    ac_fn_check_decl "$LINENO" "nghttp2_session_server_new" "ac_cv_have_decl_nghttp2_session_server_new" "$ac_includes_default
     #include <nghttp2/nghttp2.h>
 
-"
-if test "x$ac_cv_have_decl_nghttp2_session_server_new" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_nghttp2_session_server_new" = xyes
+then :
   ac_have_decl=1
-else
+else $as_nop
   ac_have_decl=0
 fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NGHTTP2_SESSION_SERVER_NEW $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_NGHTTP2_SESSION_SERVER_NEW $ac_have_decl" >>confdefs.h
 
 fi
 
@@ -19953,7 +21510,8 @@ fi
 
 staticexe=""
 # Check whether --enable-static-exe was given.
-if test "${enable_static_exe+set}" = set; then :
+if test ${enable_static_exe+y}
+then :
   enableval=$enable_static_exe;
 fi
 
@@ -19974,7 +21532,8 @@ fi
 
 # set full static linking if requested
 # Check whether --enable-fully-static was given.
-if test "${enable_fully_static+set}" = set; then :
+if test ${enable_fully_static+y}
+then :
   enableval=$enable_fully_static;
 fi
 
 
 # set lock checking if requested
 # Check whether --enable-lock_checks was given.
-if test "${enable_lock_checks+set}" = set; then :
+if test ${enable_lock_checks+y}
+then :
   enableval=$enable_lock_checks;
 fi
 
 if test x_$enable_lock_checks = x_yes; then
 
-$as_echo "#define ENABLE_LOCK_CHECKS 1" >>confdefs.h
+printf "%s\n" "#define ENABLE_LOCK_CHECKS 1" >>confdefs.h
 
        CHECKLOCK_OBJ="checklocks.lo"
 
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo" >&5
-$as_echo_n "checking for getaddrinfo... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo" >&5
+printf %s "checking for getaddrinfo... " >&6; }
 ac_cv_func_getaddrinfo=no
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -20028,11 +21588,12 @@ int main() {
 }
 
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_func_getaddrinfo="yes"
 if test "$ac_cv_header_windows_h" = "yes"; then
 
-$as_echo "#define USE_WINSOCK 1" >>confdefs.h
+printf "%s\n" "#define USE_WINSOCK 1" >>confdefs.h
 
        USE_WINSOCK="1"
        if echo $LIBS | grep 'lws2_32' >/dev/null; then
@@ -20042,7 +21603,7 @@ $as_echo "#define USE_WINSOCK 1" >>confdefs.h
        fi
 fi
 
-else
+else $as_nop
   ORIGLIBS="$LIBS"
 LIBS="$LIBS -lws2_32"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -20053,7 +21614,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 #endif
 
 int
-main ()
+main (void)
 {
 
         (void)getaddrinfo(NULL, NULL, NULL, NULL);
@@ -20063,62 +21624,59 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
 
 ac_cv_func_getaddrinfo="yes"
 
-$as_echo "#define USE_WINSOCK 1" >>confdefs.h
+printf "%s\n" "#define USE_WINSOCK 1" >>confdefs.h
 
 USE_WINSOCK="1"
 
-else
+else $as_nop
 
 ac_cv_func_getaddrinfo="no"
 LIBS="$ORIGLIBS"
 
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getaddrinfo" >&5
-$as_echo "$ac_cv_func_getaddrinfo" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getaddrinfo" >&5
+printf "%s\n" "$ac_cv_func_getaddrinfo" >&6; }
 if test $ac_cv_func_getaddrinfo = yes; then
 
-$as_echo "#define HAVE_GETADDRINFO 1" >>confdefs.h
+printf "%s\n" "#define HAVE_GETADDRINFO 1" >>confdefs.h
 
 fi
 
 if test "$USE_WINSOCK" = 1; then
 
-$as_echo "#define UB_ON_WINDOWS 1" >>confdefs.h
+printf "%s\n" "#define UB_ON_WINDOWS 1" >>confdefs.h
 
-       for ac_header in iphlpapi.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "iphlpapi.h" "ac_cv_header_iphlpapi_h" "$ac_includes_default
+       ac_fn_c_check_header_compile "$LINENO" "iphlpapi.h" "ac_cv_header_iphlpapi_h" "$ac_includes_default
 #include <windows.h>
 
 "
-if test "x$ac_cv_header_iphlpapi_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_IPHLPAPI_H 1
-_ACEOF
+if test "x$ac_cv_header_iphlpapi_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_IPHLPAPI_H 1" >>confdefs.h
 
 fi
 
-done
-
        if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args.
 set dummy ${ac_tool_prefix}windres; 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_prog_WINDRES+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_WINDRES+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$WINDRES"; then
   ac_cv_prog_WINDRES="$WINDRES" # Let the user override the test.
 else
@@ -20126,11 +21684,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_WINDRES="${ac_tool_prefix}windres"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
 fi
 WINDRES=$ac_cv_prog_WINDRES
 if test -n "$WINDRES"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WINDRES" >&5
-$as_echo "$WINDRES" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $WINDRES" >&5
+printf "%s\n" "$WINDRES" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -20154,11 +21716,12 @@ if test -z "$ac_cv_prog_WINDRES"; then
   ac_ct_WINDRES=$WINDRES
   # Extract the first word of "windres", so it can be a program name with args.
 set dummy windres; 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_prog_ac_ct_WINDRES+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_WINDRES+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$ac_ct_WINDRES"; then
   ac_cv_prog_ac_ct_WINDRES="$ac_ct_WINDRES" # Let the user override the test.
 else
@@ -20166,11 +21729,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_WINDRES="windres"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
 fi
 ac_ct_WINDRES=$ac_cv_prog_ac_ct_WINDRES
 if test -n "$ac_ct_WINDRES"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_WINDRES" >&5
-$as_echo "$ac_ct_WINDRES" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_WINDRES" >&5
+printf "%s\n" "$ac_ct_WINDRES" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
   if test "x$ac_ct_WINDRES" = x; then
@@ -20193,8 +21760,8 @@ fi
   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;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     WINDRES=$ac_ct_WINDRES
@@ -20235,8 +21802,8 @@ fi
 # check after getaddrinfo for its libraries
 
 # check ioctlsocket
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ioctlsocket" >&5
-$as_echo_n "checking for ioctlsocket... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ioctlsocket" >&5
+printf %s "checking for ioctlsocket... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -20245,7 +21812,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 #endif
 
 int
-main ()
+main (void)
 {
 
        (void)ioctlsocket(0, 0, NULL);
@@ -20254,43 +21821,41 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 
-$as_echo "#define HAVE_IOCTLSOCKET 1" >>confdefs.h
+printf "%s\n" "#define HAVE_IOCTLSOCKET 1" >>confdefs.h
 
 
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 
 
 # see if daemon(3) exists, and if it is deprecated.
-for ac_func in daemon
-do :
-  ac_fn_c_check_func "$LINENO" "daemon" "ac_cv_func_daemon"
-if test "x$ac_cv_func_daemon" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_DAEMON 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "daemon" "ac_cv_func_daemon"
+if test "x$ac_cv_func_daemon" = xyes
+then :
+  printf "%s\n" "#define HAVE_DAEMON 1" >>confdefs.h
 
 fi
-done
 
 if test $ac_cv_func_daemon = yes; then
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if daemon is deprecated" >&5
-$as_echo_n "checking if daemon is deprecated... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if daemon is deprecated" >&5
+printf %s "checking if daemon is deprecated... " >&6; }
 cache=`echo daemon | sed 'y%.=/+-%___p_%'`
-if eval \${cv_cc_deprecated_$cache+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if eval test \${cv_cc_deprecated_$cache+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 echo '
 #include <stdlib.h>
@@ -20307,18 +21872,16 @@ rm -f conftest conftest.o conftest.c
 fi
 
 if eval "test \"`echo '$cv_cc_deprecated_'$cache`\" = yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 
-cat >>confdefs.h <<_ACEOF
-#define DEPRECATED_DAEMON 1
-_ACEOF
+printf "%s\n" "#define DEPRECATED_DAEMON 1" >>confdefs.h
 
 :
 
 else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 :
 
 fi
@@ -20332,11 +21895,10 @@ $ac_includes_default
 #endif
 
 "
-if test "x$ac_cv_member_struct_sockaddr_un_sun_len" = xyes; then :
+if test "x$ac_cv_member_struct_sockaddr_un_sun_len" = xyes
+then :
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_SOCKADDR_UN_SUN_LEN 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_SOCKADDR_UN_SUN_LEN 1" >>confdefs.h
 
 
 fi
@@ -20376,18 +21938,17 @@ $ac_includes_default
 #endif
 
 "
-if test "x$ac_cv_member_struct_in_pktinfo_ipi_spec_dst" = xyes; then :
+if test "x$ac_cv_member_struct_in_pktinfo_ipi_spec_dst" = xyes
+then :
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_IN_PKTINFO_IPI_SPEC_DST 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_IN_PKTINFO_IPI_SPEC_DST 1" >>confdefs.h
 
 
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for htobe64" >&5
-$as_echo_n "checking for htobe64... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for htobe64" >&5
+printf %s "checking for htobe64... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -20400,28 +21961,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 #endif
 
 int
-main ()
+main (void)
 {
 unsigned long long x = htobe64(0); printf("%u", (unsigned)x);
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 
-$as_echo "#define HAVE_HTOBE64 1" >>confdefs.h
+printf "%s\n" "#define HAVE_HTOBE64 1" >>confdefs.h
 
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for be64toh" >&5
-$as_echo_n "checking for be64toh... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for be64toh" >&5
+printf %s "checking for be64toh... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -20434,31 +21996,33 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 #endif
 
 int
-main ()
+main (void)
 {
 unsigned long long x = be64toh(0); printf("%u", (unsigned)x);
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 
-$as_echo "#define HAVE_BE64TOH 1" >>confdefs.h
+printf "%s\n" "#define HAVE_BE64TOH 1" >>confdefs.h
 
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing setusercontext" >&5
-$as_echo_n "checking for library containing setusercontext... " >&6; }
-if ${ac_cv_search_setusercontext+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing setusercontext" >&5
+printf %s "checking for library containing setusercontext... " >&6; }
+if test ${ac_cv_search_setusercontext+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -20466,116 +22030,291 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char setusercontext ();
 int
-main ()
+main (void)
 {
 return setusercontext ();
   ;
   return 0;
 }
 _ACEOF
-for ac_lib in '' util; do
+for ac_lib in '' util
+do
   if test -z "$ac_lib"; then
     ac_res="none required"
   else
     ac_res=-l$ac_lib
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
   fi
-  if ac_fn_c_try_link "$LINENO"; then :
+  if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_search_setusercontext=$ac_res
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext
-  if ${ac_cv_search_setusercontext+:} false; then :
+  if test ${ac_cv_search_setusercontext+y}
+then :
   break
 fi
 done
-if ${ac_cv_search_setusercontext+:} false; then :
+if test ${ac_cv_search_setusercontext+y}
+then :
 
-else
+else $as_nop
   ac_cv_search_setusercontext=no
 fi
 rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_setusercontext" >&5
-$as_echo "$ac_cv_search_setusercontext" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_setusercontext" >&5
+printf "%s\n" "$ac_cv_search_setusercontext" >&6; }
 ac_res=$ac_cv_search_setusercontext
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
 fi
 
-for ac_func in tzset sigprocmask fcntl getpwnam endpwent getrlimit setrlimit setsid chroot kill chown sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex endservent endprotoent fsync shmget accept4 getifaddrs if_nametoindex
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "tzset" "ac_cv_func_tzset"
+if test "x$ac_cv_func_tzset" = xyes
+then :
+  printf "%s\n" "#define HAVE_TZSET 1" >>confdefs.h
 
 fi
-done
+ac_fn_c_check_func "$LINENO" "sigprocmask" "ac_cv_func_sigprocmask"
+if test "x$ac_cv_func_sigprocmask" = xyes
+then :
+  printf "%s\n" "#define HAVE_SIGPROCMASK 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "fcntl" "ac_cv_func_fcntl"
+if test "x$ac_cv_func_fcntl" = xyes
+then :
+  printf "%s\n" "#define HAVE_FCNTL 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getpwnam" "ac_cv_func_getpwnam"
+if test "x$ac_cv_func_getpwnam" = xyes
+then :
+  printf "%s\n" "#define HAVE_GETPWNAM 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "endpwent" "ac_cv_func_endpwent"
+if test "x$ac_cv_func_endpwent" = xyes
+then :
+  printf "%s\n" "#define HAVE_ENDPWENT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit"
+if test "x$ac_cv_func_getrlimit" = xyes
+then :
+  printf "%s\n" "#define HAVE_GETRLIMIT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setrlimit" "ac_cv_func_setrlimit"
+if test "x$ac_cv_func_setrlimit" = xyes
+then :
+  printf "%s\n" "#define HAVE_SETRLIMIT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setsid" "ac_cv_func_setsid"
+if test "x$ac_cv_func_setsid" = xyes
+then :
+  printf "%s\n" "#define HAVE_SETSID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "chroot" "ac_cv_func_chroot"
+if test "x$ac_cv_func_chroot" = xyes
+then :
+  printf "%s\n" "#define HAVE_CHROOT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "kill" "ac_cv_func_kill"
+if test "x$ac_cv_func_kill" = xyes
+then :
+  printf "%s\n" "#define HAVE_KILL 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "chown" "ac_cv_func_chown"
+if test "x$ac_cv_func_chown" = xyes
+then :
+  printf "%s\n" "#define HAVE_CHOWN 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sleep" "ac_cv_func_sleep"
+if test "x$ac_cv_func_sleep" = xyes
+then :
+  printf "%s\n" "#define HAVE_SLEEP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "usleep" "ac_cv_func_usleep"
+if test "x$ac_cv_func_usleep" = xyes
+then :
+  printf "%s\n" "#define HAVE_USLEEP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "random" "ac_cv_func_random"
+if test "x$ac_cv_func_random" = xyes
+then :
+  printf "%s\n" "#define HAVE_RANDOM 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "srandom" "ac_cv_func_srandom"
+if test "x$ac_cv_func_srandom" = xyes
+then :
+  printf "%s\n" "#define HAVE_SRANDOM 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "recvmsg" "ac_cv_func_recvmsg"
+if test "x$ac_cv_func_recvmsg" = xyes
+then :
+  printf "%s\n" "#define HAVE_RECVMSG 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sendmsg" "ac_cv_func_sendmsg"
+if test "x$ac_cv_func_sendmsg" = xyes
+then :
+  printf "%s\n" "#define HAVE_SENDMSG 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "writev" "ac_cv_func_writev"
+if test "x$ac_cv_func_writev" = xyes
+then :
+  printf "%s\n" "#define HAVE_WRITEV 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "socketpair" "ac_cv_func_socketpair"
+if test "x$ac_cv_func_socketpair" = xyes
+then :
+  printf "%s\n" "#define HAVE_SOCKETPAIR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "glob" "ac_cv_func_glob"
+if test "x$ac_cv_func_glob" = xyes
+then :
+  printf "%s\n" "#define HAVE_GLOB 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "initgroups" "ac_cv_func_initgroups"
+if test "x$ac_cv_func_initgroups" = xyes
+then :
+  printf "%s\n" "#define HAVE_INITGROUPS 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime"
+if test "x$ac_cv_func_strftime" = xyes
+then :
+  printf "%s\n" "#define HAVE_STRFTIME 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "localtime_r" "ac_cv_func_localtime_r"
+if test "x$ac_cv_func_localtime_r" = xyes
+then :
+  printf "%s\n" "#define HAVE_LOCALTIME_R 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setusercontext" "ac_cv_func_setusercontext"
+if test "x$ac_cv_func_setusercontext" = xyes
+then :
+  printf "%s\n" "#define HAVE_SETUSERCONTEXT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "_beginthreadex" "ac_cv_func__beginthreadex"
+if test "x$ac_cv_func__beginthreadex" = xyes
+then :
+  printf "%s\n" "#define HAVE__BEGINTHREADEX 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "endservent" "ac_cv_func_endservent"
+if test "x$ac_cv_func_endservent" = xyes
+then :
+  printf "%s\n" "#define HAVE_ENDSERVENT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "endprotoent" "ac_cv_func_endprotoent"
+if test "x$ac_cv_func_endprotoent" = xyes
+then :
+  printf "%s\n" "#define HAVE_ENDPROTOENT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "fsync" "ac_cv_func_fsync"
+if test "x$ac_cv_func_fsync" = xyes
+then :
+  printf "%s\n" "#define HAVE_FSYNC 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "shmget" "ac_cv_func_shmget"
+if test "x$ac_cv_func_shmget" = xyes
+then :
+  printf "%s\n" "#define HAVE_SHMGET 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "accept4" "ac_cv_func_accept4"
+if test "x$ac_cv_func_accept4" = xyes
+then :
+  printf "%s\n" "#define HAVE_ACCEPT4 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getifaddrs" "ac_cv_func_getifaddrs"
+if test "x$ac_cv_func_getifaddrs" = xyes
+then :
+  printf "%s\n" "#define HAVE_GETIFADDRS 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "if_nametoindex" "ac_cv_func_if_nametoindex"
+if test "x$ac_cv_func_if_nametoindex" = xyes
+then :
+  printf "%s\n" "#define HAVE_IF_NAMETOINDEX 1" >>confdefs.h
+
+fi
+
 
-for ac_func in setresuid
+  for ac_func in setresuid
 do :
   ac_fn_c_check_func "$LINENO" "setresuid" "ac_cv_func_setresuid"
-if test "x$ac_cv_func_setresuid" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_SETRESUID 1
-_ACEOF
+if test "x$ac_cv_func_setresuid" = xyes
+then :
+  printf "%s\n" "#define HAVE_SETRESUID 1" >>confdefs.h
 
-else
-  for ac_func in setreuid
-do :
+else $as_nop
   ac_fn_c_check_func "$LINENO" "setreuid" "ac_cv_func_setreuid"
-if test "x$ac_cv_func_setreuid" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_SETREUID 1
-_ACEOF
+if test "x$ac_cv_func_setreuid" = xyes
+then :
+  printf "%s\n" "#define HAVE_SETREUID 1" >>confdefs.h
 
 fi
-done
 
 fi
+
 done
 
-for ac_func in setresgid
+  for ac_func in setresgid
 do :
   ac_fn_c_check_func "$LINENO" "setresgid" "ac_cv_func_setresgid"
-if test "x$ac_cv_func_setresgid" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_SETRESGID 1
-_ACEOF
+if test "x$ac_cv_func_setresgid" = xyes
+then :
+  printf "%s\n" "#define HAVE_SETRESGID 1" >>confdefs.h
 
-else
-  for ac_func in setregid
-do :
+else $as_nop
   ac_fn_c_check_func "$LINENO" "setregid" "ac_cv_func_setregid"
-if test "x$ac_cv_func_setregid" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_SETREGID 1
-_ACEOF
+if test "x$ac_cv_func_setregid" = xyes
+then :
+  printf "%s\n" "#define HAVE_SETREGID 1" >>confdefs.h
 
 fi
-done
 
 fi
-done
 
+done
 
 # check if setreuid en setregid fail, on MacOSX10.4(darwin8).
 if echo $host_os | grep darwin8 > /dev/null; then
 
-$as_echo "#define DARWIN_BROKEN_SETREUID 1" >>confdefs.h
+printf "%s\n" "#define DARWIN_BROKEN_SETREUID 1" >>confdefs.h
 
 fi
-ac_fn_c_check_decl "$LINENO" "inet_pton" "ac_cv_have_decl_inet_pton" "
+ac_fn_check_decl "$LINENO" "inet_pton" "ac_cv_have_decl_inet_pton" "
 $ac_includes_default
 #ifdef HAVE_NETINET_IN_H
 #include <netinet/in.h>
@@ -20597,17 +22336,15 @@ $ac_includes_default
 #include <ws2tcpip.h>
 #endif
 
-"
-if test "x$ac_cv_have_decl_inet_pton" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_inet_pton" = xyes
+then :
   ac_have_decl=1
-else
+else $as_nop
   ac_have_decl=0
 fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_INET_PTON $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "inet_ntop" "ac_cv_have_decl_inet_ntop" "
+printf "%s\n" "#define HAVE_DECL_INET_PTON $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "inet_ntop" "ac_cv_have_decl_inet_ntop" "
 $ac_includes_default
 #ifdef HAVE_NETINET_IN_H
 #include <netinet/in.h>
@@ -20629,22 +22366,21 @@ $ac_includes_default
 #include <ws2tcpip.h>
 #endif
 
-"
-if test "x$ac_cv_have_decl_inet_ntop" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_inet_ntop" = xyes
+then :
   ac_have_decl=1
-else
+else $as_nop
   ac_have_decl=0
 fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_INET_NTOP $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_INET_NTOP $ac_have_decl" >>confdefs.h
 
 ac_fn_c_check_func "$LINENO" "inet_aton" "ac_cv_func_inet_aton"
-if test "x$ac_cv_func_inet_aton" = xyes; then :
-  $as_echo "#define HAVE_INET_ATON 1" >>confdefs.h
+if test "x$ac_cv_func_inet_aton" = xyes
+then :
+  printf "%s\n" "#define HAVE_INET_ATON 1" >>confdefs.h
 
-else
+else $as_nop
   case " $LIBOBJS " in
   *" inet_aton.$ac_objext "* ) ;;
   *) LIBOBJS="$LIBOBJS inet_aton.$ac_objext"
@@ -20653,12 +22389,12 @@ esac
 
 fi
 
-
 ac_fn_c_check_func "$LINENO" "inet_pton" "ac_cv_func_inet_pton"
-if test "x$ac_cv_func_inet_pton" = xyes; then :
-  $as_echo "#define HAVE_INET_PTON 1" >>confdefs.h
+if test "x$ac_cv_func_inet_pton" = xyes
+then :
+  printf "%s\n" "#define HAVE_INET_PTON 1" >>confdefs.h
 
-else
+else $as_nop
   case " $LIBOBJS " in
   *" inet_pton.$ac_objext "* ) ;;
   *) LIBOBJS="$LIBOBJS inet_pton.$ac_objext"
@@ -20667,12 +22403,12 @@ esac
 
 fi
 
-
 ac_fn_c_check_func "$LINENO" "inet_ntop" "ac_cv_func_inet_ntop"
-if test "x$ac_cv_func_inet_ntop" = xyes; then :
-  $as_echo "#define HAVE_INET_NTOP 1" >>confdefs.h
+if test "x$ac_cv_func_inet_ntop" = xyes
+then :
+  printf "%s\n" "#define HAVE_INET_NTOP 1" >>confdefs.h
 
-else
+else $as_nop
   case " $LIBOBJS " in
   *" inet_ntop.$ac_objext "* ) ;;
   *) LIBOBJS="$LIBOBJS inet_ntop.$ac_objext"
@@ -20681,12 +22417,12 @@ esac
 
 fi
 
-
 ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf"
-if test "x$ac_cv_func_snprintf" = xyes; then :
-  $as_echo "#define HAVE_SNPRINTF 1" >>confdefs.h
+if test "x$ac_cv_func_snprintf" = xyes
+then :
+  printf "%s\n" "#define HAVE_SNPRINTF 1" >>confdefs.h
 
-else
+else $as_nop
   case " $LIBOBJS " in
   *" snprintf.$ac_objext "* ) ;;
   *) LIBOBJS="$LIBOBJS snprintf.$ac_objext"
@@ -20695,18 +22431,18 @@ esac
 
 fi
 
-
 # test if snprintf return the proper length
 if test "x$ac_cv_func_snprintf" = xyes; then
     if test c${cross_compiling} = cno; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for correct snprintf return value" >&5
-$as_echo_n "checking for correct snprintf return value... " >&6; }
-       if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for correct snprintf return value" >&5
+printf %s "checking for correct snprintf return value... " >&6; }
+       if test "$cross_compiling" = yes
+then :
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "cannot run test program while cross compiling
 See \`config.log' for more details" "$LINENO" 5; }
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $ac_includes_default
@@ -20714,15 +22450,16 @@ $ac_includes_default
 int main(void) { return !(snprintf(NULL, 0, "test") == 4); }
 
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
+if ac_fn_c_try_run "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
 
-               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 
-$as_echo "#define SNPRINTF_RET_BROKEN /**/" >>confdefs.h
+printf "%s\n" "#define SNPRINTF_RET_BROKEN /**/" >>confdefs.h
 
                case " $LIBOBJS " in
   *" snprintf.$ac_objext "* ) ;;
     fi
 fi
 ac_fn_c_check_func "$LINENO" "strlcat" "ac_cv_func_strlcat"
-if test "x$ac_cv_func_strlcat" = xyes; then :
-  $as_echo "#define HAVE_STRLCAT 1" >>confdefs.h
+if test "x$ac_cv_func_strlcat" = xyes
+then :
+  printf "%s\n" "#define HAVE_STRLCAT 1" >>confdefs.h
 
-else
+else $as_nop
   case " $LIBOBJS " in
   *" strlcat.$ac_objext "* ) ;;
   *) LIBOBJS="$LIBOBJS strlcat.$ac_objext"
@@ -20751,12 +22489,12 @@ esac
 
 fi
 
-
 ac_fn_c_check_func "$LINENO" "strlcpy" "ac_cv_func_strlcpy"
-if test "x$ac_cv_func_strlcpy" = xyes; then :
-  $as_echo "#define HAVE_STRLCPY 1" >>confdefs.h
+if test "x$ac_cv_func_strlcpy" = xyes
+then :
+  printf "%s\n" "#define HAVE_STRLCPY 1" >>confdefs.h
 
-else
+else $as_nop
   case " $LIBOBJS " in
   *" strlcpy.$ac_objext "* ) ;;
   *) LIBOBJS="$LIBOBJS strlcpy.$ac_objext"
@@ -20765,12 +22503,12 @@ esac
 
 fi
 
-
 ac_fn_c_check_func "$LINENO" "memmove" "ac_cv_func_memmove"
-if test "x$ac_cv_func_memmove" = xyes; then :
-  $as_echo "#define HAVE_MEMMOVE 1" >>confdefs.h
+if test "x$ac_cv_func_memmove" = xyes
+then :
+  printf "%s\n" "#define HAVE_MEMMOVE 1" >>confdefs.h
 
-else
+else $as_nop
   case " $LIBOBJS " in
   *" memmove.$ac_objext "* ) ;;
   *) LIBOBJS="$LIBOBJS memmove.$ac_objext"
@@ -20779,12 +22517,12 @@ esac
 
 fi
 
-
 ac_fn_c_check_func "$LINENO" "gmtime_r" "ac_cv_func_gmtime_r"
-if test "x$ac_cv_func_gmtime_r" = xyes; then :
-  $as_echo "#define HAVE_GMTIME_R 1" >>confdefs.h
+if test "x$ac_cv_func_gmtime_r" = xyes
+then :
+  printf "%s\n" "#define HAVE_GMTIME_R 1" >>confdefs.h
 
-else
+else $as_nop
   case " $LIBOBJS " in
   *" gmtime_r.$ac_objext "* ) ;;
   *) LIBOBJS="$LIBOBJS gmtime_r.$ac_objext"
@@ -20793,12 +22531,12 @@ esac
 
 fi
 
-
 ac_fn_c_check_func "$LINENO" "isblank" "ac_cv_func_isblank"
-if test "x$ac_cv_func_isblank" = xyes; then :
-  $as_echo "#define HAVE_ISBLANK 1" >>confdefs.h
+if test "x$ac_cv_func_isblank" = xyes
+then :
+  printf "%s\n" "#define HAVE_ISBLANK 1" >>confdefs.h
 
-else
+else $as_nop
   case " $LIBOBJS " in
   *" isblank.$ac_objext "* ) ;;
   *) LIBOBJS="$LIBOBJS isblank.$ac_objext"
@@ -20807,12 +22545,12 @@ esac
 
 fi
 
-
 ac_fn_c_check_func "$LINENO" "explicit_bzero" "ac_cv_func_explicit_bzero"
-if test "x$ac_cv_func_explicit_bzero" = xyes; then :
-  $as_echo "#define HAVE_EXPLICIT_BZERO 1" >>confdefs.h
+if test "x$ac_cv_func_explicit_bzero" = xyes
+then :
+  printf "%s\n" "#define HAVE_EXPLICIT_BZERO 1" >>confdefs.h
 
-else
+else $as_nop
   case " $LIBOBJS " in
   *" explicit_bzero.$ac_objext "* ) ;;
   *) LIBOBJS="$LIBOBJS explicit_bzero.$ac_objext"
@@ -20821,11 +22559,10 @@ esac
 
 fi
 
-
 LIBOBJ_WITHOUT_CTIMEARC4="$LIBOBJS"
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for reallocarray" >&5
-$as_echo_n "checking for reallocarray... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for reallocarray" >&5
+printf %s "checking for reallocarray... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $ac_includes_default
@@ -20841,17 +22578,18 @@ int main(void) {
 }
 
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 
-$as_echo "#define HAVE_REALLOCARRAY 1" >>confdefs.h
+printf "%s\n" "#define HAVE_REALLOCARRAY 1" >>confdefs.h
 
 
-else
+else $as_nop
 
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
        case " $LIBOBJS " in
   *" reallocarray.$ac_objext "* ) ;;
   *) LIBOBJS="$LIBOBJS reallocarray.$ac_objext"
@@ -20860,25 +22598,24 @@ esac
 
 
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
-ac_fn_c_check_decl "$LINENO" "reallocarray" "ac_cv_have_decl_reallocarray" "$ac_includes_default"
-if test "x$ac_cv_have_decl_reallocarray" = xyes; then :
+ac_fn_check_decl "$LINENO" "reallocarray" "ac_cv_have_decl_reallocarray" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_reallocarray" = xyes
+then :
   ac_have_decl=1
-else
+else $as_nop
   ac_have_decl=0
 fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_REALLOCARRAY $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_REALLOCARRAY $ac_have_decl" >>confdefs.h
 
 if test "$USE_NSS" = "no"; then
        ac_fn_c_check_func "$LINENO" "arc4random" "ac_cv_func_arc4random"
-if test "x$ac_cv_func_arc4random" = xyes; then :
-  $as_echo "#define HAVE_ARC4RANDOM 1" >>confdefs.h
+if test "x$ac_cv_func_arc4random" = xyes
+then :
+  printf "%s\n" "#define HAVE_ARC4RANDOM 1" >>confdefs.h
 
-else
+else $as_nop
   case " $LIBOBJS " in
   *" arc4random.$ac_objext "* ) ;;
   *) LIBOBJS="$LIBOBJS arc4random.$ac_objext"
@@ -20887,12 +22624,12 @@ esac
 
 fi
 
-
        ac_fn_c_check_func "$LINENO" "arc4random_uniform" "ac_cv_func_arc4random_uniform"
-if test "x$ac_cv_func_arc4random_uniform" = xyes; then :
-  $as_echo "#define HAVE_ARC4RANDOM_UNIFORM 1" >>confdefs.h
+if test "x$ac_cv_func_arc4random_uniform" = xyes
+then :
+  printf "%s\n" "#define HAVE_ARC4RANDOM_UNIFORM 1" >>confdefs.h
 
-else
+else $as_nop
   case " $LIBOBJS " in
   *" arc4random_uniform.$ac_objext "* ) ;;
   *) LIBOBJS="$LIBOBJS arc4random_uniform.$ac_objext"
@@ -20901,7 +22638,6 @@ esac
 
 fi
 
-
        if test "$ac_cv_func_arc4random" = "no"; then
                case " $LIBOBJS " in
   *" arc4_lock.$ac_objext "* ) ;;
  ;;
 esac
 
-               for ac_func in getentropy
+
+  for ac_func in getentropy
 do :
   ac_fn_c_check_func "$LINENO" "getentropy" "ac_cv_func_getentropy"
-if test "x$ac_cv_func_getentropy" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_GETENTROPY 1
-_ACEOF
+if test "x$ac_cv_func_getentropy" = xyes
+then :
+  printf "%s\n" "#define HAVE_GETENTROPY 1" >>confdefs.h
 
-else
+else $as_nop
 
                    if test "$USE_WINSOCK" = 1; then
                        case " $LIBOBJS " in
@@ -20943,26 +22679,25 @@ esac
  ;;
 esac
 
-                               for ac_header in sys/sha2.h
+                                      for ac_header in sys/sha2.h
 do :
   ac_fn_c_check_header_compile "$LINENO" "sys/sha2.h" "ac_cv_header_sys_sha2_h" "$ac_includes_default
 "
-if test "x$ac_cv_header_sys_sha2_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_SYS_SHA2_H 1
-_ACEOF
+if test "x$ac_cv_header_sys_sha2_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_SHA2_H 1" >>confdefs.h
 
-else
+else $as_nop
 
-                                       for ac_func in SHA512_Update
+
+  for ac_func in SHA512_Update
 do :
   ac_fn_c_check_func "$LINENO" "SHA512_Update" "ac_cv_func_SHA512_Update"
-if test "x$ac_cv_func_SHA512_Update" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_SHA512_UPDATE 1
-_ACEOF
+if test "x$ac_cv_func_SHA512_Update" = xyes
+then :
+  printf "%s\n" "#define HAVE_SHA512_UPDATE 1" >>confdefs.h
 
-else
+else $as_nop
 
                                                case " $LIBOBJS " in
   *" sha512.$ac_objext "* ) ;;
@@ -20972,22 +22707,22 @@ esac
 
 
 fi
-done
 
+done
 
 fi
 
 done
-
                                if test "$ac_cv_header_sys_sha2_h" = "yes"; then
                                        # this lib needed for sha2 on solaris
                                        LIBS="$LIBS -lmd"
                                fi
-                               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5
-$as_echo_n "checking for library containing clock_gettime... " >&6; }
-if ${ac_cv_search_clock_gettime+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+                               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5
+printf %s "checking for library containing clock_gettime... " >&6; }
+if test ${ac_cv_search_clock_gettime+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -20995,46 +22730,48 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char clock_gettime ();
 int
-main ()
+main (void)
 {
 return clock_gettime ();
   ;
   return 0;
 }
 _ACEOF
-for ac_lib in '' rt; do
+for ac_lib in '' rt
+do
   if test -z "$ac_lib"; then
     ac_res="none required"
   else
     ac_res=-l$ac_lib
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
   fi
-  if ac_fn_c_try_link "$LINENO"; then :
+  if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_search_clock_gettime=$ac_res
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext
-  if ${ac_cv_search_clock_gettime+:} false; then :
+  if test ${ac_cv_search_clock_gettime+y}
+then :
   break
 fi
 done
-if ${ac_cv_search_clock_gettime+:} false; then :
+if test ${ac_cv_search_clock_gettime+y}
+then :
 
-else
+else $as_nop
   ac_cv_search_clock_gettime=no
 fi
 rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5
-$as_echo "$ac_cv_search_clock_gettime" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5
+printf "%s\n" "$ac_cv_search_clock_gettime" >&6; }
 ac_res=$ac_cv_search_clock_gettime
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
 fi
@@ -21055,18 +22792,18 @@ esac
  ;;
 esac
 
-                               for ac_func in SHA512_Update
+
+  for ac_func in SHA512_Update
 do :
   ac_fn_c_check_func "$LINENO" "SHA512_Update" "ac_cv_func_SHA512_Update"
-if test "x$ac_cv_func_SHA512_Update" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_SHA512_UPDATE 1
-_ACEOF
+if test "x$ac_cv_func_SHA512_Update" = xyes
+then :
+  printf "%s\n" "#define HAVE_SHA512_UPDATE 1" >>confdefs.h
 
-else
+else $as_nop
 
 
-$as_echo "#define COMPAT_SHA512 1" >>confdefs.h
+printf "%s\n" "#define COMPAT_SHA512 1" >>confdefs.h
 
                                        case " $LIBOBJS " in
   *" sha512.$ac_objext "* ) ;;
@@ -21076,37 +22813,29 @@ esac
 
 
 fi
-done
 
-                               for ac_header in sys/sysctl.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "sys/sysctl.h" "ac_cv_header_sys_sysctl_h" "$ac_includes_default
+done
+                               ac_fn_c_check_header_compile "$LINENO" "sys/sysctl.h" "ac_cv_header_sys_sysctl_h" "$ac_includes_default
 "
-if test "x$ac_cv_header_sys_sysctl_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_SYS_SYSCTL_H 1
-_ACEOF
+if test "x$ac_cv_header_sys_sysctl_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_SYSCTL_H 1" >>confdefs.h
 
 fi
 
-done
-
-                               for ac_func in getauxval
-do :
-  ac_fn_c_check_func "$LINENO" "getauxval" "ac_cv_func_getauxval"
-if test "x$ac_cv_func_getauxval" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_GETAUXVAL 1
-_ACEOF
+                               ac_fn_c_check_func "$LINENO" "getauxval" "ac_cv_func_getauxval"
+if test "x$ac_cv_func_getauxval" = xyes
+then :
+  printf "%s\n" "#define HAVE_GETAUXVAL 1" >>confdefs.h
 
 fi
-done
 
-                               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5
-$as_echo_n "checking for library containing clock_gettime... " >&6; }
-if ${ac_cv_search_clock_gettime+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+                               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5
+printf %s "checking for library containing clock_gettime... " >&6; }
+if test ${ac_cv_search_clock_gettime+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -21114,46 +22843,48 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char clock_gettime ();
 int
-main ()
+main (void)
 {
 return clock_gettime ();
   ;
   return 0;
 }
 _ACEOF
-for ac_lib in '' rt; do
+for ac_lib in '' rt
+do
   if test -z "$ac_lib"; then
     ac_res="none required"
   else
     ac_res=-l$ac_lib
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
   fi
-  if ac_fn_c_try_link "$LINENO"; then :
+  if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_search_clock_gettime=$ac_res
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext
-  if ${ac_cv_search_clock_gettime+:} false; then :
+  if test ${ac_cv_search_clock_gettime+y}
+then :
   break
 fi
 done
-if ${ac_cv_search_clock_gettime+:} false; then :
+if test ${ac_cv_search_clock_gettime+y}
+then :
 
-else
+else $as_nop
   ac_cv_search_clock_gettime=no
 fi
 rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5
-$as_echo "$ac_cv_search_clock_gettime" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5
+printf "%s\n" "$ac_cv_search_clock_gettime" >&6; }
 ac_res=$ac_cv_search_clock_gettime
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
 fi
                    fi
 
 fi
-done
 
+done
        fi
 fi
 LIBOBJ_WITHOUT_CTIME="$LIBOBJS"
 
 ac_fn_c_check_func "$LINENO" "ctime_r" "ac_cv_func_ctime_r"
-if test "x$ac_cv_func_ctime_r" = xyes; then :
-  $as_echo "#define HAVE_CTIME_R 1" >>confdefs.h
+if test "x$ac_cv_func_ctime_r" = xyes
+then :
+  printf "%s\n" "#define HAVE_CTIME_R 1" >>confdefs.h
 
-else
+else $as_nop
   case " $LIBOBJS " in
   *" ctime_r.$ac_objext "* ) ;;
   *) LIBOBJS="$LIBOBJS ctime_r.$ac_objext"
@@ -21182,12 +22914,12 @@ esac
 
 fi
 
-
 ac_fn_c_check_func "$LINENO" "strsep" "ac_cv_func_strsep"
-if test "x$ac_cv_func_strsep" = xyes; then :
-  $as_echo "#define HAVE_STRSEP 1" >>confdefs.h
+if test "x$ac_cv_func_strsep" = xyes
+then :
+  printf "%s\n" "#define HAVE_STRSEP 1" >>confdefs.h
 
-else
+else $as_nop
   case " $LIBOBJS " in
   *" strsep.$ac_objext "* ) ;;
   *) LIBOBJS="$LIBOBJS strsep.$ac_objext"
@@ -21197,9 +22929,9 @@ esac
 fi
 
 
-
 # Check whether --enable-allsymbols was given.
-if test "${enable_allsymbols+set}" = set; then :
+if test ${enable_allsymbols+y}
+then :
   enableval=$enable_allsymbols;
 fi
 
@@ -21209,7 +22941,7 @@ case "$enable_allsymbols" in
        UBSYMS=""
        EXTRALINK="libunbound.la"
 
-$as_echo "#define EXPORT_ALL_SYMBOLS 1" >>confdefs.h
+printf "%s\n" "#define EXPORT_ALL_SYMBOLS 1" >>confdefs.h
 
        ;;
        no|*)
 # check for dnstap if requested
 
   # Check whether --enable-dnstap was given.
-if test "${enable_dnstap+set}" = set; then :
+if test ${enable_dnstap+y}
+then :
   enableval=$enable_dnstap; opt_dnstap=$enableval
-else
+else $as_nop
   opt_dnstap=no
 fi
 
 
 
 # Check whether --with-dnstap-socket-path was given.
-if test "${with_dnstap_socket_path+set}" = set; then :
+if test ${with_dnstap_socket_path+y}
+then :
   withval=$with_dnstap_socket_path; opt_dnstap_socket_path=$withval
-else
+else $as_nop
   opt_dnstap_socket_path="$UNBOUND_RUN_DIR/dnstap.sock"
 fi
 
   if test "x$opt_dnstap" != "xno"; then
     # Extract the first word of "protoc-c", so it can be a program name with args.
 set dummy protoc-c; 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_PROTOC_C+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PROTOC_C+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $PROTOC_C in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_PROTOC_C="$PROTOC_C" # Let the user override the test with a path.
@@ -21272,11 +23007,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     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_PROTOC_C="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_PROTOC_C="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -21288,11 +23027,11 @@ esac
 fi
 PROTOC_C=$ac_cv_path_PROTOC_C
 if test -n "$PROTOC_C"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PROTOC_C" >&5
-$as_echo "$PROTOC_C" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PROTOC_C" >&5
+printf "%s\n" "$PROTOC_C" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -21301,7 +23040,8 @@ fi
     fi
 
 # Check whether --with-protobuf-c was given.
-if test "${with_protobuf_c+set}" = set; then :
+if test ${with_protobuf_c+y}
+then :
   withval=$with_protobuf_c;
          # workaround for protobuf-c includes at old dir before protobuf-c-1.0.0
          if test -f $withval/include/google/protobuf-c/protobuf-c.h; then
@@ -21311,7 +23051,7 @@ if test "${with_protobuf_c+set}" = set; then :
          fi
          LDFLAGS="$LDFLAGS -L$withval/lib"
 
-else
+else $as_nop
 
          # workaround for protobuf-c includes at old dir before protobuf-c-1.0.0
          if test -f /usr/include/google/protobuf-c/protobuf-c.h; then
@@ -21325,11 +23065,12 @@ else
 
 fi
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing protobuf_c_message_pack" >&5
-$as_echo_n "checking for library containing protobuf_c_message_pack... " >&6; }
-if ${ac_cv_search_protobuf_c_message_pack+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing protobuf_c_message_pack" >&5
+printf %s "checking for library containing protobuf_c_message_pack... " >&6; }
+if test ${ac_cv_search_protobuf_c_message_pack+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -21337,55 +23078,57 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char protobuf_c_message_pack ();
 int
-main ()
+main (void)
 {
 return protobuf_c_message_pack ();
   ;
   return 0;
 }
 _ACEOF
-for ac_lib in '' protobuf-c; do
+for ac_lib in '' protobuf-c
+do
   if test -z "$ac_lib"; then
     ac_res="none required"
   else
     ac_res=-l$ac_lib
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
   fi
-  if ac_fn_c_try_link "$LINENO"; then :
+  if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_search_protobuf_c_message_pack=$ac_res
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext
-  if ${ac_cv_search_protobuf_c_message_pack+:} false; then :
+  if test ${ac_cv_search_protobuf_c_message_pack+y}
+then :
   break
 fi
 done
-if ${ac_cv_search_protobuf_c_message_pack+:} false; then :
+if test ${ac_cv_search_protobuf_c_message_pack+y}
+then :
 
-else
+else $as_nop
   ac_cv_search_protobuf_c_message_pack=no
 fi
 rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_protobuf_c_message_pack" >&5
-$as_echo "$ac_cv_search_protobuf_c_message_pack" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_protobuf_c_message_pack" >&5
+printf "%s\n" "$ac_cv_search_protobuf_c_message_pack" >&6; }
 ac_res=$ac_cv_search_protobuf_c_message_pack
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
-else
+else $as_nop
   as_fn_error $? "The protobuf-c library was not found. Please install protobuf-c!" "$LINENO" 5
 fi
 
 
 
-$as_echo "#define USE_DNSTAP 1" >>confdefs.h
+printf "%s\n" "#define USE_DNSTAP 1" >>confdefs.h
 
         ENABLE_DNSTAP=1
 
@@ -21394,9 +23137,7 @@ $as_echo "#define USE_DNSTAP 1" >>confdefs.h
         hdr_dnstap_socket_path="`echo $opt_dnstap_socket_path | sed -e 's/\\\\/\\\\\\\\/g'`"
 
 
-cat >>confdefs.h <<_ACEOF
-#define DNSTAP_SOCKET_PATH "$hdr_dnstap_socket_path"
-_ACEOF
+printf "%s\n" "#define DNSTAP_SOCKET_PATH \"$hdr_dnstap_socket_path\"" >>confdefs.h
 
        DNSTAP_SOCKET_PATH="$hdr_dnstap_socket_path"
 
@@ -21419,9 +23160,10 @@ _ACEOF
 # check for dnscrypt if requested
 
   # Check whether --enable-dnscrypt was given.
-if test "${enable_dnscrypt+set}" = set; then :
+if test ${enable_dnscrypt+y}
+then :
   enableval=$enable_dnscrypt; opt_dnscrypt=$enableval
-else
+else $as_nop
   opt_dnscrypt=no
 fi
 
   if test "x$opt_dnscrypt" != "xno"; then
 
 # Check whether --with-libsodium was given.
-if test "${with_libsodium+set}" = set; then :
+if test ${with_libsodium+y}
+then :
   withval=$with_libsodium;
        CFLAGS="$CFLAGS -I$withval/include"
        LDFLAGS="$LDFLAGS -L$withval/lib"
 
 fi
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing sodium_init" >&5
-$as_echo_n "checking for library containing sodium_init... " >&6; }
-if ${ac_cv_search_sodium_init+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing sodium_init" >&5
+printf %s "checking for library containing sodium_init... " >&6; }
+if test ${ac_cv_search_sodium_init+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -21448,57 +23192,60 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char sodium_init ();
 int
-main ()
+main (void)
 {
 return sodium_init ();
   ;
   return 0;
 }
 _ACEOF
-for ac_lib in '' sodium; do
+for ac_lib in '' sodium
+do
   if test -z "$ac_lib"; then
     ac_res="none required"
   else
     ac_res=-l$ac_lib
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
   fi
-  if ac_fn_c_try_link "$LINENO"; then :
+  if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_search_sodium_init=$ac_res
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext
-  if ${ac_cv_search_sodium_init+:} false; then :
+  if test ${ac_cv_search_sodium_init+y}
+then :
   break
 fi
 done
-if ${ac_cv_search_sodium_init+:} false; then :
+if test ${ac_cv_search_sodium_init+y}
+then :
 
-else
+else $as_nop
   ac_cv_search_sodium_init=no
 fi
 rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sodium_init" >&5
-$as_echo "$ac_cv_search_sodium_init" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sodium_init" >&5
+printf "%s\n" "$ac_cv_search_sodium_init" >&6; }
 ac_res=$ac_cv_search_sodium_init
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
-else
+else $as_nop
   as_fn_error $? "The sodium library was not found. Please install sodium!" "$LINENO" 5
 fi
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypto_box_curve25519xchacha20poly1305_beforenm" >&5
-$as_echo_n "checking for library containing crypto_box_curve25519xchacha20poly1305_beforenm... " >&6; }
-if ${ac_cv_search_crypto_box_curve25519xchacha20poly1305_beforenm+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing crypto_box_curve25519xchacha20poly1305_beforenm" >&5
+printf %s "checking for library containing crypto_box_curve25519xchacha20poly1305_beforenm... " >&6; }
+if test ${ac_cv_search_crypto_box_curve25519xchacha20poly1305_beforenm+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -21506,66 +23253,69 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char crypto_box_curve25519xchacha20poly1305_beforenm ();
 int
-main ()
+main (void)
 {
 return crypto_box_curve25519xchacha20poly1305_beforenm ();
   ;
   return 0;
 }
 _ACEOF
-for ac_lib in '' sodium; do
+for ac_lib in '' sodium
+do
   if test -z "$ac_lib"; then
     ac_res="none required"
   else
     ac_res=-l$ac_lib
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
   fi
-  if ac_fn_c_try_link "$LINENO"; then :
+  if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_search_crypto_box_curve25519xchacha20poly1305_beforenm=$ac_res
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext
-  if ${ac_cv_search_crypto_box_curve25519xchacha20poly1305_beforenm+:} false; then :
+  if test ${ac_cv_search_crypto_box_curve25519xchacha20poly1305_beforenm+y}
+then :
   break
 fi
 done
-if ${ac_cv_search_crypto_box_curve25519xchacha20poly1305_beforenm+:} false; then :
+if test ${ac_cv_search_crypto_box_curve25519xchacha20poly1305_beforenm+y}
+then :
 
-else
+else $as_nop
   ac_cv_search_crypto_box_curve25519xchacha20poly1305_beforenm=no
 fi
 rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_crypto_box_curve25519xchacha20poly1305_beforenm" >&5
-$as_echo "$ac_cv_search_crypto_box_curve25519xchacha20poly1305_beforenm" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_crypto_box_curve25519xchacha20poly1305_beforenm" >&5
+printf "%s\n" "$ac_cv_search_crypto_box_curve25519xchacha20poly1305_beforenm" >&6; }
 ac_res=$ac_cv_search_crypto_box_curve25519xchacha20poly1305_beforenm
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
             ENABLE_DNSCRYPT_XCHACHA20=1
 
 
-$as_echo "#define USE_DNSCRYPT_XCHACHA20 1" >>confdefs.h
+printf "%s\n" "#define USE_DNSCRYPT_XCHACHA20 1" >>confdefs.h
 
 
-else
+else $as_nop
 
             ENABLE_DNSCRYPT_XCHACHA20=0
 
 
 fi
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing sodium_set_misuse_handler" >&5
-$as_echo_n "checking for library containing sodium_set_misuse_handler... " >&6; }
-if ${ac_cv_search_sodium_set_misuse_handler+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing sodium_set_misuse_handler" >&5
+printf %s "checking for library containing sodium_set_misuse_handler... " >&6; }
+if test ${ac_cv_search_sodium_set_misuse_handler+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -21573,57 +23323,59 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char sodium_set_misuse_handler ();
 int
-main ()
+main (void)
 {
 return sodium_set_misuse_handler ();
   ;
   return 0;
 }
 _ACEOF
-for ac_lib in '' sodium; do
+for ac_lib in '' sodium
+do
   if test -z "$ac_lib"; then
     ac_res="none required"
   else
     ac_res=-l$ac_lib
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
   fi
-  if ac_fn_c_try_link "$LINENO"; then :
+  if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_search_sodium_set_misuse_handler=$ac_res
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext
-  if ${ac_cv_search_sodium_set_misuse_handler+:} false; then :
+  if test ${ac_cv_search_sodium_set_misuse_handler+y}
+then :
   break
 fi
 done
-if ${ac_cv_search_sodium_set_misuse_handler+:} false; then :
+if test ${ac_cv_search_sodium_set_misuse_handler+y}
+then :
 
-else
+else $as_nop
   ac_cv_search_sodium_set_misuse_handler=no
 fi
 rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sodium_set_misuse_handler" >&5
-$as_echo "$ac_cv_search_sodium_set_misuse_handler" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sodium_set_misuse_handler" >&5
+printf "%s\n" "$ac_cv_search_sodium_set_misuse_handler" >&6; }
 ac_res=$ac_cv_search_sodium_set_misuse_handler
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
 
-$as_echo "#define SODIUM_MISUSE_HANDLER 1" >>confdefs.h
+printf "%s\n" "#define SODIUM_MISUSE_HANDLER 1" >>confdefs.h
 
 
 fi
 
 
 
-$as_echo "#define USE_DNSCRYPT 1" >>confdefs.h
+printf "%s\n" "#define USE_DNSCRYPT 1" >>confdefs.h
 
         ENABLE_DNSCRYPT=1
 
@@ -21646,7 +23398,8 @@ $as_echo "#define USE_DNSCRYPT 1" >>confdefs.h
 
 # check for cachedb if requested
 # Check whether --enable-cachedb was given.
-if test "${enable_cachedb+set}" = set; then :
+if test ${enable_cachedb+y}
+then :
   enableval=$enable_cachedb;
 fi
 
@@ -21655,7 +23408,7 @@ if test "$found_libhiredis" = "yes"; then enable_cachedb="yes"; fi
 case "$enable_cachedb" in
     yes)
 
-$as_echo "#define USE_CACHEDB 1" >>confdefs.h
+printf "%s\n" "#define USE_CACHEDB 1" >>confdefs.h
 
        CACHEDB_SRC="cachedb/cachedb.c cachedb/redis.c"
 
@@ -21669,14 +23422,15 @@ esac
 
 # check for ipsecmod if requested
 # Check whether --enable-ipsecmod was given.
-if test "${enable_ipsecmod+set}" = set; then :
+if test ${enable_ipsecmod+y}
+then :
   enableval=$enable_ipsecmod;
 fi
 
 case "$enable_ipsecmod" in
        yes)
 
-$as_echo "#define USE_IPSECMOD 1" >>confdefs.h
+printf "%s\n" "#define USE_IPSECMOD 1" >>confdefs.h
 
                IPSECMOD_OBJ="ipsecmod.lo ipsecmod-whitelist.lo"
 
@@ -21690,14 +23444,15 @@ esac
 
 # check for ipset if requested
 # Check whether --enable-ipset was given.
-if test "${enable_ipset+set}" = set; then :
+if test ${enable_ipset+y}
+then :
   enableval=$enable_ipset;
 fi
 
 case "$enable_ipset" in
     yes)
 
-$as_echo "#define USE_IPSET 1" >>confdefs.h
+printf "%s\n" "#define USE_IPSET 1" >>confdefs.h
 
                IPSET_SRC="ipset/ipset.c"
 
@@ -21707,15 +23462,16 @@ $as_echo "#define USE_IPSET 1" >>confdefs.h
                # mnl
 
 # Check whether --with-libmnl was given.
-if test "${with_libmnl+set}" = set; then :
+if test ${with_libmnl+y}
+then :
   withval=$with_libmnl;
-else
+else $as_nop
    withval="yes"
 fi
 
                found_libmnl="no"
-               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libmnl" >&5
-$as_echo_n "checking for libmnl... " >&6; }
+               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libmnl" >&5
+printf %s "checking for libmnl... " >&6; }
                if test x_$withval = x_ -o x_$withval = x_yes; then
                        withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr"
                fi
@@ -21726,8 +23482,8 @@ $as_echo_n "checking for libmnl... " >&6; }
                                        CPPFLAGS="$CPPFLAGS -I$dir/include"
                                        LDFLAGS="$LDFLAGS -L$dir/lib"
                                fi
-                               { $as_echo "$as_me:${as_lineno-$LINENO}: result: found in $dir" >&5
-$as_echo "found in $dir" >&6; }
+                               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found in $dir" >&5
+printf "%s\n" "found in $dir" >&6; }
                                LIBS="$LIBS -lmnl"
                                break;
                        fi
@@ -21741,14 +23497,15 @@ $as_echo "found in $dir" >&6; }
                ;;
 esac
 # Check whether --enable-explicit-port-randomisation was given.
-if test "${enable_explicit_port_randomisation+set}" = set; then :
+if test ${enable_explicit_port_randomisation+y}
+then :
   enableval=$enable_explicit_port_randomisation;
 fi
 
 case "$enable_explicit_port_randomisation" in
        no)
 
-$as_echo "#define DISABLE_EXPLICIT_PORT_RANDOMISATION 1" >>confdefs.h
+printf "%s\n" "#define DISABLE_EXPLICIT_PORT_RANDOMISATION 1" >>confdefs.h
 
                ;;
        yes|*)
@@ -21757,14 +23514,15 @@ esac
 
 if echo "$host" | $GREP -i -e linux >/dev/null; then
        # Check whether --enable-linux-ip-local-port-range was given.
-if test "${enable_linux_ip_local_port_range+set}" = set; then :
+if test ${enable_linux_ip_local_port_range+y}
+then :
   enableval=$enable_linux_ip_local_port_range;
 fi
 
        case "$enable_linux_ip_local_port_range" in
                yes)
 
-$as_echo "#define USE_LINUX_IP_LOCAL_PORT_RANGE 1" >>confdefs.h
+printf "%s\n" "#define USE_LINUX_IP_LOCAL_PORT_RANGE 1" >>confdefs.h
 
                        ;;
                no|*)
@@ -21773,8 +23531,8 @@ $as_echo "#define USE_LINUX_IP_LOCAL_PORT_RANGE 1" >>confdefs.h
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if ${MAKE:-make} supports $< with implicit rule in scope" >&5
-$as_echo_n "checking if ${MAKE:-make} supports $< with implicit rule in scope... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ${MAKE:-make} supports $< with implicit rule in scope" >&5
+printf %s "checking if ${MAKE:-make} supports $< with implicit rule in scope... " >&6; }
 # on openBSD, the implicit rule make $< work.
 # on Solaris, it does not work ($? is changed sources, $^ lists dependencies).
 # gmake works.
@@ -21797,13 +23555,13 @@ ${MAKE:-make} -f conftest.make >/dev/null
 rm -f conftest.make conftest.c conftest.dir/conftest.c
 rm -rf conftest.dir
 if test ! -f conftest.lo; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
        SOURCEDETERMINE='echo "$^" | awk "-F " "{print \$$1;}" > .source'
        SOURCEFILE='`cat .source`'
 else
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
        SOURCEDETERMINE=':'
        SOURCEFILE='$<'
 fi
@@ -21816,7 +23574,8 @@ ALLTARGET="alltargets"
 INSTALLTARGET="install-all"
 
 # Check whether --with-libunbound-only was given.
-if test "${with_libunbound_only+set}" = set; then :
+if test ${with_libunbound_only+y}
+then :
   withval=$with_libunbound_only;
        if test "$withval" = "yes"; then
                ALLTARGET="lib"
 
 
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: Stripping extension flags..." >&5
-$as_echo "$as_me: Stripping extension flags..." >&6;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Stripping extension flags..." >&5
+printf "%s\n" "$as_me: Stripping extension flags..." >&6;}
 
   if echo $CFLAGS | grep " -D_GNU_SOURCE" >/dev/null 2>&1; then
     CFLAGS="`echo $CFLAGS | sed -e 's/ -D_GNU_SOURCE//g'`"
 
-$as_echo "#define OMITTED__D_GNU_SOURCE 1" >>confdefs.h
+printf "%s\n" "#define OMITTED__D_GNU_SOURCE 1" >>confdefs.h
 
   fi
 
@@ -21852,7 +23611,7 @@ $as_echo "#define OMITTED__D_GNU_SOURCE 1" >>confdefs.h
   if echo $CFLAGS | grep " -D_BSD_SOURCE" >/dev/null 2>&1; then
     CFLAGS="`echo $CFLAGS | sed -e 's/ -D_BSD_SOURCE//g'`"
 
-$as_echo "#define OMITTED__D_BSD_SOURCE 1" >>confdefs.h
+printf "%s\n" "#define OMITTED__D_BSD_SOURCE 1" >>confdefs.h
 
   fi
 
@@ -21860,7 +23619,7 @@ $as_echo "#define OMITTED__D_BSD_SOURCE 1" >>confdefs.h
   if echo $CFLAGS | grep " -D_DEFAULT_SOURCE" >/dev/null 2>&1; then
     CFLAGS="`echo $CFLAGS | sed -e 's/ -D_DEFAULT_SOURCE//g'`"
 
-$as_echo "#define OMITTED__D_DEFAULT_SOURCE 1" >>confdefs.h
+printf "%s\n" "#define OMITTED__D_DEFAULT_SOURCE 1" >>confdefs.h
 
   fi
 
@@ -21868,7 +23627,7 @@ $as_echo "#define OMITTED__D_DEFAULT_SOURCE 1" >>confdefs.h
   if echo $CFLAGS | grep " -D__EXTENSIONS__" >/dev/null 2>&1; then
     CFLAGS="`echo $CFLAGS | sed -e 's/ -D__EXTENSIONS__//g'`"
 
-$as_echo "#define OMITTED__D__EXTENSIONS__ 1" >>confdefs.h
+printf "%s\n" "#define OMITTED__D__EXTENSIONS__ 1" >>confdefs.h
 
   fi
 
@@ -21876,7 +23635,7 @@ $as_echo "#define OMITTED__D__EXTENSIONS__ 1" >>confdefs.h
   if echo $CFLAGS | grep " -D_POSIX_C_SOURCE=200112" >/dev/null 2>&1; then
     CFLAGS="`echo $CFLAGS | sed -e 's/ -D_POSIX_C_SOURCE=200112//g'`"
 
-$as_echo "#define OMITTED__D_POSIX_C_SOURCE_200112 1" >>confdefs.h
+printf "%s\n" "#define OMITTED__D_POSIX_C_SOURCE_200112 1" >>confdefs.h
 
   fi
 
@@ -21884,7 +23643,7 @@ $as_echo "#define OMITTED__D_POSIX_C_SOURCE_200112 1" >>confdefs.h
   if echo $CFLAGS | grep " -D_XOPEN_SOURCE=600" >/dev/null 2>&1; then
     CFLAGS="`echo $CFLAGS | sed -e 's/ -D_XOPEN_SOURCE=600//g'`"
 
-$as_echo "#define OMITTED__D_XOPEN_SOURCE_600 1" >>confdefs.h
+printf "%s\n" "#define OMITTED__D_XOPEN_SOURCE_600 1" >>confdefs.h
 
   fi
 
@@ -21892,7 +23651,7 @@ $as_echo "#define OMITTED__D_XOPEN_SOURCE_600 1" >>confdefs.h
   if echo $CFLAGS | grep " -D_XOPEN_SOURCE_EXTENDED=1" >/dev/null 2>&1; then
     CFLAGS="`echo $CFLAGS | sed -e 's/ -D_XOPEN_SOURCE_EXTENDED=1//g'`"
 
-$as_echo "#define OMITTED__D_XOPEN_SOURCE_EXTENDED_1 1" >>confdefs.h
+printf "%s\n" "#define OMITTED__D_XOPEN_SOURCE_EXTENDED_1 1" >>confdefs.h
 
   fi
 
@@ -21900,7 +23659,7 @@ $as_echo "#define OMITTED__D_XOPEN_SOURCE_EXTENDED_1 1" >>confdefs.h
   if echo $CFLAGS | grep " -D_ALL_SOURCE" >/dev/null 2>&1; then
     CFLAGS="`echo $CFLAGS | sed -e 's/ -D_ALL_SOURCE//g'`"
 
-$as_echo "#define OMITTED__D_ALL_SOURCE 1" >>confdefs.h
+printf "%s\n" "#define OMITTED__D_ALL_SOURCE 1" >>confdefs.h
 
   fi
 
@@ -21908,7 +23667,7 @@ $as_echo "#define OMITTED__D_ALL_SOURCE 1" >>confdefs.h
   if echo $CFLAGS | grep " -D_LARGEFILE_SOURCE=1" >/dev/null 2>&1; then
     CFLAGS="`echo $CFLAGS | sed -e 's/ -D_LARGEFILE_SOURCE=1//g'`"
 
-$as_echo "#define OMITTED__D_LARGEFILE_SOURCE_1 1" >>confdefs.h
+printf "%s\n" "#define OMITTED__D_LARGEFILE_SOURCE_1 1" >>confdefs.h
 
   fi
 
@@ -21921,9 +23680,7 @@ LDFLAGS=`echo "$LDFLAGS"|sed -e 's/^ *//'`
 LIBS=`echo "$LIBS"|sed -e 's/^ *//'`
 
 
-cat >>confdefs.h <<_ACEOF
-#define MAXSYSLOGMSGLEN 10240
-_ACEOF
+printf "%s\n" "#define MAXSYSLOGMSGLEN 10240" >>confdefs.h
 
 
 
@@ -21964,8 +23721,8 @@ _ACEOF
     case $ac_val in #(
     *${as_nl}*)
       case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       esac
       case $ac_var in #(
       _ | IFS | as_nl) ;; #(
@@ -21995,15 +23752,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
      /^ac_cv_env_/b end
      t clear
      :clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/
      t end
      s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
      :end' >>confcache
 if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
   if test -w "$cache_file"; then
     if test "x$cache_file" != "x/dev/null"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+printf "%s\n" "$as_me: updating cache $cache_file" >&6;}
       if test ! -f "$cache_file" || test -h "$cache_file"; then
        cat confcache >"$cache_file"
       else
@@ -22017,8 +23774,8 @@ $as_echo "$as_me: updating cache $cache_file" >&6;}
       fi
     fi
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;}
   fi
 fi
 rm -f confcache
@@ -22035,7 +23792,7 @@ U=
 for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
   ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"`
   # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
   #    will be set to the directory where LIBOBJS objects are built.
   as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
@@ -22055,8 +23812,8 @@ fi
 ac_write_fail=0
 ac_clean_files_save=$ac_clean_files
 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;}
 as_write_fail=0
 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
 #! $SHELL
@@ -22079,14 +23836,16 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+as_nop=:
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
   emulate sh
   NULLCMD=:
   # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
-else
+else $as_nop
   case `(set -o) 2>/dev/null` in #(
   *posix*) :
     set -o posix ;; #(
@@ -22096,46 +23855,46 @@ esac
 fi
 
 
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
 as_nl='
 '
 export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-       expr "X$arg" : "X\\(.*\\)$as_nl";
-       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
+IFS=" ""       $as_nl"
+
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh).  This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2)            ; then :; else exec 2>/dev/null; fi
 
 # The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
+if ${PATH_SEPARATOR+false} :; then
   PATH_SEPARATOR=:
   (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
     (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
@@ -22144,13 +23903,6 @@ if test "${PATH_SEPARATOR+set}" != set; then
 fi
 
 
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""       $as_nl"
-
 # Find who we are.  Look in the path if we contain no directory separator.
 as_myself=
 case $0 in #((
@@ -22159,8 +23911,12 @@ case $0 in #((
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    test -r "$as_dir$0" && as_myself=$as_dir$0 && break
   done
 IFS=$as_save_IFS
 
@@ -22172,30 +23928,10 @@ if test "x$as_myself" = x; then
   as_myself=$0
 fi
 if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
   exit 1
 fi
 
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
 
 # as_fn_error STATUS ERROR [LINENO LOG_FD]
@@ -22208,13 +23944,14 @@ as_fn_error ()
   as_status=$1; test $as_status -eq 0 && as_status=1
   if test "$4"; then
     as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
   fi
-  $as_echo "$as_me: error: $2" >&2
+  printf "%s\n" "$as_me: error: $2" >&2
   as_fn_exit $as_status
 } # as_fn_error
 
 
+
 # as_fn_set_status STATUS
 # -----------------------
 # Set $? to STATUS, without forking.
@@ -22241,18 +23978,20 @@ as_fn_unset ()
   { eval $1=; unset $1;}
 }
 as_unset=as_fn_unset
+
 # as_fn_append VAR VALUE
 # ----------------------
 # Append the text in VALUE to the end of the definition contained in VAR. Take
 # advantage of any shell optimizations that allow amortized linear growth over
 # repeated appends, instead of the typical quadratic growth present in naive
 # implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
   eval 'as_fn_append ()
   {
     eval $1+=\$2
   }'
-else
+else $as_nop
   as_fn_append ()
   {
     eval $1=\$$1\$2
@@ -22264,12 +24003,13 @@ fi # as_fn_append
 # Perform arithmetic evaluation on the ARGs, and store the result in the
 # global $as_val. Take advantage of shells that can avoid forks. The arguments
 # must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
   eval 'as_fn_arith ()
   {
     as_val=$(( $* ))
   }'
-else
+else $as_nop
   as_fn_arith ()
   {
     as_val=`expr "$@" || test $? -eq 1`
@@ -22300,7 +24040,7 @@ as_me=`$as_basename -- "$0" ||
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
         X"$0" : 'X\(//\)$' \| \
         X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+printf "%s\n" X/"$0" |
     sed '/^.*\/\([^/][^/]*\)\/*$/{
            s//\1/
            q
@@ -22322,6 +24062,10 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS
 as_cr_digits='0123456789'
 as_cr_alnum=$as_cr_Letters$as_cr_digits
 
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
 ECHO_C= ECHO_N= ECHO_T=
 case `echo -n x` in #(((((
 -n*)
@@ -22335,6 +24079,12 @@ case `echo -n x` in #(((((
   ECHO_N='-n';;
 esac
 
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n.  New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
 rm -f conf$$ conf$$.exe conf$$.file
 if test -d conf$$.dir; then
   rm -f conf$$.dir/conf$$.file
@@ -22376,7 +24126,7 @@ as_fn_mkdir_p ()
     as_dirs=
     while :; do
       case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
       *) as_qdir=$as_dir;;
       esac
       as_dirs="'$as_qdir' $as_dirs"
@@ -22385,7 +24135,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
         X"$as_dir" : 'X\(//\)[^/]' \| \
         X"$as_dir" : 'X\(//\)$' \| \
         X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+printf "%s\n" X"$as_dir" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
            s//\1/
            q
@@ -22510,14 +24260,16 @@ $config_commands
 Report bugs to <unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues>."
 
 _ACEOF
+ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"`
+ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"`
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
 unbound config.status 1.15.1
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2021 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
   -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
     ac_cs_recheck=: ;;
   --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    $as_echo "$ac_cs_version"; exit ;;
+    printf "%s\n" "$ac_cs_version"; exit ;;
   --config | --confi | --conf | --con | --co | --c )
-    $as_echo "$ac_cs_config"; exit ;;
+    printf "%s\n" "$ac_cs_config"; exit ;;
   --debug | --debu | --deb | --de | --d | -d )
     debug=: ;;
   --file | --fil | --fi | --f )
     $ac_shift
     case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
     '') as_fn_error $? "missing file argument" ;;
     esac
     as_fn_append CONFIG_FILES " '$ac_optarg'"
@@ -22571,7 +24323,7 @@ do
   --header | --heade | --head | --hea )
     $ac_shift
     case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
     esac
     as_fn_append CONFIG_HEADERS " '$ac_optarg'"
     ac_need_defaults=false;;
@@ -22580,7 +24332,7 @@ do
     as_fn_error $? "ambiguous option: \`$1'
 Try \`$0 --help' for more information.";;
   --help | --hel | -h )
-    $as_echo "$ac_cs_usage"; exit ;;
+    printf "%s\n" "$ac_cs_usage"; exit ;;
   -q | -quiet | --quiet | --quie | --qui | --qu | --q \
   | -silent | --silent | --silen | --sile | --sil | --si | --s)
     ac_cs_silent=: ;;
@@ -22608,7 +24360,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 if \$ac_cs_recheck; then
   set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
   shift
-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6
   CONFIG_SHELL='$SHELL'
   export CONFIG_SHELL
   exec "\$@"
@@ -22622,7 +24374,7 @@ exec 5>>config.log
   sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
 ## Running $as_me. ##
 _ASBOX
-  $as_echo "$ac_log"
+  printf "%s\n" "$ac_log"
 } >&5
 
 _ACEOF
@@ -22952,9 +24704,9 @@ done
 # We use the long form for the default assignment because of an extremely
 # bizarre bug on SunOS 4.1.3.
 if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+  test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files
+  test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers
+  test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands
 fi
 
 # Have a temporary directory for convenience.  Make it in the build tree
@@ -23290,7 +25042,7 @@ do
           esac ||
           as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
       esac
-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
       as_fn_append ac_file_inputs " '$ac_f'"
     done
 
     # use $as_me), people would be surprised to read:
     #    /* config.h.  Generated by config.status.  */
     configure_input='Generated from '`
-         $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+         printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
        `' by configure.'
     if test x"$ac_file" != x-; then
       configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+printf "%s\n" "$as_me: creating $ac_file" >&6;}
     fi
     # Neutralize special characters interpreted by sed in replacement strings.
     case $configure_input in #(
     *\&* | *\|* | *\\* )
-       ac_sed_conf_input=`$as_echo "$configure_input" |
+       ac_sed_conf_input=`printf "%s\n" "$configure_input" |
        sed 's/[\\\\&|]/\\\\&/g'`;; #(
     *) ac_sed_conf_input=$configure_input;;
     esac
@@ -23325,7 +25077,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
         X"$ac_file" : 'X\(//\)[^/]' \| \
         X"$ac_file" : 'X\(//\)$' \| \
         X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
+printf "%s\n" X"$ac_file" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
            s//\1/
            q
@@ -23349,9 +25101,9 @@ $as_echo X"$ac_file" |
 case "$ac_dir" in
 .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
 *)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
   # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
   case $ac_top_builddir_sub in
   "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
   *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -23404,8 +25156,8 @@ ac_sed_dataroot='
 case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
 *datarootdir*) ac_datarootdir_seen=yes;;
 *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
   ac_datarootdir_hack='
@@ -23447,9 +25199,9 @@ test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
   { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
   { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' \
       "$ac_tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
 which seems to be undefined.  Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
 which seems to be undefined.  Please make sure it is defined" >&2;}
 
   rm -f "$ac_tmp/stdin"
@@ -23465,27 +25217,27 @@ which seems to be undefined.  Please make sure it is defined" >&2;}
   #
   if test x"$ac_file" != x-; then
     {
-      $as_echo "/* $configure_input  */" \
+      printf "%s\n" "/* $configure_input  */" >&1 \
       && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
     } >"$ac_tmp/config.h" \
       || as_fn_error $? "could not create $ac_file" "$LINENO" 5
     if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+printf "%s\n" "$as_me: $ac_file is unchanged" >&6;}
     else
       rm -f "$ac_file"
       mv "$ac_tmp/config.h" "$ac_file" \
        || as_fn_error $? "could not create $ac_file" "$LINENO" 5
     fi
   else
-    $as_echo "/* $configure_input  */" \
+    printf "%s\n" "/* $configure_input  */" >&1 \
       && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
       || as_fn_error $? "could not create -" "$LINENO" 5
   fi
  ;;
 
-  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
+  :C)  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+printf "%s\n" "$as_me: executing $ac_file commands" >&6;}
  ;;
   esac
 
@@ -24019,6 +25771,7 @@ _LT_EOF
   esac
 
 
+
 ltmain=$ac_aux_dir/ltmain.sh
 
 
@@ -24075,7 +25828,8 @@ if test "$no_create" != yes; then
   $ac_cs_success || as_fn_exit 1
 fi
 if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 fi
 
+
index 7209bc4cd1b78ea0d622e45e78269547487d497c..270de8975b0d562ecbfbe0a49e26129e67fd4a3e 100644 (file)
@@ -484,6 +484,12 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo,
                                msg->rep, LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad,
                                worker->env.now_tv))
                                        return 0;
+                       /* TODO store the reason for the bogus reply in cache
+                        * and implement in here instead of the hardcoded EDE */
+                       if (worker->env.cfg->ede) {
+                               EDNS_OPT_LIST_APPEND_EDE(&edns->opt_list_out,
+                                       worker->scratchpad, LDNS_EDE_DNSSEC_BOGUS, "");
+                       }
                        error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, 
                                &msg->qinfo, id, flags, edns);
                        if(worker->stats.extended) {
@@ -654,6 +660,12 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo,
                        LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad,
                        worker->env.now_tv))
                        goto bail_out;
+               /* TODO store the reason for the bogus reply in cache
+                * and implement in here instead of the hardcoded EDE */
+               if (worker->env.cfg->ede) {
+                       EDNS_OPT_LIST_APPEND_EDE(&edns->opt_list_out,
+                               worker->scratchpad, LDNS_EDE_DNSSEC_BOGUS, "");
+               }
                error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL,
                        qinfo, id, flags, edns);
                rrset_array_unlock_touch(worker->env.rrset_cache,
@@ -716,15 +728,25 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo,
                        if(!*partial_repp)
                                goto bail_out;
                }
-       } else if(!reply_info_answer_encode(qinfo, encode_rep, id, flags,
-               repinfo->c->buffer, timenow, 1, worker->scratchpad,
-               udpsize, edns, (int)(edns->bits & EDNS_DO), *is_secure_answer)) {
-               if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, NULL,
-                       LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad,
-                       worker->env.now_tv))
-                               edns->opt_list_inplace_cb_out = NULL;
-               error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, 
-                       qinfo, id, flags, edns);
+       } else {
+               /* We don't check the global ede as this is a warning, not
+                * an error */
+               if (*is_expired_answer == 1 &&
+                       worker->env.cfg->ede_serve_expired && worker->env.cfg->ede) {
+                       EDNS_OPT_LIST_APPEND_EDE(&edns->opt_list_out,
+                               worker->scratchpad, LDNS_EDE_STALE_ANSWER, "");
+               }
+               if(!reply_info_answer_encode(qinfo, encode_rep, id, flags,
+                       repinfo->c->buffer, timenow, 1, worker->scratchpad,
+                       udpsize, edns, (int)(edns->bits & EDNS_DO),
+                       *is_secure_answer)) {
+                       if(!inplace_cb_reply_servfail_call(&worker->env, qinfo,
+                               NULL, NULL, LDNS_RCODE_SERVFAIL, edns, repinfo,
+                               worker->scratchpad, worker->env.now_tv))
+                                       edns->opt_list_inplace_cb_out = NULL;
+                       error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL,
+                               qinfo, id, flags, edns);
+               }
        }
        /* cannot send the reply right now, because blocking network syscall
         * is bad while holding locks. */
@@ -1014,7 +1036,7 @@ static int
 deny_refuse(struct comm_point* c, enum acl_access acl,
        enum acl_access deny, enum acl_access refuse,
        struct worker* worker, struct comm_reply* repinfo,
-       struct acl_addr* acladdr)
+       struct acl_addr* acladdr, int ede)
 {
        if(acl == deny) {
                if(verbosity >= VERB_ALGO) {
@@ -1027,26 +1049,164 @@ deny_refuse(struct comm_point* c, enum acl_access acl,
                        worker->stats.unwanted_queries++;
                return 0;
        } else if(acl == refuse) {
+               size_t opt_rr_mark;
+
                if(verbosity >= VERB_ALGO) {
                        log_acl_action("refused", &repinfo->addr,
                                repinfo->addrlen, acl, acladdr);
                        log_buf(VERB_ALGO, "refuse", c->buffer);
                }
+
                if(worker->stats.extended)
                        worker->stats.unwanted_queries++;
                if(worker_check_request(c->buffer, worker) == -1) {
                        comm_point_drop_reply(repinfo);
                        return 0; /* discard this */
                }
-               sldns_buffer_set_limit(c->buffer, LDNS_HEADER_SIZE);
-               sldns_buffer_write_at(c->buffer, 4, 
-                       (uint8_t*)"\0\0\0\0\0\0\0\0", 8);
+               /* worker_check_request() above guarantees that the buffer contains at
+                * least a header and that qdcount == 1
+                */
+               log_assert(sldns_buffer_limit(c->buffer) >= LDNS_HEADER_SIZE
+                       && LDNS_QDCOUNT(sldns_buffer_begin(c->buffer)) == 1);
+
+               sldns_buffer_skip(c->buffer, LDNS_HEADER_SIZE); /* skip header */
+
+               /* check additional section is present and that we respond with EDEs */
+               if(LDNS_ARCOUNT(sldns_buffer_begin(c->buffer)) != 1
+                       || !ede) {
+                       LDNS_QDCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+                       LDNS_ANCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+                       LDNS_NSCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+                       LDNS_ARCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+                       LDNS_QR_SET(sldns_buffer_begin(c->buffer));
+                       LDNS_RCODE_SET(sldns_buffer_begin(c->buffer),
+                               LDNS_RCODE_REFUSED);
+                       sldns_buffer_flip(c->buffer);
+                       return 1;
+               }
+
+               if (!query_dname_len(c->buffer)) {
+                       LDNS_QDCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+                       LDNS_ANCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+                       LDNS_NSCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+                       LDNS_ARCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+                       LDNS_QR_SET(sldns_buffer_begin(c->buffer));
+                       LDNS_RCODE_SET(sldns_buffer_begin(c->buffer),
+                               LDNS_RCODE_FORMERR);
+                       sldns_buffer_set_position(c->buffer, LDNS_HEADER_SIZE);
+                       sldns_buffer_flip(c->buffer);
+                       return 1;
+               }
+               /* space available for query type and class? */
+               if (sldns_buffer_remaining(c->buffer) < 2 * sizeof(uint16_t)) {
+                        LDNS_QR_SET(sldns_buffer_begin(c->buffer));
+                        LDNS_RCODE_SET(sldns_buffer_begin(c->buffer),
+                                LDNS_RCODE_FORMERR);
+                       LDNS_QDCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+                       LDNS_ANCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+                       LDNS_NSCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+                       LDNS_ARCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+                       sldns_buffer_set_position(c->buffer, LDNS_HEADER_SIZE);
+                        sldns_buffer_flip(c->buffer);
+                       return 1;
+               }
                LDNS_QR_SET(sldns_buffer_begin(c->buffer));
                LDNS_RCODE_SET(sldns_buffer_begin(c->buffer), 
                        LDNS_RCODE_REFUSED);
-               sldns_buffer_set_position(c->buffer, LDNS_HEADER_SIZE);
+
+               sldns_buffer_skip(c->buffer, (ssize_t)sizeof(uint16_t)); /* skip qtype */
+
+               sldns_buffer_skip(c->buffer, (ssize_t)sizeof(uint16_t)); /* skip qclass */
+
+               /* The OPT RR to be returned should come directly after
+                * the query, so mark this spot.
+                */
+               opt_rr_mark = sldns_buffer_position(c->buffer);
+
+               /* Skip through the RR records */
+               if(LDNS_ANCOUNT(sldns_buffer_begin(c->buffer)) != 0 ||
+                       LDNS_NSCOUNT(sldns_buffer_begin(c->buffer)) != 0) {
+                       if(!skip_pkt_rrs(c->buffer, 
+                               ((int)LDNS_ANCOUNT(sldns_buffer_begin(c->buffer)))+
+                               ((int)LDNS_NSCOUNT(sldns_buffer_begin(c->buffer))))) {
+                               LDNS_RCODE_SET(sldns_buffer_begin(c->buffer),
+                                       LDNS_RCODE_FORMERR);
+                               LDNS_ANCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+                               LDNS_NSCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+                               LDNS_ARCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+                               sldns_buffer_set_position(c->buffer, opt_rr_mark);
+                               sldns_buffer_flip(c->buffer);
+                               return 1;
+                       }
+               }
+               /* Do we have a valid OPT RR here? If not return REFUSED (could be a valid TSIG or something so no FORMERR) */
+               /* domain name must be the root of length 1. */
+               if(sldns_buffer_remaining(c->buffer) < 1 || *sldns_buffer_current(c->buffer) != 0) {
+                       LDNS_ANCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+                       LDNS_NSCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+                       LDNS_ARCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+                       sldns_buffer_set_position(c->buffer, opt_rr_mark);
+                       sldns_buffer_flip(c->buffer);
+                       return 1;
+               } else {
+                       sldns_buffer_skip(c->buffer, 1); /* skip root label */
+               }
+               if(sldns_buffer_remaining(c->buffer) < 2 ||
+                       sldns_buffer_read_u16(c->buffer) != LDNS_RR_TYPE_OPT) {
+                       LDNS_ANCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+                       LDNS_NSCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+                       LDNS_ARCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+                       sldns_buffer_set_position(c->buffer, opt_rr_mark);
+                       sldns_buffer_flip(c->buffer);
+                       return 1;
+               }
+               /* Write OPT RR directly after the query,
+                * so without the (possibly skipped) Answer and NS RRs
+                */
+               LDNS_ANCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+               LDNS_NSCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+               sldns_buffer_clear(c->buffer); /* reset write limit */
+               sldns_buffer_set_position(c->buffer, opt_rr_mark);
+
+               /* Check if OPT record can be written
+                * 17 == root label (1) + RR type (2) + UDP Size (2)
+                *     + Fields (4) + rdata len (2) + EDE Option code (2)
+                *     + EDE Option length (2) + EDE info-code (2)
+                */
+               if (sldns_buffer_available(c->buffer, 17) == 0) {
+                       LDNS_ARCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+                       sldns_buffer_flip(c->buffer);
+                       return 1;
+               }
+
+               LDNS_ARCOUNT_SET(sldns_buffer_begin(c->buffer), 1);
+
+               /* root label */
+               sldns_buffer_write_u8(c->buffer, 0);
+               sldns_buffer_write_u16(c->buffer, LDNS_RR_TYPE_OPT);
+               sldns_buffer_write_u16(c->buffer, EDNS_ADVERTISED_SIZE);
+
+               /* write OPT Record TTL Field */
+               sldns_buffer_write_u32(c->buffer, 0);
+
+               /* write rdata len: EDE option + length + info-code */
+               sldns_buffer_write_u16(c->buffer, 6);
+
+               /* write OPTIONS; add EDE option code */
+               sldns_buffer_write_u16(c->buffer, LDNS_EDNS_EDE);
+
+               /* write single EDE option length (for just 1 info-code) */
+               sldns_buffer_write_u16(c->buffer, 2);
+
+               /* write single EDE info-code */
+               sldns_buffer_write_u16(c->buffer, LDNS_EDE_PROHIBITED);
+
                sldns_buffer_flip(c->buffer);
+
+               verbose(VERB_ALGO, "attached EDE code: %d", LDNS_EDE_PROHIBITED);
+
                return 1;
+
        }
 
        return -1;
@@ -1055,19 +1215,19 @@ deny_refuse(struct comm_point* c, enum acl_access acl,
 static int
 deny_refuse_all(struct comm_point* c, enum acl_access acl,
        struct worker* worker, struct comm_reply* repinfo,
-       struct acl_addr* acladdr)
+       struct acl_addr* acladdr, int ede)
 {
        return deny_refuse(c, acl, acl_deny, acl_refuse, worker, repinfo,
-               acladdr);
+               acladdr, ede);
 }
 
 static int
 deny_refuse_non_local(struct comm_point* c, enum acl_access acl,
        struct worker* worker, struct comm_reply* repinfo,
-       struct acl_addr* acladdr)
+       struct acl_addr* acladdr, int ede)
 {
        return deny_refuse(c, acl, acl_deny_non_local, acl_refuse_non_local,
-               worker, repinfo, acladdr);
+               worker, repinfo, acladdr, ede);
 }
 
 int 
@@ -1159,7 +1319,9 @@ worker_handle_request(struct comm_point* c, void* arg, int error,
        acladdr = acl_addr_lookup(worker->daemon->acl, &repinfo->addr, 
                repinfo->addrlen);
        acl = acl_get_control(acladdr);
-       if((ret=deny_refuse_all(c, acl, worker, repinfo, acladdr)) != -1)
+
+       if((ret=deny_refuse_all(c, acl, worker, repinfo, acladdr,
+               worker->env.cfg->ede)) != -1)
        {
                if(ret == 1)
                        goto send_reply;
@@ -1379,7 +1541,8 @@ worker_handle_request(struct comm_point* c, void* arg, int error,
 
        /* We've looked in our local zones. If the answer isn't there, we
         * might need to bail out based on ACLs now. */
-       if((ret=deny_refuse_non_local(c, acl, worker, repinfo, acladdr)) != -1)
+       if((ret=deny_refuse_non_local(c, acl, worker, repinfo, acladdr,
+               worker->env.cfg->ede)) != -1)
        {
                regional_free_all(worker->scratchpad);
                if(ret == 1)
@@ -1398,12 +1561,17 @@ worker_handle_request(struct comm_point* c, void* arg, int error,
         * ACLs allow the snooping. */
        if(!(LDNS_RD_WIRE(sldns_buffer_begin(c->buffer))) &&
                acl != acl_allow_snoop ) {
+               if (worker->env.cfg->ede) {
+                       EDNS_OPT_LIST_APPEND_EDE(&edns.opt_list_out,
+                               worker->scratchpad, LDNS_EDE_NOT_AUTHORITATIVE, "");
+               }
                error_encode(c->buffer, LDNS_RCODE_REFUSED, &qinfo,
                        *(uint16_t*)(void *)sldns_buffer_begin(c->buffer),
-                       sldns_buffer_read_u16_at(c->buffer, 2), NULL);
+                       sldns_buffer_read_u16_at(c->buffer, 2), &edns);
                regional_free_all(worker->scratchpad);
                log_addr(VERB_ALGO, "refused nonrec (cache snoop) query from",
                        &repinfo->addr, repinfo->addrlen);
+
                goto send_reply;
        }
 
@@ -1476,6 +1644,7 @@ lookup_cache:
                                                < *worker->env.now)
                                                leeway = 0;
                                        lock_rw_unlock(&e->lock);
+
                                        reply_and_prefetch(worker, lookup_qinfo,
                                                sldns_buffer_read_u16_at(c->buffer, 2),
                                                repinfo, leeway,
@@ -1517,6 +1686,7 @@ lookup_cache:
                        verbose(VERB_ALGO, "answer from the cache failed");
                        lock_rw_unlock(&e->lock);
                }
+
                if(!LDNS_RD_WIRE(sldns_buffer_begin(c->buffer))) {
                        if(answer_norec_from_cache(worker, &qinfo,
                                *(uint16_t*)(void *)sldns_buffer_begin(c->buffer), 
index 146ace827b4110178b14d46277653234ad2a448e..3d01d58658c2a6b84676d1a6f96070c1b4232dfb 100644 (file)
@@ -901,6 +901,14 @@ server:
        # the number of servers that will be used in the fast server selection.
        # fast-server-num: 3
 
+       # Enable to attach Extended DNS Error codes (RFC8914) to responses.
+       # ede: no
+
+       # Enable to attach an Extended DNS Error (RFC8914) Code 3 - Stale
+       # Answer as EDNS0 option to expired responses.
+       # Note that the ede option above needs to be enabled for this to work.
+       # ede-serve-expired: no
+
        # Specific options for ipsecmod. Unbound needs to be configured with
        # --enable-ipsecmod for these to take effect.
        #
index 294cd23d8d0323e8667ead1e5f7fbd4fb5d67d56..f27f6a0cbf317b4ef16618ada86a5bb1b2a27554 100644 (file)
@@ -1780,6 +1780,21 @@ option can be used multiple times. The most specific match will be used.
 EDNS0 option code for the \fIedns\-client\-string\fR option, from 0 to 65535.
 A value from the `Reserved for Local/Experimental` range (65001-65534) should
 be used.  Default is 65001.
+.TP 5
+.B ede: \fI<yes or no>
+If enabled, Unbound will respond with Extended DNS Error codes (RFC8914).
+These EDEs attach informative error messages to a response for various
+errors. Default is "no".
+
+When the \fBval-log-level\fR option is also set to \fB2\fR, responses with
+Extended DNS Errors concerning DNSSEC failures that are not served from cache,
+will also contain a descriptive text message about the reason for the failure.
+.TP
+.B ede\-serve\-expired: \fI<yes or no>
+If enabled, Unbound will attach an Extended DNS Error (RFC8914) Code 3 - Stale
+Answer as EDNS0 option to the expired response. Note that this will not attach
+the EDE code without setting the global \fBede\fR option to "yes" as well.
+Default is "no".
 .SS "Remote Control Options"
 In the
 .B remote\-control:
index d3e93a62a53543182481791435c0f5af3d37aef0..02fb621a22ff2e4e579f99a63021e1485f0bb4e9 100644 (file)
@@ -132,6 +132,7 @@ msg_create(struct regional* region, struct query_info* qinfo)
                return NULL;
        msg->rep->flags = (uint16_t)(BIT_QR | BIT_AA);
        msg->rep->authoritative = 1;
+       msg->rep->reason_bogus = LDNS_EDE_NONE;
        msg->rep->qdcount = 1;
        /* rrsets is NULL, no rrsets yet */
        return msg;
@@ -7785,7 +7786,7 @@ static int zonemd_dnssec_verify_rrset(struct auth_zone* z,
                auth_zone_log(z->name, VERB_ALGO,
                        "zonemd: verify %s RRset with DNSKEY", typestr);
        }
-       sec = dnskeyset_verify_rrset(env, ve, &pk, dnskey, sigalg, why_bogus,
+       sec = dnskeyset_verify_rrset(env, ve, &pk, dnskey, sigalg, why_bogus, NULL,
                LDNS_SECTION_ANSWER, NULL);
        if(sec == sec_status_secure) {
                return 1;
@@ -8128,7 +8129,7 @@ zonemd_get_dnskey_from_anchor(struct auth_zone* z, struct module_env* env,
        auth_zone_log(z->name, VERB_QUERY,
                "zonemd: verify DNSKEY RRset with trust anchor");
        sec = val_verify_DNSKEY_with_TA(env, ve, keystorage, anchor->ds_rrset,
-               anchor->dnskey_rrset, NULL, why_bogus, NULL);
+               anchor->dnskey_rrset, NULL, why_bogus, NULL, NULL);
        regional_free_all(env->scratch);
        if(sec == sec_status_secure) {
                /* success */
@@ -8186,8 +8187,9 @@ auth_zone_verify_zonemd_key_with_ds(struct auth_zone* z,
        keystorage->rk.type = htons(LDNS_RR_TYPE_DNSKEY);
        keystorage->rk.rrset_class = htons(z->dclass);
        auth_zone_log(z->name, VERB_QUERY, "zonemd: verify zone DNSKEY with DS");
+       // @TODO add EDE here? we currently just pass NULL
        sec = val_verify_DNSKEY_with_DS(env, ve, keystorage, ds, sigalg,
-               why_bogus, NULL);
+               why_bogus, NULL, NULL);
        regional_free_all(env->scratch);
        if(sec == sec_status_secure) {
                /* success */
index 5b64fe47520ca3aca11996a6bb4b8ac5fcbeb974..f6c11451c93a76df61d412e94115c88775eb1acb 100644 (file)
@@ -428,6 +428,7 @@ dns_msg_create(uint8_t* qname, size_t qnamelen, uint16_t qtype,
                return NULL; /* integer overflow protection */
        msg->rep->flags = BIT_QR; /* with QR, no AA */
        msg->rep->qdcount = 1;
+       msg->rep->reason_bogus = LDNS_EDE_NONE;
        msg->rep->rrsets = (struct ub_packed_rrset_key**)
                regional_alloc(region, 
                capacity*sizeof(struct ub_packed_rrset_key*));
@@ -524,6 +525,7 @@ gen_dns_msg(struct regional* region, struct query_info* q, size_t num)
                sizeof(struct reply_info) - sizeof(struct rrset_ref));
        if(!msg->rep)
                return NULL;
+       msg->rep->reason_bogus = LDNS_EDE_NONE;
        if(num > RR_COUNT_MAX)
                return NULL; /* integer overflow protection */
        msg->rep->rrsets = (struct ub_packed_rrset_key**)
@@ -577,6 +579,7 @@ tomsg(struct module_env* env, struct query_info* q, struct reply_info* r,
        msg->rep->ar_numrrsets = r->ar_numrrsets;
        msg->rep->rrset_count = r->rrset_count;
        msg->rep->authoritative = r->authoritative;
+       msg->rep->reason_bogus = r->reason_bogus;
        if(!rrset_array_lock(r->ref, r->rrset_count, now_control)) {
                return NULL;
        }
@@ -632,6 +635,7 @@ rrset_msg(struct ub_packed_rrset_key* rrset, struct regional* region,
        msg->rep->ns_numrrsets = 0;
        msg->rep->ar_numrrsets = 0;
        msg->rep->rrset_count = 1;
+       msg->rep->reason_bogus = LDNS_EDE_NONE;
        msg->rep->rrsets[0] = packed_rrset_copy_region(rrset, region, now);
        if(!msg->rep->rrsets[0]) /* copy CNAME */
                return NULL;
@@ -670,6 +674,7 @@ synth_dname_msg(struct ub_packed_rrset_key* rrset, struct regional* region,
        msg->rep->ns_numrrsets = 0;
        msg->rep->ar_numrrsets = 0;
        msg->rep->rrset_count = 1;
+       msg->rep->reason_bogus = LDNS_EDE_NONE;
        msg->rep->rrsets[0] = packed_rrset_copy_region(rrset, region, now);
        if(!msg->rep->rrsets[0]) /* copy DNAME */
                return NULL;
index 3e3a71aea3c550cade50a5de46d9b9dadcc7e398..3ed7d835d33ec086ab9817e5a114deefdee8b132 100644 (file)
@@ -1328,7 +1328,8 @@ local_encode(struct query_info* qinfo, struct module_env* env,
 static void
 local_error_encode(struct query_info* qinfo, struct module_env* env,
        struct edns_data* edns, struct comm_reply* repinfo, sldns_buffer* buf,
-       struct regional* temp, int rcode, int r)
+       struct regional* temp, int rcode, int r, int ede_code,
+       const char* ede_txt)
 {
        edns->edns_version = EDNS_ADVERTISED_VERSION;
        edns->udp_size = EDNS_ADVERTISED_SIZE;
@@ -1338,6 +1339,12 @@ local_error_encode(struct query_info* qinfo, struct module_env* env,
        if(!inplace_cb_reply_local_call(env, qinfo, NULL, NULL,
                rcode, edns, repinfo, temp, env->now_tv))
                edns->opt_list_inplace_cb_out = NULL;
+
+       if(ede_code != LDNS_EDE_NONE && env->cfg->ede) {
+               edns_opt_list_append_ede(&edns->opt_list_out, temp,
+                       ede_code, ede_txt);
+       }
+
        error_encode(buf, r, qinfo, *(uint16_t*)sldns_buffer_begin(buf),
                sldns_buffer_read_u16_at(buf, 2), edns);
 }
@@ -1535,7 +1542,9 @@ local_data_answer(struct local_zone* z, struct module_env* env,
                                qinfo->local_alias = NULL;
                                local_error_encode(qinfo, env, edns, repinfo,
                                        buf, temp, LDNS_RCODE_YXDOMAIN,
-                                       (LDNS_RCODE_YXDOMAIN|BIT_AA));
+                                       (LDNS_RCODE_YXDOMAIN|BIT_AA),
+                                       LDNS_EDE_OTHER,
+                                       "DNAME expansion became too large");
                                return 1;
                        }
                        memset(&qinfo->local_alias->rrset->entry, 0,
@@ -1638,7 +1647,8 @@ local_zones_zone_answer(struct local_zone* z, struct module_env* env,
        } else if(lz_type == local_zone_refuse
                || lz_type == local_zone_always_refuse) {
                local_error_encode(qinfo, env, edns, repinfo, buf, temp,
-                       LDNS_RCODE_REFUSED, (LDNS_RCODE_REFUSED|BIT_AA));
+                       LDNS_RCODE_REFUSED, (LDNS_RCODE_REFUSED|BIT_AA),
+                       LDNS_EDE_NONE, NULL);
                return 1;
        } else if(lz_type == local_zone_static ||
                lz_type == local_zone_redirect ||
@@ -1663,8 +1673,8 @@ local_zones_zone_answer(struct local_zone* z, struct module_env* env,
                if(z != NULL && z->soa && z->soa_negative)
                        return local_encode(qinfo, env, edns, repinfo, buf, temp,
                                z->soa_negative, 0, rcode);
-               local_error_encode(qinfo, env, edns, repinfo, buf, temp, rcode,
-                       (rcode|BIT_AA));
+               local_error_encode(qinfo, env, edns, repinfo, buf, temp,
+                       rcode, (rcode|BIT_AA), LDNS_EDE_NONE, NULL);
                return 1;
        } else if(lz_type == local_zone_typetransparent
                || lz_type == local_zone_always_transparent) {
@@ -1705,9 +1715,10 @@ local_zones_zone_answer(struct local_zone* z, struct module_env* env,
                        return local_encode(qinfo, env, edns, repinfo, buf, temp,
                                &lrr, 1, LDNS_RCODE_NOERROR);
                } else {
+                       /* NODATA: No EDE needed */
                        local_error_encode(qinfo, env, edns, repinfo, buf,
                                temp, LDNS_RCODE_NOERROR,
-                               (LDNS_RCODE_NOERROR|BIT_AA));
+                               (LDNS_RCODE_NOERROR|BIT_AA), -1, NULL);
                }
                return 1;
        }
@@ -1720,8 +1731,9 @@ local_zones_zone_answer(struct local_zone* z, struct module_env* env,
                if(z != NULL && z->soa && z->soa_negative)
                        return local_encode(qinfo, env, edns, repinfo, buf, temp,
                                z->soa_negative, 0, rcode);
+               /* NODATA: No EDE needed */
                local_error_encode(qinfo, env, edns, repinfo, buf, temp, rcode,
-                       (rcode|BIT_AA));
+                       (rcode|BIT_AA), LDNS_EDE_NONE, NULL);
                return 1;
        }
 
index 4b022d47f16f6cae14f8b7ca476bda03814d2d7f..7c767e626030ea2462621c163ff1ebab8a3a0d3a 100644 (file)
@@ -1239,7 +1239,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep,
                (rep->security <= sec_status_bogus ||
                rep->security == sec_status_secure_sentinel_fail)) {
                rcode = LDNS_RCODE_SERVFAIL;
-               if(m->s.env->cfg->stat_extended) 
+               if(m->s.env->cfg->stat_extended)
                        m->s.env->mesh->ans_bogus++;
        }
        if(rep && rep->security == sec_status_secure)
@@ -1295,6 +1295,36 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep,
                                &r->edns, &r->query_reply, m->s.region, &r->start_time))
                                        r->edns.opt_list_inplace_cb_out = NULL;
                }
+               /* Send along EDE BOGUS EDNS0 option when answer is bogus */
+               if(m->s.env->cfg->ede && rcode == LDNS_RCODE_SERVFAIL &&
+                       m->s.env->need_to_validate && (!(r->qflags&BIT_CD) ||
+                       m->s.env->cfg->ignore_cd) && rep &&
+                       (rep->security <= sec_status_bogus ||
+                       rep->security == sec_status_secure_sentinel_fail)) {
+                       char *reason = m->s.env->cfg->val_log_level >= 2
+                               ? errinf_to_str_bogus(&m->s) : NULL;
+
+                       /* During validation the EDE code can be received via two
+                        * code paths. One code path fills the reply_info EDE, and
+                        * the other fills it in the errinf_strlist. These paths
+                        * intersect at some points, but where is opaque due to
+                        * the complexity of the validator. At the time of writing
+                        * we make the choice to prefer the EDE from errinf_strlist
+                        * but a compelling reason to do otherwise is just as valid
+                        */
+                       sldns_ede_code reason_bogus = errinf_to_reason_bogus(&m->s);
+                       if ((reason_bogus == LDNS_EDE_DNSSEC_BOGUS &&
+                               rep->reason_bogus != LDNS_EDE_NONE) ||
+                               reason_bogus == LDNS_EDE_NONE) {
+                                       reason_bogus = rep->reason_bogus;
+                       }
+
+                       if(reason_bogus != LDNS_EDE_NONE) {
+                               edns_opt_list_append_ede(&r->edns.opt_list_out,
+                                       m->s.region, reason_bogus, reason);
+                       }
+                       free(reason);
+               }
                error_encode(r_buffer, rcode, &m->s.qinfo, r->qid,
                        r->qflags, &r->edns);
                m->reply_list = NULL;
@@ -1318,6 +1348,8 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep,
                        if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s,
                        rep, LDNS_RCODE_SERVFAIL, &r->edns, &r->query_reply, m->s.region, &r->start_time))
                                r->edns.opt_list_inplace_cb_out = NULL;
+                       /* internal server error (probably malloc failure) so no
+                        * EDE (RFC8914) needed */
                        error_encode(r_buffer, LDNS_RCODE_SERVFAIL,
                                &m->s.qinfo, r->qid, r->qflags, &r->edns);
                }
@@ -2050,6 +2082,14 @@ mesh_serve_expired_callback(void* arg)
                        }
                }
 
+               /* Add EDE Stale Answer (RCF8914). Ignore global ede as this is
+                * warning instead of an error */
+               if (r->edns.edns_present && qstate->env->cfg->ede_serve_expired &&
+                       qstate->env->cfg->ede) {
+                       edns_opt_list_append_ede(&r->edns.opt_list_out,
+                               mstate->s.region, LDNS_EDE_STALE_ANSWER, NULL);
+               }
+
                r_buffer = r->query_reply.c->buffer;
                if(r->query_reply.c->tcp_req_info)
                        r_buffer = r->query_reply.c->tcp_req_info->spool_buffer;
index de9952ea71f8e6daf7d28ac87e40c3fe7f520c32..c32e7d285567d7a26dc55e63b31279336f48ec3d 100644 (file)
@@ -97,18 +97,22 @@ extern "C" {
 #define        QDCOUNT(wirebuf)                (ntohs(*(uint16_t *)(wirebuf+QDCOUNT_OFF)))
 */
 #define        LDNS_QDCOUNT(wirebuf)           (sldns_read_uint16(wirebuf+LDNS_QDCOUNT_OFF))
+#define LDNS_QDCOUNT_SET(wirebuf, i)    (sldns_write_uint16(wirebuf+LDNS_QDCOUNT_OFF, i))
 
 /* Counter of the answer section */
 #define LDNS_ANCOUNT_OFF               6
 #define        LDNS_ANCOUNT(wirebuf)           (sldns_read_uint16(wirebuf+LDNS_ANCOUNT_OFF))
+#define LDNS_ANCOUNT_SET(wirebuf, i)    (sldns_write_uint16(wirebuf+LDNS_ANCOUNT_OFF, i))
 
 /* Counter of the authority section */
 #define LDNS_NSCOUNT_OFF               8
 #define        LDNS_NSCOUNT(wirebuf)           (sldns_read_uint16(wirebuf+LDNS_NSCOUNT_OFF))
+#define LDNS_NSCOUNT_SET(wirebuf, i)    (sldns_write_uint16(wirebuf+LDNS_NSCOUNT_OFF, i))
 
 /* Counter of the additional section */
 #define LDNS_ARCOUNT_OFF               10
 #define        LDNS_ARCOUNT(wirebuf)           (sldns_read_uint16(wirebuf+LDNS_ARCOUNT_OFF))
+#define LDNS_ARCOUNT_SET(wirebuf, i)    (sldns_write_uint16(wirebuf+LDNS_ARCOUNT_OFF, i))
 
 /**
  * The sections of a packet
index 42d5de064eea2581400421fab9e9a15c9e205d7f..999c223074e1ec19bd4725a12e049e1ed1a6fb32 100644 (file)
@@ -435,10 +435,42 @@ enum sldns_enum_edns_option
        LDNS_EDNS_CLIENT_SUBNET = 8, /* RFC7871 */
        LDNS_EDNS_KEEPALIVE = 11, /* draft-ietf-dnsop-edns-tcp-keepalive*/
        LDNS_EDNS_PADDING = 12, /* RFC7830 */
+       LDNS_EDNS_EDE = 15, /* RFC8914 */
        LDNS_EDNS_CLIENT_TAG = 16 /* draft-bellis-dnsop-edns-tags-01 */
 };
 typedef enum sldns_enum_edns_option sldns_edns_option;
 
+enum sldns_enum_ede_code
+{
+       LDNS_EDE_NONE = -1, /* EDE undefined for internal use */
+       LDNS_EDE_OTHER = 0,
+       LDNS_EDE_UNSUPPORTED_DNSKEY_ALG = 1,
+       LDNS_EDE_UNSUPPORTED_DS_DIGEST = 2,
+       LDNS_EDE_STALE_ANSWER = 3,
+       LDNS_EDE_FORGED_ANSWER = 4,
+       LDNS_EDE_DNSSEC_INDETERMINATE = 5,
+       LDNS_EDE_DNSSEC_BOGUS = 6,
+       LDNS_EDE_SIGNATURE_EXPIRED = 7,
+       LDNS_EDE_SIGNATURE_NOT_YET_VALID = 8,
+       LDNS_EDE_DNSKEY_MISSING = 9,
+       LDNS_EDE_RRSIGS_MISSING = 10,
+       LDNS_EDE_NO_ZONE_KEY_BIT_SET = 11,
+       LDNS_EDE_NSEC_MISSING = 12,
+       LDNS_EDE_CACHED_ERROR = 13,
+       LDNS_EDE_NOT_READY = 14,
+       LDNS_EDE_BLOCKED = 15,
+       LDNS_EDE_CENSORED = 16,
+       LDNS_EDE_FILTERED = 17,
+       LDNS_EDE_PROHIBITED = 18,
+       LDNS_EDE_STALE_NXDOMAIN_ANSWER = 19,
+       LDNS_EDE_NOT_AUTHORITATIVE = 20,
+       LDNS_EDE_NOT_SUPPORTED = 21,
+       LDNS_EDE_NO_REACHABLE_AUTHORITY = 22,
+       LDNS_EDE_NETWORK_ERROR = 23,
+       LDNS_EDE_INVALID_DATA = 24,
+};
+typedef enum sldns_enum_ede_code sldns_ede_code;
+
 #define LDNS_EDNS_MASK_DO_BIT 0x8000
 
 /** TSIG and TKEY extended rcodes (16bit), 0-15 are the normal rcodes. */
index b70efe299d4bfea95f2be3a3601f3e5fc456ac4e..d6fb289650b297d8ce51eb2c099ebb31ba999617 100644 (file)
@@ -194,6 +194,7 @@ static sldns_lookup_table sldns_edns_options_data[] = {
        { 8, "edns-client-subnet" },
        { 11, "edns-tcp-keepalive"},
        { 12, "Padding" },
+       { 15, "EDE"},
        { 0, NULL}
 };
 sldns_lookup_table* sldns_edns_options = sldns_edns_options_data;
index dee45176167a993b98019359c036911b443e35e0..3702c3f184035942f2db747e0538a18856131b20 100644 (file)
@@ -128,6 +128,8 @@ static void matchline(char* line, struct entry* e)
                        e->match_answer = 1;
                } else if(str_keyword(&parse, "subdomain")) {
                        e->match_subdomain = 1;
+               } else if(str_keyword(&parse, "all_noedns")) {
+                       e->match_all_noedns = 1;
                } else if(str_keyword(&parse, "all")) {
                        e->match_all = 1;
                } else if(str_keyword(&parse, "ttl")) {
@@ -148,7 +150,22 @@ static void matchline(char* line, struct entry* e)
                                error("expected = or : in MATCH: %s", line);
                        parse++;
                        e->ixfr_soa_serial = (uint32_t)strtol(parse, (char**)&parse, 10);
-                       while(isspace((unsigned char)*parse)) 
+                       while(isspace((unsigned char)*parse))
+                               parse++;
+               } else if(str_keyword(&parse, "ede")) {
+                       e->match_ede = 1;
+                       if(*parse != '=' && *parse != ':')
+                               error("expected = or : in MATCH: %s", line);
+                       parse++;
+                       while(isspace((unsigned char)*parse))
+                               parse++;
+                       if(str_keyword(&parse, "any")) {
+                               e->match_ede_any = 1;
+                       } else {
+                               e->ede_info_code = (uint16_t)strtol(parse,
+                                       (char**)&parse, 10);
+                       }
+                       while(isspace((unsigned char)*parse))
                                parse++;
                } else {
                        error("could not parse MATCH: '%s'", parse);
@@ -266,11 +283,15 @@ static struct entry* new_entry(void)
        e->match_answer = 0;
        e->match_subdomain = 0;
        e->match_all = 0;
+       e->match_all_noedns = 0;
        e->match_ttl = 0;
        e->match_do = 0;
        e->match_noedns = 0;
        e->match_serial = 0;
        e->ixfr_soa_serial = 0;
+       e->match_ede = 0;
+       e->match_ede_any = 0;
+       e->ede_info_code = -1;
        e->match_transport = transport_any;
        e->reply_list = NULL;
        e->copy_id = 0;
@@ -817,7 +838,7 @@ static uint32_t get_serial(uint8_t* p, size_t plen)
        return 0;
 }
 
-/** get ptr to EDNS OPT record (and remaining length); behind the type u16 */
+/** get ptr to EDNS OPT record (and remaining length); after the type u16 */
 static int
 pkt_find_edns_opt(uint8_t** p, size_t* plen)
 {
@@ -884,6 +905,39 @@ get_do_flag(uint8_t* pkt, size_t len)
        return (int)(edns_bits&LDNS_EDNS_MASK_DO_BIT);
 }
 
+/** Snips the EDE option out of the OPT record and returns the EDNS EDE
+ *  INFO-CODE if found, else -1 */
+static int
+extract_ede(uint8_t* pkt, size_t len)
+{
+       uint8_t *rdata, *opt_position = pkt;
+       uint16_t rdlen, optlen;
+       size_t remaining = len;
+       int ede_code;
+       if(!pkt_find_edns_opt(&opt_position, &remaining)) return -1;
+       if(remaining < 8) return -1; /* malformed */
+       rdlen = sldns_read_uint16(opt_position+6);
+       rdata = opt_position + 8;
+       while(rdlen > 0) {
+               if(rdlen < 4) return -1; /* malformed */
+               optlen = sldns_read_uint16(rdata+2);
+               if(sldns_read_uint16(rdata) == LDNS_EDNS_EDE) {
+                       if(rdlen < 6) return -1; /* malformed */
+                       ede_code = sldns_read_uint16(rdata+4);
+                       /* snip option from packet; assumes len is correct */
+                       memmove(rdata, rdata+4+optlen,
+                               (pkt+len)-(rdata+4+optlen));
+                       /* update OPT size */
+                       sldns_write_uint16(opt_position+6,
+                               sldns_read_uint16(opt_position+6)-(4+optlen));
+                       return ede_code;
+               }
+               rdlen -= 4 + optlen;
+               rdata += 4 + optlen;
+       }
+       return -1;
+}
+
 /** zero TTLs in packet */
 static void
 zerottls(uint8_t* pkt, size_t pktlen)
@@ -1201,7 +1255,7 @@ match_question(uint8_t* q, size_t qlen, uint8_t* p, size_t plen, int mttl)
                return 0;
        }
        
-       /* remove after answer section, (;; AUTH, ;; ADD, ;; MSG size ..) */
+       /* remove after answer section, (;; ANS, ;; AUTH, ;; ADD  ..) */
        s = strstr(qcmpstr, ";; ANSWER SECTION");
        if(!s) s = strstr(qcmpstr, ";; AUTHORITY SECTION");
        if(!s) s = strstr(qcmpstr, ";; ADDITIONAL SECTION");
@@ -1292,18 +1346,36 @@ match_answer(uint8_t* q, size_t qlen, uint8_t* p, size_t plen, int mttl)
        return r;
 }
 
+/** ignore EDNS lines in the string by overwriting them with what's left or
+ *  zero out if at end of the string */
+static int
+ignore_edns_lines(char* str) {
+       char* edns = str, *n;
+       size_t str_len = strlen(str);
+       while((edns = strstr(edns, "; EDNS"))) {
+               n = strchr(edns, '\n');
+               if(!n) {
+                       /* EDNS at end of string; zero */
+                       *edns = 0;
+                       break;
+               }
+               memmove(edns, n+1, str_len-(n-str));
+       }
+       return 1;
+}
+
 /** match all of the packet */
 int
 match_all(uint8_t* q, size_t qlen, uint8_t* p, size_t plen, int mttl,
-       int noloc)
+       int noloc, int noedns)
 {
        char* qstr, *pstr;
        uint8_t* qb = q, *pb = p;
        int r;
-       /* zero TTLs */
        qb = memdup(q, qlen);
        pb = memdup(p, plen);
        if(!qb || !pb) error("out of memory");
+       /* zero TTLs */
        if(!mttl) {
                zerottls(qb, qlen);
                zerottls(pb, plen);
@@ -1313,6 +1385,11 @@ match_all(uint8_t* q, size_t qlen, uint8_t* p, size_t plen, int mttl,
        qstr = sldns_wire2str_pkt(qb, qlen);
        pstr = sldns_wire2str_pkt(pb, plen);
        if(!qstr || !pstr) error("cannot pkt2string");
+       /* should we ignore EDNS lines? */
+       if(noedns) {
+               ignore_edns_lines(qstr);
+               ignore_edns_lines(pstr);
+       }
        r = (strcmp(qstr, pstr) == 0);
        if(!r) {
                /* remove ;; MSG SIZE (at end of string) */
@@ -1321,8 +1398,8 @@ match_all(uint8_t* q, size_t qlen, uint8_t* p, size_t plen, int mttl,
                s = strstr(pstr, ";; MSG SIZE");
                if(s) *s=0;
                r = (strcmp(qstr, pstr) == 0);
-               if(!r && !noloc) {
-                       /* we are going to fail see if it is because of EDNS */
+               if(!r && !noloc && !noedns) {
+                       /* we are going to fail, see if the cause is EDNS */
                        char* a = strstr(qstr, "; EDNS");
                        char* b = strstr(pstr, "; EDNS");
                        if( (a&&!b) || (b&&!a) ) {
@@ -1428,13 +1505,32 @@ find_match(struct entry* entries, uint8_t* query_pkt, size_t len,
        enum transport_type transport)
 {
        struct entry* p = entries;
-       uint8_t* reply;
-       size_t rlen;
+       uint8_t* reply, *query_pkt_orig;
+       size_t rlen, query_pkt_orig_len;
+       /* Keep the original packet; it may be modified */
+       query_pkt_orig = memdup(query_pkt, len);
+       query_pkt_orig_len = len;
        for(p=entries; p; p=p->next) {
                verbose(3, "comparepkt: ");
                reply = p->reply_list->reply_pkt;
                rlen = p->reply_list->reply_len;
-               if(p->match_opcode && get_opcode(query_pkt, len) != 
+               /* Restore the original packet for each entry */
+               memcpy(query_pkt, query_pkt_orig, query_pkt_orig_len);
+               /* EDE should be first since it may modify the query_pkt */
+               if(p->match_ede) {
+                       int info_code = extract_ede(query_pkt, len);
+                       if(info_code == -1) {
+                               verbose(3, "bad EDE. Expected but not found\n");
+                               continue;
+                       } else if(!p->match_ede_any &&
+                               (uint16_t)info_code != p->ede_info_code) {
+                               verbose(3, "bad EDE INFO-CODE. Expected: %d, "
+                                       "and got: %d\n", (int)p->ede_info_code,
+                                       info_code);
+                               continue;
+                       }
+               }
+               if(p->match_opcode && get_opcode(query_pkt, len) !=
                        get_opcode(reply, rlen)) {
                        verbose(3, "bad opcode\n");
                        continue;
@@ -1502,14 +1598,25 @@ find_match(struct entry* entries, uint8_t* query_pkt, size_t len,
                        verbose(3, "bad transport\n");
                        continue;
                }
+               if(p->match_all_noedns && !match_all(query_pkt, len, reply,
+                       rlen, (int)p->match_ttl, 0, 1)) {
+                       verbose(3, "bad all_noedns match\n");
+                       continue;
+               }
                if(p->match_all && !match_all(query_pkt, len, reply, rlen,
-                       (int)p->match_ttl, 0)) {
+                       (int)p->match_ttl, 0, 0)) {
                        verbose(3, "bad allmatch\n");
                        continue;
                }
                verbose(3, "match!\n");
+               /* Restore the original packet */
+               memcpy(query_pkt, query_pkt_orig, query_pkt_orig_len);
+               free(query_pkt_orig);
                return p;
        }
+       /* Restore the original packet */
+       memcpy(query_pkt, query_pkt_orig, query_pkt_orig_len);
+       free(query_pkt_orig);
        return NULL;
 }
 
index 6e032fa90a65b4b572a8f7403d3b3ea740b152f9..2768040c68cb94b8ab47399273d122d810df9d19 100644 (file)
@@ -40,20 +40,30 @@ struct sldns_file_parse_state;
        ENTRY_BEGIN
        ; first give MATCH lines, that say what queries are matched
        ; by this entry.
-       ; 'opcode' makes the query match the opcode from the reply
-       ; if you leave it out, any opcode matches this entry.
-       ; 'qtype' makes the query match the qtype from the reply
-       ; 'qname' makes the query match the qname from the reply
-       ; 'subdomain' makes the query match subdomains of qname from the reply
-       ; 'serial=1023' makes the query match if ixfr serial is 1023. 
+       ; 'opcode' makes the query match the opcode from the reply;
+       ;       if you leave it out, any opcode matches this entry.
+       ; 'qtype' makes the query match the qtype from the reply.
+       ; 'qname' makes the query match the qname from the reply.
+       ; 'subdomain' makes the query match subdomains of qname from the reply.
+       ; 'serial=1023' makes the query match if ixfr serial is 1023.
        ; 'all' has to match header byte for byte and all rrs in packet.
+       ; 'all_noedns' has to match header byte for byte and all rrs in packet;
+       ;       ignoring EDNS.
        ; 'ttl' used with all, rrs in packet must also have matching TTLs.
        ; 'DO' will match only queries with DO bit set.
        ; 'noedns' matches queries without EDNS OPT records.
-       ; 'rcode' makes the query match the rcode from the reply
-       ; 'question' makes the query match the question section
-       ; 'answer' makes the query match the answer section
+       ; 'rcode' makes the query match the rcode from the reply.
+       ; 'question' makes the query match the question section.
+       ; 'answer' makes the query match the answer section.
        ; 'ednsdata' matches queries to HEX_EDNS section.
+       ; 'UDP' matches if the transport is UDP.
+       ; 'TCP' matches if the transport is TCP.
+       ; 'ede=2' makes the query match if the EDNS EDE info-code is 2.
+       ;       It also snips the EDE record out of the packet to facilitate
+       ;       other matches.
+       ; 'ede=any' makes the query match any EDNS EDE info-code.
+       ;       It also snips the EDE record out of the packet to facilitate
+       ;       other matches.
        MATCH [opcode] [qtype] [qname] [serial=<value>] [all] [ttl]
        MATCH [UDP|TCP] DO
        MATCH ...
@@ -72,6 +82,12 @@ struct sldns_file_parse_state;
        ; 'sleep=10' sleeps for 10 seconds before giving the answer (TCP is open)
        ADJUST [sleep=<num>]    ; sleep before giving any reply
        ADJUST [packet_sleep=<num>]  ; sleep before this packet in sequence
+       ; 'copy_ednsdata_assume_clientsubnet' copies ednsdata to reply, assumes
+       ; it is clientsubnet and adjusts scopemask to match sourcemask.
+       ADJUST copy_ednsdata_assume_clientsubnet
+       ; 'increment_ecs_scope' increments the ECS scope copied from the
+       ;  sourcemask by one.
+       ADJUST increment_ecs_scope
        SECTION QUESTION
        <RRs, one per line>    ; the RRcount is determined automatically.
        SECTION ANSWER
@@ -167,11 +183,11 @@ struct entry {
        /* match */
        /* How to match an incoming query with this canned reply */
        /** match query opcode with answer opcode */
-       uint8_t match_opcode; 
+       uint8_t match_opcode;
        /** match qtype with answer qtype */
-       uint8_t match_qtype;  
+       uint8_t match_qtype;
        /** match qname with answer qname */
-       uint8_t match_qname;  
+       uint8_t match_qname;
        /** match rcode with answer rcode */
        uint8_t match_rcode;
        /** match question section */
@@ -179,11 +195,17 @@ struct entry {
        /** match answer section */
        uint8_t match_answer;
        /** match qname as subdomain of answer qname */
-       uint8_t match_subdomain;  
+       uint8_t match_subdomain;
        /** match SOA serial number, from auth section */
-       uint8_t match_serial; 
+       uint8_t match_serial;
+       /** match EDNS EDE info-code */
+       uint8_t match_ede;
+       /** match any EDNS EDE info-code */
+       uint8_t match_ede_any;
        /** match all of the packet */
        uint8_t match_all;
+       /** match all of the packet; ignore EDNS */
+       uint8_t match_all_noedns;
        /** match ttls in the packet */
        uint8_t match_ttl;
        /** match DO bit */
@@ -193,9 +215,11 @@ struct entry {
        /** match edns data field given in hex */
        uint8_t match_ednsdata_raw;
        /** match query serial with this value. */
-       uint32_t ixfr_soa_serial; 
+       uint32_t ixfr_soa_serial;
        /** match on UDP/TCP */
-       enum transport_type match_transport; 
+       enum transport_type match_transport;
+       /** match EDNS EDE info-code with this value. */
+       uint16_t ede_info_code;
 
        /** pre canned reply */
        struct reply_packet *reply_list;
@@ -260,10 +284,11 @@ struct entry* find_match(struct entry* entries, uint8_t* query_pkt,
  * @param mttl: if true, ttls must match, if false, ttls do not need to match
  * @param noloc: if true, rrs may be reordered in their packet-section.
  *     rrs are then matches without location of the rr being important.
+ * @param noedns: if true, edns is not compared, if false, edns must match.
  * @return true if matched.
  */
 int match_all(uint8_t* q, size_t qlen, uint8_t* p, size_t plen, int mttl,
-       int noloc);
+       int noloc, int noedns);
 
 /**
  * copy & adjust packet, mallocs a copy.
index 6f1edc6e9d6e559966cc5d7640c50be16ad2849e..a87314019d1fddbf2a2fe9069647bf5fbbc3365b 100644 (file)
@@ -137,7 +137,7 @@ test_buffers(sldns_buffer* pkt, sldns_buffer* out)
        /* compare packets */
        unit_assert(match_all(sldns_buffer_begin(pkt), sldns_buffer_limit(pkt),
                sldns_buffer_begin(out), sldns_buffer_limit(out), 1,
-               matches_nolocation));
+               matches_nolocation, 0));
        return 0;
 }
 
index 9e101324960e50989e8919ad8b279d58452cd88b..ff069a1bb03d1283dd320fb76ed3dff73288fcb8 100644 (file)
@@ -187,7 +187,7 @@ verifytest_rrset(struct module_env* env, struct val_env* ve,
        }
        setup_sigalg(dnskey, sigalg); /* check all algorithms in the dnskey */
        /* ok to give null as qstate here, won't be used for answer section. */
-       sec = dnskeyset_verify_rrset(env, ve, rrset, dnskey, sigalg, &reason,
+       sec = dnskeyset_verify_rrset(env, ve, rrset, dnskey, sigalg, &reason, NULL,
                LDNS_SECTION_ANSWER, NULL);
        if(vsig) {
                printf("verify outcome is: %s %s\n", sec_status_to_string(sec),
index 497dfcf5731c8fdcaa5d9ca587b7e4e381e4f278..1f3fed9570a2323c863c0bf691629100b35bb959 100644 (file)
@@ -4,6 +4,8 @@ server:
        log-time-ascii: yes
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
+
 stub-zone:
        name: "."
        stub-addr: 193.0.14.129         # K.ROOT-SERVERS.NET.
@@ -150,7 +152,7 @@ ENTRY_END
 
 STEP 20 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=9
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 www.example.com. IN A
index 2bf5014e4683af83f6be8506074f3174fe5a7aed..7f6a14d833e5d3ff04cbcdeed6beab73e0c03ae7 100644 (file)
@@ -5,6 +5,8 @@ server:
        log-time-ascii: yes
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
+
 stub-zone:
        name: "."
        stub-addr: 193.0.14.129         # K.ROOT-SERVERS.NET.
@@ -138,7 +140,7 @@ ENTRY_END
 
 STEP 20 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=6
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 www.example.com. IN A
index d3ac6aedf7f236331221e17c97c9c5afc29a6a68..e22cbf71ff96366f59f29c0879034e12f32a78bd 100644 (file)
@@ -4,6 +4,8 @@ server:
        log-time-ascii: yes
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
+
 stub-zone:
        name: "."
        stub-addr: 193.0.14.129         # K.ROOT-SERVERS.NET.
@@ -155,7 +157,7 @@ ENTRY_END
 
 STEP 30 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=9
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 www.example.com. IN A
index 48230050239e947e31a3697ab19a5319ab44441f..7d486ffbc39714e3040c40e90a3a394adee73262 100644 (file)
@@ -4,6 +4,8 @@ server:
        log-time-ascii: yes
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
+
 stub-zone:
        name: "."
        stub-addr: 193.0.14.129         # K.ROOT-SERVERS.NET.
@@ -155,7 +157,7 @@ ENTRY_END
 
 STEP 30 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=6
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 www.example.com. IN A
index e2367a980d3188525c561cc5cd83baa5e23f4889..168dc236d20318658e055f0cd2c41c9156e10cf0 100644 (file)
@@ -6,6 +6,7 @@ server:
        target-fetch-policy: "0 0 0 0 0"
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
 
 stub-zone:
        name: "."
@@ -578,7 +579,7 @@ ENTRY_END
 ; recursion happens here.
 STEP 10 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=7
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 www.sub.example.com. IN A
@@ -595,7 +596,7 @@ ENTRY_END
 
 STEP 120 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=7
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 ftp.sub.example.com. IN A
index 37946c008cfd4f5fb6b0c74947f26562438ac1d7..cd2b0bfbe55707b86006542b470562257d02cac8 100644 (file)
@@ -6,6 +6,7 @@ server:
        target-fetch-policy: "0 0 0 0 0"
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
 
 stub-zone:
        name: "."
@@ -560,7 +561,7 @@ ENTRY_END
 ; recursion happens here.
 STEP 10 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=7
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 www.sub.example.com. IN A
@@ -577,7 +578,7 @@ ENTRY_END
 
 STEP 120 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=7
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 ftp.sub.example.com. IN A
index 8221d2db6b58adcdca5e6acb16582703b451384c..e635ed9cc10bd8c66f8b4daafb5b881589875df8 100644 (file)
@@ -7,6 +7,7 @@ server:
        qname-minimisation: "no"
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
 
 stub-zone:
        name: "."
@@ -285,7 +286,7 @@ ENTRY_END
 ; recursion happens here.
 STEP 10 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=7
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 www.example.com. IN A
@@ -304,7 +305,7 @@ ENTRY_END
 ; recursion happens here.
 STEP 120 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=7
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 ftp.example.com. IN A
diff --git a/testdata/ede.tdir/bogus/clean.sh b/testdata/ede.tdir/bogus/clean.sh
new file mode 100755 (executable)
index 0000000..54128f8
--- /dev/null
@@ -0,0 +1 @@
+rm -f K* piece1 base expired notyetincepted trust-anchors dnssec-failures.test.signed dnskey-failures.test.signed nsec-failures.test.signed rrsig-failures.test.signed
diff --git a/testdata/ede.tdir/bogus/dnskey-failures.test b/testdata/ede.tdir/bogus/dnskey-failures.test
new file mode 100644 (file)
index 0000000..49d6ad5
--- /dev/null
@@ -0,0 +1,10 @@
+$ORIGIN dnskey-failures.test.
+
+@       SOA     ns      hostmaster      (
+                1       ; serial
+                14400   ; refresh (4 hours)
+                1800    ; retry (30 minutes)
+                2419200 ; expire (4 weeks)
+                300     ; minimum (5 minutes)
+)
+        A       192.0.2.1
diff --git a/testdata/ede.tdir/bogus/dnssec-failures.test b/testdata/ede.tdir/bogus/dnssec-failures.test
new file mode 100644 (file)
index 0000000..5af5941
--- /dev/null
@@ -0,0 +1,15 @@
+$ORIGIN dnssec-failures.test.
+
+@       SOA     ns      hostmaster      (
+                1       ; serial
+                14400   ; refresh (4 hours)
+                1800    ; retry (30 minutes)
+                2419200 ; expire (4 weeks)
+                300     ; minimum (5 minutes)
+)
+        NS      ns
+ns      A       192.0.2.1
+notyetincepted  TXT     "Not yet incepted"
+expired         TXT     "Expired"
+sigsinvalid     TXT     "Signatures invalid"
+missingrrsigs   TXT     "Signatures missing"
\ No newline at end of file
diff --git a/testdata/ede.tdir/bogus/make-broken-zone.sh b/testdata/ede.tdir/bogus/make-broken-zone.sh
new file mode 100755 (executable)
index 0000000..3ef42b4
--- /dev/null
@@ -0,0 +1,67 @@
+#!/usr/bin/env bash
+
+# create oudated zones
+CSK=`ldns-keygen -a ECDSAP256SHA256 -k -r /dev/urandom dnssec-failures.test`
+echo $CSK
+
+echo ". IN DS 20326 8 2 e06d44b80b8f1d39a95c0b0d7c65d08458e880409bbc683457104237c7f8ec8d" | \
+       cat $CSK.ds - > bogus/trust-anchors
+
+# differentiate for MacOS with "gdate"
+DATE=date
+which gdate > /dev/null && DATE=gdate
+
+ONEMONTHAGO=`$DATE -d 'now - 1 month' +%Y%m%d`
+YESTERDAY=`$DATE -d 'now - 2 days' +%Y%m%d`
+TOMORROW=`$DATE -d 'now + 2 days' +%Y%m%d`
+
+ldns-signzone -i $YESTERDAY -f - bogus/dnssec-failures.test $CSK | \
+       grep -v '^missingrrsigs\.dnssec-failures\.test\..*IN.*RRSIG.*TXT' | \
+       sed 's/Signatures invalid/Signatures INVALID/g' | \
+       grep -v '^notyetincepted\.dnssec-failures\.test\..*IN.*TXT' | \
+       grep -v '^notyetincepted\.dnssec-failures\.test\..*IN.*RRSIG.*TXT' | \
+       grep -v '^expired\.dnssec-failures\.test\..*IN.*TXT' | \
+       grep -v '^expired\.dnssec-failures\.test\..*IN.*RRSIG.*TXT' > base
+ldns-signzone -i $ONEMONTHAGO -e $YESTERDAY -f - bogus/dnssec-failures.test $CSK | \
+       grep -v '[      ]NSEC[  ]' | \
+       grep '^expired\.dnssec-failures\.test\..*IN.*TXT' > expired
+ldns-signzone -i $TOMORROW -f - bogus/dnssec-failures.test $CSK | \
+       grep -v '[      ]NSEC[  ]' | \
+       grep '^notyetincepted\.dnssec-failures\.test\..*IN.*TXT' > notyetincepted
+
+cat base expired notyetincepted > bogus/dnssec-failures.test.signed
+
+# cleanup old zone keys
+rm -f $CSK.*
+# create zone with DNSKEY missing
+CSK=`ldns-keygen -a ECDSAP256SHA256 -k -r /dev/urandom dnskey-failures.test`
+echo $CSK
+cat $CSK.ds >> bogus/trust-anchors
+
+ldns-signzone -f tmp.signed bogus/dnskey-failures.test $CSK
+grep -v '      DNSKEY  ' tmp.signed > bogus/dnskey-failures.test.signed
+
+
+# cleanup old zone keys
+rm -f $CSK.*
+# create zone with NSEC missing
+CSK=`ldns-keygen -a ECDSAP256SHA256 -k -r /dev/urandom nsec-failures.test`
+echo $CSK
+cat $CSK.ds >> bogus/trust-anchors
+
+ldns-signzone -f tmp.signed bogus/nsec-failures.test $CSK
+grep -v '      NSEC    ' tmp.signed > bogus/nsec-failures.test.signed
+
+
+# cleanup old zone keys
+rm -f $CSK.*
+# create zone with RRSIGs missing
+CSK=`ldns-keygen -a ECDSAP256SHA256 -k -r /dev/urandom rrsig-failures.test`
+echo $CSK
+cat $CSK.ds >> bogus/trust-anchors
+
+ldns-signzone -f tmp.signed bogus/rrsig-failures.test $CSK
+grep -v '      RRSIG   ' tmp.signed > bogus/rrsig-failures.test.signed
+
+# cleanup
+rm -f base expired notyetincepted tmp.signed $CSK.*
diff --git a/testdata/ede.tdir/bogus/nsec-failures.test b/testdata/ede.tdir/bogus/nsec-failures.test
new file mode 100644 (file)
index 0000000..529298d
--- /dev/null
@@ -0,0 +1,10 @@
+$ORIGIN nsec-failures.test.
+
+@       SOA     ns      hostmaster      (
+                1       ; serial
+                14400   ; refresh (4 hours)
+                1800    ; retry (30 minutes)
+                2419200 ; expire (4 weeks)
+                300     ; minimum (5 minutes)
+)
+        A       192.0.2.1
diff --git a/testdata/ede.tdir/bogus/rrsig-failures.test b/testdata/ede.tdir/bogus/rrsig-failures.test
new file mode 100644 (file)
index 0000000..cab0b7f
--- /dev/null
@@ -0,0 +1,10 @@
+$ORIGIN rrsig-failures.test.
+
+@       SOA     ns      hostmaster      (
+                1       ; serial
+                14400   ; refresh (4 hours)
+                1800    ; retry (30 minutes)
+                2419200 ; expire (4 weeks)
+                300     ; minimum (5 minutes)
+)
+        A       192.0.2.1
diff --git a/testdata/ede.tdir/ede-auth.conf b/testdata/ede.tdir/ede-auth.conf
new file mode 100644 (file)
index 0000000..6620cfc
--- /dev/null
@@ -0,0 +1,25 @@
+server:
+        verbosity: 1
+        use-syslog: no
+        chroot: ""
+        username: ""
+        directory: ""
+        local-zone: test nodefault
+        port: @PORT2@
+
+auth-zone:
+        name: "dnssec-failures.test"
+        zonefile: "bogus/dnssec-failures.test.signed"
+
+auth-zone:
+        name: "dnskey-failures.test"
+        zonefile: "bogus/dnskey-failures.test.signed"
+
+auth-zone:
+        name: "nsec-failures.test"
+        zonefile: "bogus/nsec-failures.test.signed"
+
+auth-zone:
+        name: "rrsig-failures.test"
+        zonefile: "bogus/rrsig-failures.test.signed"
+
diff --git a/testdata/ede.tdir/ede.conf b/testdata/ede.tdir/ede.conf
new file mode 100644 (file)
index 0000000..13730d4
--- /dev/null
@@ -0,0 +1,49 @@
+server:
+       verbosity: 2
+       interface: 127.0.0.1
+       port: @PORT@
+       use-syslog: no
+       directory: .
+       pidfile: "unbound.pid"
+       chroot: ""
+       username: ""
+       directory: ""
+       val-log-level: 2
+
+       trust-anchor-file: "bogus/trust-anchors"
+
+       module-config: "respip validator iterator"
+
+       ede: yes
+       access-control: 127.0.0.2/32 refuse
+       access-control: 127.0.0.3/32 allow
+
+       local-zone: hopsa.kidee. always_refuse
+       local-data: "hopsa.kidee. TXT hela hola"
+
+       local-zone: nlnetlabs.nl transparent
+       local-data: "hopsa.nlnetlabs.nl. TXT hela hola"
+
+       local-zone: uva.nl. always_null
+
+       local-zone: example.com redirect
+       local-data: "example.com CNAME *.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaa."
+
+       local-zone: test nodefault
+       do-not-query-localhost: no
+
+forward-zone:
+       name: "dnssec-failures.test"
+       forward-addr: 127.0.0.1@@PORT2@
+
+forward-zone:
+       name: "dnskey-failures.test"
+       forward-addr: 127.0.0.1@@PORT2@
+
+forward-zone:
+       name: "nsec-failures.test"
+       forward-addr: 127.0.0.1@@PORT2@
+
+forward-zone:
+       name: "rrsig-failures.test"
+       forward-addr: 127.0.0.1@@PORT2@
diff --git a/testdata/ede.tdir/ede.dsc b/testdata/ede.tdir/ede.dsc
new file mode 100644 (file)
index 0000000..c397ded
--- /dev/null
@@ -0,0 +1,16 @@
+BaseName: ede
+Version: 1.0
+Description: Test Extended DNS Errors (rfc8914)
+CreationDate: Fri Aug 20 15:42:11 UTC 2021
+Maintainer: Tom Carpay
+Category: 
+Component:
+CmdDepends: 
+Depends:
+Help:
+Pre: ede.pre
+Post: ede.post
+Test: ede.test
+AuxFiles: 
+Passed:
+Failure:
diff --git a/testdata/ede.tdir/ede.post b/testdata/ede.tdir/ede.post
new file mode 100644 (file)
index 0000000..88b26f3
--- /dev/null
@@ -0,0 +1,10 @@
+# #-- ede.post --#
+# source the master var file when it's there
+[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master
+# use .tpkg.var.test for in test variable passing
+[ -f .tpkg.var.test ] && source .tpkg.var.test
+
+# teardown
+. ../common.sh
+kill_pid $UNBOUND_PID
+kill_pid $UNBOUND_PID2
\ No newline at end of file
diff --git a/testdata/ede.tdir/ede.pre b/testdata/ede.tdir/ede.pre
new file mode 100644 (file)
index 0000000..e5a0667
--- /dev/null
@@ -0,0 +1,37 @@
+# #-- ede.pre --#
+# source the master var file when it's there
+[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master
+# use .tpkg.var.test for in test variable passing
+[ -f .tpkg.var.test ] && source .tpkg.var.test
+
+. ../common.sh
+get_random_port 2
+UNBOUND_PORT=$RND_PORT
+UNBOUND_PORT2=$(($RND_PORT + 1))
+echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test
+echo "UNBOUND_PORT2=$UNBOUND_PORT2" >> .tpkg.var.test
+
+# rewrite config file with created ports
+sed -e 's/@PORT\@/'$UNBOUND_PORT'/' < ede.conf > temp.conf
+sed -e 's/@PORT2\@/'$UNBOUND_PORT2'/' < temp.conf > ub.conf
+sed -e 's/@PORT2\@/'$UNBOUND_PORT2'/' < ede-auth.conf > ub2.conf
+
+# create broken dnssec zone
+bogus/make-broken-zone.sh
+
+# start unbound in the background
+PRE="../.."
+$PRE/unbound -d -c ub.conf > unbound.log 2>&1 &
+UNBOUND_PID=$!
+echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test
+
+# start authoritative unbound in the background
+$PRE/unbound -d -c ub2.conf > unbound2.log 2>&1 &
+UNBOUND_PID2=$!
+echo "UNBOUND_PID2=$UNBOUND_PID2" >> .tpkg.var.test
+
+
+cat .tpkg.var.test
+wait_unbound_up unbound.log
+wait_unbound_up unbound2.log
+
diff --git a/testdata/ede.tdir/ede.test b/testdata/ede.tdir/ede.test
new file mode 100644 (file)
index 0000000..5d478bd
--- /dev/null
@@ -0,0 +1,72 @@
+# #-- ede.test --#
+# source the master var file when it's there
+[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master
+# use .tpkg.var.test for in test variable passing
+[ -f .tpkg.var.test ] && source .tpkg.var.test
+
+
+# DNSSEC failure: Signature Expired or DNSKEY Missing (depending on the servfail configuration)
+dig @127.0.0.1 -p $UNBOUND_PORT servfail.nl > servfail.txt
+
+# DNSSEC failure: key not incepted
+dig @127.0.0.1 -p $UNBOUND_PORT notyetincepted.dnssec-failures.test. TXT +dnssec > sig_notyetincepted.txt
+
+if ! grep -q -e "OPT=15: 00 08" -e "EDE: 8" sig_notyetincepted.txt
+then
+       echo "Signature not yet valid does not return EDE Signature Not Yet Valid"
+       cat sig_notyetincepted.txt
+       exit 1
+fi
+
+# DNSSEC failure: key expired
+dig @127.0.0.1 -p $UNBOUND_PORT expired.dnssec-failures.test. TXT +dnssec > sig_expired.txt
+
+if ! grep -q -e "OPT=15: 00 07" -e "EDE: 7"  sig_expired.txt
+then
+       echo "Expired signature does not return EDE Signature expired"
+       cat sig_expired.txt
+       exit 1
+fi
+
+# DNSSEC failure: missing rrsigs
+dig @127.0.0.1 -p $UNBOUND_PORT missingrrsigs.dnssec-failures.test. TXT +dnssec > missingrrsigs.txt
+
+if ! grep -q -e "OPT=15: 00 0a" -e "EDE: 10" missingrrsigs.txt
+then
+       echo "Expired signature does not return EDE RRSIGs missing"
+       cat missingrrsigs.txt
+       exit 1
+fi
+
+# signed zone with DNSKEY missing
+dig @127.0.0.1 -p $UNBOUND_PORT dnskey-failures.test > dnskey-failure.txt
+
+if ! grep -q -e "OPT=15: 00 09" -e "EDE: 9" dnskey-failure.txt
+then
+       echo "Expired signature does not return EDE DNSKEY missing"
+       cat dnskey-failure.txt
+       exit 1
+fi
+
+# signed zone with RRSIGs missing
+dig @127.0.0.1 -p $UNBOUND_PORT rrsig-failures.test > rrsig-failure.txt
+
+if ! grep -q -e "OPT=15: 00 0a" -e "EDE: 10" rrsig-failure.txt
+then
+       echo "Expired signature does not return EDE RRSIGs missing"
+       cat rrsig-failure.txt
+       exit 1
+fi
+
+# signed zone with NSEC missing
+dig @127.0.0.1 -p $UNBOUND_PORT abc.nsec-failures.test > nsec-failure.txt
+
+if ! grep -q -e "OPT=15: 00 0c" -e "EDE: 12" nsec-failure.txt
+then
+       echo "Expired signature does not return EDE NSEC missing"
+       cat nsec-failure.txt
+       exit 1
+fi
+
+
+# @TODO DNSSEC indeterminate when implemented
diff --git a/testdata/ede_acl_refused.rpl b/testdata/ede_acl_refused.rpl
new file mode 100644 (file)
index 0000000..81c9cd0
--- /dev/null
@@ -0,0 +1,35 @@
+; config options
+server:
+       access-control: 127.0.0.0/8 refuse
+       ede: yes
+CONFIG_END
+
+SCENARIO_BEGIN Test ede-acl-refused
+; Scenario overview:
+; - query for example.com. A record with EDNS
+; - check that we get a refused answer with EDE (RFC8914) code 18 - Prohibited
+
+; Query without RD flag
+STEP 1 QUERY
+ENTRY_BEGIN
+       REPLY RD
+       SECTION QUESTION
+               example.com. IN A
+       SECTION ADDITIONAL
+               HEX_EDNSDATA_BEGIN
+           HEX_EDNSDATA_END
+ENTRY_END
+
+; Check that we got ede 18
+STEP 2 CHECK_ANSWER
+ENTRY_BEGIN
+       MATCH all ede=18
+       REPLY QR RD REFUSED
+       SECTION QUESTION
+               example.com. IN A
+       SECTION ADDITIONAL
+               HEX_EDNSDATA_BEGIN
+           HEX_EDNSDATA_END
+ENTRY_END
+
+SCENARIO_END
diff --git a/testdata/ede_cache_snoop_noth_auth.rpl b/testdata/ede_cache_snoop_noth_auth.rpl
new file mode 100644 (file)
index 0000000..d243fdd
--- /dev/null
@@ -0,0 +1,33 @@
+; config options
+server:
+       ede: yes
+CONFIG_END
+
+SCENARIO_BEGIN Test ede-cache-snoop-not-authoritative
+; Scenario overview:
+; - query for example.com. A record with EDNS without the RD bit
+; - check that we get a refused answer with EDE (RFC8914) code 20 - Not Authoritative
+
+; Query without RD flag
+STEP 1 QUERY
+ENTRY_BEGIN
+       SECTION QUESTION
+               example.com. IN A
+       SECTION ADDITIONAL
+               HEX_EDNSDATA_BEGIN
+           HEX_EDNSDATA_END
+ENTRY_END
+
+; Check that we got ede 20
+STEP 10 CHECK_ANSWER
+ENTRY_BEGIN
+       MATCH all ede=20
+       REPLY QR RA REFUSED
+       SECTION QUESTION
+               example.com. IN A
+       SECTION ADDITIONAL
+               HEX_EDNSDATA_BEGIN
+           HEX_EDNSDATA_END
+ENTRY_END
+
+SCENARIO_END
diff --git a/testdata/ede_localzone_dname_expansion.rpl b/testdata/ede_localzone_dname_expansion.rpl
new file mode 100644 (file)
index 0000000..e0540e4
--- /dev/null
@@ -0,0 +1,37 @@
+; config options
+server:
+       local-zone: example.com redirect
+       local-data: "example.com CNAME *.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaa."
+       ede: yes
+
+CONFIG_END
+
+SCENARIO_BEGIN Test ede-localzone-dname-expansion
+; Scenario overview:
+; - query for www.qhqwer.qwer.qwer.h.example.com. (a large Qname) A record with EDNS
+; - check that we get a YXDOMAIN answer with EDE (RFC8914) code 0 - Other (which adds a DNAME expansion message)
+
+; Query with RD flag
+STEP 1 QUERY
+ENTRY_BEGIN
+       REPLY RD
+       SECTION QUESTION
+               www.qhqwer.qwer.qwer.h.example.com A
+       SECTION ADDITIONAL
+               HEX_EDNSDATA_BEGIN
+           HEX_EDNSDATA_END
+ENTRY_END
+
+; Check that we got the correct answer (should be cached)
+STEP 10 CHECK_ANSWER
+ENTRY_BEGIN
+       MATCH all ede=0
+       REPLY QR AA RD RA YXDOMAIN
+       SECTION QUESTION
+               www.qhqwer.qwer.qwer.h.example.com A
+       SECTION ADDITIONAL
+               HEX_EDNSDATA_BEGIN
+           HEX_EDNSDATA_END
+ENTRY_END
+
+SCENARIO_END
index 9d00b6cf762a95f953f6ad3637f3bed8eb527d1d..97c8f2ccaa46ec97b91a9f3ace83745f31612169 100644 (file)
@@ -47,14 +47,10 @@ STEP 1 QUERY
 STEP 10 CHECK_ANSWER
 
      ENTRY_BEGIN
-        MATCH TCP ednsdata
+        MATCH TCP
         REPLY RD FORMERR
         SECTION QUESTION
                 www.example.com. IN A
-        SECTION ADDITIONAL
-                HEX_EDNSDATA_BEGIN
-                        ; Empty
-                HEX_EDNSDATA_END
      ENTRY_END
 
 STEP 20 QUERY
index 1414163f8a6ad322a4a658983de828a72f409eca..7e92266cfa4931617216cf474aa2496faae26f43 100644 (file)
@@ -9,6 +9,7 @@ server:
        trust-anchor-signaling: no
        minimal-responses: no
        nsid: "ascii_hopsa kidee"
+       ede: yes
 
 stub-zone:
        name: "."
@@ -157,7 +158,7 @@ ENTRY_END
 ; recursion happens here.
 STEP 10 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=9
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 www.example.com. IN A
index 2310953adf0f1bc01ab2435eccd6f86c9d632c2f..39bd9685c293314c079d2c072930b13f1cbb72c3 100644 (file)
@@ -4,6 +4,7 @@ server:
        val-override-date: "20180423171826"
        target-fetch-policy: "0 0 0 0 0"
        trust-anchor-signaling: no
+       ede: yes
 
 stub-zone:
        name: "."
@@ -138,7 +139,7 @@ ENTRY_END
 ; recursion happens here.
 STEP 22 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=6
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 root-key-sentinel-not-ta-19036.        IN      A
@@ -154,7 +155,7 @@ ENTRY_END
 ; recursion happens here.
 STEP 33 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=6
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 root-key-sentinel-is-ta-20326. IN      A
index 167470335212c4ca623dc4cc8242077612d7d7de..3f61019fa89f8db8e0049730b472e99ff4d4fa36 100644 (file)
@@ -5,6 +5,8 @@ server:
        minimal-responses: no
        serve-expired: yes
        access-control: 127.0.0.1/32 allow_snoop
+       ede: yes
+       ede-serve-expired: yes
 
 stub-zone:
        name: "example.com"
@@ -78,6 +80,7 @@ STEP 11 TIME_PASSES ELAPSE 3601
 ; Query again without RD bit
 STEP 30 QUERY
 ENTRY_BEGIN
+       REPLY DO
        SECTION QUESTION
                example.com. IN A
 ENTRY_END
@@ -85,8 +88,8 @@ ENTRY_END
 ; Check that we got a stale answer
 STEP 40 CHECK_ANSWER
 ENTRY_BEGIN
-       MATCH all ttl
-       REPLY QR RA NOERROR
+       MATCH all ttl ede=3
+       REPLY QR RA DO NOERROR
        SECTION QUESTION
                example.com. IN A
        SECTION ANSWER
index 3f3163afb8232d5b2731f91543d3be22efb88929..5560aa05a8dd6db40fabc7ff0078e2dd423ce3aa 100644 (file)
@@ -6,6 +6,8 @@ server:
        serve-expired: yes
        serve-expired-client-timeout: 1
        serve-expired-reply-ttl: 123
+       ede: yes
+       ede-serve-expired: yes
 
 stub-zone:
        name: "example.com"
@@ -83,7 +85,7 @@ STEP 11 TIME_PASSES ELAPSE 3600
 ; Query again
 STEP 30 QUERY
 ENTRY_BEGIN
-       REPLY RD
+       REPLY RD DO
        SECTION QUESTION
                example.com. IN A
 ENTRY_END
@@ -94,8 +96,8 @@ STEP 31 TIME_PASSES ELAPSE 1
 ; Check that we got a stale answer
 STEP 40 CHECK_ANSWER
 ENTRY_BEGIN
-       MATCH all ttl
-       REPLY QR RD RA NOERROR
+       MATCH all ttl ede=3
+       REPLY QR RD RA DO NOERROR
        SECTION QUESTION
                example.com. IN A
        SECTION ANSWER
index c45b8383e390378ad0a638b2cafd196f072045af..124fb874df0ee7bcf3588b4ed2573c00a0ac1410 100644 (file)
@@ -5,6 +5,8 @@ server:
        minimal-responses: no
        serve-expired: yes
        serve-expired-reply-ttl: 123
+       ede: yes
+       ede-serve-expired: yes
 
 stub-zone:
        name: "example.com"
@@ -77,7 +79,7 @@ STEP 11 TIME_PASSES ELAPSE 3601
 ; Query again
 STEP 30 QUERY
 ENTRY_BEGIN
-       REPLY RD
+       REPLY RD DO
        SECTION QUESTION
                example.com. IN A
 ENTRY_END
@@ -85,8 +87,8 @@ ENTRY_END
 ; Check that we got a stale answer
 STEP 40 CHECK_ANSWER
 ENTRY_BEGIN
-       MATCH all ttl
-       REPLY QR RD RA NOERROR
+       MATCH all ttl ede=3
+       REPLY QR RD RA DO NOERROR
        SECTION QUESTION
                example.com. IN A
        SECTION ANSWER
index 80ffcde74666110420c3ca56c9260b0fb89ade00..6e3192ef081c80738d384688f22788af0862b048 100644 (file)
@@ -7,6 +7,8 @@ server:
        serve-expired-client-timeout: 1800
        serve-expired-reply-ttl: 123
        log-servfail: yes
+       ede: yes
+       ede-serve-expired: yes
 
 
 stub-zone:
@@ -94,7 +96,7 @@ STEP 11 TIME_PASSES ELAPSE 3601
 ; Query again
 STEP 30 QUERY
 ENTRY_BEGIN
-       REPLY RD
+       REPLY RD DO
        SECTION QUESTION
                example.com. IN A
 ENTRY_END
@@ -102,8 +104,8 @@ ENTRY_END
 ; Check that we got a stale answer
 STEP 40 CHECK_ANSWER
 ENTRY_BEGIN
-       MATCH all ttl
-       REPLY QR RD RA NOERROR
+       MATCH all ttl ede=3
+       REPLY QR RD RA DO NOERROR
        SECTION QUESTION
                example.com. IN A
        SECTION ANSWER
index 846435f3841cd6bd729336d8afb991380cf07479..0239b4a194406634ac5b9052277730e4d647e736 100644 (file)
@@ -5,6 +5,8 @@ server:
        minimal-responses: no
        serve-expired: yes
        serve-expired-reply-ttl: 123
+       ede: yes
+       ede-serve-expired: yes
 
 stub-zone:
        name: "example.com"
@@ -128,7 +130,7 @@ STEP 30 TIME_PASSES ELAPSE 11
 ; Query with RD flag
 STEP 40 QUERY
 ENTRY_BEGIN
-       REPLY RD
+       REPLY RD DO
        SECTION QUESTION
                example.com. IN A
 ENTRY_END
@@ -136,8 +138,8 @@ ENTRY_END
 ; Check that we got the correct answer
 STEP 49 CHECK_ANSWER
 ENTRY_BEGIN
-       MATCH all ttl
-       REPLY QR RD RA NOERROR
+       MATCH all ttl ede=3
+       REPLY QR RD RA DO NOERROR
        SECTION QUESTION
                example.com. IN A
        SECTION ANSWER
index 630fb39a4ef006ca2296aa27b447d479fcd26d62..24d01b6fee1e12d6ac9974f6cec0401c460811f8 100644 (file)
@@ -9,6 +9,8 @@ server:
        cache-min-ttl: 20
        serve-expired: yes
        serve-expired-reply-ttl: 123
+       ede: yes
+       ede-serve-expired: yes
 
 stub-zone:
        name: "example.com"
@@ -110,7 +112,7 @@ STEP 31 TIME_PASSES ELAPSE 3601
 ; Query again
 STEP 40 QUERY
 ENTRY_BEGIN
-       REPLY
+       REPLY DO
        SECTION QUESTION
                example.com. IN A
 ENTRY_END
@@ -118,8 +120,8 @@ ENTRY_END
 ; Check that we got a stale answer with the original TTL
 STEP 50 CHECK_ANSWER
 ENTRY_BEGIN
-       MATCH all ttl
-       REPLY QR RA NOERROR
+       MATCH all ttl ede=3
+       REPLY QR RA DO NOERROR
        SECTION QUESTION
                example.com. IN A
        SECTION ANSWER
index cfd0d72c8f46e42d76bdc8c8e3a0a3ac6782ab38..6a0552ec540432aeec16142376f25f58268e5f7a 100644 (file)
@@ -5,6 +5,7 @@ server:
        val-override-date: "20091113091234"
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
 
 forward-zone:
        name: "."
@@ -88,7 +89,7 @@ ENTRY_END
 ; recursion happens here.
 STEP 10 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=9
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 www.example.com. IN AAAA
index c1346ceb491da773551ea8ec76241359f05e5c17..48158162cba6dff168f488414b6c68a3f836eee4 100644 (file)
@@ -8,6 +8,7 @@ server:
        qname-minimisation: "no"
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
 
 stub-zone:
        name: "."
@@ -254,12 +255,11 @@ ENTRY_END
 ; recursion happens here.
 STEP 10 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=10
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 www.example.com. IN A
 SECTION ANSWER
-SECTION ADDITIONAL
 ENTRY_END
 
 SCENARIO_END
index 343c3e2bbed85a3a9a97710588174d63ca515486..2975bd8d2a036c08533d3ce57198d0fbe25a59d5 100644 (file)
@@ -8,6 +8,7 @@ server:
        qname-minimisation: "no"
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
 
 stub-zone:
        name: "."
@@ -253,13 +254,11 @@ ENTRY_END
 ; recursion happens here.
 STEP 10 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=6
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 www.example.com. IN A
 SECTION ANSWER
-SECTION AUTHORITY
-SECTION ADDITIONAL
 ENTRY_END
 
 SCENARIO_END
index 6e8f1bd8379158b7dfdc46b00b7c72e9a0972be5..82348d95b7f9624f25eb037ab07f84d13597eb95 100644 (file)
@@ -7,6 +7,7 @@ server:
        qname-minimisation: "no"
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
 
 stub-zone:
        name: "."
@@ -261,7 +262,7 @@ ENTRY_END
 ; recursion happens here.
 STEP 10 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=10
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 foo.www.example.com. IN A
index b011af88a4def42e0e25017f7f4814f67f3432a1..1a0e41ecff0ba1a33ad0f0eec9eb3679fbe10877 100644 (file)
@@ -8,6 +8,7 @@ server:
        qname-minimisation: "no"
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
 
 stub-zone:
        name: "."
@@ -256,13 +257,11 @@ ENTRY_END
 ; recursion happens here.
 STEP 10 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=6
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 www.sub.example.com. IN A
 SECTION ANSWER
-SECTION AUTHORITY
-SECTION ADDITIONAL
 ENTRY_END
 
 SCENARIO_END
index 7c3e41be3560537c972a8d95162ba7aaa07e1a9f..3b88fb5a25a67b62af0af4dd22faa75a9cf72f2a 100644 (file)
@@ -7,6 +7,7 @@ server:
        qname-minimisation: "no"
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
 
 stub-zone:
        name: "."
@@ -195,11 +196,10 @@ ENTRY_END
 ; recursion happens here.
 STEP 10 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=10
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 www.example.com. IN A
-SECTION ANSWER
 ENTRY_END
 
 SCENARIO_END
index 4c3139ac5e013e70bf800a823021267674a15a03..52808212096891ce6b798c1d83fba7f1dd373c9f 100644 (file)
@@ -7,6 +7,7 @@ server:
        # test that default value of harden-dnssec-stripped is still yes.
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
 
 stub-zone:
        name: "."
@@ -160,7 +161,7 @@ ENTRY_END
 ; recursion happens here.
 STEP 10 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=9
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 www.example.com. IN A
index f1be6636c1e9648005a56c5f989739ecfbd0471f..0c4426bc10549b23fa6a1a92469ff3f67c0b93cb 100644 (file)
@@ -7,6 +7,7 @@ server:
        qname-minimisation: "no"
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
 
 stub-zone:
        name: "."
@@ -154,13 +155,11 @@ ENTRY_END
 ; recursion happens here.
 STEP 10 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=6
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 www.example.com. IN A
 SECTION ANSWER
-SECTION AUTHORITY
-SECTION ADDITIONAL
 ENTRY_END
 
 SCENARIO_END
index f9c810951afe2171a343a1e24b3c00f6fbcca1e6..3aa8212c893219750506c4019cdca97de9cc8f46 100644 (file)
@@ -7,6 +7,8 @@ server:
        qname-minimisation: "no"
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
+
 stub-zone:
        name: "nsecwc.nlnetlabs.nl"
        stub-addr: "185.49.140.60"
@@ -60,13 +62,11 @@ ENTRY_END
 ; recursion happens here.
 STEP 10 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=6
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 _25._tcp.mail.nsecwc.nlnetlabs.nl. IN   TLSA
 SECTION ANSWER
-SECTION AUTHORITY
-SECTION ADDITIONAL
 ENTRY_END
 
 SCENARIO_END
index 4675a382bc99ecee28620165f4c7114f1d56abfd..5d37274207994a6466b44fd81155a5d0eea9f964 100644 (file)
@@ -6,6 +6,7 @@ server:
        target-fetch-policy: "0 0 0 0 0"
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
 
 stub-zone:
        name: "."
@@ -153,7 +154,7 @@ ENTRY_END
 
 STEP 10 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=9
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 www.example.com. IN A
index 6c77421a2603d03510d8223fe722f123ed6ba071..0ff135af6bbaa83246ad749d74a9b9438cfbcab3 100644 (file)
@@ -6,6 +6,7 @@ server:
        qname-minimisation: "no"
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
 
 stub-zone:
        name: "."
@@ -133,7 +134,7 @@ ENTRY_END
 ; recursion happens here.
 STEP 10 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=6
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 a.c.x.w.example. IN A
@@ -145,7 +146,6 @@ SECTION AUTHORITY
 ; 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. RRSIG   NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example.  OSgWSm26B+cS+dDL8b5QrWr/dEWhtCsKlwKL IBHYH6blRxK9rC0bMJPwQ4mLIuw85H2EY762 BOCXJZMnpuwhpA== )
 ; b4um86eghhds6nea196smvmlo4ors995.example. NSEC3 1 1 12 aabbccdd ( gjeqe526plbf1g8mklp59enfd789njgi MX RRSIG )
 ; b4um86eghhds6nea196smvmlo4ors995.example. RRSIG   NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example.  ZkPG3M32lmoHM6pa3D6gZFGB/rhL//Bs3Omh 5u4m/CUiwtblEVOaAKKZd7S959OeiX43aLX3 pOv0TSTyiTxIZg== )
-SECTION ADDITIONAL
 ENTRY_END
 
 SCENARIO_END
index 43d815e76e83a28fef1b640faadec7583d10a3e2..b47643b25564dd2c02a8f88977740e60bc2d2ad1 100644 (file)
@@ -5,6 +5,7 @@ server:
        target-fetch-policy: "0 0 0 0 0"
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
 
 stub-zone:
        name: "."
@@ -127,13 +128,11 @@ ENTRY_END
 ; recursion happens here.
 STEP 10 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=12
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 ns1.example.        IN MX
 SECTION ANSWER
-SECTION AUTHORITY
-SECTION ADDITIONAL
 ENTRY_END
 
 SCENARIO_END
index 7bf202e3abbb84784b05ebf013d163618ffdfd60..b672bd6e6cc231bfa63f7a0228926f35f1b29a7e 100644 (file)
@@ -6,6 +6,7 @@ server:
        target-fetch-policy: "0 0 0 0 0"
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
 
 stub-zone:
        name: "."
@@ -186,13 +187,11 @@ ENTRY_END
 ; recursion happens here.
 STEP 10 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=6
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 ent.example.com. IN A
 SECTION ANSWER
-SECTION AUTHORITY
-SECTION ADDITIONAL
 ENTRY_END
 
 SCENARIO_END
index 1c37d21e12f551d6679a929e510ac7c643ed763d..79290d659ae762b3444b6c312dfe34b9dc942887 100644 (file)
@@ -7,6 +7,7 @@ server:
        qname-minimisation: "no"
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
 
 stub-zone:
        name: "."
@@ -226,13 +227,11 @@ ENTRY_END
 ; recursion happens here.
 STEP 10 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=7
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 www.sub.example.com. IN A
 SECTION ANSWER
-SECTION AUTHORITY
-SECTION ADDITIONAL
 ENTRY_END
 
 SCENARIO_END
index eb2f5ba7e421bee640ab8f0d3c63b38c16f42b5d..645a6b4c9728f8a442a24c814f79a8dd94c0f03f 100644 (file)
@@ -7,6 +7,8 @@ server:
        qname-minimisation: "no"
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
+
 stub-zone:
        name: "nsecwc.nlnetlabs.nl"
        stub-addr: "185.49.140.60"
@@ -58,13 +60,11 @@ ENTRY_END
 ; recursion happens here.
 STEP 10 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=6
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 a.nsecwc.nlnetlabs.nl. IN   TXT
 SECTION ANSWER
-SECTION AUTHORITY
-SECTION ADDITIONAL
 ENTRY_END
 
 SCENARIO_END
index c63d4da5c3d8509bf4d78524cb255ba1de68b6f9..e5046bc1a445da4bfac1091db0c21a2d6293d65e 100644 (file)
@@ -7,6 +7,7 @@ server:
        qname-minimisation: "no"
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
 
 stub-zone:
        name: "."
@@ -154,13 +155,11 @@ ENTRY_END
 ; recursion happens here.
 STEP 10 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=6
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 www.example.com. IN A
 SECTION ANSWER
-SECTION AUTHORITY
-SECTION ADDITIONAL
 ENTRY_END
 
 SCENARIO_END
index 453cfa6ad4961f4858dccc6ca566e3a6a445a31f..69f83a393c1055bd1f115c73da50214f09609ec0 100644 (file)
@@ -6,6 +6,7 @@ server:
        target-fetch-policy: "0 0 0 0 0"
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
 
 stub-zone:
        name: "."
@@ -223,7 +224,7 @@ ENTRY_END
 ; recursion happens here.
 STEP 10 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=10
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 www.sub.example.com. IN A
index a905c223bb20ace6442da226562b8fcd19e51fc2..9efb24266c05b877bb681d70e5e30dc3f6529b10 100644 (file)
@@ -10,6 +10,7 @@ server:
        harden-algo-downgrade: yes
        fake-sha1: yes
        trust-anchor-signaling: no
+       ede: yes
 
 stub-zone:
        name: "."
@@ -165,7 +166,7 @@ ENTRY_END
 ; recursion happens here.
 STEP 10 CHECK_ANSWER
 ENTRY_BEGIN
-MATCH all
+MATCH all ede=9
 REPLY QR RD RA DO SERVFAIL
 SECTION QUESTION
 www.example.com. IN A
index 19a44d8340c081fea4f7fedf728dfc3db3b3f8ef..ec1a0387efe430826773a19865dd4a27b2b76bff 100644 (file)
@@ -268,6 +268,7 @@ config_create(void)
        cfg->serve_expired_ttl_reset = 0;
        cfg->serve_expired_reply_ttl = 30;
        cfg->serve_expired_client_timeout = 0;
+       cfg->ede_serve_expired = 0;
        cfg->serve_original_ttl = 0;
        cfg->zonemd_permissive_mode = 0;
        cfg->add_holddown = 30*24*3600;
@@ -376,6 +377,7 @@ config_create(void)
        cfg->ipset_name_v4 = NULL;
        cfg->ipset_name_v6 = NULL;
 #endif
+       cfg->ede = 0;
        return cfg;
 error_exit:
        config_delete(cfg);
@@ -670,6 +672,8 @@ int config_set_option(struct config_file* cfg, const char* opt,
        else if(strcmp(opt, "serve-expired-reply-ttl:") == 0)
        { IS_NUMBER_OR_ZERO; cfg->serve_expired_reply_ttl = atoi(val); SERVE_EXPIRED_REPLY_TTL=(time_t)cfg->serve_expired_reply_ttl;}
        else S_NUMBER_OR_ZERO("serve-expired-client-timeout:", serve_expired_client_timeout)
+       else S_YNO("ede:", ede) 
+       else S_YNO("ede_serve-expired:", ede_serve_expired)
        else S_YNO("serve-original-ttl:", serve_original_ttl)
        else S_STR("val-nsec3-keysize-iterations:", val_nsec3_key_iterations)
        else S_YNO("zonemd-permissive-mode:", zonemd_permissive_mode)
@@ -1111,6 +1115,8 @@ config_get_option(struct config_file* cfg, const char* opt,
        else O_YNO(opt, "serve-expired-ttl-reset", serve_expired_ttl_reset)
        else O_DEC(opt, "serve-expired-reply-ttl", serve_expired_reply_ttl)
        else O_DEC(opt, "serve-expired-client-timeout", serve_expired_client_timeout)
+       else O_YNO(opt, "ede", ede)
+       else O_YNO(opt, "ede-serve-expired", ede_serve_expired)
        else O_YNO(opt, "serve-original-ttl", serve_original_ttl)
        else O_STR(opt, "val-nsec3-keysize-iterations",val_nsec3_key_iterations)
        else O_YNO(opt, "zonemd-permissive-mode", zonemd_permissive_mode)
@@ -2486,7 +2492,7 @@ char* cfg_ptr_reverse(char* str)
        while(*ip_end && isspace((unsigned char)*ip_end))
                ip_end++;
        if(name>ip_end) {
-               snprintf(buf+strlen(buf), sizeof(buf)-strlen(buf), "%.*s", 
+               snprintf(buf+strlen(buf), sizeof(buf)-strlen(buf), "%.*s",
                        (int)(name-ip_end), ip_end);
        }
        snprintf(buf+strlen(buf), sizeof(buf)-strlen(buf), " PTR %s", name);
@@ -2557,126 +2563,6 @@ void w_config_adjust_directory(struct config_file* cfg)
 }
 #endif /* UB_ON_WINDOWS */
 
-void errinf(struct module_qstate* qstate, const char* str)
-{
-       struct config_strlist* p;
-       if((qstate->env->cfg->val_log_level < 2 && !qstate->env->cfg->log_servfail) || !str)
-               return;
-       p = (struct config_strlist*)regional_alloc(qstate->region, sizeof(*p));
-       if(!p) {
-               log_err("malloc failure in validator-error-info string");
-               return;
-       }
-       p->next = NULL;
-       p->str = regional_strdup(qstate->region, str);
-       if(!p->str) {
-               log_err("malloc failure in validator-error-info string");
-               return;
-       }
-       /* add at end */
-       if(qstate->errinf) {
-               struct config_strlist* q = qstate->errinf;
-               while(q->next) 
-                       q = q->next;
-               q->next = p;
-       } else  qstate->errinf = p;
-}
-
-void errinf_origin(struct module_qstate* qstate, struct sock_list *origin)
-{
-       struct sock_list* p;
-       if(qstate->env->cfg->val_log_level < 2 && !qstate->env->cfg->log_servfail)
-               return;
-       for(p=origin; p; p=p->next) {
-               char buf[256];
-               if(p == origin)
-                       snprintf(buf, sizeof(buf), "from ");
-               else    snprintf(buf, sizeof(buf), "and ");
-               if(p->len == 0)
-                       snprintf(buf+strlen(buf), sizeof(buf)-strlen(buf), 
-                               "cache");
-               else 
-                       addr_to_str(&p->addr, p->len, buf+strlen(buf),
-                               sizeof(buf)-strlen(buf));
-               errinf(qstate, buf);
-       }
-}
-
-char* errinf_to_str_bogus(struct module_qstate* qstate)
-{
-       char buf[20480];
-       char* p = buf;
-       size_t left = sizeof(buf);
-       struct config_strlist* s;
-       char dname[LDNS_MAX_DOMAINLEN+1];
-       char t[16], c[16];
-       sldns_wire2str_type_buf(qstate->qinfo.qtype, t, sizeof(t));
-       sldns_wire2str_class_buf(qstate->qinfo.qclass, c, sizeof(c));
-       dname_str(qstate->qinfo.qname, dname);
-       snprintf(p, left, "validation failure <%s %s %s>:", dname, t, c);
-       left -= strlen(p); p += strlen(p);
-       if(!qstate->errinf)
-               snprintf(p, left, " misc failure");
-       else for(s=qstate->errinf; s; s=s->next) {
-               snprintf(p, left, " %s", s->str);
-               left -= strlen(p); p += strlen(p);
-       }
-       p = strdup(buf);
-       if(!p)
-               log_err("malloc failure in errinf_to_str");
-       return p;
-}
-
-char* errinf_to_str_servfail(struct module_qstate* qstate)
-{
-       char buf[20480];
-       char* p = buf;
-       size_t left = sizeof(buf);
-       struct config_strlist* s;
-       char dname[LDNS_MAX_DOMAINLEN+1];
-       char t[16], c[16];
-       sldns_wire2str_type_buf(qstate->qinfo.qtype, t, sizeof(t));
-       sldns_wire2str_class_buf(qstate->qinfo.qclass, c, sizeof(c));
-       dname_str(qstate->qinfo.qname, dname);
-       snprintf(p, left, "SERVFAIL <%s %s %s>:", dname, t, c);
-       left -= strlen(p); p += strlen(p);
-       if(!qstate->errinf)
-               snprintf(p, left, " misc failure");
-       else for(s=qstate->errinf; s; s=s->next) {
-               snprintf(p, left, " %s", s->str);
-               left -= strlen(p); p += strlen(p);
-       }
-       p = strdup(buf);
-       if(!p)
-               log_err("malloc failure in errinf_to_str");
-       return p;
-}
-
-void errinf_rrset(struct module_qstate* qstate, struct ub_packed_rrset_key *rr)
-{
-       char buf[1024];
-       char dname[LDNS_MAX_DOMAINLEN+1];
-       char t[16], c[16];
-       if((qstate->env->cfg->val_log_level < 2 && !qstate->env->cfg->log_servfail) || !rr)
-               return;
-       sldns_wire2str_type_buf(ntohs(rr->rk.type), t, sizeof(t));
-       sldns_wire2str_class_buf(ntohs(rr->rk.rrset_class), c, sizeof(c));
-       dname_str(rr->rk.dname, dname);
-       snprintf(buf, sizeof(buf), "for <%s %s %s>", dname, t, c);
-       errinf(qstate, buf);
-}
-
-void errinf_dname(struct module_qstate* qstate, const char* str, uint8_t* dname)
-{
-       char b[1024];
-       char buf[LDNS_MAX_DOMAINLEN+1];
-       if((qstate->env->cfg->val_log_level < 2 && !qstate->env->cfg->log_servfail) || !str || !dname)
-               return;
-       dname_str(dname, buf);
-       snprintf(b, sizeof(b), "%s %s", str, buf);
-       errinf(qstate, b);
-}
-
 int options_remote_is_address(struct config_file* cfg)
 {
        if(!cfg->remote_control_enable) return 0;
index 54628c0c8befaeed6b2aa917758786aed7846e6b..0b457e3476b91b4629cb3ae18f4bc618d4b20955 100644 (file)
@@ -41,6 +41,7 @@
 
 #ifndef UTIL_CONFIG_FILE_H
 #define UTIL_CONFIG_FILE_H
+#include "sldns/rrdef.h"
 struct config_stub;
 struct config_auth;
 struct config_view;
@@ -406,6 +407,8 @@ struct config_file {
        /** serve expired entries only after trying to update the entries and this
         *  timeout (in milliseconds) is reached */
        int serve_expired_client_timeout;
+       /** serve EDE code 3 - Stale Answer (RFC8914) for expired entries */
+       int ede_serve_expired;
        /** serve original TTLs rather than decrementing ones */
        int serve_original_ttl;
        /** nsec3 maximum iterations per key size, string */
@@ -679,6 +682,8 @@ struct config_file {
        char* ipset_name_v4;
        char* ipset_name_v6;
 #endif
+       /** respond with Extended DNS Errors (RFC8914) */
+       int ede;
 };
 
 /** from cfg username, after daemonize setup performed */
@@ -1241,56 +1246,6 @@ char* fname_after_chroot(const char* fname, struct config_file* cfg,
  */
 char* cfg_ptr_reverse(char* str);
 
-/**
- * Append text to the error info for validation.
- * @param qstate: query state.
- * @param str: copied into query region and appended.
- * Failures to allocate are logged.
- */
-void errinf(struct module_qstate* qstate, const char* str);
-
-/**
- * Append text to error info:  from 1.2.3.4
- * @param qstate: query state.
- * @param origin: sock list with origin of trouble. 
- *     Every element added.
- *     If NULL: nothing is added.
- *     if 0len element: 'from cache' is added.
- */
-void errinf_origin(struct module_qstate* qstate, struct sock_list *origin);
-
-/**
- * Append text to error info:  for RRset name type class
- * @param qstate: query state.
- * @param rr: rrset_key.
- */
-void errinf_rrset(struct module_qstate* qstate, struct ub_packed_rrset_key *rr);
-
-/**
- * Append text to error info:  str dname
- * @param qstate: query state.
- * @param str: explanation string
- * @param dname: the dname.
- */
-void errinf_dname(struct module_qstate* qstate, const char* str, 
-       uint8_t* dname);
-
-/**
- * Create error info in string.  For validation failures.
- * @param qstate: query state.
- * @return string or NULL on malloc failure (already logged).
- *    This string is malloced and has to be freed by caller.
- */
-char* errinf_to_str_bogus(struct module_qstate* qstate);
-
-/**
- * Create error info in string.  For other servfails.
- * @param qstate: query state.
- * @return string or NULL on malloc failure (already logged).
- *    This string is malloced and has to be freed by caller.
- */
-char* errinf_to_str_servfail(struct module_qstate* qstate);
-
 /**
  * Used during options parsing
  */
index 7a052201d82c1cb7948b98f91d037ccfc9dad76f..ca7337262f0f27a7f9a6b1706e6095cdf828c051 100644 (file)
@@ -1,7 +1,7 @@
 #include "config.h"
 #include "util/configyyrename.h"
 
-#line 2 "<stdout>"
+#line 3 "<stdout>"
 
 #define  YY_INT_ALIGNED short int
 
@@ -9,8 +9,8 @@
 
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 6
-#define YY_FLEX_SUBMINOR_VERSION 4
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 35
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -48,6 +48,7 @@ typedef int16_t flex_int16_t;
 typedef uint16_t flex_uint16_t;
 typedef int32_t flex_int32_t;
 typedef uint32_t flex_uint32_t;
+typedef uint64_t flex_uint64_t;
 #else
 typedef signed char flex_int8_t;
 typedef short int flex_int16_t;
@@ -55,6 +56,7 @@ typedef int flex_int32_t;
 typedef unsigned char flex_uint8_t; 
 typedef unsigned short int flex_uint16_t;
 typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
 
 /* Limits of integral types. */
 #ifndef INT8_MIN
@@ -85,61 +87,63 @@ typedef unsigned int flex_uint32_t;
 #define UINT32_MAX             (4294967295U)
 #endif
 
-#ifndef SIZE_MAX
-#define SIZE_MAX               (~(size_t)0)
-#endif
+#endif /* ! FLEXINT_H */
 
-#endif /* ! C99 */
+#ifdef __cplusplus
 
-#endif /* ! FLEXINT_H */
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
 
-/* begin standard C++ headers. */
+#else  /* ! __cplusplus */
 
-/* TODO: this is always defined, so inline it */
-#define yyconst const
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
 
-#if defined(__GNUC__) && __GNUC__ >= 3
-#define yynoreturn __attribute__((__noreturn__))
+#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. */
 #define YY_NULL 0
 
-/* Promotes a possibly negative, possibly signed char to an
- *   integer in range [0..255] for use as an array index.
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
  */
-#define YY_SC_TO_UI(c) ((YY_CHAR) (c))
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
 
 /* Enter a start condition.  This macro really ought to take a parameter,
  * but we do it the disgusting crufty way forced on us by the ()-less
  * definition of BEGIN.
  */
 #define BEGIN (yy_start) = 1 + 2 *
+
 /* Translate the current start state into a value that can be later handed
  * to BEGIN to return to the state.  The YYSTATE alias is for lex
  * compatibility.
  */
 #define YY_START (((yy_start) - 1) / 2)
 #define YYSTATE YY_START
+
 /* Action number for EOF rule of a given start state. */
 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
 /* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE yyrestart( yyin  )
+#define YY_NEW_FILE yyrestart(yyin  )
+
 #define YY_END_OF_BUFFER_CHAR 0
 
 /* Size of default input buffer. */
 #ifndef YY_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k.
- * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
- * Ditto for the __ia64__ case accordingly.
- */
-#define YY_BUF_SIZE 32768
-#else
 #define YY_BUF_SIZE 16384
-#endif /* __ia64__ */
 #endif
 
 /* The state buf must be large enough to hold one state per character in the main buffer.
@@ -156,16 +160,15 @@ 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;
 
 #define EOB_ACT_CONTINUE_SCAN 0
 #define EOB_ACT_END_OF_FILE 1
 #define EOB_ACT_LAST_MATCH 2
-    
+
     #define YY_LESS_LINENO(n)
-    #define YY_LINENO_REWIND_TO(ptr)
     
 /* Return all but the first "n" matched characters back to the input stream. */
 #define yyless(n) \
@@ -180,6 +183,7 @@ extern FILE *yyin, *yyout;
                YY_DO_BEFORE_ACTION; /* set up yytext again */ \
                } \
        while ( 0 )
+
 #define unput(c) yyunput( c, (yytext_ptr)  )
 
 #ifndef YY_STRUCT_YY_BUFFER_STATE
@@ -194,12 +198,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
@@ -222,7 +226,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.
         */
@@ -250,7 +254,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
@@ -261,6 +265,7 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
                           : NULL)
+
 /* Same as previous macro, but useful when we know that the buffer stack is not
  * NULL or when we need an lvalue. For internal use only.
  */
@@ -268,11 +273,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 */
 
@@ -281,68 +286,71 @@ static int yy_start = 0;  /* start state number */
  */
 static int yy_did_buffer_switch_on_eof;
 
-void yyrestart ( FILE *input_file  );
-void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer  );
-YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size  );
-void yy_delete_buffer ( YY_BUFFER_STATE b  );
-void yy_flush_buffer ( YY_BUFFER_STATE b  );
-void yypush_buffer_state ( YY_BUFFER_STATE new_buffer  );
-void yypop_buffer_state ( void );
+void yyrestart (FILE *input_file  );
+void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
+YY_BUFFER_STATE yy_create_buffer (FILE *file,int size  );
+void yy_delete_buffer (YY_BUFFER_STATE b  );
+void yy_flush_buffer (YY_BUFFER_STATE b  );
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer  );
+void yypop_buffer_state (void );
+
+static void yyensure_buffer_stack (void );
+static void yy_load_buffer_state (void );
+static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
 
-static void yyensure_buffer_stack ( void );
-static void yy_load_buffer_state ( void );
-static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file  );
-#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER )
+#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
 
-YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size  );
-YY_BUFFER_STATE yy_scan_string ( const char *yy_str  );
-YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len  );
+YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
+YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len  );
 
-void *yyalloc ( yy_size_t  );
-void *yyrealloc ( void *, yy_size_t  );
-void yyfree ( void *  );
+void *yyalloc (yy_size_t  );
+void *yyrealloc (void *,yy_size_t  );
+void yyfree (void *  );
 
 #define yy_new_buffer yy_create_buffer
+
 #define yy_set_interactive(is_interactive) \
        { \
        if ( ! YY_CURRENT_BUFFER ){ \
         yyensure_buffer_stack (); \
                YY_CURRENT_BUFFER_LVALUE =    \
-            yy_create_buffer( yyin, YY_BUF_SIZE ); \
+            yy_create_buffer(yyin,YY_BUF_SIZE ); \
        } \
        YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
        }
+
 #define yy_set_bol(at_bol) \
        { \
        if ( ! YY_CURRENT_BUFFER ){\
         yyensure_buffer_stack (); \
                YY_CURRENT_BUFFER_LVALUE =    \
-            yy_create_buffer( yyin, YY_BUF_SIZE ); \
+            yy_create_buffer(yyin,YY_BUF_SIZE ); \
        } \
        YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
        }
+
 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
 
 /* Begin user sect3 */
-typedef flex_uint8_t YY_CHAR;
 
-FILE *yyin = NULL, *yyout = NULL;
+typedef unsigned char YY_CHAR;
+
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
 
 typedef int yy_state_type;
 
 extern int yylineno;
+
 int yylineno = 1;
 
 extern char *yytext;
-#ifdef yytext_ptr
-#undef yytext_ptr
-#endif
 #define yytext_ptr yytext
 
-static yy_state_type yy_get_previous_state ( void );
-static yy_state_type yy_try_NUL_trans ( yy_state_type current_state  );
-static int yy_get_next_buffer ( void );
-static void yynoreturn yy_fatal_error ( const char* msg  );
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (yyconst char msg[]  );
 
 /* Done after the current pattern has been matched and before the
  * corresponding action - sets up yytext.
@@ -350,12 +358,13 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 #define YY_DO_BEFORE_ACTION \
        (yytext_ptr) = yy_bp; \
        (yytext_ptr) -= (yy_more_len); \
-       yyleng = (int) (yy_cp - (yytext_ptr)); \
+       yyleng = (yy_size_t) (yy_cp - (yytext_ptr)); \
        (yy_hold_char) = *yy_cp; \
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 359
-#define YY_END_OF_BUFFER 360
+
+#define YY_NUM_RULES 361
+#define YY_END_OF_BUFFER 362
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -363,403 +372,405 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[3565] =
+static yyconst flex_int16_t yy_accept[3582] =
     {   0,
-        1,    1,  333,  333,  337,  337,  341,  341,  345,  345,
-        1,    1,  349,  349,  353,  353,  360,  357,    1,  331,
-      331,  358,    2,  358,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  333,  334,  334,  335,
-      358,  337,  338,  338,  339,  358,  344,  341,  342,  342,
-      343,  358,  345,  346,  346,  347,  358,  356,  332,    2,
-      336,  358,  356,  352,  349,  350,  350,  351,  358,  353,
-      354,  354,  355,  358,  357,    0,    1,    2,    2,    2,
-        2,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  333,
-        0,  337,    0,  344,    0,  341,  345,    0,  356,    0,
-        2,    2,  356,  352,    0,  349,  353,    0,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  356,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  131,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      141,  357,  357,  357,  357,  357,  357,  357,  356,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  113,  357,
-      330,  357,  357,  357,  357,  357,  357,  357,  357,    8,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      132,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  146,  357,  357,  356,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  323,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  356,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,   68,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  252,  357,   14,
-       15,  357,   19,   18,  357,  357,  236,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      139,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  234,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,    3,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  356,  357,  357,
-      357,  357,  357,  357,  357,  317,  357,  357,  316,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  340,  357,
-
-      357,  357,  357,  357,  357,  357,  357,   67,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,   71,  357,  286,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  324,  325,  357,  357,
-      357,  357,  357,  357,  357,  357,   72,  357,  357,  140,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  135,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  223,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,   21,  357,
-
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      166,  357,  357,  357,  357,  357,  356,  340,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  111,
-      357,  357,  357,  357,  357,  357,  357,  294,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  192,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  165,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  110,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,   35,  357,  357,  357,  357,  357,
-
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,   36,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,   69,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  138,  357,  357,  357,  356,  357,
-      357,  357,  357,  357,  130,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-       70,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  256,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  193,  357,  357,
-
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,   57,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  274,  357,  357,  357,  357,  357,  357,
-
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,   62,  357,   63,  357,  357,  357,
-      357,  357,  114,  357,  115,  357,  357,  357,  357,  357,
-      112,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,    7,  357,  357,  357,  357,  356,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  245,  357,  357,
-      357,  357,  169,  357,  357,  357,  357,  357,  357,  357,
-
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  257,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,   48,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,   58,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  215,  357,  214,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-
-      357,  357,  357,  357,  357,  357,  357,   16,   17,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,   73,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  222,  357,  357,  357,
-      357,  357,  357,  117,  357,  116,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  206,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  147,  357,  357,  357,  356,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  105,  357,  357,  357,
-
-      357,  357,  357,  357,  357,  357,   93,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  235,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,   98,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,   66,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  209,  210,  357,  357,  357,
-
-      288,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,    6,  357,  357,  357,  357,  357,
-      357,  357,  307,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  292,  357,  357,  357,  357,  357,  357,  357,  318,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,   45,  357,  357,  357,  357,   47,
-      357,  357,  357,   94,  357,  357,  357,  357,  357,   55,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-
-      357,  356,  357,  202,  357,  357,  357,  142,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  227,  357,
-      203,  357,  357,  357,  242,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,   56,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  144,  123,  357,  124,
-      357,  357,  357,  357,  122,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  162,  357,  357,   53,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  273,  357,  357,  357,  357,
-
-      357,  357,  357,  357,  357,  204,  357,  357,  357,  357,
-      357,  207,  357,  213,  357,  357,  357,  357,  357,  357,
-      241,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  109,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  136,  357,
-      357,  357,  357,  357,  357,  357,  357,   64,  357,  357,
-      357,   29,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,   20,  357,  357,  357,  357,  357,
-      357,   30,   39,  357,  174,  357,  357,  357,  357,  357,
-
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  200,
-      357,  357,  356,  357,  357,  357,  357,  357,  357,   81,
-       83,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  296,  357,  357,  357,  357,  253,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  125,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  161,  357,   49,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-
-      311,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      168,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  305,  357,  357,  357,  233,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  321,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  186,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  118,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  181,  357,  194,  357,  357,
-
-      357,  357,  357,  357,  357,  356,  357,  150,  357,  357,
-      357,  357,  357,  104,  357,  357,  357,  357,  225,  357,
-      357,  357,  357,  357,  357,  243,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  265,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  143,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  185,  357,  357,  357,  357,  357,  357,   84,  357,
-       85,  357,  357,  357,  357,  357,  357,   65,  314,  357,
-      357,  357,  357,  357,   92,  195,  357,  216,  357,  246,
-
-      357,  357,  208,  289,  357,  357,  357,  357,  357,  357,
-       77,  357,  197,  357,  357,  357,  357,  357,  357,    9,
-      357,  357,  357,  357,  357,  108,  357,  357,  357,  357,
-      357,  278,  357,  357,  357,  357,  224,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      356,  357,  357,  357,  357,  184,  357,  357,  357,  357,
-
-      357,  357,  357,  357,  357,  357,  170,  357,  295,  357,
-      357,  357,  357,  357,  264,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  237,  357,  357,  357,
-      357,  357,  287,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      167,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  315,  357,  196,
-      357,  357,  357,  357,  357,  357,  357,  357,   76,   78,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      107,  357,  357,  357,  357,  357,  276,  357,  357,  357,
-
-      357,  291,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  229,   37,   31,   33,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,   38,  357,   32,   34,  357,  357,  357,  357,  357,
-      357,  357,  357,  103,  357,  180,  357,  357,  357,  357,
-      357,  357,  357,  356,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  231,  228,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,   75,  357,  357,  357,  145,
-      357,  126,  357,  357,  357,  357,  357,  357,  357,  357,
-
-      357,  357,  163,   50,  357,  357,  357,  348,   13,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      309,  357,  312,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,   12,  357,  357,   22,  357,
-      357,  357,  357,  357,  357,  282,  357,  357,  357,  357,
-      293,  357,  357,  357,  357,   79,  357,  239,  357,  357,
-      357,  357,  357,  230,  357,  357,   74,  357,  357,  357,
-      357,  357,  357,   23,  357,  357,   46,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  179,
-      178,  357,  357,  348,  357,  357,  357,  357,  357,  357,
-
-      357,  357,  357,  232,  226,  357,  244,  357,  357,  297,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,   86,  357,  357,  357,  357,  357,
-      277,  357,  357,  357,  357,  212,  357,  357,  357,  357,
-      357,  238,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  284,  357,  357,  357,  319,  320,  176,  357,  357,
-      357,   80,  357,  357,  357,  357,  187,  357,  357,  357,
-      119,  121,  120,  357,  357,  357,   25,  357,  357,  171,
-
-      357,  173,  357,  217,  357,  357,  357,  357,  177,  357,
-      357,  357,  357,  247,  357,  357,  357,  357,  357,  357,
-      357,  152,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  255,  357,  357,  357,  357,  357,
-      357,  357,  328,  357,   27,  357,  290,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,   90,  218,  357,  357,  357,  275,  357,
-      313,  357,  211,  357,  357,  357,  357,  357,  285,   59,
-      357,  357,  357,  357,  357,  357,    4,  357,  357,  357,
-      357,  134,  357,  151,  357,  357,  357,  191,  357,  357,
-
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  250,   40,   41,  357,
-      357,  357,  357,  357,  357,  357,  298,  357,  357,  357,
-      357,  357,  357,  357,  263,  357,  357,  357,  357,  357,
-      357,  357,  357,  221,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,   89,  357,
-      357,   60,  357,  281,  357,  251,  357,  357,  357,  357,
-      357,   11,  357,  357,  357,  357,  357,  357,  357,  357,
-      133,  357,  357,  357,  357,  357,  219,   95,  357,  357,
-       43,  357,  357,  357,  357,  357,  357,  357,  357,  183,
-
-      357,  357,  357,  357,  357,  357,  357,  154,  357,  357,
-      357,  357,  254,  357,  357,  357,  357,  357,  262,  357,
-      357,  357,  357,  148,  357,  357,  357,  127,  129,  128,
-      357,  357,  357,   97,  101,   96,  164,  357,  357,  357,
-      357,   87,  357,  283,  357,  357,  357,  357,  357,  357,
-       10,  357,  357,  357,  357,  357,  279,  322,  357,  357,
-      357,  357,  357,  357,  327,   42,  357,  357,  357,  357,
-      357,  182,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  102,  100,  357,
-
-       54,  357,  357,   88,  357,  310,  357,  357,  357,  357,
-       24,  357,  357,  357,  357,  357,  205,  357,  357,  357,
-      357,  357,  357,  220,  357,  357,  357,  357,  357,  357,
-      357,  357,  201,  357,  357,  172,   82,  357,  357,  357,
-      357,  357,  299,  357,  357,  357,  357,  357,  357,  357,
-      259,  357,  357,  258,  149,  357,  357,   99,   51,  357,
-      357,  155,  156,  159,  160,  157,  158,   91,  308,  357,
-      357,  280,  137,  357,  357,  357,   26,  357,  175,  357,
-      357,  357,  357,  199,  357,  249,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-
-      357,  357,  357,  357,  357,  357,  357,  189,  188,   44,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  306,  357,  357,  357,  357,  106,  357,
-      248,  357,  272,  303,  357,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  329,  357,   52,   61,    5,
-      357,  357,  240,  357,  357,  304,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  260,   28,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  261,
-      357,  357,  357,  153,  357,  357,  357,  357,  357,  357,
-
-      357,  357,  190,  357,  198,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  300,  357,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
-      357,  357,  326,  357,  357,  268,  357,  357,  357,  357,
-      357,  301,  357,  357,  357,  357,  357,  357,  302,  357,
-      357,  357,  266,  357,  269,  270,  357,  357,  357,  357,
-      357,  267,  271,    0
+        1,    1,  335,  335,  339,  339,  343,  343,  347,  347,
+        1,    1,  351,  351,  355,  355,  362,  359,    1,  333,
+      333,  360,    2,  360,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  335,  336,  336,  337,
+      360,  339,  340,  340,  341,  360,  346,  343,  344,  344,
+      345,  360,  347,  348,  348,  349,  360,  358,  334,    2,
+      338,  360,  358,  354,  351,  352,  352,  353,  360,  355,
+      356,  356,  357,  360,  359,    0,    1,    2,    2,    2,
+        2,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  335,
+        0,  339,    0,  346,    0,  343,  347,    0,  358,    0,
+        2,    2,  358,  354,    0,  351,  355,    0,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  358,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  332,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  131,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  141,  359,  359,  359,  359,  359,  359,
+      359,  358,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  113,  359,  331,  359,  359,  359,  359,  359,
+      359,  359,  359,    8,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  132,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  146,  359,
+      359,  358,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  324,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  358,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,   68,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  253,  359,   14,   15,  359,   19,   18,  359,
+      359,  237,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  139,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  235,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,    3,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  358,  359,  359,  359,  359,  359,  359,
+      359,  318,  359,  359,  317,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  342,  359,  359,  359,  359,
+      359,  359,  359,  359,   67,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,   71,  359,  287,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  325,  326,  359,  359,  359,  359,  359,
+      359,  359,  359,   72,  359,  359,  140,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  135,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  224,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,   21,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  166,  359,  359,
+      359,  359,  359,  358,  342,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  111,  359,  359,  359,
+      359,  359,  359,  359,  295,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  193,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  165,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  110,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,   35,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,   36,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,   69,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  138,  359,  359,  359,  358,  359,  359,  359,
+      359,  359,  130,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,   70,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  257,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  359,  194,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,   57,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  275,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,   62,  359,   63,  359,  359,  359,  359,
+      359,  114,  359,  115,  359,  359,  359,  359,  359,  112,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,    7,  359,  359,  359,  359,  358,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  246,  359,  359,  359,
+
+      359,  169,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  258,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,   48,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,   58,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  216,  359,  215,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,   16,   17,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,   73,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  223,  359,  359,  359,
+      359,  359,  359,  117,  359,  116,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  207,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  147,  359,  359,  359,  358,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  359,  105,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,   93,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  236,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,   98,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,   66,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  359,  210,  211,  359,  359,
+      359,  289,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,    6,  359,  359,  359,  359,
+      359,  359,  359,  308,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  293,  359,  359,  359,  359,  359,  359,  359,
+      319,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,   45,  359,  359,  359,  359,
+       47,  359,  359,  359,   94,  359,  359,  359,  359,  359,
+
+       55,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  358,  359,  203,  359,  359,  359,  142,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  228,
+      359,  204,  359,  359,  359,  243,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,   56,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  144,  123,
+      359,  124,  359,  359,  359,  359,  122,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  162,  359,  359,   53,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  359,  359,  274,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  205,  359,  359,
+      359,  359,  359,  208,  359,  214,  359,  359,  359,  359,
+      359,  359,  242,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      109,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      136,  359,  359,  359,  359,  359,  359,  359,  359,   64,
+      359,  359,  359,   29,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,   20,  359,  359,  359,
+
+      359,  359,  359,   30,   39,  359,  174,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  201,  359,  359,  358,  359,  359,  359,  359,  359,
+      359,   81,   83,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  297,  359,  359,  359,
+      359,  254,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  125,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  161,  359,   49,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  312,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  168,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  306,  359,  359,
+      359,  234,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  322,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  186,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  118,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  359,  359,  359,  181,  359,
+      195,  359,  359,  359,  359,  359,  359,  359,  358,  359,
+      150,  359,  359,  359,  359,  359,  104,  359,  359,  359,
+      359,  226,  359,  359,  359,  359,  359,  359,  244,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  266,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  143,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  185,  359,  359,  359,  359,
+      359,  359,   84,  359,   85,  359,  359,  359,  359,  359,
+
+      359,   65,  315,  359,  359,  359,  359,  359,   92,  196,
+      359,  217,  359,  247,  359,  359,  209,  290,  359,  359,
+      359,  359,  359,  359,   77,  359,  198,  359,  359,  359,
+      359,  359,  359,    9,  359,  359,  359,  359,  359,  108,
+      359,  359,  359,  359,  359,  279,  359,  359,  359,  359,
+      225,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  358,  359,  359,  359,  359,  184,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      170,  359,  296,  359,  359,  359,  359,  359,  265,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      238,  359,  359,  359,  359,  359,  359,  288,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  167,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  316,  359,  197,  359,  359,  359,  359,  359,
+      359,  359,  359,   76,   78,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  107,  359,  359,  359,  359,
+      359,  277,  359,  359,  359,  359,  292,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      230,   37,   31,   33,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,   38,  359,   32,   34,
+      359,  359,  359,  359,  359,  359,  359,  359,  103,  359,
+      180,  359,  359,  359,  359,  359,  359,  359,  358,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      232,  229,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,   75,  359,  359,  359,  145,  359,  126,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  163,   50,
+      359,  359,  359,  350,   13,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  310,  359,  313,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,   12,  359,  359,   22,  359,  359,  359,  359,  359,
+      359,  283,  359,  359,  359,  359,  294,  359,  359,  359,
+      359,   79,  359,  240,  359,  359,  359,  359,  359,  231,
+      359,  359,   74,  359,  359,  359,  359,  359,  359,   23,
+      359,  359,   46,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  179,  178,  359,  359,  350,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  233,
+      227,  359,  245,  359,  359,  298,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      191,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,   86,  359,  359,  359,  359,  359,  278,  359,  359,
+      359,  359,  213,  359,  359,  359,  359,  359,  239,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  285,  359,
+      359,  359,  320,  321,  176,  359,  359,  359,   80,  359,
+
+      359,  359,  359,  187,  359,  359,  359,  119,  121,  120,
+      359,  359,  359,   25,  359,  359,  171,  359,  173,  359,
+      218,  359,  359,  359,  359,  177,  359,  359,  359,  359,
+      248,  359,  359,  359,  359,  359,  359,  359,  152,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  256,  359,  359,  359,  359,  359,  359,  359,  329,
+      359,   27,  359,  291,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+       90,  219,  359,  359,  359,  276,  359,  314,  359,  212,
+      359,  359,  359,  359,  359,  286,   59,  359,  359,  359,
+
+      359,  359,  359,    4,  359,  359,  359,  359,  134,  359,
+      151,  359,  359,  359,  192,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  251,   40,   41,  359,  359,  359,  359,
+      359,  359,  359,  299,  359,  359,  359,  359,  359,  359,
+      359,  264,  359,  359,  359,  359,  359,  359,  359,  359,
+      222,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,   89,  359,  359,   60,  359,
+      282,  359,  252,  359,  359,  359,  359,  359,   11,  359,
+      359,  359,  359,  359,  359,  359,  359,  133,  359,  359,
+
+      359,  359,  359,  220,   95,  359,  359,   43,  359,  359,
+      359,  359,  359,  359,  359,  359,  183,  359,  359,  359,
+      359,  359,  359,  359,  154,  359,  359,  359,  359,  255,
+      359,  359,  359,  359,  359,  263,  359,  359,  359,  359,
+      148,  359,  359,  359,  127,  129,  128,  359,  359,  359,
+       97,  101,   96,  164,  359,  359,  359,  359,   87,  359,
+      284,  359,  359,  359,  359,  359,  359,   10,  359,  359,
+      359,  359,  359,  280,  323,  359,  359,  359,  359,  359,
+      359,  328,   42,  359,  359,  359,  359,  359,  182,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  102,  100,  359,   54,  359,  359,
+       88,  359,  311,  359,  359,  359,  359,   24,  359,  359,
+      359,  359,  359,  206,  359,  359,  359,  359,  359,  359,
+      221,  359,  359,  359,  359,  359,  359,  359,  359,  202,
+      359,  359,  172,   82,  359,  359,  359,  359,  359,  300,
+      359,  359,  359,  359,  359,  359,  359,  260,  359,  359,
+      259,  149,  359,  359,   99,   51,  359,  359,  155,  156,
+      159,  160,  157,  158,   91,  309,  359,  359,  281,  137,
+      359,  359,  359,   26,  359,  175,  359,  359,  359,  359,
+
+      200,  359,  250,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  189,  188,   44,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      307,  359,  359,  359,  359,  106,  359,  249,  359,  273,
+      304,  359,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  330,  359,   52,   61,    5,  359,  359,  241,
+      359,  359,  305,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  261,   28,  359,  359,  359,  359,  359,  359,
+
+      359,  359,  359,  359,  359,  359,  262,  359,  359,  359,
+      153,  359,  359,  359,  359,  359,  359,  359,  359,  190,
+      359,  199,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  301,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  359,  359,  359,  359,  359,  359,  327,
+      359,  359,  269,  359,  359,  359,  359,  359,  302,  359,
+      359,  359,  359,  359,  359,  303,  359,  359,  359,  267,
+      359,  270,  271,  359,  359,  359,  359,  359,  268,  272,
+        0
     } ;
 
-static const YY_CHAR yy_ec[256] =
+static yyconst flex_int32_t yy_ec[256] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
         1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
@@ -791,7 +802,7 @@ static const YY_CHAR yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static const YY_CHAR yy_meta[41] =
+static yyconst flex_int32_t yy_meta[41] =
     {   0,
         1,    2,    3,    4,    5,    1,    6,    1,    1,    1,
         1,    1,    7,    1,    1,    1,    1,    1,    1,    1,
@@ -799,17 +810,17 @@ static const YY_CHAR yy_meta[41] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static const flex_int16_t yy_base[3583] =
+static yyconst flex_int16_t yy_base[3600] =
     {   0,
         0,    0,   38,   41,   44,   46,   59,   65,   71,   77,
-       90,  112,   96,  118,  124,  136, 3060, 2545,   81, 6961,
-     6961, 6961,  129,   52,  130,   63,  131,  152,   70,  140,
+       90,  112,   96,  118,  124,  136, 3575, 3402,   81, 6988,
+     6988, 6988,  129,   52,  130,   63,  131,  152,   70,  140,
       149,  156,   57,   88,   76,  173,  175,   95,  197,  145,
-      185,  199,  208,  213,  178,  123, 2505, 6961, 6961, 6961,
-      107, 2460, 6961, 6961, 6961,  154, 2315, 2089, 6961, 6961,
-     6961,  245, 2007, 6961, 6961, 6961,  163, 1936, 6961,  249,
-     6961,  253,  148, 1835, 1793, 6961, 6961, 6961,  257, 1696,
-     6961, 6961, 6961,  233, 1543,  263,  201,    0,  267,    0,
+      185,  199,  208,  213,  178,  123, 3157, 6988, 6988, 6988,
+      107, 3007, 6988, 6988, 6988,  154, 2921, 2724, 6988, 6988,
+     6988,  245, 2657, 6988, 6988, 6988,  163, 2514, 6988,  249,
+     6988,  253,  148, 2451, 2274, 6988, 6988, 6988,  257, 2084,
+     6988, 6988, 6988,  233, 2039,  263,  201,    0,  267,    0,
         0,  165,  191,  221,  252,  205,  181,  265,   92,  261,
 
       216,  263,  271,  272,  210,  279,  274,  282,  278,  291,
@@ -817,785 +828,789 @@ static const flex_int16_t yy_base[3583] =
       317,  311,  315,  319,  321,  331,  327,  332,  336,  322,
       339,  337,  346,  345,  347,  348,  353,  351,  357,  284,
       358,  359,  369,  360,  380,  365,  381,  379,  375,  366,
-      367,  389,  390,  394,  393,  395,  396,  403,  404, 1277,
-      419, 1241,  422, 1199,  429, 1020,  925,  433,  779,  437,
-      441,    0,  433,  705,  447,  479,  287,  452,  411,  445,
+      367,  389,  390,  394,  393,  395,  396,  403,  404, 1818,
+      419, 1516,  422, 1248,  429, 1205, 1013,  433,  984,  437,
+      441,    0,  433,  780,  447,  527,  467,  452,  411,  445,
       426,  446,  447,  448,  449,  450,  451,  453,  452,  456,
-      470,  234,  463,  473,  481,  479,  476,  483,  486,  487,
-
-      488,  489,  491,  492,  501,  500,  502,  505,  508,  510,
-      511,  460,  509,  513,  527,  515,  516,  519,  538,  529,
-      540,  543,  539,  548,  555,  400,  550,  551,  558,  553,
-      560,  561,  571,  562,  566,  567,  570,  569,  573,  577,
-      574,  580,  578,  583,  584,  598,  595,  585,  601,  586,
-      594,  596,  612,  602,  611,  362,  607,  610,  619,  624,
-      609,  627,  620,  623,  629,  634,  631,  641,  636,  639,
-      640,  642,  644,  643,  646,  647,  648,  656,  659,  660,
-      664,  667,  657,  668,  658,  670,  673,  674,  683,  675,
-      685,  679,  689,  688,  690,  692,  694,  696,  695,  697,
-
-      700,  703,  708,  704,  713,  714,  721,  719,  724,  717,
-      726,  733,  728,  729,  730,  731,  734,  736,  732,  737,
-      738,  742,  745,  743,  753,  754,  755,  759,  758,  774,
-      763,  764,  771,  784,  765,  767,  769,  775,  796,  785,
-      798,  799,  800,  803,  804,  801,  808,  807,  809,  811,
-      823,  813,  820,  826,  827,  829,  830,  837,  832, 6961,
-      834,  836,  848,  847,  850,  853,  843,  859,  860,  839,
-      870,  866,  863,  881,  903,  867,  871,  873,  876,  872,
-     6961,  893,  883,  927,  885,  889,  911,  895,  907,  913,
-      916,  909,  914,  921,  923,  917,  920,  944,  945,  935,
-
-      936,  947,  952,  951,  959,  960,  954,  958,  963,  971,
-      964,  967,  973,  982,  972,  969,  975,  976,  877,  984,
-      993,  994,  995,  981,  988,  999, 1001, 1002, 1009, 1032,
-     1011, 1012, 1020, 1006, 1014, 1028, 1026, 1024, 1034, 1033,
-     1035, 1007, 1041, 1039, 1044, 1051, 1048, 1054, 1063, 1058,
-     1059, 1060, 1064, 1065, 1066, 1068, 1071, 1072, 1073, 1076,
-     1077, 1083, 1084, 1088, 1092, 1078, 1093, 1086, 6961, 1100,
-     6961, 1095, 1098, 1102, 1103, 1104, 1105, 1107, 1109, 6961,
-     1111, 1114, 1113, 1120, 1124, 1117, 1128, 1130, 1136, 1137,
-     1138, 1139, 1140, 1142, 1149, 1144, 1154, 1152, 1147, 1158,
-
-     1156, 1159, 1115, 1160, 1162, 1166, 1167, 1168, 1169, 1188,
-     6961, 1172, 1174, 1175, 1181, 1179, 1186, 1184, 1193, 1201,
-     1203, 1211, 1205, 1213, 1215, 1212, 1217, 1173, 1219, 1223,
-     1225, 1228, 1229, 1231, 1232, 1234, 1235, 1237, 1238, 1240,
-     1239, 1247, 1250, 1251, 6961, 1252, 1254, 1255, 1268, 1263,
-     1264, 1267, 1269, 1270, 1271, 1272, 1274, 1278,  517, 1273,
-     1291, 1288, 1284, 1298, 1293, 1294, 1295, 1299, 1301, 1300,
-     1302, 1304, 1313, 1310, 1316, 1325, 1328, 1327, 1330, 1337,
-     1339, 1319, 1332, 1342, 1336, 1334, 1335, 1346, 1347, 1348,
-     1350, 1351, 1360, 1356, 1357, 1359, 1358, 1364, 1365, 1367,
-
-     1362, 1368, 1370, 1372, 1374, 1381, 1379, 1385, 1390, 1386,
-     1391, 1387, 1380, 1395, 1403, 1397, 1406, 6961, 1413, 1308,
-     1409, 1410, 1415, 1416, 1417, 1418, 1423, 1424, 1425, 1427,
-     1426, 1429, 1430, 1433, 1435, 1437, 1440, 1442, 1450, 1445,
-     1455, 1462, 1461, 1443, 1447, 1457, 1463, 1467, 1466, 1474,
-     1470, 1479, 1478, 1469, 1482, 1489, 1480, 1484, 1486, 1496,
-     1476, 1492, 1498, 1499, 1507, 1502, 1504, 1510, 1518, 1514,
-     1515, 1522, 1523, 1500, 1527, 1517, 1531, 1532, 1534, 1535,
-     1537, 1538, 1545, 1540, 1542, 1546, 1547, 1541, 1548, 1554,
-     1549, 1569, 1555, 1560, 1565, 1568, 1570, 1571, 1572, 1578,
-
-     1573, 1579, 1580, 1581, 1583, 1592, 1584, 1582, 1593, 1594,
-     1601, 1595, 1603, 1602, 1604, 1611, 1610, 1614, 1615, 1605,
-     1616, 1620, 1626, 1627, 1628, 1631, 1630, 1635, 1638, 1636,
-     1640, 1642, 1648, 1649, 1650, 1652, 1633, 1656, 1659, 1664,
-     1667, 1661, 6961, 1657, 1675, 1651, 1673, 1674, 1653, 1679,
-     1687, 1680, 1682, 1683, 1684, 1685, 1710, 6961, 1691, 6961,
-     6961, 1690, 6961, 6961, 1693, 1692, 6961, 1694, 1695, 1708,
-     1699, 1713, 1716, 1720, 1718, 1711, 1721, 1733, 1742, 1728,
-     1734, 1726, 1735, 1751, 1738, 1752, 1740, 1750, 1758, 1759,
-     1757, 1764, 1771, 1766, 1775, 1768, 1779, 1777, 1780, 1786,
-
-     1787, 1791, 1793, 1788, 1794, 1797, 1796, 1798, 1799, 1802,
-     1804, 1723, 1805, 1808, 1809, 1810, 1818, 1815, 1823, 1830,
-     6961, 1828, 1831, 1827, 1840, 1836, 1843, 1811, 1838, 1839,
-     1849, 1851, 1845, 1842, 1852, 1854, 1855, 1856, 1859, 1861,
-     1864, 1867, 1865, 1869, 1872, 1870, 6961, 1877, 1878, 1871,
-     1879, 1881, 1882, 1883, 1891, 1892, 1893, 1894, 1904, 1896,
-     1899, 1897, 1901, 1906, 1908, 1909, 1911, 6961, 1916, 1924,
-     1913, 1921, 1919, 1925, 1928, 1929, 1930, 1933, 1931, 1935,
-     1937, 1938, 1947, 1943, 1944, 1946, 1949, 1953, 1958, 1961,
-     1959, 1960, 1971, 1963, 1966, 1972, 1974, 1975, 1976, 1977,
-
-     1978, 1980, 1985, 1990, 1987, 1995, 1988, 1991, 1998, 2009,
-     2004, 1993, 2005, 2010, 2006, 2013, 2022, 2024, 2020, 2019,
-     2021, 2032, 2028, 2030, 2031, 2033, 2036, 2041, 2042, 2043,
-     2044, 2046, 2050, 2051, 2053, 6961, 2055, 2059, 6961, 2058,
-     2060, 2061, 2083, 2062, 2065, 2066, 2075, 2064, 2087, 2078,
-     2076, 2095, 2084, 2102, 2097, 2103, 2105, 2107, 2108, 2112,
-     2110, 2111, 2114, 2116, 2118, 2120, 2128, 2137, 2138, 2140,
-     2134, 2142, 2119, 2143, 2067, 2163, 2144, 2145, 2146, 2147,
-     2148, 2152, 2153, 2151, 2154, 2155, 2165, 2170, 2172, 2173,
-     2175, 2158, 2179, 2180, 2181, 2191, 2188, 2185, 6961, 2200,
-
-     2193, 2197, 2201, 2202, 2209, 2207, 2204, 6961, 2208, 2210,
-     2211, 2220, 2213, 2218, 2221, 2224, 2225, 2228, 2229, 2231,
-     2233, 2230, 2232, 2251, 6961, 2234, 6961, 2238, 2235, 2253,
-     2243, 2246, 2247, 2254, 2256, 2259, 6961, 6961, 2263, 2257,
-     2270, 2273, 2278, 2274, 2275, 2276, 6961, 2277, 2285, 6961,
-     2287, 2292, 2280, 2281, 2282, 2286, 2296, 2297, 2305, 2300,
-     2308, 2303, 2306, 2307, 6961, 2313, 2316, 2310, 2317, 2323,
-     2324, 2325, 2327, 2330, 2326, 6961, 2333, 2329, 2336, 2343,
-     2347, 2341, 2344, 2348, 2352, 2349, 2354, 2355, 2356, 2357,
-     2364, 2366, 2369, 2371, 2372, 2374, 2378, 2385, 6961, 2381,
-
-     2380, 2382, 2390, 2387, 2389, 2391, 2394, 2393, 2395, 2396,
-     2401, 2397, 2405, 2406, 2407, 2409, 2418, 2421, 2416, 2417,
-     2426, 2413, 2420, 2423, 2427, 2365, 2429, 2430, 2433, 2436,
-     6961, 2437, 2441, 2438, 2443, 2444, 2442,  171, 2450, 2451,
-     2453, 2454, 2458, 2469, 2455, 2463, 2476, 2471, 2472, 2478,
-     2474, 2481, 2482, 2483, 2484, 2473, 2486, 2485, 2489, 6961,
-     2491, 2497, 2494, 2498, 2501, 2502, 2504, 6961, 2506, 2514,
-     2516, 2525, 2519, 2503, 2527, 2528, 2531, 2529, 2532, 2533,
-     2534, 2535, 2536, 2542, 2539, 6961, 2544, 2551, 2554, 2541,
-     2555, 2562, 2548, 2563, 2564, 2565, 2568, 2567, 2569, 2573,
-
-     2570, 2572, 2574, 2575, 2583, 2594, 2577, 2586, 2587, 2590,
-     2591, 2595, 2599, 2600, 2601, 2608, 2603, 6961, 2615, 2604,
-     2612, 2613, 2611, 2614, 2617, 2620, 2634, 2624, 2627, 2629,
-     2635, 2644, 2637, 2638, 2646, 2654, 2651, 2639, 2664, 2660,
-     2661, 2668, 2659, 2670, 2672, 2662, 2673, 2684, 2674, 2676,
-     2681, 2679, 2685, 2694, 2695, 2687, 2697, 2698, 2690, 2700,
-     2702, 2712, 2717, 2707, 6961, 2719, 2709, 2720, 2721, 2728,
-     2725, 2726, 2731, 2729, 2732, 2733, 2735, 2737, 2745, 2746,
-     2744, 2742, 2749, 2753, 2755, 2757, 2760, 2759, 2740, 2768,
-     2762, 2764, 2771, 2772, 6961, 2775, 2776, 2780, 2782, 2784,
-
-     2785, 2787, 2788, 2790, 2792, 2793, 2794, 2797, 2798, 2800,
-     2801, 2802, 2809, 2806, 2807, 2808, 2812, 6961, 2820, 2819,
-     2821, 2824, 2827, 2825, 2831, 2837, 2839, 2828, 2841, 2835,
-     2842, 2843, 2845, 6961, 2855, 2857, 2847, 2854, 2862, 2860,
-     2861, 2863, 2865, 2866, 6961, 2867, 2870, 2868, 2875, 2871,
-     2873, 2882, 2883, 2879, 6961, 2887, 2884, 2889, 2892, 2893,
-     2894, 2895, 2899, 2897, 2901, 2902, 2906, 2915, 2907, 2916,
-     6961, 2903, 2924, 2910, 2925, 2919, 2929, 2931, 2932, 2933,
-     2935, 2937, 2940, 6961, 2942, 2945, 2948, 2957, 2952, 2953,
-     2955, 2958, 2960, 2962, 2961, 2964, 2966, 6961, 2968, 2967,
-
-     2970, 2974, 2972, 2977, 2978, 2989, 2984, 2987, 2990, 2991,
-     2992, 2993, 2994, 2999, 3010, 3001, 2998, 3000, 3002, 3014,
-     3012, 3019, 3018, 3022, 3026, 3030, 3025, 3031, 3034, 3029,
-     3036, 3037, 3040, 3047, 3048, 3049, 3050, 3053, 6961, 3056,
-     3057, 3059, 3044, 3060, 3063, 3064, 3066, 3069, 3065, 3067,
-     3071, 3074, 3078, 3087, 3090, 3080, 3082, 3091, 3092, 3093,
-     3094, 3095, 3096, 3101, 3104, 3103, 3105, 3106, 3113, 3109,
-     3112, 3121, 3117, 3120, 3122, 3123, 3124, 3126, 3127, 3129,
-     3130, 3134, 3133, 3135, 3138, 3146, 3156, 3153, 3147, 3149,
-     3157, 3159, 3161, 6961, 3160, 3164, 3168, 3165, 3170, 3174,
-
-     3171, 3181, 3177, 3182, 3190, 3188, 3187, 3194, 3179, 3189,
-     3196, 3197, 3206, 3202, 6961, 3203, 6961, 3204, 3208, 3209,
-     3218, 3211, 6961, 3215, 6961, 3216, 3223, 3220, 3224, 3226,
-     6961, 3227, 3228, 3232, 3229, 3233, 3234, 3239, 3237, 3241,
-     3243, 3245, 3246, 3255, 3244, 3250, 3251, 3257, 3266, 3256,
-     3261, 3263, 3269, 3272, 3274, 3273, 3280, 3275, 3282, 3283,
-     3285, 3286, 3287, 6961, 3291, 3295, 3296, 3299, 3300, 3288,
-     3303, 3302, 3310, 3307, 3311, 3308, 3314, 3315, 3319, 3320,
-     3323, 3325, 3331, 3336, 3343, 3326, 3344, 6961, 3339, 3348,
-     3330, 3350, 6961, 3352, 3327, 3354, 3358, 3360, 3361, 3362,
-
-     3363, 3364, 3367, 3368, 3369, 3370, 3378, 3381, 3384, 6961,
-     3382, 3390, 3371, 3394, 3393, 3404, 3405, 3401, 3407, 3409,
-     3417, 3413, 3402, 3412, 3400, 3414, 3420, 3422, 3427, 3431,
-     3424, 3432, 3428, 3433, 3436, 3437, 3439, 3440, 3443, 3441,
-     3444, 3445, 3449, 3446, 3447, 3448, 3340, 3450, 3466, 6961,
-     3453, 3455, 3468, 3476, 3454, 3471, 3475, 3477, 3478, 6961,
-     3480, 3482, 3483, 3484, 3485, 3489, 3492, 3490, 3493, 3494,
-     3497, 3498, 3501, 3500, 6961, 3507, 6961, 3508, 3515, 3520,
-     3524, 3509, 3517, 3525, 3530, 3526, 3531, 3532, 3538, 3540,
-     3534, 3536, 3542, 3543, 3546, 3547, 3554, 3560, 3557, 3549,
-
-     3561, 3563, 3565, 3566, 3573, 3570, 3568, 6961, 6961, 3571,
-     3576, 3577, 3583, 3584, 3585, 3587, 3589, 3592, 3591, 3595,
-     3600, 3611, 6961, 3603, 3604, 3606, 3607, 3608, 3620, 3613,
-     3624, 3621, 3625, 3626, 3633, 3629, 6961, 3632, 3634, 3642,
-     3637, 3638, 3645, 6961, 3375, 6961, 3643, 3644, 3646, 3649,
-     3651, 3655, 3653, 3658, 3659, 3654, 3660, 3670, 3677, 3679,
-     3675, 3681, 3676, 3682, 3678, 3684, 3685, 3692, 3687, 3689,
-     3690, 6961, 3694, 3695, 3699, 3701, 3702, 3707, 3711, 3704,
-     3710, 6961, 3714, 3717, 3718, 3719, 3720, 3724, 3727, 3728,
-     3729, 3737, 3730, 3732, 3738, 3741, 6961, 3742, 3734, 3749,
-
-     3745, 3747, 3752, 3756, 3759, 3764, 6961, 3766, 3751, 3773,
-     3769, 3770, 3772, 3775, 3776, 3777, 3779, 3780, 3781, 3783,
-     3784, 3789, 3785, 3787, 3794, 3790, 3802, 3804, 3791, 3812,
-     3819, 3805, 6961, 3808, 3815, 3817, 3818, 3820, 3821, 3823,
-     3829, 3831, 3825, 3840, 3841, 3832, 3836, 3843, 3847, 3844,
-     3855, 3851, 6961, 3856, 3852, 3865, 3858, 3860, 3866, 3862,
-     3867, 3868, 3872, 3874, 3875, 3876, 3877, 3878, 3883, 3886,
-     3890, 3891, 3892, 3893, 3900, 3895, 6961, 3907, 3884, 3897,
-     3914, 3908, 3905, 3923, 3918, 3921, 3922, 3925, 3926, 3928,
-     3930, 3931, 3932, 3935, 3936, 6961, 6961, 3938, 3939, 3940,
-
-     6961, 3942, 3944, 3954, 3945, 3947, 3955, 3957, 3959, 3958,
-     3960, 3962, 3968, 3969, 6961, 3977, 3970, 3979, 3978, 3974,
-     3988, 3987, 6961, 3980, 3990, 3992, 3995, 3993, 3983, 3996,
-     4001, 3997, 4005, 4006, 4007, 4010, 4018, 4019, 4014, 4016,
-     4017, 6961, 4020, 4022, 4023, 4026, 4027, 4029, 4030, 6961,
-     4035, 4032, 4038, 4041, 4043, 4050, 4042, 4053, 4056, 4057,
-     4058, 4060, 4061, 4062, 4063, 4065, 4073, 4059, 4071, 4070,
-     4068, 4088, 4089, 4076, 6961, 4084, 4091, 4074, 4096, 6961,
-     4098, 4105, 4106, 6961, 4109, 4092, 4108, 4110, 4117, 6961,
-     4112, 4115, 4114, 4120, 4116, 4129, 4125, 4133, 4131, 4132,
-
-     4128, 4134, 4137, 6961, 4138, 4135, 4140, 6961, 4143, 4152,
-     4156, 4158, 4142, 4165, 4160, 4163, 4161, 4164, 6961, 4169,
-     6961, 4172, 4170, 4176, 6961, 4171, 4178, 4179, 4181, 4185,
-     4186, 4187, 4193, 4189, 4195, 4197, 4198, 4199, 4200, 4202,
-     4209, 4201, 4205, 4208, 4210, 6961, 4211, 4213, 4220, 4217,
-     4221, 4225, 4227, 4228, 4230, 4232, 6961, 6961, 4241, 6961,
-     4233, 4238, 4242, 4243, 6961, 4246, 4248, 4250, 4247, 4251,
-     4253, 4256, 4266, 4136, 6961, 4268, 4269, 6961, 4257, 4271,
-     4278, 4273, 4275, 4263, 4276, 4283, 4279, 4260, 4286, 4289,
-     4290, 4291, 4292, 4293, 4300, 6961, 4294, 4297, 4295, 4310,
-
-     4299, 4304, 4312, 4311, 4313, 6961, 4321, 4323, 4322, 4327,
-     4328, 6961, 4329, 6961, 4330, 4334, 4337, 4339, 4331, 4342,
-     6961, 4344, 4345, 4352, 4347, 4353, 4354, 4355, 4357, 4361,
-     4363, 4364, 4371, 4367, 4369, 4366, 4376, 4377, 6961, 4368,
-     4374, 4390, 4391, 4383, 4380, 4386, 4399, 4396, 4398, 4397,
-     4402, 4404, 4405, 4407, 4411, 4413, 4409, 4416, 6961, 4419,
-     4420, 4424, 4421, 4431, 4427, 4428, 4433, 6961, 4435, 4436,
-     4438, 6961, 4440, 4444, 4446, 4449, 4450, 4451, 4452, 4456,
-     4454, 4457, 4458, 4460, 6961, 4462, 4463, 4461, 4477, 4478,
-     4467, 6961, 6961, 4480, 6961, 4484, 4466, 4485, 4487, 4488,
-
-     4492, 4494, 4495, 4497, 4491, 4498, 4502, 4503, 4507, 6961,
-     4510, 4518, 4511, 4522, 4525, 4530, 4523, 4527, 4514, 6961,
-     6961, 4532, 4536, 4538, 4540, 4541, 4543, 4528, 4550, 4548,
-     4556, 4559, 4549, 4566, 6961, 4561, 4552, 4563, 4564, 6961,
-     4545, 4568, 4569, 4571, 4574, 4575, 4578, 4576, 4577, 4580,
-     4588, 4581, 4583, 4590, 4589, 4591, 4599, 4597, 4600, 4601,
-     4603, 4607, 6961, 4604, 4608, 4610, 4613, 4617, 4618, 4619,
-     4620, 4622, 4623, 4630, 6961, 4628, 6961, 4626, 4631, 4646,
-     4633, 4636, 4648, 4649, 4650, 4651, 4655, 4657, 4658, 4661,
-     4663, 4667, 4662, 4668, 4671, 4673, 4675, 4679, 4683, 4680,
-
-     6961, 4686, 4676, 4688, 4625, 4690, 4693, 4694, 4698, 4699,
-     4701, 4695, 4702, 4704, 4706, 4709, 4711, 4712, 4714, 4715,
-     6961, 4716, 4719, 4722, 4725, 4726, 4727, 4730, 4735, 4739,
-     4743, 4731, 4733, 4745, 6961, 4737, 4746, 4754, 6961, 4749,
-     4751, 4756, 4757, 4758, 4760, 4761, 4763, 4767, 4770, 6961,
-     4774, 4764, 4771, 4775, 4776, 4777, 4781, 4783, 4786, 4788,
-     4790, 4798, 6961, 4799, 4791, 4800, 4802, 4804, 4806, 4810,
-     4808, 4811, 6961, 4812, 4815, 4821, 4823, 4828, 4830, 4814,
-     4825, 4833, 4834, 4836, 4832, 4842, 4843, 4844, 4845, 4847,
-     4849, 4848, 4865, 4866, 4863, 6961, 4850, 6961, 4851, 4852,
-
-     4868, 4878, 4873, 4875, 4876, 4880, 4879, 6961, 4881, 4886,
-     4888, 4883, 4891, 6961, 4892, 4889, 4893, 4894, 6961, 4907,
-     4890, 4896, 4903, 4912, 4913, 6961, 4918, 4919, 4920, 4927,
-     4929, 4924, 4931, 4926, 4934, 4932, 4928, 4936, 4937, 4945,
-     4943, 4941, 6961, 4947, 4949, 4954, 4956, 4950, 4958, 4948,
-     4960, 4963, 4965, 6961, 4966, 4969, 4970, 4972, 4973, 4975,
-     4974, 4976, 4983, 4980, 4984, 4982, 4988, 4991, 4993, 4995,
-     4997, 6961, 4999, 5001, 5003, 5012, 5005, 5002, 6961, 5009,
-     6961, 5014, 5019, 5021, 5022, 5015, 5026, 6961, 6961, 5029,
-     5036, 5023, 5032, 5034, 6961, 6961, 5038, 6961, 5039, 6961,
-
-     5040, 5042, 6961, 6961, 5044, 5045, 5046, 5047, 5048, 5051,
-     6961, 5056, 6961, 5065, 5060, 5061, 5063, 5064, 5068, 6961,
-     5066, 5069, 5070, 5075, 5077, 6961, 5074, 5078, 5094, 5081,
-     5089, 6961, 5091, 5092, 5093, 5096, 6961, 5097, 5101, 5102,
-     5103, 5106, 5105, 5108, 5109, 5110, 5116, 5117, 5120, 5119,
-     5122, 5123, 5127, 5132, 5134, 5136, 5137, 5138, 5140, 5143,
-     5146, 5150, 5141, 5148, 5152, 5154, 5155, 5157, 5159, 5160,
-     5162, 5166, 5167, 5163, 5170, 5169, 5171, 5180, 5172, 5182,
-     5184, 5186, 5188, 5189, 5190, 5193, 5194, 5197, 5198, 5199,
-     5196, 5203, 5200, 5207, 5212, 6961, 5205, 5213, 5214, 5216,
-
-     5217, 5221, 5224, 5233, 5239, 5240, 6961, 5242, 6961, 5244,
-     5228, 5225, 5230, 5247, 6961, 5234, 5248, 5250, 5251, 5252,
-     5253, 5255, 5256, 5259, 5260, 5263, 6961, 5268, 5265, 5258,
-     5274, 5270, 6961, 5275, 5282, 5285, 5286, 5287, 5288, 5291,
-     5289, 5290, 5293, 5292, 5294, 5297, 5299, 5300, 5310, 5312,
-     6961, 5314, 5316, 5323, 5319, 5321, 5322, 5324, 5325, 5326,
-     5329, 5327, 5334, 5331, 5343, 5348, 5345, 6961, 5332, 6961,
-     5349, 5335, 5352, 5353, 5355, 5356, 5357, 5359, 6961, 6961,
-     5362, 5363, 5365, 5367, 5369, 5370, 5372, 5374, 5375, 5376,
-     6961, 5379, 5383, 5387, 5393, 5386, 6961, 5395, 5396, 5397,
-
-     5401, 6961, 5402, 5398, 5404, 5405, 5412, 5403, 5419, 5415,
-     5421, 5409, 5423, 5413, 5427, 6961, 6961, 6961, 6961, 5428,
-     5424, 5432, 5434, 5436, 5437, 5439, 5442, 5443, 5441, 5438,
-     5444, 6961, 5454, 6961, 6961, 5455, 5456, 5457, 5462, 5464,
-     5463, 5465, 5468, 6961, 5466, 6961, 5470, 5473, 5469, 5480,
-     5486, 5483, 5477, 5490, 5487, 5492, 5491, 5493, 5501, 5498,
-     5499, 5502, 5505, 5507, 5513, 6961, 6961, 5508, 5515, 5516,
-     5524, 5520, 5522, 5526, 5534, 5529, 5530, 5532, 5531, 5536,
-     5537, 5545, 5548, 5538, 5547, 6961, 5549, 5550, 5551, 6961,
-     5552, 6961, 5557, 5560, 5561, 5553, 5563, 5568, 5569, 5572,
-
-     5570, 5575, 6961, 6961, 5567, 5587, 5582, 6961, 6961, 5574,
-     5583, 5586, 5590, 5584, 5592, 5595, 5594, 5597, 5599, 5596,
-     6961, 5601, 6961, 5600, 5602, 5608, 5610, 5619, 5623, 5614,
-     5624, 5622, 5625, 5626, 5629, 6961, 5627, 5628, 6961, 5637,
-     5639, 5640, 5638, 5646, 5643, 6961, 5647, 5649, 5654, 5656,
-     6961, 5660, 5657, 5663, 5662, 6961, 5665, 6961, 5630, 5669,
-     5666, 5676, 5672, 6961, 5673, 5679, 6961, 5682, 5686, 5688,
-     5689, 5677, 5683, 6961, 5695, 5691, 6961, 5697, 5699, 5700,
-     5703, 5704, 5706, 5707, 5708, 5710, 5718, 5714, 5711, 6961,
-     6961, 5722, 5723,  135, 5731, 5721, 5727, 5729, 5732, 5739,
-
-     5734, 5736, 5742, 6961, 6961, 5743, 6961, 5737, 5750, 6961,
-     5735, 5751, 5755, 5746, 5752, 5758, 5761, 5765, 5767, 5768,
-     5769, 5770, 5771, 5775, 5792, 5794, 5777, 5774, 5797, 5799,
-     5801, 5803, 5805, 5762, 5807, 5789, 5785, 5808, 5810, 5795,
-     5813, 5816, 5817, 5819, 6961, 5821, 5824, 5826, 5827, 5828,
-     6961, 5831, 5834, 5836, 5838, 6961, 5845, 5840, 5842, 5847,
-     5848, 6961, 5832, 5853, 5855, 5858, 5859, 5860, 5861, 5863,
-     5870, 6961, 5867, 5865, 5871, 6961, 6961, 6961, 5876, 5883,
-     5873, 6961, 5885, 5877, 5886, 5888, 6961, 5890, 5892, 5893,
-     6961, 6961, 6961, 5894, 5895, 5898, 6961, 5896, 5903, 6961,
-
-     5902, 6961, 5899, 6961, 5904, 5908, 5917, 5912, 6961, 5910,
-     5922, 5923, 5924, 6961, 5927, 5930, 5932, 5933, 5934, 5936,
-     5938, 6961, 5945, 5941, 5944, 5948, 5940, 5950, 5951, 5952,
-     5953, 5965, 5956, 5961, 6961, 5963, 5964, 5968, 5974, 5966,
-     5976, 5977, 6961, 5970, 6961, 5979, 6961, 5980, 5982, 5983,
-     5984, 5989, 5986, 5987, 5997, 5994, 6000, 6003, 6001, 6007,
-     6008, 6012, 6009, 6961, 6961, 6019, 6015, 6017, 6961, 6014,
-     6961, 6023, 6961, 6024, 6026, 6027, 6029, 6031, 6961, 6961,
-     6038, 6030, 6039, 6047, 6033, 6043, 6961, 6051, 6044, 6046,
-     6054, 6961, 6055, 6961, 6057, 6066, 6059, 6961, 6061, 6068,
-
-     6070, 6063, 6071, 6073, 6074, 6075, 6076, 6086, 6079, 6081,
-     6082, 6088, 6089, 6094, 6100, 6105, 6961, 6961, 6961, 6095,
-     6090, 6114, 6112, 6113, 6115, 6099, 6961, 6118, 6120, 6121,
-     6122, 6130, 6125, 6128, 6961, 6132, 6129, 6131, 6133, 6135,
-     6136, 6137, 6139, 6961, 6150, 6152, 6158, 6140, 6154, 6159,
-     6161, 6163, 6166, 6170, 6167, 6171, 6178, 6174, 6961, 6176,
-     6173, 6961, 6182, 6961, 6177, 6961, 6183, 6184, 6185, 6186,
-     6187, 6961, 6191, 6192, 6193, 6195, 6194, 6198, 6200, 6202,
-     6961, 6203, 6216, 6211, 6213, 6215, 6961, 6961, 6217, 6223,
-     6961, 6225, 6228, 6226, 6235, 6227, 6234, 6237, 6241, 6961,
-
-     6243, 6244, 6230, 6245, 6248, 6251, 6252, 6961, 6254, 6255,
-     6256, 6257, 6961, 6260, 6259, 6264, 6266, 6267, 6961, 6268,
-     6269, 6285, 6283, 6961, 6270, 6291, 6271, 6961, 6961, 6961,
-     6293, 6296, 6297, 6961, 6961, 6961, 6961, 6299, 6300, 6261,
-     6303, 6961, 6304, 6961, 6307, 6311, 6315, 6317, 6323, 6310,
-     6961, 6322, 6324, 6326, 6318, 6328, 6961, 6961, 6329, 6331,
-     6332, 6334, 6338, 6335, 6961, 6961, 6340, 6341, 6343, 6344,
-     6345, 6961, 6346, 6349, 6357, 6350, 6361, 6367, 6369, 6358,
-     6370, 6371, 6378, 6382, 6363, 6374, 6379, 6381, 6385, 6384,
-     6392, 6393, 6395, 6397, 6399, 6394, 6402, 6961, 6961, 6405,
-
-     6961, 6411, 6406, 6961, 6408, 6961, 6413, 6417, 6419, 6421,
-     6961, 6423, 6425, 6428, 6430, 6414, 6961, 6432, 6434, 6436,
-     6437, 6431, 6438, 6961, 6445, 6442, 6448, 6439, 6449, 6451,
-     6452, 6456, 6961, 6450, 6460, 6961, 6961, 6457, 6464, 6466,
-     6468, 6470, 6961, 6471, 6478, 6473, 6476, 6477, 6479, 6482,
-     6961, 6480, 6484, 6961, 6961, 6485, 6490, 6961, 6961, 6483,
-     6491, 6961, 6961, 6961, 6961, 6961, 6961, 6961, 6961, 6494,
-     6500, 6961, 6961, 6495, 6502, 6507, 6961, 6513, 6961, 6504,
-     6510, 6514, 6515, 6961, 6516, 6961, 6517, 6520, 6521, 6522,
-     6523, 6528, 6532, 6525, 6533, 6534, 6536, 6537, 6539, 6541,
-
-     6542, 6543, 6549, 6546, 6556, 6557, 6558, 6961, 6961, 6961,
-     6559, 6560, 6567, 6562, 6569, 6574, 6579, 6582, 6570, 6572,
-     6583, 6585, 6588, 6576, 6584, 6597, 6594, 6595, 6598, 6605,
-     6596, 6610, 6612, 6961, 6614, 6587, 6600, 6618, 6961, 6606,
-     6961, 6615, 6961, 6961, 6623, 6624, 6620, 6626, 6635, 6636,
-     6627, 6631, 6632, 6634, 6638, 6961, 6643, 6961, 6961, 6961,
-     6640, 6646, 6961, 6648, 6649, 6961, 6647, 6650, 6652, 6656,
-     6657, 6654, 6658, 6659, 6675, 6961, 6961, 6660, 6665, 6668,
-     6677, 6679, 6678, 6681, 6685, 6686, 6688, 6689, 6698, 6961,
-     6695, 6696, 6700, 6961, 6702, 6697, 6703, 6704, 6705, 6713,
-
-     6709, 6712, 6961, 6714, 6961, 6718, 6720, 6721, 6711, 6719,
-     6722, 6733, 6731, 6727, 6961, 6737, 6741, 6739, 6743, 6745,
-     6747, 6748, 6749, 6751, 6754, 6760, 6757, 6764, 6765, 6761,
-     6769, 6766, 6961, 6776, 6767, 6961, 6773, 6777, 6770, 6779,
-     6783, 6961, 6788, 6781, 6790, 6791, 6794, 6795, 6961, 6797,
-     6804, 6799, 6961, 6805, 6961, 6961, 6807, 6801, 6808, 6814,
-     6816, 6961, 6961, 6961, 6841, 6848, 6855, 6862, 6869, 6876,
-     6883,   88, 6890, 6897, 6904, 6911, 6918, 6925, 6932, 6939,
-     6946, 6953
+      470,  234,  463,  473,  481,  479,  476,  483,  486,  493,
+
+      488,  489,  495,  491,  501,  508,  505,  506,  504,  510,
+      512,  513,  460,  514,  517,  529,  518,  516,  526,  538,
+      539,  550,  543,  534,  551,  552,  400,  559,  555,  563,
+      558,  570,  565,  574,  566,  569,  571,  576,  573,  577,
+      580,  578,  581,  584,  587,  588,  598,  589,  596,  600,
+      601,  611,  602,  612,  607,  610,  362,  609,  541,  619,
+      622,  617,  624,  625,  626,  629,  632,  639,  641,  642,
+      643,  645,  634,  648,  647,  638,  649,  651,  659,  662,
+      660,  663,  670,  669,  671,  672,  673,  675,  652,  682,
+      678,  686,  679,  692,  691,  693,  695,  697,  699,  698,
+
+      700,  702,  703,  705, 6988,  716,  706,  721,  717,  728,
+      723,  707,  725,  732,  735,  718,  731,  734,  733,  736,
+      739,  740,  741,  743,  747,  750,  748,  753,  752,  763,
+      767,  759,  774,  760,  761,  772,  782,  775,  768,  776,
+      795,  790,  796,  802,  804,  805,  807,  808,  806,  809,
+      811,  812,  813,  827,  816,  829,  823,  819,  830,  832,
+      839,  840, 6988,  836,  837,  851,  844,  853,  857,  854,
+      863,  846,  869,  867,  872,  873,  885,  907,  875,  880,
+      874,  876,  890, 6988,  893,  897,  931,  877,  900,  919,
+      914,  881,  905,  917,  916,  921,  935,  915,  922,  937,
+
+      954,  952,  936,  939,  938,  955,  949,  967,  962,  965,
+      887,  966,  974,  969,  970,  971,  981,  972,  973,  977,
+      982,  988,  995,  999,  983, 1003,  997,  991, 1005, 1008,
+     1009, 1004, 1006, 1029, 1017, 1012, 1025, 1031, 1023, 1039,
+     1016, 1038, 1036, 1045, 1049, 1041, 1051, 1053, 1056, 1057,
+     1058, 1059, 1069, 1064, 1065, 1067, 1070, 1072, 1073, 1078,
+     1076, 1079, 1081, 1083, 1084, 1087, 1092, 1094, 1098, 1085,
+     1099, 1101, 6988, 1107, 6988, 1105, 1102, 1109, 1111, 1112,
+     1113, 1114, 1115, 6988, 1117, 1121, 1116, 1124, 1125, 1122,
+     1146, 1142, 1129, 1141, 1145, 1144, 1150, 1151, 1159, 1154,
+
+     1161, 1162, 1155, 1163, 1157, 1166, 1128, 1167, 1170, 1171,
+     1173, 1175, 1177, 1195, 6988, 1178, 1181, 1182, 1184, 1186,
+     1199, 1191, 1206, 1208, 1212, 1218, 1200, 1183, 1226, 1222,
+     1224, 1225, 1229, 1230, 1232, 1234, 1235, 1238, 1239, 1241,
+     1242, 1244, 1245, 1249, 1246, 1247, 1257, 1258, 6988, 1260,
+     1261, 1270, 1268, 1271, 1273, 1275, 1276, 1277, 1278, 1280,
+     1282, 1279, 1285, 1289, 1287, 1299, 1291, 1304, 1300, 1302,
+     1301, 1306, 1308, 1307, 1311, 1316, 1323, 1318, 1325, 1329,
+     1339, 1335, 1337, 1344, 1346, 1341, 1326, 1342, 1348, 1314,
+     1343, 1349, 1350, 1355, 1352, 1358, 1361, 1369, 1356, 1364,
+
+     1366, 1367, 1371, 1373, 1378, 1370, 1381, 1379, 1380, 1382,
+     1389, 1387, 1390, 1397, 1388, 1394, 1399, 1403, 1407, 1410,
+     1411, 1401, 6988, 1420, 1413, 1418, 1423, 1424, 1428, 1430,
+     1426, 1432, 1433, 1434, 1436, 1437, 1439, 1443, 1444, 1445,
+     1446, 1451, 1453, 1454, 1455, 1456, 1470, 1469, 1471, 1464,
+     1473, 1474, 1475, 1458, 1484, 1481, 1485, 1489, 1483, 1490,
+     1497, 1493, 1494, 1498, 1505, 1500, 1501, 1504, 1502, 1511,
+     1513, 1514, 1523, 1530, 1515, 1528, 1535, 1531, 1525, 1536,
+     1537, 1540, 1539, 1544, 1545, 1546, 1547, 1554, 1549, 1551,
+     1555, 1558, 1559, 1552, 1566, 1561, 1574, 1564, 1572, 1575,
+
+     1579, 1580, 1581, 1585, 1588, 1583, 1590, 1591, 1592, 1597,
+     1582, 1593, 1603, 1604, 1595, 1605, 1612, 1615, 1613, 1617,
+     1619, 1621, 1622, 1623, 1624, 1633, 1634, 1625, 1635, 1631,
+     1637, 1641, 1644, 1652, 1649, 1655, 1653, 1645, 1660, 1647,
+     1661, 1663, 1665, 1667, 1671, 1672, 1673, 6988, 1666, 1680,
+     1678, 1679, 1681, 1686, 1687, 1694, 1689, 1692, 1690, 1691,
+     1695, 1717, 6988, 1703, 6988, 6988,  848, 6988, 6988, 1700,
+     1696, 6988, 1701, 1704, 1712, 1714, 1720, 1706, 1727, 1731,
+     1725, 1732, 1713, 1740, 1747, 1735, 1745, 1741, 1738, 1753,
+     1744, 1760, 1758, 1752, 1767, 1761, 1769, 1770, 1783, 1774,
+
+     1778, 1775, 1784, 1785, 1787, 1788, 1793, 1796, 1797, 1800,
+     1801, 1802, 1803, 1805, 1807, 1808, 1804, 1811, 1813, 1810,
+     1817, 1816, 1827, 1826, 1833, 1836, 6988, 1834, 1843, 1822,
+     1846, 1842, 1850, 1845, 1849, 1851, 1853, 1857, 1854, 1858,
+     1860, 1863, 1861, 1864, 1869, 1870, 1872, 1866, 1873, 1878,
+     1880, 1879, 6988, 1883, 1884, 1886, 1890, 1887, 1888, 1894,
+     1897, 1900, 1903, 1901, 1908, 1904, 1905, 1909, 1913, 1917,
+     1915, 1916, 1919, 6988, 1921, 1928, 1920, 1931, 1929, 1933,
+     1935, 1937, 1938, 1940, 1942, 1943, 1944, 1945, 1952, 1948,
+     1951, 1954, 1956, 1960, 1961, 1968, 1966, 1972, 1979, 1969,
+
+     1971, 1973, 1981, 1984, 1983, 1985, 1986, 1989, 1993, 1996,
+     1994, 2004, 1997, 1995, 2006, 2016, 2013, 1999, 2002, 2019,
+     2012, 2020, 2029, 2031, 2027, 2026, 2028, 2038, 2034, 2036,
+     2037, 2040, 2043, 2048, 2049, 2052, 2050, 2053, 2057, 2058,
+     2060, 6988, 2062, 2066, 6988, 2065, 2067, 2068, 2090, 2069,
+     2072, 2073, 2082, 2071, 2094, 2085, 2083, 2102, 2091, 2109,
+     2104, 2110, 2112, 2114, 2115, 2119, 2117, 2118, 2121, 2123,
+     2125, 2133, 2135, 2139, 2146, 2149, 2127, 2150, 2153, 2136,
+     2148, 2074, 2168, 2151, 2152, 2156, 2154, 2159, 2172, 2165,
+     2155, 2161, 2162, 2164, 2179, 2184, 2180, 2186, 2189, 2190,
+
+     2191, 2192, 2197, 2199, 2193, 6988, 2208, 2201, 2200, 2211,
+     2205, 2220, 2212, 2215, 6988, 2221, 2222, 2223, 2232, 2224,
+     2225, 2235, 2227, 2228, 2229, 2236, 2237, 2241, 2245, 2238,
+     2258, 6988, 2243, 6988, 2253, 2254, 2256, 2257, 2263, 2260,
+     2264, 2265, 2266, 6988, 6988, 2268, 2272, 2282, 2275, 2286,
+     2284, 2285, 2288, 6988, 2287, 2295, 6988, 2298, 2304, 2291,
+     2290, 2292, 2296, 2306, 2297, 2315, 2311, 2322, 2313, 2318,
+     2320, 6988, 2324, 2326, 2317, 2327, 2330, 2321, 2333, 2336,
+     2339, 2340, 6988, 2343, 2345, 2347, 2354, 2351, 2346, 2356,
+     2357, 2358, 2362, 2363, 2364, 2365, 2366, 2373, 2375, 2376,
+
+     2372, 2378, 2387, 2385, 2392, 6988, 2388, 2371, 2391, 2400,
+     2396, 2398, 2395, 2399, 2402, 2403, 2406, 2407, 2405, 2412,
+     2413, 2414, 2415, 2424, 2425, 2421, 2423, 2430, 2427, 2433,
+     2432, 2435, 2441, 2438, 2439, 2440, 2442, 6988, 2443, 2450,
+     2452, 2458, 2461, 2445,  171, 2454, 2455, 2457, 2471, 2464,
+     2475, 2472, 2483, 2484, 2479, 2480, 2486, 2482, 2489, 2490,
+     2491, 2493, 2481, 2494, 2497, 2498, 6988, 2506, 2499, 2502,
+     2507, 2509, 2510, 2518, 6988, 2521, 2526, 2511, 2529, 2524,
+     2519, 2535, 2536, 2539, 2540, 2541, 2542, 2544, 2551, 2543,
+     2550, 2547, 2552, 6988, 2554, 2560, 2562, 2559, 2563, 2566,
+
+     2569, 2572, 2573, 2574, 2577, 2575, 2576, 2582, 2581, 2584,
+     2585, 2586, 2591, 2601, 2596, 2597, 2598, 2599, 2602, 2608,
+     2604, 2609, 2610, 2618, 2611, 6988, 2619, 2615, 2622, 2624,
+     2626, 2627, 2628, 2629, 2645, 2635, 2637, 2640, 2647, 2655,
+     2649, 2650, 2658, 2665, 2667, 2661, 2675, 2671, 2677, 2679,
+     2673, 2683, 2685, 2681, 2686, 2693, 2689, 2691, 2692, 2695,
+     2696, 2705, 2706, 2702, 2638, 2703, 2708, 2710, 2713, 2718,
+     2723, 2725, 6988, 2729, 2730, 2731, 2732, 2740, 2735, 2737,
+     2738, 2742, 2746, 2747, 2748, 2750, 2757, 2752, 2758, 2754,
+     2760, 2763, 2761, 2769, 2765, 2771, 2773, 2776, 2780, 2777,
+
+     2783, 2784, 6988, 2785, 2790, 2787, 2791, 2794, 2796, 2802,
+     2803, 2805, 2797, 2799, 2807, 2809, 2811, 2812, 2814, 2813,
+     2821, 2819, 2823, 2825, 2822, 6988, 2834, 2826, 2830, 2836,
+     2838, 2839, 2844, 2842, 2846, 2852, 2854, 2848, 2855, 2856,
+     2857, 6988, 2864, 2868, 2860, 2867, 2875, 2871, 2873, 2874,
+     2877, 2878, 6988, 2879, 2881, 2883, 2882, 2886, 2887, 2894,
+     2895, 2890, 6988, 2907, 2891, 2900, 2902, 2903, 2904, 2908,
+     2912, 2909, 2914, 2916, 2919, 2928, 2917, 2925, 6988, 2923,
+     2937, 2932, 2935, 2933, 2938, 2943, 2945, 2946, 2947, 2953,
+     2948, 6988, 2965, 2957, 2964, 2972, 2949, 2967, 2969, 2973,
+
+     2974, 2976, 2970, 2977, 2980, 2982, 6988, 2984, 2983, 2986,
+     2989, 2991, 2992, 2994, 3005, 2996, 3000, 3003, 3006, 3009,
+     3011, 3012, 3014, 3018, 3023, 3015, 3017, 3021, 3034, 3027,
+     3032, 3029, 3036, 3045, 3046, 3043, 3047, 3051, 3052, 3044,
+     3053, 3054, 3061, 3062, 3069, 3064, 3066, 6988, 3071, 3068,
+     3073, 3075, 3076, 3077, 3079, 3078, 3080, 3083, 3084, 3090,
+     3086, 3087, 3102, 3105, 3089, 3097, 3107, 3108, 3110, 3111,
+     3112, 3113, 3114, 3121, 3117, 3118, 3120, 3129, 3124, 3128,
+     3136, 3125, 3135, 3137, 3139, 3140, 3141, 3142, 3145, 3147,
+     3149, 3150, 3151, 3153, 3162, 3167, 3168, 3171, 3164, 3172,
+
+     3174, 3176, 6988, 3179, 3180, 3183, 3184, 3186, 3189, 3191,
+     3199, 3190, 3194, 3206, 3203, 3209, 3210, 3192, 3201, 3211,
+     3215, 3222, 3218, 6988, 3221, 6988, 3223, 3224, 3225, 3233,
+     3228, 6988, 3231, 6988, 3234, 3241, 3236, 3238, 3242, 6988,
+     3243, 3232, 3245, 3247, 3249, 3250, 3255, 3257, 3260, 3259,
+     3261, 3262, 3267, 3266, 3268, 3271, 3272, 3273, 3277, 3280,
+     3281, 3282, 3288, 3285, 3290, 3293, 3295, 3299, 3300, 3301,
+     3302, 3303, 6988, 3307, 3309, 3313, 3314, 3304, 3315, 3316,
+     3322, 3323, 3324, 3327, 3329, 3325, 3331, 3336, 3338, 3339,
+     3332, 3346, 3350, 3359, 3340, 3362, 6988, 3343, 3364, 3354,
+
+     3361, 6988, 3365, 3358, 3368, 3371, 3366, 3374, 3375, 3376,
+     3377, 3381, 3383, 3384, 3385, 3393, 3389, 3397, 6988, 3396,
+     3401, 3386, 3407, 3409, 3398, 3418, 3419, 3415, 3423, 3425,
+     3427, 3428, 3417, 3414, 3429, 3431, 3434, 3441, 3442, 3444,
+     3440, 3449, 3439, 3447, 3454, 3450, 3446, 3456, 3458, 3459,
+     3457, 3460, 3461, 3463, 3465, 3466, 3467, 3468, 3473, 6988,
+     3472, 3482, 3478, 3489, 3485, 3486, 3488, 3492, 3493, 6988,
+     3496, 3497, 3498, 3499, 3500, 3504, 3507, 3509, 3510, 3513,
+     3512, 3516, 3520, 3515, 6988, 3524, 6988, 3518, 3534, 3526,
+     3536, 3530, 3538, 3545, 3541, 3546, 3547, 3549, 3550, 3552,
+
+     3551, 3555, 3558, 3560, 3563, 3564, 3568, 3577, 3574, 3565,
+     3569, 3578, 3580, 3583, 3590, 3586, 3588, 6988, 6988, 3587,
+     3592, 3597, 3593, 3595, 3601, 3607, 3605, 3611, 3603, 3613,
+     3615, 3624, 6988, 3625, 3620, 3619, 3626, 3628, 3636, 3627,
+     3638, 3646, 3643, 3644, 3653, 3649, 6988, 3632, 3650, 3657,
+     3654, 3656, 3666, 6988, 3661, 6988, 3662, 3663, 3668, 3670,
+     3671, 3674, 3672, 3675, 3673, 3677, 3679, 3689, 3696, 3698,
+     3694, 3700, 3695, 3701, 3697, 3703, 3704, 3711, 3706, 3708,
+     3709, 6988, 3713, 3714, 3718, 3720, 3721, 3726, 3730, 3723,
+     3729, 6988, 3733, 3736, 3737, 3738, 3739, 3743, 3746, 3747,
+
+     3748, 3756, 3749, 3751, 3757, 3760, 6988, 3761, 3753, 3768,
+     3764, 3766, 3771, 3775, 3778, 3783, 6988, 3785, 3770, 3792,
+     3788, 3789, 3791, 3794, 3795, 3796, 3798, 3799, 3800, 3802,
+     3803, 3808, 3804, 3806, 3813, 3809, 3821, 3823, 3810, 3831,
+     3838, 3824, 6988, 3827, 3834, 3836, 3840, 3837, 3839, 3844,
+     3846, 3849, 3851, 3842, 3864, 3865, 3852, 3854, 3859, 3868,
+     3870, 3877, 3869, 6988, 3882, 3861, 3884, 3881, 3883, 3885,
+     3890, 3887, 3891, 3893, 3894, 3895, 3897, 3898, 3899, 3901,
+     3910, 3905, 3911, 3912, 3913, 3920, 3915, 6988, 3927, 3922,
+     3923, 3932, 3928, 3925, 3943, 3941, 3929, 3942, 3945, 3946,
+
+     3947, 3951, 3952, 3953, 3956, 3957, 6988, 6988, 3959, 3960,
+     3961, 6988, 3964, 3962, 3975, 3965, 3967, 3968, 3976, 3979,
+     3978, 3980, 3992, 3982, 3984, 6988, 3994, 3990, 4002, 3997,
+     3998, 4007, 4009, 6988, 3999, 4010, 4013, 4014, 4015, 4003,
+     4016, 4022, 4020, 4026, 4021, 4027, 4030, 4034, 4042, 4037,
+     4033, 4040, 6988, 4038, 4041, 4045, 4047, 4043, 4049, 4051,
+     6988, 4052, 4055, 4061, 4064, 4056, 4073, 4074, 4069, 4076,
+     4077, 4079, 4081, 4082, 4083, 4084, 4086, 4094, 4089, 4090,
+     4091, 4095, 4102, 4109, 4111, 6988, 4112, 4113, 4097, 4119,
+     6988, 4123, 4126, 4133, 6988, 4134, 4114, 4130, 4131, 4138,
+
+     6988, 4136, 4137, 4139, 4144, 4142, 4152, 4147, 4155, 4154,
+     4156, 4150, 4157, 4159, 6988, 4160, 4158, 4161, 6988, 4165,
+     4163, 4174, 4179, 4176, 4186, 4181, 4183, 4184, 4182, 6988,
+     4189, 6988, 4192, 4185, 4198, 6988, 4193, 4200, 4201, 4203,
+     4204, 4209, 4210, 4208, 4217, 4207, 4219, 4218, 4220, 4221,
+     4224, 4232, 4222, 4233, 4223, 4230, 6988, 4234, 4231, 4238,
+     4243, 4237, 4250, 4245, 4248, 4253, 4256, 4255, 6988, 6988,
+     4259, 6988, 4262, 4263, 4264, 4266, 6988, 4269, 4267, 4276,
+     4099, 4271, 4273, 4277, 4286, 4283, 6988, 4288, 4289, 6988,
+     4278, 4292, 4299, 4294, 4296, 4297, 4300, 4304, 4302, 4306,
+
+     4309, 4310, 4313, 4312, 4307, 4314, 4330, 6988, 4315, 4316,
+     4325, 4318, 4323, 4326, 4331, 4338, 4340, 6988, 4342, 4348,
+     4344, 4351, 4345, 6988, 4354, 6988, 4353, 4355, 4357, 4359,
+     4358, 4372, 6988, 4365, 4368, 4374, 4370, 4375, 4376, 4379,
+     4381, 4383, 4385, 4387, 4394, 4390, 4389, 4392, 4399, 4397,
+     6988, 4391, 4400, 4409, 4411, 4406, 4413, 4415, 4422, 4418,
+     4419, 4420, 4424, 4426, 4427, 4429, 4433, 4436, 4437, 4431,
+     6988, 4443, 4441, 4444, 4448, 4457, 4452, 4454, 4455, 6988,
+     4458, 4460, 4461, 6988, 4459, 4462, 4468, 4474, 4471, 4475,
+     4476, 4479, 4478, 4483, 4481, 4480, 6988, 4486, 4487, 4484,
+
+     4500, 4501, 4502, 6988, 6988, 4507, 6988, 4508, 4492, 4509,
+     4510, 4491, 4512, 4518, 4520, 4523, 4519, 4525, 4527, 4530,
+     4532, 6988, 4533, 4540, 4536, 4547, 4548, 4549, 4550, 4551,
+     4554, 6988, 6988, 4539, 4555, 4557, 4561, 4562, 4564, 4565,
+     4573, 4572, 4568, 4579, 4575, 4588, 6988, 4585, 4571, 4586,
+     4584, 6988, 4587, 4592, 4593, 4594, 4595, 4596, 4599, 4598,
+     4601, 4602, 4608, 4613, 4605, 4621, 4610, 4603, 4619, 4611,
+     4622, 4625, 4627, 4631, 4633, 6988, 4634, 4635, 4636, 4638,
+     4639, 4643, 4644, 4645, 4646, 4647, 4656, 6988, 4659, 6988,
+     4648, 4651, 4664, 4488, 4652, 4676, 4673, 4677, 4669, 4671,
+
+     4679, 4683, 4687, 4688, 4694, 4681, 4689, 4697, 4699, 4695,
+     4706, 4709, 4710, 6988, 4711, 4701, 4703, 4712, 4714, 4718,
+     4719, 4726, 4722, 4728, 4720, 4729, 4731, 4733, 4736, 4737,
+     4739, 4741, 4742, 6988, 4743, 4745, 4747, 4752, 4749, 4753,
+     4754, 4759, 4763, 4769, 4757, 4765, 4770, 6988, 4771, 4773,
+     4775, 6988, 4777, 4778, 4781, 4783, 4784, 4790, 4782, 4791,
+     4785, 4787, 6988, 4795, 4799, 4653, 4803, 4805, 4806, 4807,
+     4808, 4809, 4811, 4812, 4813, 6988, 4821, 4818, 4827, 4835,
+     4825, 4826, 4828, 4836, 4829, 6988, 4837, 4838, 4846, 4844,
+     4853, 4854, 4845, 4852, 4862, 4858, 4860, 4857, 4861, 4868,
+
+     4864, 4869, 4870, 4872, 4875, 4883, 4886, 4884, 6988, 4876,
+     6988, 4885, 4890, 4891, 4893, 4894, 4897, 4900, 4902, 4898,
+     6988, 4908, 4909, 4911, 4904, 4912, 6988, 4914, 4913, 4915,
+     4916, 6988, 4931, 4917, 4923, 4927, 4933, 4935, 6988, 4938,
+     4941, 4940, 4948, 4952, 4947, 4950, 4951, 4953, 4955, 4957,
+     4958, 4959, 4968, 4961, 4964, 6988, 4966, 4973, 4979, 4980,
+     4981, 4963, 4974, 4982, 4984, 4990, 4987, 6988, 4991, 4992,
+     4993, 4994, 4995, 4997, 4998, 4999, 5011, 5010, 5006, 5003,
+     5008, 5015, 5017, 5019, 5024, 6988, 5020, 5025, 5026, 5035,
+     5028, 5037, 6988, 5033, 6988, 5030, 5045, 5047, 5048, 5038,
+
+     5052, 6988, 6988, 5054, 5049, 5055, 5057, 5059, 6988, 6988,
+     5061, 6988, 5062, 6988, 5063, 5065, 6988, 6988, 5066, 5069,
+     5070, 5073, 5074, 5076, 6988, 5083, 6988, 5090, 5072, 5085,
+     5087, 5088, 5089, 6988, 5093, 5096, 5097, 5101, 5105, 6988,
+     5098, 5100, 5108, 5111, 5115, 6988, 5117, 5118, 5114, 5119,
+     6988, 5122, 5125, 5126, 5120, 5127, 5128, 5134, 5140, 5132,
+     5135, 5143, 5145, 5144, 5147, 5148, 5152, 5157, 5159, 5161,
+     5154, 5162, 5163, 5169, 5171, 5173, 5165, 5175, 5176, 5178,
+     5179, 5181, 5183, 5184, 5186, 5190, 5191, 5187, 5194, 5192,
+     5193, 5205, 5196, 5206, 5208, 5209, 5212, 5214, 5215, 5217,
+
+     5219, 5220, 5222, 5221, 5224, 5227, 5229, 5231, 5232, 6988,
+     5233, 5237, 5225, 5239, 5241, 5245, 5249, 5253, 5257, 5260,
+     6988, 5262, 6988, 5264, 5258, 5266, 5267, 5268, 6988, 5269,
+     5270, 5271, 5272, 5273, 5274, 5278, 5275, 5279, 5281, 5284,
+     6988, 5287, 5301, 5290, 5296, 5298, 5303, 6988, 5305, 5309,
+     5306, 5310, 5311, 5312, 5315, 5313, 5316, 5317, 5320, 5325,
+     5322, 5327, 5323, 5335, 5336, 6988, 5338, 5341, 5350, 5345,
+     5346, 5347, 5348, 5349, 5351, 5356, 5352, 5355, 5357, 5365,
+     5368, 5374, 6988, 5358, 6988, 5369, 5375, 5376, 5379, 5380,
+     5381, 5382, 5384, 6988, 6988, 5387, 5383, 5389, 5391, 5393,
+
+     5395, 5397, 5398, 5400, 5406, 6988, 5404, 5405, 5412, 5418,
+     5414, 6988, 5420, 5421, 5422, 5424, 6988, 5425, 5429, 5426,
+     5431, 5434, 5428, 5440, 5443, 5436, 5444, 5446, 5449, 5451,
+     6988, 6988, 6988, 6988, 5452, 5454, 5456, 5457, 5459, 5461,
+     5462, 5464, 5466, 5468, 5463, 5465, 6988, 5478, 6988, 6988,
+     5479, 5481, 5482, 5485, 5487, 5488, 5489, 5491, 6988, 5493,
+     6988, 5492, 5500, 5494, 5502, 5504, 5506, 5510, 5513, 5514,
+     5515, 5516, 5517, 5524, 5522, 5525, 5523, 5528, 5531, 5537,
+     6988, 6988, 5519, 5540, 5541, 5548, 5545, 5546, 5543, 5555,
+     5552, 5553, 5554, 5559, 5560, 5561, 5570, 5571, 5562, 5566,
+
+     5573, 6988, 5569, 5575, 5581, 6988, 5577, 6988, 5583, 5585,
+     5586, 5579, 5587, 5592, 5593, 5594, 5596, 5598, 6988, 6988,
+     5599, 5610, 5606, 6988, 6988, 5607, 5608, 5611, 5614, 5609,
+     5615, 5618, 5620, 5621, 5623, 5619, 6988, 5624, 6988, 5625,
+     5629, 5632, 5637, 5646, 5647, 5642, 5649, 5651, 5644, 5648,
+     5653, 6988, 5654, 5655, 6988, 5665, 5661, 5666, 5657, 5675,
+     5667, 6988, 5676, 5669, 5679, 5681, 6988, 5684, 5685, 5686,
+     5688, 6988, 5693, 6988, 5690, 5694, 5695, 5702, 5700, 6988,
+     5698, 5703, 6988, 5706, 5709, 5714, 5716, 5711, 5715, 6988,
+     5721, 5717, 6988, 5722, 5726, 5729, 5732, 5723, 5734, 5727,
+
+     5736, 5737, 5745, 5744, 5746, 6988, 6988, 5747, 5748,  135,
+     5758, 5749, 5755, 5756, 5759, 5766, 5761, 5763, 5769, 6988,
+     6988, 5773, 6988, 5762, 5771, 6988, 5764, 5777, 5781, 5779,
+     5783, 5784, 5785, 5787, 5791, 5792, 5800, 5793, 5794, 5804,
+     6988, 5815, 5822, 5798, 5819, 5823, 5825, 5827, 5829, 5831,
+     5656, 5833, 5820, 5808, 5835, 5836, 5837, 5839, 5842, 5843,
+     5845, 6988, 5847, 5853, 5854, 5855, 5848, 6988, 5859, 5860,
+     5869, 5870, 6988, 5872, 5864, 5874, 5876, 5877, 6988, 5862,
+     5879, 5882, 5795, 5884, 5887, 5888, 5889, 5896, 6988, 5892,
+     5891, 5894, 6988, 6988, 6988, 5897, 5908, 5901, 6988, 5910,
+
+     5903, 5911, 5912, 6988, 5914, 5916, 5919, 6988, 6988, 6988,
+     5918, 5921, 5920, 6988, 5922, 5933, 6988, 5923, 6988, 5924,
+     6988, 5932, 5934, 5940, 5938, 6988, 5944, 5946, 5948, 5950,
+     6988, 5953, 5956, 5958, 5960, 5961, 5963, 5965, 6988, 5972,
+     5968, 5971, 5975, 5967, 5977, 5978, 5979, 5980, 5992, 5983,
+     5988, 6988, 5990, 5991, 5995, 6001, 5993, 6003, 6004, 6988,
+     5997, 6988, 6006, 6988, 6007, 6009, 6010, 6011, 6016, 6013,
+     6014, 6024, 6021, 6027, 6030, 6028, 6034, 6035, 6039, 6036,
+     6988, 6988, 6046, 6042, 6044, 6988, 6041, 6988, 6050, 6988,
+     6051, 6053, 6054, 6056, 6058, 6988, 6988, 6065, 6057, 6066,
+
+     6074, 6060, 6070, 6988, 6078, 6071, 6073, 6081, 6988, 6082,
+     6988, 6084, 6093, 6086, 6988, 6088, 6095, 6097, 6090, 6098,
+     6100, 6101, 6102, 6103, 6113, 6106, 6108, 6109, 6115, 6116,
+     6121, 6127, 6132, 6988, 6988, 6988, 6122, 6117, 6141, 6139,
+     6140, 6142, 6126, 6988, 6145, 6147, 6148, 6149, 6157, 6152,
+     6155, 6988, 6159, 6156, 6158, 6160, 6162, 6163, 6164, 6166,
+     6988, 6177, 6179, 6185, 6167, 6181, 6186, 6188, 6190, 6193,
+     6197, 6194, 6198, 6205, 6201, 6988, 6203, 6200, 6988, 6209,
+     6988, 6204, 6988, 6210, 6211, 6212, 6213, 6214, 6988, 6218,
+     6219, 6220, 6222, 6221, 6225, 6227, 6229, 6988, 6230, 6243,
+
+     6238, 6240, 6242, 6988, 6988, 6244, 6250, 6988, 6252, 6255,
+     6253, 6262, 6254, 6261, 6264, 6268, 6988, 6270, 6271, 6257,
+     6272, 6275, 6278, 6279, 6988, 6281, 6282, 6283, 6284, 6988,
+     6287, 6286, 6291, 6293, 6294, 6988, 6295, 6296, 6312, 6310,
+     6988, 6297, 6318, 6298, 6988, 6988, 6988, 6320, 6323, 6324,
+     6988, 6988, 6988, 6988, 6326, 6327, 6288, 6330, 6988, 6331,
+     6988, 6334, 6338, 6342, 6344, 6350, 6337, 6988, 6349, 6351,
+     6353, 6345, 6355, 6988, 6988, 6356, 6358, 6359, 6361, 6365,
+     6362, 6988, 6988, 6367, 6368, 6370, 6371, 6372, 6988, 6373,
+     6376, 6384, 6377, 6388, 6394, 6396, 6385, 6397, 6398, 6405,
+
+     6409, 6390, 6401, 6406, 6408, 6412, 6411, 6419, 6420, 6422,
+     6424, 6426, 6421, 6429, 6988, 6988, 6432, 6988, 6438, 6433,
+     6988, 6435, 6988, 6440, 6444, 6446, 6448, 6988, 6450, 6452,
+     6455, 6457, 6441, 6988, 6459, 6461, 6463, 6464, 6458, 6465,
+     6988, 6472, 6469, 6475, 6466, 6476, 6478, 6479, 6483, 6988,
+     6477, 6487, 6988, 6988, 6484, 6491, 6493, 6495, 6497, 6988,
+     6498, 6505, 6500, 6503, 6504, 6506, 6509, 6988, 6507, 6511,
+     6988, 6988, 6512, 6517, 6988, 6988, 6510, 6518, 6988, 6988,
+     6988, 6988, 6988, 6988, 6988, 6988, 6521, 6527, 6988, 6988,
+     6522, 6529, 6534, 6988, 6540, 6988, 6531, 6537, 6541, 6542,
+
+     6988, 6543, 6988, 6544, 6547, 6548, 6549, 6550, 6555, 6559,
+     6552, 6560, 6561, 6563, 6564, 6566, 6568, 6569, 6570, 6576,
+     6573, 6583, 6584, 6585, 6988, 6988, 6988, 6586, 6587, 6594,
+     6589, 6596, 6601, 6606, 6609, 6597, 6599, 6610, 6612, 6615,
+     6603, 6611, 6624, 6621, 6622, 6625, 6632, 6623, 6637, 6639,
+     6988, 6641, 6614, 6627, 6645, 6988, 6633, 6988, 6642, 6988,
+     6988, 6650, 6651, 6647, 6653, 6662, 6663, 6654, 6658, 6659,
+     6661, 6665, 6988, 6670, 6988, 6988, 6988, 6667, 6673, 6988,
+     6675, 6676, 6988, 6674, 6677, 6679, 6683, 6684, 6681, 6685,
+     6686, 6702, 6988, 6988, 6687, 6692, 6695, 6704, 6706, 6705,
+
+     6708, 6712, 6713, 6715, 6716, 6725, 6988, 6722, 6723, 6727,
+     6988, 6729, 6724, 6730, 6731, 6732, 6740, 6736, 6739, 6988,
+     6741, 6988, 6745, 6747, 6748, 6738, 6746, 6749, 6760, 6758,
+     6754, 6988, 6764, 6768, 6766, 6770, 6772, 6774, 6775, 6776,
+     6778, 6781, 6787, 6784, 6791, 6792, 6788, 6796, 6793, 6988,
+     6803, 6794, 6988, 6800, 6804, 6797, 6806, 6810, 6988, 6815,
+     6808, 6817, 6818, 6821, 6822, 6988, 6824, 6831, 6826, 6988,
+     6832, 6988, 6988, 6834, 6828, 6835, 6841, 6843, 6988, 6988,
+     6988, 6868, 6875, 6882, 6889, 6896, 6903, 6910,   88, 6917,
+     6924, 6931, 6938, 6945, 6952, 6959, 6966, 6973, 6980
+
     } ;
 
-static const flex_int16_t yy_def[3583] =
+static yyconst flex_int16_t yy_def[3600] =
     {   0,
-     3564,    1, 3565, 3565, 3566, 3566, 3567, 3567, 3568, 3568,
-     3569, 3569, 3570, 3570, 3571, 3571, 3564, 3572, 3564, 3564,
-     3564, 3564, 3573, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3574, 3564, 3564, 3564,
-     3574, 3575, 3564, 3564, 3564, 3575, 3576, 3564, 3564, 3564,
-     3564, 3576, 3577, 3564, 3564, 3564, 3577, 3578, 3564, 3579,
-     3564, 3578, 3578, 3580, 3564, 3564, 3564, 3564, 3580, 3581,
-     3564, 3564, 3564, 3581, 3572, 3572, 3564, 3582, 3573, 3582,
-     3573, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3574,
-     3574, 3575, 3575, 3576, 3576, 3564, 3577, 3577, 3578, 3578,
-     3579, 3579, 3578, 3580, 3580, 3564, 3581, 3581, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3578, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3578, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572,
-     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3578, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3578,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3564,
-     3564, 3572, 3564, 3564, 3572, 3572, 3564, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3578, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3564, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572,
-
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3564,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572,
-
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3564, 3572, 3572, 3572, 3572, 3572, 3578, 3578, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
-
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3578, 3572,
-     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572,
-
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572,
-
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572,
-     3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
-     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3578, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572,
-     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572,
-     3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3564, 3572, 3572, 3572, 3578, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572,
-
-     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572, 3572, 3572,
-
-     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3564,
-     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3564,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-
-     3572, 3578, 3572, 3564, 3572, 3572, 3572, 3564, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572,
-     3564, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572, 3564,
-     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3564, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572,
-
-     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572,
-     3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572,
-     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572,
-     3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
-     3572, 3564, 3564, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
-
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
-     3572, 3572, 3578, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
-     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3564,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-
-     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3564, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572,
-
-     3572, 3572, 3572, 3572, 3572, 3578, 3572, 3564, 3572, 3572,
-     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3564, 3572,
-     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572,
-     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572,
-     3572, 3572, 3572, 3572, 3564, 3564, 3572, 3564, 3572, 3564,
-
-     3572, 3572, 3564, 3564, 3572, 3572, 3572, 3572, 3572, 3572,
-     3564, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
-     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572,
-     3572, 3564, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3578, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572,
-
-     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3564, 3572,
-     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572,
-     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3564,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3564,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3564, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572,
-
-     3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3564, 3564, 3564, 3564, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3564, 3572, 3564, 3564, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3578, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3564,
-     3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-
-     3572, 3572, 3564, 3564, 3572, 3572, 3572, 3564, 3564, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3564, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3564, 3572,
-     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572,
-     3564, 3572, 3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572,
-     3572, 3572, 3572, 3564, 3572, 3572, 3564, 3572, 3572, 3572,
-     3572, 3572, 3572, 3564, 3572, 3572, 3564, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
-     3564, 3572, 3572, 3578, 3572, 3572, 3572, 3572, 3572, 3572,
-
-     3572, 3572, 3572, 3564, 3564, 3572, 3564, 3572, 3572, 3564,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
-     3564, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572,
-     3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3564, 3572, 3572, 3572, 3564, 3564, 3564, 3572, 3572,
-     3572, 3564, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572,
-     3564, 3564, 3564, 3572, 3572, 3572, 3564, 3572, 3572, 3564,
-
-     3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572, 3564, 3572,
-     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3564, 3572, 3564, 3572, 3564, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3564, 3564, 3572, 3572, 3572, 3564, 3572,
-     3564, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3564, 3564,
-     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572,
-     3572, 3564, 3572, 3564, 3572, 3572, 3572, 3564, 3572, 3572,
-
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3564, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572,
-     3572, 3564, 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572,
-     3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3564, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572, 3572,
-     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
-
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572,
-     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3564, 3572,
-     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3564, 3564, 3564,
-     3572, 3572, 3572, 3564, 3564, 3564, 3564, 3572, 3572, 3572,
-     3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572,
-     3564, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572, 3572,
-     3572, 3572, 3572, 3572, 3564, 3564, 3572, 3572, 3572, 3572,
-     3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572,
-
-     3564, 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572,
-     3564, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572,
-     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3564, 3572, 3572, 3564, 3564, 3572, 3572, 3572,
-     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3564, 3572, 3572, 3564, 3564, 3572, 3572, 3564, 3564, 3572,
-     3572, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3572,
-     3572, 3564, 3564, 3572, 3572, 3572, 3564, 3572, 3564, 3572,
-     3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3564,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3564, 3572,
-     3564, 3572, 3564, 3564, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3564, 3564, 3564,
-     3572, 3572, 3564, 3572, 3572, 3564, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
-     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572,
-
-     3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
-     3572, 3572, 3564, 3572, 3572, 3564, 3572, 3572, 3572, 3572,
-     3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572,
-     3572, 3572, 3564, 3572, 3564, 3564, 3572, 3572, 3572, 3572,
-     3572, 3564, 3564,    0, 3564, 3564, 3564, 3564, 3564, 3564,
-     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
-     3564, 3564
+     3581,    1, 3582, 3582, 3583, 3583, 3584, 3584, 3585, 3585,
+     3586, 3586, 3587, 3587, 3588, 3588, 3581, 3589, 3581, 3581,
+     3581, 3581, 3590, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3591, 3581, 3581, 3581,
+     3591, 3592, 3581, 3581, 3581, 3592, 3593, 3581, 3581, 3581,
+     3581, 3593, 3594, 3581, 3581, 3581, 3594, 3595, 3581, 3596,
+     3581, 3595, 3595, 3597, 3581, 3581, 3581, 3581, 3597, 3598,
+     3581, 3581, 3581, 3598, 3589, 3589, 3581, 3599, 3590, 3599,
+     3590, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3591,
+     3591, 3592, 3592, 3593, 3593, 3581, 3594, 3594, 3595, 3595,
+     3596, 3596, 3595, 3597, 3597, 3581, 3598, 3598, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3595, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3595, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3581, 3589, 3581, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589,
+     3589, 3595, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3595, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3581, 3589, 3581, 3581, 3589, 3581, 3581, 3589,
+     3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3595, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3581, 3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3581, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3581, 3581, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3581, 3589, 3589, 3581, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589,
+     3589, 3589, 3589, 3595, 3595, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3581, 3589, 3589, 3589, 3595, 3589, 3589, 3589,
+     3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3581, 3589, 3581, 3589, 3589, 3589, 3589,
+     3589, 3581, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3581,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3581, 3589, 3589, 3589, 3589, 3595, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589,
+
+     3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3581, 3589, 3581, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581, 3581, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589,
+     3589, 3589, 3589, 3581, 3589, 3581, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3581, 3589, 3589, 3589, 3595, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3589, 3589, 3589, 3581, 3581, 3589, 3589,
+     3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589,
+     3581, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589,
+
+     3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3595, 3589, 3581, 3589, 3589, 3589, 3581, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581,
+     3589, 3581, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581, 3581,
+     3589, 3581, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3581,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589,
+     3589, 3589, 3589, 3581, 3589, 3581, 3589, 3589, 3589, 3589,
+     3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581,
+     3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3581, 3581, 3589, 3581, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3581, 3589, 3589, 3595, 3589, 3589, 3589, 3589, 3589,
+     3589, 3581, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589,
+     3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3581,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589,
+     3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589,
+     3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3595, 3589,
+     3581, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589,
+     3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589,
+     3589, 3589, 3581, 3589, 3581, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3581, 3581, 3589, 3589, 3589, 3589, 3589, 3581, 3581,
+     3589, 3581, 3589, 3581, 3589, 3589, 3581, 3581, 3589, 3589,
+     3589, 3589, 3589, 3589, 3581, 3589, 3581, 3589, 3589, 3589,
+     3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3581,
+     3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589,
+     3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3589, 3595, 3589, 3589, 3589, 3589, 3581,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3581, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3581, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3581, 3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3581, 3589, 3581, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3581, 3581, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589,
+     3589, 3581, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3581, 3581, 3581, 3581, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3581, 3581,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589,
+     3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3595, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3581, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3581, 3589, 3589, 3589, 3581, 3589, 3581, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581, 3581,
+     3589, 3589, 3589, 3581, 3581, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3581, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3581, 3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589,
+     3589, 3581, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589,
+     3589, 3581, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3581,
+     3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3581,
+     3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3589, 3589, 3581, 3581, 3589, 3589, 3595,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581,
+     3581, 3589, 3581, 3589, 3589, 3581, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3581, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589,
+     3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3581, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589,
+     3589, 3589, 3581, 3581, 3581, 3589, 3589, 3589, 3581, 3589,
+
+     3589, 3589, 3589, 3581, 3589, 3589, 3589, 3581, 3581, 3581,
+     3589, 3589, 3589, 3581, 3589, 3589, 3581, 3589, 3581, 3589,
+     3581, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589,
+     3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581,
+     3589, 3581, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3581, 3581, 3589, 3589, 3589, 3581, 3589, 3581, 3589, 3581,
+     3589, 3589, 3589, 3589, 3589, 3581, 3581, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589, 3581, 3589,
+     3581, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3581, 3581, 3581, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3581, 3589,
+     3581, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3581, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589,
+
+     3589, 3589, 3589, 3581, 3581, 3589, 3589, 3581, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589, 3581,
+     3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589,
+     3581, 3589, 3589, 3589, 3581, 3581, 3581, 3589, 3589, 3589,
+     3581, 3581, 3581, 3581, 3589, 3589, 3589, 3589, 3581, 3589,
+     3581, 3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589,
+     3589, 3589, 3589, 3581, 3581, 3589, 3589, 3589, 3589, 3589,
+     3589, 3581, 3581, 3589, 3589, 3589, 3589, 3589, 3581, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3581, 3581, 3589, 3581, 3589, 3589,
+     3581, 3589, 3581, 3589, 3589, 3589, 3589, 3581, 3589, 3589,
+     3589, 3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589,
+     3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581,
+     3589, 3589, 3581, 3581, 3589, 3589, 3589, 3589, 3589, 3581,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589,
+     3581, 3581, 3589, 3589, 3581, 3581, 3589, 3589, 3581, 3581,
+     3581, 3581, 3581, 3581, 3581, 3581, 3589, 3589, 3581, 3581,
+     3589, 3589, 3589, 3581, 3589, 3581, 3589, 3589, 3589, 3589,
+
+     3581, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3581, 3581, 3581, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3581, 3589, 3589, 3589, 3589, 3581, 3589, 3581, 3589, 3581,
+     3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3581, 3589, 3581, 3581, 3581, 3589, 3589, 3581,
+     3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3581, 3581, 3589, 3589, 3589, 3589, 3589, 3589,
+
+     3589, 3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589,
+     3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581,
+     3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3581, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589,
+     3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3581,
+     3589, 3589, 3581, 3589, 3589, 3589, 3589, 3589, 3581, 3589,
+     3589, 3589, 3589, 3589, 3589, 3581, 3589, 3589, 3589, 3581,
+     3589, 3581, 3581, 3589, 3589, 3589, 3589, 3589, 3581, 3581,
+        0, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581,
+     3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581
+
     } ;
 
-static const flex_int16_t yy_nxt[7002] =
+static yyconst flex_int16_t yy_nxt[7029] =
     {   0,
        18,   19,   20,   21,   22,   23,   22,   18,   18,   18,
        18,   18,   22,   24,   25,   26,   27,   28,   29,   30,
@@ -1626,751 +1641,753 @@ static const flex_int16_t yy_nxt[7002] =
       153,  181,  196,  189,  154,  155,  164,   86,  164,  164,
        90,  164,   90,   90,  169,   90,  169,  169,  174,  169,
       174,  174,  172,  174,   85,   86,   85,   85,   90,   85,
-       90,   90,  289,   90,   86,   85,   86,  182,   86,   90,
+       90,   90,  290,   90,   86,   85,   86,  182,   86,   90,
        91,  185,  190,  188,   86,   86,  197,   86,  191,   86,
-      192,   86,   86,  207,  186,   86,   86,   86,   86,   86,
-
-      178,  199,  193,  194,   86,  198,   86,  195,   86,  200,
-       86,  201,  245,  209,  205,  202,  203,  206,  208,   86,
-      210,  215,  211,  204,   86,  212,   86,   86,   86,  217,
-       86,  218,   86,  220,   86,   86,  226,  221,  213,  214,
-       86,  227,  225,  223,   86,   86,  216,  229,  224,   86,
-       86,  219,   86,  222,  230,  232,  233,  228,   86,   86,
-       86,   86,  231,  235,   86,  237,   86,  240,  234,  238,
-       86,   86,   86,   86,  242,   86,  236,  371,   86,   86,
-       86,  239,   86,  243,  241,  248,  251,  252,   86,  244,
-      253,  247,   86,   86,   86,  254,  249,  246,  260,  257,
-
-      250,  261,   86,   86,  259,  263,   86,   86,   86,   86,
-      258,  267,  255,   86,  264,  256,   86,   86,  262,  266,
-      268,  270,  160,  160,   86,  162,  265,  269,  162,  273,
-      164,  271,  164,  164,  337,  164,  167,  167,  169,   86,
-      169,  169,   90,  169,   90,   90,  170,   90,  174,  272,
-      174,  174,  274,  174,  172,  177,  177,  276,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,  275,  278,   86,
-      281,  284,  280,   86,  277,  279,   86,  287,  286,  283,
-      176,  290,  282,   86,  288,  285,   86,  291,  292,   86,
-      293,  317,   86,  296,   86,  294,   86,  301,  297,   86,
-
-       86,   86,   86,  298,   86,   86,  304,  305,  308,  299,
-      300,  302,  295,   86,   86,   86,  306,  310,   86,  303,
-      311,   86,   86,   86,   86,  307,   86,  318,   86,   86,
-       86,  319,   86,  325,  312,  313,  315,  309,  314,  316,
-       86,  320,   86,  329,  321,  328,  322,  330,  327,  326,
-      332,   86,   86,   86,  741,  334,   86,  338,  323,  331,
-      324,   86,  335,   86,   86,  340,   86,  342,   86,  339,
-      341,   86,  333,   86,   86,   86,  343,  336,  345,   86,
-       86,  344,   86,   86,   86,  347,   86,   86,  346,  349,
-       86,   86,  354,   86,  352,  350,   86,   86,   86,   86,
-
-      348,  365,  355,  353,  351,  359,  356,   86,   86,   86,
-      360,   86,  357,  361,   86,   86,  362,  358,  363,  368,
-       86,  364,   86,   86,   86,   86,  374,  366,  367,  370,
-      373,  375,   86,   86,  377,  369,   86,   86,  382,  372,
-       86,  376,   86,  380,   86,  378,  381,   86,  384,   86,
-      379,  385,   86,   86,   86,  170,   86,   86,  388,   86,
-       86,   86,  383,  395,  391,  393,  396,  389,  386,   86,
-       86,   86,   86,   86,  399,  387,  390,   86,  397,  392,
-       86,   86,  398,   86,  394,  400,   86,   86,   86,  402,
-      406,  407,   86,  409,  404,  401,   86,  403,   86,  410,
-
-      408,   86,   86,   86,  412,   86,  413,   86,   86,   86,
-       86,  416,  405,   86,  417,  420,   86,   86,  175,  411,
-      422,   86,  418,  414,  415,  419,   86,   86,  424,  423,
-       86,  421,   86,  429,   86,  428,  425,   86,  427,   86,
-      430,   86,   86,   86,   86,   86,   86,   86,  436,   86,
-       86,   86,  437,  426,  439,   86,   86,  435,   86,  442,
-      433,  432,  447,  438,  434,  431,   86,   86,   86,  444,
-      440,   86,   86,  441,  443,  448,   86,   86,   86,  446,
-       86,  463,   86,  449,   86,  456,  445,   86,   86,  458,
-      466,  467,  170,  464,  465,  457,  450,   86,   86,  451,
-
-      459,  470,  460,  468,  452,  453,  454,  455,  469,   86,
-      471,   86,   86,   86,   86,  461,   86,   86,  462,  480,
-       86,   86,   86,  478,   86,  482,   86,  481,  474,  472,
-      479,  475,  473,   86,  476,  477,   86,  483,  485,   86,
-       86,  484,   86,   86,  490,   86,  491,   86,  492,   86,
-       86,  486,   86,  509,  496,  497,   86,  493,  489,  487,
-       86,   86,  488,   86,  494,  498,   86,  495,  499,  501,
-      503,  502,   86,   86,  500,  504,   86,  510,  511,   86,
-       86,  512,  508,   86,   86,   86,   86,  526,  505,   86,
-       86,  506,  581,  507,   86,  513,   86,  514,   86,  530,
-
-      525,  528,   86,  515,  529,  527,   86,  516,   86,  531,
-      533,  543,  517,  542,  546,  518,   86,  519,  544,  520,
-      170,  547,   86,  545,   86,  532,   86,   86,  553,   86,
-       86,  551,  521,   86,   86,  522,   86,  523,  168,  524,
-       86,  548,  534,  535,  550,  549,  552,  556,   86,   86,
-      555,  557,  536,  537,  538,  539,  540,   86,   86,  541,
-       86,  558,  554,  559,   86,   86,  566,   86,  561,  562,
-      564,   86,   86,   86,  567,  563,   86,   86,  571,  565,
-       86,  560,   86,  569,   86,   86,   86,  568,   86,   86,
-      570,  574,  575,  576,   86,   86,  573,   86,  578,  582,
-
-      583,   86,  572,  580,  579,  577,   86,   86,   86,  588,
-      585,  586,   86,  589,   86,   86,  590,  584,  604,   86,
-       86,  166,   86,  607,   86,   86,  587,   86,  591,  593,
-      594,  595,  592,   86,  605,  609,  608,   86,  606,   86,
-      615,   86,  596,  611,  597,   86,   86,   86,   86,  613,
-      598,  612,   86,  614,   86,  616,  618,   86,  599,  600,
-      610,   86,  601,  602,   86,  617,  603,   86,  621,  619,
-      622,   86,   86,   86,  620,  623,   86,   86,   86,   86,
-      628,   86,  626,  627,   86,   86,   86,  624,  629,   86,
-       86,   86,  634,  630,  625,  635,   86,   86,  633,   86,
-
-      636,   86,  638,  632,  631,   86,   86,  641,   86,  637,
-      639,   86,  640,   86,  643,   86,   86,   86,   86,  645,
-       86,  642,   86,  649,   86,  647,   86,   86,   86,  644,
-       86,  657,  677,   86,  651,  659,  646,   86,  648,  658,
-      650,   86,  652,   86,  653,  654,  655,  656,  660,   86,
-       86,   86,   86,   86,  664,   86,  668,   86,  662,  671,
-       86,  663,   86,  661,  667,   86,  665,   86,  666,   86,
-      670,   86,   86,   86,  673,   86,  674,  669,  678,   86,
-       86,   86,   86,  672,  680,   86,   86,   86,   86,  711,
-      679,  675,   86,  676,   86,  683,  681,   86,  695,   86,
-
-      682,   86,  684,  694,  697,  692,   86,  685,  693,  686,
-      699,  696,  165,  698,   86,  687,   86,  688,   86,  700,
-      689,  690,  707,  701,   86,   86,   86,  691,   86,  703,
-       86,  702,   86,  708,  704,  706,   86,  705,   86,  714,
-      709,   86,   86,  716,   86,   86,  710,   86,   86,  720,
-       86,   86,   86,   86,  163,  712,  713,  718,  723,  717,
-       86,  724,  719,   86,   86,   86,  715,   86,  170,  721,
-      727,  729,  730,  722,  728,  731,   86,   86,  726,  725,
-       86,   86,   86,   86,   86,   86,   86,   86,  732,  738,
-      161,   86,  733,  740,  742,  744,  735,   86,  736,  734,
-
-      739,   86,  737,  743,   86,  746,   86,   86,   86,  745,
-      748,   86,   86,   86,   86,   86,  752,   86,  747,  751,
-      757,   86,  749,   86,  753,  758,   86,  750,  760,   86,
-      808,  754,   86,  756,  755,  762,  759,  761,   86,  763,
-       86,   86,  764,   86,  765,   86,  766,   86,   86,   86,
-       86,  767,   86,  768,  771,   86,  773,  769,  770,   86,
-       86,   86,  774,   86,   86,  775,  772,  779,  778,   86,
-       86,   86,   86,   86,  781,   86,  783,   86,   86,  785,
-       86,   86,  777,   86,  776,   86,  788,   86,  792,  780,
-      782,  784,   86,   86,   86,  786,  787,  793,   86,   86,
-
-       86,  790,  789,   86,   86,  800,  795,  791,   86,  802,
-       86,  796,  794,  803,  797,  798,   86,  799,  801,   86,
-      807,  804,   86,   86,  805,  809,   86,  810,   86,   86,
-       86,   86,  813,  812,  806,  814,   86,   86,   86,   86,
-       86,  821,   86,   86,  817,  819,   86,  815,   86,  811,
-       86,  818,  822,   86,  816,   86,   86,  828,   86,  820,
-       86,  834,  826,   86,  829,  823,  825,  827,   86,  824,
-       86,  830,  831,  832,   86,   86,   86,  833,  835,   86,
-       86,  840,   86,   86,  836,  838,  842,   86,  841,   86,
-      837,   86,   86,   86,  843,   86,  846,   86,  839,   86,
-
-      845,  847,   86,  853,  850,   86,  848,  844,  854,   86,
-      849,   86,   86,   86,  855,   86,  856,   86,  851,  852,
-       86,  858,  859,   86,  860,  863,  861,   86,   86,  867,
-       86,   86,  857,  865,  868,   86,   86,  869,  870,  864,
-       86,  862,  871,  866,   86,   86,  873,   86,   86,  872,
-       86,   86,  879,   86,   86,   86,   86,  880,   86,   86,
-       86,   86,   86,  874,  881,  875,  876,   86,   86,  877,
-      886,  878,  884,   86,  882,  883,  889,  888,   86,  887,
-      885,   86,   86,   86,   86,   86,   86,  891,  890,  896,
-      892,   86,   86,   86,   86,   86,   86,   86,  905,  906,
-
-      893,  903,  898,  895,  894,   86,   86,   86,   86,  897,
-      899,  900,  901,  902,   86,   86,   86,   86,   86,  904,
-      907,  911,  910,   86,   86,  909,  908,   86,   86,   86,
-      915,  912,  916,   86,  919,  917,  913,  914,  920,   86,
-       86,   86,  918,   86,   86,  927,   86,  922,   86,  170,
-      923,   86,  925,   86,  928,   86,  929,  921,  924,  930,
-      926,   86,   86,   86,   86,   86,   86,  935,  936,   86,
-       86,  932,   86,  937,   86,  931,  939,   86,  933,  934,
-       86,  938,  943,  941,  944,  940,   86,   86,   86,  942,
-      945,  947,   86,   86,  949,   86,   86,   86,   86,  946,
-
-       86,  950,  951,   86,   86,   86,   86,   86,   86,  178,
-      948,  965,   86,  966,  952,  964,  969,  967,  954,  962,
-      963,   86,  953,   86,   86,  955,   86,  970,  956,   86,
-      971,   86,  957,   86,   86,  958,   86,  968,  974,   86,
-      976,   86,  959,  960,  972,  961,   86,   86,   86,  973,
-     1018,   86,  985,   86,  975,   86,  977,  978,  992,  979,
-      986,  984,  980,   86,   86,   86,  987,  981,  988,  990,
-       86,   86,   86,  982,  983,  989,  994,   86,  998,   86,
-      997,   86,  993,  999,   86,  991, 1000,  995,   86, 1001,
-       86, 1004,   86,   86,  176,  996, 1002, 1003, 1005,   86,
-
-       86,   86, 1006, 1008,   86, 1007,   86,   86, 1009,   86,
-       86,   86,   86, 1010, 1012,   86, 1016,   86,   86, 1019,
-     1015,   86,   86,   86,   86, 1023, 1011, 1034,   86, 1013,
-     1014,   86, 1017, 1024, 1021, 1025,   86, 1026, 1029, 1020,
-       86,   86, 1027,   86,   86, 1022, 1028, 1031,  175,   86,
-     1033,   86,   86,   86, 1032,   86,   86, 1035,   86, 1030,
-     1036, 1037,   86, 1038,   86,   86, 1039,   86,   86,   86,
-     1041, 1042,   86, 1040,   86, 1043, 1047,   86,   86, 1051,
-       86, 1050,   86,   86,   86,   86, 1049, 1044, 1045, 1048,
-       86,   86,   86, 1046,   86,   86,   86, 1056, 1058, 1053,
-
-     1054, 1059, 1052, 1057,   86,   86,   86,   86, 1055,   86,
-       86, 1064,   86, 1067,   86, 1062, 1065,   86, 1060,   86,
-     1063,   86,   86, 1066,   86, 1068,   86, 1073, 1070,   86,
-     1061, 1075,   86, 1069,   86, 1074, 1076,   86,   86, 1078,
-     1072,   86,   86,   86,   86, 1071,   86, 1077,   86,  170,
-       86,   86, 1086, 1079, 1089, 1084,   86,   86, 1080,   86,
-       86, 1081,   86, 1083, 1082, 1090,   86, 1085, 1087, 1091,
-     1088,   86,   86,   86,   86, 1092,   86, 1095, 1098,   86,
-     1094, 1093, 1096, 1099,   86,   86, 1097,   86,   86,   86,
-       86,   86, 1109,   86, 1102, 1100, 1104, 1110,   86, 1101,
-
-       86,   86, 1112,   86,   86, 1115,   86, 1103,   86, 1105,
-     1107,   86, 1106, 1108, 1111, 1113, 1116,   86,   86,   86,
-      168, 1117,   86,   86, 1114, 1118,   86, 1123, 1121, 1124,
-     1119, 1125,   86,   86,   86,   86, 1126,   86, 1120, 1129,
-     1122,   86, 1131,   86,   86,   86,   86, 1128, 1137,   86,
-     1127, 1133, 1134, 1138,  170,   86,   86,   86, 1141,   86,
-     1140, 1130, 1132,   86,   86, 1135,   86, 1136,   86, 1144,
-     1139,   86,   86,   86,   86,   86, 1157,   86,   86,   86,
-       86, 1142, 1158, 1143, 1148, 1145, 1147, 1160,   86,   86,
-      166,   86, 1146, 1149, 1159, 1150,   86,   86, 1191, 1151,
-
-       86, 1152, 1161, 1164, 1162, 1153, 1163, 1154,   86, 1167,
-       86, 1166, 1155, 1165, 1168,   86,   86, 1156,   86, 1169,
-       86,   86, 1171,   86,   86,   86, 1174,   86, 1177,   86,
-     1170,   86,   86,   86, 1172, 1173, 1175, 1176, 1178, 1182,
-     1181,   86, 1187, 1180, 1184, 1185, 1183,   86, 1179, 1188,
-       86,   86, 1186,   86, 1189,   86,   86,   86,   86,   86,
-       86,   86, 1203, 1200,   86,   86,   86,   86,   86, 1199,
-     1204,   86, 1202, 1201, 1205, 1190,   86, 1192,   86, 1211,
-     1206, 1207, 1193,   86, 1194,   86,   86, 1208,   86, 1214,
-     1195, 1212,   86,   86,   86, 1196, 1197, 1209,   86, 1210,
-
-     1213,   86, 1198, 1218,   86, 1219,   86, 1221, 1215, 1222,
-       86, 1216, 1217,   86,   86,   86, 1226,   86, 1220, 1224,
-       86,   86,   86,   86,   86, 1227,   86, 1232, 1225, 1223,
-     1229,   86, 1230,   86,   86, 1233, 1228,   86,   86, 1235,
-     1231,   86,   86,   86,   86,   86,   86,   86,   86, 1242,
-     1234,   86, 1237, 1240, 1239, 1241,   86, 1236, 1244,   86,
-       86, 1238, 1243, 1245,   86, 1246,   86,   86, 1247,   86,
-       86, 1248,   86, 1250, 1253, 1249,   86, 1254, 1251, 1256,
-     1258, 1255, 1252,   86, 1257, 1259,   86,   86,   86,   86,
-       86,   86, 1264,   86,   86,   86, 1260, 1265,   86,   86,
-
-       86, 1266, 1262, 1261, 1267,   86, 1263, 1269, 1268,   86,
-       86, 1271, 1275,   86, 1270, 1277,   86, 1272,   86,   86,
-       86,   86, 1273,   86, 1279, 1274,   86, 1281,  165,   86,
-       86, 1278, 1282, 1276, 1280, 1284,   86,   86,   86,   86,
-       86, 1285,   86,   86, 1283, 1288,   86, 1287, 1289,   86,
-     1294, 1290, 1291, 1286,   86, 1293,   86,   86, 1292, 1295,
-       86,   86,   86, 1296, 1298,   86, 1299,   86,   86,   86,
-       86, 1305, 1303, 1306, 1339, 1297, 1307,   86,   86,   86,
-     1300, 1310,   86, 1304,   86,   86, 1301,   86, 1302, 1308,
-     1309,   86, 1312,   86,   86,   86, 1311, 1316,   86, 1313,
-
-       86, 1318,   86,   86,   86, 1317,   86,   86,   86,   86,
-       86, 1314, 1323, 1319,   86, 1315, 1320, 1324,   86,   86,
-       86, 1325,   86, 1326, 1321, 1330,   86, 1322, 1331,   86,
-       86,   86, 1328,   86,   86, 1333,   86, 1327, 1334,   86,
-       86, 1329,   86,   86, 1332, 1335,   86, 1336, 1337,   86,
-       86,   86, 1341, 1345,   86,  170,   86,   86, 1338, 1346,
-     1340, 1347, 1348,   86,   86, 1342,   86,   86,   86, 1344,
-     1357,   86, 1353,  163, 1343, 1349,   86, 1350, 1352, 1351,
-     1354, 1355,   86, 1358,   86,   86,   86,   86, 1356,   86,
-     1360,   86, 1362, 1361,   86,   86,   86,   86,   86,   86,
-
-     1359, 1365,   86, 1371,   86, 1367, 1368,   86, 1363, 1364,
-       86,   86, 1366, 1369,   86,   86,   86,   86,  161,   86,
-     1375, 1370, 1377, 1381, 1372, 1373, 1374,   86, 1382,   86,
-     1386, 1378,   86, 1379, 1383, 1376, 1380, 1384,   86, 1385,
-       86,   86,   86, 1387,   86,   86,   86,   86,   86,   86,
-     1391, 1390,   86, 1394,   86,   86, 1398,   86,   86, 1393,
-     1388,   86, 1389, 1395,   86, 1392, 1396,   86,   86, 1399,
-     1404, 1397, 1400, 1402, 1401,   86,   86,   86,   86, 1403,
-       86,   86,   86,   86, 1408,   86,   86,   86,   86, 1411,
-       86, 1405, 1406, 1409, 1416, 1410,   86, 1407, 1412,   86,
-
-       86, 1418, 1413,   86,   86, 1415, 1414,   86,   86, 1421,
-     1419, 1417,   86,   86,   86, 1428,   86,   86, 1422, 1420,
-     1424,   86, 1430, 1423,   86,   86,   86,   86,   86, 1427,
-       86, 1425, 1431,   86, 1433, 1436, 1429,   86, 1426, 1432,
-       86, 1438,   86, 1435, 1434, 1437, 1439,   86,   86, 1443,
-       86,   86,   86, 1453, 1441, 1442, 1440,   86, 1444,   86,
-     1452, 1456, 1445, 1451,   86, 1446, 1447,   86, 1454, 1455,
-     1448, 1457,   86,   86,   86,   86, 1449,   86, 1458, 1459,
-     1450,   86, 1460,   86, 1462,   86,   86,   86, 1463,   86,
-     1464, 1467,   86, 1461,   86, 1465, 1468,   86,   86, 1470,
-
-       86, 1473, 1474,   86, 1466, 1475, 1471,   86,   86, 1469,
-       86,   86, 1478,   86, 1476,   86, 1472, 1479, 1483, 1480,
-       86, 1481,   86, 1482, 1477,   86, 1485, 1486, 1487, 1484,
-       86, 1488,   86,   86,   86, 1493, 1489, 1490,   86,   86,
-     1494,   86,   86, 1492,   86,   86,   86, 1495,   86, 1497,
-       86, 1491, 1503,   86, 1499,   86, 1498,   86,   86,   86,
-     1504, 1496,   86, 1506, 1502, 1500,   86, 1501,   86, 1505,
-       86, 1508,   86,   86, 1515,   86, 1507,   86, 1513, 1510,
-     1511,   86, 1509, 1517,   86,   86, 1514, 1518,   86,   86,
-     1512, 1519, 1516,   86, 1520,   86, 1523,   86,   86, 1525,
-
-       86,   86, 1526,   86, 1522,   86,   86,   86, 1527, 1531,
-       86,   86, 1521,   86,   86,   86, 1536, 1534, 1524,   86,
-       86,   86,   86, 1539, 1537,   86, 1528, 1529, 1530, 1538,
-     1533, 1532,   86,   86,   86, 1535, 1541,   86,   86, 1543,
-       86,   86, 1550, 1540,   86, 1545, 1546, 1542,   86, 1547,
-       86, 1544,   86, 1548,   86,   86,   86, 1549,   86, 1551,
-       86, 1553, 1556, 1554, 1557, 1558, 1552,   86,   86, 1560,
-       86, 1555, 1559,   86,   86,   86,   86, 1564,   86,   86,
-       86,   86, 1561,   86,   86, 1566,   86, 1563,  170, 1572,
-     1573, 1568,   86, 1562, 1575,   86,   86,   86, 1574, 1565,
-
-       86, 1567,   86, 1569, 1570,   86,   86,   86,   86, 1571,
-       86, 1576,   86, 1583,   86,   86,   86, 1577, 1580,   86,
-       86, 1581, 1578,   86, 1587, 1579, 1582, 1588,   86,   86,
-     1584, 1592,   86, 1586, 1590, 1591, 1593,   86,   86, 1585,
-     1596, 1594,   86, 1589,   86,   86,   86, 1595,   86, 1606,
-       86, 1601, 1604,   86, 1602,   86, 1597, 1603,   86, 1598,
-     1599,   86, 1607, 1600, 1609,   86,   86, 1605,   86, 1610,
-       86,   86, 1608,   86,   86,   86, 1614,   86, 1615,   86,
-       86,   86, 1618,   86, 1611,   86, 1613,   86, 1623, 1624,
-       86,   86, 1612, 1616, 1617, 1620, 1627,   86, 1621, 1619,
-
-       86, 1622,   86,   86,   86,   86,   86,   86, 1625, 1628,
-     1626,   86,   86,   86,   86,   86, 1629, 1635, 1631, 1637,
-     1632, 1633, 1630,   86, 1640,   86, 1634,   86, 1641, 1638,
-     1636,   86,   86, 1646, 1639,   86, 1645, 1647,   86,   86,
-     1642, 1643,   86,   86,   86, 1649, 1650,   86, 1651,   86,
-       86, 1644, 1648,   86, 1655, 1656, 1657,   86, 1654, 3564,
-       86,   86,   86,   86, 1658, 1652,   86, 1659, 1660,   86,
-       86, 1653,   86,   86, 1661, 1663,   86,   86,   86,   86,
-       86, 1662,   86, 1668,   86, 1664, 1667,   86, 1670, 1671,
-     1665,   86, 1666,   86, 1674,   86, 1679, 1676, 1669, 1675,
-
-       86, 1672, 1677,   86,   86,   86,   86,   86,   86,   86,
-     1673, 1687, 1683, 1678,   86, 1682,   86,   86,   86,   86,
-     1691, 1688,   86, 1680, 1681,   86,   86, 1684, 1694, 1685,
-       86, 1693, 1686,   86,   86,   86,   86,   86, 1689,   86,
-       86, 1692,   86,   86, 1703, 1690,   86,   86,   86, 1695,
-     1704,   86, 1696, 1700, 1697, 1698, 1699, 1702, 1708,   86,
-       86, 1701,   86, 1707, 1711, 1705,   86, 1706, 1709,   86,
-       86, 1710,   86,   86,   86, 1712, 1715,   86,   86, 1713,
-     1716,   86, 1719,   86,   86, 1714, 1723,   86, 1725, 1724,
-       86, 1718,   86, 1717,   86,   86, 1720, 1728, 1721, 1722,
-
-       86,   86,   86,   86, 1730, 1726, 1729,   86, 1727,   86,
-       86, 1731, 1732, 1736, 1737,   86,   86,   86, 1734,   86,
-     1733,   86,   86, 1741,   86, 1742, 1740, 1744,   86,   86,
-     1735,   86, 1745,   86, 1738, 1746,   86,   86, 1739,   86,
-       86,   86,   86, 1750, 1743,   86,   86,   86, 1755, 1747,
-       86, 1753,   86, 1748,   86, 1749,   86,   86,   86,   86,
-     1761, 1759, 1751,   86,   86, 1752, 1754, 1756,   86,   86,
-       86, 1757, 1760, 1758,   86, 1763,   86, 1762, 1764,   86,
-     1767, 1770,   86, 1768, 1772,   86,   86,   86,   86, 1765,
-     1766, 1773, 1769,   86, 1775,   86,   86, 1771,   86,   86,
-
-       86,   86, 1779, 1782,   86, 1781, 1774, 1778,   86,   86,
-     1776, 1783,   86,  170, 1777,   86,   86, 1785, 1780, 1787,
-       86,   86, 1784,   86,   86, 1793, 1794,   86,   86, 1786,
-     1788, 1797,   86,   86, 1789, 1790,   86, 1791,   86,   86,
-       86, 1799, 1798,   86,   86, 1792, 1801, 1795, 1796,   86,
-     1803, 1805,   86,   86, 1802, 1865,   86,   86, 1800, 1804,
-     1807,   86, 1808,   86, 1811,   86, 1806,   86, 1812, 1809,
-     1810,   86, 1813,   86,   86,   86,   86,   86, 1818, 1817,
-       86,   86,   86,   86,   86, 1825, 1822, 1814,   86, 1823,
-     1816,   86, 1815, 1820,   86,   86, 1963,   86, 1819, 1826,
-
-     1827, 1824, 1821,   86, 1829, 1833,   86,   86, 1830, 1831,
-     1832, 1834, 1835,   86,   86,   86, 1828,   86,   86, 1836,
-       86, 1837,   86, 1838, 1839,   86,   86,   86, 1841, 1846,
-       86, 1840, 1843,   86, 1847,   86, 1845,   86, 1848, 1850,
-       86,   86, 1849, 1842,   86,   86,   86, 1844, 1853,   86,
-       86, 1852,   86,   86,   86, 1854,   86,   86,   86,   86,
-       86,   86,   86,   86, 1851, 1864,   86,   86,   86, 3564,
-     1855, 1859, 1860, 1856, 1858, 1857, 1861, 1862, 1868,   86,
-     1869,   86, 1866, 1871,   86, 1863, 1867, 1872,   86,   86,
-       86,   86, 1877,   86, 1870,   86,   86,   86,   86, 1881,
-
-     1873, 1879,   86,   86, 1875,   86,   86,   86, 1874, 1880,
-       86,   86, 1876,   86,   86, 1878, 1886, 1882, 1888, 1883,
-       86,   86,   86, 1889, 1885, 1887, 1890, 1884,   86, 1891,
-       86, 1895, 1896,   86, 1898, 1892, 1897,   86,   86,   86,
-     1893, 1900, 1901,   86,   86,   86, 1894,   86, 1899,   86,
-     1904,   86, 1902,   86, 1905,   86,   86, 3564, 1906,   86,
-       86, 1914,   86, 1903, 1909, 1908, 1907,   86, 1911, 1913,
-       86, 1912, 1915,   86,   86, 1910,   86, 1916,   86,   86,
-     1922,   86, 1917,   86,   86, 1923,   86, 1918, 1924,   86,
-       86, 1928, 1920, 1925, 1919, 1921,   86,   86,   86, 1931,
-
-       86, 1933,   86, 1932,   86,   86, 1930, 1927,   86, 1926,
-     1937, 1935, 1929,   86, 1936, 1934,   86,   86, 1941,   86,
-       86,   86, 1938, 1942,   86, 1946,   86, 1948, 1951, 1939,
-     1943, 1940, 1944,   86,   86, 1947, 1950,   86,   86,   86,
-     1954, 1945,   86, 1952, 1949,   86,   86,   86, 1955, 1958,
-       86,   86, 1962, 1953, 1960,   86,   86,   86,   86,   86,
-     1961, 1957,   86, 1959,   86, 1956,   86,   86,   86, 1968,
-     1967,   86,   86,   86, 3564, 1964, 1965, 1969, 1966, 1970,
-     1971, 1973, 1975,   86, 1977, 1972, 1978, 1974,   86,   86,
-       86,   86,   86, 1980,   86,   86, 1984,   86,   86, 1986,
-
-       86, 1979,   86,   86, 1976,   86, 1990,   86,   86, 1981,
-     1983, 1985,   86, 1982,   86,   86, 1992,   86, 1988, 1993,
-       86, 1989, 1987,   86,   86, 1995, 1997,   86, 1991, 1996,
-       86,   86,  170,   86, 2001, 1994, 2004,   86, 1999, 2000,
-       86,   86,   86,   86, 2002,   86, 1998,   86, 2003, 2008,
-       86,   86, 2010, 2006,   86,   86, 2015, 2009,   86, 2005,
-       86, 2007,   86, 2011,   86,   86, 2012, 2014, 2019,   86,
-     2016, 2018,   86, 2023, 2013, 2020, 2021,   86, 2017,   86,
-     2024, 2025,   86,   86, 2022,   86,   86, 2027,   86,   86,
-       86, 2028,   86,   86,   86, 2026,   86,   86,   86, 2033,
-
-       86, 2034,   86,   86,   86, 2038, 2035,   86, 3564, 2029,
-     2031, 2032, 2030, 2037, 2036,   86, 2039,   86,   86, 2045,
-     2042,   86, 2044, 2041, 2046,   86, 2047, 2043,   86, 2040,
-       86,   86,   86,   86,   86, 2053,   86, 2056,   86, 2048,
-     2049, 2057,   86, 2058,   86,   86, 2051, 2050, 2054,   86,
-     2055, 2052, 2060,   86,   86, 2061,   86,   86, 2059, 2065,
-       86, 2066, 2067, 2069,   86,   86, 2062, 2068,   86,   86,
-     2063,   86, 2071,   86, 2075,   86, 2072, 2064,   86,   86,
-       86,   86, 2074, 2070, 2078,   86, 2077,   86,   86,   86,
-       86,   86, 2083, 2085, 2081, 2082,   86,   86, 2073,   86,
-
-     2076, 2084, 2079,   86,   86,   86,   86, 2093,   86, 2080,
-       86, 2097, 3564,   86, 2095, 2086, 2087, 2088,   86, 2096,
-       86,   86, 2089, 2091, 2090, 2098, 2092,   86, 2094, 2099,
-     2102,   86, 2100, 2101,   86,   86,   86, 2106,   86,   86,
-     2103,   86, 2108,   86,   86,   86, 2111, 2112,   86,   86,
-     2114,   86,   86,   86, 2104,   86, 2105,   86,   86, 2121,
-       86, 2119, 2116, 2109, 2117, 2107, 2110,   86,   86, 2113,
-       86,   86,   86,   86, 2120,   86, 2127, 2115, 2118, 2124,
-     2125,   86,   86,   86, 2130, 2123, 2132,   86, 2131, 2122,
-       86,   86,   86,   86, 2134, 2135,   86, 2138, 2129, 2126,
-
-       86,   86, 2136,   86, 2139,   86,   86, 2128,   86,   86,
-       86, 2133, 2137, 2140,   86, 2141, 2142, 2144,   86,   86,
-       86, 2146, 2145,   86, 2149, 2150, 2151,   86, 2143,   86,
-       86,   86,   86,   86, 2154,   86,   86, 2147, 2159,   86,
-       86, 2158,   86,   86, 2153,   86, 2148, 2152,   86, 2164,
-     2155,   86, 2165, 2156,   86,   86,   86, 2157, 2162, 2169,
-     2166, 2161, 2168,   86, 2160, 2167,   86, 2163, 2172,   86,
-       86,   86,   86,   86,   86,   86,   86, 2170,   86, 2176,
-     2180,   86, 2171,   86,   86, 2174,   86,   86, 2183,   86,
-     2181, 2173, 2175, 2187, 2184, 2177, 2178,   86, 2179, 2182,
-
-     2185,   86,   86, 2186,   86,   86, 2188, 2191, 2192,   86,
-     2193,   86, 2194, 2196, 3564, 2189, 2197, 2195,   86,   86,
-     2190,   86,   86,   86, 2201,   86, 2199,   86,   86,   86,
-       86, 2198, 2203,   86, 2205, 2200, 2207, 2202,   86, 2204,
-     2209,   86,   86, 2210,   86,   86,   86,  170,   86,   86,
-       86,   86, 2213,   86, 2206,   86,   86, 2276, 2217, 2218,
-     2208, 2212, 2214, 2215, 2211,   86, 2219, 2216, 2220,   86,
-     2221,   86, 2223,   86,   86, 2222,   86,   86,   86, 2224,
-     2226, 2225,   86,   86,   86,   86, 2227, 2228, 2229,   86,
-     2231,   86,   86, 2235,   86, 2230, 2232, 2234,   86,   86,
-
-       86, 2240,   86, 2233, 2237, 2238,   86, 2236,   86, 2239,
-       86,   86,   86,   86,   86,   86, 2247, 2245,   86, 2242,
-     2246,   86,   86,   86,   86, 2252,   86, 2249, 2241, 2243,
-       86, 2244, 2248,   86,   86, 2257, 2253, 2251,   86, 2250,
-       86,   86, 2255,   86, 2254,   86,   86, 2258, 2261, 2264,
-     2256,   86, 2259, 2263,   86,   86,   86, 2270, 2262,   86,
-       86,   86, 2260,   86,   86, 2272,   86, 2265, 2273,   86,
-       86, 2266, 2267,   86, 2268, 2269,   86, 2271, 2275,   86,
-     2277,   86,   86, 2278,   86, 2281,   86, 2274,   86,   86,
-     2280,   86,   86, 2279, 2288, 2283,   86, 2286, 2284,   86,
-
-     2282, 2287,   86,   86,   86,   86,   86,   86,   86, 2285,
-       86, 2289,   86,   86, 2290, 2295, 2292,   86, 2291, 2296,
-     2300, 2294, 2301,   86,   86,   86,   86, 2298, 2304, 2305,
-     2302, 2293, 2297, 2299,   86,   86,   86, 2303, 2308, 2307,
-       86,   86,   86,   86,   86, 2310, 2306,   86, 2311, 2318,
-       86, 2312,   86, 2309, 2316,   86, 2314,   86,   86, 2319,
-       86, 2313, 2315, 2317, 2321,   86,   86,   86,   86, 2324,
-       86, 2323, 2320, 2325,   86, 2326,   86,   86, 2330,   86,
-       86,   86,   86, 2334,   86, 2331, 2322,   86, 2335,   86,
-       86, 2333, 2327,   86, 2328, 2332,   86, 2329, 2336,   86,
-
-     2337, 2338, 2339,   86,   86, 2340, 2344, 2341, 2342,   86,
-       86,   86,   86, 2346, 2345,   86, 2350,   86,   86, 2343,
-       86, 2352,   86, 2348,   86, 2353,   86, 2355, 2347,   86,
-     2351, 2349,   86,   86,   86, 2354, 2357,   86, 2362, 2360,
-       86,   86, 2358, 2363,   86, 2359,   86, 2356,   86,   86,
-     2365,   86, 2364,   86, 2368, 2361, 2369,   86, 2366,   86,
-     2367, 2373,   86,   86,   86,   86, 2370,   86, 2372,   86,
-       86,   86, 3564,   86,   86,   86,   86, 2371, 2381,   86,
-       86, 2374, 2375, 2376, 2379, 2377, 2380, 2382, 2383, 2387,
-       86,   86, 2378,   86, 2384, 2385, 2386,   86,   86, 2388,
-
-       86,   86, 2391, 2390,   86,   86, 2396,   86,   86, 2398,
-       86,   86, 2389, 2392, 2395,   86,   86, 2397, 2393, 2401,
-       86, 2402, 2399,   86,  170, 2405, 2394,   86, 3564, 2407,
-     2400,   86, 2409, 2403, 2408,   86,   86, 2410,   86, 2411,
-       86,   86, 2404,   86, 2414,   86, 2406, 2413, 2412,   86,
-     2415,   86, 2419,   86,   86, 2420,   86, 2423,   86, 2422,
-     2418,   86,   86,   86, 2416,   86, 2424, 2427, 2421,   86,
-     2425, 2426,   86, 2428,   86, 2417,   86,   86, 2429,   86,
-     2431,   86,   86, 2433,   86, 2430, 2434,   86,   86,   86,
-       86,   86, 2437,   86,   86, 2441,   86, 2432, 2444, 2436,
-
-     2443,   86,   86,   86,   86, 2435, 2438, 2439, 2446, 2440,
-       86, 2445,   86,   86,   86, 2442,   86,   86, 2451, 2454,
-       86,   86, 2448,   86, 2449, 2455,   86, 2452, 2447, 2450,
-       86,   86,   86,   86, 2453,   86,   86, 2465,   86,   86,
-     2456,   86, 2457,   86,   86, 2458,   86, 2463, 2470,   86,
-     2494, 2461, 2467, 2459, 2462, 2460, 2466, 2464, 2468,   86,
-     2472,   86,   86,   86,   86, 2469, 2474, 2473,   86, 2471,
-       86,   86, 2478, 2479,   86,   86,   86, 2475, 2480, 2481,
-       86,   86, 2476, 2477,   86, 2484,   86, 2485,   86,   86,
-     2482, 2488,   86,   86, 2483, 2489,   86, 2486, 2490,   86,
-
-     2487,   86, 2495,   86, 2491, 2496,   86,   86,   86, 2492,
-     2498,   86,   86, 2500,   86,   86, 2503,   86, 2504,   86,
-     2502, 2493,   86, 2501,   86,   86, 2497,   86,   86,   86,
-     2499, 2511,   86, 2506, 2510,   86, 2505, 2513,   86,   86,
-       86, 2508, 2507,   86,   86, 2515,   86, 2509,   86, 2516,
-       86, 2517,   86, 2518, 2512, 2520,   86, 2514,   86,   86,
-     2523, 2522,   86, 2521,   86, 2524, 2526,   86, 2519,   86,
-       86,   86, 2532,   86,   86, 2531,   86,   86, 2525, 2528,
-       86, 2534, 2527,   86,   86, 2530, 2537,   86,   86,   86,
-       86, 2539, 2529, 2533,   86, 2535,   86, 2538, 2536,   86,
-
-     2545,   86, 2540,   86,   86, 2547, 2551, 2541, 2542, 2543,
-     2546,   86,   86,   86, 2548,   86, 2552,   86, 2553,   86,
-     2554,   86, 2544,   86,   86,   86, 2558,   86,   86, 2549,
-     2560, 2550, 2556, 2561,   86, 2564,   86, 2565,   86, 2562,
-     2568,   86, 2555,   86, 2557,   86,   86,   86, 2566,   86,
-     2559, 2563, 2569, 2567, 2570,   86,   86,   86,   86, 2573,
-       86,   86,   86,   86,   86,   86, 2574, 2575, 2572, 2576,
-     2571, 2577, 2579, 2580, 2584, 2578,   86, 3564,   86,   86,
-     2581,   86, 2585, 2582, 2583, 2586,   86, 2587,   86,   86,
-     2590,   86,   86,  170,   86, 2588,   86, 2589, 2591,   86,
-
-     2596,   86,   86,   86,   86,   86,   86,   86, 2604,   86,
-     2594, 2597, 2592, 2598, 2593, 2595,   86, 2599, 2600, 2602,
-       86, 2601, 3564, 2603, 2607,   86,   86, 2608, 2606, 2605,
-     2609,   86,   86,   86, 2612, 2610, 2613,   86, 2611,   86,
-       86,   86,   86, 2615,   86,   86, 2614,   86, 2617,   86,
-       86, 2621, 2622, 2616,   86, 2619,   86, 2618,   86, 2624,
-       86,   86,   86,   86, 2625, 2626, 2627,   86, 2620,   86,
-     2623,   86, 2629,   86, 2628, 2633,   86, 2632,   86,   86,
-     2630, 2631,   86,   86, 2635,   86,   86,   86,   86,   86,
-     2643, 2634, 2640,   86, 2642,   86,   86,   86, 2645, 2644,
-
-     2639,   86, 2636, 2637,   86, 2638,   86, 2641,   86, 2651,
-       86, 2649,   86, 2646,   86,   86,   86, 2657,   86, 2655,
-     2647, 2654,   86, 2648, 2652,   86, 2656,   86,   86, 2650,
-     2653, 2658,   86, 2660,   86,   86,   86, 2661, 2662,   86,
-     2664, 2659,   86, 2666, 2668,   86, 2665,   86, 2667,   86,
-     2670,   86,   86,   86, 2663,   86, 2669,   86,   86,   86,
-       86,   86, 2674, 2679,   86, 2677, 2678, 2672, 2680,   86,
-     2671, 2673, 2681,   86,   86, 2683,   86,   86,   86,   86,
-     2676,   86,   86,   86, 2675, 2688, 2686,   86,   86, 2691,
-       86,   86, 2684, 2682,   86, 2689, 2692, 2693, 2687, 2685,
-
-     2690, 2694,   86, 2697,   86,   86,   86,   86, 2698,   86,
-       86, 2701, 2695, 2702,   86,   86,   86, 2696,   86,   86,
-     2703,   86,   86,   86, 2708, 2699, 2707, 2700, 2705,   86,
-       86, 2706,   86,   86, 2704,   86,   86, 2709, 2712, 2716,
-       86, 2715, 2711, 2710, 2717,   86, 2718,   86, 2719,   86,
-       86,   86, 2713,   86,   86, 2714,   86, 2723, 2722,   86,
-     2724,   86, 2720,   86, 2725,   86, 2726,   86,   86, 2721,
-       86, 2732,   86,   86, 2734,   86,   86, 2728, 2735,   86,
-       86, 2727,   86,   86,   86,   86, 2731, 2729, 2737, 2730,
-     2738, 2736, 2733,   86, 2739,   86, 2744,   86, 2741,   86,
-
-     2746,   86,   86,   86, 2740, 2742,   86,   86, 2745,  170,
-       86,   86,   86,   86, 2753, 2743,   86, 2755,   86, 2749,
-       86, 2754, 2756, 2748, 2751,   86,   86,   86, 2747,   86,
-       86, 2750, 2762, 2752,   86, 2757, 2759,   86,   86, 2764,
-     2758,   86, 2765,   86, 2763, 2766,   86,   86, 2760, 2772,
-     2761, 2767,   86,   86, 2768,   86, 2769,   86, 2770, 2771,
-       86,   86, 2773,   86,   86,   86,   86, 2775,   86,   86,
-     2781,   86,   86,   86, 2779, 2774,   86, 2785,   86, 2776,
-     2786,   86, 2790,   86, 2778, 2777, 2780,   86,   86, 2782,
-     2783, 2784, 2787, 2788, 2792,   86, 2789, 2791,   86,   86,
-
-       86,   86,   86,   86,   86,   86,   86,   86, 2796, 2803,
-       86, 2804,   86,   86, 2802, 3564, 2793, 2794, 2795, 2797,
-     2798, 2799, 2800,   86, 2801,   86, 2808,   86, 2809,   86,
-     2810, 2807,   86, 2805,   86,   86,   86,   86,   86,   86,
-       86, 2806,   86, 2815,   86,   86, 2820,   86,   86, 2812,
-     2811, 2814, 2819, 2817, 2813, 2821,   86, 2823,   86, 2816,
-     2818,   86,   86, 2822, 2824,   86,   86, 2826,   86,   86,
-       86, 2825,   86, 2829, 2830,   86,   86, 2827,   86, 2836,
-       86, 2835,   86,   86, 2839,   86, 2828,   86,   86,   86,
-     2831, 2832,   86, 2842, 2834, 2833,   86, 2837, 2840,   86,
-
-       86, 2838, 2844, 2841, 2845, 2846,   86, 2843,   86,   86,
-       86,   86, 2847, 2851,   86,   86,   86,   86,   86, 2855,
-     2853, 2854,   86, 2848, 2856,   86,   86, 2852,   86, 2849,
-     2850, 2858,   86, 2859,   86, 2857,   86,   86, 2861, 2864,
-       86,   86, 2865, 2860, 2867,   86, 2863,   86, 2862,   86,
-       86,   86,   86, 2874,   86,   86,   86,   86, 3564, 2866,
-     2868, 2871, 2869, 2870, 2872, 2873, 2877,   86,   86,   86,
-       86, 2875, 2876, 2878, 2879,   86,   86,   86,   86,   86,
-     2881,   86,   86,   86, 2880, 2882,   86, 2884, 2887, 2885,
-       86, 2888, 2890,   86, 2886, 2883,   86, 2889, 2891,   86,
-
-       86, 2892, 2894,  170,   86,   86,   86, 2895, 2899, 2893,
-     2896,   86,   86, 2901,   86,   86, 2900, 3564,   86, 2904,
-       86,   86, 2897, 2903, 2898, 2905,   86, 2907,   86,   86,
-     2902, 2909, 2908,   86, 2906,   86, 2910,   86, 2911,   86,
-     2912, 2914,   86,   86,   86,   86, 2915,   86, 2916,   86,
-       86,   86, 2921, 2913, 2917, 2922, 2923, 2919,   86, 2918,
-       86,   86,   86,   86,   86,   86,   86, 2927, 2926, 2925,
-       86, 2920, 2924,   86,   86, 2929,   86, 2928, 2930, 2931,
-       86,   86,   86,   86, 2932,   86, 2936,   86,   86, 2933,
-     2934, 2935, 2937, 2938, 2940,   86,   86,   86, 2939,   86,
-
-       86, 2941, 2945,   86, 2946,   86, 2942,   86,   86,   86,
-       86, 2951,   86,   86,   86,   86, 2943, 2948, 2944, 2955,
-     2956,   86, 2949,   86, 2947, 2950, 2958,   86, 2952, 2953,
-     2959, 2961,   86, 2954, 2962,   86,   86,   86,   86,   86,
-       86,   86,   86,   86, 2968, 2960, 2963, 2965, 2957, 2966,
-       86,   86,   86,   86, 2967, 2969,   86, 2970, 2972,   86,
-       86, 2974,   86, 2983, 2964, 2971, 2976,   86, 2977,   86,
-       86, 2973, 2978,   86, 2979,   86,   86, 2982,   86,   86,
-     2975, 2980,   86, 2986, 2981,   86,   86, 2984, 2987,   86,
-       86, 2985,   86, 2990, 2991,   86,   86, 2988, 2992,   86,
-
-     2993,   86,   86, 2995,   86, 2994, 2989, 2997,   86, 2996,
-       86, 3000,   86,   86, 3001, 3002,   86,   86, 3004,   86,
-       86,   86, 2998,   86,   86, 3008, 3009,   86, 3010, 3011,
-     2999,   86, 3003, 3005,   86,   86,   86, 3007, 3013, 3006,
-       86, 3012,   86, 3014,   86,   86, 3019,   86,   86,   86,
-       86, 3018,   86, 3021, 3022,   86,   86, 3015, 3024,   86,
-     3016, 3023, 3017,   86,   86,   86, 3025, 3027,   86, 3028,
-     3031,   86, 3020, 3026,   86,   86, 3029, 3030,   86, 3035,
-       86,   86,   86,   86,   86, 3037, 3047,   86,   86, 3032,
-       86, 3053, 3034, 3038, 3033, 3036, 3041, 3039,   86, 3042,
-
-     3564, 3044,   86, 3040, 3043,   86, 3045,   86,   86, 3046,
-       86, 3048,   86, 3049,   86, 3050,   86, 3051,   86, 3052,
-       86,   86, 3055,   86, 3056, 3054,   86, 3059, 3058,   86,
-       86, 3060,   86, 3064,   86, 3057, 3065,   86, 3061,   86,
-       86,   86, 3066, 3069,   86,   86, 3067,   86, 3071,   86,
-     3062,   86, 3063,   86, 3070,   86, 3072, 3073,   86, 3068,
-       86,   86, 3074, 3078, 3075, 3079,   86, 3080,   86, 3076,
-     3077,   86,   86,   86,   86, 3081,   86, 3086,   86, 3564,
-       86, 3082, 3087,   86,   86, 3084,   86, 3089, 3090,   86,
-       86, 3085, 3083, 3088, 3091, 3092,   86, 3094,   86,   86,
-
-     3093,   86, 3098,   86, 3095,   86,   86,   86,   86,   86,
-     3105,   86,   86, 3102, 3099,   86,   86,   86, 3100, 3097,
-     3103,   86, 3108,   86, 3096,   86, 3109, 3106, 3112, 3104,
-       86, 3110, 3101, 3107, 3111,   86,   86,   86, 3115, 3117,
-       86, 3116, 3118,   86, 3119,   86,   86,   86, 3113,   86,
-     3114,   86, 3124,   86,   86, 3120, 3123,   86,   86, 3125,
-     3127,   86, 3126,   86,   86,   86,   86, 3121, 3122,   86,
-     3131, 3128, 3133, 3135,   86, 3129,   86,   86,   86,   86,
-     3136,   86, 3137,   86, 3132, 3130, 3138,   86, 3139,   86,
-       86, 3144,   86,   86, 3134,   86,   86,   86, 3140,   86,
-
-       86, 3148,   86, 3143, 3141, 3142, 3145,   86, 3146, 3147,
-       86, 3149, 3153,   86,   86, 3150,   86, 3155, 3152, 3151,
-       86,   86,   86, 3156, 3159,   86, 3161,   86,   86, 3164,
-       86, 3162,   86, 3154, 3163, 3166,   86,   86, 3157,   86,
-       86, 3160,   86,   86,   86, 3169,   86, 3158, 3165, 3171,
-     3172,   86,   86, 3167, 3175, 3168,   86,   86, 3170,   86,
-       86, 3174, 3182, 3173,   86, 3178, 3181,   86,   86, 3176,
-       86, 3179,   86, 3184,   86, 3177,   86, 3185, 3180,   86,
-     3187,   86, 3188,   86,   86, 3191,   86,   86,   86,   86,
-     3183, 3189,   86, 3196,   86,   86, 3186, 3194, 3193,   86,
-
-     3200,   86,   86,   86, 3190, 3192, 3198,   86,   86, 3195,
-     3202, 3197,   86,   86, 3564, 3199, 3203, 3201,   86, 3204,
-     3205, 3207, 3210, 3206, 3208,   86,   86,   86,   86, 3209,
-     3211,   86, 3213,   86,   86,   86, 3212, 3216,   86, 3214,
-     3219,   86,   86,   86,   86,   86,   86, 3224,   86,   86,
-       86, 3564,   86,   86, 3215, 3217, 3218, 3220, 3231, 3223,
-     3221, 3227, 3228,   86, 3229,   86, 3226,   86, 3225, 3222,
-     3230,   86,   86, 3234,   86, 3235,   86, 3233, 3236,   86,
-       86, 3232, 3237,   86,   86, 3240,   86,   86, 3242,   86,
-       86,   86, 3241, 3238, 3244,   86,   86,   86,   86,   86,
-
-       86, 3250, 3243, 3251,   86,   86,   86,   86,   86, 3245,
-     3239,   86, 3257,   86, 3258,   86,   86, 3248, 3246, 3247,
-     3256, 3249, 3254, 3260,   86, 3253,   86, 3255,   86,   86,
-       86, 3252, 3564, 3263, 3259, 3265,   86, 3266,   86,   86,
-       86,   86, 3269,   86, 3261, 3262, 3267,   86,   86, 3272,
-       86, 3264, 3270, 3268,   86, 3271,   86,   86,   86, 3273,
-     3274,   86, 3275, 3276,   86,   86, 3278,   86,   86,   86,
-       86, 3280,   86,   86,   86, 3281, 3279,   86, 3277,   86,
-       86,   86,   86,   86,   86, 3290, 3291, 3282, 3286, 3283,
-     3284, 3285, 3293, 3303, 3287, 3288,   86, 3297,   86, 3564,
-
-     3289, 3294, 3292, 3295,   86, 3298,   86, 3296, 3299,   86,
-       86, 3301,   86,   86, 3300, 3304,   86,   86, 3302, 3306,
-       86, 3307, 3308,   86,   86, 3309, 3310, 3314,   86, 3311,
-       86,   86, 3305, 3312, 3313,   86,   86,   86, 3317,   86,
-     3315,   86,   86, 3320,   86,   86, 3316,   86,   86, 3318,
-     3324,   86, 3323,   86,   86, 3319,   86,   86,   86,   86,
-     3328, 3327,   86,   86, 3321, 3322, 3329, 3332, 3325, 3333,
-       86,   86, 3334, 3330,   86, 3335,   86, 3331, 3326, 3336,
-       86, 3337,   86,   86,   86, 3342, 3338,   86, 3339, 3344,
-     3343,   86,   86, 3340,   86,   86, 3341,   86,   86, 3348,
-
-     3352, 3345, 3346, 3349, 3351,   86,   86,   86,   86, 3354,
-       86, 3355,   86, 3347, 3353,   86, 3350, 3358,   86,   86,
-     3357,   86, 3356, 3359,   86, 3362,   86,   86, 3360, 3363,
-       86, 3364,   86, 3365,   86, 3366,   86, 3367,   86, 3361,
-     3368,   86, 3369,   86,   86,   86, 3372,   86, 3373,   86,
-       86,   86,   86, 3370, 3371,   86, 3375, 3377,   86, 3374,
-     3379,   86,   86,   86,   86,   86, 3383, 3380, 3384,   86,
-       86, 3376, 3386,   86, 3378, 3381, 3382,   86, 3385,   86,
-     3388,   86, 3390,   86,   86, 3393,   86, 3392, 3387,   86,
-       86,   86,   86,   86, 3395,   86,   86,   86,   86, 3399,
-
-     3394, 3391, 3401,   86,   86, 3389, 3400,   86,   86, 3396,
-     3397, 3398, 3405,   86, 3408,   86, 3406,   86, 3402, 3409,
-       86, 3407, 3403,   86, 3404, 3410,   86,   86,   86,   86,
-       86, 3413, 3412,   86,   86,   86,   86, 3419,   86, 3418,
-     3411,   86, 3421, 3415, 3417,   86,   86,   86, 3414,   86,
-       86, 3420,   86, 3416,   86,   86,   86, 3423, 3422,   86,
-     3430, 3428,   86, 3425, 3424, 3427, 3429, 3432, 3434,   86,
-       86,   86,   86,   86, 3426,   86, 3436, 3431, 3433, 3439,
-       86, 3441,   86,   86, 3440,   86, 3437,   86, 3442,   86,
-     3435, 3443,   86, 3438, 3444,   86,   86,   86,   86, 3447,
-
-       86,   86, 3445, 3448, 3452, 3446, 3449,   86,   86,   86,
-       86,   86, 3451,   86, 3450, 3461, 3455, 3456,   86,   86,
-     3454, 3453, 3458,   86, 3459,   86, 3460,   86,   86, 3457,
-     3463,   86, 3462,   86, 3464, 3466,   86,   86, 3467,   86,
-       86, 3468, 3470, 3471,   86,   86, 3465,   86,   86,   86,
-     3476,   86, 3475,   86, 3472, 3477,   86, 3473, 3469,   86,
-       86,   86,   86,   86, 3474,   86, 3481,   86, 3483,   86,
-       86,   86,   86,   86, 3478, 3480, 3488, 3489,   86, 3479,
-     3482,   86, 3485, 3486, 3484, 3496, 3487, 3490,   86, 3494,
-       86,   86,   86, 3491,   86, 3497, 3492, 3495,   86,   86,
-
-     3493,   86,   86, 3498, 3499, 3502, 3500, 3503,   86,   86,
-       86,   86, 3505,   86, 3504,   86,   86,   86,   86, 3506,
-     3511, 3501,   86, 3508,   86,   86,   86,   86, 3514, 3507,
-     3515,   86,   86,   86,   86,   86, 3509, 3510, 3513, 3518,
-       86, 3512, 3516, 3519,   86, 3517,   86, 3522, 3521, 3523,
-       86, 3520,   86, 3524,   86, 3526,   86, 3528,   86, 3529,
-       86,   86,   86, 3533,   86, 3530, 3564,   86, 3531, 3536,
-       86, 3527, 3534,   86,   86, 3535, 3525,   86,   86,   86,
-       86, 3532,   86,   86, 3537, 3538,   86, 3540, 3542,   86,
-       86, 3544,   86, 3539,   86, 3545,   86, 3548, 3541, 3543,
-
-     3549,   86, 3546,   86,   86, 3552, 3553,   86,   86, 3555,
-       86, 3547,   86, 3550,   86, 3554, 3556,   86,   86, 3557,
-       86,   86, 3551, 3558, 3564, 3559, 3562,   86, 3563,   86,
-     3564, 3564, 3564, 3560, 3564, 3564, 3564, 3564, 3564, 3564,
-     3561,   47,   47,   47,   47,   47,   47,   47,   52,   52,
-       52,   52,   52,   52,   52,   57,   57,   57,   57,   57,
-       57,   57,   63,   63,   63,   63,   63,   63,   63,   68,
-       68,   68,   68,   68,   68,   68,   74,   74,   74,   74,
-       74,   74,   74,   80,   80,   80,   80,   80,   80,   80,
-       89,   89, 3564,   89,   89,   89,   89,  160,  160, 3564,
-
-     3564, 3564,  160,  160,  162,  162, 3564, 3564,  162, 3564,
-      162,  164, 3564, 3564, 3564, 3564, 3564,  164,  167,  167,
-     3564, 3564, 3564,  167,  167,  169, 3564, 3564, 3564, 3564,
-     3564,  169,  171,  171, 3564,  171,  171,  171,  171,  174,
-     3564, 3564, 3564, 3564, 3564,  174,  177,  177, 3564, 3564,
-     3564,  177,  177,   90,   90, 3564,   90,   90,   90,   90,
-       17, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
-     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
-     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
-     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
-
-     3564
+      192,   86,   86,  208,  186,   86,   86,   86,   86,   86,
+
+      200,  199,  193,  194,   86,  198,   86,  195,   86,  201,
+       86,  202,  246,  210,  206,  203,  204,  207,  209,   86,
+      211,  216,  212,  205,   86,  213,   86,   86,   86,  218,
+       86,  219,   86,  221,   86,   86,  227,  222,  214,  215,
+       86,  228,  226,  224,   86,   86,  217,  230,  225,   86,
+       86,  220,   86,  223,  231,  233,  234,  229,   86,   86,
+       86,   86,  232,  236,   86,  238,   86,  241,  235,  239,
+       86,   86,   86,   86,  243,   86,  237,  374,   86,   86,
+       86,  240,   86,  244,  242,  249,  252,  253,   86,  245,
+      254,  248,   86,   86,   86,  255,  250,  247,  261,  258,
+
+      251,  262,   86,   86,  260,  264,   86,   86,   86,   86,
+      259,  268,  256,   86,  265,  257,   86,   86,  263,  267,
+      269,  271,  160,  160,   86,  162,  266,  270,  162,  274,
+      164,  272,  164,  164,  340,  164,  167,  167,  169,   86,
+      169,  169,   90,  169,   90,   90,  170,   90,  174,  273,
+      174,  174,  275,  174,  172,  177,  177,  277,   86,   86,
+       86,   86,   86,   86,   86,   86,   86,  276,  279,   86,
+      282,  285,  281,   86,  278,  280,   86,  288,  287,  284,
+      178,  291,  283,   86,  289,  286,   86,  292,  293,   86,
+      294,  320,   86,  297,   86,  295,   86,  302,  298,   86,
+
+      304,   86,   86,  299,   86,  305,   86,  307,   86,  300,
+      301,  303,  296,  308,   86,  311,  309,   86,   86,   86,
+      306,   86,  313,   86,  314,   86,   86,   86,  176,   86,
+       86,   86,  321,  315,  310,  322,  328,  316,  318,   86,
+      317,  319,   86,  323,  312,  331,  324,   86,  325,  329,
+      335,   86,   86,  332,   86,  330,   86,  333,  337,  338,
+      326,  376,  327,   86,   86,   86,  341,  336,   86,  334,
+      343,   86,   86,  342,  339,  344,   86,  345,   86,   86,
+      346,  348,   86,   86,   86,  347,   86,   86,  350,   86,
+       86,   86,  349,   86,   86,  352,  357,   86,  355,  353,
+
+       86,   86,   86,  358,  351,  362,  356,  364,  354,   86,
+      363,   86,  359,   86,   86,   86,  360,  366,  368,  371,
+       86,  361,   86,   86,   86,   86,  377,  365,  373,  378,
+       86,  380,   86,  369,  370,   86,  367,   86,   86,   86,
+      372,  375,   86,  383,  384,   86,  385,  170,  387,  379,
+      381,   86,   86,  382,   86,   86,   86,  388,   86,  392,
+       86,   86,   86,  391,   86,   86,  398,  396,  394,  399,
+      386,  395,   86,   86,  389,   86,   86,  402,  400,  390,
+      393,  401,   86,   86,   86,   86,   86,  397,   86,  409,
+      408,   86,   86,  412,  410,   86,  407,  403,  404,   86,
+
+      406,  411,  413,  405,   86,   86,   86,  415,   86,  416,
+       86,   86,   86,   86,  419,   86,   86,  420,   86,   86,
+       86,  431,  414,  424,  421,  422,  417,  418,  426,   86,
+       86,   86,  427,  425,   86,  428,   86,  423,   86,  433,
+      429,   86,  434,  432,   86,   86,   86,   86,   86,   86,
+      440,  436,   86,   86,   86,  441,   86,  430,  443,  439,
+       86,   86,  437,   86,  446,   86,   86,  435,  438,  448,
+      451,  442,   86,   86,   86,  444,   86,  450,  445,  447,
+       86,   86,  460,  452,  453,   86,  449,   86,   86,   86,
+      462,  467,  461,  175,  468,   86,  454,  472,  463,  455,
+
+      464,  469,  473,   86,  456,  457,  458,  459,   86,   86,
+      470,  471,  474,  465,  475,   86,  466,   86,   86,   86,
+       86,   86,   86,  484,   86,   86,   86,  486,  482,   86,
+      485,  483,   86,  478,  476,  479,   86,  477,  480,  481,
+       86,  487,   86,   86,  488,   86,  494,  489,  490,   86,
+       86,  491,   86,   86,  495,  500,  496,   86,  501,   86,
+      493,   86,  502,  492,   86,  497,   86,   86,  512,  499,
+       86,  503,  498,  505,  514,  506,   86,  504,  969,  508,
+       86,  507,   86,  513,  515,   86,   86,   86,   86,   86,
+       86,  516,  509,   86,  170,  510,  530,  511,   86,  517,
+
+       86,  518,  532,   86,  533,  546,   86,  519,  529,  535,
+       86,  520,  573,   86,  531,  552,  521,  534,   86,  522,
+       86,  523,  547,  524,  537,  536,  548,   86,   86,   86,
+       86,  549,   86,  550,   86,   86,  525,  553,  555,  526,
+      551,  527,  557,  528,   86,  554,  538,  539,   86,   86,
+       86,   86,   86,  556,  558,  559,  540,  541,  542,  543,
+      544,  561,   86,  545,  560,   86,  567,   86,   86,  565,
+      563,  562,  566,  568,  570,   86,  571,  569,   86,   86,
+       86,  575,   86,   86,   86,   86,   86,   86,  564,  578,
+       86,  579,  580,  574,   86,   86,   86,  170,  572,  577,
+
+      590,   86,  582,  585,   86,  581,  583,  576,   86,  584,
+       86,  593,   86,  586,  587,  588,   86,   86,   86,   86,
+      591,   86,   86,  594,  609,   86,  168,  599,  600,   86,
+       86,  598,  589,  595,  610,  592,   86,  596,   86,  601,
+      597,  602,   86,  611,   86,  613,  614,  603,  612,   86,
+      615,   86,   86,  617,   86,  604,  605,  616,   86,  606,
+      607,  618,   86,  608,   86,  621,   86,  619,  623,   86,
+       86,   86,   86,  626,  620,  624,  627,   86,   86,  622,
+       86,  628,   86,   86,  625,   86,   86,  633,  631,   86,
+      632,   86,   86,  629,   86,  634,   86,   86,   86,  639,
+
+       86,  630,  640,  635,  641,   86,  638,   86,  643,  636,
+      637,   86,   86,  646,   86,   86,  644,  642,   86,  645,
+       86,  648,   86,  650,   86,   86,   86,   86,   86,   86,
+       86,  654,  662,  652,   86,   86,  647,   86,   86,  649,
+      656,   86,   86,  651,  663,  682,  653,  655,  657,  660,
+      658,  661,  659,  664,   86,   86,  666,   86,   86,   86,
+      665,  669,  667,   86,   86,  668,  673,   86,   86,  676,
+       86,  670,   86,  672,   86,   86,   86,  675,  671,   86,
+       86,  679,  678,   86,   86,  683,   86,  674,   86,  685,
+       86,   86,  680,  677,   86,   86,   86,   86,  684,   86,
+
+      681,  700,  686,  688,   86,  711,  166,  687,   86,  689,
+      699,  697,   86,   86,  690,  698,  691,  702,  701,   86,
+      703,   86,  692,  704,  693,   86,  705,  694,  695,  709,
+      706,   86,  710,  712,  696,   86,  708,   86,   86,   86,
+      707,  716,   86,   86,  713,   86,  719,   86,   86,  721,
+      714,   86,   86,  715,   86,   86,  725,   86,   86,   86,
+       86,  165,   86,  718,  723,  717,  722,  728,  729,  724,
+       86,   86,  720,   86,   86,  736,  726,  732,  734,  730,
+      727,   86,  733,  170,   86,  731,   86,  735,   86,   86,
+       86,   86,   86,   86,  745,   86,  737,  743,   86,  748,
+
+       86,  738,   86,  740,   86,  741,  749,  739,  744,  742,
+      747,  751,   86,   86,   86,   86,  750,   86,  753,   86,
+       86,   86,  746,  757,   86,  752,  756,   86,  754,   86,
+      762,   86,  777,  758,  755,  763,   86,  765,   86,   86,
+      759,  766,   86,  760,  764,  761,  767,  768,   86,  769,
+       86,  770,   86,  771,   86,   86,   86,   86,  772,   86,
+      774,   86,   86,   86,  776,   86,  780,  775,   86,   86,
+      779,   86,  773,  781,   86,  778,  785,   86,  784,   86,
+       86,  787,   86,   86,   86,  789,   86,  791,  782,  786,
+      783,   86,   86,   86,   86,   86,  798,  788,  790,  794,
+
+       86,   86,   86,   86,  793,  799,  792,   86,  806,  796,
+       86,  795,   86,  801,   86,  797,   86,  800,  802,  805,
+       86,  803,  804,   86,   86,  809,   86,  813,  810,  812,
+      807,   86,  808,   86,  815,  814,   86,   86,  811,   86,
+      816,   86,  818,   86,  819,   86,   86,   86,  820,   86,
+       86,  827,   86,  823,  825,  821,   86,   86,   86,   86,
+      824,  834,  817,  822,   86,  828,   86,   86,   86,   86,
+      826,   86,  836,  832,  835,  831,  829,   86,  833,  830,
+      837,  838,   86,   86,   86,  839,   86,   86,   86,  840,
+      845,  846,  848,  844,   86,  841,   86,   86,   86,  847,
+
+      842,  843,   86,   86,  852,  849,   86,   86,  851,  853,
+       86,   86,  859,   86,   86,   86,  856,   86,   86,  854,
+      855,  850,  862,  861,   86,  864,   86,   86,   86,  163,
+      857,  858,  860,  865,  866,  863,   86,  869,   86,  867,
+      870,   86,  873,   86,   86,  875,  871,  874,   86,   86,
+       86,  877,   86,   86,  868,  879,  872,   86,   86,   86,
+       86,  885,   86,  876,   86,   86,  886,   86,   86,  878,
+      880,   86,   86,  887,   86,  881,  882,   86,  883,   86,
+      884,  895,  892,  888,  891,   86,  889,   86,   86,  894,
+      890,  893,   86,   86,   86,   86,   86,  896,   86,  897,
+
+      898,   86,  902,   86,   86,   86,   86,  911,   86,  910,
+       86,  899,  904,  901,  900,  909,   86,   86,   86,  903,
+      912,  905,  906,  907,  908,   86,   86,  914,   86,  915,
+       86,  913,   86,  917,   86,   86,   86,   86,   86,  916,
+      922,  921,  918,  923,   86,  920,   86,   86,   86,  919,
+       86,  925,  926,  929,   86,  928,  927,   86,   86,  933,
+       86,  924,  170,  931,  930,   86,   86,  934,   86,  932,
+      936,  935,  937,   86,   86,  939,   86,  942,   86,   86,
+       86,  943,  938,  945,   86,   86,   86,  949,  940,  944,
+      946,   86,   86,   86,   86,  947,  951,  941,  948,   86,
+
+       86,  955,   86,   86,   86,   86,  952,   86,   86,   86,
+      956,  950,  957,   86,   86,  971,   86,   86,  954,   86,
+      977,  958,  970,  973,  953,   86,   86,   86,  960,  959,
+       86,  968,  961,   86,  974,  962,  972,  976,   86,  963,
+       86,  978,  964,  975,   86,   86,  982,  983,   86,  965,
+      966,   86,  967,   86,   86,  979,  980,   86,   86,  981,
+       86,  984,  985,  992,  986,   86,   86,  987,  991,  994,
+      995,   86,  988,   86,   86,  993,  999,  997,  989,  990,
+       86,  996,   86,   86, 1000, 1001, 1004,   86,   86, 1002,
+     1005,   86, 1008,  998, 1007, 1006,   86,   86,   86, 1011,
+
+       86,   86, 1010, 1009, 1013, 1012,   86, 1003, 1015,   86,
+       86, 1014, 1016,   86,   86,   86,   86,   86,   86, 1019,
+       86,   86, 1023,   86,   86, 1017,   86, 1026, 1022,   86,
+       86,  161, 1024, 1018, 1030,   86, 1020, 1021, 1025,   86,
+       86, 1027, 1028, 1033, 1031, 1032,   86,   86, 1034,   86,
+     1036, 1029, 1035, 1038, 1037,   86,   86, 1040,   86,   86,
+     1039, 1041,   86,   86,   86, 1044,   86,   86, 1042, 1045,
+       86,   86, 1043,   86,   86, 1046,   86,   86, 1048,   86,
+     1049, 1050,   86,   86, 1054,   86,   86, 1058, 1055, 1047,
+     1057,   86,   86,   86, 1056, 1051,   86,   86, 1052,   86,
+
+       86,   86, 1053,   86, 1065, 1060, 1061,   86, 1063, 1064,
+       86, 1059, 1066,   86,   86, 1071,   86,   86,   86, 1074,
+     1072,   86,   86, 1062, 1067, 1069,   86, 1070,   86,   86,
+       86, 1073,   86,   86,   86, 1080, 1082, 1075, 1068, 1077,
+     1083,   86,   86, 1081,   86, 1076,   86, 1079,   86, 1085,
+       86,   86, 1078,   86, 1084,   86,   86,   86,   86, 1096,
+     1093,   86, 1091, 1086,   86,   86, 1087,   86, 1088,   86,
+     1097, 1090, 1089,   86,   86, 1094, 1098, 1095, 1092,   86,
+     1102,   86,   86, 1099,   86,   86,   86, 1101, 1100, 1103,
+     1105, 1106,   86, 1104,   86, 1109,   86,   86,   86,   86,
+
+     1116, 1107,   86, 1117, 1108, 1111,   86,   86,   86,   86,
+       86, 1119,   86, 1122, 1110,   86, 1112,   86, 1114,   86,
+     1113, 1118, 1115, 1123, 1120,   86,   86, 1126, 1121,   86,
+     1124, 1125,   86,   86, 1130, 1127, 1131, 1128, 1132,   86,
+       86,   86,   86, 1133,   86, 1136, 1129,   86, 1138,   86,
+       86,   86,   86,   86, 1135, 1144,   86, 1134, 1140, 1141,
+     1145,  170,   86,   86, 1148,   86,   86, 1137, 1139, 1147,
+       86,   86, 1142,   86, 1143,   86, 1151, 1146,   86,   86,
+       86,   86,   86, 1164,   86,   86,   86,   86, 1149, 1165,
+     1150, 1155, 1152, 1154, 1167,   86,   86,  178,   86, 1153,
+
+     1156, 1166, 1157,   86,   86, 1199, 1158,   86, 1159, 1168,
+     1171, 1169, 1160, 1170, 1161,   86, 1174,   86, 1173, 1162,
+     1172, 1175,   86,   86, 1163,   86, 1176,   86,   86, 1178,
+       86,   86,   86, 1181,   86, 1184,   86, 1177,   86, 1194,
+       86, 1179, 1180, 1182, 1183, 1185,   86, 1188,   86,   86,
+     1187, 1189,   86, 1192, 1190, 1186, 1193, 1191, 1195,   86,
+     1196,   86,   86,   86,   86,   86,   86,   86,   86,   86,
+     1208, 1197,   86, 1211,   86,   86, 1207,   86,   86, 1210,
+     1198,   86, 1200, 1209, 1214,   86, 1213, 1201, 1215, 1202,
+     1212, 1219,   86,   86, 1216, 1203, 1217,   86, 1220,   86,
+
+     1204, 1205,   86,   86,   86,   86,   86, 1206, 1218, 1226,
+       86, 1221,   86,   86,   86, 1229, 1227, 1230,   86, 1223,
+     1222,   86, 1224, 1225,   86,   86, 1228, 1234,   86, 1232,
+     1235, 1233, 1231,   86,   86,   86,   86,   86,   86, 1240,
+       86,   86,   86, 1237, 1238,   86, 1241, 1236,   86,   86,
+       86,   86, 1239, 1243,   86, 1245,   86, 1242,   86, 1248,
+     1244, 1247, 1246, 1249, 1250, 1252,   86,   86, 1251,   86,
+       86,   86, 1253,   86, 1256,  176,   86,   86,   86,   86,
+     1254,   86, 1266, 1261, 1262,   86, 1263, 1255,   86, 1257,
+     1258, 1259, 1260, 1267, 1264,   86, 1265,   86,   86,   86,
+
+       86,   86, 1272,   86,   86,   86, 1268, 1273,   86,   86,
+       86,   86, 1274, 1269, 1270, 1275, 1271,   86, 1277,   86,
+     1276, 1279, 1283, 1278,   86, 1282,   86, 1280,   86, 1285,
+       86,   86, 1281,   86,   86,   86, 1287,   86, 1289,   86,
+       86, 1286, 1290,   86, 1284, 1292,   86, 1288, 1293,   86,
+     1294, 1291,   86,   86, 1296, 1295,   86, 1297,   86,   86,
+       86, 1302, 1299, 1303,   86, 1298, 1301,   86, 1304,   86,
+       86,   86, 1307, 1306, 1300,   86,   86,   86,   86,   86,
+     1313, 1311, 1314, 1315,   86,   86,   86, 1305,   86,   86,
+     1316,   86, 1312, 1308, 1318, 1309, 1317, 1310,   86, 1320,
+
+       86,   86, 1322, 1319,   86,   86, 1321, 1324,   86,   86,
+     1326,   86,   86,   86, 1325,   86,   86, 1327,   86,   86,
+       86, 1328, 1331, 1332, 1323,   86,   86,   86,   86, 1333,
+     1334, 1338, 1339, 1329,   86, 1330,   86,   86,   86, 1336,
+       86, 1341, 1342,   86, 1335,   86,   86, 1337,   86, 1340,
+     1347,   86,   86,   86,   86,   86,   86, 1345,  170, 1343,
+     1344, 1349, 1353,   86,  175,   86, 1346,   86,   86, 1348,
+       86,   86, 1350, 1354,   86, 1352, 1355,   86, 1357, 1356,
+     1351, 1358, 1360, 1359,   86,   86, 1362, 1363,   86, 1361,
+     1365, 1366,   86,   86,   86,   86,   86,   86, 1368,   86,
+
+     1370, 1369,   86,   86,   86, 1364,   86,   86, 1367, 1373,
+       86,   86,   86, 1375, 1376,   86, 1371, 1372, 1379,   86,
+       86, 1374,   86,   86,   86, 1377, 1380,  170, 1383, 1391,
+     1378,   86,   86, 1381,   86, 1382, 1385,   86, 1389,   86,
+     1390, 1392,   86, 1384, 1393, 1386, 1394, 1387,   86,   86,
+     1388, 1395,   86,   86,   86,   86,   86,   86, 1402, 1399,
+       86, 1403, 1398,   86,   86,   86, 1407,   86, 1396, 1401,
+     1397, 1405,   86,   86, 1400,   86,   86, 1404, 1408,   86,
+     1409, 1411,   86, 1412, 1406,   86,   86,   86,   86,   86,
+       86, 1413, 1410, 1417,   86,   86, 1420,   86,   86,   86,
+
+     1414, 1415, 1418, 1419,   86, 1425, 1416, 1421, 1427,   86,
+       86,   86,   86, 1422,   86,   86, 1424,   86, 1423, 1426,
+     1430,   86,   86,   86,   86, 1437, 1439, 1431,   86, 1428,
+     1429,   86,   86, 1433, 1432,   86, 1434,   86, 1436,   86,
+       86,   86,   86, 1440, 1438, 1442, 1445, 1435,   86, 1441,
+       86,   86, 1447,   86, 1446, 1485, 1444, 1448,   86, 1443,
+       86, 1452,   86,   86, 1450, 1462, 1451, 1449,   86, 1453,
+      168,   86, 1461, 1454,   86, 1460, 1455, 1456,   86, 1463,
+       86, 1457, 1466, 1465,   86, 1464,   86, 1458,   86, 1467,
+       86, 1459,   86, 1469,   86, 1468,   86, 1471,   86,   86,
+
+     1476, 1472,   86, 1473,   86,   86,   86, 1470,   86,   86,
+     1479, 1477, 1482, 1483, 1474,   86,   86, 1475,   86,   86,
+     1484,   86, 1480,   86, 1478,  166,   86, 1481, 1492, 1486,
+     1487,   86, 1494, 1495, 1496, 1488,   86, 1489,   86, 1490,
+     1493, 1491,   86,   86,   86,   86, 1498, 1502,   86, 1497,
+       86,   86, 1503,   86, 1501,   86, 1506, 1504, 1499,   86,
+       86,   86, 1500,   86, 1512,   86, 1513,   86, 1508, 1507,
+       86,   86, 1505,   86,   86, 1515,   86, 1511,   86, 1509,
+     1510, 1517,   86, 1514,   86, 1520,   86, 1516, 1518,   86,
+       86, 1519, 1524,   86, 1523, 1526,   86,   86,   86, 1527,
+
+       86, 1528, 1521,   86,   86, 1525, 1532,   86, 1529,   86,
+       86, 1522,   86, 1531, 1534,   86,   86, 1535,   86, 1530,
+       86, 1540,   86, 1536,   86,   86,   86,   86, 1545, 1533,
+     1543, 1537,   86, 1538,   86,   86,   86, 1546,   86,   86,
+     1548, 1539, 1542,   86, 1541, 1547, 1544,   86, 1552,   86,
+     1550,   86,   86, 1549, 1551,   86, 1554,   86, 1557,   86,
+     1555,   86, 1556, 1553, 1558,   86, 1559,   86,   86,   86,
+       86, 1565, 1560,   86, 1562, 1566, 1563,   86, 1567, 1561,
+       86,   86, 1569, 1564,   86, 1568,   86,   86,   86, 1573,
+       86,   86,   86, 1570,   86,  170,   86, 1575, 1572,   86,
+
+       86, 1581, 1582,   86,   86, 1571, 1577,   86,   86, 1583,
+     1578, 1574, 1576,   86, 1584,   86,   86,   86, 1585, 1579,
+       86,   86,   86, 1580, 1586,   86, 1592,   86, 1589,   86,
+       86, 1590,   86, 1587,  165, 1588,   86, 1596,   86, 1591,
+     1597,   86, 1593, 1599, 1601,   86,   86, 1595,   86, 1602,
+       86,   86, 1594, 1598, 1605, 1600,   86, 1604,   86,   86,
+       86,   86,   86, 1603, 1610, 1606,   86, 1611, 1613, 1612,
+       86, 1607, 1615, 1608, 1616, 1614, 1609,   86,   86, 1618,
+       86, 1620,   86,   86, 1619,   86,   86,   86, 1617,   86,
+       86, 1623, 1624,   86, 1625,   86,   86,   86, 1628,   86,
+
+     1622, 1626,   86, 1633,   86,   86, 1621,   86, 1634,   86,
+     1627, 1630, 1637,   86, 1631, 1629,   86, 1632,   86,   86,
+      163, 1638,   86, 1635,   86,   86, 1636,   86,   86, 1639,
+       86,   86, 1645, 1641,   86, 1640,   86, 1642, 1646, 1643,
+       86, 1647,   86, 1650, 1644,   86, 1648,   86, 1651,   86,
+     1655, 1649, 1656, 1657, 1653, 1652,   86,   86,   86,   86,
+       86, 1659, 1654, 1660,   86,   86,   86,   86, 1665, 1666,
+     1658, 1661, 1664, 1662,   86,   86, 1667,   86, 1668,   86,
+     1669,   86,   86, 1670,   86, 1671,   86, 1663,   86,   86,
+       86,   86,   86,   86, 1678, 1672,   86,   86, 1677,   86,
+
+       86, 1674,   86,   86, 1675, 1680, 1673, 1676, 1681, 1684,
+       86, 1689, 1686, 1682, 1685,   86, 1679, 1687,   86, 1683,
+       86,   86, 1688,   86,   86,   86,   86,   86, 1697, 1693,
+       86,   86, 1692,   86,   86, 1698, 1701,   86,   86, 1690,
+     1691,   86,   86, 1704, 1694, 1696, 1695, 1703,   86,   86,
+       86, 1699,   86,   86,   86,   86, 1702, 1705,   86, 1700,
+       86, 1713,   86,   86,   86, 1714,   86, 1706, 1710, 1707,
+      161, 1708, 1709, 1712, 1718,   86, 1711,   86, 1717, 1719,
+       86,   86, 1715, 1716,   86,   86, 1720,   86, 1721,   86,
+     1722, 1725,   86,   86, 1723, 1726,   86,   86, 1729,   86,
+
+     1724, 1733,   86,   86,   86,   86, 1735,   86, 1727, 1734,
+     1728, 1730,   86, 1738,   86, 1732,   86, 1731, 1736,   86,
+     1737, 1739,   86,   86,   86, 1742, 1740, 1741,   86, 1746,
+     1747,   86, 1743, 1744,   86,   86,   86,   86,   86, 1751,
+     1752,   86, 1750, 1754,   86,   86,   86,   86, 1745,   86,
+     1755,   86, 1748, 1756,   86,   86,   86, 1749,   86, 1760,
+       86, 1753,   86,   86, 1765, 1757, 1761, 1758,   86, 1763,
+       86, 1759,   86,   86,   86,   86, 1771, 1769, 1762,   86,
+       86,   86, 1764, 1766,   86,   86,   86, 1777, 1770, 1772,
+       86, 1767, 1768,   86,   86,   86, 1774, 1773,   86, 1780,
+
+     1782,   86, 1783,   86, 1778, 1776,   86, 1785,   86, 1775,
+     1781, 1779,   86,   86,   86,   86,   86,  170, 1789, 1792,
+       86, 1791,   86, 1784, 1788, 1793,   86,   86,   86,   86,
+     1786, 1787, 1795, 1796, 1790,   86,   86,   86,   86, 1794,
+       86, 1803,   86, 1798,   86,   86, 1797, 1804, 1807,   86,
+     1801,   86,   86,   86, 1799, 1800,   86, 1809, 1805,   86,
+     1808, 1811, 1802,   86, 1806, 1810, 1813,   86, 1812, 1815,
+     1816,   86,   86, 1814,   86,   86, 1817,   86,   86,   86,
+     1819,   86, 1822, 1820,   86, 1823, 1818,   86,   86,   86,
+       86, 1828, 1827, 1824,   86, 1821,   86,   86,   86,   86,
+
+     1835, 1832,   86, 1826, 1833, 1825,   86, 1836, 1830,   86,
+       86,   86, 1829, 1837,   86,   86, 1834, 1831, 1839, 1840,
+       86, 1843,   86, 1842, 1841, 1845, 1846,   86,   86, 1838,
+       86,   86,   86, 1847, 1850, 1844,   86, 1848,   86, 1849,
+       86,   86,   86, 1852,   86, 1853, 1851,   86, 1857, 1858,
+     1856, 1859,   86,   86,   86,   86, 1861,   86, 1860,   86,
+       86, 1854,   86,   86, 1855, 1863, 1864,   86, 1865,   86,
+       86,   86,   86,   86,   86, 1862,   86, 1866,   86,   86,
+       86,   86, 1876, 1875, 1870,   86,   86, 1871, 1872, 1867,
+     1868,   86, 1869, 1878, 1873,   86, 1882, 1879,   86,   86,
+
+     1877,   86,   86, 1874, 1881,   86,   86, 1880, 1888,   86,
+       86,   86,   86,   86, 1892, 1884, 1890,   86, 1883, 1886,
+       86, 1885,   86,   86, 1891,   86,   86, 1887,   86,   86,
+     1889,   86, 1893,   86, 1894, 1897, 1899,   86, 1907,   86,
+     1898, 1896, 1900,   86, 1902, 1901, 1895,   86, 1908,   86,
+     1906,   86, 1903, 1912,   86, 1909, 1905, 1904,   86,   86,
+       86, 1911,   86,   86,   86,   86, 1916, 1915,   86, 1910,
+     1917,   86, 1913,   86, 3581, 1925,   86,   86,   86, 1914,
+     1920,   86,   86, 1918, 1919, 1922, 1924,   86, 1923, 1926,
+       86,   86, 1921,   86, 1927, 1929,   86, 1933, 1928,   86,
+
+       86,   86, 1934,   86, 1935,   86,   86, 1931,   86, 1930,
+       86, 1939, 1932, 1936,   86, 1942,   86, 1941,   86, 1943,
+       86, 1944, 1940, 1938,   86, 1937,   86, 1946,   86, 1948,
+     1947, 1952,   86,   86, 1949, 1945, 1953,   86,   86,   86,
+       86,   86, 3581, 1959, 1957,   86, 1951, 1950, 1955,   86,
+     1961,   86, 1954, 1962, 1956, 1958,   86,   86, 1960,   86,
+     1965, 1963,   86,   86, 1969, 1967,   86,   86, 1966,   86,
+       86, 1964, 1971, 1973,   86,   86,   86, 1968, 1972,   86,
+     1970,   86, 1974,   86,   86,   86,   86,   86,   86, 1979,
+       86, 1978,   86, 3581, 1975, 1976, 1980, 1982, 1981, 1983,
+
+     1977, 1986,   86, 1988, 1984, 1989, 1985,   86,   86,   86,
+       86,   86, 1991,   86,   86, 1995,   86,   86, 1997,   86,
+     1990,   86,   86, 1987,   86, 2001,   86,   86, 1992, 1994,
+     1996,   86, 1993,   86,   86, 2003,   86, 1999, 2004,   86,
+     2000, 1998,   86,   86, 2006, 2008,   86, 2002, 2007,   86,
+       86,  170,   86, 2012, 2005, 2015,   86, 2010, 2011,   86,
+       86,   86,   86, 2013,   86, 2009,   86, 2014, 2019,   86,
+       86, 2021, 2017,   86,   86, 2026, 2020,   86, 2016,   86,
+     2018,   86, 2022,   86,   86, 2023, 2025, 2030,   86, 2027,
+     2029,   86, 2034, 2024, 2031, 2032,   86, 2028,   86, 2035,
+
+     2036,   86,   86, 2033,   86,   86, 2038,   86,   86,   86,
+     2039,   86,   86,   86, 2037,   86,   86,   86, 2044,   86,
+     2045,   86,   86,   86, 2049, 2046,   86, 3581, 2040, 2042,
+     2043, 2041, 2048, 2047,   86, 2050,   86,   86, 2056, 2053,
+       86, 2055, 2052, 2057,   86, 2058, 2054,   86, 2051,   86,
+       86,   86,   86,   86, 2065,   86, 2060,   86, 2059,   86,
+     2068, 2069,   86, 2070,   86,   86, 2061,   86, 2062, 2063,
+     2064, 2066,   86, 2067,   86, 2071, 2072,   86,   86, 2073,
+     2077,   86,   86,   86, 2079, 2080, 2074, 2078, 2075, 2081,
+       86, 2083, 2082, 2076,   86,   86,   86,   86,   86, 2084,
+
+       86, 2086, 2087,   86,   86, 2090,   86,   86,   86, 2089,
+       86,   86,   86, 2095,   86, 2093, 2094, 2097,   86, 2096,
+     2088, 2085, 2091,   86,   86,   86,   86, 2105,   86, 2092,
+     2098, 2099, 2100,   86, 2107,   86,   86, 2101,   86, 2108,
+       86,   86,   86, 2103, 2102,   86, 2104, 2111, 2106, 2109,
+     2114, 2110, 2112, 2113,   86,   86,   86, 2118,   86,   86,
+       86, 2120, 2116, 2115,   86,   86,   86, 2123, 2124,   86,
+       86, 2126,   86,   86,   86,   86, 2117,   86,   86, 2133,
+       86,   86, 2131, 2128, 2121, 2119, 2129, 2122,   86,   86,
+     2125,   86,   86,   86, 2132,   86, 2130,   86, 2127, 2136,
+
+     2137, 2142, 2134,   86, 2135,   86, 2139,   86, 2143, 2144,
+       86,   86,   86, 2141, 2147,   86,   86, 2150, 2146, 2138,
+       86, 2140,   86,   86, 2148, 2151,   86,   86,   86,   86,
+     2145, 2149, 2152,   86,   86,   86, 2154, 2153, 2156,   86,
+       86, 2162, 2158,   86, 2161, 2157,   86,   86, 2155, 2163,
+       86,   86, 2159,   86,   86,   86,   86, 2166,   86, 2171,
+       86, 2165,   86, 2170,   86,   86, 2160, 3581,   86,   86,
+     2164, 2168, 2176, 2167,   86, 2177, 2169,   86, 2179, 2174,
+     2172, 2173,   86, 2178, 2175, 2180,   86,   86, 2184,   86,
+       86, 2181,   86, 2182,   86,   86,   86,   86, 2183,   86,
+
+     2188, 2192,   86,   86,   86, 3581, 2186,   86,   86, 2195,
+       86, 2185,   86, 2187, 2197,   86, 2189, 2190, 2194, 2191,
+     2193, 2196,   86, 2198,   86,   86,   86,   86, 2199, 2284,
+     2203, 2204,   86, 2206, 2200, 2205,   86, 2201, 2207,   86,
+     2208, 2209, 2202,   86,   86, 2213,   86,   86, 2211,   86,
+       86,   86,   86, 2210, 2215,   86, 2212,   86, 2217, 2219,
+       86, 2214, 2221,   86, 2216,   86, 2222,   86,   86,   86,
+      170,   86,   86,   86,   86, 2225,   86, 2231,   86, 2229,
+     2218, 2230, 2220, 2224, 2226, 2227, 2232,   86, 2223,   86,
+     2228, 2233,   86, 2235,   86,   86,   86,   86,   86,   86,
+
+     2236, 2237,   86, 2238, 2239,   86,   86, 2240, 2241, 2234,
+     2242,   86, 2243,   86,   86, 2247,   86,   86, 2244, 2246,
+       86,   86,   86,   86, 2251, 2245, 2248, 2249, 2250, 2252,
+       86,   86,   86,   86,   86,   86,   86,   86, 2257, 2259,
+     2253, 2254, 2258,   86,   86,   86,   86,   86, 2264, 2255,
+       86,   86, 2256, 2260, 2262, 2261,   86, 2263,   86, 2265,
+     2267,   86, 2266,   86, 2270, 2268,   86, 2271,   86,   86,
+     2269, 2276,   86, 2272, 2274,   86,   86,   86, 2277,   86,
+       86, 2275,   86, 2283,   86, 2285,   86, 2273, 2286,   86,
+       86,   86, 2278, 2279, 2282, 2280,   86, 2281, 2288,   86,
+
+     2290,   86,   86, 2291, 2289,   86, 2294,   86, 2287,   86,
+       86, 2293,   86,   86, 2292,   86, 2296,   86, 2299,   86,
+       86, 2295,   86,   86, 2300,   86,   86,   86,   86,   86,
+     2314,   86, 2297, 2298, 2302, 2303,   86, 2305,   86,   86,
+     2301, 2304, 2307,   86,   86, 2308, 2306, 2317, 2311, 2309,
+     2313,   86, 2312,   86, 2315,   86, 2318,   86,   86, 2316,
+     2320,   86, 2310, 2321,   86, 2324,   86,   86,   86, 2323,
+       86,   86,   86, 2319, 2329, 2322, 2325, 2327,   86, 2331,
+     2332,   86, 2328,   86, 2326,   86, 2334,   86,   86,   86,
+     2330, 2337,   86, 2336,   86, 2333,   86, 2338,   86, 2339,
+
+       86, 2343,   86,   86,   86,   86, 2347,   86, 2344, 2335,
+       86, 2348,   86,   86, 2340, 2345, 2341, 2346, 2349,   86,
+     2342, 2352,   86, 2350,   86, 2353,   86, 2351,   86, 2357,
+     2354,   86,   86,   86, 2359,   86, 2358,   86, 2363,   86,
+       86, 2355,   86, 2365,   86, 2361,   86, 2366, 2356,   86,
+       86, 2360, 2364, 2362,   86, 2368,   86,   86, 2367, 2373,
+     2370,   86, 2369, 2371, 2375,   86, 2372,   86,   86, 2376,
+       86,   86,   86,   86,   86,   86, 2378, 2377, 2381, 2382,
+     2379,   86, 2374, 2380,   86, 2383, 2386,   86,   86,   86,
+     2385,   86,   86,   86,   86, 2384,   86,   86, 2394,   86,
+
+       86,   86, 2387, 2484,   86,   86, 2388, 2389, 2390, 2393,
+     2392, 2395, 2396,   86,   86,   86, 2391, 2397, 2398, 2399,
+       86,   86,   86,   86, 2400,   86, 2401, 2403, 2404, 2407,
+     2409,   86,   86,   86, 2408, 2411,   86, 2405,   86, 2402,
+       86, 2406, 2410,   86, 2414,   86,   86, 2418, 2415,  170,
+     2412, 2427,   86,   86, 2420, 2422, 2423, 2413, 2416, 2421,
+       86,   86,   86,   86,   86, 2417, 2424,   86,   86, 2428,
+       86, 2419, 2425, 2432,   86,   86, 2433,   86,   86, 2431,
+     2436,   86, 2438, 2429,   86,   86,   86, 2426,   86, 2434,
+     2437, 2439,   86, 2440, 2430, 2441, 2435,   86,   86,   86,
+
+       86,   86, 2442, 2444, 2443,   86,   86,   86,   86,   86,
+     2447,   86,   86, 2450,   86,   86,   86, 2445,   86, 2454,
+     2456,   86, 2449,   86,   86, 2446,   86, 2451, 2452, 2448,
+     2457, 2453,   86, 2458,   86,   86, 2463, 2455,   86, 2459,
+       86, 2460, 2461, 2465,   86, 2468,   86,   86,   86,   86,
+     2462,   86,   86, 2466, 2464, 2469,   86,   86,   86,   86,
+       86,   86, 2467, 2479,   86,   86,   86, 2470, 2471,   86,
+     2472, 2477,   86, 2553, 2481, 2473, 2475,   86, 2482, 2476,
+     2474, 2478,   86, 2483,   86, 2485,   86, 2480, 2486,   86,
+       86, 2487,   86, 2488,   86, 2489,   86, 2492, 2490, 2493,
+
+       86,   86,   86, 2494, 3581, 2491, 2495,   86,   86, 2496,
+       86, 2498,   86, 2499,   86, 2497,   86, 2500, 2502,   86,
+     2501, 2503,   86,   86,   86,   86, 2509,   86, 2504, 2505,
+     2510,   86,   86,   86, 2506,   86, 2507, 2508, 2512,   86,
+     2514,   86,   86, 2517,   86, 2518,   86, 2516, 2515,   86,
+       86, 2511,   86, 2513,   86,   86,   86, 2525,   86, 2520,
+       86, 2524,   86, 2519, 2527,   86,   86,   86, 2522, 2521,
+       86, 2529,   86, 2530, 2523, 2531,   86, 2532,   86, 2526,
+     2528, 2534,   86,   86,   86, 2537,   86, 2540,   86, 2535,
+       86,   86, 2533, 2536,   86,   86,   86,   86,   86, 2538,
+
+       86, 2545, 2546,   86,   86, 2539, 2542, 2551,   86, 2548,
+     2541, 2544,   86, 2549, 2547, 2550,   86, 2543,   86,   86,
+       86,   86,   86, 2559,   86,   86,   86, 2561, 2565, 2562,
+     2554,   86, 2552, 2560,   86, 2557, 2555, 2556,   86,   86,
+       86,   86,   86, 2566, 2563, 2567, 2564, 2558,   86,   86,
+       86,   86, 2570, 2568, 2572, 2574, 2575,   86,   86,   86,
+     2578, 2579, 2571, 2569, 2576,   86,   86,   86, 2573, 2582,
+       86,   86, 2577,   86,   86,   86, 2583,   86, 2584, 2580,
+     2581,   86,   86,   86, 2587,   86, 2588, 2586,   86,   86,
+     2593, 2589, 2590, 2594, 2591, 2585,   86,   86,   86,   86,
+
+     2600, 2595, 2592,   86,   86, 2599,   86,   86, 2601, 2596,
+       86,   86, 2598,   86, 2604,  170, 2602,   86, 2597, 2603,
+     2605,   86,   86, 2610,   86,   86,   86,   86,   86,   86,
+       86, 2606, 2611, 2607, 2612, 2618,   86, 2608, 2609, 2613,
+       86, 2616, 2614, 2615,   86, 2621,   86, 2617,   86, 2622,
+     2623,   86, 2620,   86,   86, 2626, 2619, 2624, 2625, 2627,
+       86,   86, 2629,   86,   86,   86,   86, 2631,   86, 2628,
+       86,   86,   86, 2635,   86, 2636,   86,   86, 2630,   86,
+     2632,   86, 2638, 2639, 2633, 2644,   86,   86, 2637, 2640,
+     2634, 2641,   86,   86,   86,   86, 2645,   86, 2642, 2643,
+
+       86, 2647, 2648,   86,   86,   86,   86,   86,   86, 2650,
+       86,   86,   86, 2649, 2655, 2646,   86, 2657, 2658,   86,
+     2660,   86, 2654,   86,   86, 2651, 2652, 2653,   86, 2659,
+       86, 2656,   86,   86, 2661, 2664, 2666,   86,   86,   86,
+     2662,   86, 2670,   86, 2669, 2667,   86, 2663,   86, 2671,
+       86,   86, 2672, 2665, 2668, 2673, 2681, 2674,   86, 2675,
+       86,   86,   86, 2676, 2677,   86, 2679,   86,   86, 2683,
+       86, 2680,   86, 2685,   86,   86,   86, 2678,   86,   86,
+     2682, 2684,   86,   86, 2689,   86,   86,   86, 2694,   86,
+     2687, 2692, 2693, 2686, 2688, 2695,   86, 2696,   86, 2698,
+
+       86,   86,   86,   86, 2691, 2697,   86, 2701, 2690,   86,
+       86,   86, 2703,   86,   86, 2709, 2699, 2706,   86, 2708,
+     2707,   86, 2704, 2700,   86, 2702, 2705,   86,   86, 2712,
+       86,   86,   86,   86, 2713,   86, 2716, 2717,   86,   86,
+       86,   86, 2710, 2711, 2718,   86, 2714,   86,   86, 2720,
+     2715, 2719, 2722,   86, 2721, 2723,   86,   86,   86, 2724,
+       86,   86, 2725, 2727, 2731,   86, 2730,   86, 2726, 2732,
+       86, 2733,   86, 2734,   86,   86,   86, 2728,   86, 2735,
+     2729, 2737,   86, 2738,   86, 2739,   86, 2740,   86,   86,
+     2741,   86,   86, 2736,   86, 2747,   86,   86, 2749,   86,
+
+       86, 2743, 2750,   86,   86,   86,   86,   86, 2742,   86,
+     2746, 2744, 2752, 2745, 2753, 2751, 2748, 2754,   86,   86,
+     2759,   86,   86, 2756, 2761,   86, 2755,   86,   86, 2757,
+       86, 2760,   86,   86,   86,   86, 2768,  170,   86, 2758,
+       86, 2770,   86, 2764,   86,   86,   86, 2766, 2763, 2769,
+       86, 2771,   86, 2762,   86, 2777, 2765, 2767,   86, 2772,
+     2773, 2776,   86, 2779, 2774, 2781,   86, 2780, 2778, 2782,
+       86,   86, 2775,   86, 2783,   86, 2784,   86, 2785,   86,
+       86,   86,   86,   86,   86,   86,   86,   86,   86, 2786,
+     2787,   86,   86, 2796,   86, 2794, 2789,   86, 2800, 2788,
+
+       86, 2791, 2790,   86, 2801, 2793, 2792, 2795, 2797,   86,
+     2798,   86, 2799, 2802,   86, 2806,   86, 2803,   86,   86,
+     2805, 2808,   86,   86,   86,   86,   86, 2807,   86,   86,
+       86, 2804, 2812,   86, 2819,   86,   86, 2809,   86, 2820,
+       86, 2810, 2811, 2813, 2814, 2818, 2816, 2815,   86,   86,
+     2824,   86, 2817, 2825,   86, 2823, 2821, 2826,   86,   86,
+       86,   86,   86,   86,   86,   86, 2822, 2831,   86,   86,
+       86,   86, 2836, 2835, 2828, 2830, 2827, 2837,   86, 2829,
+     2833,   86,   86, 2838, 2832, 2834, 2839,   86,   86,   86,
+     2840, 2841,   86,   86,   86,   86,   86,   86, 2845, 2846,
+
+       86, 2843,   86, 2852,   86, 2851,   86, 2842,   86, 2855,
+       86,   86, 2844,   86, 2850, 2847, 2848,   86,   86,   86,
+     2849, 2853, 2856, 2858, 2860,   86, 2854,   86, 2857, 2861,
+     2862,   86, 2859,   86,   86,   86, 2867,   86,   86,   86,
+     2863,   86,   86, 2870,   86, 2871, 2872,   86, 2864,   86,
+     2868, 2869, 2874,   86, 2865, 2866,   86,   86, 2876,   86,
+     2873, 2875,   86, 2880,   86,   86, 2881,   86, 2883,   86,
+       86, 2878,   86, 2877,   86,   86,   86,   86,   86,   86,
+     2890,   86, 2879, 2884, 2887, 2885, 2888, 2886, 2889, 2882,
+     2893,   86,   86, 2892,   86,   86, 2891, 2894,   86, 2895,
+
+       86,   86,   86, 2897,   86,   86,   86,   86, 2898, 2896,
+     2903, 2900, 2901,   86, 2906,   86, 2907,   86, 2904,   86,
+     2899, 2902, 2905,   86, 2908, 2910,  170,   86,   86,   86,
+       86, 2915,   86, 2912, 2911,   86,   86,   86,   86, 2917,
+     2916,   86, 2909, 2920,   86, 2922, 2919, 2913, 2914, 2921,
+       86, 2918, 2923,   86,   86, 2925,   86, 2924,   86,   86,
+     2926,   86, 2930, 2927, 2928,   86,   86,   86,   86, 2931,
+     2929, 2932,   86,   86,   86,   86, 2933, 2937, 2938,   86,
+     2939, 2935,   86,   86,   86, 2941,   86, 2934,   86, 2942,
+       86, 2940,   86, 2943,   86, 2936,   86, 2944,   86,   86,
+
+       86, 2946, 2945, 2947, 2948,   86,   86,   86, 2953,   86,
+     2949,   86,   86, 2950, 2951, 2952, 2955, 2957, 2954,   86,
+       86,   86,   86,   86,   86, 2958, 2962,   86,   86, 2963,
+     2956,   86,   86,   86,   86, 2968,   86,   86,   86, 2959,
+     2965, 2960,   86, 2961, 2973,   86, 2972, 2964, 2966, 2967,
+       86, 2969, 2970, 2975, 2976,   86, 2978,   86, 2971,   86,
+       86,   86,   86, 2979,   86, 2980,   86,   86,   86,   86,
+       86, 2982, 2985, 2977,   86, 2974, 2983, 2986,   86,   86,
+       86, 2984,   86, 2987, 2988, 3070, 2981, 2989,   86,   86,
+     2991, 2993,   86, 2994,   86, 2990, 2995,   86,   86,   86,
+
+     2992,   86, 2996,   86, 2997, 2999,   86,   86,   86, 3003,
+     2998,   86, 3001,   86, 3004,   86,   86, 3007, 3008,   86,
+     3002, 3009,   86, 3000,   86, 3005, 3010,   86,   86,   86,
+       86, 3006, 3011, 3014,   86,   86,   86, 3012, 3017,   86,
+       86, 3013,   86, 3018, 3019,   86, 3021,   86, 3015,   86,
+       86, 3020, 3025, 3022, 3028, 3016, 3026,   86,   86,   86,
+       86,   86,   86, 3027, 3024, 3030, 3029, 3023,   86,   86,
+     3031,   86,   86, 3036,   86,   86,   86,   86, 3035,   86,
+     3038, 3039,   86, 3041,   86, 3032,   86, 3042, 3033, 3034,
+       86, 3040,   86, 3044,   86, 3045,   86,   86,   86, 3037,
+
+       86, 3048, 3043, 3052,   86,   86,   86,   86,   86, 3046,
+     3047,   86, 3098,   86, 3051, 3049, 3054,   86, 3050, 3053,
+     3056,   86, 3059, 3581, 3055, 3058, 3057, 3060,   86, 3061,
+     3063, 3064,   86,   86, 3062,   86,   86, 3065,   86, 3066,
+       86, 3067,   86, 3068,   86, 3069,   86, 3073,   86,   86,
+       86, 3071,   86, 3072, 3075,   86,   86, 3077,   86, 3081,
+       86,   86, 3074, 3581, 3078, 3082,   86,   86,   86, 3076,
+     3083, 3086,   86,   86, 3084,   86, 3079,   86, 3080, 3085,
+     3087, 3088,   86,   86, 3090,   86, 3091,   86, 3089,   86,
+       86, 3096,   86, 3095, 3097,   86, 3092,   86, 3093, 3094,
+
+       86,   86,   86, 3103,   86,   86, 3099,   86, 3104,   86,
+       86, 3107, 3101, 3106,   86, 3108,   86, 3102, 3105, 3100,
+     3109,   86, 3111,   86,   86,   86, 3115,   86, 3110,   86,
+     3112,   86,   86,   86,   86,   86,   86,   86, 3116, 3119,
+     3122, 3581, 3120, 3114, 3117,   86,   86,   86, 3123, 3113,
+     3125,   86, 3126,   86, 3127, 3121, 3118,   86, 3124,   86,
+     3128,   86, 3129,   86, 3132, 3134,   86, 3133, 3135,   86,
+     3136,   86, 3130,   86,   86, 3131,   86, 3581,   86, 3141,
+       86,   86, 3137, 3140,   86,   86, 3142, 3144,   86, 3143,
+       86,   86,   86,   86, 3138, 3139,   86, 3148, 3145, 3150,
+
+     3152,   86, 3146,   86,   86,   86,   86, 3153,   86, 3154,
+       86, 3149, 3147, 3155,   86, 3156,   86,   86, 3161,   86,
+       86, 3151,   86,   86,   86, 3157,   86,   86, 3165,   86,
+     3160, 3158, 3159, 3162,   86, 3163, 3164,   86, 3166, 3170,
+       86,   86, 3167,   86, 3172, 3169, 3168,   86,   86,   86,
+     3173, 3176,   86, 3178,   86,   86, 3181,   86, 3179,   86,
+     3171, 3180, 3183,   86,   86, 3174,   86,   86, 3177,   86,
+       86,   86, 3186,   86, 3175, 3182, 3188, 3189,   86,   86,
+     3184, 3192, 3185,   86,   86, 3187,   86,   86, 3191, 3199,
+     3190,   86, 3195, 3198,   86,   86, 3193,   86, 3196,   86,
+
+     3201,   86, 3194,   86, 3202, 3197,   86, 3204,   86, 3205,
+       86,   86, 3208,   86,   86,   86,   86, 3200, 3206,   86,
+     3213,   86,   86, 3203, 3211, 3210,   86, 3217,   86,   86,
+       86, 3207, 3209, 3215,   86,   86, 3212, 3219, 3214,   86,
+       86, 3581, 3216, 3220, 3218,   86, 3221, 3222, 3224, 3227,
+     3223, 3225,   86,   86,   86,   86, 3226, 3228,   86, 3230,
+       86,   86,   86, 3229, 3233,   86, 3231, 3236,   86,   86,
+       86,   86,   86,   86, 3241,   86,   86,   86, 3581,   86,
+       86, 3232, 3234, 3235, 3237, 3248, 3240, 3238, 3244, 3245,
+       86, 3246,   86, 3243,   86, 3242, 3239, 3247,   86,   86,
+
+     3251,   86, 3252,   86, 3250, 3253,   86,   86, 3249, 3254,
+       86,   86, 3257,   86,   86, 3259,   86,   86,   86, 3258,
+     3255, 3261,   86,   86,   86,   86,   86,   86, 3267, 3260,
+     3268,   86,   86,   86,   86,   86, 3262, 3256,   86, 3274,
+       86, 3275,   86,   86, 3265, 3263, 3264, 3273, 3266, 3271,
+     3277,   86, 3270,   86, 3272,   86,   86,   86, 3269, 3581,
+     3280, 3276, 3282,   86, 3283,   86,   86,   86,   86, 3286,
+       86, 3278, 3279, 3284,   86,   86, 3289,   86, 3281, 3287,
+     3285,   86, 3288,   86,   86,   86, 3290, 3291,   86, 3292,
+     3293,   86,   86, 3295,   86,   86,   86,   86, 3297,   86,
+
+       86,   86, 3298, 3296,   86, 3294,   86,   86,   86,   86,
+       86,   86, 3307, 3308, 3299, 3303, 3300, 3301, 3302, 3310,
+     3320, 3304, 3305,   86, 3314,   86, 3581, 3306, 3311, 3309,
+     3312,   86, 3315,   86, 3313, 3316,   86,   86, 3318,   86,
+       86, 3317, 3321,   86,   86, 3319, 3323,   86, 3324, 3325,
+       86,   86, 3326, 3327, 3331,   86, 3328,   86,   86, 3322,
+     3329, 3330,   86,   86,   86, 3334,   86, 3332,   86,   86,
+     3337,   86,   86, 3333,   86,   86, 3335, 3341,   86, 3340,
+       86,   86, 3336,   86,   86,   86,   86, 3345, 3344,   86,
+       86, 3338, 3339, 3346, 3349, 3342, 3350,   86,   86, 3351,
+
+     3347,   86, 3352,   86, 3348, 3343, 3353,   86, 3354,   86,
+       86,   86, 3359, 3355,   86, 3356, 3361, 3360,   86,   86,
+     3357,   86,   86, 3358,   86,   86, 3365, 3369, 3362, 3363,
+     3366, 3368,   86,   86,   86,   86, 3371,   86, 3372,   86,
+     3364, 3370,   86, 3367, 3375,   86,   86, 3374,   86, 3373,
+     3376,   86, 3379,   86,   86, 3377, 3380,   86, 3381,   86,
+     3382,   86, 3383,   86, 3384,   86, 3378, 3385,   86, 3386,
+       86,   86,   86, 3389,   86, 3390,   86,   86,   86,   86,
+     3387, 3388,   86, 3392, 3394,   86, 3391, 3396,   86,   86,
+       86,   86,   86, 3400, 3397, 3401,   86,   86, 3393, 3403,
+
+       86, 3395, 3398, 3399,   86, 3402,   86, 3405,   86, 3407,
+       86,   86, 3410,   86, 3409, 3404,   86,   86,   86,   86,
+       86, 3412,   86,   86,   86,   86, 3416, 3411, 3408, 3418,
+       86,   86, 3406, 3417,   86,   86, 3413, 3414, 3415, 3422,
+       86, 3425,   86, 3423,   86, 3419, 3426,   86, 3424, 3420,
+       86, 3421, 3427,   86,   86,   86,   86,   86, 3430, 3429,
+       86,   86,   86,   86, 3436,   86, 3435, 3428,   86, 3438,
+     3432, 3434,   86,   86,   86, 3431,   86,   86, 3437,   86,
+     3433,   86,   86,   86, 3440, 3439,   86, 3447, 3445,   86,
+     3442, 3441, 3444, 3446, 3449, 3451,   86,   86,   86,   86,
+
+       86, 3443,   86, 3453, 3448, 3450, 3456,   86, 3458,   86,
+       86, 3457,   86, 3454,   86, 3459,   86, 3452, 3460,   86,
+     3455, 3461,   86,   86,   86,   86, 3464,   86,   86, 3462,
+     3465, 3469, 3463, 3466,   86,   86,   86,   86,   86, 3468,
+       86, 3467, 3478, 3472, 3473,   86,   86, 3471, 3470, 3475,
+       86, 3476,   86, 3477,   86,   86, 3474, 3480,   86, 3479,
+       86, 3481, 3483,   86,   86, 3484,   86,   86, 3485, 3487,
+     3488,   86,   86, 3482,   86,   86,   86, 3493,   86, 3492,
+       86, 3489, 3494,   86, 3490, 3486,   86,   86,   86,   86,
+       86, 3491,   86, 3498,   86, 3500,   86,   86,   86,   86,
+
+       86, 3495, 3497, 3505, 3506,   86, 3496, 3499,   86, 3502,
+     3503, 3501, 3513, 3504, 3507,   86, 3511,   86,   86,   86,
+     3508,   86, 3514, 3509, 3512,   86,   86, 3510,   86,   86,
+     3515, 3516, 3519, 3517, 3520,   86,   86,   86,   86, 3522,
+       86, 3521,   86,   86,   86,   86, 3523, 3528, 3518,   86,
+     3525,   86,   86,   86,   86, 3531, 3524, 3532,   86,   86,
+       86,   86,   86, 3526, 3527, 3530, 3535,   86, 3529, 3533,
+     3536,   86, 3534,   86, 3539, 3538, 3540,   86, 3537,   86,
+     3541,   86, 3543,   86, 3545,   86, 3546,   86,   86,   86,
+     3550,   86, 3547, 3581,   86, 3548, 3553,   86, 3544, 3551,
+
+       86,   86, 3552, 3542,   86,   86,   86,   86, 3549,   86,
+       86, 3554, 3555,   86, 3557, 3559,   86,   86, 3561,   86,
+     3556,   86, 3562,   86, 3565, 3558, 3560, 3566,   86, 3563,
+       86,   86, 3569, 3570,   86,   86, 3572,   86, 3564,   86,
+     3567,   86, 3571, 3573,   86,   86, 3574,   86,   86, 3568,
+     3575, 3581, 3576, 3579,   86, 3580,   86, 3581, 3581, 3581,
+     3577, 3581, 3581, 3581, 3581, 3581, 3581, 3578,   47,   47,
+       47,   47,   47,   47,   47,   52,   52,   52,   52,   52,
+       52,   52,   57,   57,   57,   57,   57,   57,   57,   63,
+       63,   63,   63,   63,   63,   63,   68,   68,   68,   68,
+
+       68,   68,   68,   74,   74,   74,   74,   74,   74,   74,
+       80,   80,   80,   80,   80,   80,   80,   89,   89, 3581,
+       89,   89,   89,   89,  160,  160, 3581, 3581, 3581,  160,
+      160,  162,  162, 3581, 3581,  162, 3581,  162,  164, 3581,
+     3581, 3581, 3581, 3581,  164,  167,  167, 3581, 3581, 3581,
+      167,  167,  169, 3581, 3581, 3581, 3581, 3581,  169,  171,
+      171, 3581,  171,  171,  171,  171,  174, 3581, 3581, 3581,
+     3581, 3581,  174,  177,  177, 3581, 3581, 3581,  177,  177,
+       90,   90, 3581,   90,   90,   90,   90,   17, 3581, 3581,
+     3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581,
+
+     3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581,
+     3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581,
+     3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581
     } ;
 
-static const flex_int16_t yy_chk[7002] =
+static yyconst flex_int16_t yy_chk[7029] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -2380,18 +2397,18 @@ static const flex_int16_t yy_chk[7002] =
         5,    3,    6,   24,    4,   24,   24,    5,   24,    6,
         7,    7,    7,    7,   24,    7,    8,    8,    8,    8,
        33,    8,    7,    9,    9,    9,   26,   26,    8,   10,
-       10,   10,   19,   29,    9,   33,   19,   29, 3572,   35,
+       10,   10,   19,   29,    9,   33,   19,   29, 3589,   35,
        10,   11,   11,   11,   11,   11,   11,   13,   13,   13,
 
        13,   34,   13,   11,   35,   99,   34,   29,   38,   13,
        51,   51,   11,   12,   12,   12,   12,   12,   12,   14,
        14,   14,   14,   99,   14,   12,   15,   15,   15,   38,
        23,   14,   23,   23,   12,   23,   46,   15,   16,   16,
-       16,   23,   23,   25,   27,   27,   25,   25, 2894,   16,
+       16,   23,   23,   25,   27,   27,   25,   25, 2910,   16,
        25,   46,   27,   30,   30,   25,   27,   56,   40,   27,
        56,   73,   31,   31,   25,   28,   67,   67,   30,   32,
        28,   31,   40,   32,   28,   73,   32,   28,   92,   28,
-       28,   92,   31,   32, 1138,   32,   36,   36,   37,   37,
+       28,   92,   31,   32, 1145,   32,   36,   36,   37,   37,
        28,   45,   45,   37,   97,   36,   45,   97,   41,   41,
 
        45,   36,   87,   41,   93,   36,   87,   37,   93,   37,
@@ -2405,744 +2422,746 @@ static const flex_int16_t yy_chk[7002] =
        89,   98,  102,  100,  103,  104,  106,  107,  102,  113,
       102,  109,  106,  113,   98,  108,  111,  140,  114,  112,
 
-      177,  107,  103,  103,  110,  106,  116,  104,  115,  108,
+      108,  107,  103,  103,  110,  106,  116,  104,  115,  108,
       119,  109,  140,  115,  111,  110,  110,  112,  114,  117,
       116,  118,  117,  110,  122,  117,  120,  118,  123,  119,
       121,  120,  124,  121,  125,  130,  124,  121,  117,  117,
       127,  125,  123,  122,  126,  128,  118,  127,  122,  129,
       132,  120,  131,  121,  128,  130,  131,  126,  134,  133,
       135,  136,  129,  133,  138,  135,  137,  137,  132,  135,
-      139,  141,  142,  144,  139,  256,  134,  256,  146,  150,
+      139,  141,  142,  144,  139,  257,  134,  257,  146,  150,
       151,  136,  143,  139,  138,  143,  144,  145,  149,  139,
       146,  142,  148,  145,  147,  147,  143,  141,  150,  148,
 
       143,  151,  152,  153,  149,  153,  155,  154,  156,  157,
-      148,  155,  147,  226,  153,  147,  158,  159,  152,  154,
+      148,  155,  147,  227,  153,  147,  158,  159,  152,  154,
       156,  158,  161,  161,  179,  163,  153,  157,  163,  179,
-      165,  159,  165,  165,  226,  165,  168,  168,  170,  181,
+      165,  159,  165,  165,  227,  165,  168,  168,  170,  181,
       170,  170,  171,  170,  171,  171,  173,  171,  175,  173,
       175,  175,  180,  175,  171,  178,  178,  181,  180,  182,
       183,  184,  185,  186,  187,  189,  188,  180,  183,  190,
-      185,  188,  184,  212,  182,  183,  193,  191,  190,  187,
-      176,  193,  186,  191,  191,  189,  194,  194,  195,  197,
-      196,  212,  196,  197,  195,  196,  198,  198,  197,  199,
-
-      200,  201,  202,  197,  203,  204,  201,  202,  205,  197,
-      197,  199,  196,  206,  205,  207,  203,  206,  208,  200,
-      207,  209,  213,  210,  211,  204,  214,  213,  216,  217,
-      559,  214,  218,  216,  208,  209,  211,  205,  210,  211,
-      215,  215,  220,  220,  215,  219,  215,  221,  218,  217,
-      222,  219,  223,  221,  559,  224,  222,  227,  215,  221,
-      215,  224,  225,  227,  228,  229,  230,  231,  225,  228,
-      230,  229,  223,  231,  232,  234,  232,  225,  233,  235,
-      236,  232,  238,  237,  233,  235,  239,  241,  234,  237,
-      240,  243,  241,  242,  239,  238,  244,  245,  248,  250,
-
-      236,  251,  242,  240,  238,  246,  243,  251,  247,  252,
-      246,  246,  244,  247,  249,  254,  248,  245,  249,  253,
-      257,  250,  261,  258,  255,  253,  259,  252,  252,  255,
-      258,  260,  259,  263,  262,  254,  264,  260,  267,  257,
-      262,  261,  265,  265,  267,  263,  266,  266,  268,  269,
-      264,  269,  270,  271,  268,  272,  274,  273,  271,  275,
-      276,  277,  267,  278,  274,  276,  279,  272,  269,  278,
-      283,  285,  279,  280,  282,  270,  273,  281,  280,  275,
-      282,  284,  281,  286,  277,  283,  287,  288,  290,  285,
-      289,  290,  292,  292,  287,  284,  289,  286,  291,  293,
-
-      291,  294,  293,  295,  295,  296,  296,  297,  299,  298,
-      300,  299,  288,  301,  300,  303,  302,  304,  174,  294,
-      305,  303,  301,  297,  298,  302,  305,  306,  307,  306,
-      310,  304,  308,  311,  307,  310,  308,  309,  309,  311,
-      312,  313,  314,  315,  316,  319,  312,  317,  317,  318,
-      320,  321,  318,  308,  320,  322,  324,  316,  323,  323,
-      314,  313,  327,  319,  315,  312,  325,  326,  327,  325,
-      321,  329,  328,  322,  324,  328,  331,  332,  335,  326,
-      336,  335,  337,  329,  333,  331,  325,  330,  338,  333,
-      338,  338,  169,  336,  337,  332,  330,  334,  340,  330,
-
-      334,  340,  334,  339,  330,  330,  330,  330,  339,  339,
-      341,  341,  342,  343,  346,  334,  344,  345,  334,  348,
-      348,  347,  349,  346,  350,  350,  352,  349,  343,  342,
-      347,  344,  342,  353,  345,  345,  351,  351,  353,  354,
-      355,  352,  356,  357,  358,  359,  359,  361,  359,  362,
-      358,  354,  370,  370,  362,  363,  367,  359,  357,  355,
-      364,  363,  356,  365,  359,  364,  366,  361,  365,  366,
-      367,  366,  368,  369,  365,  368,  373,  371,  372,  372,
-      376,  373,  369,  371,  377,  380,  378,  377,  368,  379,
-      419,  368,  419,  368,  374,  374,  383,  374,  385,  380,
-
-      376,  378,  386,  374,  379,  377,  382,  374,  388,  382,
-      383,  386,  374,  385,  388,  374,  375,  375,  387,  375,
-      389,  388,  392,  387,  387,  382,  390,  393,  394,  391,
-      396,  392,  375,  397,  394,  375,  395,  375,  167,  375,
-      384,  389,  384,  384,  391,  390,  393,  397,  400,  401,
-      396,  398,  384,  384,  384,  384,  384,  398,  399,  384,
-      402,  398,  395,  399,  404,  403,  405,  407,  400,  401,
-      403,  408,  405,  406,  406,  402,  409,  411,  410,  404,
-      412,  399,  416,  408,  410,  415,  413,  407,  417,  418,
-      409,  413,  414,  414,  424,  414,  412,  420,  416,  420,
-
-      420,  425,  411,  418,  417,  415,  421,  422,  423,  423,
-      421,  422,  426,  424,  427,  428,  425,  420,  431,  434,
-      442,  166,  429,  434,  431,  432,  422,  435,  426,  428,
-      429,  429,  427,  433,  432,  436,  435,  438,  433,  437,
-      442,  436,  429,  438,  429,  430,  440,  439,  441,  440,
-      430,  439,  444,  441,  443,  443,  445,  445,  430,  430,
-      437,  447,  430,  430,  446,  444,  430,  448,  448,  446,
-      449,  450,  451,  452,  447,  450,  449,  453,  454,  455,
-      455,  456,  453,  454,  457,  458,  459,  451,  455,  460,
-      461,  466,  460,  456,  452,  461,  462,  463,  459,  468,
-
-      462,  464,  464,  458,  457,  465,  467,  467,  472,  463,
-      465,  473,  466,  470,  470,  474,  475,  476,  477,  473,
-      478,  468,  479,  477,  481,  475,  483,  482,  503,  472,
-      486,  485,  503,  484,  479,  487,  474,  485,  476,  486,
-      478,  487,  481,  488,  481,  482,  483,  484,  488,  489,
-      490,  491,  492,  493,  491,  494,  495,  496,  490,  498,
-      499,  490,  495,  489,  494,  498,  492,  497,  493,  501,
-      497,  500,  502,  504,  499,  505,  500,  496,  504,  506,
-      507,  508,  509,  498,  506,  512,  528,  513,  514,  528,
-      505,  501,  516,  502,  515,  509,  507,  518,  515,  517,
-
-      508,  510,  510,  514,  517,  512,  519,  510,  513,  510,
-      519,  516,  164,  518,  520,  510,  521,  510,  523,  520,
-      510,  510,  525,  520,  522,  526,  524,  510,  525,  522,
-      527,  521,  529,  525,  523,  524,  530,  523,  531,  531,
-      526,  532,  533,  533,  534,  535,  527,  536,  537,  537,
-      538,  539,  541,  540,  162,  529,  530,  535,  540,  534,
-      542,  541,  536,  543,  544,  546,  532,  547,  548,  538,
-      544,  547,  548,  539,  546,  549,  550,  551,  543,  542,
-      552,  549,  553,  554,  555,  556,  560,  557,  550,  556,
-      160,  558,  551,  558,  560,  562,  553,  563,  554,  552,
-
-      557,  562,  555,  561,  561,  564,  565,  566,  567,  563,
-      566,  564,  568,  570,  569,  571,  570,  572,  565,  569,
-      573,  620,  567,  574,  571,  573,  573,  568,  575,  575,
-      620,  571,  582,  572,  571,  577,  574,  576,  576,  578,
-      578,  577,  579,  579,  580,  583,  581,  586,  587,  585,
-      580,  581,  581,  582,  585,  584,  587,  583,  584,  588,
-      589,  590,  588,  591,  592,  589,  586,  593,  592,  594,
-      595,  597,  596,  593,  595,  601,  597,  598,  599,  599,
-      600,  602,  591,  603,  590,  604,  602,  605,  606,  594,
-      596,  598,  607,  613,  606,  600,  601,  607,  608,  610,
-
-      612,  604,  603,  609,  611,  611,  609,  605,  614,  613,
-      616,  609,  608,  614,  609,  609,  615,  610,  612,  617,
-      619,  615,  621,  622,  616,  621,  619,  622,  623,  624,
-      625,  626,  624,  623,  617,  625,  627,  628,  629,  631,
-      630,  632,  632,  633,  628,  630,  634,  626,  635,  622,
-      636,  629,  633,  637,  627,  638,  644,  639,  640,  631,
-      645,  644,  637,  639,  640,  634,  636,  638,  641,  635,
-      646,  641,  642,  642,  643,  642,  647,  643,  645,  649,
-      648,  650,  654,  651,  646,  648,  652,  650,  651,  661,
-      647,  653,  652,  657,  653,  655,  656,  658,  649,  659,
-
-      655,  656,  656,  660,  659,  662,  657,  654,  661,  660,
-      658,  663,  664,  674,  662,  666,  663,  667,  659,  659,
-      665,  665,  666,  668,  667,  669,  668,  670,  671,  672,
-      676,  669,  664,  671,  672,  672,  673,  673,  674,  670,
-      675,  668,  675,  671,  677,  678,  677,  679,  680,  676,
-      681,  682,  683,  684,  688,  685,   85,  684,  683,  686,
-      687,  689,  691,  678,  685,  679,  680,  690,  693,  681,
-      690,  682,  688,  694,  686,  687,  692,  691,  695,  690,
-      689,  696,  692,  697,  698,  699,  701,  694,  693,  699,
-      695,  700,  702,  703,  704,  708,  705,  707,  707,  708,
-
-      696,  705,  701,  698,  697,  706,  709,  710,  712,  700,
-      702,  703,  703,  704,  711,  714,  713,  715,  720,  706,
-      709,  713,  712,  717,  716,  711,  710,  718,  719,  721,
-      717,  714,  718,  722,  721,  719,  715,  716,  722,  723,
-      724,  725,  720,  727,  726,  729,  737,  724,  728,  730,
-      725,  729,  727,  731,  730,  732,  731,  723,  726,  732,
-      728,  733,  734,  735,  746,  736,  749,  737,  738,  738,
-      744,  734,  739,  739,  742,  733,  740,  740,  735,  736,
-      741,  739,  745,  742,  746,  741,  747,  748,  745,  744,
-      747,  749,  750,  752,  751,  753,  754,  755,  756,  748,
-
-      751,  752,  753,  762,  759,  766,  765,  768,  769,   80,
-      750,  766,  771,  768,  754,  765,  771,  769,  756,  759,
-      762,  770,  755,  757,  776,  757,  772,  772,  757,  773,
-      773,  775,  757,  774,  777,  757,  812,  770,  776,  782,
-      778,  780,  757,  757,  774,  757,  778,  781,  783,  775,
-      812,  785,  781,  787,  777,  779,  779,  779,  787,  779,
-      782,  780,  779,  788,  784,  786,  783,  779,  784,  786,
-      791,  789,  790,  779,  779,  785,  789,  792,  793,  794,
-      792,  796,  788,  793,  793,  786,  794,  790,  795,  795,
-      798,  798,  797,  799,   75,  791,  796,  797,  799,  800,
-
-      801,  804,  800,  802,  802,  801,  803,  805,  803,  807,
-      806,  808,  809,  804,  806,  810,  810,  811,  813,  813,
-      809,  814,  815,  816,  828,  817,  805,  828,  818,  807,
-      808,  817,  811,  818,  815,  819,  819,  820,  823,  814,
-      824,  822,  820,  820,  823,  816,  822,  825,   74,  826,
-      827,  829,  830,  825,  826,  834,  827,  829,  833,  824,
-      830,  831,  831,  832,  832,  835,  833,  836,  837,  838,
-      835,  836,  839,  834,  840,  837,  841,  841,  843,  845,
-      842,  844,  844,  846,  850,  845,  843,  838,  839,  842,
-      848,  849,  851,  840,  852,  853,  854,  851,  853,  848,
-
-      849,  854,  846,  852,  855,  856,  857,  858,  850,  860,
-      862,  859,  861,  861,  863,  857,  859,  859,  855,  864,
-      858,  865,  866,  860,  867,  862,  871,  867,  864,  869,
-      856,  869,  873,  863,  872,  867,  870,  870,  874,  872,
-      866,  875,  876,  877,  879,  865,  878,  871,  880,   68,
-      881,  882,  880,  873,  883,  878,  884,  885,  874,  886,
-      883,  875,  887,  877,  876,  884,  888,  879,  881,  885,
-      882,  889,  891,  892,  890,  886,  894,  889,  892,  895,
-      888,  887,  890,  893,  893,  896,  891,  897,  898,  899,
-      900,  901,  903,  902,  896,  894,  898,  904,  903,  895,
-
-      905,  907,  906,  904,  908,  909,  912,  897,  906,  899,
-      901,  909,  900,  902,  905,  907,  910,  911,  913,  915,
-       63,  911,  910,  914,  908,  912,  916,  916,  914,  917,
-      913,  918,  920,  919,  921,  917,  919,  918,  913,  922,
-      915,  923,  924,  924,  925,  922,  926,  921,  928,  927,
-      920,  926,  927,  928,  928,  929,  930,  931,  931,  932,
-      930,  923,  925,  933,  934,  927,  935,  927,  937,  934,
-      929,  940,  938,  941,  942,  944,  944,  948,  945,  946,
-      975,  932,  945,  933,  940,  935,  938,  947,  947,  951,
-       58,  950,  937,  941,  946,  942,  943,  953,  975,  943,
-
-      949,  943,  948,  951,  949,  943,  950,  943,  952,  954,
-      955,  953,  943,  952,  954,  954,  956,  943,  957,  955,
-      958,  959,  957,  961,  962,  960,  959,  963,  961,  964,
-      956,  965,  973,  966,  957,  958,  959,  960,  962,  966,
-      965,  967,  971,  964,  968,  969,  967,  971,  963,  972,
-      968,  969,  970,  970,  973,  972,  974,  977,  978,  979,
-      980,  981,  981,  978,  984,  982,  983,  985,  986,  977,
-      982,  992,  980,  979,  983,  974,  976,  976,  987,  989,
-      984,  985,  976,  988,  976,  989,  990,  986,  991,  992,
-      976,  990,  993,  994,  995,  976,  976,  987,  998,  988,
-
-      991,  997,  976,  996,  996,  997, 1001, 1000,  993, 1001,
-     1002,  994,  995, 1000, 1003, 1004, 1005, 1007,  998, 1003,
-     1006, 1009, 1005, 1010, 1011, 1006, 1013, 1012, 1004, 1002,
-     1009, 1014, 1010, 1012, 1015, 1013, 1007, 1016, 1017, 1015,
-     1011, 1018, 1019, 1022, 1020, 1023, 1021, 1026, 1029, 1022,
-     1014, 1028, 1017, 1020, 1019, 1021, 1031, 1016, 1024, 1032,
-     1033, 1018, 1023, 1026, 1024, 1028, 1030, 1034, 1029, 1035,
-     1040, 1030, 1036, 1032, 1035, 1031, 1039, 1036, 1033, 1040,
-     1042, 1039, 1034, 1041, 1041, 1043, 1042, 1044, 1045, 1046,
-     1048, 1043, 1049, 1053, 1054, 1055, 1044, 1049, 1049, 1056,
-
-     1051, 1051, 1046, 1045, 1051, 1052, 1048, 1053, 1052, 1057,
-     1058, 1055, 1059, 1060, 1054, 1061, 1062, 1056, 1059, 1063,
-     1064, 1061, 1057, 1068, 1063, 1058, 1066, 1066,   57, 1067,
-     1069, 1062, 1067, 1060, 1064, 1069, 1070, 1071, 1072, 1075,
-     1073, 1070, 1078, 1074, 1068, 1073, 1077, 1072, 1074, 1079,
-     1080, 1075, 1077, 1071, 1082, 1079, 1080, 1083, 1078, 1081,
-     1081, 1084, 1086, 1082, 1084, 1085, 1085, 1087, 1088, 1089,
-     1090, 1091, 1089, 1092, 1126, 1083, 1093, 1091, 1126, 1092,
-     1086, 1096, 1093, 1090, 1094, 1095, 1087, 1096, 1088, 1094,
-     1095, 1097, 1098, 1101, 1100, 1102, 1097, 1103, 1098, 1100,
-
-     1104, 1105, 1105, 1103, 1106, 1104, 1108, 1107, 1109, 1110,
-     1112, 1101, 1110, 1106, 1111, 1102, 1107, 1111, 1113, 1114,
-     1115, 1112, 1116, 1113, 1108, 1117, 1122, 1109, 1118, 1119,
-     1120, 1117, 1115, 1123, 1118, 1120, 1124, 1114, 1121, 1121,
-     1125, 1116, 1127, 1128, 1119, 1122, 1129, 1123, 1124, 1130,
-     1132, 1134, 1128, 1133, 1133, 1137, 1135, 1136, 1125, 1134,
-     1127, 1135, 1136, 1139, 1140, 1129, 1141, 1142, 1145, 1132,
-     1146, 1143, 1142,   52, 1130, 1137, 1146, 1139, 1141, 1140,
-     1143, 1144, 1144, 1147, 1148, 1149, 1156, 1151, 1145, 1147,
-     1149, 1150, 1151, 1150, 1152, 1153, 1154, 1155, 1158, 1157,
-
-     1148, 1154, 1159, 1161, 1161, 1156, 1157, 1163, 1152, 1153,
-     1162, 1164, 1155, 1158, 1165, 1166, 1174, 1167,   47, 1169,
-     1165, 1159, 1167, 1169, 1162, 1163, 1164, 1170, 1170, 1171,
-     1174, 1167, 1173, 1167, 1171, 1166, 1167, 1172, 1172, 1173,
-     1175, 1176, 1178, 1175, 1177, 1179, 1180, 1181, 1182, 1183,
-     1179, 1178, 1185, 1182, 1190, 1184, 1187, 1187,   18, 1181,
-     1176, 1193, 1177, 1183, 1188, 1180, 1184, 1189, 1191, 1188,
-     1193, 1185, 1189, 1191, 1190, 1192, 1194, 1195, 1196, 1192,
-     1198, 1197, 1199, 1201, 1197, 1202, 1200, 1203, 1204, 1199,
-     1207, 1194, 1195, 1197, 1204, 1198, 1205, 1196, 1200, 1208,
-
-     1209, 1206, 1201, 1210, 1211, 1203, 1202, 1206, 1212, 1209,
-     1207, 1205, 1213, 1214, 1215, 1216, 1217, 1220, 1210, 1208,
-     1212, 1216, 1219, 1211, 1223, 1221, 1222, 1224, 1219, 1215,
-     1225, 1213, 1220, 1226, 1222, 1225, 1217, 1228, 1214, 1221,
-     1229, 1227, 1230, 1224, 1223, 1226, 1227, 1227, 1231, 1231,
-     1233, 1234, 1238, 1235, 1229, 1230, 1228, 1232, 1232, 1235,
-     1234, 1238, 1232, 1233, 1237, 1232, 1232, 1236, 1236, 1237,
-     1232, 1239, 1243, 1240, 1241, 1246, 1232, 1239, 1240, 1241,
-     1232, 1242, 1242, 1244, 1244, 1245, 1247, 1249, 1245, 1250,
-     1245, 1248, 1252, 1243, 1251, 1246, 1249, 1248, 1253, 1251,
-
-     1256, 1254, 1255, 1259, 1247, 1256, 1252, 1254, 1255, 1250,
-     1257, 1258, 1259, 1260, 1257, 1261, 1253, 1259, 1260, 1259,
-     1264, 1259, 1267, 1259, 1258, 1262, 1262, 1263, 1263, 1261,
-     1263, 1264, 1266, 1268, 1269, 1270, 1266, 1267, 1271, 1272,
-     1270, 1270, 1274, 1269, 1273, 1275, 1276, 1271, 1277, 1273,
-     1278, 1268, 1279, 1289, 1275, 1282, 1274, 1281, 1279, 1280,
-     1280, 1272, 1283, 1282, 1278, 1276, 1284, 1277, 1285, 1281,
-     1286, 1284, 1288, 1287, 1291, 1291, 1283, 1292, 1289, 1286,
-     1287, 1290, 1285, 1293, 1293, 1294, 1290, 1294, 1296, 1297,
-     1288, 1296, 1292, 1298, 1297, 1299, 1300, 1300, 1301, 1302,
-
-     1302, 1303, 1303, 1304, 1299, 1305, 1306, 1307, 1304, 1308,
-     1308, 1309, 1298, 1310, 1311, 1312, 1313, 1311, 1301, 1314,
-     1315, 1316, 1313, 1316, 1314, 1317, 1305, 1306, 1307, 1315,
-     1310, 1309, 1320, 1319, 1321, 1312, 1319, 1322, 1324, 1321,
-     1323, 1328, 1328, 1317, 1325, 1323, 1324, 1320, 1330, 1325,
-     1326, 1322, 1327, 1326, 1329, 1331, 1332, 1327, 1333, 1329,
-     1337, 1331, 1335, 1332, 1336, 1337, 1330, 1338, 1335, 1339,
-     1336, 1333, 1338, 1340, 1341, 1339, 1342, 1343, 1343, 1344,
-     1346, 1348, 1340, 1347, 1350, 1346, 1351, 1342, 1349, 1352,
-     1353, 1348, 1354, 1341, 1356, 1352, 1353, 1357, 1354, 1344,
-
-     1356, 1347, 1358, 1349, 1350, 1359, 1360, 1361, 1362, 1351,
-     1364, 1357, 1363, 1363, 1365, 1366, 1372, 1357, 1360, 1367,
-     1369, 1361, 1358, 1374, 1367, 1359, 1362, 1368, 1368, 1370,
-     1364, 1373, 1376, 1366, 1370, 1372, 1373, 1373, 1375, 1365,
-     1376, 1374, 1377, 1369, 1378, 1379, 1380, 1375, 1381, 1385,
-     1382, 1380, 1382, 1383, 1380, 1385, 1377, 1381, 1386, 1378,
-     1379, 1387, 1386, 1379, 1388, 1389, 1390, 1383, 1391, 1388,
-     1388, 1392, 1387, 1393, 1395, 1394, 1392, 1396, 1393, 1397,
-     1400, 1399, 1396, 1401, 1389, 1403, 1391, 1402, 1402, 1403,
-     1404, 1405, 1390, 1394, 1395, 1399, 1406, 1407, 1400, 1397,
-
-     1408, 1401, 1406, 1409, 1410, 1411, 1412, 1413, 1404, 1407,
-     1405, 1417, 1414, 1418, 1416, 1419, 1408, 1414, 1410, 1416,
-     1411, 1412, 1409, 1415, 1419, 1421, 1413, 1420, 1420, 1417,
-     1415, 1423, 1422, 1425, 1418, 1424, 1424, 1426, 1427, 1425,
-     1421, 1422, 1430, 1426, 1428, 1428, 1429, 1429, 1430, 1431,
-     1432, 1423, 1427, 1433, 1434, 1435, 1436, 1443, 1433,   17,
-     1434, 1435, 1436, 1437, 1437, 1431, 1438, 1438, 1440, 1440,
-     1441, 1432, 1442, 1444, 1441, 1443, 1445, 1446, 1449, 1447,
-     1450, 1442, 1448, 1448, 1451, 1444, 1447, 1452, 1450, 1451,
-     1445, 1453, 1446, 1456, 1454, 1457, 1457, 1455, 1449, 1454,
-
-     1454, 1452, 1455, 1455, 1458, 1459, 1460, 1461, 1462, 1463,
-     1453, 1465, 1461, 1456, 1464, 1460, 1466, 1465, 1467, 1468,
-     1469, 1466, 1470, 1458, 1459, 1471, 1469, 1462, 1472, 1463,
-     1473, 1471, 1464, 1474, 1472, 1475, 1476, 1477, 1467, 1478,
-     1479, 1470, 1480, 1481, 1481, 1468, 1483, 1482, 1484, 1473,
-     1482, 1485, 1474, 1478, 1475, 1476, 1477, 1480, 1486, 1486,
-     1489, 1479, 1490, 1485, 1489, 1483, 1488, 1484, 1487, 1487,
-     1491, 1488, 1492, 1495, 1493, 1490, 1493, 1496, 1498, 1491,
-     1493, 1497, 1496, 1499, 1501, 1492, 1500, 1500, 1502, 1501,
-     1503, 1495, 1509, 1493, 1502, 1504, 1497, 1505, 1498, 1499,
-
-     1507, 1506, 1510, 1505, 1507, 1503, 1506, 1508, 1504, 1511,
-     1512, 1508, 1509, 1513, 1514, 1514, 1516, 1518, 1511, 1513,
-     1510, 1519, 1520, 1520, 1522, 1521, 1519, 1524, 1524, 1526,
-     1512, 1521, 1526, 1528, 1516, 1527, 1527, 1529, 1518, 1530,
-     1532, 1533, 1535, 1532, 1522, 1534, 1536, 1537, 1537, 1528,
-     1539, 1535, 1538, 1529, 1540, 1530, 1541, 1545, 1542, 1543,
-     1543, 1541, 1533, 1546, 1547, 1534, 1536, 1538, 1544, 1550,
-     1548, 1539, 1542, 1540, 1551, 1545, 1552, 1544, 1546, 1549,
-     1549, 1552, 1553, 1550, 1554, 1554, 1556, 1555, 1558, 1547,
-     1548, 1555, 1551, 1557, 1557, 1559, 1560, 1553, 1561, 1562,
-
-     1563, 1570, 1561, 1565, 1565, 1563, 1556, 1560, 1566, 1567,
-     1558, 1566, 1568, 1569, 1559, 1572, 1571, 1568, 1562, 1570,
-     1574, 1576, 1567, 1573, 1575, 1575, 1576, 1577, 1578, 1569,
-     1571, 1579, 1579, 1580, 1572, 1572, 1581, 1573, 1582, 1586,
-     1595, 1581, 1580, 1591, 1583, 1574, 1583, 1577, 1578, 1584,
-     1585, 1587, 1589, 1647, 1584, 1647, 1585, 1587, 1582, 1586,
-     1590, 1590, 1591, 1592, 1595, 1594, 1589, 1596, 1596, 1592,
-     1594, 1597, 1597, 1598, 1599, 1600, 1601, 1602, 1602, 1601,
-     1603, 1604, 1605, 1606, 1613, 1607, 1606, 1598, 1745, 1606,
-     1600, 1607, 1599, 1604, 1608, 1611, 1745, 1609, 1603, 1608,
-
-     1609, 1606, 1605, 1612, 1611, 1615, 1615, 1614, 1612, 1613,
-     1614, 1616, 1617, 1625, 1618, 1623, 1609, 1616, 1617, 1618,
-     1619, 1619, 1620, 1620, 1621, 1624, 1622, 1626, 1623, 1628,
-     1621, 1622, 1625, 1627, 1629, 1628, 1627, 1631, 1630, 1632,
-     1629, 1633, 1631, 1624, 1630, 1632, 1634, 1626, 1635, 1635,
-     1636, 1634, 1637, 1638, 1640, 1636, 1639, 1641, 1642, 1644,
-     1645, 1646, 1643, 1648, 1633, 1646, 1651, 1655, 1652,    0,
-     1637, 1641, 1642, 1638, 1640, 1639, 1643, 1644, 1651, 1649,
-     1652, 1653, 1648, 1654, 1656, 1645, 1649, 1655, 1657, 1654,
-     1658, 1659, 1661, 1661, 1653, 1662, 1663, 1664, 1665, 1665,
-
-     1656, 1663, 1666, 1668, 1658, 1667, 1669, 1670, 1657, 1664,
-     1671, 1672, 1659, 1674, 1673, 1662, 1670, 1666, 1672, 1667,
-     1676, 1678, 1682, 1673, 1669, 1671, 1673, 1668, 1679, 1674,
-     1683, 1679, 1680, 1680, 1682, 1676, 1681, 1681, 1684, 1686,
-     1676, 1684, 1685, 1685, 1687, 1688, 1678, 1691, 1683, 1692,
-     1688, 1689, 1686, 1690, 1689, 1693, 1694,    0, 1690, 1695,
-     1696, 1697, 1700, 1687, 1693, 1692, 1691, 1697, 1695, 1696,
-     1699, 1695, 1698, 1698, 1701, 1694, 1702, 1699, 1703, 1704,
-     1705, 1707, 1700, 1706, 1710, 1705, 1705, 1701, 1706, 1711,
-     1712, 1712, 1703, 1707, 1702, 1704, 1713, 1714, 1715, 1715,
-
-     1716, 1716, 1717, 1715, 1719, 1718, 1714, 1711, 1720, 1710,
-     1718, 1717, 1713, 1721, 1717, 1716, 1724, 1725, 1722, 1726,
-     1727, 1728, 1719, 1722, 1722, 1727, 1730, 1729, 1732, 1720,
-     1724, 1721, 1725, 1729, 1732, 1728, 1731, 1731, 1733, 1734,
-     1735, 1726, 1736, 1733, 1730, 1738, 1735, 1739, 1736, 1740,
-     1741, 1742, 1743, 1734, 1742, 1740, 1747, 1748, 1743, 1749,
-     1742, 1739, 1750, 1741, 1751, 1738, 1753, 1756, 1752, 1751,
-     1750, 1754, 1755, 1757,    0, 1747, 1748, 1752, 1749, 1753,
-     1754, 1756, 1758, 1758, 1759, 1755, 1760, 1757, 1761, 1763,
-     1759, 1765, 1760, 1762, 1762, 1764, 1766, 1766, 1767, 1768,
-
-     1769, 1761, 1770, 1771, 1758, 1768, 1773, 1773, 1774, 1763,
-     1765, 1767, 1775, 1764, 1776, 1777, 1775, 1780, 1770, 1776,
-     1778, 1771, 1769, 1781, 1779, 1778, 1780, 1783, 1774, 1779,
-     1784, 1785, 1786, 1787, 1785, 1777, 1788, 1788, 1783, 1784,
-     1789, 1790, 1791, 1793, 1786, 1794, 1781, 1799, 1787, 1792,
-     1792, 1795, 1794, 1790, 1796, 1798, 1800, 1793, 1801, 1789,
-     1802, 1791, 1800, 1795, 1809, 1803, 1796, 1799, 1804, 1804,
-     1801, 1803, 1805, 1809, 1798, 1805, 1806, 1806, 1802, 1808,
-     1810, 1811, 1811, 1812, 1808, 1813, 1810, 1813, 1814, 1815,
-     1816, 1814, 1817, 1818, 1819, 1812, 1820, 1821, 1823, 1819,
-
-     1824, 1820, 1822, 1826, 1829, 1824, 1821, 1825,    0, 1815,
-     1817, 1818, 1816, 1823, 1822, 1827, 1825, 1828, 1832, 1829,
-     1827, 1834, 1828, 1826, 1830, 1830, 1831, 1827, 1835, 1825,
-     1836, 1837, 1831, 1838, 1839, 1838, 1840, 1840, 1843, 1832,
-     1834, 1841, 1841, 1842, 1842, 1846, 1836, 1835, 1839, 1847,
-     1839, 1837, 1844, 1844, 1845, 1845, 1848, 1850, 1843, 1849,
-     1849, 1850, 1851, 1854, 1852, 1855, 1846, 1852, 1851, 1854,
-     1847, 1857, 1856, 1858, 1860, 1860, 1857, 1848, 1856, 1859,
-     1861, 1862, 1859, 1855, 1863, 1863, 1862, 1864, 1865, 1866,
-     1867, 1868, 1868, 1870, 1866, 1867, 1869, 1879, 1858, 1870,
-
-     1861, 1869, 1864, 1871, 1872, 1873, 1874, 1875, 1876, 1865,
-     1880, 1879,    0, 1875, 1878, 1871, 1871, 1871, 1883, 1878,
-     1878, 1882, 1871, 1873, 1872, 1880, 1874, 1881, 1876, 1881,
-     1884, 1885, 1882, 1883, 1886, 1887, 1884, 1888, 1888, 1889,
-     1885, 1890, 1890, 1891, 1892, 1893, 1893, 1894, 1894, 1895,
-     1898, 1898, 1899, 1900, 1886, 1902, 1887, 1903, 1905, 1906,
-     1906, 1904, 1900, 1891, 1902, 1889, 1892, 1904, 1907, 1895,
-     1908, 1910, 1909, 1911, 1905, 1912, 1912, 1899, 1903, 1909,
-     1910, 1913, 1914, 1917, 1916, 1908, 1918, 1920, 1917, 1907,
-     1916, 1919, 1918, 1924, 1920, 1921, 1929, 1925, 1914, 1911,
-
-     1922, 1921, 1922, 1925, 1926, 1926, 1928, 1913, 1927, 1930,
-     1932, 1919, 1924, 1927, 1931, 1928, 1929, 1931, 1933, 1934,
-     1935, 1933, 1932, 1936, 1936, 1937, 1938, 1939, 1930, 1940,
-     1941, 1937, 1938, 1943, 1941, 1944, 1945, 1934, 1946, 1946,
-     1947, 1945, 1948, 1949, 1940, 1952, 1935, 1939, 1951, 1952,
-     1941, 1953, 1953, 1943, 1954, 1957, 1955, 1944, 1949, 1957,
-     1954, 1948, 1956, 1956, 1947, 1955, 1958, 1951, 1959, 1959,
-     1960, 1961, 1968, 1962, 1963, 1964, 1965, 1958, 1966, 1963,
-     1967, 1971, 1958, 1970, 1969, 1961, 1967, 1978, 1970, 1974,
-     1968, 1960, 1962, 1974, 1971, 1964, 1965, 1976, 1966, 1969,
-
-     1972, 1972, 1973, 1973, 1977, 1986, 1976, 1978, 1979, 1979,
-     1981, 1981, 1982, 1983,    0, 1977, 1985, 1982, 1982, 1983,
-     1977, 1987, 1985, 1988, 1989, 1991, 1987, 1993, 1992, 1995,
-     1989, 1986, 1992, 1994, 1994, 1988, 1996, 1991, 1997, 1993,
-     1998, 2001, 1996, 1999, 1999, 2000, 1998, 2002, 2006, 2074,
-     2003, 2005, 2002, 2007, 1995, 2013, 2009, 2074, 2007, 2009,
-     1997, 2001, 2003, 2005, 2000, 2010, 2010, 2006, 2011, 2011,
-     2012, 2012, 2014, 2015, 2017, 2013, 2016, 2018, 2014, 2015,
-     2017, 2016, 2020, 2023, 2026, 2022, 2018, 2020, 2022, 2024,
-     2024, 2027, 2028, 2029, 2029, 2023, 2026, 2028, 2030, 2031,
-
-     2032, 2034, 2034, 2027, 2031, 2032, 2033, 2030, 2035, 2033,
-     2036, 2037, 2038, 2039, 2042, 2040, 2041, 2039, 2043, 2036,
-     2040, 2044, 2041, 2045, 2047, 2047, 2048, 2043, 2035, 2037,
-     2050, 2038, 2042, 2049, 2051, 2051, 2047, 2045, 2052, 2044,
-     2053, 2054, 2049, 2055, 2048, 2056, 2061, 2052, 2055, 2061,
-     2050, 2062, 2053, 2059, 2059, 2063, 2064, 2068, 2056, 2066,
-     2069, 2067, 2054, 2068, 2070, 2070, 2071, 2062, 2071, 2072,
-     2079, 2063, 2064, 2088, 2066, 2067, 2084, 2069, 2073, 2073,
-     2076, 2076, 2077, 2077, 2080, 2081, 2082, 2072, 2083, 2085,
-     2080, 2081, 2087, 2079, 2088, 2083, 2086, 2086, 2084, 2089,
-
-     2082, 2087, 2090, 2091, 2092, 2093, 2094, 2097, 2099, 2085,
-     2098, 2089, 2101, 2095, 2090, 2095, 2092, 2102, 2091, 2095,
-     2099, 2094, 2100, 2100, 2104, 2103, 2105, 2097, 2103, 2104,
-     2101, 2093, 2095, 2098, 2107, 2109, 2108, 2102, 2108, 2107,
-     2110, 2111, 2113, 2115, 2119, 2110, 2105, 2116, 2111, 2120,
-     2117, 2113, 2118, 2109, 2118, 2120, 2116, 2122, 2123, 2122,
-     2125, 2115, 2117, 2119, 2124, 2124, 2126, 2127, 2128, 2127,
-     2129, 2126, 2123, 2128, 2130, 2129, 2131, 2132, 2133, 2136,
-     2134, 2140, 2135, 2137, 2133, 2134, 2125, 2141, 2137, 2137,
-     2138, 2136, 2130, 2145, 2131, 2135, 2144, 2132, 2138, 2146,
-
-     2140, 2141, 2142, 2142, 2143, 2143, 2147, 2144, 2145, 2148,
-     2150, 2149, 2147, 2149, 2148, 2151, 2152, 2152, 2153, 2146,
-     2154, 2154, 2157, 2151, 2155, 2155, 2156, 2157, 2150, 2158,
-     2153, 2151, 2160, 2161, 2163, 2156, 2160, 2162, 2164, 2162,
-     2165, 2166, 2161, 2164, 2164, 2161, 2167, 2158, 2169, 2170,
-     2166, 2171, 2165, 2173, 2170, 2163, 2171, 2174, 2167, 2175,
-     2169, 2176, 2176, 2177, 2178, 2179, 2173, 2181, 2175, 2180,
-     2182, 2183,    0, 2184, 2188, 2186, 2187, 2174, 2184, 2197,
-     2191, 2177, 2178, 2179, 2182, 2180, 2183, 2186, 2187, 2191,
-     2189, 2190, 2181, 2194, 2188, 2189, 2190, 2196, 2198, 2194,
-
-     2199, 2200, 2197, 2196, 2205, 2201, 2202, 2202, 2203, 2204,
-     2204, 2206, 2194, 2198, 2201, 2207, 2208, 2203, 2199, 2207,
-     2209, 2208, 2205, 2211, 2213, 2212, 2200, 2219,    0, 2214,
-     2206, 2212, 2215, 2209, 2214, 2214, 2217, 2216, 2215, 2217,
-     2218, 2228, 2211, 2216, 2222, 2222, 2213, 2219, 2218, 2223,
-     2223, 2224, 2225, 2225, 2226, 2226, 2227, 2229, 2241, 2228,
-     2224, 2230, 2233, 2229, 2223, 2237, 2230, 2233, 2227, 2231,
-     2231, 2232, 2232, 2234, 2236, 2223, 2238, 2239, 2236, 2234,
-     2238, 2242, 2243, 2241, 2244, 2237, 2242, 2245, 2246, 2248,
-     2249, 2247, 2245, 2250, 2252, 2249, 2253, 2239, 2252, 2244,
-
-     2251, 2251, 2255, 2254, 2256, 2243, 2246, 2247, 2254, 2248,
-     2258, 2253, 2257, 2259, 2260, 2250, 2261, 2264, 2259, 2262,
-     2262, 2265, 2256, 2266, 2257, 2264, 2267, 2260, 2255, 2258,
-     2268, 2269, 2270, 2271, 2261, 2272, 2273, 2274, 2305, 2278,
-     2265, 2276, 2266, 2274, 2279, 2267, 2281, 2272, 2281, 2282,
-     2305, 2270, 2278, 2268, 2271, 2269, 2276, 2273, 2279, 2280,
-     2283, 2283, 2284, 2285, 2286, 2280, 2285, 2284, 2287, 2282,
-     2288, 2289, 2289, 2290, 2290, 2293, 2291, 2286, 2291, 2292,
-     2292, 2294, 2287, 2288, 2295, 2295, 2296, 2296, 2297, 2303,
-     2293, 2298, 2298, 2300, 2294, 2299, 2299, 2297, 2300, 2302,
-
-     2297, 2304, 2306, 2306, 2302, 2307, 2307, 2308, 2312, 2303,
-     2309, 2309, 2310, 2311, 2311, 2313, 2314, 2314, 2315, 2315,
-     2313, 2304, 2316, 2312, 2317, 2318, 2308, 2319, 2320, 2322,
-     2310, 2323, 2323, 2317, 2322, 2324, 2316, 2325, 2325, 2326,
-     2327, 2319, 2318, 2328, 2332, 2327, 2333, 2320, 2329, 2328,
-     2336, 2329, 2330, 2330, 2324, 2331, 2331, 2326, 2334, 2337,
-     2334, 2333, 2340, 2332, 2341, 2336, 2338, 2338, 2330, 2342,
-     2343, 2344, 2345, 2345, 2346, 2344, 2347, 2352, 2337, 2341,
-     2348, 2347, 2340, 2349, 2353, 2343, 2351, 2351, 2354, 2355,
-     2356, 2353, 2342, 2346, 2357, 2348, 2358, 2352, 2349, 2359,
-
-     2359, 2360, 2354, 2361, 2365, 2361, 2364, 2355, 2356, 2357,
-     2360, 2362, 2364, 2366, 2362, 2367, 2365, 2368, 2366, 2369,
-     2367, 2371, 2358, 2370, 2372, 2374, 2371, 2380, 2375, 2362,
-     2374, 2362, 2369, 2375, 2376, 2378, 2377, 2379, 2381, 2376,
-     2382, 2378, 2368, 2379, 2370, 2385, 2382, 2383, 2380, 2384,
-     2372, 2377, 2383, 2381, 2384, 2386, 2387, 2388, 2389, 2387,
-     2390, 2392, 2391, 2397, 2399, 2400, 2388, 2389, 2386, 2390,
-     2385, 2391, 2393, 2394, 2400, 2392, 2395,    0, 2393, 2394,
-     2395, 2401, 2401, 2397, 2399, 2402, 2403, 2403, 2404, 2405,
-     2405, 2402, 2407, 2406, 2409, 2403, 2412, 2404, 2406, 2410,
-
-     2411, 2411, 2416, 2421, 2413, 2415, 2417, 2418, 2421, 2422,
-     2409, 2412, 2407, 2413, 2407, 2410, 2423, 2415, 2416, 2418,
-     2420, 2417,    0, 2420, 2424, 2424, 2425, 2425, 2423, 2422,
-     2427, 2427, 2428, 2429, 2430, 2428, 2431, 2432, 2429, 2434,
-     2430, 2437, 2431, 2433, 2433, 2436, 2432, 2435, 2435, 2438,
-     2439, 2439, 2440, 2434, 2442, 2437, 2441, 2436, 2440, 2442,
-     2444, 2450, 2445, 2448, 2444, 2445, 2446, 2446, 2438, 2447,
-     2441, 2449, 2448, 2451, 2447, 2452, 2452, 2451, 2453, 2455,
-     2449, 2450, 2456, 2457, 2455, 2458, 2459, 2461, 2460, 2462,
-     2463, 2453, 2460, 2464, 2462, 2466, 2463, 2465, 2465, 2464,
-
-     2459, 2467, 2456, 2457, 2468, 2458, 2469, 2461, 2470, 2471,
-     2471, 2469, 2473, 2466, 2474, 2478, 2475, 2478, 2477, 2476,
-     2467, 2475, 2480, 2468, 2473, 2476, 2477, 2482, 2486, 2470,
-     2474, 2480, 2483, 2483, 2484, 2485, 2492, 2484, 2485, 2487,
-     2487, 2482, 2490, 2491, 2493, 2493, 2490, 2494, 2492, 2491,
-     2497, 2497, 2499, 2501, 2486, 2502, 2494, 2505, 2506, 2507,
-     2508, 2509, 2505, 2510, 2510, 2508, 2509, 2501, 2512, 2512,
-     2499, 2502, 2514, 2515, 2516, 2516, 2517, 2518, 2514, 2521,
-     2507, 2519, 2522, 2523, 2506, 2522, 2519, 2527, 2524, 2525,
-     2525, 2528, 2517, 2515, 2530, 2523, 2527, 2528, 2521, 2518,
-
-     2524, 2529, 2531, 2533, 2533, 2534, 2535, 2529, 2534, 2536,
-     2538, 2538, 2530, 2539, 2539, 2540, 2541, 2531, 2543, 2542,
-     2540, 2544, 2545, 2546, 2545, 2535, 2544, 2536, 2542, 2547,
-     2548, 2543, 2550, 2549, 2541, 2551, 2552, 2546, 2549, 2553,
-     2553, 2552, 2548, 2547, 2554, 2554, 2555, 2555, 2556, 2556,
-     2557, 2558, 2550, 2559, 2563, 2551, 2560, 2560, 2559, 2561,
-     2561, 2564, 2557, 2562, 2562, 2565, 2563, 2566, 2567, 2558,
-     2568, 2569, 2569, 2570, 2571, 2571, 2574, 2565, 2572, 2572,
-     2573, 2564, 2576, 2575, 2577, 2579, 2568, 2566, 2574, 2567,
-     2575, 2573, 2570, 2578, 2576, 2580, 2581, 2581, 2578, 2582,
-
-     2583, 2583, 2584, 2585, 2577, 2579, 2586, 2587, 2582, 2591,
-     2588, 2589, 2590, 2593, 2590, 2580, 2592, 2592, 2597, 2586,
-     2594, 2591, 2593, 2585, 2588, 2595, 2598, 2599, 2584, 2600,
-     2601, 2587, 2600, 2589, 2602, 2594, 2597, 2603, 2612, 2602,
-     2595, 2611, 2603, 2613, 2601, 2604, 2604, 2616, 2598, 2612,
-     2599, 2605, 2605, 2606, 2606, 2608, 2608, 2610, 2610, 2611,
-     2614, 2617, 2613, 2618, 2619, 2620, 2621, 2616, 2622, 2623,
-     2622, 2630, 2624, 2625, 2620, 2614, 2626, 2626, 2629, 2617,
-     2628, 2628, 2632, 2632, 2619, 2618, 2621, 2631, 2634, 2623,
-     2624, 2625, 2629, 2630, 2635, 2635, 2631, 2634, 2636, 2637,
-
-     2638, 2639, 2641, 2642, 2640, 2644, 2643, 2645, 2639, 2646,
-     2646, 2647, 2647, 2648, 2645,    0, 2636, 2637, 2638, 2640,
-     2641, 2642, 2643, 2649, 2644, 2650, 2652, 2652, 2653, 2653,
-     2654, 2650, 2655, 2648, 2656, 2657, 2654, 2658, 2659, 2660,
-     2662, 2649, 2661, 2659, 2664, 2669, 2664, 2663, 2672, 2656,
-     2655, 2658, 2663, 2661, 2657, 2665, 2665, 2667, 2667, 2660,
-     2662, 2666, 2671, 2666, 2669, 2673, 2674, 2672, 2675, 2676,
-     2677, 2671, 2678, 2675, 2676, 2681, 2682, 2673, 2683, 2684,
-     2684, 2683, 2685, 2686, 2687, 2687, 2674, 2688, 2689, 2690,
-     2677, 2678, 2692, 2690, 2682, 2681, 2693, 2685, 2688, 2696,
-
-     2694, 2686, 2693, 2689, 2694, 2695, 2695, 2692, 2698, 2699,
-     2700, 2704, 2696, 2701, 2701, 2703, 2708, 2705, 2706, 2706,
-     2704, 2705, 2712, 2698, 2707, 2707, 2714, 2703, 2710, 2699,
-     2700, 2709, 2709, 2710, 2711, 2708, 2713, 2721, 2712, 2715,
-     2715, 2720, 2720, 2711, 2722, 2722, 2714, 2723, 2713, 2724,
-     2725, 2730, 2726, 2729, 2729, 2727, 2728, 2731,    0, 2721,
-     2723, 2726, 2724, 2725, 2727, 2728, 2733, 2733, 2736, 2737,
-     2738, 2730, 2731, 2736, 2737, 2739, 2741, 2740, 2742, 2745,
-     2739, 2743, 2749, 2747, 2738, 2740, 2748, 2742, 2747, 2743,
-     2753, 2748, 2750, 2750, 2745, 2741, 2752, 2749, 2751, 2751,
-
-     2755, 2752, 2754, 2754, 2757, 2756, 2758, 2755, 2759, 2753,
-     2756, 2760, 2761, 2761, 2759, 2762, 2760,    0, 2763, 2764,
-     2764, 2768, 2757, 2763, 2758, 2765, 2765, 2769, 2769, 2770,
-     2762, 2771, 2770, 2772, 2768, 2773, 2771, 2771, 2772, 2774,
-     2773, 2775, 2776, 2777, 2779, 2778, 2776, 2775, 2777, 2780,
-     2781, 2784, 2782, 2774, 2778, 2783, 2784, 2780, 2782, 2779,
-     2785, 2783, 2787, 2788, 2789, 2791, 2796, 2789, 2788, 2787,
-     2793, 2781, 2785, 2794, 2795, 2793, 2797, 2791, 2794, 2795,
-     2805, 2798, 2799, 2801, 2796, 2800, 2800, 2810, 2802, 2797,
-     2798, 2799, 2801, 2802, 2806, 2807, 2811, 2814, 2805, 2812,
-
-     2806, 2807, 2813, 2813, 2814, 2815, 2810, 2817, 2816, 2820,
-     2818, 2819, 2819, 2824, 2822, 2825, 2811, 2816, 2812, 2825,
-     2826, 2826, 2817, 2827, 2815, 2818, 2828, 2830, 2820, 2822,
-     2829, 2831, 2828, 2824, 2832, 2832, 2829, 2831, 2833, 2834,
-     2837, 2838, 2835, 2859, 2840, 2830, 2833, 2835, 2827, 2837,
-     2840, 2843, 2841, 2842, 2838, 2841, 2845, 2842, 2844, 2844,
-     2847, 2847, 2848, 2859, 2834, 2843, 2849, 2849, 2850, 2850,
-     2853, 2845, 2852, 2852, 2853, 2855, 2854, 2857, 2857, 2861,
-     2848, 2854, 2860, 2862, 2855, 2863, 2865, 2860, 2862, 2862,
-     2872, 2861, 2866, 2866, 2868, 2868, 2873, 2863, 2869, 2869,
-
-     2870, 2870, 2871, 2872, 2876, 2871, 2865, 2875, 2875, 2873,
-     2878, 2879, 2879, 2880, 2880, 2881, 2881, 2882, 2883, 2883,
-     2884, 2885, 2876, 2886, 2889, 2887, 2888, 2888, 2889, 2892,
-     2878, 2887, 2882, 2884, 2896, 2892, 2893, 2886, 2895, 2885,
-     2897, 2893, 2898, 2895, 2895, 2899, 2900, 2901, 2911, 2902,
-     2908, 2899, 2900, 2902, 2903, 2903, 2906, 2896, 2908, 2914,
-     2897, 2906, 2898, 2909, 2912, 2915, 2909, 2912, 2913, 2913,
-     2915, 2916, 2901, 2911, 2917, 2934, 2914, 2914, 2918, 2919,
-     2919, 2920, 2921, 2922, 2923, 2921, 2928, 2928, 2924, 2916,
-     2927, 2934, 2918, 2921, 2917, 2920, 2924, 2922, 2937, 2925,
-
-        0, 2926, 2936, 2923, 2925, 2925, 2926, 2926, 2940, 2927,
-     2929, 2929, 2930, 2930, 2931, 2931, 2932, 2932, 2933, 2933,
-     2935, 2938, 2936, 2939, 2937, 2935, 2941, 2940, 2939, 2942,
-     2943, 2941, 2944, 2946, 2946, 2938, 2947, 2947, 2942, 2948,
-     2949, 2950, 2948, 2952, 2952, 2963, 2949, 2953, 2954, 2954,
-     2943, 2955, 2944, 2958, 2953, 2959, 2955, 2957, 2957, 2950,
-     2960, 2961, 2958, 2963, 2959, 2964, 2964, 2965, 2965, 2960,
-     2961, 2966, 2967, 2968, 2969, 2966, 2970, 2971, 2974,    0,
-     2973, 2967, 2971, 2971, 2975, 2969, 2981, 2974, 2975, 2979,
-     2984, 2970, 2968, 2973, 2979, 2980, 2980, 2983, 2983, 2985,
-
-     2981, 2986, 2988, 2988, 2984, 2989, 2990, 2994, 2995, 2998,
-     2999, 2996, 3003, 2995, 2989, 3001, 2999, 3005, 2990, 2986,
-     2996, 3006, 3005, 3010, 2985, 3008, 3006, 3001, 3010, 2998,
-     3007, 3007, 2994, 3003, 3008, 3011, 3012, 3013, 3013, 3015,
-     3015, 3013, 3016, 3016, 3017, 3017, 3018, 3019, 3011, 3020,
-     3012, 3021, 3023, 3027, 3024, 3018, 3021, 3025, 3023, 3024,
-     3026, 3026, 3025, 3028, 3029, 3030, 3031, 3019, 3020, 3033,
-     3030, 3027, 3032, 3034, 3034, 3028, 3036, 3037, 3032, 3040,
-     3036, 3038, 3037, 3044, 3031, 3029, 3038, 3039, 3039, 3041,
-     3042, 3046, 3046, 3048, 3033, 3049, 3050, 3051, 3040, 3053,
-
-     3054, 3051, 3052, 3044, 3041, 3042, 3048, 3056, 3049, 3050,
-     3055, 3052, 3056, 3057, 3059, 3053, 3058, 3058, 3055, 3054,
-     3060, 3061, 3063, 3059, 3062, 3062, 3066, 3070, 3067, 3068,
-     3068, 3066, 3066, 3057, 3067, 3072, 3072, 3074, 3060, 3075,
-     3076, 3063, 3077, 3082, 3078, 3076, 3085, 3061, 3070, 3078,
-     3081, 3081, 3083, 3074, 3084, 3075, 3086, 3089, 3077, 3090,
-     3084, 3083, 3093, 3082, 3088, 3088, 3091, 3091, 3093, 3085,
-     3095, 3089, 3097, 3096, 3099, 3086, 3102, 3097, 3090, 3096,
-     3100, 3100, 3101, 3101, 3103, 3104, 3104, 3105, 3106, 3107,
-     3095, 3102, 3109, 3108, 3110, 3111, 3099, 3106, 3105, 3108,
-
-     3112, 3112, 3113, 3121, 3103, 3104, 3110, 3114, 3120, 3107,
-     3114, 3109, 3126, 3115,    0, 3111, 3115, 3113, 3116, 3116,
-     3120, 3122, 3125, 3121, 3123, 3123, 3124, 3122, 3125, 3124,
-     3126, 3128, 3129, 3129, 3130, 3131, 3128, 3132, 3133, 3130,
-     3134, 3134, 3137, 3132, 3138, 3136, 3139, 3140, 3140, 3141,
-     3142,    0, 3143, 3148, 3131, 3133, 3133, 3136, 3148, 3139,
-     3137, 3143, 3145, 3145, 3146, 3146, 3142, 3149, 3141, 3138,
-     3147, 3147, 3150, 3151, 3151, 3152, 3152, 3150, 3153, 3153,
-     3155, 3149, 3154, 3154, 3156, 3157, 3161, 3158, 3160, 3160,
-     3165, 3157, 3158, 3155, 3163, 3163, 3167, 3168, 3169, 3170,
-
-     3171, 3171, 3161, 3173, 3173, 3174, 3175, 3177, 3176, 3165,
-     3156, 3178, 3179, 3179, 3180, 3180, 3182, 3169, 3167, 3168,
-     3178, 3170, 3176, 3183, 3184, 3175, 3185, 3177, 3186, 3183,
-     3189, 3174,    0, 3186, 3182, 3190, 3190, 3192, 3192, 3194,
-     3196, 3193, 3195, 3203, 3184, 3185, 3193, 3197, 3195, 3198,
-     3198, 3189, 3196, 3194, 3199, 3197, 3201, 3202, 3204, 3199,
-     3201, 3205, 3202, 3203, 3206, 3207, 3205, 3209, 3210, 3211,
-     3212, 3207, 3215, 3214, 3240, 3209, 3206, 3216, 3204, 3217,
-     3218, 3220, 3221, 3225, 3227, 3218, 3220, 3210, 3215, 3211,
-     3212, 3214, 3222, 3240, 3216, 3216, 3223, 3227, 3222,    0,
-
-     3217, 3223, 3221, 3225, 3226, 3231, 3231, 3226, 3232, 3232,
-     3233, 3238, 3238, 3239, 3233, 3241, 3241, 3243, 3239, 3245,
-     3245, 3246, 3246, 3250, 3246, 3247, 3247, 3250, 3247, 3248,
-     3248, 3255, 3243, 3249, 3249, 3252, 3249, 3253, 3254, 3254,
-     3252, 3256, 3259, 3259, 3260, 3261, 3253, 3262, 3264, 3255,
-     3263, 3263, 3262, 3267, 3268, 3256, 3269, 3270, 3271, 3273,
-     3269, 3268, 3274, 3276, 3260, 3261, 3270, 3274, 3264, 3275,
-     3275, 3280, 3276, 3271, 3277, 3277, 3285, 3273, 3267, 3278,
-     3278, 3279, 3279, 3281, 3282, 3283, 3280, 3286, 3281, 3284,
-     3283, 3283, 3287, 3282, 3288, 3284, 3282, 3290, 3289, 3288,
-
-     3292, 3285, 3286, 3289, 3291, 3291, 3292, 3296, 3293, 3294,
-     3294, 3295, 3295, 3287, 3293, 3297, 3290, 3300, 3300, 3303,
-     3297, 3305, 3296, 3302, 3302, 3307, 3307, 3316, 3303, 3308,
-     3308, 3309, 3309, 3310, 3310, 3312, 3312, 3313, 3313, 3305,
-     3314, 3314, 3315, 3315, 3322, 3318, 3319, 3319, 3320, 3320,
-     3321, 3323, 3328, 3316, 3318, 3326, 3322, 3325, 3325, 3321,
-     3327, 3327, 3329, 3334, 3330, 3331, 3331, 3328, 3332, 3332,
-     3338, 3323, 3335, 3335, 3326, 3329, 3330, 3339, 3334, 3340,
-     3339, 3341, 3341, 3342, 3344, 3345, 3346, 3344, 3338, 3347,
-     3348, 3345, 3349, 3352, 3347, 3350, 3360, 3353, 3356, 3352,
-
-     3346, 3342, 3356, 3357, 3361, 3340, 3353, 3370, 3374, 3348,
-     3349, 3350, 3370, 3371, 3375, 3375, 3371, 3380, 3357, 3376,
-     3376, 3374, 3360, 3381, 3361, 3378, 3378, 3382, 3383, 3385,
-     3387, 3382, 3381, 3388, 3389, 3390, 3391, 3390, 3394, 3389,
-     3380, 3392, 3392, 3385, 3388, 3393, 3395, 3396, 3383, 3397,
-     3398, 3391, 3399, 3387, 3400, 3401, 3402, 3394, 3393, 3404,
-     3401, 3399, 3403, 3396, 3395, 3398, 3400, 3403, 3405, 3405,
-     3406, 3407, 3411, 3412, 3397, 3414, 3407, 3402, 3404, 3413,
-     3413, 3415, 3415, 3419, 3414, 3420, 3411, 3416, 3416, 3424,
-     3406, 3417, 3417, 3412, 3418, 3418, 3421, 3425, 3422, 3421,
-
-     3436, 3423, 3419, 3422, 3426, 3420, 3423, 3427, 3428, 3431,
-     3426, 3429, 3425, 3437, 3424, 3436, 3429, 3430, 3430, 3440,
-     3428, 3427, 3432, 3432, 3433, 3433, 3435, 3435, 3442, 3431,
-     3438, 3438, 3437, 3447, 3440, 3445, 3445, 3446, 3446, 3448,
-     3451, 3447, 3449, 3450, 3452, 3453, 3442, 3454, 3449, 3450,
-     3455, 3455, 3454, 3461, 3451, 3457, 3457, 3452, 3448, 3462,
-     3467, 3464, 3465, 3468, 3453, 3469, 3465, 3472, 3468, 3470,
-     3471, 3473, 3474, 3478, 3461, 3464, 3473, 3474, 3479, 3462,
-     3467, 3480, 3470, 3471, 3469, 3483, 3472, 3475, 3475, 3481,
-     3481, 3483, 3482, 3478, 3484, 3484, 3479, 3482, 3485, 3486,
-
-     3480, 3487, 3488, 3485, 3486, 3489, 3487, 3491, 3491, 3492,
-     3496, 3489, 3493, 3493, 3492, 3495, 3497, 3498, 3499, 3495,
-     3500, 3488, 3501, 3497, 3509, 3502, 3500, 3504, 3504, 3496,
-     3506, 3506, 3510, 3507, 3508, 3511, 3498, 3499, 3502, 3508,
-     3514, 3501, 3507, 3509, 3513, 3507, 3512, 3512, 3511, 3513,
-     3516, 3510, 3518, 3514, 3517, 3517, 3519, 3519, 3520, 3520,
-     3521, 3522, 3523, 3524, 3524, 3521,    0, 3525, 3522, 3527,
-     3527, 3518, 3525, 3526, 3530, 3526, 3516, 3528, 3529, 3532,
-     3535, 3523, 3531, 3539, 3528, 3529, 3537, 3531, 3534, 3534,
-     3538, 3537, 3540, 3530, 3544, 3538, 3541, 3541, 3532, 3535,
-
-     3543, 3543, 3539, 3545, 3546, 3546, 3547, 3547, 3548, 3550,
-     3550, 3540, 3552, 3544, 3558, 3548, 3551, 3551, 3554, 3552,
-     3557, 3559, 3545, 3554,    0, 3557, 3560, 3560, 3561, 3561,
-        0,    0,    0, 3558,    0,    0,    0,    0,    0,    0,
-     3559, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3566, 3566,
-     3566, 3566, 3566, 3566, 3566, 3567, 3567, 3567, 3567, 3567,
-     3567, 3567, 3568, 3568, 3568, 3568, 3568, 3568, 3568, 3569,
-     3569, 3569, 3569, 3569, 3569, 3569, 3570, 3570, 3570, 3570,
-     3570, 3570, 3570, 3571, 3571, 3571, 3571, 3571, 3571, 3571,
-     3573, 3573,    0, 3573, 3573, 3573, 3573, 3574, 3574,    0,
-
-        0,    0, 3574, 3574, 3575, 3575,    0,    0, 3575,    0,
-     3575, 3576,    0,    0,    0,    0,    0, 3576, 3577, 3577,
-        0,    0,    0, 3577, 3577, 3578,    0,    0,    0,    0,
-        0, 3578, 3579, 3579,    0, 3579, 3579, 3579, 3579, 3580,
-        0,    0,    0,    0,    0, 3580, 3581, 3581,    0,    0,
-        0, 3581, 3581, 3582, 3582,    0, 3582, 3582, 3582, 3582,
-     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
-     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
-     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
-     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
-
-     3564
+      185,  188,  184,  213,  182,  183,  193,  191,  190,  187,
+      177,  193,  186,  191,  191,  189,  194,  194,  195,  197,
+      196,  213,  196,  197,  195,  196,  198,  198,  197,  199,
+
+      200,  201,  202,  197,  204,  200,  200,  202,  203,  197,
+      197,  199,  196,  203,  205,  206,  204,  209,  207,  208,
+      201,  206,  207,  210,  208,  211,  212,  214,  176,  218,
+      215,  217,  214,  209,  205,  215,  217,  210,  212,  219,
+      211,  212,  216,  216,  206,  220,  216,  224,  216,  218,
+      223,  220,  221,  221,  259,  219,  223,  222,  225,  226,
+      216,  259,  216,  222,  225,  226,  228,  224,  229,  222,
+      230,  231,  228,  229,  226,  231,  230,  232,  233,  235,
+      233,  234,  236,  232,  237,  233,  239,  234,  236,  238,
+      240,  242,  235,  241,  243,  238,  242,  244,  240,  239,
+
+      245,  246,  248,  243,  237,  247,  241,  248,  239,  249,
+      247,  247,  244,  250,  251,  253,  245,  250,  252,  254,
+      255,  246,  258,  256,  252,  254,  260,  249,  256,  261,
+      262,  263,  260,  253,  253,  261,  251,  263,  264,  265,
+      255,  258,  266,  266,  267,  267,  268,  273,  269,  262,
+      264,  276,  268,  265,  269,  270,  271,  270,  272,  273,
+      275,  274,  277,  272,  278,  289,  279,  277,  275,  280,
+      268,  276,  279,  281,  270,  280,  282,  283,  281,  271,
+      274,  282,  284,  283,  285,  286,  287,  278,  288,  290,
+      289,  291,  293,  293,  291,  290,  288,  284,  285,  292,
+
+      287,  292,  294,  286,  295,  294,  296,  296,  297,  297,
+      298,  300,  299,  301,  300,  302,  303,  301,  304,  307,
+      312,  312,  295,  306,  302,  303,  298,  299,  308,  306,
+      309,  316,  309,  307,  308,  310,  311,  304,  313,  314,
+      311,  310,  315,  313,  317,  314,  319,  318,  315,  320,
+      320,  316,  321,  322,  323,  321,  324,  311,  323,  319,
+      325,  327,  317,  326,  326,  329,  328,  315,  318,  328,
+      330,  322,  332,  334,  335,  324,  330,  329,  325,  327,
+      331,  339,  334,  331,  332,  336,  328,  333,  338,  340,
+      336,  338,  335,  174,  339,  337,  333,  342,  337,  333,
+
+      337,  340,  342,  342,  333,  333,  333,  333,  341,  343,
+      341,  341,  343,  337,  344,  344,  337,  345,  346,  349,
+      347,  348,  350,  351,  351,  352,  353,  353,  349,  355,
+      352,  350,  358,  346,  345,  347,  357,  345,  348,  348,
+      354,  354,  356,  359,  355,  360,  361,  356,  357,  364,
+      365,  358,  361,  362,  362,  365,  362,  367,  366,  372,
+      360,  767,  367,  359,  366,  362,  368,  370,  372,  364,
+      369,  368,  362,  369,  374,  369,  371,  368,  767,  371,
+      374,  370,  373,  373,  375,  375,  376,  381,  379,  382,
+      388,  376,  371,  380,  392,  371,  380,  371,  377,  377,
+
+      411,  377,  381,  383,  382,  388,  385,  377,  379,  385,
+      386,  377,  411,  389,  380,  392,  377,  383,  393,  377,
+      378,  378,  389,  378,  386,  385,  390,  391,  398,  395,
+      394,  390,  390,  391,  396,  399,  378,  393,  395,  378,
+      391,  378,  397,  378,  387,  394,  387,  387,  397,  403,
+      400,  405,  404,  396,  398,  399,  387,  387,  387,  387,
+      387,  401,  407,  387,  400,  402,  405,  401,  406,  403,
+      402,  401,  404,  406,  408,  409,  409,  407,  410,  412,
+      408,  413,  414,  415,  416,  418,  419,  413,  402,  416,
+      420,  417,  417,  412,  417,  421,  425,  169,  410,  415,
+
+      425,  422,  419,  422,  428,  418,  420,  414,  423,  421,
+      427,  427,  424,  423,  424,  424,  426,  432,  429,  433,
+      426,  430,  431,  428,  435,  436,  167,  433,  433,  441,
+      435,  432,  424,  429,  436,  426,  439,  430,  437,  433,
+      431,  433,  434,  437,  438,  439,  440,  434,  438,  443,
+      441,  442,  440,  443,  446,  434,  434,  442,  444,  434,
+      434,  444,  445,  434,  447,  447,  448,  445,  449,  449,
+      450,  451,  452,  452,  446,  450,  453,  454,  455,  448,
+      456,  454,  453,  457,  451,  458,  459,  459,  457,  461,
+      458,  460,  462,  455,  463,  459,  464,  465,  470,  464,
+
+      466,  456,  465,  460,  466,  467,  463,  468,  468,  461,
+      462,  469,  471,  471,  472,  477,  469,  467,  476,  470,
+      474,  474,  478,  477,  479,  480,  481,  482,  483,  487,
+      485,  481,  489,  479,  486,  490,  472,  488,  489,  476,
+      483,  507,  493,  478,  490,  507,  480,  482,  485,  487,
+      485,  488,  486,  491,  494,  492,  493,  496,  495,  491,
+      492,  495,  494,  497,  498,  494,  499,  500,  503,  502,
+      505,  496,  499,  498,  501,  502,  504,  501,  497,  506,
+      508,  504,  503,  509,  510,  508,  511,  500,  512,  510,
+      513,  516,  505,  502,  517,  518,  528,  519,  509,  520,
+
+      506,  519,  511,  513,  522,  528,  166,  512,  514,  514,
+      518,  516,  521,  527,  514,  517,  514,  521,  520,  523,
+      522,  524,  514,  523,  514,  525,  524,  514,  514,  527,
+      524,  526,  527,  529,  514,  530,  526,  531,  532,  529,
+      525,  532,  533,  534,  529,  535,  535,  536,  537,  537,
+      530,  538,  539,  531,  540,  541,  541,  542,  543,  545,
+      546,  164,  544,  534,  539,  533,  538,  544,  545,  540,
+      547,  548,  536,  550,  551,  553,  542,  548,  551,  546,
+      543,  553,  550,  552,  554,  547,  555,  552,  556,  557,
+      558,  559,  562,  560,  562,  561,  554,  560,  563,  565,
+
+      565,  555,  564,  557,  567,  558,  566,  556,  561,  559,
+      564,  568,  566,  569,  571,  570,  567,  568,  570,  572,
+      574,  573,  563,  574,  575,  569,  573,  590,  571,  576,
+      577,  578,  590,  575,  572,  577,  577,  579,  579,  587,
+      575,  580,  580,  575,  578,  576,  581,  582,  582,  583,
+      583,  584,  581,  585,  586,  588,  591,  584,  585,  585,
+      587,  589,  592,  593,  589,  595,  593,  588,  594,  599,
+      592,  596,  586,  594,  597,  591,  598,  600,  597,  601,
+      602,  600,  598,  606,  603,  602,  604,  604,  595,  599,
+      596,  605,  608,  609,  607,  610,  611,  601,  603,  607,
+
+      612,  615,  611,  613,  606,  612,  605,  616,  616,  609,
+      614,  608,  617,  614,  622,  610,  618,  613,  614,  615,
+      619,  614,  614,  620,  621,  619,  625,  624,  620,  622,
+      617,  626,  618,  624,  626,  625,  627,  628,  621,  631,
+      627,  629,  628,  630,  629,  632,  633,  634,  630,  635,
+      636,  637,  637,  633,  635,  631,  638,  639,  640,  641,
+      634,  644,  627,  632,  642,  638,  643,  644,  645,  646,
+      636,  654,  646,  642,  645,  641,  639,  650,  643,  640,
+      647,  647,  648,  647,  649,  648,  651,  652,  653,  649,
+      654,  655,  657,  653,  656,  650,  659,  655,  657,  656,
+
+      651,  652,  658,  660,  661,  658,  662,  663,  660,  661,
+      661,  664,  665,  666,  667,  669,  664,  668,  665,  662,
+      663,  659,  668,  667,  670,  670,  671,  672,  675,  162,
+      664,  664,  666,  671,  672,  669,  673,  674,  679,  673,
+      675,  676,  677,  674,  678,  678,  676,  677,  677,  680,
+      681,  680,  683,  682,  673,  682,  676,  684,  685,  686,
+      687,  688,  689,  679,  690,  694,  689,  688,  691,  681,
+      683,  692,  693,  690,  696,  684,  685,  698,  686,  695,
+      687,  697,  695,  691,  694,  699,  692,  697,  700,  696,
+      693,  695,  701,  702,  703,  711,  706,  698,  704,  699,
+
+      700,  705,  704,  707,  708,  709,  712,  712,  715,  711,
+      710,  701,  706,  703,  702,  710,  713,  714,  716,  705,
+      713,  707,  708,  708,  709,  717,  719,  715,  718,  716,
+      720,  714,  721,  718,  722,  723,  724,  725,  728,  717,
+      723,  722,  719,  724,  730,  721,  726,  727,  729,  720,
+      731,  726,  727,  730,  732,  729,  728,  733,  738,  734,
+      740,  725,  735,  732,  731,  734,  737,  735,  736,  733,
+      737,  736,  738,  739,  741,  740,  742,  743,  743,  749,
+      744,  744,  739,  745,  745,  746,  747,  750,  741,  744,
+      746,  751,  752,  750,  753,  747,  752,  742,  749,  754,
+
+      755,  756,  757,  759,  760,  758,  753,  756,  761,  771,
+      757,  751,  758,  770,  773,  771,  764,  774,  755,  778,
+      778,  759,  770,  774,  754,  775,  783,  776,  761,  760,
+      762,  764,  762,  777,  775,  762,  773,  777,  781,  762,
+      779,  779,  762,  776,  780,  782,  783,  784,  786,  762,
+      762,  789,  762,  784,  788,  780,  781,  791,  787,  782,
+      785,  785,  785,  787,  785,  794,  790,  785,  786,  789,
+      790,  793,  785,  792,  796,  788,  793,  792,  785,  785,
+      795,  791,  797,  798,  794,  795,  798,  800,  802,  796,
+      799,  801,  801,  792,  800,  799,  799,  803,  804,  804,
+
+      805,  806,  803,  802,  806,  805,  807,  797,  808,  808,
+      809,  807,  809,  810,  811,  812,  813,  817,  814,  812,
+      815,  816,  816,  820,  818,  810,  819,  819,  815,  822,
+      821,  160,  817,  811,  823,  830,  813,  814,  818,  824,
+      823,  820,  821,  826,  824,  825,  825,  828,  826,  826,
+      829,  822,  828,  831,  830,  832,  829,  833,  834,  831,
+      832,  834,  835,  833,  836,  837,  837,  839,  835,  838,
+      838,  840,  836,  841,  843,  839,  842,  844,  841,  848,
+      842,  843,  845,  846,  847,  847,  849,  851,  848,  840,
+      850,  850,  852,  851,  849,  844,  854,  855,  845,  856,
+
+      858,  859,  846,  857,  859,  854,  855,  860,  857,  858,
+      861,  852,  860,  862,  864,  865,  863,  866,  867,  867,
+      865,  865,  868,  856,  861,  863,  869,  864,  871,  872,
+      870,  866,  873,  877,  875,  873,  875,  868,  862,  870,
+      876,  876,  879,  873,  878,  869,  880,  872,  881,  878,
+      882,  883,  871,  884,  877,  885,  886,  887,  888,  889,
+      886,  890,  884,  879,  891,  889,  880,  892,  881,  893,
+      890,  883,  882,  894,  895,  887,  891,  888,  885,  897,
+      895,  896,  900,  892,  901,  898,  902,  894,  893,  896,
+      898,  899,  899,  897,  903,  902,  905,  904,  906,  907,
+
+      909,  900,  908,  910,  901,  904,  909,  911,  914,  910,
+      913,  912,  918,  915,  903,  919,  905,  912,  907,  915,
+      906,  911,  908,  916,  913,  921,  917,  919,  914,  916,
+      917,  918,  920,  922,  922,  919,  923,  920,  924,  926,
+      925,  927,  923,  925,  924,  928,  921,  929,  930,  930,
+      931,  928,   85,  932,  927,  934,  933,  926,  932,  933,
+      934,  934,  935,  937,  937,  936,  938,  929,  931,  936,
+      939,  940,  933,  941,  933,  943,  940,  935,  946,  944,
+      947,  948,  950,  950,  954,  951,  952,  982,  938,  951,
+      939,  946,  941,  944,  953,  953,  957,   80,  956,  943,
+
+      947,  952,  948,  949,  959,  982,  949,  955,  949,  954,
+      957,  955,  949,  956,  949,  958,  960,  961,  959,  949,
+      958,  960,  960,  962,  949,  963,  961,  964,  965,  963,
+      967,  968,  966,  965,  969,  967,  970,  962,  971,  977,
+      977,  963,  964,  965,  966,  968,  972,  971,  973,  980,
+      970,  972,  974,  975,  973,  969,  976,  974,  978,  975,
+      979,  981,  976,  978,  984,  985,  979,  987,  991,  986,
+      985,  980,  988,  988,  992,  993,  984,  994,  990,  987,
+      981,  983,  983,  986,  991,  989,  990,  983,  992,  983,
+      989,  996,  995,  997,  993,  983,  994,  996,  997,  998,
+
+      983,  983,  999, 1000, 1001, 1002, 1005,  983,  995, 1003,
+     1003,  998, 1004, 1009, 1008, 1007, 1004, 1008, 1011, 1000,
+      999, 1007, 1001, 1002, 1010, 1013, 1005, 1012, 1014, 1010,
+     1013, 1011, 1009, 1012, 1016, 1017, 1018, 1020, 1021, 1019,
+     1023, 1024, 1025, 1016, 1017, 1019, 1020, 1014, 1022, 1026,
+     1027, 1030, 1018, 1022, 1028, 1024, 1033, 1021, 1029, 1027,
+     1023, 1026, 1025, 1028, 1029, 1031, 1035, 1036, 1030, 1037,
+     1038, 1031, 1033, 1040, 1037,   75, 1039, 1041, 1042, 1043,
+     1035, 1046, 1049, 1042, 1043, 1047, 1046, 1036, 1049, 1038,
+     1039, 1040, 1041, 1050, 1047, 1048, 1048, 1051, 1052, 1050,
+
+     1055, 1053, 1056, 1061, 1060, 1062, 1051, 1056, 1056, 1063,
+     1065, 1058, 1058, 1052, 1053, 1058, 1055, 1059, 1060, 1064,
+     1059, 1062, 1066, 1061, 1067, 1065, 1069, 1063, 1066, 1068,
+     1075, 1070, 1064, 1071, 1078, 1068, 1070, 1073, 1073, 1074,
+     1076, 1069, 1074, 1077, 1067, 1076, 1079, 1071, 1077, 1080,
+     1078, 1075, 1081, 1082, 1080, 1079, 1084, 1081, 1085, 1089,
+     1086, 1087, 1084, 1088, 1088, 1082, 1086, 1087, 1089, 1090,
+     1091, 1092, 1092, 1091, 1085, 1093, 1094, 1095, 1096, 1097,
+     1098, 1096, 1099, 1100, 1108, 1101, 1098, 1090, 1099, 1100,
+     1101, 1102, 1097, 1093, 1103, 1094, 1102, 1095, 1104, 1105,
+
+     1103, 1107, 1108, 1104, 1109, 1105, 1107, 1110, 1113, 1111,
+     1112, 1112, 1114, 1110, 1111, 1115, 1116, 1113, 1119, 1117,
+     1118, 1114, 1117, 1118, 1109, 1120, 1121, 1122, 1123, 1119,
+     1120, 1124, 1125, 1115, 1126, 1116, 1127, 1124, 1125, 1122,
+     1129, 1127, 1128, 1128, 1121, 1131, 1130, 1123, 1132, 1126,
+     1133, 1134, 1135, 1136, 1133, 1137, 1139, 1131, 1144, 1129,
+     1130, 1135, 1140, 1140,   74, 1141, 1132, 1146, 1147, 1134,
+     1148, 1142, 1136, 1141, 1143, 1139, 1142, 1150, 1144, 1143,
+     1137, 1146, 1148, 1147, 1149, 1152, 1150, 1151, 1151, 1149,
+     1153, 1154, 1155, 1156, 1163, 1158, 1153, 1154, 1156, 1157,
+
+     1158, 1157, 1159, 1160, 1161, 1152, 1162, 1164, 1155, 1161,
+     1165, 1166, 1169, 1163, 1164, 1170, 1159, 1160, 1168, 1168,
+     1171, 1162, 1172, 1173, 1178, 1165, 1169,   68, 1172, 1178,
+     1166, 1174, 1181, 1170, 1176, 1171, 1174, 1180, 1176, 1177,
+     1177, 1179, 1179, 1173, 1180, 1174, 1181, 1174, 1182, 1183,
+     1174, 1182, 1184, 1185, 1186, 1187, 1190, 1188, 1189, 1186,
+     1192, 1190, 1185, 1191, 1189, 1193, 1195, 1195, 1183, 1188,
+     1184, 1192, 1198, 1196, 1187, 1197, 1199, 1191, 1196, 1200,
+     1197, 1199, 1201, 1200, 1193, 1202, 1203, 1204, 1206, 1207,
+     1205, 1201, 1198, 1205, 1209, 1208, 1207, 1210, 1211, 1212,
+
+     1202, 1203, 1205, 1206, 1213, 1212, 1204, 1208, 1214, 1215,
+     1216, 1217, 1218, 1209, 1214, 1219, 1211, 1221, 1210, 1213,
+     1217, 1220, 1222, 1223, 1225, 1224, 1227, 1218, 1228, 1215,
+     1216, 1224, 1227, 1220, 1219, 1229, 1221, 1230, 1223, 1231,
+     1232, 1233, 1234, 1228, 1225, 1230, 1233, 1222, 1236, 1229,
+     1237, 1265, 1235, 1238, 1234, 1265, 1232, 1235, 1235, 1231,
+     1239, 1239, 1241, 1242, 1237, 1243, 1238, 1236, 1240, 1240,
+       63, 1243, 1242, 1240, 1246, 1241, 1240, 1240, 1244, 1244,
+     1245, 1240, 1247, 1246, 1248, 1245, 1251, 1240, 1247, 1248,
+     1249, 1240, 1250, 1250, 1254, 1249, 1252, 1252, 1253, 1255,
+
+     1256, 1253, 1257, 1253, 1258, 1259, 1256, 1251, 1260, 1261,
+     1259, 1257, 1262, 1263, 1254, 1264, 1266, 1255, 1262, 1263,
+     1264, 1267, 1260, 1268, 1258,   58, 1269, 1261, 1268, 1266,
+     1267, 1270, 1270, 1271, 1271, 1267, 1271, 1267, 1272, 1267,
+     1269, 1267, 1274, 1275, 1276, 1277, 1274, 1278, 1279, 1272,
+     1280, 1281, 1278, 1278, 1277, 1282, 1281, 1279, 1275, 1283,
+     1284, 1285, 1276, 1286, 1287, 1288, 1288, 1290, 1283, 1282,
+     1287, 1289, 1280, 1291, 1293, 1290, 1292, 1286, 1295, 1284,
+     1285, 1292, 1294, 1289, 1296, 1295, 1297, 1291, 1293, 1298,
+     1300, 1294, 1299, 1299, 1298, 1301, 1301, 1302, 1304, 1302,
+
+     1306, 1304, 1296, 1305, 1307, 1300, 1308, 1308, 1305, 1309,
+     1313, 1297, 1314, 1307, 1310, 1310, 1311, 1311, 1312, 1306,
+     1315, 1316, 1316, 1312, 1317, 1318, 1320, 1319, 1321, 1309,
+     1319, 1313, 1322, 1314, 1321, 1325, 1323, 1322, 1324, 1328,
+     1324, 1315, 1318, 1329, 1317, 1323, 1320, 1327, 1329, 1330,
+     1327, 1331, 1332, 1325, 1328, 1334, 1331, 1333, 1334, 1335,
+     1332, 1338, 1333, 1330, 1335, 1336, 1336, 1337, 1339, 1340,
+     1341, 1343, 1337, 1345, 1339, 1344, 1340, 1343, 1345, 1338,
+     1346, 1344, 1347, 1341, 1348, 1346, 1349, 1350, 1347, 1351,
+     1351, 1352, 1354, 1348, 1355, 1357, 1356, 1354, 1350, 1358,
+
+     1359, 1360, 1361, 1362, 1365, 1349, 1356, 1360, 1361, 1362,
+     1357, 1352, 1355, 1366, 1364, 1367, 1368, 1369, 1365, 1358,
+     1364, 1370, 1372, 1359, 1365, 1371, 1371, 1373, 1368, 1374,
+     1377, 1369, 1375, 1366,   57, 1367, 1380, 1375, 1378, 1370,
+     1376, 1376, 1372, 1378, 1381, 1382, 1384, 1374, 1383, 1381,
+     1381, 1385, 1373, 1377, 1384, 1380, 1386, 1383, 1387, 1388,
+     1389, 1391, 1397, 1382, 1388, 1385, 1390, 1388, 1390, 1389,
+     1394, 1386, 1393, 1387, 1394, 1391, 1387, 1395, 1393, 1396,
+     1398, 1397, 1399, 1403, 1396, 1396, 1400, 1401, 1395, 1402,
+     1404, 1400, 1401, 1405, 1402, 1406, 1409, 1408, 1405, 1410,
+
+     1399, 1403, 1411, 1411, 1412, 1413, 1398, 1414, 1412, 1416,
+     1404, 1408, 1415, 1417, 1409, 1406, 1418, 1410, 1415, 1419,
+       52, 1416, 1420, 1413, 1421, 1422, 1414, 1423, 1426, 1417,
+     1427, 1424, 1423, 1419, 1428, 1418, 1425, 1420, 1424, 1421,
+     1430, 1425, 1432, 1428, 1422, 1431, 1426, 1429, 1429, 1433,
+     1433, 1427, 1434, 1435, 1431, 1430, 1436, 1440, 1434, 1435,
+     1437, 1437, 1432, 1438, 1438, 1439, 1441, 1442, 1443, 1444,
+     1436, 1439, 1442, 1440, 1443, 1444, 1445, 1446, 1446, 1447,
+     1447, 1450, 1445, 1449, 1449, 1450, 1451, 1441, 1452, 1453,
+     1454, 1456, 1455, 1457, 1457, 1451, 1458, 1459, 1456, 1461,
+
+     1462, 1453, 1465, 1460, 1454, 1459, 1452, 1455, 1460, 1463,
+     1466, 1466, 1464, 1461, 1463, 1463, 1458, 1464, 1464, 1462,
+     1467, 1468, 1465, 1469, 1470, 1471, 1472, 1473, 1474, 1470,
+     1475, 1476, 1469, 1477, 1474, 1475, 1478, 1479, 1482, 1467,
+     1468, 1480, 1478, 1481, 1471, 1473, 1472, 1480, 1483, 1481,
+     1484, 1476, 1485, 1486, 1487, 1488, 1479, 1482, 1489, 1477,
+     1490, 1490, 1491, 1492, 1493, 1491, 1494, 1483, 1487, 1484,
+       47, 1485, 1486, 1489, 1495, 1495, 1488, 1499, 1494, 1496,
+     1496, 1497, 1492, 1493, 1498, 1500, 1497, 1501, 1498, 1502,
+     1499, 1502, 1504, 1505, 1500, 1502, 1506, 1507, 1505, 1508,
+
+     1501, 1509, 1509, 1512, 1510, 1518, 1511, 1513, 1502, 1510,
+     1504, 1506, 1511, 1514, 1519, 1508, 1515, 1507, 1512, 1514,
+     1513, 1515, 1516, 1517, 1520, 1518, 1516, 1517, 1521, 1522,
+     1523, 1523, 1519, 1520, 1525, 1522, 1527, 1528, 1529, 1529,
+     1530, 1531, 1528, 1533, 1533, 1542, 1530, 1535, 1521, 1537,
+     1535, 1538, 1525, 1536, 1536, 1539, 1541, 1527, 1543, 1541,
+     1544, 1531, 1545, 1546, 1546, 1537, 1542, 1538, 1547, 1544,
+     1548, 1539, 1550, 1549, 1551, 1552, 1552, 1550, 1543, 1554,
+     1553, 1555, 1545, 1547, 1556, 1557, 1558, 1558, 1551, 1553,
+     1559, 1548, 1549, 1560, 1561, 1562, 1555, 1554, 1564, 1561,
+
+     1563, 1563, 1564, 1565, 1559, 1557, 1566, 1566, 1567, 1556,
+     1562, 1560, 1568, 1569, 1570, 1571, 1572, 1578, 1570, 1574,
+     1574, 1572, 1575, 1565, 1569, 1575, 1576, 1577, 1579, 1580,
+     1567, 1568, 1577, 1578, 1571, 1581, 1582, 1583, 1586, 1576,
+     1584, 1584, 1585, 1580, 1587, 1591, 1579, 1585, 1588, 1588,
+     1582, 1589, 1590, 1595, 1581, 1581, 1598, 1590, 1586, 1592,
+     1589, 1592, 1583, 1593, 1587, 1591, 1594, 1600, 1593, 1596,
+     1598, 1604, 1594, 1595, 1601, 1596, 1599, 1599, 1603, 1607,
+     1601, 1605, 1605, 1603, 1606, 1606, 1600, 1608, 1609, 1610,
+     1611, 1611, 1610, 1607, 1612, 1604, 1613, 1614, 1615, 1622,
+
+     1616, 1615, 1617, 1609, 1615, 1608, 1616, 1617, 1613, 1620,
+     1618, 1625, 1612, 1618, 1621,   18, 1615, 1614, 1620, 1621,
+     1623, 1624, 1624, 1623, 1622, 1626, 1627, 1634, 1628, 1618,
+     1633, 1626, 1627, 1628, 1631, 1625, 1629, 1629, 1630, 1630,
+     1631, 1632, 1635, 1633, 1636, 1634, 1632, 1637, 1638, 1639,
+     1637, 1640, 1643, 1641, 1638, 1639, 1642, 1640, 1641, 1647,
+     1644, 1635, 1642, 1646, 1636, 1644, 1645, 1645, 1646, 1648,
+     1651, 1649, 1650, 1652, 1653, 1643, 1654, 1647, 1655, 1656,
+     1657, 1658, 1657, 1656, 1651, 1661, 1659, 1652, 1653, 1648,
+     1649, 1663, 1650, 1659, 1654, 1662, 1664, 1661, 1665, 1666,
+
+     1658, 1667, 1664, 1655, 1663, 1668, 1669, 1662, 1671, 1671,
+     1672, 1673, 1674, 1675, 1675, 1666, 1673, 1676, 1665, 1668,
+     1677, 1667, 1678, 1679, 1674, 1681, 1680, 1669, 1684, 1682,
+     1672, 1688, 1676, 1683, 1677, 1680, 1682, 1686, 1690, 1690,
+     1681, 1679, 1683, 1692, 1684, 1683, 1678, 1689, 1691, 1691,
+     1689, 1693, 1686, 1695, 1695, 1692, 1688, 1686, 1694, 1696,
+     1697, 1694, 1698, 1699, 1701, 1700, 1699, 1698, 1702, 1693,
+     1700, 1703, 1696, 1704,   17, 1707, 1705, 1706, 1710, 1697,
+     1703, 1707, 1711, 1701, 1702, 1705, 1706, 1709, 1705, 1708,
+     1708, 1712, 1704, 1713, 1709, 1711, 1714, 1715, 1710, 1716,
+
+     1720, 1717, 1715, 1715, 1716, 1721, 1723, 1713, 1724, 1712,
+     1722, 1722, 1714, 1717, 1725, 1725, 1729, 1724, 1727, 1725,
+     1726, 1726, 1723, 1721, 1728, 1720, 1730, 1727, 1731, 1728,
+     1727, 1732, 1736, 1735, 1729, 1726, 1732, 1732, 1734, 1737,
+     1740, 1738,    0, 1739, 1737, 1748, 1731, 1730, 1735, 1739,
+     1741, 1741, 1734, 1742, 1736, 1738, 1743, 1744, 1740, 1742,
+     1745, 1743, 1746, 1749, 1750, 1748, 1745, 1751, 1746, 1752,
+     1750, 1744, 1752, 1753, 1755, 1757, 1758, 1749, 1752, 1753,
+     1751, 1759, 1755, 1760, 1761, 1763, 1765, 1762, 1764, 1761,
+     1766, 1760, 1767,    0, 1757, 1758, 1762, 1764, 1763, 1765,
+
+     1759, 1768, 1768, 1769, 1766, 1770, 1767, 1771, 1773, 1769,
+     1775, 1770, 1772, 1772, 1774, 1776, 1776, 1777, 1778, 1779,
+     1771, 1780, 1781, 1768, 1778, 1783, 1783, 1784, 1773, 1775,
+     1777, 1785, 1774, 1786, 1787, 1785, 1790, 1780, 1786, 1788,
+     1781, 1779, 1791, 1789, 1788, 1790, 1793, 1784, 1789, 1794,
+     1795, 1796, 1797, 1795, 1787, 1798, 1798, 1793, 1794, 1799,
+     1800, 1801, 1803, 1796, 1804, 1791, 1809, 1797, 1802, 1802,
+     1805, 1804, 1800, 1806, 1808, 1810, 1803, 1811, 1799, 1812,
+     1801, 1810, 1805, 1819, 1813, 1806, 1809, 1814, 1814, 1811,
+     1813, 1815, 1819, 1808, 1815, 1816, 1816, 1812, 1818, 1820,
+
+     1821, 1821, 1822, 1818, 1823, 1820, 1823, 1824, 1825, 1826,
+     1824, 1827, 1828, 1829, 1822, 1830, 1831, 1833, 1829, 1834,
+     1830, 1832, 1836, 1839, 1834, 1831, 1835,    0, 1825, 1827,
+     1828, 1826, 1833, 1832, 1837, 1835, 1838, 1842, 1839, 1837,
+     1844, 1838, 1836, 1840, 1840, 1841, 1837, 1845, 1835, 1846,
+     1848, 1841, 1849, 1847, 1849, 1854, 1844, 1850, 1842, 1851,
+     1851, 1852, 1852, 1853, 1853, 1857, 1845, 1858, 1846, 1847,
+     1848, 1850, 1859, 1850, 1866, 1854, 1855, 1855, 1856, 1856,
+     1860, 1860, 1863, 1861, 1862, 1863, 1857, 1861, 1858, 1865,
+     1862, 1867, 1866, 1859, 1868, 1865, 1869, 1867, 1870, 1868,
+
+     1872, 1870, 1871, 1871, 1873, 1874, 1874, 1875, 1876, 1873,
+     1877, 1878, 1879, 1879, 1880, 1877, 1878, 1881, 1882, 1880,
+     1872, 1869, 1875, 1881, 1883, 1884, 1885, 1886, 1887, 1876,
+     1882, 1882, 1882, 1886, 1889, 1890, 1891, 1882, 1894, 1889,
+     1889, 1893, 1897, 1884, 1883, 1892, 1885, 1892, 1887, 1890,
+     1895, 1891, 1893, 1894, 1896, 1898, 1895, 1899, 1899, 1900,
+     1901, 1901, 1897, 1896, 1902, 1903, 1904, 1904, 1905, 1905,
+     1906, 1909, 1909, 1910, 1911, 1914, 1898, 1913, 1916, 1917,
+     1917, 1918, 1915, 1911, 1902, 1900, 1913, 1903, 1915, 1919,
+     1906, 1921, 1920, 1922, 1916, 1924, 1914, 1925, 1910, 1920,
+
+     1921, 1927, 1918, 1928, 1919, 1923, 1923, 1927, 1928, 1929,
+     1930, 1931, 1935, 1925, 1932, 1929, 1940, 1936, 1931, 1922,
+     1932, 1924, 1933, 1936, 1933, 1937, 1937, 1938, 1939, 1941,
+     1930, 1935, 1938, 1943, 1945, 1942, 1940, 1939, 1942, 1944,
+     1946, 1948, 1944, 1947, 1947, 1943, 1951, 1948, 1941, 1949,
+     1950, 1954, 1945, 1952, 1955, 1949, 1958, 1952, 1956, 1957,
+     1957, 1951, 1959, 1956, 1960, 1962, 1946,    0, 1963, 1966,
+     1950, 1954, 1963, 1952, 1964, 1964, 1955, 1965, 1966, 1960,
+     1958, 1959, 1969, 1965, 1962, 1967, 1967, 1968, 1970, 1970,
+     1971, 1968, 1972, 1969, 1973, 1974, 1975, 1976, 1969, 1977,
+
+     1974, 1978, 1979, 1980, 1981,    0, 1972, 1978, 1982, 1981,
+     1989, 1971, 2081, 1973, 1983, 1983, 1975, 1976, 1980, 1977,
+     1979, 1982, 1984, 1984, 1985, 1987, 1988, 1997, 1985, 2081,
+     1989, 1990, 1990, 1993, 1987, 1992, 1992, 1988, 1993, 1993,
+     1994, 1996, 1988, 1998, 1999, 2000, 1994, 1996, 1998, 2002,
+     2003, 2000, 2004, 1997, 2003, 2006, 1999, 2005, 2005, 2007,
+     2008, 2002, 2009, 2012, 2004, 2007, 2010, 2010, 2009, 2011,
+     2013, 2017, 2014, 2016, 2018, 2013, 2021, 2021, 2020, 2018,
+     2006, 2020, 2008, 2012, 2014, 2016, 2022, 2022, 2011, 2024,
+     2017, 2023, 2023, 2025, 2026, 2029, 2027, 2028, 2034, 2025,
+
+     2026, 2027, 2031, 2028, 2029, 2033, 2037, 2031, 2033, 2024,
+     2034, 2035, 2035, 2038, 2039, 2040, 2040, 2041, 2037, 2039,
+     2046, 2044, 2042, 2043, 2044, 2038, 2041, 2042, 2043, 2045,
+     2045, 2048, 2047, 2049, 2050, 2053, 2055, 2051, 2050, 2052,
+     2046, 2047, 2051, 2056, 2059, 2052, 2054, 2058, 2058, 2048,
+     2062, 2060, 2049, 2053, 2055, 2054, 2061, 2056, 2064, 2058,
+     2060, 2065, 2059, 2063, 2063, 2061, 2066, 2064, 2068, 2067,
+     2062, 2071, 2071, 2065, 2067, 2073, 2074, 2075, 2073, 2076,
+     2079, 2068, 2078, 2080, 2082, 2082, 2083, 2066, 2083, 2080,
+     2084, 2091, 2074, 2075, 2079, 2076, 2086, 2078, 2085, 2085,
+
+     2088, 2088, 2089, 2089, 2086, 2092, 2093, 2094, 2084, 2095,
+     2096, 2092, 2093, 2097, 2091, 2099, 2095, 2098, 2098, 2100,
+     2105, 2094, 2101, 2102, 2099, 2104, 2103, 2106, 2109, 2110,
+     2112, 2112, 2096, 2097, 2101, 2102, 2113, 2104, 2111, 2114,
+     2100, 2103, 2106, 2107, 2115, 2107, 2105, 2115, 2109, 2107,
+     2111, 2116, 2110, 2117, 2113, 2119, 2116, 2121, 2123, 2114,
+     2119, 2120, 2107, 2120, 2122, 2123, 2127, 2125, 2128, 2122,
+     2129, 2131, 2130, 2117, 2130, 2121, 2125, 2128, 2134, 2132,
+     2134, 2135, 2129, 2137, 2127, 2132, 2136, 2136, 2138, 2139,
+     2131, 2139, 2140, 2138, 2141, 2135, 2142, 2140, 2143, 2141,
+
+     2144, 2145, 2147, 2146, 2152, 2148, 2149, 2145, 2146, 2137,
+     2150, 2149, 2149, 2153, 2142, 2147, 2143, 2148, 2150, 2156,
+     2144, 2154, 2154, 2152, 2155, 2155, 2157, 2153, 2158, 2159,
+     2156, 2160, 2161, 2162, 2161, 2159, 2160, 2163, 2164, 2164,
+     2165, 2157, 2166, 2166, 2170, 2163, 2167, 2167, 2158, 2168,
+     2169, 2162, 2165, 2163, 2173, 2169, 2172, 2174, 2168, 2174,
+     2172, 2175, 2170, 2173, 2176, 2177, 2173, 2178, 2179, 2176,
+     2176, 2181, 2185, 2182, 2183, 2186, 2178, 2177, 2182, 2183,
+     2179, 2187, 2175, 2181, 2189, 2185, 2188, 2188, 2190, 2191,
+     2187, 2193, 2192, 2196, 2195, 2186, 2194, 2200, 2196, 2198,
+
+     2199, 2294, 2189, 2294, 2212, 2209, 2190, 2191, 2192, 2195,
+     2194, 2198, 2199, 2201, 2202, 2203, 2193, 2200, 2201, 2202,
+     2206, 2208, 2210, 2211, 2203, 2213, 2206, 2208, 2209, 2212,
+     2214, 2214, 2217, 2215, 2213, 2216, 2216, 2210, 2218, 2206,
+     2219, 2211, 2215, 2220, 2219, 2221, 2223, 2224, 2220, 2225,
+     2217, 2234, 2234, 2224, 2226, 2227, 2228, 2218, 2221, 2226,
+     2226, 2227, 2228, 2229, 2230, 2223, 2229, 2231, 2235, 2235,
+     2236, 2225, 2230, 2237, 2237, 2238, 2238, 2239, 2240, 2236,
+     2241, 2243, 2243, 2235, 2249, 2242, 2241, 2231, 2245, 2239,
+     2242, 2244, 2244, 2245, 2235, 2246, 2240, 2251, 2248, 2250,
+
+     2253, 2246, 2248, 2250, 2249, 2254, 2255, 2256, 2257, 2258,
+     2254, 2260, 2259, 2257, 2261, 2262, 2268, 2251, 2265, 2261,
+     2263, 2263, 2256, 2267, 2270, 2253, 2264, 2258, 2259, 2255,
+     2264, 2260, 2269, 2265, 2266, 2271, 2270, 2262, 2272, 2266,
+     2273, 2267, 2268, 2272, 2274, 2275, 2275, 2277, 2278, 2279,
+     2269, 2280, 2281, 2273, 2271, 2277, 2282, 2283, 2284, 2285,
+     2286, 2291, 2274, 2287, 2292, 2295, 2366, 2278, 2279, 2287,
+     2280, 2285, 2289, 2366, 2291, 2281, 2283, 2293, 2292, 2284,
+     2282, 2286, 2299, 2293, 2300, 2295, 2297, 2289, 2296, 2296,
+     2298, 2297, 2301, 2298, 2306, 2299, 2302, 2302, 2300, 2303,
+
+     2303, 2304, 2307, 2304,    0, 2301, 2305, 2305, 2310, 2306,
+     2308, 2308, 2309, 2309, 2316, 2307, 2317, 2310, 2311, 2311,
+     2310, 2312, 2312, 2313, 2315, 2318, 2319, 2319, 2313, 2315,
+     2320, 2320, 2321, 2325, 2316, 2323, 2317, 2318, 2322, 2322,
+     2324, 2324, 2326, 2327, 2327, 2328, 2328, 2326, 2325, 2329,
+     2330, 2321, 2331, 2323, 2332, 2333, 2335, 2336, 2336, 2330,
+     2337, 2335, 2339, 2329, 2338, 2338, 2340, 2341, 2332, 2331,
+     2345, 2340, 2342, 2341, 2333, 2342, 2343, 2343, 2346, 2337,
+     2339, 2344, 2344, 2347, 2349, 2347, 2350, 2351, 2351, 2345,
+     2353, 2354, 2343, 2346, 2355, 2359, 2356, 2357, 2361, 2349,
+
+     2362, 2357, 2358, 2358, 2360, 2350, 2354, 2364, 2364, 2360,
+     2353, 2356, 2365, 2361, 2359, 2362, 2367, 2355, 2368, 2369,
+     2370, 2371, 2372, 2372, 2373, 2374, 2375, 2374, 2377, 2375,
+     2367, 2378, 2365, 2373, 2377, 2370, 2368, 2369, 2381, 2382,
+     2379, 2383, 2385, 2378, 2375, 2379, 2375, 2371, 2380, 2384,
+     2387, 2388, 2382, 2380, 2384, 2387, 2388, 2390, 2393, 2389,
+     2391, 2392, 2383, 2381, 2389, 2394, 2391, 2392, 2385, 2395,
+     2398, 2396, 2390, 2397, 2399, 2395, 2396, 2401, 2397, 2393,
+     2394, 2400, 2402, 2403, 2400, 2404, 2401, 2399, 2405, 2410,
+     2406, 2402, 2403, 2407, 2404, 2398, 2406, 2408, 2412, 2407,
+
+     2415, 2408, 2405, 2413, 2414, 2414, 2415, 2416, 2416, 2410,
+     2417, 2420, 2413, 2418, 2418, 2419, 2416, 2425, 2412, 2417,
+     2419, 2422, 2423, 2424, 2424, 2426, 2429, 2428, 2430, 2431,
+     2434, 2420, 2425, 2420, 2426, 2434, 2435, 2422, 2423, 2428,
+     2436, 2431, 2429, 2430, 2433, 2437, 2437, 2433, 2438, 2438,
+     2440, 2440, 2436, 2442, 2441, 2443, 2435, 2441, 2442, 2444,
+     2445, 2443, 2446, 2446, 2447, 2444, 2448, 2448, 2449, 2445,
+     2450, 2451, 2452, 2452, 2454, 2453, 2462, 2455, 2447, 2457,
+     2449, 2453, 2455, 2457, 2450, 2462, 2458, 2463, 2454, 2458,
+     2451, 2459, 2459, 2460, 2461, 2464, 2463, 2465, 2460, 2461,
+
+     2467, 2465, 2466, 2466, 2469, 2470, 2471, 2472, 2473, 2469,
+     2474, 2475, 2476, 2467, 2474, 2464, 2480, 2476, 2477, 2479,
+     2479, 2481, 2473, 2478, 2477, 2470, 2471, 2472, 2482, 2478,
+     2483, 2475, 2484, 2487, 2480, 2483, 2485, 2485, 2488, 2489,
+     2481, 2491, 2490, 2496, 2489, 2487, 2494, 2482, 2490, 2491,
+     2492, 2500, 2492, 2484, 2488, 2494, 2505, 2496, 2497, 2497,
+     2498, 2499, 2505, 2498, 2499, 2501, 2501, 2504, 2506, 2507,
+     2507, 2504, 2508, 2511, 2511, 2513, 2515, 2500, 2516, 2519,
+     2506, 2508, 2520, 2521, 2519, 2529, 2522, 2523, 2524, 2524,
+     2515, 2522, 2523, 2513, 2516, 2526, 2526, 2528, 2530, 2530,
+
+     2531, 2532, 2533, 2528, 2521, 2529, 2535, 2533, 2520, 2536,
+     2537, 2541, 2536, 2542, 2538, 2543, 2531, 2539, 2539, 2542,
+     2541, 2543, 2537, 2532, 2544, 2535, 2538, 2549, 2545, 2547,
+     2547, 2548, 2550, 2555, 2548, 2552, 2552, 2553, 2553, 2554,
+     2556, 2557, 2544, 2545, 2554, 2560, 2549, 2558, 2561, 2556,
+     2550, 2555, 2558, 2559, 2557, 2559, 2562, 2564, 2563, 2560,
+     2565, 2566, 2561, 2563, 2567, 2567, 2566, 2571, 2562, 2568,
+     2568, 2569, 2569, 2570, 2570, 2572, 2573, 2564, 2577, 2571,
+     2565, 2573, 2574, 2574, 2575, 2575, 2576, 2576, 2578, 2579,
+     2577, 2580, 2581, 2572, 2582, 2583, 2583, 2584, 2585, 2585,
+
+     2588, 2579, 2586, 2586, 2587, 2590, 2591, 2589, 2578, 2593,
+     2582, 2580, 2588, 2581, 2589, 2587, 2584, 2590, 2592, 2594,
+     2595, 2595, 2596, 2592, 2597, 2597, 2591, 2598, 2599, 2593,
+     2600, 2596, 2601, 2602, 2604, 2603, 2604, 2605, 2613, 2594,
+     2606, 2606, 2607, 2600, 2608, 2609, 2611, 2602, 2599, 2605,
+     2612, 2607, 2614, 2598, 2615, 2614, 2601, 2603, 2616, 2608,
+     2609, 2613, 2617, 2616, 2611, 2618, 2618, 2617, 2615, 2619,
+     2619, 2625, 2612, 2620, 2620, 2622, 2622, 2624, 2624, 2626,
+     2627, 2628, 2630, 2631, 2632, 2633, 2634, 2635, 2637, 2625,
+     2626, 2636, 2638, 2636, 2639, 2634, 2628, 2640, 2640, 2627,
+
+     2642, 2631, 2630, 2644, 2642, 2633, 2632, 2635, 2637, 2645,
+     2638, 2646, 2639, 2643, 2643, 2647, 2647, 2644, 2649, 2651,
+     2646, 2650, 2650, 2652, 2653, 2654, 2656, 2649, 2655, 2657,
+     2658, 2645, 2654, 2659, 2661, 2661, 2663, 2651, 2660, 2662,
+     2662, 2652, 2653, 2655, 2656, 2660, 2658, 2657, 2664, 2665,
+     2667, 2667, 2659, 2668, 2668, 2665, 2663, 2669, 2670, 2671,
+     2672, 2673, 2674, 2669, 2675, 2677, 2664, 2674, 2678, 2676,
+     2679, 2684, 2679, 2678, 2671, 2673, 2670, 2680, 2680, 2672,
+     2676, 2681, 2686, 2681, 2675, 2677, 2682, 2682, 2687, 2688,
+     2684, 2686, 2689, 2690, 2691, 2692, 2697, 2693, 2690, 2691,
+
+     2696, 2688, 2698, 2699, 2699, 2698, 2700, 2687, 2701, 2702,
+     2702, 2703, 2689, 2704, 2697, 2692, 2693, 2707, 2708, 2705,
+     2696, 2700, 2703, 2705, 2708, 2709, 2701, 2711, 2704, 2709,
+     2710, 2710, 2707, 2713, 2714, 2715, 2716, 2716, 2718, 2720,
+     2711, 2723, 2719, 2720, 2721, 2721, 2722, 2722, 2713, 2726,
+     2718, 2719, 2724, 2724, 2714, 2715, 2725, 2727, 2726, 2728,
+     2723, 2725, 2729, 2730, 2730, 2735, 2735, 2736, 2737, 2737,
+     2738, 2728, 2739, 2727, 2740, 2741, 2745, 2742, 2746, 2743,
+     2744, 2744, 2729, 2738, 2741, 2739, 2742, 2740, 2743, 2736,
+     2748, 2748, 2751, 2746, 2752, 2753, 2745, 2751, 2754, 2752,
+
+     2755, 2756, 2757, 2754, 2758, 2762, 2760, 2764, 2755, 2753,
+     2762, 2757, 2758, 2763, 2765, 2765, 2766, 2766, 2763, 2767,
+     2756, 2760, 2764, 2768, 2767, 2769, 2769, 2770, 2771, 2772,
+     2773, 2774, 2783, 2771, 2770, 2775, 2777, 2774, 2776, 2776,
+     2775, 2778, 2768, 2779, 2779, 2783, 2778, 2772, 2773, 2780,
+     2780, 2777, 2784, 2784, 2785, 2786, 2789, 2785, 2787, 2788,
+     2786, 2786, 2790, 2787, 2788, 2791, 2792, 2793, 2790, 2791,
+     2789, 2792, 2794, 2795, 2796, 2799, 2793, 2797, 2798, 2800,
+     2799, 2795, 2803, 2797, 2798, 2801, 2801, 2794, 2804, 2803,
+     2807, 2800, 2812, 2804, 2805, 2796, 2809, 2805, 2810, 2811,
+
+     2813, 2809, 2807, 2810, 2811, 2814, 2815, 2816, 2816, 2817,
+     2812, 2818, 2821, 2813, 2814, 2815, 2818, 2822, 2817, 2823,
+     2826, 2827, 2830, 2822, 2828, 2823, 2829, 2829, 2831, 2830,
+     2821, 2832, 2836, 2833, 2834, 2835, 2835, 2838, 2840, 2826,
+     2832, 2827, 2841, 2828, 2842, 2842, 2841, 2831, 2833, 2834,
+     2843, 2836, 2838, 2844, 2845, 2846, 2847, 2849, 2840, 2844,
+     2845, 2850, 2847, 2848, 2848, 2849, 2851, 2853, 2854, 2951,
+     2859, 2851, 2856, 2846, 2857, 2843, 2853, 2857, 2856, 2858,
+     2861, 2854, 2864, 2858, 2859, 2951, 2850, 2860, 2860, 2863,
+     2863, 2865, 2865, 2866, 2866, 2861, 2868, 2868, 2869, 2870,
+
+     2864, 2871, 2869, 2875, 2870, 2873, 2873, 2876, 2877, 2878,
+     2871, 2881, 2876, 2879, 2878, 2878, 2882, 2882, 2884, 2884,
+     2877, 2885, 2885, 2875, 2888, 2879, 2886, 2886, 2889, 2887,
+     2892, 2881, 2887, 2891, 2891, 2894, 2898, 2888, 2895, 2895,
+     2900, 2889, 2896, 2896, 2897, 2897, 2899, 2899, 2892, 2901,
+     2902, 2898, 2903, 2900, 2908, 2894, 2904, 2904, 2903, 2905,
+     2908, 2909, 2912, 2905, 2902, 2911, 2909, 2901, 2913, 2914,
+     2911, 2911, 2915, 2916, 2917, 2924, 2918, 2927, 2915, 2916,
+     2918, 2919, 2919, 2924, 2925, 2912, 2922, 2925, 2913, 2914,
+     2928, 2922, 2930, 2928, 2929, 2929, 2931, 2932, 2933, 2917,
+
+     2934, 2931, 2927, 2935, 2935, 2936, 2938, 2939, 2983, 2930,
+     2930, 2944, 2983, 2937, 2934, 2932, 2937, 2940, 2933, 2936,
+     2938, 2954, 2942,    0, 2937, 2940, 2939, 2942, 2942, 2943,
+     2944, 2945, 2945, 2953, 2943, 2943, 2946, 2946, 2947, 2947,
+     2948, 2948, 2949, 2949, 2950, 2950, 2952, 2954, 2955, 2956,
+     2957, 2952, 2958, 2953, 2956, 2959, 2960, 2958, 2961, 2963,
+     2963, 2967, 2955,    0, 2959, 2964, 2964, 2965, 2966, 2957,
+     2965, 2969, 2969, 2970, 2966, 2980, 2960, 2975, 2961, 2967,
+     2970, 2971, 2971, 2972, 2974, 2974, 2975, 2976, 2972, 2977,
+     2978, 2981, 2981, 2980, 2982, 2982, 2976, 2984, 2977, 2978,
+
+     2985, 2986, 2987, 2988, 2991, 2990, 2984, 2992, 2988, 2988,
+     2996, 2992, 2986, 2991, 2998, 2996, 3001, 2987, 2990, 2985,
+     2997, 2997, 3000, 3000, 3002, 3003, 3005, 3005, 2998, 3006,
+     3001, 3011, 3007, 3013, 3012, 3015, 3018, 3020, 3006, 3012,
+     3016,    0, 3013, 3003, 3007, 3022, 3016, 3023, 3018, 3002,
+     3022, 3025, 3023, 3024, 3024, 3015, 3011, 3027, 3020, 3028,
+     3025, 3029, 3027, 3030, 3030, 3032, 3032, 3030, 3033, 3033,
+     3034, 3034, 3028, 3035, 3036, 3029, 3037,    0, 3038, 3040,
+     3044, 3041, 3035, 3038, 3042, 3040, 3041, 3043, 3043, 3042,
+     3045, 3046, 3047, 3048, 3036, 3037, 3050, 3047, 3044, 3049,
+
+     3051, 3051, 3045, 3053, 3054, 3049, 3057, 3053, 3055, 3054,
+     3061, 3048, 3046, 3055, 3056, 3056, 3058, 3059, 3063, 3063,
+     3065, 3050, 3066, 3067, 3068, 3057, 3070, 3071, 3068, 3069,
+     3061, 3058, 3059, 3065, 3073, 3066, 3067, 3072, 3069, 3073,
+     3074, 3076, 3070, 3075, 3075, 3072, 3071, 3077, 3078, 3080,
+     3076, 3079, 3079, 3083, 3087, 3084, 3085, 3085, 3083, 3083,
+     3074, 3084, 3089, 3089, 3091, 3077, 3092, 3093, 3080, 3094,
+     3099, 3095, 3093, 3102, 3078, 3087, 3095, 3098, 3098, 3100,
+     3091, 3101, 3092, 3103, 3106, 3094, 3107, 3101, 3100, 3110,
+     3099, 3105, 3105, 3108, 3108, 3110, 3102, 3112, 3106, 3114,
+
+     3113, 3116, 3103, 3119, 3114, 3107, 3113, 3117, 3117, 3118,
+     3118, 3120, 3121, 3121, 3122, 3123, 3124, 3112, 3119, 3126,
+     3125, 3127, 3128, 3116, 3123, 3122, 3125, 3129, 3129, 3130,
+     3138, 3120, 3121, 3127, 3131, 3137, 3124, 3131, 3126, 3143,
+     3132,    0, 3128, 3132, 3130, 3133, 3133, 3137, 3139, 3142,
+     3138, 3140, 3140, 3141, 3139, 3142, 3141, 3143, 3145, 3146,
+     3146, 3147, 3148, 3145, 3149, 3150, 3147, 3151, 3151, 3154,
+     3149, 3155, 3153, 3156, 3157, 3157, 3158, 3159,    0, 3160,
+     3165, 3148, 3150, 3150, 3153, 3165, 3156, 3154, 3160, 3162,
+     3162, 3163, 3163, 3159, 3166, 3158, 3155, 3164, 3164, 3167,
+
+     3168, 3168, 3169, 3169, 3167, 3170, 3170, 3172, 3166, 3171,
+     3171, 3173, 3174, 3178, 3175, 3177, 3177, 3182, 3174, 3175,
+     3172, 3180, 3180, 3184, 3185, 3186, 3187, 3188, 3188, 3178,
+     3190, 3190, 3191, 3192, 3194, 3193, 3182, 3173, 3195, 3196,
+     3196, 3197, 3197, 3199, 3186, 3184, 3185, 3195, 3187, 3193,
+     3200, 3201, 3192, 3202, 3194, 3203, 3200, 3206, 3191,    0,
+     3203, 3199, 3207, 3207, 3209, 3209, 3211, 3213, 3210, 3212,
+     3220, 3201, 3202, 3210, 3214, 3212, 3215, 3215, 3206, 3213,
+     3211, 3216, 3214, 3218, 3219, 3221, 3216, 3218, 3222, 3219,
+     3220, 3223, 3224, 3222, 3226, 3227, 3228, 3229, 3224, 3232,
+
+     3231, 3257, 3226, 3223, 3233, 3221, 3234, 3235, 3237, 3238,
+     3242, 3244, 3235, 3237, 3227, 3232, 3228, 3229, 3231, 3239,
+     3257, 3233, 3233, 3240, 3244, 3239,    0, 3234, 3240, 3238,
+     3242, 3243, 3248, 3248, 3243, 3249, 3249, 3250, 3255, 3255,
+     3256, 3250, 3258, 3258, 3260, 3256, 3262, 3262, 3263, 3263,
+     3267, 3263, 3264, 3264, 3267, 3264, 3265, 3265, 3272, 3260,
+     3266, 3266, 3269, 3266, 3270, 3271, 3271, 3269, 3273, 3276,
+     3276, 3277, 3278, 3270, 3279, 3281, 3272, 3280, 3280, 3279,
+     3284, 3285, 3273, 3286, 3287, 3288, 3290, 3286, 3285, 3291,
+     3293, 3277, 3278, 3287, 3291, 3281, 3292, 3292, 3297, 3293,
+
+     3288, 3294, 3294, 3302, 3290, 3284, 3295, 3295, 3296, 3296,
+     3298, 3299, 3300, 3297, 3303, 3298, 3301, 3300, 3300, 3304,
+     3299, 3305, 3301, 3299, 3307, 3306, 3305, 3309, 3302, 3303,
+     3306, 3308, 3308, 3309, 3313, 3310, 3311, 3311, 3312, 3312,
+     3304, 3310, 3314, 3307, 3317, 3317, 3320, 3314, 3322, 3313,
+     3319, 3319, 3324, 3324, 3333, 3320, 3325, 3325, 3326, 3326,
+     3327, 3327, 3329, 3329, 3330, 3330, 3322, 3331, 3331, 3332,
+     3332, 3339, 3335, 3336, 3336, 3337, 3337, 3338, 3340, 3345,
+     3333, 3335, 3343, 3339, 3342, 3342, 3338, 3344, 3344, 3346,
+     3351, 3347, 3348, 3348, 3345, 3349, 3349, 3355, 3340, 3352,
+
+     3352, 3343, 3346, 3347, 3356, 3351, 3357, 3356, 3358, 3358,
+     3359, 3361, 3362, 3363, 3361, 3355, 3364, 3365, 3362, 3366,
+     3369, 3364, 3367, 3377, 3370, 3373, 3369, 3363, 3359, 3373,
+     3374, 3378, 3357, 3370, 3387, 3391, 3365, 3366, 3367, 3387,
+     3388, 3392, 3392, 3388, 3397, 3374, 3393, 3393, 3391, 3377,
+     3398, 3378, 3395, 3395, 3399, 3400, 3402, 3404, 3399, 3398,
+     3405, 3406, 3407, 3408, 3407, 3411, 3406, 3397, 3409, 3409,
+     3402, 3405, 3410, 3412, 3413, 3400, 3414, 3415, 3408, 3416,
+     3404, 3417, 3418, 3419, 3411, 3410, 3421, 3418, 3416, 3420,
+     3413, 3412, 3415, 3417, 3420, 3422, 3422, 3423, 3424, 3428,
+
+     3429, 3414, 3431, 3424, 3419, 3421, 3430, 3430, 3432, 3432,
+     3436, 3431, 3437, 3428, 3433, 3433, 3441, 3423, 3434, 3434,
+     3429, 3435, 3435, 3438, 3442, 3439, 3438, 3453, 3440, 3436,
+     3439, 3443, 3437, 3440, 3444, 3445, 3448, 3443, 3446, 3442,
+     3454, 3441, 3453, 3446, 3447, 3447, 3457, 3445, 3444, 3449,
+     3449, 3450, 3450, 3452, 3452, 3459, 3448, 3455, 3455, 3454,
+     3464, 3457, 3462, 3462, 3463, 3463, 3465, 3468, 3464, 3466,
+     3467, 3469, 3470, 3459, 3471, 3466, 3467, 3472, 3472, 3471,
+     3478, 3468, 3474, 3474, 3469, 3465, 3479, 3484, 3481, 3482,
+     3485, 3470, 3486, 3482, 3489, 3485, 3487, 3488, 3490, 3491,
+
+     3495, 3478, 3481, 3490, 3491, 3496, 3479, 3484, 3497, 3487,
+     3488, 3486, 3500, 3489, 3492, 3492, 3498, 3498, 3500, 3499,
+     3495, 3501, 3501, 3496, 3499, 3502, 3503, 3497, 3504, 3505,
+     3502, 3503, 3506, 3504, 3508, 3508, 3509, 3513, 3506, 3510,
+     3510, 3509, 3512, 3514, 3515, 3516, 3512, 3517, 3505, 3518,
+     3514, 3526, 3519, 3517, 3521, 3521, 3513, 3523, 3523, 3527,
+     3524, 3525, 3528, 3515, 3516, 3519, 3525, 3531, 3518, 3524,
+     3526, 3530, 3524, 3529, 3529, 3528, 3530, 3533, 3527, 3535,
+     3531, 3534, 3534, 3536, 3536, 3537, 3537, 3538, 3539, 3540,
+     3541, 3541, 3538,    0, 3542, 3539, 3544, 3544, 3535, 3542,
+
+     3543, 3547, 3543, 3533, 3545, 3546, 3549, 3552, 3540, 3548,
+     3556, 3545, 3546, 3554, 3548, 3551, 3551, 3555, 3554, 3557,
+     3547, 3561, 3555, 3558, 3558, 3549, 3552, 3560, 3560, 3556,
+     3562, 3563, 3563, 3564, 3564, 3565, 3567, 3567, 3557, 3569,
+     3561, 3575, 3565, 3568, 3568, 3571, 3569, 3574, 3576, 3562,
+     3571,    0, 3574, 3577, 3577, 3578, 3578,    0,    0,    0,
+     3575,    0,    0,    0,    0,    0,    0, 3576, 3582, 3582,
+     3582, 3582, 3582, 3582, 3582, 3583, 3583, 3583, 3583, 3583,
+     3583, 3583, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3585,
+     3585, 3585, 3585, 3585, 3585, 3585, 3586, 3586, 3586, 3586,
+
+     3586, 3586, 3586, 3587, 3587, 3587, 3587, 3587, 3587, 3587,
+     3588, 3588, 3588, 3588, 3588, 3588, 3588, 3590, 3590,    0,
+     3590, 3590, 3590, 3590, 3591, 3591,    0,    0,    0, 3591,
+     3591, 3592, 3592,    0,    0, 3592,    0, 3592, 3593,    0,
+        0,    0,    0,    0, 3593, 3594, 3594,    0,    0,    0,
+     3594, 3594, 3595,    0,    0,    0,    0,    0, 3595, 3596,
+     3596,    0, 3596, 3596, 3596, 3596, 3597,    0,    0,    0,
+        0,    0, 3597, 3598, 3598,    0,    0,    0, 3598, 3598,
+     3599, 3599,    0, 3599, 3599, 3599, 3599, 3581, 3581, 3581,
+     3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581,
+
+     3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581,
+     3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581,
+     3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -3273,7 +3292,7 @@ static void config_start_include(const char* filename, int toplevel)
        cfg_parser->filename = nm;
        cfg_parser->line = 1;
        inc_toplevel = toplevel;
-       yy_switch_to_buffer(yy_create_buffer(input, YY_BUF_SIZE));
+       yy_switch_to_buffer(yy_create_buffer(input,YY_BUF_SIZE));
 }
 
 static void config_start_include_glob(const char* filename, int toplevel)
@@ -3343,12 +3362,11 @@ static void config_end_include(void)
 #define yy_set_bol(at_bol) \
         { \
                if ( ! yy_current_buffer ) \
-                       yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+                       yy_current_buffer = yy_create_buffer(yyin,YY_BUF_SIZE ); \
                yy_current_buffer->yy_ch_buf[0] = ((at_bol)?'\n':' '); \
         }
 #endif
 
-#line 3349 "<stdout>"
 #define YY_NO_INPUT 1
 #line 191 "./util/configlexer.lex"
 #ifndef YY_NO_UNPUT
@@ -3357,9 +3375,8 @@ static void config_end_include(void)
 #ifndef YY_NO_INPUT
 #define YY_NO_INPUT 1
 #endif
-#line 3358 "<stdout>"
 
-#line 3360 "<stdout>"
+#line 3378 "<stdout>"
 
 #define INITIAL 0
 #define quotedstring 1
@@ -3382,36 +3399,36 @@ static void config_end_include(void)
 #define YY_EXTRA_TYPE void *
 #endif
 
-static int yy_init_globals ( void );
+static int yy_init_globals (void );
 
 /* Accessor methods to globals.
    These are made visible to non-reentrant scanners for convenience. */
 
-int yylex_destroy ( void );
+int yylex_destroy (void );
 
-int yyget_debug ( void );
+int yyget_debug (void );
 
-void yyset_debug ( int debug_flag  );
+void yyset_debug (int debug_flag  );
 
-YY_EXTRA_TYPE yyget_extra ( void );
+YY_EXTRA_TYPE yyget_extra (void );
 
-void yyset_extra ( YY_EXTRA_TYPE user_defined  );
+void yyset_extra (YY_EXTRA_TYPE user_defined  );
 
-FILE *yyget_in ( void );
+FILE *yyget_in (void );
 
-void yyset_in  ( FILE * _in_str  );
+void yyset_in  (FILE * in_str  );
 
-FILE *yyget_out ( void );
+FILE *yyget_out (void );
 
-void yyset_out  ( FILE * _out_str  );
+void yyset_out  (FILE * out_str  );
 
-                       int yyget_leng ( void );
+yy_size_t yyget_leng (void );
 
-char *yyget_text ( void );
+char *yyget_text (void );
 
-int yyget_lineno ( void );
+int yyget_lineno (void );
 
-void yyset_lineno ( int _line_number  );
+void yyset_lineno (int line_number  );
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -3419,41 +3436,33 @@ void yyset_lineno ( int _line_number  );
 
 #ifndef YY_SKIP_YYWRAP
 #ifdef __cplusplus
-extern "C" int yywrap ( void );
+extern "C" int yywrap (void );
 #else
-extern int yywrap ( void );
+extern int yywrap (void );
 #endif
 #endif
 
-#ifndef YY_NO_UNPUT
-    
-#endif
-
 #ifndef yytext_ptr
-static void yy_flex_strncpy ( char *, const char *, int );
+static void yy_flex_strncpy (char *,yyconst char *,int );
 #endif
 
 #ifdef YY_NEED_STRLEN
-static int yy_flex_strlen ( const char * );
+static int yy_flex_strlen (yyconst char * );
 #endif
 
 #ifndef YY_NO_INPUT
+
 #ifdef __cplusplus
-static int yyinput ( void );
+static int yyinput (void );
 #else
-static int input ( void );
+static int input (void );
 #endif
 
 #endif
 
 /* Amount of stuff to slurp up with each read. */
 #ifndef YY_READ_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k */
-#define YY_READ_BUF_SIZE 16384
-#else
 #define YY_READ_BUF_SIZE 8192
-#endif /* __ia64__ */
 #endif
 
 /* Copy whatever the last rule matched to the standard output. */
@@ -3461,7 +3470,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 fwrite( yytext, yyleng, 1, yyout )
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -3472,7 +3481,7 @@ static int input ( void );
        if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
                { \
                int c = '*'; \
-               int n; \
+               yy_size_t n; \
                for ( n = 0; n < max_size && \
                             (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
                        buf[n] = (char) c; \
@@ -3485,7 +3494,7 @@ static int input ( void );
        else \
                { \
                errno=0; \
-               while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
+               while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
                        { \
                        if( errno != EINTR) \
                                { \
@@ -3540,7 +3549,7 @@ extern int yylex (void);
 
 /* Code executed at the end of each rule. */
 #ifndef YY_BREAK
-#define YY_BREAK /*LINTED*/break;
+#define YY_BREAK break;
 #endif
 
 #define YY_RULE_SETUP \
@@ -3550,10 +3559,14 @@ extern int yylex (void);
  */
 YY_DECL
 {
-       yy_state_type yy_current_state;
-       char *yy_cp, *yy_bp;
-       int yy_act;
+       register yy_state_type yy_current_state;
+       register char *yy_cp, *yy_bp;
+       register int yy_act;
     
+#line 211 "./util/configlexer.lex"
+
+#line 3567 "<stdout>"
+
        if ( !(yy_init) )
                {
                (yy_init) = 1;
@@ -3574,23 +3587,18 @@ YY_DECL
                if ( ! YY_CURRENT_BUFFER ) {
                        yyensure_buffer_stack ();
                        YY_CURRENT_BUFFER_LVALUE =
-                               yy_create_buffer( yyin, YY_BUF_SIZE );
+                               yy_create_buffer(yyin,YY_BUF_SIZE );
                }
 
-               yy_load_buffer_state(  );
+               yy_load_buffer_state( );
                }
 
-       {
-#line 211 "./util/configlexer.lex"
-
-#line 3584 "<stdout>"
-
-       while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
+       while ( 1 )             /* loops until end-of-file is reached */
                {
                (yy_more_len) = 0;
                if ( (yy_more_flag) )
                        {
-                       (yy_more_len) = (int) ((yy_c_buf_p) - (yytext_ptr));
+                       (yy_more_len) = (yy_c_buf_p) - (yytext_ptr);
                        (yy_more_flag) = 0;
                        }
                yy_cp = (yy_c_buf_p);
@@ -3607,7 +3615,7 @@ YY_DECL
 yy_match:
                do
                        {
-                       YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
+                       register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
                        if ( yy_accept[yy_current_state] )
                                {
                                (yy_last_accepting_state) = yy_current_state;
@@ -3616,13 +3624,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 >= 3565 )
-                                       yy_c = yy_meta[yy_c];
+                               if ( yy_current_state >= 3582 )
+                                       yy_c = yy_meta[(unsigned int) yy_c];
                                }
-                       yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
+                       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 6961 );
+               while ( yy_base[yy_current_state] != 6988 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -4602,501 +4610,501 @@ YY_RULE_SETUP
 case 191:
 YY_RULE_SETUP
 #line 405 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) }
+{ YDVAR(1, VAR_EDE_SERVE_EXPIRED) }
        YY_BREAK
 case 192:
 YY_RULE_SETUP
 #line 406 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FAKE_DSA) }
+{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) }
        YY_BREAK
 case 193:
 YY_RULE_SETUP
 #line 407 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FAKE_SHA1) }
+{ YDVAR(1, VAR_FAKE_DSA) }
        YY_BREAK
 case 194:
 YY_RULE_SETUP
 #line 408 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
+{ YDVAR(1, VAR_FAKE_SHA1) }
        YY_BREAK
 case 195:
 YY_RULE_SETUP
 #line 409 "./util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
+{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
        YY_BREAK
 case 196:
 YY_RULE_SETUP
 #line 410 "./util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
+{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
        YY_BREAK
 case 197:
 YY_RULE_SETUP
 #line 411 "./util/configlexer.lex"
-{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
+{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
        YY_BREAK
 case 198:
 YY_RULE_SETUP
 #line 412 "./util/configlexer.lex"
-{ 
-                                 YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
+{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
        YY_BREAK
 case 199:
 YY_RULE_SETUP
-#line 414 "./util/configlexer.lex"
-{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) }
+#line 413 "./util/configlexer.lex"
+{ 
+                                 YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
        YY_BREAK
 case 200:
 YY_RULE_SETUP
 #line 415 "./util/configlexer.lex"
-{ YDVAR(1, VAR_ZONEMD_CHECK) }
+{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) }
        YY_BREAK
 case 201:
 YY_RULE_SETUP
 #line 416 "./util/configlexer.lex"
-{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) }
+{ YDVAR(1, VAR_ZONEMD_CHECK) }
        YY_BREAK
 case 202:
 YY_RULE_SETUP
 #line 417 "./util/configlexer.lex"
-{ YDVAR(1, VAR_ADD_HOLDDOWN) }
+{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) }
        YY_BREAK
 case 203:
 YY_RULE_SETUP
 #line 418 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DEL_HOLDDOWN) }
+{ YDVAR(1, VAR_ADD_HOLDDOWN) }
        YY_BREAK
 case 204:
 YY_RULE_SETUP
 #line 419 "./util/configlexer.lex"
-{ YDVAR(1, VAR_KEEP_MISSING) }
+{ YDVAR(1, VAR_DEL_HOLDDOWN) }
        YY_BREAK
 case 205:
 YY_RULE_SETUP
 #line 420 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) }
+{ YDVAR(1, VAR_KEEP_MISSING) }
        YY_BREAK
 case 206:
 YY_RULE_SETUP
 #line 421 "./util/configlexer.lex"
-{ YDVAR(1, VAR_USE_SYSLOG) }
+{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) }
        YY_BREAK
 case 207:
 YY_RULE_SETUP
 #line 422 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_IDENTITY) }
+{ YDVAR(1, VAR_USE_SYSLOG) }
        YY_BREAK
 case 208:
 YY_RULE_SETUP
 #line 423 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_TIME_ASCII) }
+{ YDVAR(1, VAR_LOG_IDENTITY) }
        YY_BREAK
 case 209:
 YY_RULE_SETUP
 #line 424 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_QUERIES) }
+{ YDVAR(1, VAR_LOG_TIME_ASCII) }
        YY_BREAK
 case 210:
 YY_RULE_SETUP
 #line 425 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_REPLIES) }
+{ YDVAR(1, VAR_LOG_QUERIES) }
        YY_BREAK
 case 211:
 YY_RULE_SETUP
 #line 426 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) }
+{ YDVAR(1, VAR_LOG_REPLIES) }
        YY_BREAK
 case 212:
 YY_RULE_SETUP
 #line 427 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) }
+{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) }
        YY_BREAK
 case 213:
 YY_RULE_SETUP
 #line 428 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_SERVFAIL) }
+{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) }
        YY_BREAK
 case 214:
 YY_RULE_SETUP
 #line 429 "./util/configlexer.lex"
-{ YDVAR(2, VAR_LOCAL_ZONE) }
+{ YDVAR(1, VAR_LOG_SERVFAIL) }
        YY_BREAK
 case 215:
 YY_RULE_SETUP
 #line 430 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA) }
+{ YDVAR(2, VAR_LOCAL_ZONE) }
        YY_BREAK
 case 216:
 YY_RULE_SETUP
 #line 431 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
+{ YDVAR(1, VAR_LOCAL_DATA) }
        YY_BREAK
 case 217:
 YY_RULE_SETUP
 #line 432 "./util/configlexer.lex"
-{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) }
+{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
        YY_BREAK
 case 218:
 YY_RULE_SETUP
 #line 433 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INSECURE_LAN_ZONES) }
+{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) }
        YY_BREAK
 case 219:
 YY_RULE_SETUP
 #line 434 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
+{ YDVAR(1, VAR_INSECURE_LAN_ZONES) }
        YY_BREAK
 case 220:
 YY_RULE_SETUP
 #line 435 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
+{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
        YY_BREAK
 case 221:
 YY_RULE_SETUP
 #line 436 "./util/configlexer.lex"
-{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
+{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
        YY_BREAK
 case 222:
 YY_RULE_SETUP
 #line 437 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SHM_ENABLE) }
+{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
        YY_BREAK
 case 223:
 YY_RULE_SETUP
 #line 438 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SHM_KEY) }
+{ YDVAR(1, VAR_SHM_ENABLE) }
        YY_BREAK
 case 224:
 YY_RULE_SETUP
 #line 439 "./util/configlexer.lex"
-{ YDVAR(0, VAR_REMOTE_CONTROL) }
+{ YDVAR(1, VAR_SHM_KEY) }
        YY_BREAK
 case 225:
 YY_RULE_SETUP
 #line 440 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_ENABLE) }
+{ YDVAR(0, VAR_REMOTE_CONTROL) }
        YY_BREAK
 case 226:
 YY_RULE_SETUP
 #line 441 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_INTERFACE) }
+{ YDVAR(1, VAR_CONTROL_ENABLE) }
        YY_BREAK
 case 227:
 YY_RULE_SETUP
 #line 442 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_PORT) }
+{ YDVAR(1, VAR_CONTROL_INTERFACE) }
        YY_BREAK
 case 228:
 YY_RULE_SETUP
 #line 443 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_USE_CERT) }
+{ YDVAR(1, VAR_CONTROL_PORT) }
        YY_BREAK
 case 229:
 YY_RULE_SETUP
 #line 444 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_KEY_FILE) }
+{ YDVAR(1, VAR_CONTROL_USE_CERT) }
        YY_BREAK
 case 230:
 YY_RULE_SETUP
 #line 445 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_CERT_FILE) }
+{ YDVAR(1, VAR_SERVER_KEY_FILE) }
        YY_BREAK
 case 231:
 YY_RULE_SETUP
 #line 446 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
+{ YDVAR(1, VAR_SERVER_CERT_FILE) }
        YY_BREAK
 case 232:
 YY_RULE_SETUP
 #line 447 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
+{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
        YY_BREAK
 case 233:
 YY_RULE_SETUP
 #line 448 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PYTHON_SCRIPT) }
+{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
        YY_BREAK
 case 234:
 YY_RULE_SETUP
 #line 449 "./util/configlexer.lex"
-{ YDVAR(0, VAR_PYTHON) }
+{ YDVAR(1, VAR_PYTHON_SCRIPT) }
        YY_BREAK
 case 235:
 YY_RULE_SETUP
 #line 450 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DYNLIB_FILE) }
+{ YDVAR(0, VAR_PYTHON) }
        YY_BREAK
 case 236:
 YY_RULE_SETUP
 #line 451 "./util/configlexer.lex"
-{ YDVAR(0, VAR_DYNLIB) }
+{ YDVAR(1, VAR_DYNLIB_FILE) }
        YY_BREAK
 case 237:
 YY_RULE_SETUP
 #line 452 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DOMAIN_INSECURE) }
+{ YDVAR(0, VAR_DYNLIB) }
        YY_BREAK
 case 238:
 YY_RULE_SETUP
 #line 453 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MINIMAL_RESPONSES) }
+{ YDVAR(1, VAR_DOMAIN_INSECURE) }
        YY_BREAK
 case 239:
 YY_RULE_SETUP
 #line 454 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RRSET_ROUNDROBIN) }
+{ YDVAR(1, VAR_MINIMAL_RESPONSES) }
        YY_BREAK
 case 240:
 YY_RULE_SETUP
 #line 455 "./util/configlexer.lex"
-{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) }
+{ YDVAR(1, VAR_RRSET_ROUNDROBIN) }
        YY_BREAK
 case 241:
 YY_RULE_SETUP
 #line 456 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_UDP_SIZE) }
+{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) }
        YY_BREAK
 case 242:
 YY_RULE_SETUP
 #line 457 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_PREFIX) }
+{ YDVAR(1, VAR_MAX_UDP_SIZE) }
        YY_BREAK
 case 243:
 YY_RULE_SETUP
 #line 458 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_SYNTHALL) }
+{ YDVAR(1, VAR_DNS64_PREFIX) }
        YY_BREAK
 case 244:
 YY_RULE_SETUP
 #line 459 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) }
+{ YDVAR(1, VAR_DNS64_SYNTHALL) }
        YY_BREAK
 case 245:
 YY_RULE_SETUP
 #line 460 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DEFINE_TAG) }
+{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) }
        YY_BREAK
 case 246:
 YY_RULE_SETUP
 #line 461 "./util/configlexer.lex"
-{ YDVAR(2, VAR_LOCAL_ZONE_TAG) }
+{ YDVAR(1, VAR_DEFINE_TAG) }
        YY_BREAK
 case 247:
 YY_RULE_SETUP
 #line 462 "./util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) }
+{ YDVAR(2, VAR_LOCAL_ZONE_TAG) }
        YY_BREAK
 case 248:
 YY_RULE_SETUP
 #line 463 "./util/configlexer.lex"
-{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) }
+{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) }
        YY_BREAK
 case 249:
 YY_RULE_SETUP
 #line 464 "./util/configlexer.lex"
-{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) }
+{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) }
        YY_BREAK
 case 250:
 YY_RULE_SETUP
 #line 465 "./util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) }
+{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) }
        YY_BREAK
 case 251:
 YY_RULE_SETUP
 #line 466 "./util/configlexer.lex"
-{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) }
+{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) }
        YY_BREAK
 case 252:
 YY_RULE_SETUP
 #line 467 "./util/configlexer.lex"
-{ YDVAR(0, VAR_DNSTAP) }
+{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) }
        YY_BREAK
 case 253:
 YY_RULE_SETUP
 #line 468 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_ENABLE) }
+{ YDVAR(0, VAR_DNSTAP) }
        YY_BREAK
 case 254:
 YY_RULE_SETUP
 #line 469 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) }
+{ YDVAR(1, VAR_DNSTAP_ENABLE) }
        YY_BREAK
 case 255:
 YY_RULE_SETUP
 #line 470 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
+{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) }
        YY_BREAK
 case 256:
 YY_RULE_SETUP
 #line 471 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_IP) }
+{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
        YY_BREAK
 case 257:
 YY_RULE_SETUP
 #line 472 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_TLS) }
+{ YDVAR(1, VAR_DNSTAP_IP) }
        YY_BREAK
 case 258:
 YY_RULE_SETUP
 #line 473 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) }
+{ YDVAR(1, VAR_DNSTAP_TLS) }
        YY_BREAK
 case 259:
 YY_RULE_SETUP
 #line 474 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) }
+{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) }
        YY_BREAK
 case 260:
 YY_RULE_SETUP
 #line 475 "./util/configlexer.lex"
-{
-               YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) }
+{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) }
        YY_BREAK
 case 261:
 YY_RULE_SETUP
-#line 477 "./util/configlexer.lex"
+#line 476 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) }
+               YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) }
        YY_BREAK
 case 262:
 YY_RULE_SETUP
-#line 479 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) }
+#line 478 "./util/configlexer.lex"
+{
+               YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) }
        YY_BREAK
 case 263:
 YY_RULE_SETUP
 #line 480 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) }
+{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) }
        YY_BREAK
 case 264:
 YY_RULE_SETUP
 #line 481 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_IDENTITY) }
+{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) }
        YY_BREAK
 case 265:
 YY_RULE_SETUP
 #line 482 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_VERSION) }
+{ YDVAR(1, VAR_DNSTAP_IDENTITY) }
        YY_BREAK
 case 266:
 YY_RULE_SETUP
 #line 483 "./util/configlexer.lex"
-{
-               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) }
+{ YDVAR(1, VAR_DNSTAP_VERSION) }
        YY_BREAK
 case 267:
 YY_RULE_SETUP
-#line 485 "./util/configlexer.lex"
+#line 484 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) }
        YY_BREAK
 case 268:
 YY_RULE_SETUP
-#line 487 "./util/configlexer.lex"
+#line 486 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) }
        YY_BREAK
 case 269:
 YY_RULE_SETUP
-#line 489 "./util/configlexer.lex"
+#line 488 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) }
        YY_BREAK
 case 270:
 YY_RULE_SETUP
-#line 491 "./util/configlexer.lex"
+#line 490 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) }
        YY_BREAK
 case 271:
 YY_RULE_SETUP
-#line 493 "./util/configlexer.lex"
+#line 492 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) }
        YY_BREAK
 case 272:
 YY_RULE_SETUP
-#line 495 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) }
+#line 494 "./util/configlexer.lex"
+{
+               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) }
        YY_BREAK
 case 273:
 YY_RULE_SETUP
 #line 496 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IP_RATELIMIT) }
+{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) }
        YY_BREAK
 case 274:
 YY_RULE_SETUP
 #line 497 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT) }
+{ YDVAR(1, VAR_IP_RATELIMIT) }
        YY_BREAK
 case 275:
 YY_RULE_SETUP
 #line 498 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) }
+{ YDVAR(1, VAR_RATELIMIT) }
        YY_BREAK
 case 276:
 YY_RULE_SETUP
 #line 499 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_SLABS) }
+{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) }
        YY_BREAK
 case 277:
 YY_RULE_SETUP
 #line 500 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) }
+{ YDVAR(1, VAR_RATELIMIT_SLABS) }
        YY_BREAK
 case 278:
 YY_RULE_SETUP
 #line 501 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_SIZE) }
+{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) }
        YY_BREAK
 case 279:
 YY_RULE_SETUP
 #line 502 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) }
+{ YDVAR(1, VAR_RATELIMIT_SIZE) }
        YY_BREAK
 case 280:
 YY_RULE_SETUP
 #line 503 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) }
+{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) }
        YY_BREAK
 case 281:
 YY_RULE_SETUP
 #line 504 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) }
+{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) }
        YY_BREAK
 case 282:
 YY_RULE_SETUP
 #line 505 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_FACTOR) }
+{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) }
        YY_BREAK
 case 283:
 YY_RULE_SETUP
 #line 506 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IP_RATELIMIT_BACKOFF) }
+{ YDVAR(1, VAR_RATELIMIT_FACTOR) }
        YY_BREAK
 case 284:
 YY_RULE_SETUP
 #line 507 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_BACKOFF) }
+{ YDVAR(1, VAR_IP_RATELIMIT_BACKOFF) }
        YY_BREAK
 case 285:
 YY_RULE_SETUP
 #line 508 "./util/configlexer.lex"
-{ YDVAR(1, VAR_OUTBOUND_MSG_RETRY) }
+{ YDVAR(1, VAR_RATELIMIT_BACKOFF) }
        YY_BREAK
 case 286:
 YY_RULE_SETUP
 #line 509 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOW_RTT) }
+{ YDVAR(1, VAR_OUTBOUND_MSG_RETRY) }
        YY_BREAK
 case 287:
 YY_RULE_SETUP
 #line 510 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FAST_SERVER_NUM) }
+{ YDVAR(1, VAR_LOW_RTT) }
        YY_BREAK
 case 288:
 YY_RULE_SETUP
 #line 511 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FAST_SERVER_PERMIL) }
+{ YDVAR(1, VAR_FAST_SERVER_NUM) }
        YY_BREAK
 case 289:
 YY_RULE_SETUP
@@ -5111,119 +5119,119 @@ YY_RULE_SETUP
 case 291:
 YY_RULE_SETUP
 #line 514 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RESPONSE_IP_TAG) }
+{ YDVAR(1, VAR_FAST_SERVER_PERMIL) }
        YY_BREAK
 case 292:
 YY_RULE_SETUP
 #line 515 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RESPONSE_IP) }
+{ YDVAR(2, VAR_RESPONSE_IP_TAG) }
        YY_BREAK
 case 293:
 YY_RULE_SETUP
 #line 516 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RESPONSE_IP_DATA) }
+{ YDVAR(2, VAR_RESPONSE_IP) }
        YY_BREAK
 case 294:
 YY_RULE_SETUP
 #line 517 "./util/configlexer.lex"
-{ YDVAR(0, VAR_DNSCRYPT) }
+{ YDVAR(2, VAR_RESPONSE_IP_DATA) }
        YY_BREAK
 case 295:
 YY_RULE_SETUP
 #line 518 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_ENABLE) }
+{ YDVAR(0, VAR_DNSCRYPT) }
        YY_BREAK
 case 296:
 YY_RULE_SETUP
 #line 519 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_PORT) }
+{ YDVAR(1, VAR_DNSCRYPT_ENABLE) }
        YY_BREAK
 case 297:
 YY_RULE_SETUP
 #line 520 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) }
+{ YDVAR(1, VAR_DNSCRYPT_PORT) }
        YY_BREAK
 case 298:
 YY_RULE_SETUP
 #line 521 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) }
+{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) }
        YY_BREAK
 case 299:
 YY_RULE_SETUP
 #line 522 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) }
+{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) }
        YY_BREAK
 case 300:
 YY_RULE_SETUP
 #line 523 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) }
+{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) }
        YY_BREAK
 case 301:
 YY_RULE_SETUP
 #line 524 "./util/configlexer.lex"
-{
-               YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) }
+{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) }
        YY_BREAK
 case 302:
 YY_RULE_SETUP
-#line 526 "./util/configlexer.lex"
+#line 525 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) }
+               YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) }
        YY_BREAK
 case 303:
 YY_RULE_SETUP
-#line 528 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) }
+#line 527 "./util/configlexer.lex"
+{
+               YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) }
        YY_BREAK
 case 304:
 YY_RULE_SETUP
 #line 529 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) }
+{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) }
        YY_BREAK
 case 305:
 YY_RULE_SETUP
 #line 530 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PAD_RESPONSES) }
+{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) }
        YY_BREAK
 case 306:
 YY_RULE_SETUP
 #line 531 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) }
+{ YDVAR(1, VAR_PAD_RESPONSES) }
        YY_BREAK
 case 307:
 YY_RULE_SETUP
 #line 532 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PAD_QUERIES) }
+{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) }
        YY_BREAK
 case 308:
 YY_RULE_SETUP
 #line 533 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) }
+{ YDVAR(1, VAR_PAD_QUERIES) }
        YY_BREAK
 case 309:
 YY_RULE_SETUP
 #line 534 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_ENABLED) }
+{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) }
        YY_BREAK
 case 310:
 YY_RULE_SETUP
 #line 535 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) }
+{ YDVAR(1, VAR_IPSECMOD_ENABLED) }
        YY_BREAK
 case 311:
 YY_RULE_SETUP
 #line 536 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_HOOK) }
+{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) }
        YY_BREAK
 case 312:
 YY_RULE_SETUP
 #line 537 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) }
+{ YDVAR(1, VAR_IPSECMOD_HOOK) }
        YY_BREAK
 case 313:
 YY_RULE_SETUP
 #line 538 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_WHITELIST) }
+{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) }
        YY_BREAK
 case 314:
 YY_RULE_SETUP
@@ -5233,118 +5241,128 @@ YY_RULE_SETUP
 case 315:
 YY_RULE_SETUP
 #line 540 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_STRICT) }
+{ YDVAR(1, VAR_IPSECMOD_WHITELIST) }
        YY_BREAK
 case 316:
 YY_RULE_SETUP
 #line 541 "./util/configlexer.lex"
-{ YDVAR(0, VAR_CACHEDB) }
+{ YDVAR(1, VAR_IPSECMOD_STRICT) }
        YY_BREAK
 case 317:
 YY_RULE_SETUP
 #line 542 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_BACKEND) }
+{ YDVAR(0, VAR_CACHEDB) }
        YY_BREAK
 case 318:
 YY_RULE_SETUP
 #line 543 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_SECRETSEED) }
+{ YDVAR(1, VAR_CACHEDB_BACKEND) }
        YY_BREAK
 case 319:
 YY_RULE_SETUP
 #line 544 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISHOST) }
+{ YDVAR(1, VAR_CACHEDB_SECRETSEED) }
        YY_BREAK
 case 320:
 YY_RULE_SETUP
 #line 545 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISPORT) }
+{ YDVAR(1, VAR_CACHEDB_REDISHOST) }
        YY_BREAK
 case 321:
 YY_RULE_SETUP
 #line 546 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) }
+{ YDVAR(1, VAR_CACHEDB_REDISPORT) }
        YY_BREAK
 case 322:
 YY_RULE_SETUP
 #line 547 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) }
+{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) }
        YY_BREAK
 case 323:
 YY_RULE_SETUP
 #line 548 "./util/configlexer.lex"
-{ YDVAR(0, VAR_IPSET) }
+{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) }
        YY_BREAK
 case 324:
 YY_RULE_SETUP
 #line 549 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSET_NAME_V4) }
+{ YDVAR(0, VAR_IPSET) }
        YY_BREAK
 case 325:
 YY_RULE_SETUP
 #line 550 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSET_NAME_V6) }
+{ YDVAR(1, VAR_IPSET_NAME_V4) }
        YY_BREAK
 case 326:
 YY_RULE_SETUP
 #line 551 "./util/configlexer.lex"
-{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) }
+{ YDVAR(1, VAR_IPSET_NAME_V6) }
        YY_BREAK
 case 327:
 YY_RULE_SETUP
 #line 552 "./util/configlexer.lex"
-{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) }
+{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) }
        YY_BREAK
 case 328:
 YY_RULE_SETUP
 #line 553 "./util/configlexer.lex"
-{ YDVAR(2, VAR_EDNS_CLIENT_STRING) }
+{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) }
        YY_BREAK
 case 329:
 YY_RULE_SETUP
 #line 554 "./util/configlexer.lex"
-{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) }
+{ YDVAR(2, VAR_EDNS_CLIENT_STRING) }
        YY_BREAK
 case 330:
 YY_RULE_SETUP
 #line 555 "./util/configlexer.lex"
-{ YDVAR(1, VAR_NSID ) }
+{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) }
        YY_BREAK
 case 331:
-/* rule 331 can match eol */
 YY_RULE_SETUP
 #line 556 "./util/configlexer.lex"
+{ YDVAR(1, VAR_NSID ) }
+       YY_BREAK
+case 332:
+YY_RULE_SETUP
+#line 557 "./util/configlexer.lex"
+{ YDVAR(1, VAR_EDE ) }
+       YY_BREAK
+case 333:
+/* rule 333 can match eol */
+YY_RULE_SETUP
+#line 558 "./util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++; }
        YY_BREAK
 /* Quoted strings. Strip leading and ending quotes */
-case 332:
+case 334:
 YY_RULE_SETUP
-#line 559 "./util/configlexer.lex"
+#line 561 "./util/configlexer.lex"
 { BEGIN(quotedstring); LEXOUT(("QS ")); }
        YY_BREAK
 case YY_STATE_EOF(quotedstring):
-#line 560 "./util/configlexer.lex"
+#line 562 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 333:
+case 335:
 YY_RULE_SETUP
-#line 565 "./util/configlexer.lex"
+#line 567 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 334:
-/* rule 334 can match eol */
+case 336:
+/* rule 336 can match eol */
 YY_RULE_SETUP
-#line 566 "./util/configlexer.lex"
+#line 568 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end \""); 
                          cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 335:
+case 337:
 YY_RULE_SETUP
-#line 568 "./util/configlexer.lex"
+#line 570 "./util/configlexer.lex"
 {
         LEXOUT(("QE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -5357,34 +5375,34 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* Single Quoted strings. Strip leading and ending quotes */
-case 336:
+case 338:
 YY_RULE_SETUP
-#line 580 "./util/configlexer.lex"
+#line 582 "./util/configlexer.lex"
 { BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
        YY_BREAK
 case YY_STATE_EOF(singlequotedstr):
-#line 581 "./util/configlexer.lex"
+#line 583 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 337:
+case 339:
 YY_RULE_SETUP
-#line 586 "./util/configlexer.lex"
+#line 588 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 338:
-/* rule 338 can match eol */
+case 340:
+/* rule 340 can match eol */
 YY_RULE_SETUP
-#line 587 "./util/configlexer.lex"
+#line 589 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end '"); 
                             cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 339:
+case 341:
 YY_RULE_SETUP
-#line 589 "./util/configlexer.lex"
+#line 591 "./util/configlexer.lex"
 {
         LEXOUT(("SQE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -5397,38 +5415,38 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* include: directive */
-case 340:
+case 342:
 YY_RULE_SETUP
-#line 601 "./util/configlexer.lex"
+#line 603 "./util/configlexer.lex"
 { 
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
        YY_BREAK
 case YY_STATE_EOF(include):
-#line 603 "./util/configlexer.lex"
+#line 605 "./util/configlexer.lex"
 {
         yyerror("EOF inside include directive");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 341:
+case 343:
 YY_RULE_SETUP
-#line 607 "./util/configlexer.lex"
+#line 609 "./util/configlexer.lex"
 { LEXOUT(("ISP ")); /* ignore */ }
        YY_BREAK
-case 342:
-/* rule 342 can match eol */
+case 344:
+/* rule 344 can match eol */
 YY_RULE_SETUP
-#line 608 "./util/configlexer.lex"
+#line 610 "./util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
-case 343:
+case 345:
 YY_RULE_SETUP
-#line 609 "./util/configlexer.lex"
+#line 611 "./util/configlexer.lex"
 { LEXOUT(("IQS ")); BEGIN(include_quoted); }
        YY_BREAK
-case 344:
+case 346:
 YY_RULE_SETUP
-#line 610 "./util/configlexer.lex"
+#line 612 "./util/configlexer.lex"
 {
        LEXOUT(("Iunquotedstr(%s) ", yytext));
        config_start_include_glob(yytext, 0);
@@ -5436,27 +5454,27 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_quoted):
-#line 615 "./util/configlexer.lex"
+#line 617 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 345:
+case 347:
 YY_RULE_SETUP
-#line 619 "./util/configlexer.lex"
+#line 621 "./util/configlexer.lex"
 { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 346:
-/* rule 346 can match eol */
+case 348:
+/* rule 348 can match eol */
 YY_RULE_SETUP
-#line 620 "./util/configlexer.lex"
+#line 622 "./util/configlexer.lex"
 { yyerror("newline before \" in include name"); 
                                  cfg_parser->line++; BEGIN(inc_prev); }
        YY_BREAK
-case 347:
+case 349:
 YY_RULE_SETUP
-#line 622 "./util/configlexer.lex"
+#line 624 "./util/configlexer.lex"
 {
        LEXOUT(("IQE "));
        yytext[yyleng - 1] = '\0';
@@ -5466,7 +5484,7 @@ YY_RULE_SETUP
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(val):
-#line 628 "./util/configlexer.lex"
+#line 630 "./util/configlexer.lex"
 {
        LEXOUT(("LEXEOF "));
        yy_set_bol(1); /* Set beginning of line, so "^" rules match.  */
@@ -5481,39 +5499,39 @@ case YY_STATE_EOF(val):
 }
        YY_BREAK
 /* include-toplevel: directive */
-case 348:
+case 350:
 YY_RULE_SETUP
-#line 642 "./util/configlexer.lex"
+#line 644 "./util/configlexer.lex"
 {
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel);
 }
        YY_BREAK
 case YY_STATE_EOF(include_toplevel):
-#line 645 "./util/configlexer.lex"
+#line 647 "./util/configlexer.lex"
 {
        yyerror("EOF inside include_toplevel directive");
        BEGIN(inc_prev);
 }
        YY_BREAK
-case 349:
+case 351:
 YY_RULE_SETUP
-#line 649 "./util/configlexer.lex"
+#line 651 "./util/configlexer.lex"
 { LEXOUT(("ITSP ")); /* ignore */ }
        YY_BREAK
-case 350:
-/* rule 350 can match eol */
+case 352:
+/* rule 352 can match eol */
 YY_RULE_SETUP
-#line 650 "./util/configlexer.lex"
+#line 652 "./util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++; }
        YY_BREAK
-case 351:
+case 353:
 YY_RULE_SETUP
-#line 651 "./util/configlexer.lex"
+#line 653 "./util/configlexer.lex"
 { LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); }
        YY_BREAK
-case 352:
+case 354:
 YY_RULE_SETUP
-#line 652 "./util/configlexer.lex"
+#line 654 "./util/configlexer.lex"
 {
        LEXOUT(("ITunquotedstr(%s) ", yytext));
        config_start_include_glob(yytext, 1);
@@ -5522,29 +5540,29 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_toplevel_quoted):
-#line 658 "./util/configlexer.lex"
+#line 660 "./util/configlexer.lex"
 {
        yyerror("EOF inside quoted string");
        BEGIN(inc_prev);
 }
        YY_BREAK
-case 353:
+case 355:
 YY_RULE_SETUP
-#line 662 "./util/configlexer.lex"
+#line 664 "./util/configlexer.lex"
 { LEXOUT(("ITSTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 354:
-/* rule 354 can match eol */
+case 356:
+/* rule 356 can match eol */
 YY_RULE_SETUP
-#line 663 "./util/configlexer.lex"
+#line 665 "./util/configlexer.lex"
 {
        yyerror("newline before \" in include name");
        cfg_parser->line++; BEGIN(inc_prev);
 }
        YY_BREAK
-case 355:
+case 357:
 YY_RULE_SETUP
-#line 667 "./util/configlexer.lex"
+#line 669 "./util/configlexer.lex"
 {
        LEXOUT(("ITQE "));
        yytext[yyleng - 1] = '\0';
@@ -5553,33 +5571,33 @@ YY_RULE_SETUP
        return (VAR_FORCE_TOPLEVEL);
 }
        YY_BREAK
-case 356:
+case 358:
 YY_RULE_SETUP
-#line 675 "./util/configlexer.lex"
+#line 677 "./util/configlexer.lex"
 { LEXOUT(("unquotedstr(%s) ", yytext)); 
                        if(--num_args == 0) { BEGIN(INITIAL); }
                        yylval.str = strdup(yytext); return STRING_ARG; }
        YY_BREAK
-case 357:
+case 359:
 YY_RULE_SETUP
-#line 679 "./util/configlexer.lex"
+#line 681 "./util/configlexer.lex"
 {
        ub_c_error_msg("unknown keyword '%s'", yytext);
        }
        YY_BREAK
-case 358:
+case 360:
 YY_RULE_SETUP
-#line 683 "./util/configlexer.lex"
+#line 685 "./util/configlexer.lex"
 {
        ub_c_error_msg("stray '%s'", yytext);
        }
        YY_BREAK
-case 359:
+case 361:
 YY_RULE_SETUP
-#line 687 "./util/configlexer.lex"
+#line 689 "./util/configlexer.lex"
 ECHO;
        YY_BREAK
-#line 5580 "<stdout>"
+#line 5599 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -5655,7 +5673,7 @@ ECHO;
                                {
                                (yy_did_buffer_switch_on_eof) = 0;
 
-                               if ( yywrap(  ) )
+                               if ( yywrap( ) )
                                        {
                                        /* Note: because we've taken care in
                                         * yy_get_next_buffer() to have set up
@@ -5708,7 +5726,6 @@ ECHO;
                        "fatal flex scanner internal error--no action found" );
        } /* end of action switch */
                } /* end of scanning one token */
-       } /* end of user's declarations */
 } /* end of yylex */
 
 /* yy_get_next_buffer - try to read in a new buffer
@@ -5720,9 +5737,9 @@ ECHO;
  */
 static int yy_get_next_buffer (void)
 {
-       char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
-       char *source = (yytext_ptr);
-       int number_to_move, i;
+       register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+       register char *source = (yytext_ptr);
+       register int number_to_move, i;
        int ret_val;
 
        if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
@@ -5751,7 +5768,7 @@ static int yy_get_next_buffer (void)
        /* Try to read more data. */
 
        /* First move last chars to start of buffer. */
-       number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
+       number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
 
        for ( i = 0; i < number_to_move; ++i )
                *(dest++) = *(source++);
@@ -5764,21 +5781,21 @@ static int yy_get_next_buffer (void)
 
        else
                {
-                       int num_to_read =
+                       yy_size_t num_to_read =
                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
 
                while ( num_to_read <= 0 )
                        { /* Not enough room in the buffer - grow it. */
 
                        /* just a shorter name for the current buffer */
-                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
+                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
 
                        int yy_c_buf_p_offset =
                                (int) ((yy_c_buf_p) - b->yy_ch_buf);
 
                        if ( b->yy_is_our_buffer )
                                {
-                               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;
@@ -5787,12 +5804,11 @@ static int yy_get_next_buffer (void)
 
                                b->yy_ch_buf = (char *)
                                        /* Include room in for 2 EOB chars. */
-                                       yyrealloc( (void *) b->yy_ch_buf,
-                                                        (yy_size_t) (b->yy_buf_size + 2)  );
+                                       yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
                                }
                        else
                                /* Can't grow it, we don't own it. */
-                               b->yy_ch_buf = NULL;
+                               b->yy_ch_buf = 0;
 
                        if ( ! b->yy_ch_buf )
                                YY_FATAL_ERROR(
@@ -5820,7 +5836,7 @@ static int yy_get_next_buffer (void)
                if ( number_to_move == YY_MORE_ADJ )
                        {
                        ret_val = EOB_ACT_END_OF_FILE;
-                       yyrestart( yyin  );
+                       yyrestart(yyin  );
                        }
 
                else
@@ -5834,15 +5850,12 @@ static int yy_get_next_buffer (void)
        else
                ret_val = EOB_ACT_CONTINUE_SCAN;
 
-       if (((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_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
-                       (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size  );
+               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()" );
-               /* "- 2" to take care of EOB's */
-               YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
        }
 
        (yy_n_chars) += number_to_move;
@@ -5858,14 +5871,14 @@ static int yy_get_next_buffer (void)
 
     static yy_state_type yy_get_previous_state (void)
 {
-       yy_state_type yy_current_state;
-       char *yy_cp;
+       register yy_state_type yy_current_state;
+       register char *yy_cp;
     
        yy_current_state = (yy_start);
 
        for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
                {
-               YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+               register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
                if ( yy_accept[yy_current_state] )
                        {
                        (yy_last_accepting_state) = yy_current_state;
@@ -5874,10 +5887,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 >= 3565 )
-                               yy_c = yy_meta[yy_c];
+                       if ( yy_current_state >= 3582 )
+                               yy_c = yy_meta[(unsigned int) yy_c];
                        }
-               yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
+               yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                }
 
        return yy_current_state;
@@ -5890,10 +5903,10 @@ static int yy_get_next_buffer (void)
  */
     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
 {
-       int yy_is_jam;
-       char *yy_cp = (yy_c_buf_p);
+       register int yy_is_jam;
+       register char *yy_cp = (yy_c_buf_p);
 
-       YY_CHAR yy_c = 1;
+       register YY_CHAR yy_c = 1;
        if ( yy_accept[yy_current_state] )
                {
                (yy_last_accepting_state) = yy_current_state;
@@ -5902,19 +5915,15 @@ 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 >= 3565 )
-                       yy_c = yy_meta[yy_c];
+               if ( yy_current_state >= 3582 )
+                       yy_c = yy_meta[(unsigned int) yy_c];
                }
-       yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 3564);
+       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+       yy_is_jam = (yy_current_state == 3581);
 
-               return yy_is_jam ? 0 : yy_current_state;
+       return yy_is_jam ? 0 : yy_current_state;
 }
 
-#ifndef YY_NO_UNPUT
-
-#endif
-
 #ifndef YY_NO_INPUT
 #ifdef __cplusplus
     static int yyinput (void)
@@ -5939,7 +5948,7 @@ static int yy_get_next_buffer (void)
 
                else
                        { /* need more input */
-                       int offset = (int) ((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(  ) )
@@ -5956,13 +5965,13 @@ static int yy_get_next_buffer (void)
                                         */
 
                                        /* Reset buffer status. */
-                                       yyrestart( yyin );
+                                       yyrestart(yyin );
 
                                        /*FALLTHROUGH*/
 
                                case EOB_ACT_END_OF_FILE:
                                        {
-                                       if ( yywrap(  ) )
+                                       if ( yywrap( ) )
                                                return 0;
 
                                        if ( ! (yy_did_buffer_switch_on_eof) )
@@ -6000,11 +6009,11 @@ static int yy_get_next_buffer (void)
        if ( ! YY_CURRENT_BUFFER ){
         yyensure_buffer_stack ();
                YY_CURRENT_BUFFER_LVALUE =
-            yy_create_buffer( yyin, YY_BUF_SIZE );
+            yy_create_buffer(yyin,YY_BUF_SIZE );
        }
 
-       yy_init_buffer( YY_CURRENT_BUFFER, input_file );
-       yy_load_buffer_state(  );
+       yy_init_buffer(YY_CURRENT_BUFFER,input_file );
+       yy_load_buffer_state( );
 }
 
 /** Switch to a different input buffer.
@@ -6032,7 +6041,7 @@ static int yy_get_next_buffer (void)
                }
 
        YY_CURRENT_BUFFER_LVALUE = new_buffer;
-       yy_load_buffer_state(  );
+       yy_load_buffer_state( );
 
        /* We don't actually know whether we did this switch during
         * EOF (yywrap()) processing, but the only time this flag
@@ -6060,7 +6069,7 @@ static void yy_load_buffer_state  (void)
 {
        YY_BUFFER_STATE b;
     
-       b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
+       b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
        if ( ! b )
                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
 
@@ -6069,13 +6078,13 @@ static void yy_load_buffer_state  (void)
        /* yy_ch_buf has to be 2 characters longer than the size given because
         * we need to put in 2 end-of-buffer characters.
         */
-       b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2)  );
+       b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2  );
        if ( ! b->yy_ch_buf )
                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
 
        b->yy_is_our_buffer = 1;
 
-       yy_init_buffer( b, file );
+       yy_init_buffer(b,file );
 
        return b;
 }
@@ -6094,11 +6103,15 @@ static void yy_load_buffer_state  (void)
                YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
 
        if ( b->yy_is_our_buffer )
-               yyfree( (void *) b->yy_ch_buf  );
+               yyfree((void *) b->yy_ch_buf  );
 
-       yyfree( (void *) b  );
+       yyfree((void *) b  );
 }
 
+#ifndef __cplusplus
+extern int isatty (int );
+#endif /* __cplusplus */
+    
 /* Initializes or reinitializes a buffer.
  * This function is sometimes called more than once on the same buffer,
  * such as during a yyrestart() or at EOF.
@@ -6108,7 +6121,7 @@ static void yy_load_buffer_state  (void)
 {
        int oerrno = errno;
     
-       yy_flush_buffer( b );
+       yy_flush_buffer(b );
 
        b->yy_input_file = file;
        b->yy_fill_buffer = 1;
@@ -6151,7 +6164,7 @@ static void yy_load_buffer_state  (void)
        b->yy_buffer_status = YY_BUFFER_NEW;
 
        if ( b == YY_CURRENT_BUFFER )
-               yy_load_buffer_state(  );
+               yy_load_buffer_state( );
 }
 
 /** Pushes the new state onto the stack. The new state becomes
@@ -6182,7 +6195,7 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
        YY_CURRENT_BUFFER_LVALUE = new_buffer;
 
        /* copied from yy_switch_to_buffer. */
-       yy_load_buffer_state(  );
+       yy_load_buffer_state( );
        (yy_did_buffer_switch_on_eof) = 1;
 }
 
@@ -6201,7 +6214,7 @@ void yypop_buffer_state (void)
                --(yy_buffer_stack_top);
 
        if (YY_CURRENT_BUFFER) {
-               yy_load_buffer_state(  );
+               yy_load_buffer_state( );
                (yy_did_buffer_switch_on_eof) = 1;
        }
 }
@@ -6219,15 +6232,15 @@ static void yyensure_buffer_stack (void)
                 * scanner will even need a stack. We use 2 instead of 1 to avoid an
                 * immediate realloc on the next call.
          */
-      num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
+               num_to_alloc = 1;
                (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
                                                                (num_to_alloc * sizeof(struct yy_buffer_state*)
                                                                );
                if ( ! (yy_buffer_stack) )
                        YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
-
+                                                                 
                memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-
+                               
                (yy_buffer_stack_max) = num_to_alloc;
                (yy_buffer_stack_top) = 0;
                return;
@@ -6236,7 +6249,7 @@ static void yyensure_buffer_stack (void)
        if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
 
                /* Increase the buffer to prepare for a possible push. */
-               yy_size_t grow_size = 8 /* arbitrary grow size */;
+               int grow_size = 8 /* arbitrary grow size */;
 
                num_to_alloc = (yy_buffer_stack_max) + grow_size;
                (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
@@ -6256,7 +6269,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 )
 {
@@ -6266,23 +6279,23 @@ 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 )  );
+       b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
        if ( ! b )
                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
 
-       b->yy_buf_size = (int) (size - 2);      /* "- 2" to take care of EOB's */
+       b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
        b->yy_buf_pos = b->yy_ch_buf = base;
        b->yy_is_our_buffer = 0;
-       b->yy_input_file = NULL;
+       b->yy_input_file = 0;
        b->yy_n_chars = b->yy_buf_size;
        b->yy_is_interactive = 0;
        b->yy_at_bol = 1;
        b->yy_fill_buffer = 0;
        b->yy_buffer_status = YY_BUFFER_NEW;
 
-       yy_switch_to_buffer( b  );
+       yy_switch_to_buffer(b  );
 
        return b;
 }
@@ -6295,29 +6308,28 @@ YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
  * @note If you want to scan bytes that may contain NUL values, then use
  *       yy_scan_bytes() instead.
  */
-YY_BUFFER_STATE yy_scan_string (const char * yystr )
+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
  * scan from a @e copy of @a bytes.
- * @param yybytes the byte buffer to scan
- * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
  * 
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE yy_scan_bytes  (const 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;
-       yy_size_t n;
-       int i;
+       yy_size_t n, i;
     
        /* Get memory for full buffer, including space for trailing EOB's. */
-       n = (yy_size_t) (_yybytes_len + 2);
-       buf = (char *) yyalloc( n  );
+       n = _yybytes_len + 2;
+       buf = (char *) yyalloc(n  );
        if ( ! buf )
                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
 
@@ -6326,7 +6338,7 @@ YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )
 
        buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
 
-       b = yy_scan_buffer( buf, n );
+       b = yy_scan_buffer(buf,n );
        if ( ! b )
                YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
 
@@ -6342,9 +6354,9 @@ YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )
 #define YY_EXIT_FAILURE 2
 #endif
 
-static void yynoreturn yy_fatal_error (const char* msg )
+static void yy_fatal_error (yyconst char* msg )
 {
-                       fprintf( stderr, "%s\n", msg );
+       (void) fprintf( stderr, "%s\n", msg );
        exit( YY_EXIT_FAILURE );
 }
 
@@ -6372,7 +6384,7 @@ static void yynoreturn yy_fatal_error (const char* msg )
  */
 int yyget_lineno  (void)
 {
-    
+        
     return yylineno;
 }
 
@@ -6395,7 +6407,7 @@ FILE *yyget_out  (void)
 /** Get the length of the current token.
  * 
  */
-int yyget_leng  (void)
+yy_size_t yyget_leng  (void)
 {
         return yyleng;
 }
@@ -6410,29 +6422,29 @@ char *yyget_text  (void)
 }
 
 /** Set the current line number.
- * @param _line_number line number
+ * @param line_number
  * 
  */
-void yyset_lineno (int  _line_number )
+void yyset_lineno (int  line_number )
 {
     
-    yylineno = _line_number;
+    yylineno = line_number;
 }
 
 /** Set the input stream. This does not discard the current
  * input buffer.
- * @param _in_str A readable stream.
+ * @param in_str A readable stream.
  * 
  * @see yy_switch_to_buffer
  */
-void yyset_in (FILE *  _in_str )
+void yyset_in (FILE *  in_str )
 {
-        yyin = _in_str ;
+        yyin = in_str ;
 }
 
-void yyset_out (FILE *  _out_str )
+void yyset_out (FILE *  out_str )
 {
-        yyout = _out_str ;
+        yyout = out_str ;
 }
 
 int yyget_debug  (void)
@@ -6440,9 +6452,9 @@ int yyget_debug  (void)
         return yy_flex_debug;
 }
 
-void yyset_debug (int  _bdebug )
+void yyset_debug (int  bdebug )
 {
-        yy_flex_debug = _bdebug ;
+        yy_flex_debug = bdebug ;
 }
 
 static int yy_init_globals (void)
@@ -6451,10 +6463,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;
 
@@ -6463,8 +6475,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
@@ -6479,7 +6491,7 @@ int yylex_destroy  (void)
     
     /* Pop the buffer stack, destroying each element. */
        while(YY_CURRENT_BUFFER){
-               yy_delete_buffer( YY_CURRENT_BUFFER  );
+               yy_delete_buffer(YY_CURRENT_BUFFER  );
                YY_CURRENT_BUFFER_LVALUE = NULL;
                yypop_buffer_state();
        }
@@ -6500,19 +6512,18 @@ int yylex_destroy  (void)
  */
 
 #ifndef yytext_ptr
-static void yy_flex_strncpy (char* s1, const char * s2, int n )
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
 {
-               
-       int i;
+       register int i;
        for ( i = 0; i < n; ++i )
                s1[i] = s2[i];
 }
 #endif
 
 #ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (const char * s )
+static int yy_flex_strlen (yyconst char * s )
 {
-       int n;
+       register int n;
        for ( n = 0; s[n]; ++n )
                ;
 
@@ -6522,12 +6533,11 @@ static int yy_flex_strlen (const char * s )
 
 void *yyalloc (yy_size_t  size )
 {
-                       return malloc(size);
+       return (void *) malloc( size );
 }
 
 void *yyrealloc  (void * ptr, yy_size_t  size )
 {
-               
        /* The cast to (char *) in the following accommodates both
         * implementations that use char* generic pointers, and those
         * that use void* generic pointers.  It works with the latter
@@ -6535,16 +6545,17 @@ 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 )
 {
-                       free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
+       free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
 }
 
 #define YYTABLES_NAME "yytables"
 
-#line 687 "./util/configlexer.lex"
+#line 689 "./util/configlexer.lex"
+
 
 
index 93390ca9d6e54eda53069a0a84cdfd02acfc8371..17c20fdff455bec4ba3742203bbf093571f5b9f9 100644 (file)
@@ -402,6 +402,7 @@ serve-expired-ttl{COLON}    { YDVAR(1, VAR_SERVE_EXPIRED_TTL) }
 serve-expired-ttl-reset{COLON} { YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) }
 serve-expired-reply-ttl{COLON} { YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) }
 serve-expired-client-timeout{COLON}    { YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) }
+ede-serve-expired{COLON}       { YDVAR(1, VAR_EDE_SERVE_EXPIRED) }
 serve-original-ttl{COLON}      { YDVAR(1, VAR_SERVE_ORIGINAL_TTL) }
 fake-dsa{COLON}                        { YDVAR(1, VAR_FAKE_DSA) }
 fake-sha1{COLON}               { YDVAR(1, VAR_FAKE_SHA1) }
@@ -553,6 +554,7 @@ tcp-connection-limit{COLON} { YDVAR(2, VAR_TCP_CONNECTION_LIMIT) }
 edns-client-string{COLON}      { YDVAR(2, VAR_EDNS_CLIENT_STRING) }
 edns-client-string-opcode{COLON} { YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) }
 nsid{COLON}                    { YDVAR(1, VAR_NSID ) }
+ede{COLON}                     { YDVAR(1, VAR_EDE ) }
 <INITIAL,val>{NEWLINE}         { LEXOUT(("NL\n")); cfg_parser->line++; }
 
        /* Quoted strings. Strip leading and ending quotes */
index 13b83a593100077757709ac3bd583fc7ebb1a061..3ce233e885a21ff502d84b516eb6a18ff9fc5764 100644 (file)
@@ -1,14 +1,14 @@
-/* A Bison parser, made by GNU Bison 3.7.6.  */
+/* A Bison parser, made by GNU Bison 2.3.  */
 
-/* Bison implementation for Yacc-like parsers in C
+/* Skeleton implementation for Bison's Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
-   Inc.
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+   Free Software Foundation, Inc.
 
-   This program is free software: you can redistribute it and/or modify
+   This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -16,7 +16,9 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
 /* C LALR(1) parser skeleton written by Richard Stallman, by
    simplifying the original so-called "semantic" parser.  */
 
-/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
-   especially those whose name start with YY_ or yy_.  They are
-   private implementation details that can be changed or removed.  */
-
 /* All symbols defined below should begin with yy or YY, to avoid
    infringing on user name space.  This should be done even for local
    variables, as they might otherwise be expanded by user macros.
    define necessary library symbols; they are noted "INFRINGES ON
    USER NAME SPACE" below.  */
 
-/* Identify Bison output, and Bison version.  */
-#define YYBISON 30706
+/* Identify Bison output.  */
+#define YYBISON 1
 
-/* Bison version string.  */
-#define YYBISON_VERSION "3.7.6"
+/* Bison version.  */
+#define YYBISON_VERSION "2.3"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
 /* Pure parsers.  */
 #define YYPURE 0
 
-/* Push parsers.  */
-#define YYPUSH 0
-
-/* Pull parsers.  */
-#define YYPULL 1
-
-
-
-
-/* First part of user prologue.  */
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     SPACE = 258,
+     LETTER = 259,
+     NEWLINE = 260,
+     COMMENT = 261,
+     COLON = 262,
+     ANY = 263,
+     ZONESTR = 264,
+     STRING_ARG = 265,
+     VAR_FORCE_TOPLEVEL = 266,
+     VAR_SERVER = 267,
+     VAR_VERBOSITY = 268,
+     VAR_NUM_THREADS = 269,
+     VAR_PORT = 270,
+     VAR_OUTGOING_RANGE = 271,
+     VAR_INTERFACE = 272,
+     VAR_PREFER_IP4 = 273,
+     VAR_DO_IP4 = 274,
+     VAR_DO_IP6 = 275,
+     VAR_PREFER_IP6 = 276,
+     VAR_DO_UDP = 277,
+     VAR_DO_TCP = 278,
+     VAR_TCP_MSS = 279,
+     VAR_OUTGOING_TCP_MSS = 280,
+     VAR_TCP_IDLE_TIMEOUT = 281,
+     VAR_EDNS_TCP_KEEPALIVE = 282,
+     VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283,
+     VAR_CHROOT = 284,
+     VAR_USERNAME = 285,
+     VAR_DIRECTORY = 286,
+     VAR_LOGFILE = 287,
+     VAR_PIDFILE = 288,
+     VAR_MSG_CACHE_SIZE = 289,
+     VAR_MSG_CACHE_SLABS = 290,
+     VAR_NUM_QUERIES_PER_THREAD = 291,
+     VAR_RRSET_CACHE_SIZE = 292,
+     VAR_RRSET_CACHE_SLABS = 293,
+     VAR_OUTGOING_NUM_TCP = 294,
+     VAR_INFRA_HOST_TTL = 295,
+     VAR_INFRA_LAME_TTL = 296,
+     VAR_INFRA_CACHE_SLABS = 297,
+     VAR_INFRA_CACHE_NUMHOSTS = 298,
+     VAR_INFRA_CACHE_LAME_SIZE = 299,
+     VAR_NAME = 300,
+     VAR_STUB_ZONE = 301,
+     VAR_STUB_HOST = 302,
+     VAR_STUB_ADDR = 303,
+     VAR_TARGET_FETCH_POLICY = 304,
+     VAR_HARDEN_SHORT_BUFSIZE = 305,
+     VAR_HARDEN_LARGE_QUERIES = 306,
+     VAR_FORWARD_ZONE = 307,
+     VAR_FORWARD_HOST = 308,
+     VAR_FORWARD_ADDR = 309,
+     VAR_DO_NOT_QUERY_ADDRESS = 310,
+     VAR_HIDE_IDENTITY = 311,
+     VAR_HIDE_VERSION = 312,
+     VAR_IDENTITY = 313,
+     VAR_VERSION = 314,
+     VAR_HARDEN_GLUE = 315,
+     VAR_MODULE_CONF = 316,
+     VAR_TRUST_ANCHOR_FILE = 317,
+     VAR_TRUST_ANCHOR = 318,
+     VAR_VAL_OVERRIDE_DATE = 319,
+     VAR_BOGUS_TTL = 320,
+     VAR_VAL_CLEAN_ADDITIONAL = 321,
+     VAR_VAL_PERMISSIVE_MODE = 322,
+     VAR_INCOMING_NUM_TCP = 323,
+     VAR_MSG_BUFFER_SIZE = 324,
+     VAR_KEY_CACHE_SIZE = 325,
+     VAR_KEY_CACHE_SLABS = 326,
+     VAR_TRUSTED_KEYS_FILE = 327,
+     VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328,
+     VAR_USE_SYSLOG = 329,
+     VAR_OUTGOING_INTERFACE = 330,
+     VAR_ROOT_HINTS = 331,
+     VAR_DO_NOT_QUERY_LOCALHOST = 332,
+     VAR_CACHE_MAX_TTL = 333,
+     VAR_HARDEN_DNSSEC_STRIPPED = 334,
+     VAR_ACCESS_CONTROL = 335,
+     VAR_LOCAL_ZONE = 336,
+     VAR_LOCAL_DATA = 337,
+     VAR_INTERFACE_AUTOMATIC = 338,
+     VAR_STATISTICS_INTERVAL = 339,
+     VAR_DO_DAEMONIZE = 340,
+     VAR_USE_CAPS_FOR_ID = 341,
+     VAR_STATISTICS_CUMULATIVE = 342,
+     VAR_OUTGOING_PORT_PERMIT = 343,
+     VAR_OUTGOING_PORT_AVOID = 344,
+     VAR_DLV_ANCHOR_FILE = 345,
+     VAR_DLV_ANCHOR = 346,
+     VAR_NEG_CACHE_SIZE = 347,
+     VAR_HARDEN_REFERRAL_PATH = 348,
+     VAR_PRIVATE_ADDRESS = 349,
+     VAR_PRIVATE_DOMAIN = 350,
+     VAR_REMOTE_CONTROL = 351,
+     VAR_CONTROL_ENABLE = 352,
+     VAR_CONTROL_INTERFACE = 353,
+     VAR_CONTROL_PORT = 354,
+     VAR_SERVER_KEY_FILE = 355,
+     VAR_SERVER_CERT_FILE = 356,
+     VAR_CONTROL_KEY_FILE = 357,
+     VAR_CONTROL_CERT_FILE = 358,
+     VAR_CONTROL_USE_CERT = 359,
+     VAR_TCP_REUSE_TIMEOUT = 360,
+     VAR_MAX_REUSE_TCP_QUERIES = 361,
+     VAR_EXTENDED_STATISTICS = 362,
+     VAR_LOCAL_DATA_PTR = 363,
+     VAR_JOSTLE_TIMEOUT = 364,
+     VAR_STUB_PRIME = 365,
+     VAR_UNWANTED_REPLY_THRESHOLD = 366,
+     VAR_LOG_TIME_ASCII = 367,
+     VAR_DOMAIN_INSECURE = 368,
+     VAR_PYTHON = 369,
+     VAR_PYTHON_SCRIPT = 370,
+     VAR_VAL_SIG_SKEW_MIN = 371,
+     VAR_VAL_SIG_SKEW_MAX = 372,
+     VAR_VAL_MAX_RESTART = 373,
+     VAR_CACHE_MIN_TTL = 374,
+     VAR_VAL_LOG_LEVEL = 375,
+     VAR_AUTO_TRUST_ANCHOR_FILE = 376,
+     VAR_KEEP_MISSING = 377,
+     VAR_ADD_HOLDDOWN = 378,
+     VAR_DEL_HOLDDOWN = 379,
+     VAR_SO_RCVBUF = 380,
+     VAR_EDNS_BUFFER_SIZE = 381,
+     VAR_PREFETCH = 382,
+     VAR_PREFETCH_KEY = 383,
+     VAR_SO_SNDBUF = 384,
+     VAR_SO_REUSEPORT = 385,
+     VAR_HARDEN_BELOW_NXDOMAIN = 386,
+     VAR_IGNORE_CD_FLAG = 387,
+     VAR_LOG_QUERIES = 388,
+     VAR_LOG_REPLIES = 389,
+     VAR_LOG_LOCAL_ACTIONS = 390,
+     VAR_TCP_UPSTREAM = 391,
+     VAR_SSL_UPSTREAM = 392,
+     VAR_TCP_AUTH_QUERY_TIMEOUT = 393,
+     VAR_SSL_SERVICE_KEY = 394,
+     VAR_SSL_SERVICE_PEM = 395,
+     VAR_SSL_PORT = 396,
+     VAR_FORWARD_FIRST = 397,
+     VAR_STUB_SSL_UPSTREAM = 398,
+     VAR_FORWARD_SSL_UPSTREAM = 399,
+     VAR_TLS_CERT_BUNDLE = 400,
+     VAR_STUB_TCP_UPSTREAM = 401,
+     VAR_FORWARD_TCP_UPSTREAM = 402,
+     VAR_HTTPS_PORT = 403,
+     VAR_HTTP_ENDPOINT = 404,
+     VAR_HTTP_MAX_STREAMS = 405,
+     VAR_HTTP_QUERY_BUFFER_SIZE = 406,
+     VAR_HTTP_RESPONSE_BUFFER_SIZE = 407,
+     VAR_HTTP_NODELAY = 408,
+     VAR_HTTP_NOTLS_DOWNSTREAM = 409,
+     VAR_STUB_FIRST = 410,
+     VAR_MINIMAL_RESPONSES = 411,
+     VAR_RRSET_ROUNDROBIN = 412,
+     VAR_MAX_UDP_SIZE = 413,
+     VAR_DELAY_CLOSE = 414,
+     VAR_UDP_CONNECT = 415,
+     VAR_UNBLOCK_LAN_ZONES = 416,
+     VAR_INSECURE_LAN_ZONES = 417,
+     VAR_INFRA_CACHE_MIN_RTT = 418,
+     VAR_INFRA_KEEP_PROBING = 419,
+     VAR_DNS64_PREFIX = 420,
+     VAR_DNS64_SYNTHALL = 421,
+     VAR_DNS64_IGNORE_AAAA = 422,
+     VAR_DNSTAP = 423,
+     VAR_DNSTAP_ENABLE = 424,
+     VAR_DNSTAP_SOCKET_PATH = 425,
+     VAR_DNSTAP_IP = 426,
+     VAR_DNSTAP_TLS = 427,
+     VAR_DNSTAP_TLS_SERVER_NAME = 428,
+     VAR_DNSTAP_TLS_CERT_BUNDLE = 429,
+     VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 430,
+     VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 431,
+     VAR_DNSTAP_SEND_IDENTITY = 432,
+     VAR_DNSTAP_SEND_VERSION = 433,
+     VAR_DNSTAP_BIDIRECTIONAL = 434,
+     VAR_DNSTAP_IDENTITY = 435,
+     VAR_DNSTAP_VERSION = 436,
+     VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 437,
+     VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 438,
+     VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 439,
+     VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 440,
+     VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 441,
+     VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 442,
+     VAR_RESPONSE_IP_TAG = 443,
+     VAR_RESPONSE_IP = 444,
+     VAR_RESPONSE_IP_DATA = 445,
+     VAR_HARDEN_ALGO_DOWNGRADE = 446,
+     VAR_IP_TRANSPARENT = 447,
+     VAR_IP_DSCP = 448,
+     VAR_DISABLE_DNSSEC_LAME_CHECK = 449,
+     VAR_IP_RATELIMIT = 450,
+     VAR_IP_RATELIMIT_SLABS = 451,
+     VAR_IP_RATELIMIT_SIZE = 452,
+     VAR_RATELIMIT = 453,
+     VAR_RATELIMIT_SLABS = 454,
+     VAR_RATELIMIT_SIZE = 455,
+     VAR_OUTBOUND_MSG_RETRY = 456,
+     VAR_RATELIMIT_FOR_DOMAIN = 457,
+     VAR_RATELIMIT_BELOW_DOMAIN = 458,
+     VAR_IP_RATELIMIT_FACTOR = 459,
+     VAR_RATELIMIT_FACTOR = 460,
+     VAR_IP_RATELIMIT_BACKOFF = 461,
+     VAR_RATELIMIT_BACKOFF = 462,
+     VAR_SEND_CLIENT_SUBNET = 463,
+     VAR_CLIENT_SUBNET_ZONE = 464,
+     VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 465,
+     VAR_CLIENT_SUBNET_OPCODE = 466,
+     VAR_MAX_CLIENT_SUBNET_IPV4 = 467,
+     VAR_MAX_CLIENT_SUBNET_IPV6 = 468,
+     VAR_MIN_CLIENT_SUBNET_IPV4 = 469,
+     VAR_MIN_CLIENT_SUBNET_IPV6 = 470,
+     VAR_MAX_ECS_TREE_SIZE_IPV4 = 471,
+     VAR_MAX_ECS_TREE_SIZE_IPV6 = 472,
+     VAR_CAPS_WHITELIST = 473,
+     VAR_CACHE_MAX_NEGATIVE_TTL = 474,
+     VAR_PERMIT_SMALL_HOLDDOWN = 475,
+     VAR_QNAME_MINIMISATION = 476,
+     VAR_QNAME_MINIMISATION_STRICT = 477,
+     VAR_IP_FREEBIND = 478,
+     VAR_DEFINE_TAG = 479,
+     VAR_LOCAL_ZONE_TAG = 480,
+     VAR_ACCESS_CONTROL_TAG = 481,
+     VAR_LOCAL_ZONE_OVERRIDE = 482,
+     VAR_ACCESS_CONTROL_TAG_ACTION = 483,
+     VAR_ACCESS_CONTROL_TAG_DATA = 484,
+     VAR_VIEW = 485,
+     VAR_ACCESS_CONTROL_VIEW = 486,
+     VAR_VIEW_FIRST = 487,
+     VAR_SERVE_EXPIRED = 488,
+     VAR_SERVE_EXPIRED_TTL = 489,
+     VAR_SERVE_EXPIRED_TTL_RESET = 490,
+     VAR_SERVE_EXPIRED_REPLY_TTL = 491,
+     VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 492,
+     VAR_EDE_SERVE_EXPIRED = 493,
+     VAR_SERVE_ORIGINAL_TTL = 494,
+     VAR_FAKE_DSA = 495,
+     VAR_FAKE_SHA1 = 496,
+     VAR_LOG_IDENTITY = 497,
+     VAR_HIDE_TRUSTANCHOR = 498,
+     VAR_HIDE_HTTP_USER_AGENT = 499,
+     VAR_HTTP_USER_AGENT = 500,
+     VAR_TRUST_ANCHOR_SIGNALING = 501,
+     VAR_AGGRESSIVE_NSEC = 502,
+     VAR_USE_SYSTEMD = 503,
+     VAR_SHM_ENABLE = 504,
+     VAR_SHM_KEY = 505,
+     VAR_ROOT_KEY_SENTINEL = 506,
+     VAR_DNSCRYPT = 507,
+     VAR_DNSCRYPT_ENABLE = 508,
+     VAR_DNSCRYPT_PORT = 509,
+     VAR_DNSCRYPT_PROVIDER = 510,
+     VAR_DNSCRYPT_SECRET_KEY = 511,
+     VAR_DNSCRYPT_PROVIDER_CERT = 512,
+     VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 513,
+     VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 514,
+     VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 515,
+     VAR_DNSCRYPT_NONCE_CACHE_SIZE = 516,
+     VAR_DNSCRYPT_NONCE_CACHE_SLABS = 517,
+     VAR_PAD_RESPONSES = 518,
+     VAR_PAD_RESPONSES_BLOCK_SIZE = 519,
+     VAR_PAD_QUERIES = 520,
+     VAR_PAD_QUERIES_BLOCK_SIZE = 521,
+     VAR_IPSECMOD_ENABLED = 522,
+     VAR_IPSECMOD_HOOK = 523,
+     VAR_IPSECMOD_IGNORE_BOGUS = 524,
+     VAR_IPSECMOD_MAX_TTL = 525,
+     VAR_IPSECMOD_WHITELIST = 526,
+     VAR_IPSECMOD_STRICT = 527,
+     VAR_CACHEDB = 528,
+     VAR_CACHEDB_BACKEND = 529,
+     VAR_CACHEDB_SECRETSEED = 530,
+     VAR_CACHEDB_REDISHOST = 531,
+     VAR_CACHEDB_REDISPORT = 532,
+     VAR_CACHEDB_REDISTIMEOUT = 533,
+     VAR_CACHEDB_REDISEXPIRERECORDS = 534,
+     VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 535,
+     VAR_FOR_UPSTREAM = 536,
+     VAR_AUTH_ZONE = 537,
+     VAR_ZONEFILE = 538,
+     VAR_MASTER = 539,
+     VAR_URL = 540,
+     VAR_FOR_DOWNSTREAM = 541,
+     VAR_FALLBACK_ENABLED = 542,
+     VAR_TLS_ADDITIONAL_PORT = 543,
+     VAR_LOW_RTT = 544,
+     VAR_LOW_RTT_PERMIL = 545,
+     VAR_FAST_SERVER_PERMIL = 546,
+     VAR_FAST_SERVER_NUM = 547,
+     VAR_ALLOW_NOTIFY = 548,
+     VAR_TLS_WIN_CERT = 549,
+     VAR_TCP_CONNECTION_LIMIT = 550,
+     VAR_FORWARD_NO_CACHE = 551,
+     VAR_STUB_NO_CACHE = 552,
+     VAR_LOG_SERVFAIL = 553,
+     VAR_DENY_ANY = 554,
+     VAR_UNKNOWN_SERVER_TIME_LIMIT = 555,
+     VAR_LOG_TAG_QUERYREPLY = 556,
+     VAR_STREAM_WAIT_SIZE = 557,
+     VAR_TLS_CIPHERS = 558,
+     VAR_TLS_CIPHERSUITES = 559,
+     VAR_TLS_USE_SNI = 560,
+     VAR_IPSET = 561,
+     VAR_IPSET_NAME_V4 = 562,
+     VAR_IPSET_NAME_V6 = 563,
+     VAR_TLS_SESSION_TICKET_KEYS = 564,
+     VAR_RPZ = 565,
+     VAR_TAGS = 566,
+     VAR_RPZ_ACTION_OVERRIDE = 567,
+     VAR_RPZ_CNAME_OVERRIDE = 568,
+     VAR_RPZ_LOG = 569,
+     VAR_RPZ_LOG_NAME = 570,
+     VAR_DYNLIB = 571,
+     VAR_DYNLIB_FILE = 572,
+     VAR_EDNS_CLIENT_STRING = 573,
+     VAR_EDNS_CLIENT_STRING_OPCODE = 574,
+     VAR_NSID = 575,
+     VAR_ZONEMD_PERMISSIVE_MODE = 576,
+     VAR_ZONEMD_CHECK = 577,
+     VAR_ZONEMD_REJECT_ABSENCE = 578,
+     VAR_RPZ_SIGNAL_NXDOMAIN_RA = 579,
+     VAR_INTERFACE_AUTOMATIC_PORTS = 580,
+     VAR_EDE = 581
+   };
+#endif
+/* Tokens.  */
+#define SPACE 258
+#define LETTER 259
+#define NEWLINE 260
+#define COMMENT 261
+#define COLON 262
+#define ANY 263
+#define ZONESTR 264
+#define STRING_ARG 265
+#define VAR_FORCE_TOPLEVEL 266
+#define VAR_SERVER 267
+#define VAR_VERBOSITY 268
+#define VAR_NUM_THREADS 269
+#define VAR_PORT 270
+#define VAR_OUTGOING_RANGE 271
+#define VAR_INTERFACE 272
+#define VAR_PREFER_IP4 273
+#define VAR_DO_IP4 274
+#define VAR_DO_IP6 275
+#define VAR_PREFER_IP6 276
+#define VAR_DO_UDP 277
+#define VAR_DO_TCP 278
+#define VAR_TCP_MSS 279
+#define VAR_OUTGOING_TCP_MSS 280
+#define VAR_TCP_IDLE_TIMEOUT 281
+#define VAR_EDNS_TCP_KEEPALIVE 282
+#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 283
+#define VAR_CHROOT 284
+#define VAR_USERNAME 285
+#define VAR_DIRECTORY 286
+#define VAR_LOGFILE 287
+#define VAR_PIDFILE 288
+#define VAR_MSG_CACHE_SIZE 289
+#define VAR_MSG_CACHE_SLABS 290
+#define VAR_NUM_QUERIES_PER_THREAD 291
+#define VAR_RRSET_CACHE_SIZE 292
+#define VAR_RRSET_CACHE_SLABS 293
+#define VAR_OUTGOING_NUM_TCP 294
+#define VAR_INFRA_HOST_TTL 295
+#define VAR_INFRA_LAME_TTL 296
+#define VAR_INFRA_CACHE_SLABS 297
+#define VAR_INFRA_CACHE_NUMHOSTS 298
+#define VAR_INFRA_CACHE_LAME_SIZE 299
+#define VAR_NAME 300
+#define VAR_STUB_ZONE 301
+#define VAR_STUB_HOST 302
+#define VAR_STUB_ADDR 303
+#define VAR_TARGET_FETCH_POLICY 304
+#define VAR_HARDEN_SHORT_BUFSIZE 305
+#define VAR_HARDEN_LARGE_QUERIES 306
+#define VAR_FORWARD_ZONE 307
+#define VAR_FORWARD_HOST 308
+#define VAR_FORWARD_ADDR 309
+#define VAR_DO_NOT_QUERY_ADDRESS 310
+#define VAR_HIDE_IDENTITY 311
+#define VAR_HIDE_VERSION 312
+#define VAR_IDENTITY 313
+#define VAR_VERSION 314
+#define VAR_HARDEN_GLUE 315
+#define VAR_MODULE_CONF 316
+#define VAR_TRUST_ANCHOR_FILE 317
+#define VAR_TRUST_ANCHOR 318
+#define VAR_VAL_OVERRIDE_DATE 319
+#define VAR_BOGUS_TTL 320
+#define VAR_VAL_CLEAN_ADDITIONAL 321
+#define VAR_VAL_PERMISSIVE_MODE 322
+#define VAR_INCOMING_NUM_TCP 323
+#define VAR_MSG_BUFFER_SIZE 324
+#define VAR_KEY_CACHE_SIZE 325
+#define VAR_KEY_CACHE_SLABS 326
+#define VAR_TRUSTED_KEYS_FILE 327
+#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 328
+#define VAR_USE_SYSLOG 329
+#define VAR_OUTGOING_INTERFACE 330
+#define VAR_ROOT_HINTS 331
+#define VAR_DO_NOT_QUERY_LOCALHOST 332
+#define VAR_CACHE_MAX_TTL 333
+#define VAR_HARDEN_DNSSEC_STRIPPED 334
+#define VAR_ACCESS_CONTROL 335
+#define VAR_LOCAL_ZONE 336
+#define VAR_LOCAL_DATA 337
+#define VAR_INTERFACE_AUTOMATIC 338
+#define VAR_STATISTICS_INTERVAL 339
+#define VAR_DO_DAEMONIZE 340
+#define VAR_USE_CAPS_FOR_ID 341
+#define VAR_STATISTICS_CUMULATIVE 342
+#define VAR_OUTGOING_PORT_PERMIT 343
+#define VAR_OUTGOING_PORT_AVOID 344
+#define VAR_DLV_ANCHOR_FILE 345
+#define VAR_DLV_ANCHOR 346
+#define VAR_NEG_CACHE_SIZE 347
+#define VAR_HARDEN_REFERRAL_PATH 348
+#define VAR_PRIVATE_ADDRESS 349
+#define VAR_PRIVATE_DOMAIN 350
+#define VAR_REMOTE_CONTROL 351
+#define VAR_CONTROL_ENABLE 352
+#define VAR_CONTROL_INTERFACE 353
+#define VAR_CONTROL_PORT 354
+#define VAR_SERVER_KEY_FILE 355
+#define VAR_SERVER_CERT_FILE 356
+#define VAR_CONTROL_KEY_FILE 357
+#define VAR_CONTROL_CERT_FILE 358
+#define VAR_CONTROL_USE_CERT 359
+#define VAR_TCP_REUSE_TIMEOUT 360
+#define VAR_MAX_REUSE_TCP_QUERIES 361
+#define VAR_EXTENDED_STATISTICS 362
+#define VAR_LOCAL_DATA_PTR 363
+#define VAR_JOSTLE_TIMEOUT 364
+#define VAR_STUB_PRIME 365
+#define VAR_UNWANTED_REPLY_THRESHOLD 366
+#define VAR_LOG_TIME_ASCII 367
+#define VAR_DOMAIN_INSECURE 368
+#define VAR_PYTHON 369
+#define VAR_PYTHON_SCRIPT 370
+#define VAR_VAL_SIG_SKEW_MIN 371
+#define VAR_VAL_SIG_SKEW_MAX 372
+#define VAR_VAL_MAX_RESTART 373
+#define VAR_CACHE_MIN_TTL 374
+#define VAR_VAL_LOG_LEVEL 375
+#define VAR_AUTO_TRUST_ANCHOR_FILE 376
+#define VAR_KEEP_MISSING 377
+#define VAR_ADD_HOLDDOWN 378
+#define VAR_DEL_HOLDDOWN 379
+#define VAR_SO_RCVBUF 380
+#define VAR_EDNS_BUFFER_SIZE 381
+#define VAR_PREFETCH 382
+#define VAR_PREFETCH_KEY 383
+#define VAR_SO_SNDBUF 384
+#define VAR_SO_REUSEPORT 385
+#define VAR_HARDEN_BELOW_NXDOMAIN 386
+#define VAR_IGNORE_CD_FLAG 387
+#define VAR_LOG_QUERIES 388
+#define VAR_LOG_REPLIES 389
+#define VAR_LOG_LOCAL_ACTIONS 390
+#define VAR_TCP_UPSTREAM 391
+#define VAR_SSL_UPSTREAM 392
+#define VAR_TCP_AUTH_QUERY_TIMEOUT 393
+#define VAR_SSL_SERVICE_KEY 394
+#define VAR_SSL_SERVICE_PEM 395
+#define VAR_SSL_PORT 396
+#define VAR_FORWARD_FIRST 397
+#define VAR_STUB_SSL_UPSTREAM 398
+#define VAR_FORWARD_SSL_UPSTREAM 399
+#define VAR_TLS_CERT_BUNDLE 400
+#define VAR_STUB_TCP_UPSTREAM 401
+#define VAR_FORWARD_TCP_UPSTREAM 402
+#define VAR_HTTPS_PORT 403
+#define VAR_HTTP_ENDPOINT 404
+#define VAR_HTTP_MAX_STREAMS 405
+#define VAR_HTTP_QUERY_BUFFER_SIZE 406
+#define VAR_HTTP_RESPONSE_BUFFER_SIZE 407
+#define VAR_HTTP_NODELAY 408
+#define VAR_HTTP_NOTLS_DOWNSTREAM 409
+#define VAR_STUB_FIRST 410
+#define VAR_MINIMAL_RESPONSES 411
+#define VAR_RRSET_ROUNDROBIN 412
+#define VAR_MAX_UDP_SIZE 413
+#define VAR_DELAY_CLOSE 414
+#define VAR_UDP_CONNECT 415
+#define VAR_UNBLOCK_LAN_ZONES 416
+#define VAR_INSECURE_LAN_ZONES 417
+#define VAR_INFRA_CACHE_MIN_RTT 418
+#define VAR_INFRA_KEEP_PROBING 419
+#define VAR_DNS64_PREFIX 420
+#define VAR_DNS64_SYNTHALL 421
+#define VAR_DNS64_IGNORE_AAAA 422
+#define VAR_DNSTAP 423
+#define VAR_DNSTAP_ENABLE 424
+#define VAR_DNSTAP_SOCKET_PATH 425
+#define VAR_DNSTAP_IP 426
+#define VAR_DNSTAP_TLS 427
+#define VAR_DNSTAP_TLS_SERVER_NAME 428
+#define VAR_DNSTAP_TLS_CERT_BUNDLE 429
+#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 430
+#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 431
+#define VAR_DNSTAP_SEND_IDENTITY 432
+#define VAR_DNSTAP_SEND_VERSION 433
+#define VAR_DNSTAP_BIDIRECTIONAL 434
+#define VAR_DNSTAP_IDENTITY 435
+#define VAR_DNSTAP_VERSION 436
+#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 437
+#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 438
+#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 439
+#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 440
+#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 441
+#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 442
+#define VAR_RESPONSE_IP_TAG 443
+#define VAR_RESPONSE_IP 444
+#define VAR_RESPONSE_IP_DATA 445
+#define VAR_HARDEN_ALGO_DOWNGRADE 446
+#define VAR_IP_TRANSPARENT 447
+#define VAR_IP_DSCP 448
+#define VAR_DISABLE_DNSSEC_LAME_CHECK 449
+#define VAR_IP_RATELIMIT 450
+#define VAR_IP_RATELIMIT_SLABS 451
+#define VAR_IP_RATELIMIT_SIZE 452
+#define VAR_RATELIMIT 453
+#define VAR_RATELIMIT_SLABS 454
+#define VAR_RATELIMIT_SIZE 455
+#define VAR_OUTBOUND_MSG_RETRY 456
+#define VAR_RATELIMIT_FOR_DOMAIN 457
+#define VAR_RATELIMIT_BELOW_DOMAIN 458
+#define VAR_IP_RATELIMIT_FACTOR 459
+#define VAR_RATELIMIT_FACTOR 460
+#define VAR_IP_RATELIMIT_BACKOFF 461
+#define VAR_RATELIMIT_BACKOFF 462
+#define VAR_SEND_CLIENT_SUBNET 463
+#define VAR_CLIENT_SUBNET_ZONE 464
+#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 465
+#define VAR_CLIENT_SUBNET_OPCODE 466
+#define VAR_MAX_CLIENT_SUBNET_IPV4 467
+#define VAR_MAX_CLIENT_SUBNET_IPV6 468
+#define VAR_MIN_CLIENT_SUBNET_IPV4 469
+#define VAR_MIN_CLIENT_SUBNET_IPV6 470
+#define VAR_MAX_ECS_TREE_SIZE_IPV4 471
+#define VAR_MAX_ECS_TREE_SIZE_IPV6 472
+#define VAR_CAPS_WHITELIST 473
+#define VAR_CACHE_MAX_NEGATIVE_TTL 474
+#define VAR_PERMIT_SMALL_HOLDDOWN 475
+#define VAR_QNAME_MINIMISATION 476
+#define VAR_QNAME_MINIMISATION_STRICT 477
+#define VAR_IP_FREEBIND 478
+#define VAR_DEFINE_TAG 479
+#define VAR_LOCAL_ZONE_TAG 480
+#define VAR_ACCESS_CONTROL_TAG 481
+#define VAR_LOCAL_ZONE_OVERRIDE 482
+#define VAR_ACCESS_CONTROL_TAG_ACTION 483
+#define VAR_ACCESS_CONTROL_TAG_DATA 484
+#define VAR_VIEW 485
+#define VAR_ACCESS_CONTROL_VIEW 486
+#define VAR_VIEW_FIRST 487
+#define VAR_SERVE_EXPIRED 488
+#define VAR_SERVE_EXPIRED_TTL 489
+#define VAR_SERVE_EXPIRED_TTL_RESET 490
+#define VAR_SERVE_EXPIRED_REPLY_TTL 491
+#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 492
+#define VAR_EDE_SERVE_EXPIRED 493
+#define VAR_SERVE_ORIGINAL_TTL 494
+#define VAR_FAKE_DSA 495
+#define VAR_FAKE_SHA1 496
+#define VAR_LOG_IDENTITY 497
+#define VAR_HIDE_TRUSTANCHOR 498
+#define VAR_HIDE_HTTP_USER_AGENT 499
+#define VAR_HTTP_USER_AGENT 500
+#define VAR_TRUST_ANCHOR_SIGNALING 501
+#define VAR_AGGRESSIVE_NSEC 502
+#define VAR_USE_SYSTEMD 503
+#define VAR_SHM_ENABLE 504
+#define VAR_SHM_KEY 505
+#define VAR_ROOT_KEY_SENTINEL 506
+#define VAR_DNSCRYPT 507
+#define VAR_DNSCRYPT_ENABLE 508
+#define VAR_DNSCRYPT_PORT 509
+#define VAR_DNSCRYPT_PROVIDER 510
+#define VAR_DNSCRYPT_SECRET_KEY 511
+#define VAR_DNSCRYPT_PROVIDER_CERT 512
+#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 513
+#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 514
+#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 515
+#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 516
+#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 517
+#define VAR_PAD_RESPONSES 518
+#define VAR_PAD_RESPONSES_BLOCK_SIZE 519
+#define VAR_PAD_QUERIES 520
+#define VAR_PAD_QUERIES_BLOCK_SIZE 521
+#define VAR_IPSECMOD_ENABLED 522
+#define VAR_IPSECMOD_HOOK 523
+#define VAR_IPSECMOD_IGNORE_BOGUS 524
+#define VAR_IPSECMOD_MAX_TTL 525
+#define VAR_IPSECMOD_WHITELIST 526
+#define VAR_IPSECMOD_STRICT 527
+#define VAR_CACHEDB 528
+#define VAR_CACHEDB_BACKEND 529
+#define VAR_CACHEDB_SECRETSEED 530
+#define VAR_CACHEDB_REDISHOST 531
+#define VAR_CACHEDB_REDISPORT 532
+#define VAR_CACHEDB_REDISTIMEOUT 533
+#define VAR_CACHEDB_REDISEXPIRERECORDS 534
+#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 535
+#define VAR_FOR_UPSTREAM 536
+#define VAR_AUTH_ZONE 537
+#define VAR_ZONEFILE 538
+#define VAR_MASTER 539
+#define VAR_URL 540
+#define VAR_FOR_DOWNSTREAM 541
+#define VAR_FALLBACK_ENABLED 542
+#define VAR_TLS_ADDITIONAL_PORT 543
+#define VAR_LOW_RTT 544
+#define VAR_LOW_RTT_PERMIL 545
+#define VAR_FAST_SERVER_PERMIL 546
+#define VAR_FAST_SERVER_NUM 547
+#define VAR_ALLOW_NOTIFY 548
+#define VAR_TLS_WIN_CERT 549
+#define VAR_TCP_CONNECTION_LIMIT 550
+#define VAR_FORWARD_NO_CACHE 551
+#define VAR_STUB_NO_CACHE 552
+#define VAR_LOG_SERVFAIL 553
+#define VAR_DENY_ANY 554
+#define VAR_UNKNOWN_SERVER_TIME_LIMIT 555
+#define VAR_LOG_TAG_QUERYREPLY 556
+#define VAR_STREAM_WAIT_SIZE 557
+#define VAR_TLS_CIPHERS 558
+#define VAR_TLS_CIPHERSUITES 559
+#define VAR_TLS_USE_SNI 560
+#define VAR_IPSET 561
+#define VAR_IPSET_NAME_V4 562
+#define VAR_IPSET_NAME_V6 563
+#define VAR_TLS_SESSION_TICKET_KEYS 564
+#define VAR_RPZ 565
+#define VAR_TAGS 566
+#define VAR_RPZ_ACTION_OVERRIDE 567
+#define VAR_RPZ_CNAME_OVERRIDE 568
+#define VAR_RPZ_LOG 569
+#define VAR_RPZ_LOG_NAME 570
+#define VAR_DYNLIB 571
+#define VAR_DYNLIB_FILE 572
+#define VAR_EDNS_CLIENT_STRING 573
+#define VAR_EDNS_CLIENT_STRING_OPCODE 574
+#define VAR_NSID 575
+#define VAR_ZONEMD_PERMISSIVE_MODE 576
+#define VAR_ZONEMD_CHECK 577
+#define VAR_ZONEMD_REJECT_ABSENCE 578
+#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 579
+#define VAR_INTERFACE_AUTOMATIC_PORTS 580
+#define VAR_EDE 581
+
+
+
+
+/* Copy the first part of user declarations.  */
 #line 38 "./util/configparser.y"
 
 #include "config.h"
@@ -96,800 +751,76 @@ extern struct config_parser_state* cfg_parser;
 #endif
 
 
-#line 100 "util/configparser.c"
 
-# ifndef YY_CAST
-#  ifdef __cplusplus
-#   define YY_CAST(Type, Val) static_cast<Type> (Val)
-#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
-#  else
-#   define YY_CAST(Type, Val) ((Type) (Val))
-#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
-#  endif
-# endif
-# ifndef YY_NULLPTR
-#  if defined __cplusplus
-#   if 201103L <= __cplusplus
-#    define YY_NULLPTR nullptr
-#   else
-#    define YY_NULLPTR 0
-#   endif
-#  else
-#   define YY_NULLPTR ((void*)0)
-#  endif
-# endif
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
 
-#include "configparser.h"
-/* Symbol kind.  */
-enum yysymbol_kind_t
-{
-  YYSYMBOL_YYEMPTY = -2,
-  YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
-  YYSYMBOL_YYerror = 1,                    /* error  */
-  YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
-  YYSYMBOL_SPACE = 3,                      /* SPACE  */
-  YYSYMBOL_LETTER = 4,                     /* LETTER  */
-  YYSYMBOL_NEWLINE = 5,                    /* NEWLINE  */
-  YYSYMBOL_COMMENT = 6,                    /* COMMENT  */
-  YYSYMBOL_COLON = 7,                      /* COLON  */
-  YYSYMBOL_ANY = 8,                        /* ANY  */
-  YYSYMBOL_ZONESTR = 9,                    /* ZONESTR  */
-  YYSYMBOL_STRING_ARG = 10,                /* STRING_ARG  */
-  YYSYMBOL_VAR_FORCE_TOPLEVEL = 11,        /* VAR_FORCE_TOPLEVEL  */
-  YYSYMBOL_VAR_SERVER = 12,                /* VAR_SERVER  */
-  YYSYMBOL_VAR_VERBOSITY = 13,             /* VAR_VERBOSITY  */
-  YYSYMBOL_VAR_NUM_THREADS = 14,           /* VAR_NUM_THREADS  */
-  YYSYMBOL_VAR_PORT = 15,                  /* VAR_PORT  */
-  YYSYMBOL_VAR_OUTGOING_RANGE = 16,        /* VAR_OUTGOING_RANGE  */
-  YYSYMBOL_VAR_INTERFACE = 17,             /* VAR_INTERFACE  */
-  YYSYMBOL_VAR_PREFER_IP4 = 18,            /* VAR_PREFER_IP4  */
-  YYSYMBOL_VAR_DO_IP4 = 19,                /* VAR_DO_IP4  */
-  YYSYMBOL_VAR_DO_IP6 = 20,                /* VAR_DO_IP6  */
-  YYSYMBOL_VAR_PREFER_IP6 = 21,            /* VAR_PREFER_IP6  */
-  YYSYMBOL_VAR_DO_UDP = 22,                /* VAR_DO_UDP  */
-  YYSYMBOL_VAR_DO_TCP = 23,                /* VAR_DO_TCP  */
-  YYSYMBOL_VAR_TCP_MSS = 24,               /* VAR_TCP_MSS  */
-  YYSYMBOL_VAR_OUTGOING_TCP_MSS = 25,      /* VAR_OUTGOING_TCP_MSS  */
-  YYSYMBOL_VAR_TCP_IDLE_TIMEOUT = 26,      /* VAR_TCP_IDLE_TIMEOUT  */
-  YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE = 27,    /* VAR_EDNS_TCP_KEEPALIVE  */
-  YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 28, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT  */
-  YYSYMBOL_VAR_CHROOT = 29,                /* VAR_CHROOT  */
-  YYSYMBOL_VAR_USERNAME = 30,              /* VAR_USERNAME  */
-  YYSYMBOL_VAR_DIRECTORY = 31,             /* VAR_DIRECTORY  */
-  YYSYMBOL_VAR_LOGFILE = 32,               /* VAR_LOGFILE  */
-  YYSYMBOL_VAR_PIDFILE = 33,               /* VAR_PIDFILE  */
-  YYSYMBOL_VAR_MSG_CACHE_SIZE = 34,        /* VAR_MSG_CACHE_SIZE  */
-  YYSYMBOL_VAR_MSG_CACHE_SLABS = 35,       /* VAR_MSG_CACHE_SLABS  */
-  YYSYMBOL_VAR_NUM_QUERIES_PER_THREAD = 36, /* VAR_NUM_QUERIES_PER_THREAD  */
-  YYSYMBOL_VAR_RRSET_CACHE_SIZE = 37,      /* VAR_RRSET_CACHE_SIZE  */
-  YYSYMBOL_VAR_RRSET_CACHE_SLABS = 38,     /* VAR_RRSET_CACHE_SLABS  */
-  YYSYMBOL_VAR_OUTGOING_NUM_TCP = 39,      /* VAR_OUTGOING_NUM_TCP  */
-  YYSYMBOL_VAR_INFRA_HOST_TTL = 40,        /* VAR_INFRA_HOST_TTL  */
-  YYSYMBOL_VAR_INFRA_LAME_TTL = 41,        /* VAR_INFRA_LAME_TTL  */
-  YYSYMBOL_VAR_INFRA_CACHE_SLABS = 42,     /* VAR_INFRA_CACHE_SLABS  */
-  YYSYMBOL_VAR_INFRA_CACHE_NUMHOSTS = 43,  /* VAR_INFRA_CACHE_NUMHOSTS  */
-  YYSYMBOL_VAR_INFRA_CACHE_LAME_SIZE = 44, /* VAR_INFRA_CACHE_LAME_SIZE  */
-  YYSYMBOL_VAR_NAME = 45,                  /* VAR_NAME  */
-  YYSYMBOL_VAR_STUB_ZONE = 46,             /* VAR_STUB_ZONE  */
-  YYSYMBOL_VAR_STUB_HOST = 47,             /* VAR_STUB_HOST  */
-  YYSYMBOL_VAR_STUB_ADDR = 48,             /* VAR_STUB_ADDR  */
-  YYSYMBOL_VAR_TARGET_FETCH_POLICY = 49,   /* VAR_TARGET_FETCH_POLICY  */
-  YYSYMBOL_VAR_HARDEN_SHORT_BUFSIZE = 50,  /* VAR_HARDEN_SHORT_BUFSIZE  */
-  YYSYMBOL_VAR_HARDEN_LARGE_QUERIES = 51,  /* VAR_HARDEN_LARGE_QUERIES  */
-  YYSYMBOL_VAR_FORWARD_ZONE = 52,          /* VAR_FORWARD_ZONE  */
-  YYSYMBOL_VAR_FORWARD_HOST = 53,          /* VAR_FORWARD_HOST  */
-  YYSYMBOL_VAR_FORWARD_ADDR = 54,          /* VAR_FORWARD_ADDR  */
-  YYSYMBOL_VAR_DO_NOT_QUERY_ADDRESS = 55,  /* VAR_DO_NOT_QUERY_ADDRESS  */
-  YYSYMBOL_VAR_HIDE_IDENTITY = 56,         /* VAR_HIDE_IDENTITY  */
-  YYSYMBOL_VAR_HIDE_VERSION = 57,          /* VAR_HIDE_VERSION  */
-  YYSYMBOL_VAR_IDENTITY = 58,              /* VAR_IDENTITY  */
-  YYSYMBOL_VAR_VERSION = 59,               /* VAR_VERSION  */
-  YYSYMBOL_VAR_HARDEN_GLUE = 60,           /* VAR_HARDEN_GLUE  */
-  YYSYMBOL_VAR_MODULE_CONF = 61,           /* VAR_MODULE_CONF  */
-  YYSYMBOL_VAR_TRUST_ANCHOR_FILE = 62,     /* VAR_TRUST_ANCHOR_FILE  */
-  YYSYMBOL_VAR_TRUST_ANCHOR = 63,          /* VAR_TRUST_ANCHOR  */
-  YYSYMBOL_VAR_VAL_OVERRIDE_DATE = 64,     /* VAR_VAL_OVERRIDE_DATE  */
-  YYSYMBOL_VAR_BOGUS_TTL = 65,             /* VAR_BOGUS_TTL  */
-  YYSYMBOL_VAR_VAL_CLEAN_ADDITIONAL = 66,  /* VAR_VAL_CLEAN_ADDITIONAL  */
-  YYSYMBOL_VAR_VAL_PERMISSIVE_MODE = 67,   /* VAR_VAL_PERMISSIVE_MODE  */
-  YYSYMBOL_VAR_INCOMING_NUM_TCP = 68,      /* VAR_INCOMING_NUM_TCP  */
-  YYSYMBOL_VAR_MSG_BUFFER_SIZE = 69,       /* VAR_MSG_BUFFER_SIZE  */
-  YYSYMBOL_VAR_KEY_CACHE_SIZE = 70,        /* VAR_KEY_CACHE_SIZE  */
-  YYSYMBOL_VAR_KEY_CACHE_SLABS = 71,       /* VAR_KEY_CACHE_SLABS  */
-  YYSYMBOL_VAR_TRUSTED_KEYS_FILE = 72,     /* VAR_TRUSTED_KEYS_FILE  */
-  YYSYMBOL_VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 73, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS  */
-  YYSYMBOL_VAR_USE_SYSLOG = 74,            /* VAR_USE_SYSLOG  */
-  YYSYMBOL_VAR_OUTGOING_INTERFACE = 75,    /* VAR_OUTGOING_INTERFACE  */
-  YYSYMBOL_VAR_ROOT_HINTS = 76,            /* VAR_ROOT_HINTS  */
-  YYSYMBOL_VAR_DO_NOT_QUERY_LOCALHOST = 77, /* VAR_DO_NOT_QUERY_LOCALHOST  */
-  YYSYMBOL_VAR_CACHE_MAX_TTL = 78,         /* VAR_CACHE_MAX_TTL  */
-  YYSYMBOL_VAR_HARDEN_DNSSEC_STRIPPED = 79, /* VAR_HARDEN_DNSSEC_STRIPPED  */
-  YYSYMBOL_VAR_ACCESS_CONTROL = 80,        /* VAR_ACCESS_CONTROL  */
-  YYSYMBOL_VAR_LOCAL_ZONE = 81,            /* VAR_LOCAL_ZONE  */
-  YYSYMBOL_VAR_LOCAL_DATA = 82,            /* VAR_LOCAL_DATA  */
-  YYSYMBOL_VAR_INTERFACE_AUTOMATIC = 83,   /* VAR_INTERFACE_AUTOMATIC  */
-  YYSYMBOL_VAR_STATISTICS_INTERVAL = 84,   /* VAR_STATISTICS_INTERVAL  */
-  YYSYMBOL_VAR_DO_DAEMONIZE = 85,          /* VAR_DO_DAEMONIZE  */
-  YYSYMBOL_VAR_USE_CAPS_FOR_ID = 86,       /* VAR_USE_CAPS_FOR_ID  */
-  YYSYMBOL_VAR_STATISTICS_CUMULATIVE = 87, /* VAR_STATISTICS_CUMULATIVE  */
-  YYSYMBOL_VAR_OUTGOING_PORT_PERMIT = 88,  /* VAR_OUTGOING_PORT_PERMIT  */
-  YYSYMBOL_VAR_OUTGOING_PORT_AVOID = 89,   /* VAR_OUTGOING_PORT_AVOID  */
-  YYSYMBOL_VAR_DLV_ANCHOR_FILE = 90,       /* VAR_DLV_ANCHOR_FILE  */
-  YYSYMBOL_VAR_DLV_ANCHOR = 91,            /* VAR_DLV_ANCHOR  */
-  YYSYMBOL_VAR_NEG_CACHE_SIZE = 92,        /* VAR_NEG_CACHE_SIZE  */
-  YYSYMBOL_VAR_HARDEN_REFERRAL_PATH = 93,  /* VAR_HARDEN_REFERRAL_PATH  */
-  YYSYMBOL_VAR_PRIVATE_ADDRESS = 94,       /* VAR_PRIVATE_ADDRESS  */
-  YYSYMBOL_VAR_PRIVATE_DOMAIN = 95,        /* VAR_PRIVATE_DOMAIN  */
-  YYSYMBOL_VAR_REMOTE_CONTROL = 96,        /* VAR_REMOTE_CONTROL  */
-  YYSYMBOL_VAR_CONTROL_ENABLE = 97,        /* VAR_CONTROL_ENABLE  */
-  YYSYMBOL_VAR_CONTROL_INTERFACE = 98,     /* VAR_CONTROL_INTERFACE  */
-  YYSYMBOL_VAR_CONTROL_PORT = 99,          /* VAR_CONTROL_PORT  */
-  YYSYMBOL_VAR_SERVER_KEY_FILE = 100,      /* VAR_SERVER_KEY_FILE  */
-  YYSYMBOL_VAR_SERVER_CERT_FILE = 101,     /* VAR_SERVER_CERT_FILE  */
-  YYSYMBOL_VAR_CONTROL_KEY_FILE = 102,     /* VAR_CONTROL_KEY_FILE  */
-  YYSYMBOL_VAR_CONTROL_CERT_FILE = 103,    /* VAR_CONTROL_CERT_FILE  */
-  YYSYMBOL_VAR_CONTROL_USE_CERT = 104,     /* VAR_CONTROL_USE_CERT  */
-  YYSYMBOL_VAR_TCP_REUSE_TIMEOUT = 105,    /* VAR_TCP_REUSE_TIMEOUT  */
-  YYSYMBOL_VAR_MAX_REUSE_TCP_QUERIES = 106, /* VAR_MAX_REUSE_TCP_QUERIES  */
-  YYSYMBOL_VAR_EXTENDED_STATISTICS = 107,  /* VAR_EXTENDED_STATISTICS  */
-  YYSYMBOL_VAR_LOCAL_DATA_PTR = 108,       /* VAR_LOCAL_DATA_PTR  */
-  YYSYMBOL_VAR_JOSTLE_TIMEOUT = 109,       /* VAR_JOSTLE_TIMEOUT  */
-  YYSYMBOL_VAR_STUB_PRIME = 110,           /* VAR_STUB_PRIME  */
-  YYSYMBOL_VAR_UNWANTED_REPLY_THRESHOLD = 111, /* VAR_UNWANTED_REPLY_THRESHOLD  */
-  YYSYMBOL_VAR_LOG_TIME_ASCII = 112,       /* VAR_LOG_TIME_ASCII  */
-  YYSYMBOL_VAR_DOMAIN_INSECURE = 113,      /* VAR_DOMAIN_INSECURE  */
-  YYSYMBOL_VAR_PYTHON = 114,               /* VAR_PYTHON  */
-  YYSYMBOL_VAR_PYTHON_SCRIPT = 115,        /* VAR_PYTHON_SCRIPT  */
-  YYSYMBOL_VAR_VAL_SIG_SKEW_MIN = 116,     /* VAR_VAL_SIG_SKEW_MIN  */
-  YYSYMBOL_VAR_VAL_SIG_SKEW_MAX = 117,     /* VAR_VAL_SIG_SKEW_MAX  */
-  YYSYMBOL_VAR_VAL_MAX_RESTART = 118,      /* VAR_VAL_MAX_RESTART  */
-  YYSYMBOL_VAR_CACHE_MIN_TTL = 119,        /* VAR_CACHE_MIN_TTL  */
-  YYSYMBOL_VAR_VAL_LOG_LEVEL = 120,        /* VAR_VAL_LOG_LEVEL  */
-  YYSYMBOL_VAR_AUTO_TRUST_ANCHOR_FILE = 121, /* VAR_AUTO_TRUST_ANCHOR_FILE  */
-  YYSYMBOL_VAR_KEEP_MISSING = 122,         /* VAR_KEEP_MISSING  */
-  YYSYMBOL_VAR_ADD_HOLDDOWN = 123,         /* VAR_ADD_HOLDDOWN  */
-  YYSYMBOL_VAR_DEL_HOLDDOWN = 124,         /* VAR_DEL_HOLDDOWN  */
-  YYSYMBOL_VAR_SO_RCVBUF = 125,            /* VAR_SO_RCVBUF  */
-  YYSYMBOL_VAR_EDNS_BUFFER_SIZE = 126,     /* VAR_EDNS_BUFFER_SIZE  */
-  YYSYMBOL_VAR_PREFETCH = 127,             /* VAR_PREFETCH  */
-  YYSYMBOL_VAR_PREFETCH_KEY = 128,         /* VAR_PREFETCH_KEY  */
-  YYSYMBOL_VAR_SO_SNDBUF = 129,            /* VAR_SO_SNDBUF  */
-  YYSYMBOL_VAR_SO_REUSEPORT = 130,         /* VAR_SO_REUSEPORT  */
-  YYSYMBOL_VAR_HARDEN_BELOW_NXDOMAIN = 131, /* VAR_HARDEN_BELOW_NXDOMAIN  */
-  YYSYMBOL_VAR_IGNORE_CD_FLAG = 132,       /* VAR_IGNORE_CD_FLAG  */
-  YYSYMBOL_VAR_LOG_QUERIES = 133,          /* VAR_LOG_QUERIES  */
-  YYSYMBOL_VAR_LOG_REPLIES = 134,          /* VAR_LOG_REPLIES  */
-  YYSYMBOL_VAR_LOG_LOCAL_ACTIONS = 135,    /* VAR_LOG_LOCAL_ACTIONS  */
-  YYSYMBOL_VAR_TCP_UPSTREAM = 136,         /* VAR_TCP_UPSTREAM  */
-  YYSYMBOL_VAR_SSL_UPSTREAM = 137,         /* VAR_SSL_UPSTREAM  */
-  YYSYMBOL_VAR_TCP_AUTH_QUERY_TIMEOUT = 138, /* VAR_TCP_AUTH_QUERY_TIMEOUT  */
-  YYSYMBOL_VAR_SSL_SERVICE_KEY = 139,      /* VAR_SSL_SERVICE_KEY  */
-  YYSYMBOL_VAR_SSL_SERVICE_PEM = 140,      /* VAR_SSL_SERVICE_PEM  */
-  YYSYMBOL_VAR_SSL_PORT = 141,             /* VAR_SSL_PORT  */
-  YYSYMBOL_VAR_FORWARD_FIRST = 142,        /* VAR_FORWARD_FIRST  */
-  YYSYMBOL_VAR_STUB_SSL_UPSTREAM = 143,    /* VAR_STUB_SSL_UPSTREAM  */
-  YYSYMBOL_VAR_FORWARD_SSL_UPSTREAM = 144, /* VAR_FORWARD_SSL_UPSTREAM  */
-  YYSYMBOL_VAR_TLS_CERT_BUNDLE = 145,      /* VAR_TLS_CERT_BUNDLE  */
-  YYSYMBOL_VAR_STUB_TCP_UPSTREAM = 146,    /* VAR_STUB_TCP_UPSTREAM  */
-  YYSYMBOL_VAR_FORWARD_TCP_UPSTREAM = 147, /* VAR_FORWARD_TCP_UPSTREAM  */
-  YYSYMBOL_VAR_HTTPS_PORT = 148,           /* VAR_HTTPS_PORT  */
-  YYSYMBOL_VAR_HTTP_ENDPOINT = 149,        /* VAR_HTTP_ENDPOINT  */
-  YYSYMBOL_VAR_HTTP_MAX_STREAMS = 150,     /* VAR_HTTP_MAX_STREAMS  */
-  YYSYMBOL_VAR_HTTP_QUERY_BUFFER_SIZE = 151, /* VAR_HTTP_QUERY_BUFFER_SIZE  */
-  YYSYMBOL_VAR_HTTP_RESPONSE_BUFFER_SIZE = 152, /* VAR_HTTP_RESPONSE_BUFFER_SIZE  */
-  YYSYMBOL_VAR_HTTP_NODELAY = 153,         /* VAR_HTTP_NODELAY  */
-  YYSYMBOL_VAR_HTTP_NOTLS_DOWNSTREAM = 154, /* VAR_HTTP_NOTLS_DOWNSTREAM  */
-  YYSYMBOL_VAR_STUB_FIRST = 155,           /* VAR_STUB_FIRST  */
-  YYSYMBOL_VAR_MINIMAL_RESPONSES = 156,    /* VAR_MINIMAL_RESPONSES  */
-  YYSYMBOL_VAR_RRSET_ROUNDROBIN = 157,     /* VAR_RRSET_ROUNDROBIN  */
-  YYSYMBOL_VAR_MAX_UDP_SIZE = 158,         /* VAR_MAX_UDP_SIZE  */
-  YYSYMBOL_VAR_DELAY_CLOSE = 159,          /* VAR_DELAY_CLOSE  */
-  YYSYMBOL_VAR_UDP_CONNECT = 160,          /* VAR_UDP_CONNECT  */
-  YYSYMBOL_VAR_UNBLOCK_LAN_ZONES = 161,    /* VAR_UNBLOCK_LAN_ZONES  */
-  YYSYMBOL_VAR_INSECURE_LAN_ZONES = 162,   /* VAR_INSECURE_LAN_ZONES  */
-  YYSYMBOL_VAR_INFRA_CACHE_MIN_RTT = 163,  /* VAR_INFRA_CACHE_MIN_RTT  */
-  YYSYMBOL_VAR_INFRA_KEEP_PROBING = 164,   /* VAR_INFRA_KEEP_PROBING  */
-  YYSYMBOL_VAR_DNS64_PREFIX = 165,         /* VAR_DNS64_PREFIX  */
-  YYSYMBOL_VAR_DNS64_SYNTHALL = 166,       /* VAR_DNS64_SYNTHALL  */
-  YYSYMBOL_VAR_DNS64_IGNORE_AAAA = 167,    /* VAR_DNS64_IGNORE_AAAA  */
-  YYSYMBOL_VAR_DNSTAP = 168,               /* VAR_DNSTAP  */
-  YYSYMBOL_VAR_DNSTAP_ENABLE = 169,        /* VAR_DNSTAP_ENABLE  */
-  YYSYMBOL_VAR_DNSTAP_SOCKET_PATH = 170,   /* VAR_DNSTAP_SOCKET_PATH  */
-  YYSYMBOL_VAR_DNSTAP_IP = 171,            /* VAR_DNSTAP_IP  */
-  YYSYMBOL_VAR_DNSTAP_TLS = 172,           /* VAR_DNSTAP_TLS  */
-  YYSYMBOL_VAR_DNSTAP_TLS_SERVER_NAME = 173, /* VAR_DNSTAP_TLS_SERVER_NAME  */
-  YYSYMBOL_VAR_DNSTAP_TLS_CERT_BUNDLE = 174, /* VAR_DNSTAP_TLS_CERT_BUNDLE  */
-  YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 175, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE  */
-  YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 176, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE  */
-  YYSYMBOL_VAR_DNSTAP_SEND_IDENTITY = 177, /* VAR_DNSTAP_SEND_IDENTITY  */
-  YYSYMBOL_VAR_DNSTAP_SEND_VERSION = 178,  /* VAR_DNSTAP_SEND_VERSION  */
-  YYSYMBOL_VAR_DNSTAP_BIDIRECTIONAL = 179, /* VAR_DNSTAP_BIDIRECTIONAL  */
-  YYSYMBOL_VAR_DNSTAP_IDENTITY = 180,      /* VAR_DNSTAP_IDENTITY  */
-  YYSYMBOL_VAR_DNSTAP_VERSION = 181,       /* VAR_DNSTAP_VERSION  */
-  YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 182, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES  */
-  YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 183, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES  */
-  YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 184, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES  */
-  YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 185, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES  */
-  YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 186, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES  */
-  YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 187, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES  */
-  YYSYMBOL_VAR_RESPONSE_IP_TAG = 188,      /* VAR_RESPONSE_IP_TAG  */
-  YYSYMBOL_VAR_RESPONSE_IP = 189,          /* VAR_RESPONSE_IP  */
-  YYSYMBOL_VAR_RESPONSE_IP_DATA = 190,     /* VAR_RESPONSE_IP_DATA  */
-  YYSYMBOL_VAR_HARDEN_ALGO_DOWNGRADE = 191, /* VAR_HARDEN_ALGO_DOWNGRADE  */
-  YYSYMBOL_VAR_IP_TRANSPARENT = 192,       /* VAR_IP_TRANSPARENT  */
-  YYSYMBOL_VAR_IP_DSCP = 193,              /* VAR_IP_DSCP  */
-  YYSYMBOL_VAR_DISABLE_DNSSEC_LAME_CHECK = 194, /* VAR_DISABLE_DNSSEC_LAME_CHECK  */
-  YYSYMBOL_VAR_IP_RATELIMIT = 195,         /* VAR_IP_RATELIMIT  */
-  YYSYMBOL_VAR_IP_RATELIMIT_SLABS = 196,   /* VAR_IP_RATELIMIT_SLABS  */
-  YYSYMBOL_VAR_IP_RATELIMIT_SIZE = 197,    /* VAR_IP_RATELIMIT_SIZE  */
-  YYSYMBOL_VAR_RATELIMIT = 198,            /* VAR_RATELIMIT  */
-  YYSYMBOL_VAR_RATELIMIT_SLABS = 199,      /* VAR_RATELIMIT_SLABS  */
-  YYSYMBOL_VAR_RATELIMIT_SIZE = 200,       /* VAR_RATELIMIT_SIZE  */
-  YYSYMBOL_VAR_OUTBOUND_MSG_RETRY = 201,   /* VAR_OUTBOUND_MSG_RETRY  */
-  YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 202, /* VAR_RATELIMIT_FOR_DOMAIN  */
-  YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 203, /* VAR_RATELIMIT_BELOW_DOMAIN  */
-  YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 204,  /* VAR_IP_RATELIMIT_FACTOR  */
-  YYSYMBOL_VAR_RATELIMIT_FACTOR = 205,     /* VAR_RATELIMIT_FACTOR  */
-  YYSYMBOL_VAR_IP_RATELIMIT_BACKOFF = 206, /* VAR_IP_RATELIMIT_BACKOFF  */
-  YYSYMBOL_VAR_RATELIMIT_BACKOFF = 207,    /* VAR_RATELIMIT_BACKOFF  */
-  YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 208,   /* VAR_SEND_CLIENT_SUBNET  */
-  YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 209,   /* VAR_CLIENT_SUBNET_ZONE  */
-  YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 210, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD  */
-  YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 211, /* VAR_CLIENT_SUBNET_OPCODE  */
-  YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 212, /* VAR_MAX_CLIENT_SUBNET_IPV4  */
-  YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 213, /* VAR_MAX_CLIENT_SUBNET_IPV6  */
-  YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 214, /* VAR_MIN_CLIENT_SUBNET_IPV4  */
-  YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 215, /* VAR_MIN_CLIENT_SUBNET_IPV6  */
-  YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 216, /* VAR_MAX_ECS_TREE_SIZE_IPV4  */
-  YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 217, /* VAR_MAX_ECS_TREE_SIZE_IPV6  */
-  YYSYMBOL_VAR_CAPS_WHITELIST = 218,       /* VAR_CAPS_WHITELIST  */
-  YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 219, /* VAR_CACHE_MAX_NEGATIVE_TTL  */
-  YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 220, /* VAR_PERMIT_SMALL_HOLDDOWN  */
-  YYSYMBOL_VAR_QNAME_MINIMISATION = 221,   /* VAR_QNAME_MINIMISATION  */
-  YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 222, /* VAR_QNAME_MINIMISATION_STRICT  */
-  YYSYMBOL_VAR_IP_FREEBIND = 223,          /* VAR_IP_FREEBIND  */
-  YYSYMBOL_VAR_DEFINE_TAG = 224,           /* VAR_DEFINE_TAG  */
-  YYSYMBOL_VAR_LOCAL_ZONE_TAG = 225,       /* VAR_LOCAL_ZONE_TAG  */
-  YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 226,   /* VAR_ACCESS_CONTROL_TAG  */
-  YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 227,  /* VAR_LOCAL_ZONE_OVERRIDE  */
-  YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 228, /* VAR_ACCESS_CONTROL_TAG_ACTION  */
-  YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 229, /* VAR_ACCESS_CONTROL_TAG_DATA  */
-  YYSYMBOL_VAR_VIEW = 230,                 /* VAR_VIEW  */
-  YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 231,  /* VAR_ACCESS_CONTROL_VIEW  */
-  YYSYMBOL_VAR_VIEW_FIRST = 232,           /* VAR_VIEW_FIRST  */
-  YYSYMBOL_VAR_SERVE_EXPIRED = 233,        /* VAR_SERVE_EXPIRED  */
-  YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 234,    /* VAR_SERVE_EXPIRED_TTL  */
-  YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 235, /* VAR_SERVE_EXPIRED_TTL_RESET  */
-  YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 236, /* VAR_SERVE_EXPIRED_REPLY_TTL  */
-  YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 237, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT  */
-  YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 238,   /* VAR_SERVE_ORIGINAL_TTL  */
-  YYSYMBOL_VAR_FAKE_DSA = 239,             /* VAR_FAKE_DSA  */
-  YYSYMBOL_VAR_FAKE_SHA1 = 240,            /* VAR_FAKE_SHA1  */
-  YYSYMBOL_VAR_LOG_IDENTITY = 241,         /* VAR_LOG_IDENTITY  */
-  YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 242,     /* VAR_HIDE_TRUSTANCHOR  */
-  YYSYMBOL_VAR_HIDE_HTTP_USER_AGENT = 243, /* VAR_HIDE_HTTP_USER_AGENT  */
-  YYSYMBOL_VAR_HTTP_USER_AGENT = 244,      /* VAR_HTTP_USER_AGENT  */
-  YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 245, /* VAR_TRUST_ANCHOR_SIGNALING  */
-  YYSYMBOL_VAR_AGGRESSIVE_NSEC = 246,      /* VAR_AGGRESSIVE_NSEC  */
-  YYSYMBOL_VAR_USE_SYSTEMD = 247,          /* VAR_USE_SYSTEMD  */
-  YYSYMBOL_VAR_SHM_ENABLE = 248,           /* VAR_SHM_ENABLE  */
-  YYSYMBOL_VAR_SHM_KEY = 249,              /* VAR_SHM_KEY  */
-  YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 250,    /* VAR_ROOT_KEY_SENTINEL  */
-  YYSYMBOL_VAR_DNSCRYPT = 251,             /* VAR_DNSCRYPT  */
-  YYSYMBOL_VAR_DNSCRYPT_ENABLE = 252,      /* VAR_DNSCRYPT_ENABLE  */
-  YYSYMBOL_VAR_DNSCRYPT_PORT = 253,        /* VAR_DNSCRYPT_PORT  */
-  YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 254,    /* VAR_DNSCRYPT_PROVIDER  */
-  YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 255,  /* VAR_DNSCRYPT_SECRET_KEY  */
-  YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 256, /* VAR_DNSCRYPT_PROVIDER_CERT  */
-  YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 257, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED  */
-  YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 258, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE  */
-  YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 259, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS  */
-  YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 260, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE  */
-  YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 261, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS  */
-  YYSYMBOL_VAR_PAD_RESPONSES = 262,        /* VAR_PAD_RESPONSES  */
-  YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 263, /* VAR_PAD_RESPONSES_BLOCK_SIZE  */
-  YYSYMBOL_VAR_PAD_QUERIES = 264,          /* VAR_PAD_QUERIES  */
-  YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 265, /* VAR_PAD_QUERIES_BLOCK_SIZE  */
-  YYSYMBOL_VAR_IPSECMOD_ENABLED = 266,     /* VAR_IPSECMOD_ENABLED  */
-  YYSYMBOL_VAR_IPSECMOD_HOOK = 267,        /* VAR_IPSECMOD_HOOK  */
-  YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 268, /* VAR_IPSECMOD_IGNORE_BOGUS  */
-  YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 269,     /* VAR_IPSECMOD_MAX_TTL  */
-  YYSYMBOL_VAR_IPSECMOD_WHITELIST = 270,   /* VAR_IPSECMOD_WHITELIST  */
-  YYSYMBOL_VAR_IPSECMOD_STRICT = 271,      /* VAR_IPSECMOD_STRICT  */
-  YYSYMBOL_VAR_CACHEDB = 272,              /* VAR_CACHEDB  */
-  YYSYMBOL_VAR_CACHEDB_BACKEND = 273,      /* VAR_CACHEDB_BACKEND  */
-  YYSYMBOL_VAR_CACHEDB_SECRETSEED = 274,   /* VAR_CACHEDB_SECRETSEED  */
-  YYSYMBOL_VAR_CACHEDB_REDISHOST = 275,    /* VAR_CACHEDB_REDISHOST  */
-  YYSYMBOL_VAR_CACHEDB_REDISPORT = 276,    /* VAR_CACHEDB_REDISPORT  */
-  YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 277, /* VAR_CACHEDB_REDISTIMEOUT  */
-  YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 278, /* VAR_CACHEDB_REDISEXPIRERECORDS  */
-  YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 279, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM  */
-  YYSYMBOL_VAR_FOR_UPSTREAM = 280,         /* VAR_FOR_UPSTREAM  */
-  YYSYMBOL_VAR_AUTH_ZONE = 281,            /* VAR_AUTH_ZONE  */
-  YYSYMBOL_VAR_ZONEFILE = 282,             /* VAR_ZONEFILE  */
-  YYSYMBOL_VAR_MASTER = 283,               /* VAR_MASTER  */
-  YYSYMBOL_VAR_URL = 284,                  /* VAR_URL  */
-  YYSYMBOL_VAR_FOR_DOWNSTREAM = 285,       /* VAR_FOR_DOWNSTREAM  */
-  YYSYMBOL_VAR_FALLBACK_ENABLED = 286,     /* VAR_FALLBACK_ENABLED  */
-  YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 287,  /* VAR_TLS_ADDITIONAL_PORT  */
-  YYSYMBOL_VAR_LOW_RTT = 288,              /* VAR_LOW_RTT  */
-  YYSYMBOL_VAR_LOW_RTT_PERMIL = 289,       /* VAR_LOW_RTT_PERMIL  */
-  YYSYMBOL_VAR_FAST_SERVER_PERMIL = 290,   /* VAR_FAST_SERVER_PERMIL  */
-  YYSYMBOL_VAR_FAST_SERVER_NUM = 291,      /* VAR_FAST_SERVER_NUM  */
-  YYSYMBOL_VAR_ALLOW_NOTIFY = 292,         /* VAR_ALLOW_NOTIFY  */
-  YYSYMBOL_VAR_TLS_WIN_CERT = 293,         /* VAR_TLS_WIN_CERT  */
-  YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 294, /* VAR_TCP_CONNECTION_LIMIT  */
-  YYSYMBOL_VAR_FORWARD_NO_CACHE = 295,     /* VAR_FORWARD_NO_CACHE  */
-  YYSYMBOL_VAR_STUB_NO_CACHE = 296,        /* VAR_STUB_NO_CACHE  */
-  YYSYMBOL_VAR_LOG_SERVFAIL = 297,         /* VAR_LOG_SERVFAIL  */
-  YYSYMBOL_VAR_DENY_ANY = 298,             /* VAR_DENY_ANY  */
-  YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 299, /* VAR_UNKNOWN_SERVER_TIME_LIMIT  */
-  YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 300,   /* VAR_LOG_TAG_QUERYREPLY  */
-  YYSYMBOL_VAR_STREAM_WAIT_SIZE = 301,     /* VAR_STREAM_WAIT_SIZE  */
-  YYSYMBOL_VAR_TLS_CIPHERS = 302,          /* VAR_TLS_CIPHERS  */
-  YYSYMBOL_VAR_TLS_CIPHERSUITES = 303,     /* VAR_TLS_CIPHERSUITES  */
-  YYSYMBOL_VAR_TLS_USE_SNI = 304,          /* VAR_TLS_USE_SNI  */
-  YYSYMBOL_VAR_IPSET = 305,                /* VAR_IPSET  */
-  YYSYMBOL_VAR_IPSET_NAME_V4 = 306,        /* VAR_IPSET_NAME_V4  */
-  YYSYMBOL_VAR_IPSET_NAME_V6 = 307,        /* VAR_IPSET_NAME_V6  */
-  YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 308, /* VAR_TLS_SESSION_TICKET_KEYS  */
-  YYSYMBOL_VAR_RPZ = 309,                  /* VAR_RPZ  */
-  YYSYMBOL_VAR_TAGS = 310,                 /* VAR_TAGS  */
-  YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 311,  /* VAR_RPZ_ACTION_OVERRIDE  */
-  YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 312,   /* VAR_RPZ_CNAME_OVERRIDE  */
-  YYSYMBOL_VAR_RPZ_LOG = 313,              /* VAR_RPZ_LOG  */
-  YYSYMBOL_VAR_RPZ_LOG_NAME = 314,         /* VAR_RPZ_LOG_NAME  */
-  YYSYMBOL_VAR_DYNLIB = 315,               /* VAR_DYNLIB  */
-  YYSYMBOL_VAR_DYNLIB_FILE = 316,          /* VAR_DYNLIB_FILE  */
-  YYSYMBOL_VAR_EDNS_CLIENT_STRING = 317,   /* VAR_EDNS_CLIENT_STRING  */
-  YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 318, /* VAR_EDNS_CLIENT_STRING_OPCODE  */
-  YYSYMBOL_VAR_NSID = 319,                 /* VAR_NSID  */
-  YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 320, /* VAR_ZONEMD_PERMISSIVE_MODE  */
-  YYSYMBOL_VAR_ZONEMD_CHECK = 321,         /* VAR_ZONEMD_CHECK  */
-  YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 322, /* VAR_ZONEMD_REJECT_ABSENCE  */
-  YYSYMBOL_VAR_RPZ_SIGNAL_NXDOMAIN_RA = 323, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA  */
-  YYSYMBOL_VAR_INTERFACE_AUTOMATIC_PORTS = 324, /* VAR_INTERFACE_AUTOMATIC_PORTS  */
-  YYSYMBOL_YYACCEPT = 325,                 /* $accept  */
-  YYSYMBOL_toplevelvars = 326,             /* toplevelvars  */
-  YYSYMBOL_toplevelvar = 327,              /* toplevelvar  */
-  YYSYMBOL_force_toplevel = 328,           /* force_toplevel  */
-  YYSYMBOL_serverstart = 329,              /* serverstart  */
-  YYSYMBOL_contents_server = 330,          /* contents_server  */
-  YYSYMBOL_content_server = 331,           /* content_server  */
-  YYSYMBOL_stubstart = 332,                /* stubstart  */
-  YYSYMBOL_contents_stub = 333,            /* contents_stub  */
-  YYSYMBOL_content_stub = 334,             /* content_stub  */
-  YYSYMBOL_forwardstart = 335,             /* forwardstart  */
-  YYSYMBOL_contents_forward = 336,         /* contents_forward  */
-  YYSYMBOL_content_forward = 337,          /* content_forward  */
-  YYSYMBOL_viewstart = 338,                /* viewstart  */
-  YYSYMBOL_contents_view = 339,            /* contents_view  */
-  YYSYMBOL_content_view = 340,             /* content_view  */
-  YYSYMBOL_authstart = 341,                /* authstart  */
-  YYSYMBOL_contents_auth = 342,            /* contents_auth  */
-  YYSYMBOL_content_auth = 343,             /* content_auth  */
-  YYSYMBOL_rpz_tag = 344,                  /* rpz_tag  */
-  YYSYMBOL_rpz_action_override = 345,      /* rpz_action_override  */
-  YYSYMBOL_rpz_cname_override = 346,       /* rpz_cname_override  */
-  YYSYMBOL_rpz_log = 347,                  /* rpz_log  */
-  YYSYMBOL_rpz_log_name = 348,             /* rpz_log_name  */
-  YYSYMBOL_rpz_signal_nxdomain_ra = 349,   /* rpz_signal_nxdomain_ra  */
-  YYSYMBOL_rpzstart = 350,                 /* rpzstart  */
-  YYSYMBOL_contents_rpz = 351,             /* contents_rpz  */
-  YYSYMBOL_content_rpz = 352,              /* content_rpz  */
-  YYSYMBOL_server_num_threads = 353,       /* server_num_threads  */
-  YYSYMBOL_server_verbosity = 354,         /* server_verbosity  */
-  YYSYMBOL_server_statistics_interval = 355, /* server_statistics_interval  */
-  YYSYMBOL_server_statistics_cumulative = 356, /* server_statistics_cumulative  */
-  YYSYMBOL_server_extended_statistics = 357, /* server_extended_statistics  */
-  YYSYMBOL_server_shm_enable = 358,        /* server_shm_enable  */
-  YYSYMBOL_server_shm_key = 359,           /* server_shm_key  */
-  YYSYMBOL_server_port = 360,              /* server_port  */
-  YYSYMBOL_server_send_client_subnet = 361, /* server_send_client_subnet  */
-  YYSYMBOL_server_client_subnet_zone = 362, /* server_client_subnet_zone  */
-  YYSYMBOL_server_client_subnet_always_forward = 363, /* server_client_subnet_always_forward  */
-  YYSYMBOL_server_client_subnet_opcode = 364, /* server_client_subnet_opcode  */
-  YYSYMBOL_server_max_client_subnet_ipv4 = 365, /* server_max_client_subnet_ipv4  */
-  YYSYMBOL_server_max_client_subnet_ipv6 = 366, /* server_max_client_subnet_ipv6  */
-  YYSYMBOL_server_min_client_subnet_ipv4 = 367, /* server_min_client_subnet_ipv4  */
-  YYSYMBOL_server_min_client_subnet_ipv6 = 368, /* server_min_client_subnet_ipv6  */
-  YYSYMBOL_server_max_ecs_tree_size_ipv4 = 369, /* server_max_ecs_tree_size_ipv4  */
-  YYSYMBOL_server_max_ecs_tree_size_ipv6 = 370, /* server_max_ecs_tree_size_ipv6  */
-  YYSYMBOL_server_interface = 371,         /* server_interface  */
-  YYSYMBOL_server_outgoing_interface = 372, /* server_outgoing_interface  */
-  YYSYMBOL_server_outgoing_range = 373,    /* server_outgoing_range  */
-  YYSYMBOL_server_outgoing_port_permit = 374, /* server_outgoing_port_permit  */
-  YYSYMBOL_server_outgoing_port_avoid = 375, /* server_outgoing_port_avoid  */
-  YYSYMBOL_server_outgoing_num_tcp = 376,  /* server_outgoing_num_tcp  */
-  YYSYMBOL_server_incoming_num_tcp = 377,  /* server_incoming_num_tcp  */
-  YYSYMBOL_server_interface_automatic = 378, /* server_interface_automatic  */
-  YYSYMBOL_server_interface_automatic_ports = 379, /* server_interface_automatic_ports  */
-  YYSYMBOL_server_do_ip4 = 380,            /* server_do_ip4  */
-  YYSYMBOL_server_do_ip6 = 381,            /* server_do_ip6  */
-  YYSYMBOL_server_do_udp = 382,            /* server_do_udp  */
-  YYSYMBOL_server_do_tcp = 383,            /* server_do_tcp  */
-  YYSYMBOL_server_prefer_ip4 = 384,        /* server_prefer_ip4  */
-  YYSYMBOL_server_prefer_ip6 = 385,        /* server_prefer_ip6  */
-  YYSYMBOL_server_tcp_mss = 386,           /* server_tcp_mss  */
-  YYSYMBOL_server_outgoing_tcp_mss = 387,  /* server_outgoing_tcp_mss  */
-  YYSYMBOL_server_tcp_idle_timeout = 388,  /* server_tcp_idle_timeout  */
-  YYSYMBOL_server_max_reuse_tcp_queries = 389, /* server_max_reuse_tcp_queries  */
-  YYSYMBOL_server_tcp_reuse_timeout = 390, /* server_tcp_reuse_timeout  */
-  YYSYMBOL_server_tcp_auth_query_timeout = 391, /* server_tcp_auth_query_timeout  */
-  YYSYMBOL_server_tcp_keepalive = 392,     /* server_tcp_keepalive  */
-  YYSYMBOL_server_tcp_keepalive_timeout = 393, /* server_tcp_keepalive_timeout  */
-  YYSYMBOL_server_tcp_upstream = 394,      /* server_tcp_upstream  */
-  YYSYMBOL_server_udp_upstream_without_downstream = 395, /* server_udp_upstream_without_downstream  */
-  YYSYMBOL_server_ssl_upstream = 396,      /* server_ssl_upstream  */
-  YYSYMBOL_server_ssl_service_key = 397,   /* server_ssl_service_key  */
-  YYSYMBOL_server_ssl_service_pem = 398,   /* server_ssl_service_pem  */
-  YYSYMBOL_server_ssl_port = 399,          /* server_ssl_port  */
-  YYSYMBOL_server_tls_cert_bundle = 400,   /* server_tls_cert_bundle  */
-  YYSYMBOL_server_tls_win_cert = 401,      /* server_tls_win_cert  */
-  YYSYMBOL_server_tls_additional_port = 402, /* server_tls_additional_port  */
-  YYSYMBOL_server_tls_ciphers = 403,       /* server_tls_ciphers  */
-  YYSYMBOL_server_tls_ciphersuites = 404,  /* server_tls_ciphersuites  */
-  YYSYMBOL_server_tls_session_ticket_keys = 405, /* server_tls_session_ticket_keys  */
-  YYSYMBOL_server_tls_use_sni = 406,       /* server_tls_use_sni  */
-  YYSYMBOL_server_https_port = 407,        /* server_https_port  */
-  YYSYMBOL_server_http_endpoint = 408,     /* server_http_endpoint  */
-  YYSYMBOL_server_http_max_streams = 409,  /* server_http_max_streams  */
-  YYSYMBOL_server_http_query_buffer_size = 410, /* server_http_query_buffer_size  */
-  YYSYMBOL_server_http_response_buffer_size = 411, /* server_http_response_buffer_size  */
-  YYSYMBOL_server_http_nodelay = 412,      /* server_http_nodelay  */
-  YYSYMBOL_server_http_notls_downstream = 413, /* server_http_notls_downstream  */
-  YYSYMBOL_server_use_systemd = 414,       /* server_use_systemd  */
-  YYSYMBOL_server_do_daemonize = 415,      /* server_do_daemonize  */
-  YYSYMBOL_server_use_syslog = 416,        /* server_use_syslog  */
-  YYSYMBOL_server_log_time_ascii = 417,    /* server_log_time_ascii  */
-  YYSYMBOL_server_log_queries = 418,       /* server_log_queries  */
-  YYSYMBOL_server_log_replies = 419,       /* server_log_replies  */
-  YYSYMBOL_server_log_tag_queryreply = 420, /* server_log_tag_queryreply  */
-  YYSYMBOL_server_log_servfail = 421,      /* server_log_servfail  */
-  YYSYMBOL_server_log_local_actions = 422, /* server_log_local_actions  */
-  YYSYMBOL_server_chroot = 423,            /* server_chroot  */
-  YYSYMBOL_server_username = 424,          /* server_username  */
-  YYSYMBOL_server_directory = 425,         /* server_directory  */
-  YYSYMBOL_server_logfile = 426,           /* server_logfile  */
-  YYSYMBOL_server_pidfile = 427,           /* server_pidfile  */
-  YYSYMBOL_server_root_hints = 428,        /* server_root_hints  */
-  YYSYMBOL_server_dlv_anchor_file = 429,   /* server_dlv_anchor_file  */
-  YYSYMBOL_server_dlv_anchor = 430,        /* server_dlv_anchor  */
-  YYSYMBOL_server_auto_trust_anchor_file = 431, /* server_auto_trust_anchor_file  */
-  YYSYMBOL_server_trust_anchor_file = 432, /* server_trust_anchor_file  */
-  YYSYMBOL_server_trusted_keys_file = 433, /* server_trusted_keys_file  */
-  YYSYMBOL_server_trust_anchor = 434,      /* server_trust_anchor  */
-  YYSYMBOL_server_trust_anchor_signaling = 435, /* server_trust_anchor_signaling  */
-  YYSYMBOL_server_root_key_sentinel = 436, /* server_root_key_sentinel  */
-  YYSYMBOL_server_domain_insecure = 437,   /* server_domain_insecure  */
-  YYSYMBOL_server_hide_identity = 438,     /* server_hide_identity  */
-  YYSYMBOL_server_hide_version = 439,      /* server_hide_version  */
-  YYSYMBOL_server_hide_trustanchor = 440,  /* server_hide_trustanchor  */
-  YYSYMBOL_server_hide_http_user_agent = 441, /* server_hide_http_user_agent  */
-  YYSYMBOL_server_identity = 442,          /* server_identity  */
-  YYSYMBOL_server_version = 443,           /* server_version  */
-  YYSYMBOL_server_http_user_agent = 444,   /* server_http_user_agent  */
-  YYSYMBOL_server_nsid = 445,              /* server_nsid  */
-  YYSYMBOL_server_so_rcvbuf = 446,         /* server_so_rcvbuf  */
-  YYSYMBOL_server_so_sndbuf = 447,         /* server_so_sndbuf  */
-  YYSYMBOL_server_so_reuseport = 448,      /* server_so_reuseport  */
-  YYSYMBOL_server_ip_transparent = 449,    /* server_ip_transparent  */
-  YYSYMBOL_server_ip_freebind = 450,       /* server_ip_freebind  */
-  YYSYMBOL_server_ip_dscp = 451,           /* server_ip_dscp  */
-  YYSYMBOL_server_stream_wait_size = 452,  /* server_stream_wait_size  */
-  YYSYMBOL_server_edns_buffer_size = 453,  /* server_edns_buffer_size  */
-  YYSYMBOL_server_msg_buffer_size = 454,   /* server_msg_buffer_size  */
-  YYSYMBOL_server_msg_cache_size = 455,    /* server_msg_cache_size  */
-  YYSYMBOL_server_msg_cache_slabs = 456,   /* server_msg_cache_slabs  */
-  YYSYMBOL_server_num_queries_per_thread = 457, /* server_num_queries_per_thread  */
-  YYSYMBOL_server_jostle_timeout = 458,    /* server_jostle_timeout  */
-  YYSYMBOL_server_delay_close = 459,       /* server_delay_close  */
-  YYSYMBOL_server_udp_connect = 460,       /* server_udp_connect  */
-  YYSYMBOL_server_unblock_lan_zones = 461, /* server_unblock_lan_zones  */
-  YYSYMBOL_server_insecure_lan_zones = 462, /* server_insecure_lan_zones  */
-  YYSYMBOL_server_rrset_cache_size = 463,  /* server_rrset_cache_size  */
-  YYSYMBOL_server_rrset_cache_slabs = 464, /* server_rrset_cache_slabs  */
-  YYSYMBOL_server_infra_host_ttl = 465,    /* server_infra_host_ttl  */
-  YYSYMBOL_server_infra_lame_ttl = 466,    /* server_infra_lame_ttl  */
-  YYSYMBOL_server_infra_cache_numhosts = 467, /* server_infra_cache_numhosts  */
-  YYSYMBOL_server_infra_cache_lame_size = 468, /* server_infra_cache_lame_size  */
-  YYSYMBOL_server_infra_cache_slabs = 469, /* server_infra_cache_slabs  */
-  YYSYMBOL_server_infra_cache_min_rtt = 470, /* server_infra_cache_min_rtt  */
-  YYSYMBOL_server_infra_keep_probing = 471, /* server_infra_keep_probing  */
-  YYSYMBOL_server_target_fetch_policy = 472, /* server_target_fetch_policy  */
-  YYSYMBOL_server_harden_short_bufsize = 473, /* server_harden_short_bufsize  */
-  YYSYMBOL_server_harden_large_queries = 474, /* server_harden_large_queries  */
-  YYSYMBOL_server_harden_glue = 475,       /* server_harden_glue  */
-  YYSYMBOL_server_harden_dnssec_stripped = 476, /* server_harden_dnssec_stripped  */
-  YYSYMBOL_server_harden_below_nxdomain = 477, /* server_harden_below_nxdomain  */
-  YYSYMBOL_server_harden_referral_path = 478, /* server_harden_referral_path  */
-  YYSYMBOL_server_harden_algo_downgrade = 479, /* server_harden_algo_downgrade  */
-  YYSYMBOL_server_use_caps_for_id = 480,   /* server_use_caps_for_id  */
-  YYSYMBOL_server_caps_whitelist = 481,    /* server_caps_whitelist  */
-  YYSYMBOL_server_private_address = 482,   /* server_private_address  */
-  YYSYMBOL_server_private_domain = 483,    /* server_private_domain  */
-  YYSYMBOL_server_prefetch = 484,          /* server_prefetch  */
-  YYSYMBOL_server_prefetch_key = 485,      /* server_prefetch_key  */
-  YYSYMBOL_server_deny_any = 486,          /* server_deny_any  */
-  YYSYMBOL_server_unwanted_reply_threshold = 487, /* server_unwanted_reply_threshold  */
-  YYSYMBOL_server_do_not_query_address = 488, /* server_do_not_query_address  */
-  YYSYMBOL_server_do_not_query_localhost = 489, /* server_do_not_query_localhost  */
-  YYSYMBOL_server_access_control = 490,    /* server_access_control  */
-  YYSYMBOL_server_module_conf = 491,       /* server_module_conf  */
-  YYSYMBOL_server_val_override_date = 492, /* server_val_override_date  */
-  YYSYMBOL_server_val_sig_skew_min = 493,  /* server_val_sig_skew_min  */
-  YYSYMBOL_server_val_sig_skew_max = 494,  /* server_val_sig_skew_max  */
-  YYSYMBOL_server_val_max_restart = 495,   /* server_val_max_restart  */
-  YYSYMBOL_server_cache_max_ttl = 496,     /* server_cache_max_ttl  */
-  YYSYMBOL_server_cache_max_negative_ttl = 497, /* server_cache_max_negative_ttl  */
-  YYSYMBOL_server_cache_min_ttl = 498,     /* server_cache_min_ttl  */
-  YYSYMBOL_server_bogus_ttl = 499,         /* server_bogus_ttl  */
-  YYSYMBOL_server_val_clean_additional = 500, /* server_val_clean_additional  */
-  YYSYMBOL_server_val_permissive_mode = 501, /* server_val_permissive_mode  */
-  YYSYMBOL_server_aggressive_nsec = 502,   /* server_aggressive_nsec  */
-  YYSYMBOL_server_ignore_cd_flag = 503,    /* server_ignore_cd_flag  */
-  YYSYMBOL_server_serve_expired = 504,     /* server_serve_expired  */
-  YYSYMBOL_server_serve_expired_ttl = 505, /* server_serve_expired_ttl  */
-  YYSYMBOL_server_serve_expired_ttl_reset = 506, /* server_serve_expired_ttl_reset  */
-  YYSYMBOL_server_serve_expired_reply_ttl = 507, /* server_serve_expired_reply_ttl  */
-  YYSYMBOL_server_serve_expired_client_timeout = 508, /* server_serve_expired_client_timeout  */
-  YYSYMBOL_server_serve_original_ttl = 509, /* server_serve_original_ttl  */
-  YYSYMBOL_server_fake_dsa = 510,          /* server_fake_dsa  */
-  YYSYMBOL_server_fake_sha1 = 511,         /* server_fake_sha1  */
-  YYSYMBOL_server_val_log_level = 512,     /* server_val_log_level  */
-  YYSYMBOL_server_val_nsec3_keysize_iterations = 513, /* server_val_nsec3_keysize_iterations  */
-  YYSYMBOL_server_zonemd_permissive_mode = 514, /* server_zonemd_permissive_mode  */
-  YYSYMBOL_server_add_holddown = 515,      /* server_add_holddown  */
-  YYSYMBOL_server_del_holddown = 516,      /* server_del_holddown  */
-  YYSYMBOL_server_keep_missing = 517,      /* server_keep_missing  */
-  YYSYMBOL_server_permit_small_holddown = 518, /* server_permit_small_holddown  */
-  YYSYMBOL_server_key_cache_size = 519,    /* server_key_cache_size  */
-  YYSYMBOL_server_key_cache_slabs = 520,   /* server_key_cache_slabs  */
-  YYSYMBOL_server_neg_cache_size = 521,    /* server_neg_cache_size  */
-  YYSYMBOL_server_local_zone = 522,        /* server_local_zone  */
-  YYSYMBOL_server_local_data = 523,        /* server_local_data  */
-  YYSYMBOL_server_local_data_ptr = 524,    /* server_local_data_ptr  */
-  YYSYMBOL_server_minimal_responses = 525, /* server_minimal_responses  */
-  YYSYMBOL_server_rrset_roundrobin = 526,  /* server_rrset_roundrobin  */
-  YYSYMBOL_server_unknown_server_time_limit = 527, /* server_unknown_server_time_limit  */
-  YYSYMBOL_server_max_udp_size = 528,      /* server_max_udp_size  */
-  YYSYMBOL_server_dns64_prefix = 529,      /* server_dns64_prefix  */
-  YYSYMBOL_server_dns64_synthall = 530,    /* server_dns64_synthall  */
-  YYSYMBOL_server_dns64_ignore_aaaa = 531, /* server_dns64_ignore_aaaa  */
-  YYSYMBOL_server_define_tag = 532,        /* server_define_tag  */
-  YYSYMBOL_server_local_zone_tag = 533,    /* server_local_zone_tag  */
-  YYSYMBOL_server_access_control_tag = 534, /* server_access_control_tag  */
-  YYSYMBOL_server_access_control_tag_action = 535, /* server_access_control_tag_action  */
-  YYSYMBOL_server_access_control_tag_data = 536, /* server_access_control_tag_data  */
-  YYSYMBOL_server_local_zone_override = 537, /* server_local_zone_override  */
-  YYSYMBOL_server_access_control_view = 538, /* server_access_control_view  */
-  YYSYMBOL_server_response_ip_tag = 539,   /* server_response_ip_tag  */
-  YYSYMBOL_server_ip_ratelimit = 540,      /* server_ip_ratelimit  */
-  YYSYMBOL_server_ratelimit = 541,         /* server_ratelimit  */
-  YYSYMBOL_server_ip_ratelimit_size = 542, /* server_ip_ratelimit_size  */
-  YYSYMBOL_server_ratelimit_size = 543,    /* server_ratelimit_size  */
-  YYSYMBOL_server_ip_ratelimit_slabs = 544, /* server_ip_ratelimit_slabs  */
-  YYSYMBOL_server_ratelimit_slabs = 545,   /* server_ratelimit_slabs  */
-  YYSYMBOL_server_ratelimit_for_domain = 546, /* server_ratelimit_for_domain  */
-  YYSYMBOL_server_ratelimit_below_domain = 547, /* server_ratelimit_below_domain  */
-  YYSYMBOL_server_ip_ratelimit_factor = 548, /* server_ip_ratelimit_factor  */
-  YYSYMBOL_server_ratelimit_factor = 549,  /* server_ratelimit_factor  */
-  YYSYMBOL_server_ip_ratelimit_backoff = 550, /* server_ip_ratelimit_backoff  */
-  YYSYMBOL_server_ratelimit_backoff = 551, /* server_ratelimit_backoff  */
-  YYSYMBOL_server_outbound_msg_retry = 552, /* server_outbound_msg_retry  */
-  YYSYMBOL_server_low_rtt = 553,           /* server_low_rtt  */
-  YYSYMBOL_server_fast_server_num = 554,   /* server_fast_server_num  */
-  YYSYMBOL_server_fast_server_permil = 555, /* server_fast_server_permil  */
-  YYSYMBOL_server_qname_minimisation = 556, /* server_qname_minimisation  */
-  YYSYMBOL_server_qname_minimisation_strict = 557, /* server_qname_minimisation_strict  */
-  YYSYMBOL_server_pad_responses = 558,     /* server_pad_responses  */
-  YYSYMBOL_server_pad_responses_block_size = 559, /* server_pad_responses_block_size  */
-  YYSYMBOL_server_pad_queries = 560,       /* server_pad_queries  */
-  YYSYMBOL_server_pad_queries_block_size = 561, /* server_pad_queries_block_size  */
-  YYSYMBOL_server_ipsecmod_enabled = 562,  /* server_ipsecmod_enabled  */
-  YYSYMBOL_server_ipsecmod_ignore_bogus = 563, /* server_ipsecmod_ignore_bogus  */
-  YYSYMBOL_server_ipsecmod_hook = 564,     /* server_ipsecmod_hook  */
-  YYSYMBOL_server_ipsecmod_max_ttl = 565,  /* server_ipsecmod_max_ttl  */
-  YYSYMBOL_server_ipsecmod_whitelist = 566, /* server_ipsecmod_whitelist  */
-  YYSYMBOL_server_ipsecmod_strict = 567,   /* server_ipsecmod_strict  */
-  YYSYMBOL_server_edns_client_string = 568, /* server_edns_client_string  */
-  YYSYMBOL_server_edns_client_string_opcode = 569, /* server_edns_client_string_opcode  */
-  YYSYMBOL_stub_name = 570,                /* stub_name  */
-  YYSYMBOL_stub_host = 571,                /* stub_host  */
-  YYSYMBOL_stub_addr = 572,                /* stub_addr  */
-  YYSYMBOL_stub_first = 573,               /* stub_first  */
-  YYSYMBOL_stub_no_cache = 574,            /* stub_no_cache  */
-  YYSYMBOL_stub_ssl_upstream = 575,        /* stub_ssl_upstream  */
-  YYSYMBOL_stub_tcp_upstream = 576,        /* stub_tcp_upstream  */
-  YYSYMBOL_stub_prime = 577,               /* stub_prime  */
-  YYSYMBOL_forward_name = 578,             /* forward_name  */
-  YYSYMBOL_forward_host = 579,             /* forward_host  */
-  YYSYMBOL_forward_addr = 580,             /* forward_addr  */
-  YYSYMBOL_forward_first = 581,            /* forward_first  */
-  YYSYMBOL_forward_no_cache = 582,         /* forward_no_cache  */
-  YYSYMBOL_forward_ssl_upstream = 583,     /* forward_ssl_upstream  */
-  YYSYMBOL_forward_tcp_upstream = 584,     /* forward_tcp_upstream  */
-  YYSYMBOL_auth_name = 585,                /* auth_name  */
-  YYSYMBOL_auth_zonefile = 586,            /* auth_zonefile  */
-  YYSYMBOL_auth_master = 587,              /* auth_master  */
-  YYSYMBOL_auth_url = 588,                 /* auth_url  */
-  YYSYMBOL_auth_allow_notify = 589,        /* auth_allow_notify  */
-  YYSYMBOL_auth_zonemd_check = 590,        /* auth_zonemd_check  */
-  YYSYMBOL_auth_zonemd_reject_absence = 591, /* auth_zonemd_reject_absence  */
-  YYSYMBOL_auth_for_downstream = 592,      /* auth_for_downstream  */
-  YYSYMBOL_auth_for_upstream = 593,        /* auth_for_upstream  */
-  YYSYMBOL_auth_fallback_enabled = 594,    /* auth_fallback_enabled  */
-  YYSYMBOL_view_name = 595,                /* view_name  */
-  YYSYMBOL_view_local_zone = 596,          /* view_local_zone  */
-  YYSYMBOL_view_response_ip = 597,         /* view_response_ip  */
-  YYSYMBOL_view_response_ip_data = 598,    /* view_response_ip_data  */
-  YYSYMBOL_view_local_data = 599,          /* view_local_data  */
-  YYSYMBOL_view_local_data_ptr = 600,      /* view_local_data_ptr  */
-  YYSYMBOL_view_first = 601,               /* view_first  */
-  YYSYMBOL_rcstart = 602,                  /* rcstart  */
-  YYSYMBOL_contents_rc = 603,              /* contents_rc  */
-  YYSYMBOL_content_rc = 604,               /* content_rc  */
-  YYSYMBOL_rc_control_enable = 605,        /* rc_control_enable  */
-  YYSYMBOL_rc_control_port = 606,          /* rc_control_port  */
-  YYSYMBOL_rc_control_interface = 607,     /* rc_control_interface  */
-  YYSYMBOL_rc_control_use_cert = 608,      /* rc_control_use_cert  */
-  YYSYMBOL_rc_server_key_file = 609,       /* rc_server_key_file  */
-  YYSYMBOL_rc_server_cert_file = 610,      /* rc_server_cert_file  */
-  YYSYMBOL_rc_control_key_file = 611,      /* rc_control_key_file  */
-  YYSYMBOL_rc_control_cert_file = 612,     /* rc_control_cert_file  */
-  YYSYMBOL_dtstart = 613,                  /* dtstart  */
-  YYSYMBOL_contents_dt = 614,              /* contents_dt  */
-  YYSYMBOL_content_dt = 615,               /* content_dt  */
-  YYSYMBOL_dt_dnstap_enable = 616,         /* dt_dnstap_enable  */
-  YYSYMBOL_dt_dnstap_bidirectional = 617,  /* dt_dnstap_bidirectional  */
-  YYSYMBOL_dt_dnstap_socket_path = 618,    /* dt_dnstap_socket_path  */
-  YYSYMBOL_dt_dnstap_ip = 619,             /* dt_dnstap_ip  */
-  YYSYMBOL_dt_dnstap_tls = 620,            /* dt_dnstap_tls  */
-  YYSYMBOL_dt_dnstap_tls_server_name = 621, /* dt_dnstap_tls_server_name  */
-  YYSYMBOL_dt_dnstap_tls_cert_bundle = 622, /* dt_dnstap_tls_cert_bundle  */
-  YYSYMBOL_dt_dnstap_tls_client_key_file = 623, /* dt_dnstap_tls_client_key_file  */
-  YYSYMBOL_dt_dnstap_tls_client_cert_file = 624, /* dt_dnstap_tls_client_cert_file  */
-  YYSYMBOL_dt_dnstap_send_identity = 625,  /* dt_dnstap_send_identity  */
-  YYSYMBOL_dt_dnstap_send_version = 626,   /* dt_dnstap_send_version  */
-  YYSYMBOL_dt_dnstap_identity = 627,       /* dt_dnstap_identity  */
-  YYSYMBOL_dt_dnstap_version = 628,        /* dt_dnstap_version  */
-  YYSYMBOL_dt_dnstap_log_resolver_query_messages = 629, /* dt_dnstap_log_resolver_query_messages  */
-  YYSYMBOL_dt_dnstap_log_resolver_response_messages = 630, /* dt_dnstap_log_resolver_response_messages  */
-  YYSYMBOL_dt_dnstap_log_client_query_messages = 631, /* dt_dnstap_log_client_query_messages  */
-  YYSYMBOL_dt_dnstap_log_client_response_messages = 632, /* dt_dnstap_log_client_response_messages  */
-  YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 633, /* dt_dnstap_log_forwarder_query_messages  */
-  YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 634, /* dt_dnstap_log_forwarder_response_messages  */
-  YYSYMBOL_pythonstart = 635,              /* pythonstart  */
-  YYSYMBOL_contents_py = 636,              /* contents_py  */
-  YYSYMBOL_content_py = 637,               /* content_py  */
-  YYSYMBOL_py_script = 638,                /* py_script  */
-  YYSYMBOL_dynlibstart = 639,              /* dynlibstart  */
-  YYSYMBOL_contents_dl = 640,              /* contents_dl  */
-  YYSYMBOL_content_dl = 641,               /* content_dl  */
-  YYSYMBOL_dl_file = 642,                  /* dl_file  */
-  YYSYMBOL_server_disable_dnssec_lame_check = 643, /* server_disable_dnssec_lame_check  */
-  YYSYMBOL_server_log_identity = 644,      /* server_log_identity  */
-  YYSYMBOL_server_response_ip = 645,       /* server_response_ip  */
-  YYSYMBOL_server_response_ip_data = 646,  /* server_response_ip_data  */
-  YYSYMBOL_dnscstart = 647,                /* dnscstart  */
-  YYSYMBOL_contents_dnsc = 648,            /* contents_dnsc  */
-  YYSYMBOL_content_dnsc = 649,             /* content_dnsc  */
-  YYSYMBOL_dnsc_dnscrypt_enable = 650,     /* dnsc_dnscrypt_enable  */
-  YYSYMBOL_dnsc_dnscrypt_port = 651,       /* dnsc_dnscrypt_port  */
-  YYSYMBOL_dnsc_dnscrypt_provider = 652,   /* dnsc_dnscrypt_provider  */
-  YYSYMBOL_dnsc_dnscrypt_provider_cert = 653, /* dnsc_dnscrypt_provider_cert  */
-  YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 654, /* dnsc_dnscrypt_provider_cert_rotated  */
-  YYSYMBOL_dnsc_dnscrypt_secret_key = 655, /* dnsc_dnscrypt_secret_key  */
-  YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 656, /* dnsc_dnscrypt_shared_secret_cache_size  */
-  YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 657, /* dnsc_dnscrypt_shared_secret_cache_slabs  */
-  YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 658, /* dnsc_dnscrypt_nonce_cache_size  */
-  YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 659, /* dnsc_dnscrypt_nonce_cache_slabs  */
-  YYSYMBOL_cachedbstart = 660,             /* cachedbstart  */
-  YYSYMBOL_contents_cachedb = 661,         /* contents_cachedb  */
-  YYSYMBOL_content_cachedb = 662,          /* content_cachedb  */
-  YYSYMBOL_cachedb_backend_name = 663,     /* cachedb_backend_name  */
-  YYSYMBOL_cachedb_secret_seed = 664,      /* cachedb_secret_seed  */
-  YYSYMBOL_redis_server_host = 665,        /* redis_server_host  */
-  YYSYMBOL_redis_server_port = 666,        /* redis_server_port  */
-  YYSYMBOL_redis_timeout = 667,            /* redis_timeout  */
-  YYSYMBOL_redis_expire_records = 668,     /* redis_expire_records  */
-  YYSYMBOL_server_tcp_connection_limit = 669, /* server_tcp_connection_limit  */
-  YYSYMBOL_ipsetstart = 670,               /* ipsetstart  */
-  YYSYMBOL_contents_ipset = 671,           /* contents_ipset  */
-  YYSYMBOL_content_ipset = 672,            /* content_ipset  */
-  YYSYMBOL_ipset_name_v4 = 673,            /* ipset_name_v4  */
-  YYSYMBOL_ipset_name_v6 = 674             /* ipset_name_v6  */
-};
-typedef enum yysymbol_kind_t yysymbol_kind_t;
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
 
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
 
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
+#line 66 "./util/configparser.y"
+{
+       char*   str;
+}
+/* Line 193 of yacc.c.  */
+#line 781 "util/configparser.c"
+       YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
 
 
-#ifdef short
-# undef short
-#endif
 
-/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
-   <limits.h> and (if available) <stdint.h> are included
-   so that the code can choose integer types of a good width.  */
+/* Copy the second part of user declarations.  */
 
-#ifndef __PTRDIFF_MAX__
-# include <limits.h> /* INFRINGES ON USER NAME SPACE */
-# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
-#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
-#  define YY_STDINT_H
-# endif
-#endif
 
-/* Narrow types that promote to a signed type and that can represent a
-   signed or unsigned integer of at least N bits.  In tables they can
-   save space and decrease cache pressure.  Promoting to a signed type
-   helps avoid bugs in integer arithmetic.  */
+/* Line 216 of yacc.c.  */
+#line 794 "util/configparser.c"
 
-#ifdef __INT_LEAST8_MAX__
-typedef __INT_LEAST8_TYPE__ yytype_int8;
-#elif defined YY_STDINT_H
-typedef int_least8_t yytype_int8;
-#else
-typedef signed char yytype_int8;
+#ifdef short
+# undef short
 #endif
 
-#ifdef __INT_LEAST16_MAX__
-typedef __INT_LEAST16_TYPE__ yytype_int16;
-#elif defined YY_STDINT_H
-typedef int_least16_t yytype_int16;
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
 #else
-typedef short yytype_int16;
-#endif
-
-/* Work around bug in HP-UX 11.23, which defines these macros
-   incorrectly for preprocessor constants.  This workaround can likely
-   be removed in 2023, as HPE has promised support for HP-UX 11.23
-   (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
-   <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>.  */
-#ifdef __hpux
-# undef UINT_LEAST8_MAX
-# undef UINT_LEAST16_MAX
-# define UINT_LEAST8_MAX 255
-# define UINT_LEAST16_MAX 65535
+typedef unsigned char yytype_uint8;
 #endif
 
-#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
-typedef __UINT_LEAST8_TYPE__ yytype_uint8;
-#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
-       && UINT_LEAST8_MAX <= INT_MAX)
-typedef uint_least8_t yytype_uint8;
-#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
-typedef unsigned char yytype_uint8;
+#ifdef YYTYPE_INT8
+typedef YYTYPE_INT8 yytype_int8;
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+typedef signed char yytype_int8;
 #else
-typedef short yytype_uint8;
+typedef short int yytype_int8;
 #endif
 
-#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
-typedef __UINT_LEAST16_TYPE__ yytype_uint16;
-#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
-       && UINT_LEAST16_MAX <= INT_MAX)
-typedef uint_least16_t yytype_uint16;
-#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
-typedef unsigned short yytype_uint16;
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
 #else
-typedef int yytype_uint16;
+typedef unsigned short int yytype_uint16;
 #endif
 
-#ifndef YYPTRDIFF_T
-# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
-#  define YYPTRDIFF_T __PTRDIFF_TYPE__
-#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
-# elif defined PTRDIFF_MAX
-#  ifndef ptrdiff_t
-#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-#  endif
-#  define YYPTRDIFF_T ptrdiff_t
-#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
-# else
-#  define YYPTRDIFF_T long
-#  define YYPTRDIFF_MAXIMUM LONG_MAX
-# endif
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
 #endif
 
 #ifndef YYSIZE_T
@@ -897,100 +828,55 @@ typedef int yytype_uint16;
 #  define YYSIZE_T __SIZE_TYPE__
 # elif defined size_t
 #  define YYSIZE_T size_t
-# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
-#  define YYSIZE_T unsigned
+#  define YYSIZE_T unsigned int
 # endif
 #endif
 
-#define YYSIZE_MAXIMUM                                  \
-  YY_CAST (YYPTRDIFF_T,                                 \
-           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
-            ? YYPTRDIFF_MAXIMUM                         \
-            : YY_CAST (YYSIZE_T, -1)))
-
-#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
-
-
-/* Stored state numbers (used for stacks). */
-typedef yytype_int16 yy_state_t;
-
-/* State numbers in computations.  */
-typedef int yy_state_fast_t;
+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
 
 #ifndef YY_
 # if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
 #  endif
 # endif
 # ifndef YY_
-#  define YY_(Msgid) Msgid
-# endif
-#endif
-
-
-#ifndef YY_ATTRIBUTE_PURE
-# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
-#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
-# else
-#  define YY_ATTRIBUTE_PURE
-# endif
-#endif
-
-#ifndef YY_ATTRIBUTE_UNUSED
-# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
-#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
-# else
-#  define YY_ATTRIBUTE_UNUSED
+#  define YY_(msgid) msgid
 # endif
 #endif
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YY_USE(E) ((void) (E))
+# define YYUSE(e) ((void) (e))
 #else
-# define YY_USE(E) /* empty */
+# define YYUSE(e) /* empty */
 #endif
 
-#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
-/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
-    _Pragma ("GCC diagnostic push")                                     \
-    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
-    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
-    _Pragma ("GCC diagnostic pop")
+/* Identity function, used to suppress warnings about constant conditions.  */
+#ifndef lint
+# define YYID(n) (n)
 #else
-# define YY_INITIAL_VALUE(Value) Value
-#endif
-#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END
-#endif
-#ifndef YY_INITIAL_VALUE
-# define YY_INITIAL_VALUE(Value) /* Nothing. */
-#endif
-
-#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
-# define YY_IGNORE_USELESS_CAST_BEGIN                          \
-    _Pragma ("GCC diagnostic push")                            \
-    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
-# define YY_IGNORE_USELESS_CAST_END            \
-    _Pragma ("GCC diagnostic pop")
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int i)
+#else
+static int
+YYID (i)
+    int i;
 #endif
-#ifndef YY_IGNORE_USELESS_CAST_BEGIN
-# define YY_IGNORE_USELESS_CAST_BEGIN
-# define YY_IGNORE_USELESS_CAST_END
+{
+  return i;
+}
 #endif
 
-
-#define YY_ASSERT(E) ((void) (0 && (E)))
-
-#if !defined yyoverflow
+#if ! defined yyoverflow || YYERROR_VERBOSE
 
 /* The parser invokes alloca or malloc; define the necessary symbols.  */
 
@@ -1007,11 +893,11 @@ typedef int yy_state_fast_t;
 #    define alloca _alloca
 #   else
 #    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
+#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
-#     ifndef EXIT_SUCCESS
-#      define EXIT_SUCCESS 0
+#     ifndef _STDLIB_H
+#      define _STDLIB_H 1
 #     endif
 #    endif
 #   endif
@@ -1019,8 +905,8 @@ typedef int yy_state_fast_t;
 # endif
 
 # ifdef YYSTACK_ALLOC
-   /* Pacify GCC's 'empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+   /* Pacify GCC's `empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
 #  ifndef YYSTACK_ALLOC_MAXIMUM
     /* The OS might guarantee only one guard page at the bottom of the stack,
        and a page size can be as small as 4096 bytes.  So we cannot safely
@@ -1034,117 +920,111 @@ typedef int yy_state_fast_t;
 #  ifndef YYSTACK_ALLOC_MAXIMUM
 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
 #  endif
-#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
+#  if (defined __cplusplus && ! defined _STDLIB_H \
        && ! ((defined YYMALLOC || defined malloc) \
-             && (defined YYFREE || defined free)))
+            && (defined YYFREE || defined free)))
 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   ifndef EXIT_SUCCESS
-#    define EXIT_SUCCESS 0
+#   ifndef _STDLIB_H
+#    define _STDLIB_H 1
 #   endif
 #  endif
 #  ifndef YYMALLOC
 #   define YYMALLOC malloc
-#   if ! defined malloc && ! defined EXIT_SUCCESS
+#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 #  ifndef YYFREE
 #   define YYFREE free
-#   if ! defined free && ! defined EXIT_SUCCESS
+#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 void free (void *); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 # endif
-#endif /* !defined yyoverflow */
+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+
 
 #if (! defined yyoverflow \
      && (! defined __cplusplus \
-         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+        || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
 
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  yy_state_t yyss_alloc;
-  YYSTYPE yyvs_alloc;
-};
+  yytype_int16 yyss;
+  YYSTYPE yyvs;
+  };
 
 /* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
 
 /* The size of an array large to enough to hold all stacks, each with
    N elements.  */
 # define YYSTACK_BYTES(N) \
-     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
+     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
       + YYSTACK_GAP_MAXIMUM)
 
-# define YYCOPY_NEEDED 1
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined __GNUC__ && 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)             \
+      do                                       \
+       {                                       \
+         YYSIZE_T yyi;                         \
+         for (yyi = 0; yyi < (Count); yyi++)   \
+           (To)[yyi] = (From)[yyi];            \
+       }                                       \
+      while (YYID (0))
+#  endif
+# endif
 
 /* Relocate STACK from its old location to the new one.  The
    local variables YYSIZE and YYSTACKSIZE give the old and new number of
    elements in the stack, and YYPTR gives the new location of the
    stack.  Advance YYPTR to a properly aligned location for the next
    stack.  */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
-    do                                                                  \
-      {                                                                 \
-        YYPTRDIFF_T yynewbytes;                                         \
-        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
-        Stack = &yyptr->Stack_alloc;                                    \
-        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
-        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
-      }                                                                 \
-    while (0)
+# define YYSTACK_RELOCATE(Stack)                                       \
+    do                                                                 \
+      {                                                                        \
+       YYSIZE_T yynewbytes;                                            \
+       YYCOPY (&yyptr->Stack, Stack, yysize);                          \
+       Stack = &yyptr->Stack;                                          \
+       yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+       yyptr += yynewbytes / sizeof (*yyptr);                          \
+      }                                                                        \
+    while (YYID (0))
 
 #endif
 
-#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
-/* Copy COUNT objects from SRC to DST.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(Dst, Src, Count) \
-      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
-#  else
-#   define YYCOPY(Dst, Src, Count)              \
-      do                                        \
-        {                                       \
-          YYPTRDIFF_T yyi;                      \
-          for (yyi = 0; yyi < (Count); yyi++)   \
-            (Dst)[yyi] = (Src)[yyi];            \
-        }                                       \
-      while (0)
-#  endif
-# endif
-#endif /* !YYCOPY_NEEDED */
-
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   689
+#define YYLAST   693
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  325
+#define YYNTOKENS  327
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  350
+#define YYNNTS  352
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  677
-/* YYNSTATES -- Number of states.  */
-#define YYNSTATES  1006
+#define YYNRULES  681
+/* YYNRULES -- Number of states.  */
+#define YYNSTATES  1012
 
-/* YYMAXUTOK -- Last valid token kind.  */
-#define YYMAXUTOK   579
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   581
 
+#define YYTRANSLATE(YYX)                                               \
+  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
-/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
-   as returned by yylex, with out-of-bounds checking.  */
-#define YYTRANSLATE(YYX)                                \
-  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
-   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
-   : YYSYMBOL_YYUNDEF)
-
-/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
-   as returned by yylex.  */
-static const yytype_int16 yytranslate[] =
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+static const yytype_uint16 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -1203,101 +1083,347 @@ static const yytype_int16 yytranslate[] =
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
-     315,   316,   317,   318,   319,   320,   321,   322,   323,   324
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
+     325,   326
 };
 
 #if YYDEBUG
-  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
-static const yytype_int16 yyrline[] =
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const yytype_uint16 yyprhs[] =
 {
-       0,   194,   194,   194,   195,   195,   196,   196,   197,   197,
-     197,   198,   198,   199,   199,   200,   200,   201,   203,   209,
-     214,   215,   216,   216,   216,   217,   217,   218,   218,   218,
-     219,   219,   220,   220,   220,   221,   221,   222,   222,   222,
-     223,   223,   223,   224,   224,   225,   225,   226,   226,   227,
-     227,   228,   228,   229,   229,   230,   230,   231,   231,   232,
-     232,   232,   233,   233,   234,   234,   234,   235,   235,   235,
-     236,   236,   237,   237,   238,   238,   239,   239,   240,   240,
-     240,   241,   241,   242,   242,   243,   243,   243,   244,   244,
-     245,   245,   246,   246,   247,   247,   247,   248,   248,   249,
-     249,   250,   250,   251,   251,   252,   252,   253,   253,   254,
-     254,   255,   255,   256,   256,   256,   257,   257,   257,   258,
-     258,   258,   259,   259,   259,   259,   260,   261,   261,   261,
-     262,   262,   262,   263,   263,   264,   264,   265,   265,   265,
-     266,   266,   266,   267,   267,   268,   268,   268,   269,   269,
-     270,   270,   270,   271,   271,   272,   272,   273,   273,   274,
-     275,   275,   276,   276,   277,   277,   278,   278,   279,   279,
-     280,   280,   281,   281,   282,   282,   283,   283,   284,   284,
-     285,   285,   285,   286,   286,   287,   287,   288,   288,   289,
-     290,   290,   291,   291,   292,   293,   293,   294,   294,   295,
-     295,   296,   296,   297,   297,   297,   298,   298,   298,   299,
-     299,   300,   301,   301,   302,   302,   303,   303,   304,   304,
-     305,   305,   305,   306,   306,   306,   307,   307,   307,   308,
-     308,   309,   309,   310,   310,   311,   311,   312,   312,   313,
-     313,   314,   314,   315,   318,   331,   332,   333,   333,   333,
-     333,   333,   334,   334,   334,   336,   349,   350,   351,   351,
-     351,   351,   352,   352,   352,   354,   369,   370,   371,   371,
-     371,   371,   372,   372,   372,   374,   394,   395,   396,   396,
-     396,   396,   397,   397,   397,   398,   398,   398,   401,   420,
-     437,   445,   455,   462,   472,   490,   491,   492,   492,   492,
-     492,   492,   493,   493,   493,   494,   494,   494,   494,   496,
-     505,   514,   525,   534,   543,   552,   563,   572,   584,   598,
-     613,   624,   641,   658,   675,   692,   707,   722,   735,   750,
-     759,   768,   777,   786,   795,   804,   811,   820,   829,   838,
-     847,   856,   865,   874,   883,   896,   907,   918,   929,   938,
-     951,   960,   969,   978,   985,   992,  1001,  1008,  1017,  1025,
-    1032,  1039,  1047,  1056,  1064,  1080,  1088,  1096,  1104,  1112,
-    1120,  1129,  1138,  1152,  1161,  1170,  1179,  1188,  1197,  1206,
-    1213,  1220,  1246,  1254,  1261,  1268,  1275,  1282,  1290,  1298,
-    1306,  1313,  1324,  1335,  1342,  1351,  1360,  1369,  1378,  1385,
-    1392,  1399,  1415,  1423,  1431,  1441,  1451,  1461,  1475,  1483,
-    1496,  1507,  1515,  1528,  1537,  1546,  1555,  1564,  1574,  1584,
-    1592,  1605,  1614,  1622,  1631,  1639,  1652,  1661,  1671,  1678,
-    1688,  1698,  1708,  1718,  1728,  1738,  1748,  1758,  1765,  1772,
-    1779,  1788,  1797,  1806,  1815,  1822,  1832,  1852,  1859,  1877,
-    1890,  1903,  1916,  1925,  1934,  1943,  1952,  1962,  1972,  1983,
-    1992,  2001,  2010,  2019,  2028,  2037,  2046,  2059,  2072,  2081,
-    2088,  2097,  2106,  2115,  2124,  2133,  2141,  2154,  2162,  2217,
-    2224,  2239,  2249,  2259,  2266,  2273,  2280,  2289,  2297,  2311,
-    2332,  2353,  2365,  2377,  2389,  2398,  2419,  2428,  2437,  2445,
-    2453,  2466,  2479,  2494,  2509,  2518,  2527,  2537,  2547,  2556,
-    2562,  2571,  2580,  2590,  2600,  2610,  2619,  2629,  2638,  2651,
-    2664,  2676,  2690,  2702,  2716,  2725,  2737,  2747,  2754,  2761,
-    2770,  2779,  2789,  2799,  2809,  2819,  2826,  2833,  2842,  2851,
-    2861,  2871,  2881,  2888,  2895,  2902,  2910,  2920,  2930,  2940,
-    2950,  2960,  2970,  3026,  3036,  3044,  3052,  3067,  3076,  3081,
-    3082,  3083,  3083,  3083,  3084,  3084,  3084,  3085,  3085,  3087,
-    3097,  3106,  3113,  3120,  3127,  3134,  3141,  3148,  3153,  3154,
-    3155,  3155,  3155,  3156,  3156,  3156,  3157,  3158,  3158,  3159,
-    3159,  3160,  3160,  3161,  3162,  3163,  3164,  3165,  3166,  3168,
-    3177,  3187,  3194,  3201,  3210,  3217,  3224,  3231,  3238,  3247,
-    3256,  3263,  3270,  3280,  3290,  3300,  3310,  3320,  3330,  3335,
-    3336,  3337,  3339,  3345,  3350,  3351,  3352,  3354,  3360,  3370,
-    3377,  3386,  3394,  3399,  3400,  3402,  3402,  3402,  3403,  3403,
-    3404,  3405,  3406,  3407,  3408,  3410,  3420,  3429,  3436,  3445,
-    3452,  3461,  3469,  3482,  3490,  3503,  3508,  3509,  3510,  3510,
-    3511,  3511,  3511,  3512,  3514,  3526,  3538,  3550,  3565,  3578,
-    3591,  3602,  3607,  3608,  3609,  3609,  3611,  3626
+       0,     0,     3,     4,     7,    10,    13,    16,    19,    22,
+      25,    28,    31,    34,    37,    40,    43,    46,    48,    50,
+      52,    55,    56,    58,    60,    62,    64,    66,    68,    70,
+      72,    74,    76,    78,    80,    82,    84,    86,    88,    90,
+      92,    94,    96,    98,   100,   102,   104,   106,   108,   110,
+     112,   114,   116,   118,   120,   122,   124,   126,   128,   130,
+     132,   134,   136,   138,   140,   142,   144,   146,   148,   150,
+     152,   154,   156,   158,   160,   162,   164,   166,   168,   170,
+     172,   174,   176,   178,   180,   182,   184,   186,   188,   190,
+     192,   194,   196,   198,   200,   202,   204,   206,   208,   210,
+     212,   214,   216,   218,   220,   222,   224,   226,   228,   230,
+     232,   234,   236,   238,   240,   242,   244,   246,   248,   250,
+     252,   254,   256,   258,   260,   262,   264,   266,   268,   270,
+     272,   274,   276,   278,   280,   282,   284,   286,   288,   290,
+     292,   294,   296,   298,   300,   302,   304,   306,   308,   310,
+     312,   314,   316,   318,   320,   322,   324,   326,   328,   330,
+     332,   334,   336,   338,   340,   342,   344,   346,   348,   350,
+     352,   354,   356,   358,   360,   362,   364,   366,   368,   370,
+     372,   374,   376,   378,   380,   382,   384,   386,   388,   390,
+     392,   394,   396,   398,   400,   402,   404,   406,   408,   410,
+     412,   414,   416,   418,   420,   422,   424,   426,   428,   430,
+     432,   434,   436,   438,   440,   442,   444,   446,   448,   450,
+     452,   454,   456,   458,   460,   462,   464,   466,   468,   470,
+     472,   474,   476,   478,   480,   482,   484,   486,   488,   490,
+     492,   494,   496,   498,   500,   502,   504,   506,   509,   510,
+     512,   514,   516,   518,   520,   522,   524,   526,   528,   531,
+     532,   534,   536,   538,   540,   542,   544,   546,   548,   551,
+     552,   554,   556,   558,   560,   562,   564,   566,   568,   571,
+     572,   574,   576,   578,   580,   582,   584,   586,   588,   590,
+     592,   595,   598,   601,   604,   607,   610,   612,   615,   616,
+     618,   620,   622,   624,   626,   628,   630,   632,   634,   636,
+     638,   640,   643,   646,   649,   652,   655,   658,   661,   664,
+     667,   670,   673,   676,   679,   682,   685,   688,   691,   694,
+     697,   700,   703,   706,   709,   712,   715,   718,   721,   724,
+     727,   730,   733,   736,   739,   742,   745,   748,   751,   754,
+     757,   760,   763,   766,   769,   772,   775,   778,   781,   784,
+     787,   790,   793,   796,   799,   802,   805,   808,   811,   814,
+     817,   820,   823,   826,   829,   832,   835,   838,   841,   844,
+     847,   850,   853,   856,   859,   862,   865,   868,   871,   874,
+     877,   880,   883,   886,   889,   892,   895,   898,   901,   904,
+     907,   910,   913,   916,   919,   922,   925,   928,   931,   934,
+     937,   940,   943,   946,   949,   952,   955,   958,   961,   964,
+     967,   970,   973,   976,   979,   982,   985,   988,   991,   994,
+     997,  1000,  1003,  1006,  1009,  1012,  1015,  1018,  1021,  1024,
+    1027,  1030,  1033,  1036,  1039,  1042,  1045,  1048,  1051,  1055,
+    1058,  1061,  1064,  1067,  1070,  1073,  1076,  1079,  1082,  1085,
+    1088,  1091,  1094,  1097,  1100,  1103,  1106,  1109,  1112,  1115,
+    1118,  1121,  1124,  1127,  1130,  1133,  1136,  1139,  1142,  1145,
+    1148,  1151,  1155,  1158,  1161,  1164,  1167,  1170,  1173,  1176,
+    1179,  1182,  1185,  1189,  1193,  1198,  1203,  1208,  1212,  1216,
+    1219,  1222,  1225,  1228,  1231,  1234,  1238,  1242,  1245,  1248,
+    1251,  1254,  1257,  1260,  1263,  1266,  1269,  1272,  1275,  1278,
+    1281,  1284,  1287,  1290,  1293,  1296,  1299,  1302,  1306,  1309,
+    1312,  1315,  1318,  1321,  1324,  1327,  1330,  1333,  1336,  1339,
+    1342,  1345,  1348,  1351,  1354,  1357,  1360,  1363,  1366,  1369,
+    1372,  1375,  1378,  1381,  1384,  1387,  1390,  1394,  1398,  1402,
+    1405,  1408,  1411,  1413,  1416,  1417,  1419,  1421,  1423,  1425,
+    1427,  1429,  1431,  1433,  1436,  1439,  1442,  1445,  1448,  1451,
+    1454,  1457,  1459,  1462,  1463,  1465,  1467,  1469,  1471,  1473,
+    1475,  1477,  1479,  1481,  1483,  1485,  1487,  1489,  1491,  1493,
+    1495,  1497,  1499,  1501,  1504,  1507,  1510,  1513,  1516,  1519,
+    1522,  1525,  1528,  1531,  1534,  1537,  1540,  1543,  1546,  1549,
+    1552,  1555,  1558,  1560,  1563,  1564,  1566,  1569,  1571,  1574,
+    1575,  1577,  1580,  1583,  1586,  1590,  1594,  1596,  1599,  1600,
+    1602,  1604,  1606,  1608,  1610,  1612,  1614,  1616,  1618,  1620,
+    1623,  1626,  1629,  1632,  1635,  1638,  1641,  1644,  1647,  1650,
+    1652,  1655,  1656,  1658,  1660,  1662,  1664,  1666,  1668,  1671,
+    1674,  1677,  1680,  1683,  1686,  1690,  1692,  1695,  1696,  1698,
+    1700,  1703
 };
-#endif
 
-/** Accessing symbol of state STATE.  */
-#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
+/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
+static const yytype_int16 yyrhs[] =
+{
+     328,     0,    -1,    -1,   328,   329,    -1,   331,   332,    -1,
+     334,   335,    -1,   337,   338,    -1,   639,   640,    -1,   606,
+     607,    -1,   617,   618,    -1,   340,   341,    -1,   651,   652,
+      -1,   664,   665,    -1,   674,   675,    -1,   343,   344,    -1,
+     352,   353,    -1,   643,   644,    -1,   330,    -1,    11,    -1,
+      12,    -1,   332,   333,    -1,    -1,   355,    -1,   356,    -1,
+     362,    -1,   375,    -1,   382,    -1,   383,    -1,   386,    -1,
+     387,    -1,   384,    -1,   385,    -1,   388,    -1,   389,    -1,
+     390,    -1,   394,    -1,   395,    -1,   373,    -1,   425,    -1,
+     426,    -1,   427,    -1,   428,    -1,   429,    -1,   457,    -1,
+     458,    -1,   459,    -1,   465,    -1,   466,    -1,   378,    -1,
+     467,    -1,   468,    -1,   471,    -1,   469,    -1,   470,    -1,
+     474,    -1,   475,    -1,   476,    -1,   490,    -1,   440,    -1,
+     441,    -1,   444,    -1,   445,    -1,   443,    -1,   446,    -1,
+     477,    -1,   493,    -1,   434,    -1,   436,    -1,   494,    -1,
+     501,    -1,   502,    -1,   503,    -1,   379,    -1,   456,    -1,
+     522,    -1,   523,    -1,   435,    -1,   516,    -1,   418,    -1,
+     374,    -1,   430,    -1,   491,    -1,   498,    -1,   478,    -1,
+     492,    -1,   525,    -1,   526,    -1,   380,    -1,   357,    -1,
+     417,    -1,   482,    -1,   358,    -1,   376,    -1,   377,    -1,
+     431,    -1,   432,    -1,   524,    -1,   480,    -1,   484,    -1,
+     485,    -1,   359,    -1,   527,    -1,   460,    -1,   489,    -1,
+     419,    -1,   439,    -1,   495,    -1,   496,    -1,   497,    -1,
+     500,    -1,   515,    -1,   433,    -1,   518,    -1,   519,    -1,
+     520,    -1,   448,    -1,   455,    -1,   486,    -1,   487,    -1,
+     449,    -1,   479,    -1,   505,    -1,   420,    -1,   421,    -1,
+     396,    -1,   398,    -1,   424,    -1,   399,    -1,   400,    -1,
+     401,    -1,   409,    -1,   410,    -1,   411,    -1,   412,    -1,
+     413,    -1,   414,    -1,   415,    -1,   528,    -1,   529,    -1,
+     531,    -1,   450,    -1,   461,    -1,   462,    -1,   463,    -1,
+     464,    -1,   532,    -1,   533,    -1,   534,    -1,   472,    -1,
+     481,    -1,   451,    -1,   543,    -1,   544,    -1,   453,    -1,
+     473,    -1,   547,    -1,   548,    -1,   545,    -1,   546,    -1,
+     549,    -1,   550,    -1,   552,    -1,   551,    -1,   554,    -1,
+     553,    -1,   555,    -1,   363,    -1,   364,    -1,   365,    -1,
+     366,    -1,   367,    -1,   368,    -1,   369,    -1,   370,    -1,
+     371,    -1,   372,    -1,   483,    -1,   499,    -1,   521,    -1,
+     559,    -1,   452,    -1,   535,    -1,   536,    -1,   647,    -1,
+     537,    -1,   540,    -1,   538,    -1,   539,    -1,   541,    -1,
+     560,    -1,   561,    -1,   562,    -1,   563,    -1,   564,    -1,
+     506,    -1,   507,    -1,   508,    -1,   509,    -1,   510,    -1,
+     511,    -1,   512,    -1,   513,    -1,   648,    -1,   416,    -1,
+     542,    -1,   649,    -1,   650,    -1,   360,    -1,   361,    -1,
+     514,    -1,   442,    -1,   437,    -1,   438,    -1,   565,    -1,
+     567,    -1,   566,    -1,   568,    -1,   569,    -1,   570,    -1,
+     397,    -1,   504,    -1,   402,    -1,   404,    -1,   556,    -1,
+     558,    -1,   557,    -1,   403,    -1,   673,    -1,   423,    -1,
+     488,    -1,   530,    -1,   422,    -1,   454,    -1,   405,    -1,
+     406,    -1,   407,    -1,   408,    -1,   571,    -1,   572,    -1,
+     447,    -1,   517,    -1,   391,    -1,   392,    -1,   393,    -1,
+     381,    -1,   573,    -1,    46,    -1,   335,   336,    -1,    -1,
+     574,    -1,   575,    -1,   576,    -1,   581,    -1,   577,    -1,
+     578,    -1,   579,    -1,   580,    -1,    52,    -1,   338,   339,
+      -1,    -1,   582,    -1,   583,    -1,   584,    -1,   585,    -1,
+     586,    -1,   587,    -1,   588,    -1,   230,    -1,   341,   342,
+      -1,    -1,   599,    -1,   600,    -1,   603,    -1,   605,    -1,
+     601,    -1,   602,    -1,   604,    -1,   282,    -1,   344,   345,
+      -1,    -1,   589,    -1,   590,    -1,   591,    -1,   592,    -1,
+     596,    -1,   597,    -1,   598,    -1,   593,    -1,   594,    -1,
+     595,    -1,   311,    10,    -1,   312,    10,    -1,   313,    10,
+      -1,   314,    10,    -1,   315,    10,    -1,   324,    10,    -1,
+     310,    -1,   353,   354,    -1,    -1,   589,    -1,   590,    -1,
+     346,    -1,   591,    -1,   592,    -1,   593,    -1,   347,    -1,
+     348,    -1,   349,    -1,   350,    -1,   351,    -1,   596,    -1,
+      14,    10,    -1,    13,    10,    -1,    84,    10,    -1,    87,
+      10,    -1,   107,    10,    -1,   249,    10,    -1,   250,    10,
+      -1,    15,    10,    -1,   208,    10,    -1,   209,    10,    -1,
+     210,    10,    -1,   211,    10,    -1,   212,    10,    -1,   213,
+      10,    -1,   214,    10,    -1,   215,    10,    -1,   216,    10,
+      -1,   217,    10,    -1,    17,    10,    -1,    75,    10,    -1,
+      16,    10,    -1,    88,    10,    -1,    89,    10,    -1,    39,
+      10,    -1,    68,    10,    -1,    83,    10,    -1,   325,    10,
+      -1,    19,    10,    -1,    20,    10,    -1,    22,    10,    -1,
+      23,    10,    -1,    18,    10,    -1,    21,    10,    -1,    24,
+      10,    -1,    25,    10,    -1,    26,    10,    -1,   106,    10,
+      -1,   105,    10,    -1,   138,    10,    -1,    27,    10,    -1,
+      28,    10,    -1,   136,    10,    -1,   280,    10,    -1,   137,
+      10,    -1,   139,    10,    -1,   140,    10,    -1,   141,    10,
+      -1,   145,    10,    -1,   294,    10,    -1,   288,    10,    -1,
+     303,    10,    -1,   304,    10,    -1,   309,    10,    -1,   305,
+      10,    -1,   148,    10,    -1,   149,    10,    -1,   150,    10,
+      -1,   151,    10,    -1,   152,    10,    -1,   153,    10,    -1,
+     154,    10,    -1,   248,    10,    -1,    85,    10,    -1,    74,
+      10,    -1,   112,    10,    -1,   133,    10,    -1,   134,    10,
+      -1,   301,    10,    -1,   298,    10,    -1,   135,    10,    -1,
+      29,    10,    -1,    30,    10,    -1,    31,    10,    -1,    32,
+      10,    -1,    33,    10,    -1,    76,    10,    -1,    90,    10,
+      -1,    91,    10,    -1,   121,    10,    -1,    62,    10,    -1,
+      72,    10,    -1,    63,    10,    -1,   246,    10,    -1,   251,
+      10,    -1,   113,    10,    -1,    56,    10,    -1,    57,    10,
+      -1,   243,    10,    -1,   244,    10,    -1,    58,    10,    -1,
+      59,    10,    -1,   245,    10,    -1,   320,    10,    -1,   125,
+      10,    -1,   129,    10,    -1,   130,    10,    -1,   192,    10,
+      -1,   223,    10,    -1,   193,    10,    -1,   302,    10,    -1,
+     126,    10,    -1,    69,    10,    -1,    34,    10,    -1,    35,
+      10,    -1,    36,    10,    -1,   109,    10,    -1,   159,    10,
+      -1,   160,    10,    -1,   161,    10,    -1,   162,    10,    -1,
+      37,    10,    -1,    38,    10,    -1,    40,    10,    -1,    41,
+      10,    -1,    43,    10,    -1,    44,    10,    -1,    42,    10,
+      -1,   163,    10,    -1,   164,    10,    -1,    49,    10,    -1,
+      50,    10,    -1,    51,    10,    -1,    60,    10,    -1,    79,
+      10,    -1,   131,    10,    -1,    93,    10,    -1,   191,    10,
+      -1,    86,    10,    -1,   218,    10,    -1,    94,    10,    -1,
+      95,    10,    -1,   127,    10,    -1,   128,    10,    -1,   299,
+      10,    -1,   111,    10,    -1,    55,    10,    -1,    77,    10,
+      -1,    80,    10,    10,    -1,    61,    10,    -1,    64,    10,
+      -1,   116,    10,    -1,   117,    10,    -1,   118,    10,    -1,
+      78,    10,    -1,   219,    10,    -1,   119,    10,    -1,    65,
+      10,    -1,    66,    10,    -1,    67,    10,    -1,   247,    10,
+      -1,   132,    10,    -1,   233,    10,    -1,   234,    10,    -1,
+     235,    10,    -1,   236,    10,    -1,   237,    10,    -1,   238,
+      10,    -1,   239,    10,    -1,   240,    10,    -1,   241,    10,
+      -1,   120,    10,    -1,    73,    10,    -1,   321,    10,    -1,
+     123,    10,    -1,   124,    10,    -1,   122,    10,    -1,   220,
+      10,    -1,    70,    10,    -1,    71,    10,    -1,    92,    10,
+      -1,    81,    10,    10,    -1,    82,    10,    -1,   108,    10,
+      -1,   156,    10,    -1,   157,    10,    -1,   300,    10,    -1,
+     158,    10,    -1,   165,    10,    -1,   166,    10,    -1,   167,
+      10,    -1,   224,    10,    -1,   225,    10,    10,    -1,   226,
+      10,    10,    -1,   228,    10,    10,    10,    -1,   229,    10,
+      10,    10,    -1,   227,    10,    10,    10,    -1,   231,    10,
+      10,    -1,   188,    10,    10,    -1,   195,    10,    -1,   198,
+      10,    -1,   197,    10,    -1,   200,    10,    -1,   196,    10,
+      -1,   199,    10,    -1,   202,    10,    10,    -1,   203,    10,
+      10,    -1,   204,    10,    -1,   205,    10,    -1,   206,    10,
+      -1,   207,    10,    -1,   201,    10,    -1,   289,    10,    -1,
+     292,    10,    -1,   291,    10,    -1,   221,    10,    -1,   222,
+      10,    -1,   263,    10,    -1,   264,    10,    -1,   265,    10,
+      -1,   266,    10,    -1,   267,    10,    -1,   269,    10,    -1,
+     268,    10,    -1,   270,    10,    -1,   271,    10,    -1,   272,
+      10,    -1,   318,    10,    10,    -1,   319,    10,    -1,   326,
+      10,    -1,    45,    10,    -1,    47,    10,    -1,    48,    10,
+      -1,   155,    10,    -1,   297,    10,    -1,   143,    10,    -1,
+     146,    10,    -1,   110,    10,    -1,    45,    10,    -1,    53,
+      10,    -1,    54,    10,    -1,   142,    10,    -1,   296,    10,
+      -1,   144,    10,    -1,   147,    10,    -1,    45,    10,    -1,
+     283,    10,    -1,   284,    10,    -1,   285,    10,    -1,   293,
+      10,    -1,   322,    10,    -1,   323,    10,    -1,   286,    10,
+      -1,   281,    10,    -1,   287,    10,    -1,    45,    10,    -1,
+      81,    10,    10,    -1,   189,    10,    10,    -1,   190,    10,
+      10,    -1,    82,    10,    -1,   108,    10,    -1,   232,    10,
+      -1,    96,    -1,   607,   608,    -1,    -1,   609,    -1,   611,
+      -1,   610,    -1,   613,    -1,   614,    -1,   615,    -1,   616,
+      -1,   612,    -1,    97,    10,    -1,    99,    10,    -1,    98,
+      10,    -1,   104,    10,    -1,   100,    10,    -1,   101,    10,
+      -1,   102,    10,    -1,   103,    10,    -1,   168,    -1,   618,
+     619,    -1,    -1,   620,    -1,   622,    -1,   621,    -1,   623,
+      -1,   624,    -1,   625,    -1,   626,    -1,   627,    -1,   628,
+      -1,   629,    -1,   630,    -1,   631,    -1,   632,    -1,   633,
+      -1,   634,    -1,   635,    -1,   636,    -1,   637,    -1,   638,
+      -1,   169,    10,    -1,   179,    10,    -1,   170,    10,    -1,
+     171,    10,    -1,   172,    10,    -1,   173,    10,    -1,   174,
+      10,    -1,   175,    10,    -1,   176,    10,    -1,   177,    10,
+      -1,   178,    10,    -1,   180,    10,    -1,   181,    10,    -1,
+     182,    10,    -1,   183,    10,    -1,   184,    10,    -1,   185,
+      10,    -1,   186,    10,    -1,   187,    10,    -1,   114,    -1,
+     640,   641,    -1,    -1,   642,    -1,   115,    10,    -1,   316,
+      -1,   644,   645,    -1,    -1,   646,    -1,   317,    10,    -1,
+     194,    10,    -1,   242,    10,    -1,   189,    10,    10,    -1,
+     190,    10,    10,    -1,   252,    -1,   652,   653,    -1,    -1,
+     654,    -1,   655,    -1,   656,    -1,   659,    -1,   657,    -1,
+     658,    -1,   660,    -1,   661,    -1,   662,    -1,   663,    -1,
+     253,    10,    -1,   254,    10,    -1,   255,    10,    -1,   257,
+      10,    -1,   258,    10,    -1,   256,    10,    -1,   259,    10,
+      -1,   260,    10,    -1,   261,    10,    -1,   262,    10,    -1,
+     273,    -1,   665,   666,    -1,    -1,   667,    -1,   668,    -1,
+     669,    -1,   670,    -1,   671,    -1,   672,    -1,   274,    10,
+      -1,   275,    10,    -1,   276,    10,    -1,   277,    10,    -1,
+     278,    10,    -1,   279,    10,    -1,   295,    10,    10,    -1,
+     306,    -1,   675,   676,    -1,    -1,   677,    -1,   678,    -1,
+     307,    10,    -1,   308,    10,    -1
+};
 
-#if YYDEBUG || 0
-/* The user-facing name of the symbol whose (internal) number is
-   YYSYMBOL.  No bounds checking.  */
-static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const yytype_uint16 yyrline[] =
+{
+       0,   195,   195,   195,   196,   196,   197,   197,   198,   198,
+     198,   199,   199,   200,   200,   201,   201,   202,   204,   210,
+     215,   216,   217,   217,   217,   218,   218,   219,   219,   219,
+     220,   220,   221,   221,   221,   222,   222,   223,   223,   223,
+     224,   224,   224,   225,   225,   226,   226,   227,   227,   228,
+     228,   229,   229,   230,   230,   231,   231,   232,   232,   233,
+     233,   233,   234,   234,   235,   235,   235,   236,   236,   236,
+     237,   237,   238,   238,   239,   239,   240,   240,   241,   241,
+     241,   242,   242,   243,   243,   244,   244,   244,   245,   245,
+     246,   246,   247,   247,   248,   248,   248,   249,   249,   250,
+     250,   251,   251,   252,   252,   253,   253,   254,   254,   255,
+     255,   256,   256,   257,   257,   257,   258,   258,   258,   259,
+     259,   259,   260,   260,   260,   260,   261,   262,   262,   262,
+     263,   263,   263,   264,   264,   265,   265,   266,   266,   266,
+     267,   267,   267,   268,   268,   269,   269,   269,   270,   270,
+     271,   271,   271,   272,   272,   273,   273,   274,   274,   275,
+     276,   276,   277,   277,   278,   278,   279,   279,   280,   280,
+     281,   281,   282,   282,   283,   283,   284,   284,   285,   285,
+     286,   286,   286,   287,   287,   288,   288,   289,   289,   290,
+     291,   291,   292,   292,   293,   294,   294,   295,   295,   296,
+     296,   296,   297,   297,   298,   298,   298,   299,   299,   299,
+     300,   300,   301,   302,   302,   303,   303,   304,   304,   305,
+     305,   306,   306,   306,   307,   307,   307,   308,   308,   308,
+     309,   309,   310,   310,   311,   311,   312,   312,   313,   313,
+     314,   314,   315,   315,   316,   316,   319,   332,   333,   334,
+     334,   334,   334,   334,   335,   335,   335,   337,   350,   351,
+     352,   352,   352,   352,   353,   353,   353,   355,   370,   371,
+     372,   372,   372,   372,   373,   373,   373,   375,   395,   396,
+     397,   397,   397,   397,   398,   398,   398,   399,   399,   399,
+     402,   421,   438,   446,   456,   463,   473,   491,   492,   493,
+     493,   493,   493,   493,   494,   494,   494,   495,   495,   495,
+     495,   497,   506,   515,   526,   535,   544,   553,   564,   573,
+     585,   599,   614,   625,   642,   659,   676,   693,   708,   723,
+     736,   751,   760,   769,   778,   787,   796,   805,   812,   821,
+     830,   839,   848,   857,   866,   875,   884,   897,   908,   919,
+     930,   939,   952,   961,   970,   979,   986,   993,  1002,  1009,
+    1018,  1026,  1033,  1040,  1048,  1057,  1065,  1081,  1089,  1097,
+    1105,  1113,  1121,  1130,  1139,  1153,  1162,  1171,  1180,  1189,
+    1198,  1207,  1214,  1221,  1247,  1255,  1262,  1269,  1276,  1283,
+    1291,  1299,  1307,  1314,  1325,  1336,  1343,  1352,  1361,  1370,
+    1379,  1386,  1393,  1400,  1416,  1424,  1432,  1442,  1452,  1462,
+    1476,  1484,  1497,  1508,  1516,  1529,  1538,  1547,  1556,  1565,
+    1575,  1585,  1593,  1606,  1615,  1623,  1632,  1640,  1653,  1662,
+    1672,  1679,  1689,  1699,  1709,  1719,  1729,  1739,  1749,  1759,
+    1766,  1773,  1780,  1789,  1798,  1807,  1816,  1823,  1833,  1853,
+    1860,  1878,  1891,  1904,  1917,  1926,  1935,  1944,  1953,  1963,
+    1973,  1984,  1993,  2002,  2011,  2020,  2029,  2038,  2047,  2056,
+    2069,  2082,  2091,  2098,  2107,  2116,  2125,  2134,  2143,  2151,
+    2164,  2172,  2227,  2234,  2249,  2259,  2269,  2276,  2283,  2290,
+    2299,  2307,  2321,  2342,  2363,  2375,  2387,  2399,  2408,  2429,
+    2438,  2447,  2455,  2463,  2476,  2489,  2504,  2519,  2528,  2537,
+    2547,  2557,  2566,  2572,  2581,  2590,  2600,  2610,  2620,  2629,
+    2639,  2648,  2661,  2674,  2686,  2700,  2712,  2726,  2735,  2746,
+    2755,  2765,  2772,  2779,  2788,  2797,  2807,  2817,  2827,  2837,
+    2844,  2851,  2860,  2869,  2879,  2889,  2899,  2906,  2913,  2920,
+    2928,  2938,  2948,  2958,  2968,  2978,  2988,  3044,  3054,  3062,
+    3070,  3085,  3094,  3099,  3100,  3101,  3101,  3101,  3102,  3102,
+    3102,  3103,  3103,  3105,  3115,  3124,  3131,  3138,  3145,  3152,
+    3159,  3166,  3171,  3172,  3173,  3173,  3173,  3174,  3174,  3174,
+    3175,  3176,  3176,  3177,  3177,  3178,  3178,  3179,  3180,  3181,
+    3182,  3183,  3184,  3186,  3195,  3205,  3212,  3219,  3228,  3235,
+    3242,  3249,  3256,  3265,  3274,  3281,  3288,  3298,  3308,  3318,
+    3328,  3338,  3348,  3353,  3354,  3355,  3357,  3363,  3368,  3369,
+    3370,  3372,  3378,  3388,  3395,  3404,  3412,  3417,  3418,  3420,
+    3420,  3420,  3421,  3421,  3422,  3423,  3424,  3425,  3426,  3428,
+    3438,  3447,  3454,  3463,  3470,  3479,  3487,  3500,  3508,  3521,
+    3526,  3527,  3528,  3528,  3529,  3529,  3529,  3530,  3532,  3544,
+    3556,  3568,  3583,  3596,  3609,  3620,  3625,  3626,  3627,  3627,
+    3629,  3644
+};
+#endif
 
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 static const char *const yytname[] =
 {
-  "\"end of file\"", "error", "\"invalid token\"", "SPACE", "LETTER",
-  "NEWLINE", "COMMENT", "COLON", "ANY", "ZONESTR", "STRING_ARG",
-  "VAR_FORCE_TOPLEVEL", "VAR_SERVER", "VAR_VERBOSITY", "VAR_NUM_THREADS",
-  "VAR_PORT", "VAR_OUTGOING_RANGE", "VAR_INTERFACE", "VAR_PREFER_IP4",
-  "VAR_DO_IP4", "VAR_DO_IP6", "VAR_PREFER_IP6", "VAR_DO_UDP", "VAR_DO_TCP",
+  "$end", "error", "$undefined", "SPACE", "LETTER", "NEWLINE", "COMMENT",
+  "COLON", "ANY", "ZONESTR", "STRING_ARG", "VAR_FORCE_TOPLEVEL",
+  "VAR_SERVER", "VAR_VERBOSITY", "VAR_NUM_THREADS", "VAR_PORT",
+  "VAR_OUTGOING_RANGE", "VAR_INTERFACE", "VAR_PREFER_IP4", "VAR_DO_IP4",
+  "VAR_DO_IP6", "VAR_PREFER_IP6", "VAR_DO_UDP", "VAR_DO_TCP",
   "VAR_TCP_MSS", "VAR_OUTGOING_TCP_MSS", "VAR_TCP_IDLE_TIMEOUT",
   "VAR_EDNS_TCP_KEEPALIVE", "VAR_EDNS_TCP_KEEPALIVE_TIMEOUT", "VAR_CHROOT",
   "VAR_USERNAME", "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE",
@@ -1383,9 +1509,9 @@ static const char *const yytname[] =
   "VAR_VIEW", "VAR_ACCESS_CONTROL_VIEW", "VAR_VIEW_FIRST",
   "VAR_SERVE_EXPIRED", "VAR_SERVE_EXPIRED_TTL",
   "VAR_SERVE_EXPIRED_TTL_RESET", "VAR_SERVE_EXPIRED_REPLY_TTL",
-  "VAR_SERVE_EXPIRED_CLIENT_TIMEOUT", "VAR_SERVE_ORIGINAL_TTL",
-  "VAR_FAKE_DSA", "VAR_FAKE_SHA1", "VAR_LOG_IDENTITY",
-  "VAR_HIDE_TRUSTANCHOR", "VAR_HIDE_HTTP_USER_AGENT",
+  "VAR_SERVE_EXPIRED_CLIENT_TIMEOUT", "VAR_EDE_SERVE_EXPIRED",
+  "VAR_SERVE_ORIGINAL_TTL", "VAR_FAKE_DSA", "VAR_FAKE_SHA1",
+  "VAR_LOG_IDENTITY", "VAR_HIDE_TRUSTANCHOR", "VAR_HIDE_HTTP_USER_AGENT",
   "VAR_HTTP_USER_AGENT", "VAR_TRUST_ANCHOR_SIGNALING",
   "VAR_AGGRESSIVE_NSEC", "VAR_USE_SYSTEMD", "VAR_SHM_ENABLE",
   "VAR_SHM_KEY", "VAR_ROOT_KEY_SENTINEL", "VAR_DNSCRYPT",
@@ -1417,7 +1543,7 @@ static const char *const yytname[] =
   "VAR_EDNS_CLIENT_STRING", "VAR_EDNS_CLIENT_STRING_OPCODE", "VAR_NSID",
   "VAR_ZONEMD_PERMISSIVE_MODE", "VAR_ZONEMD_CHECK",
   "VAR_ZONEMD_REJECT_ABSENCE", "VAR_RPZ_SIGNAL_NXDOMAIN_RA",
-  "VAR_INTERFACE_AUTOMATIC_PORTS", "$accept", "toplevelvars",
+  "VAR_INTERFACE_AUTOMATIC_PORTS", "VAR_EDE", "$accept", "toplevelvars",
   "toplevelvar", "force_toplevel", "serverstart", "contents_server",
   "content_server", "stubstart", "contents_stub", "content_stub",
   "forwardstart", "contents_forward", "content_forward", "viewstart",
@@ -1492,10 +1618,10 @@ static const char *const yytname[] =
   "server_ignore_cd_flag", "server_serve_expired",
   "server_serve_expired_ttl", "server_serve_expired_ttl_reset",
   "server_serve_expired_reply_ttl", "server_serve_expired_client_timeout",
-  "server_serve_original_ttl", "server_fake_dsa", "server_fake_sha1",
-  "server_val_log_level", "server_val_nsec3_keysize_iterations",
-  "server_zonemd_permissive_mode", "server_add_holddown",
-  "server_del_holddown", "server_keep_missing",
+  "server_ede_serve_expired", "server_serve_original_ttl",
+  "server_fake_dsa", "server_fake_sha1", "server_val_log_level",
+  "server_val_nsec3_keysize_iterations", "server_zonemd_permissive_mode",
+  "server_add_holddown", "server_del_holddown", "server_keep_missing",
   "server_permit_small_holddown", "server_key_cache_size",
   "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone",
   "server_local_data", "server_local_data_ptr", "server_minimal_responses",
@@ -1519,24 +1645,25 @@ static const char *const yytname[] =
   "server_ipsecmod_hook", "server_ipsecmod_max_ttl",
   "server_ipsecmod_whitelist", "server_ipsecmod_strict",
   "server_edns_client_string", "server_edns_client_string_opcode",
-  "stub_name", "stub_host", "stub_addr", "stub_first", "stub_no_cache",
-  "stub_ssl_upstream", "stub_tcp_upstream", "stub_prime", "forward_name",
-  "forward_host", "forward_addr", "forward_first", "forward_no_cache",
-  "forward_ssl_upstream", "forward_tcp_upstream", "auth_name",
-  "auth_zonefile", "auth_master", "auth_url", "auth_allow_notify",
-  "auth_zonemd_check", "auth_zonemd_reject_absence", "auth_for_downstream",
-  "auth_for_upstream", "auth_fallback_enabled", "view_name",
-  "view_local_zone", "view_response_ip", "view_response_ip_data",
-  "view_local_data", "view_local_data_ptr", "view_first", "rcstart",
-  "contents_rc", "content_rc", "rc_control_enable", "rc_control_port",
-  "rc_control_interface", "rc_control_use_cert", "rc_server_key_file",
-  "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file",
-  "dtstart", "contents_dt", "content_dt", "dt_dnstap_enable",
-  "dt_dnstap_bidirectional", "dt_dnstap_socket_path", "dt_dnstap_ip",
-  "dt_dnstap_tls", "dt_dnstap_tls_server_name",
-  "dt_dnstap_tls_cert_bundle", "dt_dnstap_tls_client_key_file",
-  "dt_dnstap_tls_client_cert_file", "dt_dnstap_send_identity",
-  "dt_dnstap_send_version", "dt_dnstap_identity", "dt_dnstap_version",
+  "server_ede", "stub_name", "stub_host", "stub_addr", "stub_first",
+  "stub_no_cache", "stub_ssl_upstream", "stub_tcp_upstream", "stub_prime",
+  "forward_name", "forward_host", "forward_addr", "forward_first",
+  "forward_no_cache", "forward_ssl_upstream", "forward_tcp_upstream",
+  "auth_name", "auth_zonefile", "auth_master", "auth_url",
+  "auth_allow_notify", "auth_zonemd_check", "auth_zonemd_reject_absence",
+  "auth_for_downstream", "auth_for_upstream", "auth_fallback_enabled",
+  "view_name", "view_local_zone", "view_response_ip",
+  "view_response_ip_data", "view_local_data", "view_local_data_ptr",
+  "view_first", "rcstart", "contents_rc", "content_rc",
+  "rc_control_enable", "rc_control_port", "rc_control_interface",
+  "rc_control_use_cert", "rc_server_key_file", "rc_server_cert_file",
+  "rc_control_key_file", "rc_control_cert_file", "dtstart", "contents_dt",
+  "content_dt", "dt_dnstap_enable", "dt_dnstap_bidirectional",
+  "dt_dnstap_socket_path", "dt_dnstap_ip", "dt_dnstap_tls",
+  "dt_dnstap_tls_server_name", "dt_dnstap_tls_cert_bundle",
+  "dt_dnstap_tls_client_key_file", "dt_dnstap_tls_client_cert_file",
+  "dt_dnstap_send_identity", "dt_dnstap_send_version",
+  "dt_dnstap_identity", "dt_dnstap_version",
   "dt_dnstap_log_resolver_query_messages",
   "dt_dnstap_log_resolver_response_messages",
   "dt_dnstap_log_client_query_messages",
@@ -1556,20 +1683,14 @@ static const char *const yytname[] =
   "cachedb_backend_name", "cachedb_secret_seed", "redis_server_host",
   "redis_server_port", "redis_timeout", "redis_expire_records",
   "server_tcp_connection_limit", "ipsetstart", "contents_ipset",
-  "content_ipset", "ipset_name_v4", "ipset_name_v6", YY_NULLPTR
+  "content_ipset", "ipset_name_v4", "ipset_name_v6", 0
 };
-
-static const char *
-yysymbol_name (yysymbol_kind_t yysymbol)
-{
-  return yytname[yysymbol];
-}
 #endif
 
-#ifdef YYPRINT
-/* YYTOKNUM[NUM] -- (External) token number corresponding to the
-   (internal) symbol number NUM (which must be that of a token).  */
-static const yytype_int16 yytoknum[] =
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
+static const yytype_uint16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
@@ -1603,136 +1724,167 @@ static const yytype_int16 yytoknum[] =
      545,   546,   547,   548,   549,   550,   551,   552,   553,   554,
      555,   556,   557,   558,   559,   560,   561,   562,   563,   564,
      565,   566,   567,   568,   569,   570,   571,   572,   573,   574,
-     575,   576,   577,   578,   579
+     575,   576,   577,   578,   579,   580,   581
 };
-#endif
-
-#define YYPACT_NINF (-310)
-
-#define yypact_value_is_default(Yyn) \
-  ((Yyn) == YYPACT_NINF)
-
-#define YYTABLE_NINF (-1)
+# endif
 
-#define yytable_value_is_error(Yyn) \
-  0
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const yytype_uint16 yyr1[] =
+{
+       0,   327,   328,   328,   329,   329,   329,   329,   329,   329,
+     329,   329,   329,   329,   329,   329,   329,   329,   330,   331,
+     332,   332,   333,   333,   333,   333,   333,   333,   333,   333,
+     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+     333,   333,   333,   333,   333,   333,   334,   335,   335,   336,
+     336,   336,   336,   336,   336,   336,   336,   337,   338,   338,
+     339,   339,   339,   339,   339,   339,   339,   340,   341,   341,
+     342,   342,   342,   342,   342,   342,   342,   343,   344,   344,
+     345,   345,   345,   345,   345,   345,   345,   345,   345,   345,
+     346,   347,   348,   349,   350,   351,   352,   353,   353,   354,
+     354,   354,   354,   354,   354,   354,   354,   354,   354,   354,
+     354,   355,   356,   357,   358,   359,   360,   361,   362,   363,
+     364,   365,   366,   367,   368,   369,   370,   371,   372,   373,
+     374,   375,   376,   377,   378,   379,   380,   381,   382,   383,
+     384,   385,   386,   387,   388,   389,   390,   391,   392,   393,
+     394,   395,   396,   397,   398,   399,   400,   401,   402,   403,
+     404,   405,   406,   407,   408,   409,   410,   411,   412,   413,
+     414,   415,   416,   417,   418,   419,   420,   421,   422,   423,
+     424,   425,   426,   427,   428,   429,   430,   431,   432,   433,
+     434,   435,   436,   437,   438,   439,   440,   441,   442,   443,
+     444,   445,   446,   447,   448,   449,   450,   451,   452,   453,
+     454,   455,   456,   457,   458,   459,   460,   461,   462,   463,
+     464,   465,   466,   467,   468,   469,   470,   471,   472,   473,
+     474,   475,   476,   477,   478,   479,   480,   481,   482,   483,
+     484,   485,   486,   487,   488,   489,   490,   491,   492,   493,
+     494,   495,   496,   497,   498,   499,   500,   501,   502,   503,
+     504,   505,   506,   507,   508,   509,   510,   511,   512,   513,
+     514,   515,   516,   517,   518,   519,   520,   521,   522,   523,
+     524,   525,   526,   527,   528,   529,   530,   531,   532,   533,
+     534,   535,   536,   537,   538,   539,   540,   541,   542,   543,
+     544,   545,   546,   547,   548,   549,   550,   551,   552,   553,
+     554,   555,   556,   557,   558,   559,   560,   561,   562,   563,
+     564,   565,   566,   567,   568,   569,   570,   571,   572,   573,
+     574,   575,   576,   577,   578,   579,   580,   581,   582,   583,
+     584,   585,   586,   587,   588,   589,   590,   591,   592,   593,
+     594,   595,   596,   597,   598,   599,   600,   601,   602,   603,
+     604,   605,   606,   607,   607,   608,   608,   608,   608,   608,
+     608,   608,   608,   609,   610,   611,   612,   613,   614,   615,
+     616,   617,   618,   618,   619,   619,   619,   619,   619,   619,
+     619,   619,   619,   619,   619,   619,   619,   619,   619,   619,
+     619,   619,   619,   620,   621,   622,   623,   624,   625,   626,
+     627,   628,   629,   630,   631,   632,   633,   634,   635,   636,
+     637,   638,   639,   640,   640,   641,   642,   643,   644,   644,
+     645,   646,   647,   648,   649,   650,   651,   652,   652,   653,
+     653,   653,   653,   653,   653,   653,   653,   653,   653,   654,
+     655,   656,   657,   658,   659,   660,   661,   662,   663,   664,
+     665,   665,   666,   666,   666,   666,   666,   666,   667,   668,
+     669,   670,   671,   672,   673,   674,   675,   675,   676,   676,
+     677,   678
+};
 
-  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-     STATE-NUM.  */
-static const yytype_int16 yypact[] =
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const yytype_uint8 yyr2[] =
 {
-    -310,     0,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,   303,   -39,   -32,   -43,   -30,   -44,   -42,   -97,
-    -110,  -309,  -229,  -233,  -303,     4,     6,     7,     8,     9,
-      10,    23,    24,    25,    26,    27,    37,    38,    39,    40,
-      41,    43,    44,    53,    54,    56,    57,    58,    59,    60,
-      81,    82,    83,    84,    85,    87,    88,    89,    90,    91,
-      92,    93,    95,    96,    98,    99,   101,   103,   107,   108,
-     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
-     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
-     129,   130,   131,   132,   133,   134,   135,   138,   139,   140,
-     141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
-     151,   152,   153,   154,   155,   156,   157,   159,   160,   161,
-     162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
-     172,   173,   174,   175,   176,   177,   178,   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,   221,   222,   223,
-     224,   225,   226,   227,   232,   233,   234,   235,   236,   237,
-     239,   248,   249,   250,   251,   254,   255,   261,   263,   264,
-     265,   266,   267,   268,   270,   272,   273,   274,   275,   276,
-     277,   278,   279,   280,   283,   284,   285,   286,   287,   288,
-     289,   290,   291,   292,   293,   294,   296,   297,   298,   300,
-     301,   302,   304,   338,   339,   340,   341,   345,   346,   347,
-     389,   390,   391,   392,   393,   394,   395,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-     396,   397,   403,   407,   408,   435,   436,   437,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,   439,   440,   448,
-     461,   462,   463,   464,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,   465,   466,   467,   468,   469,   470,   471,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,   472,   473,   474,
-     475,   476,   477,   478,   479,   480,   523,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,   525,   544,
-     545,   546,   547,   548,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,   549,   550,   551,
-     552,   553,   554,   565,   566,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,   567,   568,   569,   570,   571,   573,
-     574,   575,   576,   577,   578,   579,   582,   585,   588,   589,
-     598,   599,   600,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,   602,  -310,  -310,   603,  -310,  -310,   604,
-     605,   606,   607,   608,   609,   614,   615,   616,   618,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-     619,   620,   621,   622,   623,   624,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,   625,   626,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,   627,   628,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,   629,   630,
-     631,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,   632,   633,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,   634,   635,   636,   637,   638,
-     639,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,   640,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,   641,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,   642,  -310,  -310,   643,
-     644,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,   645,   646,   647,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310
+       0,     2,     0,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     1,     1,     1,
+       2,     0,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     2,     0,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     2,     0,
+       1,     1,     1,     1,     1,     1,     1,     1,     2,     0,
+       1,     1,     1,     1,     1,     1,     1,     1,     2,     0,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       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,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     3,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     3,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     3,     3,     4,     4,     4,     3,     3,     2,
+       2,     2,     2,     2,     2,     3,     3,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     3,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     3,     3,     3,     2,
+       2,     2,     1,     2,     0,     1,     1,     1,     1,     1,
+       1,     1,     1,     2,     2,     2,     2,     2,     2,     2,
+       2,     1,     2,     0,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     1,     2,     0,     1,     2,     1,     2,     0,
+       1,     2,     2,     2,     3,     3,     1,     2,     0,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     1,
+       2,     0,     1,     1,     1,     1,     1,     1,     2,     2,
+       2,     2,     2,     2,     3,     1,     2,     0,     1,     1,
+       2,     2
 };
 
-  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
-     Performed when YYTABLE does not specify something else to do.  Zero
-     means the default is an error.  */
-static const yytype_int16 yydefact[] =
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
+static const yytype_uint16 yydefact[] =
 {
-       2,     0,     1,    18,    19,   244,   255,   558,   618,   577,
-     265,   632,   655,   275,   671,   294,   623,     3,    17,    21,
-     246,   257,   267,   277,   296,   560,   579,   620,   625,   634,
-     657,   673,     4,     5,     6,    10,    14,    15,     8,     9,
+       2,     0,     1,    18,    19,   246,   257,   562,   622,   581,
+     267,   636,   659,   277,   675,   296,   627,     3,    17,    21,
+     248,   259,   269,   279,   298,   564,   583,   624,   629,   638,
+     661,   677,     4,     5,     6,    10,    14,    15,     8,     9,
        7,    16,    11,    12,    13,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@ -1755,246 +1907,361 @@ static const yytype_int16 yydefact[] =
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    20,    22,    23,
-      88,    91,   100,   206,   207,    24,   166,   167,   168,   169,
-     170,   171,   172,   173,   174,   175,    37,    79,    25,    92,
-      93,    48,    72,    87,   243,    26,    27,    30,    31,    28,
-      29,    32,    33,    34,   240,   241,   242,    35,    36,   124,
-     218,   125,   127,   128,   129,   220,   225,   221,   232,   233,
-     234,   235,   130,   131,   132,   133,   134,   135,   136,   202,
-      89,    78,   104,   122,   123,   230,   227,   126,    38,    39,
-      40,    41,    42,    80,    94,    95,   111,    66,    76,    67,
-     210,   211,   105,    58,    59,   209,    62,    60,    61,    63,
-     238,   115,   119,   140,   150,   180,   153,   231,   116,    73,
-      43,    44,    45,   102,   141,   142,   143,   144,    46,    47,
-      49,    50,    52,    53,    51,   148,   154,    54,    55,    56,
-      64,    83,   120,    97,   149,    90,   176,    98,    99,   117,
-     118,   228,   103,    57,    81,    84,    65,    68,   106,   107,
-     108,    82,   177,   109,    69,    70,    71,   219,   121,   194,
-     195,   196,   197,   198,   199,   200,   208,   110,    77,   239,
-     112,   113,   114,   178,    74,    75,    96,    85,    86,   101,
-     137,   138,   229,   139,   145,   146,   147,   181,   182,   184,
-     186,   187,   185,   188,   203,   151,   152,   157,   158,   155,
-     156,   159,   160,   162,   161,   164,   163,   165,   222,   224,
-     223,   179,   189,   190,   191,   192,   193,   212,   214,   213,
-     215,   216,   217,   236,   237,   183,   201,   204,   205,   226,
-       0,     0,     0,     0,     0,     0,     0,     0,   245,   247,
-     248,   249,   251,   252,   253,   254,   250,     0,     0,     0,
-       0,     0,     0,     0,   256,   258,   259,   260,   261,   262,
-     263,   264,     0,     0,     0,     0,     0,     0,     0,   266,
-     268,   269,   272,   273,   270,   274,   271,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   276,   278,   279,
-     280,   281,   285,   286,   287,   282,   283,   284,     0,     0,
-       0,     0,     0,     0,   299,   303,   304,   305,   306,   307,
-     295,   297,   298,   300,   301,   302,   308,     0,     0,     0,
-       0,     0,     0,     0,     0,   559,   561,   563,   562,   568,
-     564,   565,   566,   567,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    20,
+      22,    23,    88,    91,   100,   207,   208,    24,   166,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,    37,    79,
+      25,    92,    93,    48,    72,    87,   244,    26,    27,    30,
+      31,    28,    29,    32,    33,    34,   241,   242,   243,    35,
+      36,   124,   219,   125,   127,   128,   129,   221,   226,   222,
+     233,   234,   235,   236,   130,   131,   132,   133,   134,   135,
+     136,   203,    89,    78,   104,   122,   123,   231,   228,   126,
+      38,    39,    40,    41,    42,    80,    94,    95,   111,    66,
+      76,    67,   211,   212,   105,    58,    59,   210,    62,    60,
+      61,    63,   239,   115,   119,   140,   150,   180,   153,   232,
+     116,    73,    43,    44,    45,   102,   141,   142,   143,   144,
+      46,    47,    49,    50,    52,    53,    51,   148,   154,    54,
+      55,    56,    64,    83,   120,    97,   149,    90,   176,    98,
+      99,   117,   118,   229,   103,    57,    81,    84,    65,    68,
+     106,   107,   108,    82,   177,   109,    69,    70,    71,   220,
+     121,   194,   195,   196,   197,   198,   199,   200,   201,   209,
+     110,    77,   240,   112,   113,   114,   178,    74,    75,    96,
+      85,    86,   101,   137,   138,   230,   139,   145,   146,   147,
+     181,   182,   184,   186,   187,   185,   188,   204,   151,   152,
+     157,   158,   155,   156,   159,   160,   162,   161,   164,   163,
+     165,   223,   225,   224,   179,   189,   190,   191,   192,   193,
+     213,   215,   214,   216,   217,   218,   237,   238,   245,   183,
+     202,   205,   206,   227,     0,     0,     0,     0,     0,     0,
+       0,     0,   247,   249,   250,   251,   253,   254,   255,   256,
+     252,     0,     0,     0,     0,     0,     0,     0,   258,   260,
+     261,   262,   263,   264,   265,   266,     0,     0,     0,     0,
+       0,     0,     0,   268,   270,   271,   274,   275,   272,   276,
+     273,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   278,   280,   281,   282,   283,   287,   288,   289,   284,
+     285,   286,     0,     0,     0,     0,     0,     0,   301,   305,
+     306,   307,   308,   309,   297,   299,   300,   302,   303,   304,
+     310,     0,     0,     0,     0,     0,     0,     0,     0,   563,
+     565,   567,   566,   572,   568,   569,   570,   571,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   578,   580,   582,   581,   583,   584,   585,
-     586,   587,   588,   589,   590,   591,   592,   593,   594,   595,
-     596,   597,   598,     0,   619,   621,     0,   624,   626,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   633,
-     635,   636,   637,   639,   640,   638,   641,   642,   643,   644,
-       0,     0,     0,     0,     0,     0,   656,   658,   659,   660,
-     661,   662,   663,     0,     0,   672,   674,   675,   310,   309,
-     316,   329,   327,   340,   336,   337,   341,   338,   339,   342,
-     343,   344,   348,   349,   379,   380,   381,   382,   383,   411,
-     412,   413,   419,   420,   332,   421,   422,   425,   423,   424,
-     428,   429,   430,   444,   394,   395,   398,   399,   431,   447,
-     388,   390,   448,   455,   456,   457,   333,   410,   475,   476,
-     389,   469,   372,   328,   384,   445,   452,   432,     0,     0,
-     479,   334,   311,   371,   436,   312,   330,   331,   385,   386,
-     477,   434,   438,   439,   346,   345,   313,   480,   414,   443,
-     373,   393,   449,   450,   451,   454,   468,   387,   473,   471,
-     472,   402,   409,   440,   441,   403,   404,   433,   459,   374,
-     375,   378,   350,   352,   347,   353,   354,   355,   356,   363,
-     364,   365,   366,   367,   368,   369,   481,   482,   484,   415,
-     416,   417,   418,   426,   427,   485,   486,   487,     0,     0,
-       0,   435,   405,   407,   628,   496,   500,   498,   497,   501,
-     499,   508,     0,     0,   504,   505,   506,   507,   317,   318,
-     319,   320,   321,   322,   323,   324,   325,   326,   437,   453,
-     474,   512,   513,   406,   488,     0,     0,     0,     0,     0,
-       0,   460,   461,   462,   463,   464,   465,   466,   467,   629,
-     396,   397,   400,   391,   458,   370,   314,   315,   392,   514,
-     515,   516,   517,   518,   520,   519,   521,   522,   523,   351,
-     358,   509,   511,   510,   357,     0,   377,   442,   483,   376,
-     408,   359,   360,   362,   361,     0,   525,   401,   470,   335,
-     526,   527,   528,   533,   531,   532,   529,   530,   534,   535,
-     536,   537,   539,   540,   538,   551,     0,   555,   556,     0,
-       0,   557,   541,   549,   542,   543,   544,   548,   550,   545,
-     546,   547,   288,   289,   290,   291,   292,   293,   569,   571,
-     570,   573,   574,   575,   576,   572,   599,   601,   602,   603,
-     604,   605,   606,   607,   608,   609,   600,   610,   611,   612,
-     613,   614,   615,   616,   617,   622,   627,   645,   646,   647,
-     650,   648,   649,   651,   652,   653,   654,   664,   665,   666,
-     667,   668,   669,   676,   677,   446,   478,   495,   630,   631,
-     502,   503,   489,   490,     0,     0,     0,   494,   670,   524,
-     552,   553,   554,   493,   491,   492
+       0,     0,     0,     0,     0,     0,     0,   582,   584,   586,
+     585,   587,   588,   589,   590,   591,   592,   593,   594,   595,
+     596,   597,   598,   599,   600,   601,   602,     0,   623,   625,
+       0,   628,   630,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   637,   639,   640,   641,   643,   644,   642,
+     645,   646,   647,   648,     0,     0,     0,     0,     0,     0,
+     660,   662,   663,   664,   665,   666,   667,     0,     0,   676,
+     678,   679,   312,   311,   318,   331,   329,   342,   338,   339,
+     343,   340,   341,   344,   345,   346,   350,   351,   381,   382,
+     383,   384,   385,   413,   414,   415,   421,   422,   334,   423,
+     424,   427,   425,   426,   430,   431,   432,   446,   396,   397,
+     400,   401,   433,   449,   390,   392,   450,   457,   458,   459,
+     335,   412,   478,   479,   391,   472,   374,   330,   386,   447,
+     454,   434,     0,     0,   482,   336,   313,   373,   438,   314,
+     332,   333,   387,   388,   480,   436,   440,   441,   348,   347,
+     315,   483,   416,   445,   375,   395,   451,   452,   453,   456,
+     471,   389,   476,   474,   475,   404,   411,   442,   443,   405,
+     406,   435,   461,   376,   377,   380,   352,   354,   349,   355,
+     356,   357,   358,   365,   366,   367,   368,   369,   370,   371,
+     484,   485,   487,   417,   418,   419,   420,   428,   429,   488,
+     489,   490,     0,     0,     0,   437,   407,   409,   632,   499,
+     503,   501,   500,   504,   502,   511,     0,     0,   507,   508,
+     509,   510,   319,   320,   321,   322,   323,   324,   325,   326,
+     327,   328,   439,   455,   477,   515,   516,   408,   491,     0,
+       0,     0,     0,     0,     0,   462,   463,   464,   465,   466,
+     467,   468,   469,   470,   633,   398,   399,   402,   393,   460,
+     372,   316,   317,   394,   517,   518,   519,   520,   521,   523,
+     522,   524,   525,   526,   353,   360,   512,   514,   513,   359,
+       0,   379,   444,   486,   378,   410,   361,   362,   364,   363,
+       0,   528,   403,   473,   337,   529,   530,   531,   532,   537,
+     535,   536,   533,   534,   538,   539,   540,   541,   543,   544,
+     542,   555,     0,   559,   560,     0,     0,   561,   545,   553,
+     546,   547,   548,   552,   554,   549,   550,   551,   290,   291,
+     292,   293,   294,   295,   573,   575,   574,   577,   578,   579,
+     580,   576,   603,   605,   606,   607,   608,   609,   610,   611,
+     612,   613,   604,   614,   615,   616,   617,   618,   619,   620,
+     621,   626,   631,   649,   650,   651,   654,   652,   653,   655,
+     656,   657,   658,   668,   669,   670,   671,   672,   673,   680,
+     681,   448,   481,   498,   634,   635,   505,   506,   492,   493,
+       0,     0,     0,   497,   674,   527,   556,   557,   558,   496,
+     494,   495
 };
 
-  /* YYPGOTO[NTERM-NUM].  */
-static const yytype_int16 yypgoto[] =
+/* YYDEFGOTO[NTERM-NUM].  */
+static const yytype_int16 yydefgoto[] =
 {
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-     -27,   648,   649,   650,   651,  -310,  -310,   652,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310
+      -1,     1,    17,    18,    19,    32,   269,    20,    33,   502,
+      21,    34,   518,    22,    35,   533,    23,    36,   551,   568,
+     569,   570,   571,   572,   573,    24,    37,   574,   270,   271,
+     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
+     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
+     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
+     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+     312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
+     332,   333,   334,   335,   336,   337,   338,   339,   340,   341,
+     342,   343,   344,   345,   346,   347,   348,   349,   350,   351,
+     352,   353,   354,   355,   356,   357,   358,   359,   360,   361,
+     362,   363,   364,   365,   366,   367,   368,   369,   370,   371,
+     372,   373,   374,   375,   376,   377,   378,   379,   380,   381,
+     382,   383,   384,   385,   386,   387,   388,   389,   390,   391,
+     392,   393,   394,   395,   396,   397,   398,   399,   400,   401,
+     402,   403,   404,   405,   406,   407,   408,   409,   410,   411,
+     412,   413,   414,   415,   416,   417,   418,   419,   420,   421,
+     422,   423,   424,   425,   426,   427,   428,   429,   430,   431,
+     432,   433,   434,   435,   436,   437,   438,   439,   440,   441,
+     442,   443,   444,   445,   446,   447,   448,   449,   450,   451,
+     452,   453,   454,   455,   456,   457,   458,   459,   460,   461,
+     462,   463,   464,   465,   466,   467,   468,   469,   470,   471,
+     472,   473,   474,   475,   476,   477,   478,   479,   480,   481,
+     482,   483,   484,   485,   486,   487,   488,   503,   504,   505,
+     506,   507,   508,   509,   510,   519,   520,   521,   522,   523,
+     524,   525,   552,   553,   554,   555,   556,   557,   558,   559,
+     560,   561,   534,   535,   536,   537,   538,   539,   540,    25,
+      38,   589,   590,   591,   592,   593,   594,   595,   596,   597,
+      26,    39,   617,   618,   619,   620,   621,   622,   623,   624,
+     625,   626,   627,   628,   629,   630,   631,   632,   633,   634,
+     635,   636,    27,    40,   638,   639,    28,    41,   641,   642,
+     489,   490,   491,   492,    29,    42,   653,   654,   655,   656,
+     657,   658,   659,   660,   661,   662,   663,    30,    43,   670,
+     671,   672,   673,   674,   675,   676,   493,    31,    44,   679,
+     680,   681
 };
 
-  /* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int16 yydefgoto[] =
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -311
+static const yytype_int16 yypact[] =
 {
-       0,     1,    17,    18,    19,    32,   267,    20,    33,   498,
-      21,    34,   514,    22,    35,   529,    23,    36,   547,   564,
-     565,   566,   567,   568,   569,    24,    37,   570,   268,   269,
-     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
-     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
-     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
-     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
-     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     330,   331,   332,   333,   334,   335,   336,   337,   338,   339,
-     340,   341,   342,   343,   344,   345,   346,   347,   348,   349,
-     350,   351,   352,   353,   354,   355,   356,   357,   358,   359,
-     360,   361,   362,   363,   364,   365,   366,   367,   368,   369,
-     370,   371,   372,   373,   374,   375,   376,   377,   378,   379,
-     380,   381,   382,   383,   384,   385,   386,   387,   388,   389,
-     390,   391,   392,   393,   394,   395,   396,   397,   398,   399,
-     400,   401,   402,   403,   404,   405,   406,   407,   408,   409,
-     410,   411,   412,   413,   414,   415,   416,   417,   418,   419,
-     420,   421,   422,   423,   424,   425,   426,   427,   428,   429,
-     430,   431,   432,   433,   434,   435,   436,   437,   438,   439,
-     440,   441,   442,   443,   444,   445,   446,   447,   448,   449,
-     450,   451,   452,   453,   454,   455,   456,   457,   458,   459,
-     460,   461,   462,   463,   464,   465,   466,   467,   468,   469,
-     470,   471,   472,   473,   474,   475,   476,   477,   478,   479,
-     480,   481,   482,   483,   484,   499,   500,   501,   502,   503,
-     504,   505,   506,   515,   516,   517,   518,   519,   520,   521,
-     548,   549,   550,   551,   552,   553,   554,   555,   556,   557,
-     530,   531,   532,   533,   534,   535,   536,    25,    38,   585,
-     586,   587,   588,   589,   590,   591,   592,   593,    26,    39,
-     613,   614,   615,   616,   617,   618,   619,   620,   621,   622,
-     623,   624,   625,   626,   627,   628,   629,   630,   631,   632,
-      27,    40,   634,   635,    28,    41,   637,   638,   485,   486,
-     487,   488,    29,    42,   649,   650,   651,   652,   653,   654,
-     655,   656,   657,   658,   659,    30,    43,   666,   667,   668,
-     669,   670,   671,   672,   489,    31,    44,   675,   676,   677
+    -311,     0,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,   304,   -39,   -32,   -43,   -30,   -44,   -42,   -97,
+    -110,  -310,  -230,  -234,  -304,     4,     6,     7,     8,     9,
+      10,    23,    24,    25,    26,    27,    37,    38,    39,    40,
+      41,    43,    44,    53,    54,    56,    57,    58,    59,    60,
+      81,    82,    83,    84,    85,    87,    88,    89,    90,    91,
+      92,    93,    95,    96,    98,    99,   101,   103,   107,   108,
+     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
+     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
+     129,   130,   131,   132,   133,   134,   135,   138,   139,   140,
+     141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
+     151,   152,   153,   154,   155,   156,   157,   159,   160,   161,
+     162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,   176,   177,   178,   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,   221,   222,   223,
+     224,   225,   226,   227,   228,   233,   234,   235,   236,   237,
+     238,   240,   249,   250,   251,   252,   255,   256,   262,   264,
+     265,   266,   267,   268,   269,   271,   273,   274,   275,   276,
+     277,   278,   279,   280,   281,   284,   285,   286,   287,   288,
+     289,   290,   291,   292,   293,   294,   295,   297,   298,   299,
+     301,   302,   303,   305,   339,   340,   341,   342,   346,   347,
+     348,   390,   391,   392,   393,   394,   395,   396,   397,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,   398,   404,   408,   409,   436,   437,
+     438,   440,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,   441,   449,   462,   463,   464,   465,   466,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,   467,   468,   469,   470,
+     471,   472,   473,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,   474,   475,   476,   477,   478,   479,   480,   481,   524,
+     526,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,   546,   547,   548,   549,   550,   551,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,   552,   553,   554,   555,   556,   567,   568,   569,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,   570,   571,
+     572,   573,   575,   576,   577,   578,   579,   580,   581,   584,
+     587,   590,   591,   600,   601,   602,   604,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,   605,  -311,  -311,
+     606,  -311,  -311,   607,   608,   609,   610,   611,   616,   617,
+     618,   621,   622,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,   623,   624,   625,   626,   627,   628,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,   629,   630,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,   631,   632,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,   633,   634,   635,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,   636,   637,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,   638,
+     639,   640,   641,   642,   643,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+     644,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+     645,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,   646,  -311,  -311,   647,   648,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+     649,   650,   651,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311
 };
 
-  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
-     positive, shift that token.  If negative, reduce the rule whose
-     number is the opposite.  If YYTABLE_NINF, syntax error.  */
-static const yytype_int16 yytable[] =
+/* YYPGOTO[NTERM-NUM].  */
+static const yytype_int16 yypgoto[] =
 {
-       2,   537,   522,   673,   674,   633,   490,   636,   491,   492,
-     571,     3,     4,   507,   678,   537,   679,   680,   681,   682,
-     683,   508,   509,   639,   640,   641,   642,   643,   644,   645,
-     646,   647,   648,   684,   685,   686,   687,   688,   523,   524,
-     660,   661,   662,   663,   664,   665,     5,   689,   690,   691,
-     692,   693,     6,   694,   695,   577,   578,   579,   580,   581,
-     582,   583,   584,   696,   697,   525,   698,   699,   700,   701,
-     702,   493,   594,   595,   596,   597,   598,   599,   600,   601,
-     602,   603,   604,   605,   606,   607,   608,   609,   610,   611,
-     612,   703,   704,   705,   706,   707,     7,   708,   709,   710,
-     711,   712,   713,   714,   494,   715,   716,   495,   717,   718,
-     510,   719,   511,   720,     8,   512,   496,   721,   722,   723,
-     724,   725,   726,   727,   728,   729,   730,   731,   732,   733,
-     734,   735,   736,   737,   738,   739,   740,   741,   742,   743,
-     744,   745,   746,   747,   748,   749,   526,   527,   750,   751,
-     752,   753,   754,   755,   756,   757,   758,   759,   760,   761,
-     762,   763,   764,   765,   766,   767,   768,   769,     9,   770,
-     771,   772,   773,   774,   775,   776,   777,   778,   779,   780,
-     781,   782,   783,   784,   785,   786,   787,   788,   789,   528,
-     790,   791,   792,   793,   794,   795,   796,   797,   798,   799,
-     800,   801,   802,   803,   804,   805,   806,   807,   808,   809,
-     810,   811,   812,   813,   814,   815,   816,   817,   818,   819,
-     820,   821,   822,   823,   824,   825,   826,   827,   828,   829,
-      10,   830,   831,   832,   833,   834,   835,   836,   539,   540,
-     541,   542,   837,   838,   839,   840,   841,   842,   544,   843,
-     538,    11,   539,   540,   541,   542,   543,   497,   844,   845,
-     846,   847,   544,   513,   848,   849,   558,   559,   560,   561,
-     562,   850,    12,   851,   852,   853,   854,   855,   856,   563,
-     857,    13,   858,   859,   860,   861,   862,   863,   864,   865,
-     866,   545,   546,   867,   868,   869,   870,   871,   872,   873,
-     874,   875,   876,   877,   878,    14,   879,   880,   881,    15,
-     882,   883,   884,     0,   885,    16,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,    72,    73,    74,    75,    76,   886,   887,
-     888,   889,    77,    78,    79,   890,   891,   892,    80,    81,
-      82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
-      92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
-     102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
-     112,   113,   114,   115,   116,   117,   118,   119,   120,   893,
-     894,   895,   896,   897,   898,   899,   900,   901,   121,   122,
-     123,   124,   125,   902,   126,   127,   128,   903,   904,   129,
-     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
-     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
-     150,   151,   152,   153,   154,   905,   906,   907,   155,   908,
-     909,   156,   157,   158,   159,   160,   161,   162,   910,   163,
-     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
-     174,   911,   912,   913,   914,   915,   916,   917,   918,   919,
-     920,   921,   922,   923,   924,   925,   926,   927,   928,   929,
-     930,   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,   931,   217,   932,   218,   219,   220,   221,
-     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
-     232,   233,   234,   235,   933,   934,   935,   936,   937,   938,
-     939,   940,   941,   942,   943,   236,   237,   238,   239,   240,
-     241,   242,   243,   244,   245,   944,   945,   946,   947,   948,
-     949,   950,   246,   951,   952,   953,   954,   955,   956,   957,
-     247,   248,   958,   249,   250,   959,   251,   252,   960,   961,
-     253,   254,   255,   256,   257,   258,   259,   260,   962,   963,
-     964,   261,   965,   966,   967,   968,   969,   970,   971,   972,
-     262,   263,   264,   265,   973,   974,   975,   266,   976,   977,
-     978,   979,   980,   981,   982,   983,   984,   985,   986,   987,
-     988,   989,   990,   991,   992,   993,   994,   995,   996,   997,
-     998,   999,  1000,  1001,  1002,  1003,  1004,  1005,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,   -27,   652,   653,   654,   655,  -311,  -311,   656,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,  -311,
+    -311,  -311
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If zero, do what YYDEFACT says.
+   If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -1
+static const yytype_uint16 yytable[] =
+{
+       2,   541,   526,   677,   678,   637,   494,   640,   495,   496,
+     575,     3,     4,   511,   682,   541,   683,   684,   685,   686,
+     687,   512,   513,   643,   644,   645,   646,   647,   648,   649,
+     650,   651,   652,   688,   689,   690,   691,   692,   527,   528,
+     664,   665,   666,   667,   668,   669,     5,   693,   694,   695,
+     696,   697,     6,   698,   699,   581,   582,   583,   584,   585,
+     586,   587,   588,   700,   701,   529,   702,   703,   704,   705,
+     706,   497,   598,   599,   600,   601,   602,   603,   604,   605,
+     606,   607,   608,   609,   610,   611,   612,   613,   614,   615,
+     616,   707,   708,   709,   710,   711,     7,   712,   713,   714,
+     715,   716,   717,   718,   498,   719,   720,   499,   721,   722,
+     514,   723,   515,   724,     8,   516,   500,   725,   726,   727,
+     728,   729,   730,   731,   732,   733,   734,   735,   736,   737,
+     738,   739,   740,   741,   742,   743,   744,   745,   746,   747,
+     748,   749,   750,   751,   752,   753,   530,   531,   754,   755,
+     756,   757,   758,   759,   760,   761,   762,   763,   764,   765,
+     766,   767,   768,   769,   770,   771,   772,   773,     9,   774,
+     775,   776,   777,   778,   779,   780,   781,   782,   783,   784,
+     785,   786,   787,   788,   789,   790,   791,   792,   793,   532,
+     794,   795,   796,   797,   798,   799,   800,   801,   802,   803,
+     804,   805,   806,   807,   808,   809,   810,   811,   812,   813,
+     814,   815,   816,   817,   818,   819,   820,   821,   822,   823,
+     824,   825,   826,   827,   828,   829,   830,   831,   832,   833,
+      10,   834,   835,   836,   837,   838,   839,   840,   841,   543,
+     544,   545,   546,   842,   843,   844,   845,   846,   847,   548,
+     848,   542,    11,   543,   544,   545,   546,   547,   501,   849,
+     850,   851,   852,   548,   517,   853,   854,   562,   563,   564,
+     565,   566,   855,    12,   856,   857,   858,   859,   860,   861,
+     567,   862,    13,   863,   864,   865,   866,   867,   868,   869,
+     870,   871,   549,   550,   872,   873,   874,   875,   876,   877,
+     878,   879,   880,   881,   882,   883,    14,   884,   885,   886,
+      15,   887,   888,   889,     0,   890,    16,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,   891,
+     892,   893,   894,    77,    78,    79,   895,   896,   897,    80,
+      81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
+      91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
+     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
+     111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
+     898,   899,   900,   901,   902,   903,   904,   905,   906,   121,
+     122,   123,   124,   125,   907,   126,   127,   128,   908,   909,
+     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
+     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+     149,   150,   151,   152,   153,   154,   910,   911,   912,   155,
+     913,   914,   156,   157,   158,   159,   160,   161,   162,   915,
+     163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
+     173,   174,   916,   917,   918,   919,   920,   921,   922,   923,
+     924,   925,   926,   927,   928,   929,   930,   931,   932,   933,
+     934,   935,   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,   936,   217,   937,   218,   219,   220,
+     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
+     231,   232,   233,   234,   235,   236,   938,   939,   940,   941,
+     942,   943,   944,   945,   946,   947,   948,   237,   238,   239,
+     240,   241,   242,   243,   244,   245,   246,   949,   950,   951,
+     952,   953,   954,   955,   247,   956,   957,   958,   959,   960,
+     961,   962,   248,   249,   963,   250,   251,   964,   252,   253,
+     965,   966,   254,   255,   256,   257,   258,   259,   260,   261,
+     967,   968,   969,   262,   970,   971,   972,   973,   974,   975,
+     976,   977,   263,   264,   265,   266,   978,   979,   980,   267,
+     268,   981,   982,   983,   984,   985,   986,   987,   988,   989,
+     990,   991,   992,   993,   994,   995,   996,   997,   998,   999,
+    1000,  1001,  1002,  1003,  1004,  1005,  1006,  1007,  1008,  1009,
+    1010,  1011,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   572,   573,   574,   575,   576
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   576,
+     577,   578,   579,   580
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    45,    45,   306,   307,   115,    45,   316,    47,    48,
+       0,    45,    45,   307,   308,   115,    45,   317,    47,    48,
       37,    11,    12,    45,    10,    45,    10,    10,    10,    10,
-      10,    53,    54,   252,   253,   254,   255,   256,   257,   258,
-     259,   260,   261,    10,    10,    10,    10,    10,    81,    82,
-     273,   274,   275,   276,   277,   278,    46,    10,    10,    10,
+      10,    53,    54,   253,   254,   255,   256,   257,   258,   259,
+     260,   261,   262,    10,    10,    10,    10,    10,    81,    82,
+     274,   275,   276,   277,   278,   279,    46,    10,    10,    10,
       10,    10,    52,    10,    10,    97,    98,    99,   100,   101,
      102,   103,   104,    10,    10,   108,    10,    10,    10,    10,
       10,   110,   169,   170,   171,   172,   173,   174,   175,   176,
@@ -2013,63 +2280,64 @@ static const yytype_int16 yycheck[] =
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-     230,    10,    10,    10,    10,    10,    10,    10,   282,   283,
-     284,   285,    10,    10,    10,    10,    10,    10,   292,    10,
-     280,   251,   282,   283,   284,   285,   286,   296,    10,    10,
-      10,    10,   292,   295,    10,    10,   310,   311,   312,   313,
-     314,    10,   272,    10,    10,    10,    10,    10,    10,   323,
-      10,   281,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,   321,   322,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,   305,    10,    10,    10,   309,
-      10,    10,    10,    -1,    10,   315,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    10,    10,
-      10,    10,    49,    50,    51,    10,    10,    10,    55,    56,
-      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-      77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
-      87,    88,    89,    90,    91,    92,    93,    94,    95,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,   105,   106,
-     107,   108,   109,    10,   111,   112,   113,    10,    10,   116,
-     117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
-     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-     137,   138,   139,   140,   141,    10,    10,    10,   145,    10,
-      10,   148,   149,   150,   151,   152,   153,   154,    10,   156,
-     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
-     167,    10,    10,    10,    10,    10,    10,    10,    10,    10,
+     230,    10,    10,    10,    10,    10,    10,    10,    10,   283,
+     284,   285,   286,    10,    10,    10,    10,    10,    10,   293,
+      10,   281,   252,   283,   284,   285,   286,   287,   297,    10,
+      10,    10,    10,   293,   296,    10,    10,   311,   312,   313,
+     314,   315,    10,   273,    10,    10,    10,    10,    10,    10,
+     324,    10,   282,    10,    10,    10,    10,    10,    10,    10,
+      10,    10,   322,   323,    10,    10,    10,    10,    10,    10,
+      10,    10,    10,    10,    10,    10,   306,    10,    10,    10,
+     310,    10,    10,    10,    -1,    10,   316,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    10,
+      10,    10,    10,    49,    50,    51,    10,    10,    10,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      10,    10,    10,    10,    10,    10,    10,    10,    10,   105,
+     106,   107,   108,   109,    10,   111,   112,   113,    10,    10,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,    10,    10,    10,   145,
+      10,    10,   148,   149,   150,   151,   152,   153,   154,    10,
+     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,   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,    10,   231,    10,   233,   234,   235,   236,
-     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
-     247,   248,   249,   250,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,   262,   263,   264,   265,   266,
-     267,   268,   269,   270,   271,    10,    10,    10,    10,    10,
-      10,    10,   279,    10,    10,    10,    10,    10,    10,    10,
-     287,   288,    10,   290,   291,    10,   293,   294,    10,    10,
-     297,   298,   299,   300,   301,   302,   303,   304,    10,    10,
-      10,   308,    10,    10,    10,    10,    10,    10,    10,    10,
-     317,   318,   319,   320,    10,    10,    10,   324,    10,    10,
+      10,    10,   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,    10,   231,    10,   233,   234,   235,
+     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
+     246,   247,   248,   249,   250,   251,    10,    10,    10,    10,
+      10,    10,    10,    10,    10,    10,    10,   263,   264,   265,
+     266,   267,   268,   269,   270,   271,   272,    10,    10,    10,
+      10,    10,    10,    10,   280,    10,    10,    10,    10,    10,
+      10,    10,   288,   289,    10,   291,   292,    10,   294,   295,
+      10,    10,   298,   299,   300,   301,   302,   303,   304,   305,
+      10,    10,    10,   309,    10,    10,    10,    10,    10,    10,
+      10,    10,   318,   319,   320,   321,    10,    10,    10,   325,
+     326,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    -1,    -1,
+      10,    10,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    37,    37,    37,    37,    37
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,
+      37,    37,    37,    37
 };
 
-  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-     symbol of state STATE-NUM.  */
-static const yytype_int16 yystos[] =
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const yytype_uint16 yystos[] =
 {
-       0,   326,     0,    11,    12,    46,    52,    96,   114,   168,
-     230,   251,   272,   281,   305,   309,   315,   327,   328,   329,
-     332,   335,   338,   341,   350,   602,   613,   635,   639,   647,
-     660,   670,   330,   333,   336,   339,   342,   351,   603,   614,
-     636,   640,   648,   661,   671,    13,    14,    15,    16,    17,
+       0,   328,     0,    11,    12,    46,    52,    96,   114,   168,
+     230,   252,   273,   282,   306,   310,   316,   329,   330,   331,
+     334,   337,   340,   343,   352,   606,   617,   639,   643,   651,
+     664,   674,   332,   335,   338,   341,   344,   353,   607,   618,
+     640,   644,   652,   665,   675,    13,    14,    15,    16,    17,
       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
       38,    39,    40,    41,    42,    43,    44,    49,    50,    51,
@@ -2088,10 +2356,10 @@ static const yytype_int16 yystos[] =
      213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
      223,   224,   225,   226,   227,   228,   229,   231,   233,   234,
      235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
-     245,   246,   247,   248,   249,   250,   262,   263,   264,   265,
-     266,   267,   268,   269,   270,   271,   279,   287,   288,   290,
-     291,   293,   294,   297,   298,   299,   300,   301,   302,   303,
-     304,   308,   317,   318,   319,   320,   324,   331,   353,   354,
+     245,   246,   247,   248,   249,   250,   251,   263,   264,   265,
+     266,   267,   268,   269,   270,   271,   272,   280,   288,   289,
+     291,   292,   294,   295,   298,   299,   300,   301,   302,   303,
+     304,   305,   309,   318,   319,   320,   321,   325,   326,   333,
      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
@@ -2113,26 +2381,27 @@ static const yytype_int16 yystos[] =
      535,   536,   537,   538,   539,   540,   541,   542,   543,   544,
      545,   546,   547,   548,   549,   550,   551,   552,   553,   554,
      555,   556,   557,   558,   559,   560,   561,   562,   563,   564,
-     565,   566,   567,   568,   569,   643,   644,   645,   646,   669,
-      45,    47,    48,   110,   143,   146,   155,   296,   334,   570,
-     571,   572,   573,   574,   575,   576,   577,    45,    53,    54,
-     142,   144,   147,   295,   337,   578,   579,   580,   581,   582,
-     583,   584,    45,    81,    82,   108,   189,   190,   232,   340,
-     595,   596,   597,   598,   599,   600,   601,    45,   280,   282,
-     283,   284,   285,   286,   292,   321,   322,   343,   585,   586,
-     587,   588,   589,   590,   591,   592,   593,   594,   310,   311,
-     312,   313,   314,   323,   344,   345,   346,   347,   348,   349,
-     352,   585,   586,   587,   588,   589,   592,    97,    98,    99,
-     100,   101,   102,   103,   104,   604,   605,   606,   607,   608,
-     609,   610,   611,   612,   169,   170,   171,   172,   173,   174,
-     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
-     185,   186,   187,   615,   616,   617,   618,   619,   620,   621,
+     565,   566,   567,   568,   569,   570,   571,   572,   573,   647,
+     648,   649,   650,   673,    45,    47,    48,   110,   143,   146,
+     155,   297,   336,   574,   575,   576,   577,   578,   579,   580,
+     581,    45,    53,    54,   142,   144,   147,   296,   339,   582,
+     583,   584,   585,   586,   587,   588,    45,    81,    82,   108,
+     189,   190,   232,   342,   599,   600,   601,   602,   603,   604,
+     605,    45,   281,   283,   284,   285,   286,   287,   293,   322,
+     323,   345,   589,   590,   591,   592,   593,   594,   595,   596,
+     597,   598,   311,   312,   313,   314,   315,   324,   346,   347,
+     348,   349,   350,   351,   354,   589,   590,   591,   592,   593,
+     596,    97,    98,    99,   100,   101,   102,   103,   104,   608,
+     609,   610,   611,   612,   613,   614,   615,   616,   169,   170,
+     171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
+     181,   182,   183,   184,   185,   186,   187,   619,   620,   621,
      622,   623,   624,   625,   626,   627,   628,   629,   630,   631,
-     632,   633,   634,   115,   637,   638,   316,   641,   642,   252,
-     253,   254,   255,   256,   257,   258,   259,   260,   261,   649,
-     650,   651,   652,   653,   654,   655,   656,   657,   658,   659,
-     273,   274,   275,   276,   277,   278,   662,   663,   664,   665,
-     666,   667,   668,   306,   307,   672,   673,   674,    10,    10,
+     632,   633,   634,   635,   636,   637,   638,   115,   641,   642,
+     317,   645,   646,   253,   254,   255,   256,   257,   258,   259,
+     260,   261,   262,   653,   654,   655,   656,   657,   658,   659,
+     660,   661,   662,   663,   274,   275,   276,   277,   278,   279,
+     666,   667,   668,   669,   670,   671,   672,   307,   308,   676,
+     677,   678,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
@@ -2165,189 +2434,98 @@ static const yytype_int16 yystos[] =
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10
+      10,    10
 };
 
-  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_int16 yyr1[] =
-{
-       0,   325,   326,   326,   327,   327,   327,   327,   327,   327,
-     327,   327,   327,   327,   327,   327,   327,   327,   328,   329,
-     330,   330,   331,   331,   331,   331,   331,   331,   331,   331,
-     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-     331,   331,   331,   331,   332,   333,   333,   334,   334,   334,
-     334,   334,   334,   334,   334,   335,   336,   336,   337,   337,
-     337,   337,   337,   337,   337,   338,   339,   339,   340,   340,
-     340,   340,   340,   340,   340,   341,   342,   342,   343,   343,
-     343,   343,   343,   343,   343,   343,   343,   343,   344,   345,
-     346,   347,   348,   349,   350,   351,   351,   352,   352,   352,
-     352,   352,   352,   352,   352,   352,   352,   352,   352,   353,
-     354,   355,   356,   357,   358,   359,   360,   361,   362,   363,
-     364,   365,   366,   367,   368,   369,   370,   371,   372,   373,
-     374,   375,   376,   377,   378,   379,   380,   381,   382,   383,
-     384,   385,   386,   387,   388,   389,   390,   391,   392,   393,
-     394,   395,   396,   397,   398,   399,   400,   401,   402,   403,
-     404,   405,   406,   407,   408,   409,   410,   411,   412,   413,
-     414,   415,   416,   417,   418,   419,   420,   421,   422,   423,
-     424,   425,   426,   427,   428,   429,   430,   431,   432,   433,
-     434,   435,   436,   437,   438,   439,   440,   441,   442,   443,
-     444,   445,   446,   447,   448,   449,   450,   451,   452,   453,
-     454,   455,   456,   457,   458,   459,   460,   461,   462,   463,
-     464,   465,   466,   467,   468,   469,   470,   471,   472,   473,
-     474,   475,   476,   477,   478,   479,   480,   481,   482,   483,
-     484,   485,   486,   487,   488,   489,   490,   491,   492,   493,
-     494,   495,   496,   497,   498,   499,   500,   501,   502,   503,
-     504,   505,   506,   507,   508,   509,   510,   511,   512,   513,
-     514,   515,   516,   517,   518,   519,   520,   521,   522,   523,
-     524,   525,   526,   527,   528,   529,   530,   531,   532,   533,
-     534,   535,   536,   537,   538,   539,   540,   541,   542,   543,
-     544,   545,   546,   547,   548,   549,   550,   551,   552,   553,
-     554,   555,   556,   557,   558,   559,   560,   561,   562,   563,
-     564,   565,   566,   567,   568,   569,   570,   571,   572,   573,
-     574,   575,   576,   577,   578,   579,   580,   581,   582,   583,
-     584,   585,   586,   587,   588,   589,   590,   591,   592,   593,
-     594,   595,   596,   597,   598,   599,   600,   601,   602,   603,
-     603,   604,   604,   604,   604,   604,   604,   604,   604,   605,
-     606,   607,   608,   609,   610,   611,   612,   613,   614,   614,
-     615,   615,   615,   615,   615,   615,   615,   615,   615,   615,
-     615,   615,   615,   615,   615,   615,   615,   615,   615,   616,
-     617,   618,   619,   620,   621,   622,   623,   624,   625,   626,
-     627,   628,   629,   630,   631,   632,   633,   634,   635,   636,
-     636,   637,   638,   639,   640,   640,   641,   642,   643,   644,
-     645,   646,   647,   648,   648,   649,   649,   649,   649,   649,
-     649,   649,   649,   649,   649,   650,   651,   652,   653,   654,
-     655,   656,   657,   658,   659,   660,   661,   661,   662,   662,
-     662,   662,   662,   662,   663,   664,   665,   666,   667,   668,
-     669,   670,   671,   671,   672,   672,   673,   674
-};
+#define yyerrok                (yyerrstatus = 0)
+#define yyclearin      (yychar = YYEMPTY)
+#define YYEMPTY                (-2)
+#define YYEOF          0
+
+#define YYACCEPT       goto yyacceptlab
+#define YYABORT                goto yyabortlab
+#define YYERROR                goto yyerrorlab
 
-  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
-static const yytype_int8 yyr2[] =
-{
-       0,     2,     0,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     1,     1,     1,
-       2,     0,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     2,     0,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     2,     0,     1,     1,
-       1,     1,     1,     1,     1,     1,     2,     0,     1,     1,
-       1,     1,     1,     1,     1,     1,     2,     0,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     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,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     3,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     3,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     3,
-       3,     4,     4,     4,     3,     3,     2,     2,     2,     2,
-       2,     2,     3,     3,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     3,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     3,     3,     3,     2,     2,     2,     1,     2,
-       0,     1,     1,     1,     1,     1,     1,     1,     1,     2,
-       2,     2,     2,     2,     2,     2,     2,     1,     2,     0,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     1,     2,
-       0,     1,     2,     1,     2,     0,     1,     2,     2,     2,
-       3,     3,     1,     2,     0,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     1,     2,     0,     1,     1,
-       1,     1,     1,     1,     2,     2,     2,     2,     2,     2,
-       3,     1,     2,     0,     1,     1,     2,     2
-};
 
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  */
 
-enum { YYENOMEM = -2 };
+#define YYFAIL         goto yyerrlab
 
-#define yyerrok         (yyerrstatus = 0)
-#define yyclearin       (yychar = YYEMPTY)
+#define YYRECOVERING()  (!!yyerrstatus)
 
-#define YYACCEPT        goto yyacceptlab
-#define YYABORT         goto yyabortlab
-#define YYERROR         goto yyerrorlab
+#define YYBACKUP(Token, Value)                                 \
+do                                                             \
+  if (yychar == YYEMPTY && yylen == 1)                         \
+    {                                                          \
+      yychar = (Token);                                                \
+      yylval = (Value);                                                \
+      yytoken = YYTRANSLATE (yychar);                          \
+      YYPOPSTACK (1);                                          \
+      goto yybackup;                                           \
+    }                                                          \
+  else                                                         \
+    {                                                          \
+      yyerror (YY_("syntax error: cannot back up")); \
+      YYERROR;                                                 \
+    }                                                          \
+while (YYID (0))
+
+
+#define YYTERROR       1
+#define YYERRCODE      256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)                               \
+    do                                                                 \
+      if (YYID (N))                                                    \
+       {                                                               \
+         (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
+         (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
+         (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
+         (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
+       }                                                               \
+      else                                                             \
+       {                                                               \
+         (Current).first_line   = (Current).last_line   =              \
+           YYRHSLOC (Rhs, 0).last_line;                                \
+         (Current).first_column = (Current).last_column =              \
+           YYRHSLOC (Rhs, 0).last_column;                              \
+       }                                                               \
+    while (YYID (0))
+#endif
 
 
-#define YYRECOVERING()  (!!yyerrstatus)
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+   This macro was not mandated originally: define only if we know
+   we won't break user code: when these are the locations we know.  */
+
+#ifndef YY_LOCATION_PRINT
+# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
+#  define YY_LOCATION_PRINT(File, Loc)                 \
+     fprintf (File, "%d.%d-%d.%d",                     \
+             (Loc).first_line, (Loc).first_column,     \
+             (Loc).last_line,  (Loc).last_column)
+# else
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
 
-#define YYBACKUP(Token, Value)                                    \
-  do                                                              \
-    if (yychar == YYEMPTY)                                        \
-      {                                                           \
-        yychar = (Token);                                         \
-        yylval = (Value);                                         \
-        YYPOPSTACK (yylen);                                       \
-        yystate = *yyssp;                                         \
-        goto yybackup;                                            \
-      }                                                           \
-    else                                                          \
-      {                                                           \
-        yyerror (YY_("syntax error: cannot back up")); \
-        YYERROR;                                                  \
-      }                                                           \
-  while (0)
-
-/* Backward compatibility with an undocumented macro.
-   Use YYerror or YYUNDEF. */
-#define YYERRCODE YYUNDEF
 
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
 
 /* Enable debugging if requested.  */
 #if YYDEBUG
@@ -2357,65 +2535,80 @@ enum { YYENOMEM = -2 };
 #  define YYFPRINTF fprintf
 # endif
 
-# define YYDPRINTF(Args)                        \
-do {                                            \
-  if (yydebug)                                  \
-    YYFPRINTF Args;                             \
-} while (0)
-
-/* This macro is provided for backward compatibility. */
-# ifndef YY_LOCATION_PRINT
-#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
-
-
-# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
-do {                                                                      \
-  if (yydebug)                                                            \
-    {                                                                     \
-      YYFPRINTF (stderr, "%s ", Title);                                   \
-      yy_symbol_print (stderr,                                            \
-                  Kind, Value); \
-      YYFPRINTF (stderr, "\n");                                           \
-    }                                                                     \
-} while (0)
-
-
-/*-----------------------------------.
-| Print this symbol's value on YYO.  |
-`-----------------------------------*/
-
+# define YYDPRINTF(Args)                       \
+do {                                           \
+  if (yydebug)                                 \
+    YYFPRINTF Args;                            \
+} while (YYID (0))
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                   \
+do {                                                                     \
+  if (yydebug)                                                           \
+    {                                                                    \
+      YYFPRINTF (stderr, "%s ", Title);                                          \
+      yy_symbol_print (stderr,                                           \
+                 Type, Value); \
+      YYFPRINTF (stderr, "\n");                                                  \
+    }                                                                    \
+} while (YYID (0))
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
 static void
-yy_symbol_value_print (FILE *yyo,
-                       yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE const * const yyvaluep;
+#endif
 {
-  FILE *yyoutput = yyo;
-  YY_USE (yyoutput);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
-  if (yykind < YYNTOKENS)
-    YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
+  if (yytype < YYNTOKENS)
+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+  YYUSE (yyoutput);
 # endif
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  YY_USE (yykind);
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
+  switch (yytype)
+    {
+      default:
+       break;
+    }
 }
 
 
-/*---------------------------.
-| Print this symbol on YYO.  |
-`---------------------------*/
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
 
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
 static void
-yy_symbol_print (FILE *yyo,
-                 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
+yy_symbol_print (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE const * const yyvaluep;
+#endif
 {
-  YYFPRINTF (yyo, "%s %s (",
-             yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
 
-  yy_symbol_value_print (yyo, yykind, yyvaluep);
-  YYFPRINTF (yyo, ")");
+  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
+  YYFPRINTF (yyoutput, ")");
 }
 
 /*------------------------------------------------------------------.
@@ -2423,68 +2616,80 @@ yy_symbol_print (FILE *yyo,
 | TOP (included).                                                   |
 `------------------------------------------------------------------*/
 
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+#else
 static void
-yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
+yy_stack_print (bottom, top)
+    yytype_int16 *bottom;
+    yytype_int16 *top;
+#endif
 {
   YYFPRINTF (stderr, "Stack now");
-  for (; yybottom <= yytop; yybottom++)
-    {
-      int yybot = *yybottom;
-      YYFPRINTF (stderr, " %d", yybot);
-    }
+  for (; bottom <= top; ++bottom)
+    YYFPRINTF (stderr, " %d", *bottom);
   YYFPRINTF (stderr, "\n");
 }
 
-# define YY_STACK_PRINT(Bottom, Top)                            \
-do {                                                            \
-  if (yydebug)                                                  \
-    yy_stack_print ((Bottom), (Top));                           \
-} while (0)
+# define YY_STACK_PRINT(Bottom, Top)                           \
+do {                                                           \
+  if (yydebug)                                                 \
+    yy_stack_print ((Bottom), (Top));                          \
+} while (YYID (0))
 
 
 /*------------------------------------------------.
 | Report that the YYRULE is going to be reduced.  |
 `------------------------------------------------*/
 
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+#else
 static void
-yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
-                 int yyrule)
+yy_reduce_print (yyvsp, yyrule)
+    YYSTYPE *yyvsp;
+    int yyrule;
+#endif
 {
-  int yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
-             yyrule - 1, yylno);
+  unsigned long int yylno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+            yyrule - 1, yylno);
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
-      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
-      yy_symbol_print (stderr,
-                       YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
-                       &yyvsp[(yyi + 1) - (yynrhs)]);
-      YYFPRINTF (stderr, "\n");
+      fprintf (stderr, "   $%d = ", yyi + 1);
+      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+                      &(yyvsp[(yyi + 1) - (yynrhs)])
+                                      );
+      fprintf (stderr, "\n");
     }
 }
 
-# define YY_REDUCE_PRINT(Rule)          \
-do {                                    \
-  if (yydebug)                          \
-    yy_reduce_print (yyssp, yyvsp, Rule); \
-} while (0)
+# define YY_REDUCE_PRINT(Rule)         \
+do {                                   \
+  if (yydebug)                         \
+    yy_reduce_print (yyvsp, Rule); \
+} while (YYID (0))
 
 /* Nonzero means print parse trace.  It is left uninitialized so that
    multiple parsers can coexist.  */
 int yydebug;
 #else /* !YYDEBUG */
-# define YYDPRINTF(Args) ((void) 0)
-# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
 # define YY_STACK_PRINT(Bottom, Top)
 # define YY_REDUCE_PRINT(Rule)
 #endif /* !YYDEBUG */
 
 
 /* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef YYINITDEPTH
+#ifndef        YYINITDEPTH
 # define YYINITDEPTH 200
 #endif
 
@@ -2499,217 +2704,478 @@ int yydebug;
 # define YYMAXDEPTH 10000
 #endif
 
+\f
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+#  if defined __GLIBC__ && defined _STRING_H
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static YYSIZE_T
+yystrlen (const char *yystr)
+#else
+static YYSIZE_T
+yystrlen (yystr)
+    const char *yystr;
+#endif
+{
+  YYSIZE_T yylen;
+  for (yylen = 0; yystr[yylen]; yylen++)
+    continue;
+  return yylen;
+}
+#  endif
+# endif
+
+# ifndef yystpcpy
+#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+#   define yystpcpy stpcpy
+#  else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+   YYDEST.  */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static char *
+yystpcpy (char *yydest, const char *yysrc)
+#else
+static char *
+yystpcpy (yydest, yysrc)
+    char *yydest;
+    const char *yysrc;
+#endif
+{
+  char *yyd = yydest;
+  const char *yys = yysrc;
+
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
+}
+#  endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+   quotes and backslashes, so that it's suitable for yyerror.  The
+   heuristic is that double-quoting is unnecessary unless the string
+   contains an apostrophe, a comma, or backslash (other than
+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
+   null, do not copy; instead, return the length of what the result
+   would have been.  */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+  if (*yystr == '"')
+    {
+      YYSIZE_T yyn = 0;
+      char const *yyp = yystr;
+
+      for (;;)
+       switch (*++yyp)
+         {
+         case '\'':
+         case ',':
+           goto do_not_strip_quotes;
+
+         case '\\':
+           if (*++yyp != '\\')
+             goto do_not_strip_quotes;
+           /* Fall through.  */
+         default:
+           if (yyres)
+             yyres[yyn] = *yyp;
+           yyn++;
+           break;
+
+         case '"':
+           if (yyres)
+             yyres[yyn] = '\0';
+           return yyn;
+         }
+    do_not_strip_quotes: ;
+    }
 
+  if (! yyres)
+    return yystrlen (yystr);
 
+  return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
 
+/* Copy into YYRESULT an error message about the unexpected token
+   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
+   including the terminating null byte.  If YYRESULT is null, do not
+   copy anything; just return the number of bytes that would be
+   copied.  As a special case, return 0 if an ordinary "syntax error"
+   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
+   size calculation.  */
+static YYSIZE_T
+yysyntax_error (char *yyresult, int yystate, int yychar)
+{
+  int yyn = yypact[yystate];
 
+  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
+    return 0;
+  else
+    {
+      int yytype = YYTRANSLATE (yychar);
+      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+      YYSIZE_T yysize = yysize0;
+      YYSIZE_T yysize1;
+      int yysize_overflow = 0;
+      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+      int yyx;
+
+# if 0
+      /* This is so xgettext sees the translatable formats that are
+        constructed on the fly.  */
+      YY_("syntax error, unexpected %s");
+      YY_("syntax error, unexpected %s, expecting %s");
+      YY_("syntax error, unexpected %s, expecting %s or %s");
+      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+# endif
+      char *yyfmt;
+      char const *yyf;
+      static char const yyunexpected[] = "syntax error, unexpected %s";
+      static char const yyexpecting[] = ", expecting %s";
+      static char const yyor[] = " or %s";
+      char yyformat[sizeof yyunexpected
+                   + sizeof yyexpecting - 1
+                   + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+                      * (sizeof yyor - 1))];
+      char const *yyprefix = yyexpecting;
+
+      /* Start YYX at -YYN if negative to avoid negative indexes in
+        YYCHECK.  */
+      int yyxbegin = yyn < 0 ? -yyn : 0;
+
+      /* Stay within bounds of both yycheck and yytname.  */
+      int yychecklim = YYLAST - yyn + 1;
+      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+      int yycount = 1;
+
+      yyarg[0] = yytname[yytype];
+      yyfmt = yystpcpy (yyformat, yyunexpected);
+
+      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+       if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+         {
+           if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+             {
+               yycount = 1;
+               yysize = yysize0;
+               yyformat[sizeof yyunexpected - 1] = '\0';
+               break;
+             }
+           yyarg[yycount++] = yytname[yyx];
+           yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+           yysize_overflow |= (yysize1 < yysize);
+           yysize = yysize1;
+           yyfmt = yystpcpy (yyfmt, yyprefix);
+           yyprefix = yyor;
+         }
+
+      yyf = YY_(yyformat);
+      yysize1 = yysize + yystrlen (yyf);
+      yysize_overflow |= (yysize1 < yysize);
+      yysize = yysize1;
+
+      if (yysize_overflow)
+       return YYSIZE_MAXIMUM;
+
+      if (yyresult)
+       {
+         /* Avoid sprintf, as that infringes on the user's name space.
+            Don't have undefined behavior even if the translation
+            produced a string with the wrong number of "%s"s.  */
+         char *yyp = yyresult;
+         int yyi = 0;
+         while ((*yyp = *yyf) != '\0')
+           {
+             if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+               {
+                 yyp += yytnamerr (yyp, yyarg[yyi++]);
+                 yyf += 2;
+               }
+             else
+               {
+                 yyp++;
+                 yyf++;
+               }
+           }
+       }
+      return yysize;
+    }
+}
+#endif /* YYERROR_VERBOSE */
+\f
 
 /*-----------------------------------------------.
 | Release the memory associated to this symbol.  |
 `-----------------------------------------------*/
 
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
 static void
-yydestruct (const char *yymsg,
-            yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
+yydestruct (yymsg, yytype, yyvaluep)
+    const char *yymsg;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
 {
-  YY_USE (yyvaluep);
+  YYUSE (yyvaluep);
+
   if (!yymsg)
     yymsg = "Deleting";
-  YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+  switch (yytype)
+    {
 
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  YY_USE (yykind);
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
+      default:
+       break;
+    }
 }
+\f
 
+/* Prevent warnings from -Wmissing-prototypes.  */
 
-/* Lookahead token kind.  */
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+
+/* The look-ahead symbol.  */
 int yychar;
 
-/* The semantic value of the lookahead symbol.  */
+/* The semantic value of the look-ahead symbol.  */
 YYSTYPE yylval;
+
 /* Number of syntax errors so far.  */
 int yynerrs;
 
 
 
-
 /*----------.
 | yyparse.  |
 `----------*/
 
+#ifdef YYPARSE_PARAM
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+    void *YYPARSE_PARAM;
+#endif
+#else /* ! YYPARSE_PARAM */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 int
 yyparse (void)
+#else
+int
+yyparse ()
+
+#endif
+#endif
 {
-    yy_state_fast_t yystate = 0;
-    /* Number of tokens to shift before error messages enabled.  */
-    int yyerrstatus = 0;
+  
+  int yystate;
+  int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Look-ahead token as an internal (translated) token number.  */
+  int yytoken = 0;
+#if YYERROR_VERBOSE
+  /* Buffer for error messages, and its allocated size.  */
+  char yymsgbuf[128];
+  char *yymsg = yymsgbuf;
+  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
 
-    /* Refer to the stacks through separate pointers, to allow yyoverflow
-       to reallocate them elsewhere.  */
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
 
-    /* Their size.  */
-    YYPTRDIFF_T yystacksize = YYINITDEPTH;
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
 
-    /* The state stack: array, bottom, top.  */
-    yy_state_t yyssa[YYINITDEPTH];
-    yy_state_t *yyss = yyssa;
-    yy_state_t *yyssp = yyss;
+  /* The state stack.  */
+  yytype_int16 yyssa[YYINITDEPTH];
+  yytype_int16 *yyss = yyssa;
+  yytype_int16 *yyssp;
 
-    /* The semantic value stack: array, bottom, top.  */
-    YYSTYPE yyvsa[YYINITDEPTH];
-    YYSTYPE *yyvs = yyvsa;
-    YYSTYPE *yyvsp = yyvs;
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
+
+  YYSIZE_T yystacksize = YYINITDEPTH;
 
-  int yyn;
-  /* The return value of yyparse.  */
-  int yyresult;
-  /* Lookahead symbol kind.  */
-  yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
   /* The variables used to return semantic value and location from the
      action routines.  */
   YYSTYPE yyval;
 
 
-
-#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
-
   /* The number of symbols on the RHS of the reduced rule.
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
   YYDPRINTF ((stderr, "Starting parse\n"));
 
-  yychar = YYEMPTY; /* Cause a token to be read.  */
-  goto yysetstate;
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY;            /* Cause a token to be read.  */
 
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+
+  yyssp = yyss;
+  yyvsp = yyvs;
+
+  goto yysetstate;
 
 /*------------------------------------------------------------.
-| yynewstate -- push a new state, which is found in yystate.  |
+| yynewstate -- Push a new state, which is found in yystate.  |
 `------------------------------------------------------------*/
-yynewstate:
+ yynewstate:
   /* In all cases, when you get here, the value and location stacks
      have just been pushed.  So pushing a state here evens the stacks.  */
   yyssp++;
 
-
-/*--------------------------------------------------------------------.
-| yysetstate -- set current state (the top of the stack) to yystate.  |
-`--------------------------------------------------------------------*/
-yysetstate:
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
-  YY_IGNORE_USELESS_CAST_BEGIN
-  *yyssp = YY_CAST (yy_state_t, yystate);
-  YY_IGNORE_USELESS_CAST_END
-  YY_STACK_PRINT (yyss, yyssp);
+ yysetstate:
+  *yyssp = yystate;
 
   if (yyss + yystacksize - 1 <= yyssp)
-#if !defined yyoverflow && !defined YYSTACK_RELOCATE
-    goto yyexhaustedlab;
-#else
     {
       /* Get the current used size of the three stacks, in elements.  */
-      YYPTRDIFF_T yysize = yyssp - yyss + 1;
+      YYSIZE_T yysize = yyssp - yyss + 1;
 
-# if defined yyoverflow
+#ifdef yyoverflow
       {
-        /* Give user a chance to reallocate the stack.  Use copies of
-           these so that the &'s don't force the real ones into
-           memory.  */
-        yy_state_t *yyss1 = yyss;
-        YYSTYPE *yyvs1 = yyvs;
-
-        /* Each stack pointer address is followed by the size of the
-           data in use in that stack, in bytes.  This used to be a
-           conditional around just the two extra args, but that might
-           be undefined if yyoverflow is a macro.  */
-        yyoverflow (YY_("memory exhausted"),
-                    &yyss1, yysize * YYSIZEOF (*yyssp),
-                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
-                    &yystacksize);
-        yyss = yyss1;
-        yyvs = yyvs1;
+       /* Give user a chance to reallocate the stack.  Use copies of
+          these so that the &'s don't force the real ones into
+          memory.  */
+       YYSTYPE *yyvs1 = yyvs;
+       yytype_int16 *yyss1 = yyss;
+
+
+       /* Each stack pointer address is followed by the size of the
+          data in use in that stack, in bytes.  This used to be a
+          conditional around just the two extra args, but that might
+          be undefined if yyoverflow is a macro.  */
+       yyoverflow (YY_("memory exhausted"),
+                   &yyss1, yysize * sizeof (*yyssp),
+                   &yyvs1, yysize * sizeof (*yyvsp),
+
+                   &yystacksize);
+
+       yyss = yyss1;
+       yyvs = yyvs1;
       }
-# else /* defined YYSTACK_RELOCATE */
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyexhaustedlab;
+# else
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
-        goto yyexhaustedlab;
+       goto yyexhaustedlab;
       yystacksize *= 2;
       if (YYMAXDEPTH < yystacksize)
-        yystacksize = YYMAXDEPTH;
+       yystacksize = YYMAXDEPTH;
 
       {
-        yy_state_t *yyss1 = yyss;
-        union yyalloc *yyptr =
-          YY_CAST (union yyalloc *,
-                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
-        if (! yyptr)
-          goto yyexhaustedlab;
-        YYSTACK_RELOCATE (yyss_alloc, yyss);
-        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+       yytype_int16 *yyss1 = yyss;
+       union yyalloc *yyptr =
+         (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+       if (! yyptr)
+         goto yyexhaustedlab;
+       YYSTACK_RELOCATE (yyss);
+       YYSTACK_RELOCATE (yyvs);
+
 #  undef YYSTACK_RELOCATE
-        if (yyss1 != yyssa)
-          YYSTACK_FREE (yyss1);
+       if (yyss1 != yyssa)
+         YYSTACK_FREE (yyss1);
       }
 # endif
+#endif /* no yyoverflow */
 
       yyssp = yyss + yysize - 1;
       yyvsp = yyvs + yysize - 1;
 
-      YY_IGNORE_USELESS_CAST_BEGIN
-      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
-                  YY_CAST (long, yystacksize)));
-      YY_IGNORE_USELESS_CAST_END
+
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+                 (unsigned long int) yystacksize));
 
       if (yyss + yystacksize - 1 <= yyssp)
-        YYABORT;
+       YYABORT;
     }
-#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 
-  if (yystate == YYFINAL)
-    YYACCEPT;
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
 
   goto yybackup;
 
-
 /*-----------.
 | yybackup.  |
 `-----------*/
 yybackup:
+
   /* Do appropriate processing given the current state.  Read a
-     lookahead token if we need one and don't already have one.  */
+     look-ahead token if we need one and don't already have one.  */
 
-  /* First try to decide what to do without reference to lookahead token.  */
+  /* First try to decide what to do without reference to look-ahead token.  */
   yyn = yypact[yystate];
-  if (yypact_value_is_default (yyn))
+  if (yyn == YYPACT_NINF)
     goto yydefault;
 
-  /* Not known => get a lookahead token if don't already have one.  */
+  /* Not known => get a look-ahead token if don't already have one.  */
 
-  /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
   if (yychar == YYEMPTY)
     {
-      YYDPRINTF ((stderr, "Reading a token\n"));
-      yychar = yylex ();
+      YYDPRINTF ((stderr, "Reading a token"));
+      yychar = YYLEX;
     }
 
   if (yychar <= YYEOF)
     {
-      yychar = YYEOF;
-      yytoken = YYSYMBOL_YYEOF;
+      yychar = yytoken = YYEOF;
       YYDPRINTF ((stderr, "Now at end of input.\n"));
     }
-  else if (yychar == YYerror)
-    {
-      /* The scanner already issued an error message, process directly
-         to error recovery.  But do not keep the error token as
-         lookahead, it is too special and may lead us to an endless
-         loop in error recovery. */
-      yychar = YYUNDEF;
-      yytoken = YYSYMBOL_YYerror;
-      goto yyerrlab1;
-    }
   else
     {
       yytoken = YYTRANSLATE (yychar);
@@ -2724,26 +3190,30 @@ yybackup:
   yyn = yytable[yyn];
   if (yyn <= 0)
     {
-      if (yytable_value_is_error (yyn))
-        goto yyerrlab;
+      if (yyn == 0 || yyn == YYTABLE_NINF)
+       goto yyerrlab;
       yyn = -yyn;
       goto yyreduce;
     }
 
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
   /* Count tokens shifted since error; after three, turn off error
      status.  */
   if (yyerrstatus)
     yyerrstatus--;
 
-  /* Shift the lookahead token.  */
+  /* Shift the look-ahead token.  */
   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+  /* Discard the shifted token unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
   yystate = yyn;
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
-  /* Discard the shifted token.  */
-  yychar = YYEMPTY;
   goto yynewstate;
 
 
@@ -2758,14 +3228,14 @@ yydefault:
 
 
 /*-----------------------------.
-| yyreduce -- do a reduction.  |
+| yyreduce -- Do a reduction.  |
 `-----------------------------*/
 yyreduce:
   /* yyn is the number of a rule to reduce with.  */
   yylen = yyr2[yyn];
 
   /* If YYLEN is nonzero, implement the default value of the action:
-     '$$ = $1'.
+     `$$ = $1'.
 
      Otherwise, the following line sets YYVAL to garbage.
      This behavior is undocumented and Bison
@@ -2778,25 +3248,23 @@ yyreduce:
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-  case 18: /* force_toplevel: VAR_FORCE_TOPLEVEL  */
-#line 204 "./util/configparser.y"
-        {
+        case 18:
+#line 205 "./util/configparser.y"
+    {
                OUTYY(("\nP(force-toplevel)\n"));
        }
-#line 2787 "util/configparser.c"
     break;
 
-  case 19: /* serverstart: VAR_SERVER  */
-#line 210 "./util/configparser.y"
-        {
+  case 19:
+#line 211 "./util/configparser.y"
+    {
                OUTYY(("\nP(server:)\n"));
        }
-#line 2795 "util/configparser.c"
     break;
 
-  case 244: /* stubstart: VAR_STUB_ZONE  */
-#line 319 "./util/configparser.y"
-        {
+  case 246:
+#line 320 "./util/configparser.y"
+    {
                struct config_stub* s;
                OUTYY(("\nP(stub_zone:)\n"));
                s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
@@ -2807,12 +3275,11 @@ yyreduce:
                        yyerror("out of memory");
                }
        }
-#line 2811 "util/configparser.c"
     break;
 
-  case 255: /* forwardstart: VAR_FORWARD_ZONE  */
-#line 337 "./util/configparser.y"
-        {
+  case 257:
+#line 338 "./util/configparser.y"
+    {
                struct config_stub* s;
                OUTYY(("\nP(forward_zone:)\n"));
                s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
@@ -2823,12 +3290,11 @@ yyreduce:
                        yyerror("out of memory");
                }
        }
-#line 2827 "util/configparser.c"
     break;
 
-  case 265: /* viewstart: VAR_VIEW  */
-#line 355 "./util/configparser.y"
-        {
+  case 267:
+#line 356 "./util/configparser.y"
+    {
                struct config_view* s;
                OUTYY(("\nP(view:)\n"));
                s = (struct config_view*)calloc(1, sizeof(struct config_view));
@@ -2841,12 +3307,11 @@ yyreduce:
                        yyerror("out of memory");
                }
        }
-#line 2845 "util/configparser.c"
     break;
 
-  case 275: /* authstart: VAR_AUTH_ZONE  */
-#line 375 "./util/configparser.y"
-        {
+  case 277:
+#line 376 "./util/configparser.y"
+    {
                struct config_auth* s;
                OUTYY(("\nP(auth_zone:)\n"));
                s = (struct config_auth*)calloc(1, sizeof(struct config_auth));
@@ -2864,18 +3329,17 @@ yyreduce:
                        yyerror("out of memory");
                }
        }
-#line 2868 "util/configparser.c"
     break;
 
-  case 288: /* rpz_tag: VAR_TAGS STRING_ARG  */
-#line 402 "./util/configparser.y"
-        {
+  case 290:
+#line 403 "./util/configparser.y"
+    {
                uint8_t* bitlist;
                size_t len = 0;
-               OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str)));
-               bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
+               OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[(2) - (2)].str)));
+               bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[(2) - (2)].str),
                        &len);
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
                if(!bitlist) {
                        yyerror("could not parse tags, (define-tag them first)");
                }
@@ -2885,75 +3349,69 @@ yyreduce:
 
                }
        }
-#line 2889 "util/configparser.c"
     break;
 
-  case 289: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG  */
-#line 421 "./util/configparser.y"
-        {
-               OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 &&
-                  strcmp((yyvsp[0].str), "passthru")!=0 && strcmp((yyvsp[0].str), "drop")!=0 &&
-                  strcmp((yyvsp[0].str), "cname")!=0 && strcmp((yyvsp[0].str), "disabled")!=0) {
+  case 291:
+#line 422 "./util/configparser.y"
+    {
+               OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "nxdomain")!=0 && strcmp((yyvsp[(2) - (2)].str), "nodata")!=0 &&
+                  strcmp((yyvsp[(2) - (2)].str), "passthru")!=0 && strcmp((yyvsp[(2) - (2)].str), "drop")!=0 &&
+                  strcmp((yyvsp[(2) - (2)].str), "cname")!=0 && strcmp((yyvsp[(2) - (2)].str), "disabled")!=0) {
                        yyerror("rpz-action-override action: expected nxdomain, "
                                "nodata, passthru, drop, cname or disabled");
-                       free((yyvsp[0].str));
+                       free((yyvsp[(2) - (2)].str));
                        cfg_parser->cfg->auths->rpz_action_override = NULL;
                }
                else {
-                       cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str);
+                       cfg_parser->cfg->auths->rpz_action_override = (yyvsp[(2) - (2)].str);
                }
        }
-#line 2908 "util/configparser.c"
     break;
 
-  case 290: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG  */
-#line 438 "./util/configparser.y"
-        {
-               OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str)));
+  case 292:
+#line 439 "./util/configparser.y"
+    {
+               OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->auths->rpz_cname);
-               cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str);
+               cfg_parser->cfg->auths->rpz_cname = (yyvsp[(2) - (2)].str);
        }
-#line 2918 "util/configparser.c"
     break;
 
-  case 291: /* rpz_log: VAR_RPZ_LOG STRING_ARG  */
-#line 446 "./util/configparser.y"
-        {
-               OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 293:
+#line 447 "./util/configparser.y"
+    {
+               OUTYY(("P(rpz_log:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 2930 "util/configparser.c"
     break;
 
-  case 292: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG  */
-#line 456 "./util/configparser.y"
-        {
-               OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str)));
+  case 294:
+#line 457 "./util/configparser.y"
+    {
+               OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->auths->rpz_log_name);
-               cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str);
+               cfg_parser->cfg->auths->rpz_log_name = (yyvsp[(2) - (2)].str);
        }
-#line 2940 "util/configparser.c"
     break;
 
-  case 293: /* rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG  */
-#line 463 "./util/configparser.y"
-        {
-               OUTYY(("P(rpz_signal_nxdomain_ra:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 295:
+#line 464 "./util/configparser.y"
+    {
+               OUTYY(("P(rpz_signal_nxdomain_ra:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 2952 "util/configparser.c"
     break;
 
-  case 294: /* rpzstart: VAR_RPZ  */
-#line 473 "./util/configparser.y"
-        {
+  case 296:
+#line 474 "./util/configparser.y"
+    {
                struct config_auth* s;
                OUTYY(("\nP(rpz:)\n")); 
                s = (struct config_auth*)calloc(1, sizeof(struct config_auth));
@@ -2969,292 +3427,273 @@ yyreduce:
                        yyerror("out of memory");
                }
        }
-#line 2973 "util/configparser.c"
     break;
 
-  case 309: /* server_num_threads: VAR_NUM_THREADS STRING_ARG  */
-#line 497 "./util/configparser.y"
-        {
-               OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 311:
+#line 498 "./util/configparser.y"
+    {
+               OUTYY(("P(server_num_threads:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->num_threads = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 2985 "util/configparser.c"
     break;
 
-  case 310: /* server_verbosity: VAR_VERBOSITY STRING_ARG  */
-#line 506 "./util/configparser.y"
-        {
-               OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 312:
+#line 507 "./util/configparser.y"
+    {
+               OUTYY(("P(server_verbosity:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->verbosity = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 2997 "util/configparser.c"
     break;
 
-  case 311: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG  */
-#line 515 "./util/configparser.y"
-        {
-               OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
+  case 313:
+#line 516 "./util/configparser.y"
+    {
+               OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "") == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0)
                        cfg_parser->cfg->stat_interval = 0;
-               else if(atoi((yyvsp[0].str)) == 0)
+               else if(atoi((yyvsp[(2) - (2)].str)) == 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->stat_interval = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3011 "util/configparser.c"
     break;
 
-  case 312: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG  */
-#line 526 "./util/configparser.y"
-        {
-               OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 314:
+#line 527 "./util/configparser.y"
+    {
+               OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3023 "util/configparser.c"
     break;
 
-  case 313: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG  */
-#line 535 "./util/configparser.y"
-        {
-               OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 315:
+#line 536 "./util/configparser.y"
+    {
+               OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3035 "util/configparser.c"
     break;
 
-  case 314: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG  */
-#line 544 "./util/configparser.y"
-        {
-               OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 316:
+#line 545 "./util/configparser.y"
+    {
+               OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3047 "util/configparser.c"
     break;
 
-  case 315: /* server_shm_key: VAR_SHM_KEY STRING_ARG  */
-#line 553 "./util/configparser.y"
-        {
-               OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
+  case 317:
+#line 554 "./util/configparser.y"
+    {
+               OUTYY(("P(server_shm_key:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "") == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0)
                        cfg_parser->cfg->shm_key = 0;
-               else if(atoi((yyvsp[0].str)) == 0)
+               else if(atoi((yyvsp[(2) - (2)].str)) == 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->shm_key = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3061 "util/configparser.c"
     break;
 
-  case 316: /* server_port: VAR_PORT STRING_ARG  */
-#line 564 "./util/configparser.y"
-        {
-               OUTYY(("P(server_port:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+  case 318:
+#line 565 "./util/configparser.y"
+    {
+               OUTYY(("P(server_port:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0)
                        yyerror("port number expected");
-               else cfg_parser->cfg->port = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->port = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3073 "util/configparser.c"
     break;
 
-  case 317: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG  */
-#line 573 "./util/configparser.y"
-        {
+  case 319:
+#line 574 "./util/configparser.y"
+    {
        #ifdef CLIENT_SUBNET
-               OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[0].str)))
+               OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[(2) - (2)].str)))
                        fatal_exit("out of memory adding client-subnet");
        #else
                OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        #endif
        }
-#line 3088 "util/configparser.c"
     break;
 
-  case 318: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG  */
-#line 585 "./util/configparser.y"
-        {
+  case 320:
+#line 586 "./util/configparser.y"
+    {
        #ifdef CLIENT_SUBNET
-               OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str)));
+               OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone,
-                       (yyvsp[0].str)))
+                       (yyvsp[(2) - (2)].str)))
                        fatal_exit("out of memory adding client-subnet-zone");
        #else
                OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        #endif
        }
-#line 3104 "util/configparser.c"
     break;
 
-  case 319: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG  */
-#line 599 "./util/configparser.y"
-        {
+  case 321:
+#line 600 "./util/configparser.y"
+    {
        #ifdef CLIENT_SUBNET
-               OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+               OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else
                        cfg_parser->cfg->client_subnet_always_forward =
-                               (strcmp((yyvsp[0].str), "yes")==0);
+                               (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
        #else
                OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3122 "util/configparser.c"
     break;
 
-  case 320: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG  */
-#line 614 "./util/configparser.y"
-        {
+  case 322:
+#line 615 "./util/configparser.y"
+    {
        #ifdef CLIENT_SUBNET
-               OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str)));
+               OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[(2) - (2)].str)));
                OUTYY(("P(Deprecated option, ignoring)\n"));
        #else
                OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3136 "util/configparser.c"
     break;
 
-  case 321: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG  */
-#line 625 "./util/configparser.y"
-        {
+  case 323:
+#line 626 "./util/configparser.y"
+    {
        #ifdef CLIENT_SUBNET
-               OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+               OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("IPv4 subnet length expected");
-               else if (atoi((yyvsp[0].str)) > 32)
+               else if (atoi((yyvsp[(2) - (2)].str)) > 32)
                        cfg_parser->cfg->max_client_subnet_ipv4 = 32;
-               else if (atoi((yyvsp[0].str)) < 0)
+               else if (atoi((yyvsp[(2) - (2)].str)) < 0)
                        cfg_parser->cfg->max_client_subnet_ipv4 = 0;
-               else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str));
+               else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[(2) - (2)].str));
        #else
                OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3156 "util/configparser.c"
     break;
 
-  case 322: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG  */
-#line 642 "./util/configparser.y"
-        {
+  case 324:
+#line 643 "./util/configparser.y"
+    {
        #ifdef CLIENT_SUBNET
-               OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+               OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("Ipv6 subnet length expected");
-               else if (atoi((yyvsp[0].str)) > 128)
+               else if (atoi((yyvsp[(2) - (2)].str)) > 128)
                        cfg_parser->cfg->max_client_subnet_ipv6 = 128;
-               else if (atoi((yyvsp[0].str)) < 0)
+               else if (atoi((yyvsp[(2) - (2)].str)) < 0)
                        cfg_parser->cfg->max_client_subnet_ipv6 = 0;
-               else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str));
+               else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[(2) - (2)].str));
        #else
                OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3176 "util/configparser.c"
     break;
 
-  case 323: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG  */
-#line 659 "./util/configparser.y"
-        {
+  case 325:
+#line 660 "./util/configparser.y"
+    {
        #ifdef CLIENT_SUBNET
-               OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+               OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("IPv4 subnet length expected");
-               else if (atoi((yyvsp[0].str)) > 32)
+               else if (atoi((yyvsp[(2) - (2)].str)) > 32)
                        cfg_parser->cfg->min_client_subnet_ipv4 = 32;
-               else if (atoi((yyvsp[0].str)) < 0)
+               else if (atoi((yyvsp[(2) - (2)].str)) < 0)
                        cfg_parser->cfg->min_client_subnet_ipv4 = 0;
-               else cfg_parser->cfg->min_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str));
+               else cfg_parser->cfg->min_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[(2) - (2)].str));
        #else
                OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3196 "util/configparser.c"
     break;
 
-  case 324: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG  */
-#line 676 "./util/configparser.y"
-        {
+  case 326:
+#line 677 "./util/configparser.y"
+    {
        #ifdef CLIENT_SUBNET
-               OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+               OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("Ipv6 subnet length expected");
-               else if (atoi((yyvsp[0].str)) > 128)
+               else if (atoi((yyvsp[(2) - (2)].str)) > 128)
                        cfg_parser->cfg->min_client_subnet_ipv6 = 128;
-               else if (atoi((yyvsp[0].str)) < 0)
+               else if (atoi((yyvsp[(2) - (2)].str)) < 0)
                        cfg_parser->cfg->min_client_subnet_ipv6 = 0;
-               else cfg_parser->cfg->min_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str));
+               else cfg_parser->cfg->min_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[(2) - (2)].str));
        #else
                OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3216 "util/configparser.c"
     break;
 
-  case 325: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG  */
-#line 693 "./util/configparser.y"
-        {
+  case 327:
+#line 694 "./util/configparser.y"
+    {
        #ifdef CLIENT_SUBNET
-               OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+               OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("IPv4 ECS tree size expected");
-               else if (atoi((yyvsp[0].str)) < 0)
+               else if (atoi((yyvsp[(2) - (2)].str)) < 0)
                        cfg_parser->cfg->max_ecs_tree_size_ipv4 = 0;
-               else cfg_parser->cfg->max_ecs_tree_size_ipv4 = (uint32_t)atoi((yyvsp[0].str));
+               else cfg_parser->cfg->max_ecs_tree_size_ipv4 = (uint32_t)atoi((yyvsp[(2) - (2)].str));
        #else
                OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3234 "util/configparser.c"
     break;
 
-  case 326: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG  */
-#line 708 "./util/configparser.y"
-        {
+  case 328:
+#line 709 "./util/configparser.y"
+    {
        #ifdef CLIENT_SUBNET
-               OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+               OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("IPv6 ECS tree size expected");
-               else if (atoi((yyvsp[0].str)) < 0)
+               else if (atoi((yyvsp[(2) - (2)].str)) < 0)
                        cfg_parser->cfg->max_ecs_tree_size_ipv6 = 0;
-               else cfg_parser->cfg->max_ecs_tree_size_ipv6 = (uint32_t)atoi((yyvsp[0].str));
+               else cfg_parser->cfg->max_ecs_tree_size_ipv6 = (uint32_t)atoi((yyvsp[(2) - (2)].str));
        #else
                OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3252 "util/configparser.c"
     break;
 
-  case 327: /* server_interface: VAR_INTERFACE STRING_ARG  */
-#line 723 "./util/configparser.y"
-        {
-               OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str)));
+  case 329:
+#line 724 "./util/configparser.y"
+    {
+               OUTYY(("P(server_interface:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->num_ifs == 0)
                        cfg_parser->cfg->ifs = calloc(1, sizeof(char*));
                else cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs,
@@ -3262,15 +3701,14 @@ yyreduce:
                if(!cfg_parser->cfg->ifs)
                        yyerror("out of memory");
                else
-                       cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str);
+                       cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[(2) - (2)].str);
        }
-#line 3268 "util/configparser.c"
     break;
 
-  case 328: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG  */
-#line 736 "./util/configparser.y"
-        {
-               OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str)));
+  case 330:
+#line 737 "./util/configparser.y"
+    {
+               OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->num_out_ifs == 0)
                        cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*));
                else cfg_parser->cfg->out_ifs = realloc(
@@ -3280,652 +3718,599 @@ yyreduce:
                        yyerror("out of memory");
                else
                        cfg_parser->cfg->out_ifs[
-                               cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str);
+                               cfg_parser->cfg->num_out_ifs++] = (yyvsp[(2) - (2)].str);
        }
-#line 3286 "util/configparser.c"
     break;
 
-  case 329: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG  */
-#line 751 "./util/configparser.y"
-        {
-               OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+  case 331:
+#line 752 "./util/configparser.y"
+    {
+               OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3298 "util/configparser.c"
     break;
 
-  case 330: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG  */
-#line 760 "./util/configparser.y"
-        {
-               OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str)));
-               if(!cfg_mark_ports((yyvsp[0].str), 1,
+  case 332:
+#line 761 "./util/configparser.y"
+    {
+               OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 1,
                        cfg_parser->cfg->outgoing_avail_ports, 65536))
                        yyerror("port number or range (\"low-high\") expected");
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3310 "util/configparser.c"
     break;
 
-  case 331: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG  */
-#line 769 "./util/configparser.y"
-        {
-               OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str)));
-               if(!cfg_mark_ports((yyvsp[0].str), 0,
+  case 333:
+#line 770 "./util/configparser.y"
+    {
+               OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 0,
                        cfg_parser->cfg->outgoing_avail_ports, 65536))
                        yyerror("port number or range (\"low-high\") expected");
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3322 "util/configparser.c"
     break;
 
-  case 332: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG  */
-#line 778 "./util/configparser.y"
-        {
-               OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 334:
+#line 779 "./util/configparser.y"
+    {
+               OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3334 "util/configparser.c"
     break;
 
-  case 333: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG  */
-#line 787 "./util/configparser.y"
-        {
-               OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 335:
+#line 788 "./util/configparser.y"
+    {
+               OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3346 "util/configparser.c"
     break;
 
-  case 334: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG  */
-#line 796 "./util/configparser.y"
-        {
-               OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 336:
+#line 797 "./util/configparser.y"
+    {
+               OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3358 "util/configparser.c"
     break;
 
-  case 335: /* server_interface_automatic_ports: VAR_INTERFACE_AUTOMATIC_PORTS STRING_ARG  */
-#line 805 "./util/configparser.y"
-        {
-               OUTYY(("P(server_interface_automatic_ports:%s)\n", (yyvsp[0].str)));
+  case 337:
+#line 806 "./util/configparser.y"
+    {
+               OUTYY(("P(server_interface_automatic_ports:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->if_automatic_ports);
-               cfg_parser->cfg->if_automatic_ports = (yyvsp[0].str);
+               cfg_parser->cfg->if_automatic_ports = (yyvsp[(2) - (2)].str);
        }
-#line 3368 "util/configparser.c"
     break;
 
-  case 336: /* server_do_ip4: VAR_DO_IP4 STRING_ARG  */
-#line 812 "./util/configparser.y"
-        {
-               OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 338:
+#line 813 "./util/configparser.y"
+    {
+               OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3380 "util/configparser.c"
     break;
 
-  case 337: /* server_do_ip6: VAR_DO_IP6 STRING_ARG  */
-#line 821 "./util/configparser.y"
-        {
-               OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 339:
+#line 822 "./util/configparser.y"
+    {
+               OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3392 "util/configparser.c"
     break;
 
-  case 338: /* server_do_udp: VAR_DO_UDP STRING_ARG  */
-#line 830 "./util/configparser.y"
-        {
-               OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 340:
+#line 831 "./util/configparser.y"
+    {
+               OUTYY(("P(server_do_udp:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->do_udp = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3404 "util/configparser.c"
     break;
 
-  case 339: /* server_do_tcp: VAR_DO_TCP STRING_ARG  */
-#line 839 "./util/configparser.y"
-        {
-               OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 341:
+#line 840 "./util/configparser.y"
+    {
+               OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3416 "util/configparser.c"
     break;
 
-  case 340: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG  */
-#line 848 "./util/configparser.y"
-        {
-               OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 342:
+#line 849 "./util/configparser.y"
+    {
+               OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3428 "util/configparser.c"
     break;
 
-  case 341: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG  */
-#line 857 "./util/configparser.y"
-        {
-               OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 343:
+#line 858 "./util/configparser.y"
+    {
+               OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3440 "util/configparser.c"
     break;
 
-  case 342: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG  */
-#line 866 "./util/configparser.y"
-        {
-               OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 344:
+#line 867 "./util/configparser.y"
+    {
+               OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                                yyerror("number expected");
-               else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->tcp_mss = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3452 "util/configparser.c"
     break;
 
-  case 343: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG  */
-#line 875 "./util/configparser.y"
-        {
-               OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 345:
+#line 876 "./util/configparser.y"
+    {
+               OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3464 "util/configparser.c"
     break;
 
-  case 344: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG  */
-#line 884 "./util/configparser.y"
-        {
-               OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 346:
+#line 885 "./util/configparser.y"
+    {
+               OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else if (atoi((yyvsp[0].str)) > 120000)
+               else if (atoi((yyvsp[(2) - (2)].str)) > 120000)
                        cfg_parser->cfg->tcp_idle_timeout = 120000;
-               else if (atoi((yyvsp[0].str)) < 1)
+               else if (atoi((yyvsp[(2) - (2)].str)) < 1)
                        cfg_parser->cfg->tcp_idle_timeout = 1;
-               else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3480 "util/configparser.c"
     break;
 
-  case 345: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG  */
-#line 897 "./util/configparser.y"
-        {
-               OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 347:
+#line 898 "./util/configparser.y"
+    {
+               OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else if (atoi((yyvsp[0].str)) < 1)
+               else if (atoi((yyvsp[(2) - (2)].str)) < 1)
                        cfg_parser->cfg->max_reuse_tcp_queries = 0;
-               else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3494 "util/configparser.c"
     break;
 
-  case 346: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG  */
-#line 908 "./util/configparser.y"
-        {
-               OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 348:
+#line 909 "./util/configparser.y"
+    {
+               OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else if (atoi((yyvsp[0].str)) < 1)
+               else if (atoi((yyvsp[(2) - (2)].str)) < 1)
                        cfg_parser->cfg->tcp_reuse_timeout = 0;
-               else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3508 "util/configparser.c"
     break;
 
-  case 347: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG  */
-#line 919 "./util/configparser.y"
-        {
-               OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 349:
+#line 920 "./util/configparser.y"
+    {
+               OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else if (atoi((yyvsp[0].str)) < 1)
+               else if (atoi((yyvsp[(2) - (2)].str)) < 1)
                        cfg_parser->cfg->tcp_auth_query_timeout = 0;
-               else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3522 "util/configparser.c"
     break;
 
-  case 348: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG  */
-#line 930 "./util/configparser.y"
-        {
-               OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 350:
+#line 931 "./util/configparser.y"
+    {
+               OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3534 "util/configparser.c"
     break;
 
-  case 349: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG  */
-#line 939 "./util/configparser.y"
-        {
-               OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 351:
+#line 940 "./util/configparser.y"
+    {
+               OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else if (atoi((yyvsp[0].str)) > 6553500)
+               else if (atoi((yyvsp[(2) - (2)].str)) > 6553500)
                        cfg_parser->cfg->tcp_keepalive_timeout = 6553500;
-               else if (atoi((yyvsp[0].str)) < 1)
+               else if (atoi((yyvsp[(2) - (2)].str)) < 1)
                        cfg_parser->cfg->tcp_keepalive_timeout = 0;
-               else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3550 "util/configparser.c"
     break;
 
-  case 350: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG  */
-#line 952 "./util/configparser.y"
-        {
-               OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 352:
+#line 953 "./util/configparser.y"
+    {
+               OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3562 "util/configparser.c"
     break;
 
-  case 351: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG  */
-#line 961 "./util/configparser.y"
-        {
-               OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 353:
+#line 962 "./util/configparser.y"
+    {
+               OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3574 "util/configparser.c"
     break;
 
-  case 352: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG  */
-#line 970 "./util/configparser.y"
-        {
-               OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 354:
+#line 971 "./util/configparser.y"
+    {
+               OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3586 "util/configparser.c"
     break;
 
-  case 353: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG  */
-#line 979 "./util/configparser.y"
-        {
-               OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str)));
+  case 355:
+#line 980 "./util/configparser.y"
+    {
+               OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->ssl_service_key);
-               cfg_parser->cfg->ssl_service_key = (yyvsp[0].str);
+               cfg_parser->cfg->ssl_service_key = (yyvsp[(2) - (2)].str);
        }
-#line 3596 "util/configparser.c"
     break;
 
-  case 354: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG  */
-#line 986 "./util/configparser.y"
-        {
-               OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str)));
+  case 356:
+#line 987 "./util/configparser.y"
+    {
+               OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->ssl_service_pem);
-               cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str);
+               cfg_parser->cfg->ssl_service_pem = (yyvsp[(2) - (2)].str);
        }
-#line 3606 "util/configparser.c"
     break;
 
-  case 355: /* server_ssl_port: VAR_SSL_PORT STRING_ARG  */
-#line 993 "./util/configparser.y"
-        {
-               OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+  case 357:
+#line 994 "./util/configparser.y"
+    {
+               OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0)
                        yyerror("port number expected");
-               else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->ssl_port = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3618 "util/configparser.c"
     break;
 
-  case 356: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG  */
-#line 1002 "./util/configparser.y"
-        {
-               OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
+  case 358:
+#line 1003 "./util/configparser.y"
+    {
+               OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->tls_cert_bundle);
-               cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str);
+               cfg_parser->cfg->tls_cert_bundle = (yyvsp[(2) - (2)].str);
        }
-#line 3628 "util/configparser.c"
     break;
 
-  case 357: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG  */
-#line 1009 "./util/configparser.y"
-        {
-               OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 359:
+#line 1010 "./util/configparser.y"
+    {
+               OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3640 "util/configparser.c"
     break;
 
-  case 358: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG  */
-#line 1018 "./util/configparser.y"
-        {
-               OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str)));
+  case 360:
+#line 1019 "./util/configparser.y"
+    {
+               OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port,
-                       (yyvsp[0].str)))
+                       (yyvsp[(2) - (2)].str)))
                        yyerror("out of memory");
        }
-#line 3651 "util/configparser.c"
     break;
 
-  case 359: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG  */
-#line 1026 "./util/configparser.y"
-        {
-               OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str)));
+  case 361:
+#line 1027 "./util/configparser.y"
+    {
+               OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->tls_ciphers);
-               cfg_parser->cfg->tls_ciphers = (yyvsp[0].str);
+               cfg_parser->cfg->tls_ciphers = (yyvsp[(2) - (2)].str);
        }
-#line 3661 "util/configparser.c"
     break;
 
-  case 360: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG  */
-#line 1033 "./util/configparser.y"
-        {
-               OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str)));
+  case 362:
+#line 1034 "./util/configparser.y"
+    {
+               OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->tls_ciphersuites);
-               cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str);
+               cfg_parser->cfg->tls_ciphersuites = (yyvsp[(2) - (2)].str);
        }
-#line 3671 "util/configparser.c"
     break;
 
-  case 361: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG  */
-#line 1040 "./util/configparser.y"
-        {
-               OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str)));
+  case 363:
+#line 1041 "./util/configparser.y"
+    {
+               OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys,
-                       (yyvsp[0].str)))
+                       (yyvsp[(2) - (2)].str)))
                        yyerror("out of memory");
        }
-#line 3682 "util/configparser.c"
     break;
 
-  case 362: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG  */
-#line 1048 "./util/configparser.y"
-        {
-               OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 364:
+#line 1049 "./util/configparser.y"
+    {
+               OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3694 "util/configparser.c"
     break;
 
-  case 363: /* server_https_port: VAR_HTTPS_PORT STRING_ARG  */
-#line 1057 "./util/configparser.y"
-        {
-               OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+  case 365:
+#line 1058 "./util/configparser.y"
+    {
+               OUTYY(("P(server_https_port:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0)
                        yyerror("port number expected");
-               else cfg_parser->cfg->https_port = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->https_port = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3706 "util/configparser.c"
     break;
 
-  case 364: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG  */
-#line 1065 "./util/configparser.y"
-        {
-               OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str)));
+  case 366:
+#line 1066 "./util/configparser.y"
+    {
+               OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->http_endpoint);
-               if((yyvsp[0].str) && (yyvsp[0].str)[0] != '/') {
-                       cfg_parser->cfg->http_endpoint = malloc(strlen((yyvsp[0].str))+2);
+               if((yyvsp[(2) - (2)].str) && (yyvsp[(2) - (2)].str)[0] != '/') {
+                       cfg_parser->cfg->http_endpoint = malloc(strlen((yyvsp[(2) - (2)].str))+2);
                        if(!cfg_parser->cfg->http_endpoint)
                                yyerror("out of memory");
                        cfg_parser->cfg->http_endpoint[0] = '/';
-                       memmove(cfg_parser->cfg->http_endpoint+1, (yyvsp[0].str),
-                               strlen((yyvsp[0].str))+1);
-                       free((yyvsp[0].str));
+                       memmove(cfg_parser->cfg->http_endpoint+1, (yyvsp[(2) - (2)].str),
+                               strlen((yyvsp[(2) - (2)].str))+1);
+                       free((yyvsp[(2) - (2)].str));
                } else {
-                       cfg_parser->cfg->http_endpoint = (yyvsp[0].str);
+                       cfg_parser->cfg->http_endpoint = (yyvsp[(2) - (2)].str);
                }
        }
-#line 3726 "util/configparser.c"
     break;
 
-  case 365: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG  */
-#line 1081 "./util/configparser.y"
-        {
-               OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 367:
+#line 1082 "./util/configparser.y"
+    {
+               OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->http_max_streams = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3738 "util/configparser.c"
     break;
 
-  case 366: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG  */
-#line 1089 "./util/configparser.y"
-        {
-               OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str)));
-               if(!cfg_parse_memsize((yyvsp[0].str),
+  case 368:
+#line 1090 "./util/configparser.y"
+    {
+               OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_parse_memsize((yyvsp[(2) - (2)].str),
                        &cfg_parser->cfg->http_query_buffer_size))
                        yyerror("memory size expected");
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3750 "util/configparser.c"
     break;
 
-  case 367: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG  */
-#line 1097 "./util/configparser.y"
-        {
-               OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str)));
-               if(!cfg_parse_memsize((yyvsp[0].str),
+  case 369:
+#line 1098 "./util/configparser.y"
+    {
+               OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_parse_memsize((yyvsp[(2) - (2)].str),
                        &cfg_parser->cfg->http_response_buffer_size))
                        yyerror("memory size expected");
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3762 "util/configparser.c"
     break;
 
-  case 368: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG  */
-#line 1105 "./util/configparser.y"
-        {
-               OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 370:
+#line 1106 "./util/configparser.y"
+    {
+               OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3774 "util/configparser.c"
     break;
 
-  case 369: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG  */
-#line 1113 "./util/configparser.y"
-        {
-               OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 371:
+#line 1114 "./util/configparser.y"
+    {
+               OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3786 "util/configparser.c"
     break;
 
-  case 370: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG  */
-#line 1121 "./util/configparser.y"
-        {
-               OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 372:
+#line 1122 "./util/configparser.y"
+    {
+               OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3798 "util/configparser.c"
     break;
 
-  case 371: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG  */
-#line 1130 "./util/configparser.y"
-        {
-               OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 373:
+#line 1131 "./util/configparser.y"
+    {
+               OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3810 "util/configparser.c"
     break;
 
-  case 372: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG  */
-#line 1139 "./util/configparser.y"
-        {
-               OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 374:
+#line 1140 "./util/configparser.y"
+    {
+               OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->use_syslog = (strcmp((yyvsp[0].str), "yes")==0);
+               else cfg_parser->cfg->use_syslog = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
 #if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS)
-               if(strcmp((yyvsp[0].str), "yes") == 0)
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") == 0)
                        yyerror("no syslog services are available. "
                                "(reconfigure and compile to add)");
 #endif
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3827 "util/configparser.c"
     break;
 
-  case 373: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG  */
-#line 1153 "./util/configparser.y"
-        {
-               OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 375:
+#line 1154 "./util/configparser.y"
+    {
+               OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3839 "util/configparser.c"
     break;
 
-  case 374: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG  */
-#line 1162 "./util/configparser.y"
-        {
-               OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 376:
+#line 1163 "./util/configparser.y"
+    {
+               OUTYY(("P(server_log_queries:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->log_queries = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3851 "util/configparser.c"
     break;
 
-  case 375: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG  */
-#line 1171 "./util/configparser.y"
-        {
-               OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 377:
+#line 1172 "./util/configparser.y"
+    {
+               OUTYY(("P(server_log_replies:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->log_replies = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3863 "util/configparser.c"
     break;
 
-  case 376: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG  */
-#line 1180 "./util/configparser.y"
-        {
-               OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 378:
+#line 1181 "./util/configparser.y"
+    {
+               OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3875 "util/configparser.c"
     break;
 
-  case 377: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG  */
-#line 1189 "./util/configparser.y"
-        {
-               OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 379:
+#line 1190 "./util/configparser.y"
+    {
+               OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3887 "util/configparser.c"
     break;
 
-  case 378: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG  */
-#line 1198 "./util/configparser.y"
-        {
-               OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 380:
+#line 1199 "./util/configparser.y"
+    {
+               OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3899 "util/configparser.c"
     break;
 
-  case 379: /* server_chroot: VAR_CHROOT STRING_ARG  */
-#line 1207 "./util/configparser.y"
-        {
-               OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
+  case 381:
+#line 1208 "./util/configparser.y"
+    {
+               OUTYY(("P(server_chroot:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->chrootdir);
-               cfg_parser->cfg->chrootdir = (yyvsp[0].str);
+               cfg_parser->cfg->chrootdir = (yyvsp[(2) - (2)].str);
        }
-#line 3909 "util/configparser.c"
     break;
 
-  case 380: /* server_username: VAR_USERNAME STRING_ARG  */
-#line 1214 "./util/configparser.y"
-        {
-               OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
+  case 382:
+#line 1215 "./util/configparser.y"
+    {
+               OUTYY(("P(server_username:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->username);
-               cfg_parser->cfg->username = (yyvsp[0].str);
+               cfg_parser->cfg->username = (yyvsp[(2) - (2)].str);
        }
-#line 3919 "util/configparser.c"
     break;
 
-  case 381: /* server_directory: VAR_DIRECTORY STRING_ARG  */
-#line 1221 "./util/configparser.y"
-        {
-               OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
+  case 383:
+#line 1222 "./util/configparser.y"
+    {
+               OUTYY(("P(server_directory:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->directory);
-               cfg_parser->cfg->directory = (yyvsp[0].str);
+               cfg_parser->cfg->directory = (yyvsp[(2) - (2)].str);
                /* change there right away for includes relative to this */
-               if((yyvsp[0].str)[0]) {
+               if((yyvsp[(2) - (2)].str)[0]) {
                        char* d;
 #ifdef UB_ON_WINDOWS
                        w_config_adjust_directory(cfg_parser->cfg);
@@ -3944,1232 +4329,1146 @@ yyreduce:
                        }
                }
        }
-#line 3948 "util/configparser.c"
     break;
 
-  case 382: /* server_logfile: VAR_LOGFILE STRING_ARG  */
-#line 1247 "./util/configparser.y"
-        {
-               OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str)));
+  case 384:
+#line 1248 "./util/configparser.y"
+    {
+               OUTYY(("P(server_logfile:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->logfile);
-               cfg_parser->cfg->logfile = (yyvsp[0].str);
+               cfg_parser->cfg->logfile = (yyvsp[(2) - (2)].str);
                cfg_parser->cfg->use_syslog = 0;
        }
-#line 3959 "util/configparser.c"
     break;
 
-  case 383: /* server_pidfile: VAR_PIDFILE STRING_ARG  */
-#line 1255 "./util/configparser.y"
-        {
-               OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
+  case 385:
+#line 1256 "./util/configparser.y"
+    {
+               OUTYY(("P(server_pidfile:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->pidfile);
-               cfg_parser->cfg->pidfile = (yyvsp[0].str);
+               cfg_parser->cfg->pidfile = (yyvsp[(2) - (2)].str);
        }
-#line 3969 "util/configparser.c"
     break;
 
-  case 384: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG  */
-#line 1262 "./util/configparser.y"
-        {
-               OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str)))
+  case 386:
+#line 1263 "./util/configparser.y"
+    {
+               OUTYY(("P(server_root_hints:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[(2) - (2)].str)))
                        yyerror("out of memory");
        }
-#line 3979 "util/configparser.c"
     break;
 
-  case 385: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG  */
-#line 1269 "./util/configparser.y"
-        {
-               OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str)));
+  case 387:
+#line 1270 "./util/configparser.y"
+    {
+               OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                log_warn("option dlv-anchor-file ignored: DLV is decommissioned");
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3989 "util/configparser.c"
     break;
 
-  case 386: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG  */
-#line 1276 "./util/configparser.y"
-        {
-               OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str)));
+  case 388:
+#line 1277 "./util/configparser.y"
+    {
+               OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[(2) - (2)].str)));
                log_warn("option dlv-anchor ignored: DLV is decommissioned");
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 3999 "util/configparser.c"
     break;
 
-  case 387: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG  */
-#line 1283 "./util/configparser.y"
-        {
-               OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str)));
+  case 389:
+#line 1284 "./util/configparser.y"
+    {
+               OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
-                       auto_trust_anchor_file_list, (yyvsp[0].str)))
+                       auto_trust_anchor_file_list, (yyvsp[(2) - (2)].str)))
                        yyerror("out of memory");
        }
-#line 4010 "util/configparser.c"
     break;
 
-  case 388: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG  */
-#line 1291 "./util/configparser.y"
-        {
-               OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str)));
+  case 390:
+#line 1292 "./util/configparser.y"
+    {
+               OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
-                       trust_anchor_file_list, (yyvsp[0].str)))
+                       trust_anchor_file_list, (yyvsp[(2) - (2)].str)))
                        yyerror("out of memory");
        }
-#line 4021 "util/configparser.c"
     break;
 
-  case 389: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG  */
-#line 1299 "./util/configparser.y"
-        {
-               OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str)));
+  case 391:
+#line 1300 "./util/configparser.y"
+    {
+               OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
-                       trusted_keys_file_list, (yyvsp[0].str)))
+                       trusted_keys_file_list, (yyvsp[(2) - (2)].str)))
                        yyerror("out of memory");
        }
-#line 4032 "util/configparser.c"
     break;
 
-  case 390: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG  */
-#line 1307 "./util/configparser.y"
-        {
-               OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str)))
+  case 392:
+#line 1308 "./util/configparser.y"
+    {
+               OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[(2) - (2)].str)))
                        yyerror("out of memory");
        }
-#line 4042 "util/configparser.c"
     break;
 
-  case 391: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG  */
-#line 1314 "./util/configparser.y"
-        {
-               OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 393:
+#line 1315 "./util/configparser.y"
+    {
+               OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else
                        cfg_parser->cfg->trust_anchor_signaling =
-                               (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                               (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4056 "util/configparser.c"
     break;
 
-  case 392: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG  */
-#line 1325 "./util/configparser.y"
-        {
-               OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 394:
+#line 1326 "./util/configparser.y"
+    {
+               OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else
                        cfg_parser->cfg->root_key_sentinel =
-                               (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                               (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4070 "util/configparser.c"
     break;
 
-  case 393: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG  */
-#line 1336 "./util/configparser.y"
-        {
-               OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str)))
+  case 395:
+#line 1337 "./util/configparser.y"
+    {
+               OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[(2) - (2)].str)))
                        yyerror("out of memory");
        }
-#line 4080 "util/configparser.c"
     break;
 
-  case 394: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG  */
-#line 1343 "./util/configparser.y"
-        {
-               OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 396:
+#line 1344 "./util/configparser.y"
+    {
+               OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4092 "util/configparser.c"
     break;
 
-  case 395: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG  */
-#line 1352 "./util/configparser.y"
-        {
-               OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 397:
+#line 1353 "./util/configparser.y"
+    {
+               OUTYY(("P(server_hide_version:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->hide_version = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4104 "util/configparser.c"
     break;
 
-  case 396: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG  */
-#line 1361 "./util/configparser.y"
-        {
-               OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 398:
+#line 1362 "./util/configparser.y"
+    {
+               OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4116 "util/configparser.c"
     break;
 
-  case 397: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG  */
-#line 1370 "./util/configparser.y"
-        {
-               OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 399:
+#line 1371 "./util/configparser.y"
+    {
+               OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4128 "util/configparser.c"
     break;
 
-  case 398: /* server_identity: VAR_IDENTITY STRING_ARG  */
-#line 1379 "./util/configparser.y"
-        {
-               OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
+  case 400:
+#line 1380 "./util/configparser.y"
+    {
+               OUTYY(("P(server_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->identity);
-               cfg_parser->cfg->identity = (yyvsp[0].str);
+               cfg_parser->cfg->identity = (yyvsp[(2) - (2)].str);
        }
-#line 4138 "util/configparser.c"
     break;
 
-  case 399: /* server_version: VAR_VERSION STRING_ARG  */
-#line 1386 "./util/configparser.y"
-        {
-               OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
+  case 401:
+#line 1387 "./util/configparser.y"
+    {
+               OUTYY(("P(server_version:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->version);
-               cfg_parser->cfg->version = (yyvsp[0].str);
+               cfg_parser->cfg->version = (yyvsp[(2) - (2)].str);
        }
-#line 4148 "util/configparser.c"
     break;
 
-  case 400: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG  */
-#line 1393 "./util/configparser.y"
-        {
-               OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str)));
+  case 402:
+#line 1394 "./util/configparser.y"
+    {
+               OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->http_user_agent);
-               cfg_parser->cfg->http_user_agent = (yyvsp[0].str);
+               cfg_parser->cfg->http_user_agent = (yyvsp[(2) - (2)].str);
        }
-#line 4158 "util/configparser.c"
     break;
 
-  case 401: /* server_nsid: VAR_NSID STRING_ARG  */
-#line 1400 "./util/configparser.y"
-        {
-               OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str)));
+  case 403:
+#line 1401 "./util/configparser.y"
+    {
+               OUTYY(("P(server_nsid:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->nsid_cfg_str);
-               cfg_parser->cfg->nsid_cfg_str = (yyvsp[0].str);
+               cfg_parser->cfg->nsid_cfg_str = (yyvsp[(2) - (2)].str);
                free(cfg_parser->cfg->nsid);
                cfg_parser->cfg->nsid = NULL;
                cfg_parser->cfg->nsid_len = 0;
-               if (*(yyvsp[0].str) == 0)
+               if (*(yyvsp[(2) - (2)].str) == 0)
                        ; /* pass; empty string is not setting nsid */
                else if (!(cfg_parser->cfg->nsid = cfg_parse_nsid(
-                                       (yyvsp[0].str), &cfg_parser->cfg->nsid_len)))
+                                       (yyvsp[(2) - (2)].str), &cfg_parser->cfg->nsid_len)))
                        yyerror("the NSID must be either a hex string or an "
                            "ascii character string prepended with ascii_.");
        }
-#line 4177 "util/configparser.c"
     break;
 
-  case 402: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG  */
-#line 1416 "./util/configparser.y"
-        {
-               OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str)));
-               if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf))
+  case 404:
+#line 1417 "./util/configparser.y"
+    {
+               OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_rcvbuf))
                        yyerror("buffer size expected");
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4188 "util/configparser.c"
     break;
 
-  case 403: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG  */
-#line 1424 "./util/configparser.y"
-        {
-               OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str)));
-               if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf))
+  case 405:
+#line 1425 "./util/configparser.y"
+    {
+               OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_sndbuf))
                        yyerror("buffer size expected");
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4199 "util/configparser.c"
     break;
 
-  case 404: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG  */
-#line 1432 "./util/configparser.y"
-        {
-               OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 406:
+#line 1433 "./util/configparser.y"
+    {
+               OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->so_reuseport =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4212 "util/configparser.c"
     break;
 
-  case 405: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG  */
-#line 1442 "./util/configparser.y"
-        {
-               OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 407:
+#line 1443 "./util/configparser.y"
+    {
+               OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->ip_transparent =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4225 "util/configparser.c"
     break;
 
-  case 406: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG  */
-#line 1452 "./util/configparser.y"
-        {
-               OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 408:
+#line 1453 "./util/configparser.y"
+    {
+               OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->ip_freebind =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4238 "util/configparser.c"
     break;
 
-  case 407: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG  */
-#line 1462 "./util/configparser.y"
-        {
-               OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 409:
+#line 1463 "./util/configparser.y"
+    {
+               OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else if (atoi((yyvsp[0].str)) > 63)
+               else if (atoi((yyvsp[(2) - (2)].str)) > 63)
                        yyerror("value too large (max 63)");
-               else if (atoi((yyvsp[0].str)) < 0)
+               else if (atoi((yyvsp[(2) - (2)].str)) < 0)
                        yyerror("value too small (min 0)");
                else
-                       cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+                       cfg_parser->cfg->ip_dscp = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4255 "util/configparser.c"
     break;
 
-  case 408: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG  */
-#line 1476 "./util/configparser.y"
-        {
-               OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str)));
-               if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size))
+  case 410:
+#line 1477 "./util/configparser.y"
+    {
+               OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->stream_wait_size))
                        yyerror("memory size expected");
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4266 "util/configparser.c"
     break;
 
-  case 409: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG  */
-#line 1484 "./util/configparser.y"
-        {
-               OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+  case 411:
+#line 1485 "./util/configparser.y"
+    {
+               OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0)
                        yyerror("number expected");
-               else if (atoi((yyvsp[0].str)) < 12)
+               else if (atoi((yyvsp[(2) - (2)].str)) < 12)
                        yyerror("edns buffer size too small");
-               else if (atoi((yyvsp[0].str)) > 65535)
+               else if (atoi((yyvsp[(2) - (2)].str)) > 65535)
                        cfg_parser->cfg->edns_buffer_size = 65535;
-               else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4282 "util/configparser.c"
     break;
 
-  case 410: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG  */
-#line 1497 "./util/configparser.y"
-        {
-               OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+  case 412:
+#line 1498 "./util/configparser.y"
+    {
+               OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0)
                        yyerror("number expected");
-               else if (atoi((yyvsp[0].str)) < 4096)
+               else if (atoi((yyvsp[(2) - (2)].str)) < 4096)
                        yyerror("message buffer size too small (use 4096)");
-               else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4296 "util/configparser.c"
     break;
 
-  case 411: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG  */
-#line 1508 "./util/configparser.y"
-        {
-               OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str)));
-               if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size))
+  case 413:
+#line 1509 "./util/configparser.y"
+    {
+               OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->msg_cache_size))
                        yyerror("memory size expected");
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4307 "util/configparser.c"
     break;
 
-  case 412: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG  */
-#line 1516 "./util/configparser.y"
-        {
-               OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0) {
+  case 414:
+#line 1517 "./util/configparser.y"
+    {
+               OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0) {
                        yyerror("number expected");
                } else {
-                       cfg_parser->cfg->msg_cache_slabs = atoi((yyvsp[0].str));
+                       cfg_parser->cfg->msg_cache_slabs = atoi((yyvsp[(2) - (2)].str));
                        if(!is_pow2(cfg_parser->cfg->msg_cache_slabs))
                                yyerror("must be a power of 2");
                }
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4323 "util/configparser.c"
     break;
 
-  case 413: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG  */
-#line 1529 "./util/configparser.y"
-        {
-               OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+  case 415:
+#line 1530 "./util/configparser.y"
+    {
+               OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4335 "util/configparser.c"
     break;
 
-  case 414: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG  */
-#line 1538 "./util/configparser.y"
-        {
-               OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 416:
+#line 1539 "./util/configparser.y"
+    {
+               OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->jostle_time = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4347 "util/configparser.c"
     break;
 
-  case 415: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG  */
-#line 1547 "./util/configparser.y"
-        {
-               OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 417:
+#line 1548 "./util/configparser.y"
+    {
+               OUTYY(("P(server_delay_close:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->delay_close = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4359 "util/configparser.c"
     break;
 
-  case 416: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG  */
-#line 1556 "./util/configparser.y"
-        {
-               OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 418:
+#line 1557 "./util/configparser.y"
+    {
+               OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4371 "util/configparser.c"
     break;
 
-  case 417: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG  */
-#line 1565 "./util/configparser.y"
-        {
-               OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 419:
+#line 1566 "./util/configparser.y"
+    {
+               OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->unblock_lan_zones =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4384 "util/configparser.c"
     break;
 
-  case 418: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG  */
-#line 1575 "./util/configparser.y"
-        {
-               OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 420:
+#line 1576 "./util/configparser.y"
+    {
+               OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->insecure_lan_zones =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4397 "util/configparser.c"
     break;
 
-  case 419: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG  */
-#line 1585 "./util/configparser.y"
-        {
-               OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str)));
-               if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size))
+  case 421:
+#line 1586 "./util/configparser.y"
+    {
+               OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->rrset_cache_size))
                        yyerror("memory size expected");
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4408 "util/configparser.c"
     break;
 
-  case 420: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG  */
-#line 1593 "./util/configparser.y"
-        {
-               OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0) {
+  case 422:
+#line 1594 "./util/configparser.y"
+    {
+               OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0) {
                        yyerror("number expected");
                } else {
-                       cfg_parser->cfg->rrset_cache_slabs = atoi((yyvsp[0].str));
+                       cfg_parser->cfg->rrset_cache_slabs = atoi((yyvsp[(2) - (2)].str));
                        if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs))
                                yyerror("must be a power of 2");
                }
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4424 "util/configparser.c"
     break;
 
-  case 421: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG  */
-#line 1606 "./util/configparser.y"
-        {
-               OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 423:
+#line 1607 "./util/configparser.y"
+    {
+               OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->host_ttl = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4436 "util/configparser.c"
     break;
 
-  case 422: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG  */
-#line 1615 "./util/configparser.y"
-        {
-               OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str)));
+  case 424:
+#line 1616 "./util/configparser.y"
+    {
+               OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
-                       "removed, use infra-host-ttl)", (yyvsp[0].str));
-               free((yyvsp[0].str));
+                       "removed, use infra-host-ttl)", (yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4447 "util/configparser.c"
     break;
 
-  case 423: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG  */
-#line 1623 "./util/configparser.y"
-        {
-               OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+  case 425:
+#line 1624 "./util/configparser.y"
+    {
+               OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4459 "util/configparser.c"
     break;
 
-  case 424: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG  */
-#line 1632 "./util/configparser.y"
-        {
-               OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str)));
+  case 426:
+#line 1633 "./util/configparser.y"
+    {
+               OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[(2) - (2)].str)));
                verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
-                       "(option removed, use infra-cache-numhosts)", (yyvsp[0].str));
-               free((yyvsp[0].str));
+                       "(option removed, use infra-cache-numhosts)", (yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4470 "util/configparser.c"
     break;
 
-  case 425: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG  */
-#line 1640 "./util/configparser.y"
-        {
-               OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0) {
+  case 427:
+#line 1641 "./util/configparser.y"
+    {
+               OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0) {
                        yyerror("number expected");
                } else {
-                       cfg_parser->cfg->infra_cache_slabs = atoi((yyvsp[0].str));
+                       cfg_parser->cfg->infra_cache_slabs = atoi((yyvsp[(2) - (2)].str));
                        if(!is_pow2(cfg_parser->cfg->infra_cache_slabs))
                                yyerror("must be a power of 2");
                }
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4486 "util/configparser.c"
     break;
 
-  case 426: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG  */
-#line 1653 "./util/configparser.y"
-        {
-               OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 428:
+#line 1654 "./util/configparser.y"
+    {
+               OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4498 "util/configparser.c"
     break;
 
-  case 427: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG  */
-#line 1662 "./util/configparser.y"
-        {
-               OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 429:
+#line 1663 "./util/configparser.y"
+    {
+               OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->infra_keep_probing =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4511 "util/configparser.c"
     break;
 
-  case 428: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG  */
-#line 1672 "./util/configparser.y"
-        {
-               OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str)));
+  case 430:
+#line 1673 "./util/configparser.y"
+    {
+               OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->target_fetch_policy);
-               cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str);
+               cfg_parser->cfg->target_fetch_policy = (yyvsp[(2) - (2)].str);
        }
-#line 4521 "util/configparser.c"
     break;
 
-  case 429: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG  */
-#line 1679 "./util/configparser.y"
-        {
-               OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 431:
+#line 1680 "./util/configparser.y"
+    {
+               OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->harden_short_bufsize =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4534 "util/configparser.c"
     break;
 
-  case 430: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG  */
-#line 1689 "./util/configparser.y"
-        {
-               OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 432:
+#line 1690 "./util/configparser.y"
+    {
+               OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->harden_large_queries =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4547 "util/configparser.c"
     break;
 
-  case 431: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG  */
-#line 1699 "./util/configparser.y"
-        {
-               OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 433:
+#line 1700 "./util/configparser.y"
+    {
+               OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->harden_glue =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4560 "util/configparser.c"
     break;
 
-  case 432: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG  */
-#line 1709 "./util/configparser.y"
-        {
-               OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 434:
+#line 1710 "./util/configparser.y"
+    {
+               OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->harden_dnssec_stripped =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4573 "util/configparser.c"
     break;
 
-  case 433: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG  */
-#line 1719 "./util/configparser.y"
-        {
-               OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 435:
+#line 1720 "./util/configparser.y"
+    {
+               OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->harden_below_nxdomain =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4586 "util/configparser.c"
     break;
 
-  case 434: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG  */
-#line 1729 "./util/configparser.y"
-        {
-               OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 436:
+#line 1730 "./util/configparser.y"
+    {
+               OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->harden_referral_path =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4599 "util/configparser.c"
     break;
 
-  case 435: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG  */
-#line 1739 "./util/configparser.y"
-        {
-               OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 437:
+#line 1740 "./util/configparser.y"
+    {
+               OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->harden_algo_downgrade =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4612 "util/configparser.c"
     break;
 
-  case 436: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG  */
-#line 1749 "./util/configparser.y"
-        {
-               OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 438:
+#line 1750 "./util/configparser.y"
+    {
+               OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->use_caps_bits_for_id =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4625 "util/configparser.c"
     break;
 
-  case 437: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG  */
-#line 1759 "./util/configparser.y"
-        {
-               OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str)))
+  case 439:
+#line 1760 "./util/configparser.y"
+    {
+               OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[(2) - (2)].str)))
                        yyerror("out of memory");
        }
-#line 4635 "util/configparser.c"
     break;
 
-  case 438: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG  */
-#line 1766 "./util/configparser.y"
-        {
-               OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str)))
+  case 440:
+#line 1767 "./util/configparser.y"
+    {
+               OUTYY(("P(server_private_address:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[(2) - (2)].str)))
                        yyerror("out of memory");
        }
-#line 4645 "util/configparser.c"
     break;
 
-  case 439: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG  */
-#line 1773 "./util/configparser.y"
-        {
-               OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str)))
+  case 441:
+#line 1774 "./util/configparser.y"
+    {
+               OUTYY(("P(server_private_domain:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[(2) - (2)].str)))
                        yyerror("out of memory");
        }
-#line 4655 "util/configparser.c"
     break;
 
-  case 440: /* server_prefetch: VAR_PREFETCH STRING_ARG  */
-#line 1780 "./util/configparser.y"
-        {
-               OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 442:
+#line 1781 "./util/configparser.y"
+    {
+               OUTYY(("P(server_prefetch:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->prefetch = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4667 "util/configparser.c"
     break;
 
-  case 441: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG  */
-#line 1789 "./util/configparser.y"
-        {
-               OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 443:
+#line 1790 "./util/configparser.y"
+    {
+               OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4679 "util/configparser.c"
     break;
 
-  case 442: /* server_deny_any: VAR_DENY_ANY STRING_ARG  */
-#line 1798 "./util/configparser.y"
-        {
-               OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 444:
+#line 1799 "./util/configparser.y"
+    {
+               OUTYY(("P(server_deny_any:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->deny_any = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4691 "util/configparser.c"
     break;
 
-  case 443: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG  */
-#line 1807 "./util/configparser.y"
-        {
-               OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 445:
+#line 1808 "./util/configparser.y"
+    {
+               OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4703 "util/configparser.c"
     break;
 
-  case 444: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG  */
-#line 1816 "./util/configparser.y"
-        {
-               OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str)))
+  case 446:
+#line 1817 "./util/configparser.y"
+    {
+               OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[(2) - (2)].str)))
                        yyerror("out of memory");
        }
-#line 4713 "util/configparser.c"
     break;
 
-  case 445: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG  */
-#line 1823 "./util/configparser.y"
-        {
-               OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 447:
+#line 1824 "./util/configparser.y"
+    {
+               OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->donotquery_localhost =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
-       }
-#line 4726 "util/configparser.c"
-    break;
-
-  case 446: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG  */
-#line 1833 "./util/configparser.y"
-        {
-               OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 &&
-                       strcmp((yyvsp[0].str), "deny_non_local")!=0 &&
-                       strcmp((yyvsp[0].str), "refuse_non_local")!=0 &&
-                       strcmp((yyvsp[0].str), "allow_setrd")!=0 &&
-                       strcmp((yyvsp[0].str), "allow")!=0 &&
-                       strcmp((yyvsp[0].str), "allow_snoop")!=0) {
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
+       }
+    break;
+
+  case 448:
+#line 1834 "./util/configparser.y"
+    {
+               OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
+               if(strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 &&
+                       strcmp((yyvsp[(3) - (3)].str), "deny_non_local")!=0 &&
+                       strcmp((yyvsp[(3) - (3)].str), "refuse_non_local")!=0 &&
+                       strcmp((yyvsp[(3) - (3)].str), "allow_setrd")!=0 &&
+                       strcmp((yyvsp[(3) - (3)].str), "allow")!=0 &&
+                       strcmp((yyvsp[(3) - (3)].str), "allow_snoop")!=0) {
                        yyerror("expected deny, refuse, deny_non_local, "
                                "refuse_non_local, allow, allow_setrd or "
                                "allow_snoop in access control action");
-                       free((yyvsp[-1].str));
-                       free((yyvsp[0].str));
+                       free((yyvsp[(2) - (3)].str));
+                       free((yyvsp[(3) - (3)].str));
                } else {
-                       if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str)))
+                       if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)))
                                fatal_exit("out of memory adding acl");
                }
        }
-#line 4749 "util/configparser.c"
     break;
 
-  case 447: /* server_module_conf: VAR_MODULE_CONF STRING_ARG  */
-#line 1853 "./util/configparser.y"
-        {
-               OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str)));
+  case 449:
+#line 1854 "./util/configparser.y"
+    {
+               OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->module_conf);
-               cfg_parser->cfg->module_conf = (yyvsp[0].str);
+               cfg_parser->cfg->module_conf = (yyvsp[(2) - (2)].str);
        }
-#line 4759 "util/configparser.c"
     break;
 
-  case 448: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG  */
-#line 1860 "./util/configparser.y"
-        {
-               OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str)));
-               if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
+  case 450:
+#line 1861 "./util/configparser.y"
+    {
+               OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(*(yyvsp[(2) - (2)].str) == '\0' || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
                        cfg_parser->cfg->val_date_override = 0;
-               } else if(strlen((yyvsp[0].str)) == 14) {
+               } else if(strlen((yyvsp[(2) - (2)].str)) == 14) {
                        cfg_parser->cfg->val_date_override =
-                               cfg_convert_timeval((yyvsp[0].str));
+                               cfg_convert_timeval((yyvsp[(2) - (2)].str));
                        if(!cfg_parser->cfg->val_date_override)
                                yyerror("bad date/time specification");
                } else {
-                       if(atoi((yyvsp[0].str)) == 0)
+                       if(atoi((yyvsp[(2) - (2)].str)) == 0)
                                yyerror("number expected");
-                       cfg_parser->cfg->val_date_override = atoi((yyvsp[0].str));
+                       cfg_parser->cfg->val_date_override = atoi((yyvsp[(2) - (2)].str));
                }
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4780 "util/configparser.c"
     break;
 
-  case 449: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG  */
-#line 1878 "./util/configparser.y"
-        {
-               OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str)));
-               if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
+  case 451:
+#line 1879 "./util/configparser.y"
+    {
+               OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(*(yyvsp[(2) - (2)].str) == '\0' || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
                        cfg_parser->cfg->val_sig_skew_min = 0;
                } else {
-                       cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[0].str));
+                       cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[(2) - (2)].str));
                        if(!cfg_parser->cfg->val_sig_skew_min)
                                yyerror("number expected");
                }
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4796 "util/configparser.c"
     break;
 
-  case 450: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG  */
-#line 1891 "./util/configparser.y"
-        {
-               OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str)));
-               if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
+  case 452:
+#line 1892 "./util/configparser.y"
+    {
+               OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(*(yyvsp[(2) - (2)].str) == '\0' || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
                        cfg_parser->cfg->val_sig_skew_max = 0;
                } else {
-                       cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[0].str));
+                       cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[(2) - (2)].str));
                        if(!cfg_parser->cfg->val_sig_skew_max)
                                yyerror("number expected");
                }
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4812 "util/configparser.c"
     break;
 
-  case 451: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG  */
-#line 1904 "./util/configparser.y"
-        {
-               OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str)));
-               if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
+  case 453:
+#line 1905 "./util/configparser.y"
+    {
+               OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(*(yyvsp[(2) - (2)].str) == '\0' || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
                        cfg_parser->cfg->val_max_restart = 0;
                } else {
-                       cfg_parser->cfg->val_max_restart = atoi((yyvsp[0].str));
+                       cfg_parser->cfg->val_max_restart = atoi((yyvsp[(2) - (2)].str));
                        if(!cfg_parser->cfg->val_max_restart)
                                yyerror("number expected");
                }
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4828 "util/configparser.c"
     break;
 
-  case 452: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG  */
-#line 1917 "./util/configparser.y"
-        {
-               OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 454:
+#line 1918 "./util/configparser.y"
+    {
+               OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->max_ttl = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4840 "util/configparser.c"
     break;
 
-  case 453: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG  */
-#line 1926 "./util/configparser.y"
-        {
-               OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 455:
+#line 1927 "./util/configparser.y"
+    {
+               OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4852 "util/configparser.c"
     break;
 
-  case 454: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG  */
-#line 1935 "./util/configparser.y"
-        {
-               OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 456:
+#line 1936 "./util/configparser.y"
+    {
+               OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->min_ttl = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4864 "util/configparser.c"
     break;
 
-  case 455: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG  */
-#line 1944 "./util/configparser.y"
-        {
-               OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 457:
+#line 1945 "./util/configparser.y"
+    {
+               OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4876 "util/configparser.c"
     break;
 
-  case 456: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG  */
-#line 1953 "./util/configparser.y"
-        {
-               OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 458:
+#line 1954 "./util/configparser.y"
+    {
+               OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->val_clean_additional =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4889 "util/configparser.c"
     break;
 
-  case 457: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG  */
-#line 1963 "./util/configparser.y"
-        {
-               OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 459:
+#line 1964 "./util/configparser.y"
+    {
+               OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->val_permissive_mode =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4902 "util/configparser.c"
     break;
 
-  case 458: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG  */
-#line 1973 "./util/configparser.y"
-        {
-               OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 460:
+#line 1974 "./util/configparser.y"
+    {
+               OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else
                        cfg_parser->cfg->aggressive_nsec =
-                               (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                               (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4916 "util/configparser.c"
     break;
 
-  case 459: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG  */
-#line 1984 "./util/configparser.y"
-        {
-               OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 461:
+#line 1985 "./util/configparser.y"
+    {
+               OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4928 "util/configparser.c"
     break;
 
-  case 460: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG  */
-#line 1993 "./util/configparser.y"
-        {
-               OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 462:
+#line 1994 "./util/configparser.y"
+    {
+               OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4940 "util/configparser.c"
     break;
 
-  case 461: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG  */
-#line 2002 "./util/configparser.y"
-        {
-               OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 463:
+#line 2003 "./util/configparser.y"
+    {
+               OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4952 "util/configparser.c"
     break;
 
-  case 462: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG  */
-#line 2011 "./util/configparser.y"
-        {
-               OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 464:
+#line 2012 "./util/configparser.y"
+    {
+               OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4964 "util/configparser.c"
     break;
 
-  case 463: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG  */
-#line 2020 "./util/configparser.y"
-        {
-               OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 465:
+#line 2021 "./util/configparser.y"
+    {
+               OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4976 "util/configparser.c"
     break;
 
-  case 464: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG  */
-#line 2029 "./util/configparser.y"
-        {
-               OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 466:
+#line 2030 "./util/configparser.y"
+    {
+               OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
+       }
+    break;
+
+  case 467:
+#line 2039 "./util/configparser.y"
+    {
+               OUTYY(("P(server_ede_serve_expired:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->ede_serve_expired = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 4988 "util/configparser.c"
     break;
 
-  case 465: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG  */
-#line 2038 "./util/configparser.y"
-        {
-               OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 468:
+#line 2048 "./util/configparser.y"
+    {
+               OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5000 "util/configparser.c"
     break;
 
-  case 466: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG  */
-#line 2047 "./util/configparser.y"
-        {
-               OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 469:
+#line 2057 "./util/configparser.y"
+    {
+               OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
 #if defined(HAVE_SSL) || defined(HAVE_NETTLE)
-               else fake_dsa = (strcmp((yyvsp[0].str), "yes")==0);
+               else fake_dsa = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
                if(fake_dsa)
                        log_warn("test option fake_dsa is enabled");
 #endif
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5016 "util/configparser.c"
     break;
 
-  case 467: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG  */
-#line 2060 "./util/configparser.y"
-        {
-               OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 470:
+#line 2070 "./util/configparser.y"
+    {
+               OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
 #if defined(HAVE_SSL) || defined(HAVE_NETTLE)
-               else fake_sha1 = (strcmp((yyvsp[0].str), "yes")==0);
+               else fake_sha1 = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
                if(fake_sha1)
                        log_warn("test option fake_sha1 is enabled");
 #endif
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5032 "util/configparser.c"
     break;
 
-  case 468: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG  */
-#line 2073 "./util/configparser.y"
-        {
-               OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 471:
+#line 2083 "./util/configparser.y"
+    {
+               OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->val_log_level = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5044 "util/configparser.c"
     break;
 
-  case 469: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG  */
-#line 2082 "./util/configparser.y"
-        {
-               OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str)));
+  case 472:
+#line 2092 "./util/configparser.y"
+    {
+               OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->val_nsec3_key_iterations);
-               cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str);
+               cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[(2) - (2)].str);
        }
-#line 5054 "util/configparser.c"
     break;
 
-  case 470: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG  */
-#line 2089 "./util/configparser.y"
-        {
-               OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 473:
+#line 2099 "./util/configparser.y"
+    {
+               OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else    cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else    cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5066 "util/configparser.c"
     break;
 
-  case 471: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG  */
-#line 2098 "./util/configparser.y"
-        {
-               OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 474:
+#line 2108 "./util/configparser.y"
+    {
+               OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->add_holddown = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5078 "util/configparser.c"
     break;
 
-  case 472: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG  */
-#line 2107 "./util/configparser.y"
-        {
-               OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 475:
+#line 2117 "./util/configparser.y"
+    {
+               OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->del_holddown = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5090 "util/configparser.c"
     break;
 
-  case 473: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG  */
-#line 2116 "./util/configparser.y"
-        {
-               OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 476:
+#line 2126 "./util/configparser.y"
+    {
+               OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->keep_missing = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5102 "util/configparser.c"
     break;
 
-  case 474: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG  */
-#line 2125 "./util/configparser.y"
-        {
-               OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 477:
+#line 2135 "./util/configparser.y"
+    {
+               OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->permit_small_holddown =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5115 "util/configparser.c"
     break;
 
-  case 475: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG  */
-#line 2134 "./util/configparser.y"
-        {
-               OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str)));
-               if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size))
+  case 478:
+#line 2144 "./util/configparser.y"
+    {
+               OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->key_cache_size))
                        yyerror("memory size expected");
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5126 "util/configparser.c"
     break;
 
-  case 476: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG  */
-#line 2142 "./util/configparser.y"
-        {
-               OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0) {
+  case 479:
+#line 2152 "./util/configparser.y"
+    {
+               OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0) {
                        yyerror("number expected");
                } else {
-                       cfg_parser->cfg->key_cache_slabs = atoi((yyvsp[0].str));
+                       cfg_parser->cfg->key_cache_slabs = atoi((yyvsp[(2) - (2)].str));
                        if(!is_pow2(cfg_parser->cfg->key_cache_slabs))
                                yyerror("must be a power of 2");
                }
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5142 "util/configparser.c"
     break;
 
-  case 477: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG  */
-#line 2155 "./util/configparser.y"
-        {
-               OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str)));
-               if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size))
+  case 480:
+#line 2165 "./util/configparser.y"
+    {
+               OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->neg_cache_size))
                        yyerror("memory size expected");
-               free((yyvsp[0].str));
-       }
-#line 5153 "util/configparser.c"
-    break;
-
-  case 478: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG  */
-#line 2163 "./util/configparser.y"
-        {
-               OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
-                  strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 &&
-                  strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0
-                  && strcmp((yyvsp[0].str), "typetransparent")!=0
-                  && strcmp((yyvsp[0].str), "always_transparent")!=0
-                  && strcmp((yyvsp[0].str), "always_refuse")!=0
-                  && strcmp((yyvsp[0].str), "always_nxdomain")!=0
-                  && strcmp((yyvsp[0].str), "always_nodata")!=0
-                  && strcmp((yyvsp[0].str), "always_deny")!=0
-                  && strcmp((yyvsp[0].str), "always_null")!=0
-                  && strcmp((yyvsp[0].str), "noview")!=0
-                  && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0
-                  && strcmp((yyvsp[0].str), "inform_redirect") != 0
-                  && strcmp((yyvsp[0].str), "ipset") != 0) {
+               free((yyvsp[(2) - (2)].str));
+       }
+    break;
+
+  case 481:
+#line 2173 "./util/configparser.y"
+    {
+               OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
+               if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 &&
+                  strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 && strcmp((yyvsp[(3) - (3)].str), "redirect")!=0 &&
+                  strcmp((yyvsp[(3) - (3)].str), "transparent")!=0 && strcmp((yyvsp[(3) - (3)].str), "nodefault")!=0
+                  && strcmp((yyvsp[(3) - (3)].str), "typetransparent")!=0
+                  && strcmp((yyvsp[(3) - (3)].str), "always_transparent")!=0
+                  && strcmp((yyvsp[(3) - (3)].str), "always_refuse")!=0
+                  && strcmp((yyvsp[(3) - (3)].str), "always_nxdomain")!=0
+                  && strcmp((yyvsp[(3) - (3)].str), "always_nodata")!=0
+                  && strcmp((yyvsp[(3) - (3)].str), "always_deny")!=0
+                  && strcmp((yyvsp[(3) - (3)].str), "always_null")!=0
+                  && strcmp((yyvsp[(3) - (3)].str), "noview")!=0
+                  && strcmp((yyvsp[(3) - (3)].str), "inform")!=0 && strcmp((yyvsp[(3) - (3)].str), "inform_deny")!=0
+                  && strcmp((yyvsp[(3) - (3)].str), "inform_redirect") != 0
+                  && strcmp((yyvsp[(3) - (3)].str), "ipset") != 0) {
                        yyerror("local-zone type: expected static, deny, "
                                "refuse, redirect, transparent, "
                                "typetransparent, inform, inform_deny, "
@@ -5177,56 +5476,54 @@ yyreduce:
                                "always_refuse, always_nxdomain, "
                                "always_nodata, always_deny, always_null, "
                                "noview, nodefault or ipset");
-                       free((yyvsp[-1].str));
-                       free((yyvsp[0].str));
-               } else if(strcmp((yyvsp[0].str), "nodefault")==0) {
+                       free((yyvsp[(2) - (3)].str));
+                       free((yyvsp[(3) - (3)].str));
+               } else if(strcmp((yyvsp[(3) - (3)].str), "nodefault")==0) {
                        if(!cfg_strlist_insert(&cfg_parser->cfg->
-                               local_zones_nodefault, (yyvsp[-1].str)))
+                               local_zones_nodefault, (yyvsp[(2) - (3)].str)))
                                fatal_exit("out of memory adding local-zone");
-                       free((yyvsp[0].str));
+                       free((yyvsp[(3) - (3)].str));
 #ifdef USE_IPSET
-               } else if(strcmp((yyvsp[0].str), "ipset")==0) {
-                       size_t len = strlen((yyvsp[-1].str));
+               } else if(strcmp((yyvsp[(3) - (3)].str), "ipset")==0) {
+                       size_t len = strlen((yyvsp[(2) - (3)].str));
                        /* Make sure to add the trailing dot.
                         * These are str compared to domain names. */
-                       if((yyvsp[-1].str)[len-1] != '.') {
-                               if(!((yyvsp[-1].str) = realloc((yyvsp[-1].str), len+2))) {
+                       if((yyvsp[(2) - (3)].str)[len-1] != '.') {
+                               if(!((yyvsp[(2) - (3)].str) = realloc((yyvsp[(2) - (3)].str), len+2))) {
                                        fatal_exit("out of memory adding local-zone");
                                }
-                               (yyvsp[-1].str)[len] = '.';
-                               (yyvsp[-1].str)[len+1] = 0;
+                               (yyvsp[(2) - (3)].str)[len] = '.';
+                               (yyvsp[(2) - (3)].str)[len+1] = 0;
                        }
                        if(!cfg_strlist_insert(&cfg_parser->cfg->
-                               local_zones_ipset, (yyvsp[-1].str)))
+                               local_zones_ipset, (yyvsp[(2) - (3)].str)))
                                fatal_exit("out of memory adding local-zone");
-                       free((yyvsp[0].str));
+                       free((yyvsp[(3) - (3)].str));
 #endif
                } else {
                        if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones,
-                               (yyvsp[-1].str), (yyvsp[0].str)))
+                               (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)))
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 5211 "util/configparser.c"
     break;
 
-  case 479: /* server_local_data: VAR_LOCAL_DATA STRING_ARG  */
-#line 2218 "./util/configparser.y"
-        {
-               OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str)))
+  case 482:
+#line 2228 "./util/configparser.y"
+    {
+               OUTYY(("P(server_local_data:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[(2) - (2)].str)))
                        fatal_exit("out of memory adding local-data");
        }
-#line 5221 "util/configparser.c"
     break;
 
-  case 480: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG  */
-#line 2225 "./util/configparser.y"
-        {
+  case 483:
+#line 2235 "./util/configparser.y"
+    {
                char* ptr;
-               OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str)));
-               ptr = cfg_ptr_reverse((yyvsp[0].str));
-               free((yyvsp[0].str));
+               OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str)));
+               ptr = cfg_ptr_reverse((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
                if(ptr) {
                        if(!cfg_strlist_insert(&cfg_parser->cfg->
                                local_data, ptr))
@@ -5235,93 +5532,85 @@ yyreduce:
                        yyerror("local-data-ptr could not be reversed");
                }
        }
-#line 5239 "util/configparser.c"
     break;
 
-  case 481: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG  */
-#line 2240 "./util/configparser.y"
-        {
-               OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 484:
+#line 2250 "./util/configparser.y"
+    {
+               OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->minimal_responses =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5252 "util/configparser.c"
     break;
 
-  case 482: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG  */
-#line 2250 "./util/configparser.y"
-        {
-               OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 485:
+#line 2260 "./util/configparser.y"
+    {
+               OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->rrset_roundrobin =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5265 "util/configparser.c"
     break;
 
-  case 483: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG  */
-#line 2260 "./util/configparser.y"
-        {
-               OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str)));
-               cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+  case 486:
+#line 2270 "./util/configparser.y"
+    {
+               OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[(2) - (2)].str)));
+               cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5275 "util/configparser.c"
     break;
 
-  case 484: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG  */
-#line 2267 "./util/configparser.y"
-        {
-               OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str)));
-               cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+  case 487:
+#line 2277 "./util/configparser.y"
+    {
+               OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[(2) - (2)].str)));
+               cfg_parser->cfg->max_udp_size = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5285 "util/configparser.c"
     break;
 
-  case 485: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG  */
-#line 2274 "./util/configparser.y"
-        {
-               OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str)));
+  case 488:
+#line 2284 "./util/configparser.y"
+    {
+               OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dns64_prefix);
-               cfg_parser->cfg->dns64_prefix = (yyvsp[0].str);
+               cfg_parser->cfg->dns64_prefix = (yyvsp[(2) - (2)].str);
        }
-#line 5295 "util/configparser.c"
     break;
 
-  case 486: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG  */
-#line 2281 "./util/configparser.y"
-        {
-               OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 489:
+#line 2291 "./util/configparser.y"
+    {
+               OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5307 "util/configparser.c"
     break;
 
-  case 487: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG  */
-#line 2290 "./util/configparser.y"
-        {
-               OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str)));
+  case 490:
+#line 2300 "./util/configparser.y"
+    {
+               OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa,
-                       (yyvsp[0].str)))
+                       (yyvsp[(2) - (2)].str)))
                        fatal_exit("out of memory adding dns64-ignore-aaaa");
        }
-#line 5318 "util/configparser.c"
     break;
 
-  case 488: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG  */
-#line 2298 "./util/configparser.y"
-        {
-               char* p, *s = (yyvsp[0].str);
-               OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str)));
+  case 491:
+#line 2308 "./util/configparser.y"
+    {
+               char* p, *s = (yyvsp[(2) - (2)].str);
+               OUTYY(("P(server_define_tag:%s)\n", (yyvsp[(2) - (2)].str)));
                while((p=strsep(&s, " \t\n")) != NULL) {
                        if(*p) {
                                if(!config_add_tag(cfg_parser->cfg, p))
@@ -5329,877 +5618,823 @@ yyreduce:
                                                "out of memory");
                        }
                }
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5335 "util/configparser.c"
     break;
 
-  case 489: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG  */
-#line 2312 "./util/configparser.y"
-        {
+  case 492:
+#line 2322 "./util/configparser.y"
+    {
                size_t len = 0;
-               uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
+               uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[(3) - (3)].str),
                        &len);
-               free((yyvsp[0].str));
-               OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[-1].str)));
+               free((yyvsp[(3) - (3)].str));
+               OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[(2) - (3)].str)));
                if(!bitlist) {
                        yyerror("could not parse tags, (define-tag them first)");
-                       free((yyvsp[-1].str));
+                       free((yyvsp[(2) - (3)].str));
                }
                if(bitlist) {
                        if(!cfg_strbytelist_insert(
                                &cfg_parser->cfg->local_zone_tags,
-                               (yyvsp[-1].str), bitlist, len)) {
+                               (yyvsp[(2) - (3)].str), bitlist, len)) {
                                yyerror("out of memory");
-                               free((yyvsp[-1].str));
+                               free((yyvsp[(2) - (3)].str));
                        }
                }
        }
-#line 5359 "util/configparser.c"
     break;
 
-  case 490: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG  */
-#line 2333 "./util/configparser.y"
-        {
+  case 493:
+#line 2343 "./util/configparser.y"
+    {
                size_t len = 0;
-               uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
+               uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[(3) - (3)].str),
                        &len);
-               free((yyvsp[0].str));
-               OUTYY(("P(server_access_control_tag:%s)\n", (yyvsp[-1].str)));
+               free((yyvsp[(3) - (3)].str));
+               OUTYY(("P(server_access_control_tag:%s)\n", (yyvsp[(2) - (3)].str)));
                if(!bitlist) {
                        yyerror("could not parse tags, (define-tag them first)");
-                       free((yyvsp[-1].str));
+                       free((yyvsp[(2) - (3)].str));
                }
                if(bitlist) {
                        if(!cfg_strbytelist_insert(
                                &cfg_parser->cfg->acl_tags,
-                               (yyvsp[-1].str), bitlist, len)) {
+                               (yyvsp[(2) - (3)].str), bitlist, len)) {
                                yyerror("out of memory");
-                               free((yyvsp[-1].str));
+                               free((yyvsp[(2) - (3)].str));
                        }
                }
        }
-#line 5383 "util/configparser.c"
     break;
 
-  case 491: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG  */
-#line 2354 "./util/configparser.y"
-        {
-               OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
+  case 494:
+#line 2364 "./util/configparser.y"
+    {
+               OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions,
-                       (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
+                       (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].str))) {
                        yyerror("out of memory");
-                       free((yyvsp[-2].str));
-                       free((yyvsp[-1].str));
-                       free((yyvsp[0].str));
+                       free((yyvsp[(2) - (4)].str));
+                       free((yyvsp[(3) - (4)].str));
+                       free((yyvsp[(4) - (4)].str));
                }
        }
-#line 5398 "util/configparser.c"
     break;
 
-  case 492: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG  */
-#line 2366 "./util/configparser.y"
-        {
-               OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
+  case 495:
+#line 2376 "./util/configparser.y"
+    {
+               OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas,
-                       (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
+                       (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].str))) {
                        yyerror("out of memory");
-                       free((yyvsp[-2].str));
-                       free((yyvsp[-1].str));
-                       free((yyvsp[0].str));
+                       free((yyvsp[(2) - (4)].str));
+                       free((yyvsp[(3) - (4)].str));
+                       free((yyvsp[(4) - (4)].str));
                }
        }
-#line 5413 "util/configparser.c"
     break;
 
-  case 493: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG  */
-#line 2378 "./util/configparser.y"
-        {
-               OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
+  case 496:
+#line 2388 "./util/configparser.y"
+    {
+               OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides,
-                       (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
+                       (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].str))) {
                        yyerror("out of memory");
-                       free((yyvsp[-2].str));
-                       free((yyvsp[-1].str));
-                       free((yyvsp[0].str));
+                       free((yyvsp[(2) - (4)].str));
+                       free((yyvsp[(3) - (4)].str));
+                       free((yyvsp[(4) - (4)].str));
                }
        }
-#line 5428 "util/configparser.c"
     break;
 
-  case 494: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG  */
-#line 2390 "./util/configparser.y"
-        {
-               OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
+  case 497:
+#line 2400 "./util/configparser.y"
+    {
+               OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
                if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view,
-                       (yyvsp[-1].str), (yyvsp[0].str))) {
+                       (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) {
                        yyerror("out of memory");
                }
        }
-#line 5440 "util/configparser.c"
     break;
 
-  case 495: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG  */
-#line 2399 "./util/configparser.y"
-        {
+  case 498:
+#line 2409 "./util/configparser.y"
+    {
                size_t len = 0;
-               uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
+               uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[(3) - (3)].str),
                        &len);
-               free((yyvsp[0].str));
-               OUTYY(("P(response_ip_tag:%s)\n", (yyvsp[-1].str)));
+               free((yyvsp[(3) - (3)].str));
+               OUTYY(("P(response_ip_tag:%s)\n", (yyvsp[(2) - (3)].str)));
                if(!bitlist) {
                        yyerror("could not parse tags, (define-tag them first)");
-                       free((yyvsp[-1].str));
+                       free((yyvsp[(2) - (3)].str));
                }
                if(bitlist) {
                        if(!cfg_strbytelist_insert(
                                &cfg_parser->cfg->respip_tags,
-                               (yyvsp[-1].str), bitlist, len)) {
+                               (yyvsp[(2) - (3)].str), bitlist, len)) {
                                yyerror("out of memory");
-                               free((yyvsp[-1].str));
+                               free((yyvsp[(2) - (3)].str));
                        }
                }
        }
-#line 5464 "util/configparser.c"
     break;
 
-  case 496: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG  */
-#line 2420 "./util/configparser.y"
-        {
-               OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 499:
+#line 2430 "./util/configparser.y"
+    {
+               OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5476 "util/configparser.c"
     break;
 
-  case 497: /* server_ratelimit: VAR_RATELIMIT STRING_ARG  */
-#line 2429 "./util/configparser.y"
-        {
-               OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 500:
+#line 2439 "./util/configparser.y"
+    {
+               OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->ratelimit = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5488 "util/configparser.c"
     break;
 
-  case 498: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG  */
-#line 2438 "./util/configparser.y"
-        {
-               OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str)));
-               if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size))
+  case 501:
+#line 2448 "./util/configparser.y"
+    {
+               OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->ip_ratelimit_size))
                        yyerror("memory size expected");
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5499 "util/configparser.c"
     break;
 
-  case 499: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG  */
-#line 2446 "./util/configparser.y"
-        {
-               OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str)));
-               if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size))
+  case 502:
+#line 2456 "./util/configparser.y"
+    {
+               OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->ratelimit_size))
                        yyerror("memory size expected");
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5510 "util/configparser.c"
     break;
 
-  case 500: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG  */
-#line 2454 "./util/configparser.y"
-        {
-               OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0) {
+  case 503:
+#line 2464 "./util/configparser.y"
+    {
+               OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0) {
                        yyerror("number expected");
                } else {
-                       cfg_parser->cfg->ip_ratelimit_slabs = atoi((yyvsp[0].str));
+                       cfg_parser->cfg->ip_ratelimit_slabs = atoi((yyvsp[(2) - (2)].str));
                        if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs))
                                yyerror("must be a power of 2");
                }
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5526 "util/configparser.c"
     break;
 
-  case 501: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG  */
-#line 2467 "./util/configparser.y"
-        {
-               OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0) {
+  case 504:
+#line 2477 "./util/configparser.y"
+    {
+               OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0) {
                        yyerror("number expected");
                } else {
-                       cfg_parser->cfg->ratelimit_slabs = atoi((yyvsp[0].str));
+                       cfg_parser->cfg->ratelimit_slabs = atoi((yyvsp[(2) - (2)].str));
                        if(!is_pow2(cfg_parser->cfg->ratelimit_slabs))
                                yyerror("must be a power of 2");
                }
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5542 "util/configparser.c"
     break;
 
-  case 502: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG  */
-#line 2480 "./util/configparser.y"
-        {
-               OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
+  case 505:
+#line 2490 "./util/configparser.y"
+    {
+               OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
+               if(atoi((yyvsp[(3) - (3)].str)) == 0 && strcmp((yyvsp[(3) - (3)].str), "0") != 0) {
                        yyerror("number expected");
-                       free((yyvsp[-1].str));
-                       free((yyvsp[0].str));
+                       free((yyvsp[(2) - (3)].str));
+                       free((yyvsp[(3) - (3)].str));
                } else {
                        if(!cfg_str2list_insert(&cfg_parser->cfg->
-                               ratelimit_for_domain, (yyvsp[-1].str), (yyvsp[0].str)))
+                               ratelimit_for_domain, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)))
                                fatal_exit("out of memory adding "
                                        "ratelimit-for-domain");
                }
        }
-#line 5560 "util/configparser.c"
     break;
 
-  case 503: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG  */
-#line 2495 "./util/configparser.y"
-        {
-               OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
+  case 506:
+#line 2505 "./util/configparser.y"
+    {
+               OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
+               if(atoi((yyvsp[(3) - (3)].str)) == 0 && strcmp((yyvsp[(3) - (3)].str), "0") != 0) {
                        yyerror("number expected");
-                       free((yyvsp[-1].str));
-                       free((yyvsp[0].str));
+                       free((yyvsp[(2) - (3)].str));
+                       free((yyvsp[(3) - (3)].str));
                } else {
                        if(!cfg_str2list_insert(&cfg_parser->cfg->
-                               ratelimit_below_domain, (yyvsp[-1].str), (yyvsp[0].str)))
+                               ratelimit_below_domain, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)))
                                fatal_exit("out of memory adding "
                                        "ratelimit-below-domain");
                }
        }
-#line 5578 "util/configparser.c"
     break;
 
-  case 504: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG  */
-#line 2510 "./util/configparser.y"
-        {
-               OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 507:
+#line 2520 "./util/configparser.y"
+    {
+               OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5590 "util/configparser.c"
     break;
 
-  case 505: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG  */
-#line 2519 "./util/configparser.y"
-        {
-               OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 508:
+#line 2529 "./util/configparser.y"
+    {
+               OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5602 "util/configparser.c"
     break;
 
-  case 506: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG  */
-#line 2528 "./util/configparser.y"
-        {
-               OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 509:
+#line 2538 "./util/configparser.y"
+    {
+               OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->ip_ratelimit_backoff =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5615 "util/configparser.c"
     break;
 
-  case 507: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG  */
-#line 2538 "./util/configparser.y"
-        {
-               OUTYY(("P(server_ratelimit_backoff:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 510:
+#line 2548 "./util/configparser.y"
+    {
+               OUTYY(("P(server_ratelimit_backoff:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->ratelimit_backoff =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5628 "util/configparser.c"
     break;
 
-  case 508: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG  */
-#line 2548 "./util/configparser.y"
-        {
-               OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 511:
+#line 2558 "./util/configparser.y"
+    {
+               OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5640 "util/configparser.c"
     break;
 
-  case 509: /* server_low_rtt: VAR_LOW_RTT STRING_ARG  */
-#line 2557 "./util/configparser.y"
-        {
+  case 512:
+#line 2567 "./util/configparser.y"
+    {
                OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n"));
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5649 "util/configparser.c"
     break;
 
-  case 510: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG  */
-#line 2563 "./util/configparser.y"
-        {
-               OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) <= 0)
+  case 513:
+#line 2573 "./util/configparser.y"
+    {
+               OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) <= 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->fast_server_num = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5661 "util/configparser.c"
     break;
 
-  case 511: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG  */
-#line 2572 "./util/configparser.y"
-        {
-               OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 514:
+#line 2582 "./util/configparser.y"
+    {
+               OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5673 "util/configparser.c"
     break;
 
-  case 512: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG  */
-#line 2581 "./util/configparser.y"
-        {
-               OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 515:
+#line 2591 "./util/configparser.y"
+    {
+               OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->qname_minimisation =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5686 "util/configparser.c"
     break;
 
-  case 513: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG  */
-#line 2591 "./util/configparser.y"
-        {
-               OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 516:
+#line 2601 "./util/configparser.y"
+    {
+               OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->qname_minimisation_strict =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5699 "util/configparser.c"
     break;
 
-  case 514: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG  */
-#line 2601 "./util/configparser.y"
-        {
-               OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 517:
+#line 2611 "./util/configparser.y"
+    {
+               OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->pad_responses = 
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5712 "util/configparser.c"
     break;
 
-  case 515: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG  */
-#line 2611 "./util/configparser.y"
-        {
-               OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+  case 518:
+#line 2621 "./util/configparser.y"
+    {
+               OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5724 "util/configparser.c"
     break;
 
-  case 516: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG  */
-#line 2620 "./util/configparser.y"
-        {
-               OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 519:
+#line 2630 "./util/configparser.y"
+    {
+               OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->pad_queries = 
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5737 "util/configparser.c"
     break;
 
-  case 517: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG  */
-#line 2630 "./util/configparser.y"
-        {
-               OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+  case 520:
+#line 2640 "./util/configparser.y"
+    {
+               OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5749 "util/configparser.c"
     break;
 
-  case 518: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG  */
-#line 2639 "./util/configparser.y"
-        {
+  case 521:
+#line 2649 "./util/configparser.y"
+    {
        #ifdef USE_IPSECMOD
-               OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+               OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->ipsecmod_enabled = (strcmp((yyvsp[0].str), "yes")==0);
+               else cfg_parser->cfg->ipsecmod_enabled = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
        #else
                OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5765 "util/configparser.c"
     break;
 
-  case 519: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG  */
-#line 2652 "./util/configparser.y"
-        {
+  case 522:
+#line 2662 "./util/configparser.y"
+    {
        #ifdef USE_IPSECMOD
-               OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+               OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->ipsecmod_ignore_bogus = (strcmp((yyvsp[0].str), "yes")==0);
+               else cfg_parser->cfg->ipsecmod_ignore_bogus = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
        #else
                OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5781 "util/configparser.c"
     break;
 
-  case 520: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG  */
-#line 2665 "./util/configparser.y"
-        {
+  case 523:
+#line 2675 "./util/configparser.y"
+    {
        #ifdef USE_IPSECMOD
-               OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str)));
+               OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->ipsecmod_hook);
-               cfg_parser->cfg->ipsecmod_hook = (yyvsp[0].str);
+               cfg_parser->cfg->ipsecmod_hook = (yyvsp[(2) - (2)].str);
        #else
                OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        #endif
        }
-#line 5796 "util/configparser.c"
     break;
 
-  case 521: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG  */
-#line 2677 "./util/configparser.y"
-        {
+  case 524:
+#line 2687 "./util/configparser.y"
+    {
        #ifdef USE_IPSECMOD
-               OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+               OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("number expected");
-               else cfg_parser->cfg->ipsecmod_max_ttl = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->ipsecmod_max_ttl = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        #else
                OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        #endif
        }
-#line 5813 "util/configparser.c"
     break;
 
-  case 522: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG  */
-#line 2691 "./util/configparser.y"
-        {
+  case 525:
+#line 2701 "./util/configparser.y"
+    {
        #ifdef USE_IPSECMOD
-               OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str)))
+               OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[(2) - (2)].str)))
                        yyerror("out of memory");
        #else
                OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        #endif
        }
-#line 5828 "util/configparser.c"
     break;
 
-  case 523: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG  */
-#line 2703 "./util/configparser.y"
-        {
+  case 526:
+#line 2713 "./util/configparser.y"
+    {
        #ifdef USE_IPSECMOD
-               OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+               OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->ipsecmod_strict = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->ipsecmod_strict = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        #else
                OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        #endif
        }
-#line 5845 "util/configparser.c"
     break;
 
-  case 524: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG  */
-#line 2717 "./util/configparser.y"
-        {
-               OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
+  case 527:
+#line 2727 "./util/configparser.y"
+    {
+               OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
                if(!cfg_str2list_insert(
-                       &cfg_parser->cfg->edns_client_strings, (yyvsp[-1].str), (yyvsp[0].str)))
+                       &cfg_parser->cfg->edns_client_strings, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)))
                        fatal_exit("out of memory adding "
                                "edns-client-string");
        }
-#line 5857 "util/configparser.c"
     break;
 
-  case 525: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG  */
-#line 2726 "./util/configparser.y"
-        {
-               OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+  case 528:
+#line 2736 "./util/configparser.y"
+    {
+               OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
                        yyerror("option code expected");
-               else if(atoi((yyvsp[0].str)) > 65535 || atoi((yyvsp[0].str)) < 0)
+               else if(atoi((yyvsp[(2) - (2)].str)) > 65535 || atoi((yyvsp[(2) - (2)].str)) < 0)
                        yyerror("option code must be in interval [0, 65535]");
-               else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
+       }
+    break;
 
+  case 529:
+#line 2747 "./util/configparser.y"
+    {
+               OUTYY(("P(server_ede:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->ede = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5872 "util/configparser.c"
     break;
 
-  case 526: /* stub_name: VAR_NAME STRING_ARG  */
-#line 2738 "./util/configparser.y"
-        {
-               OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
+  case 530:
+#line 2756 "./util/configparser.y"
+    {
+               OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->stubs->name)
                        yyerror("stub name override, there must be one name "
                                "for one stub-zone");
                free(cfg_parser->cfg->stubs->name);
-               cfg_parser->cfg->stubs->name = (yyvsp[0].str);
+               cfg_parser->cfg->stubs->name = (yyvsp[(2) - (2)].str);
        }
-#line 5885 "util/configparser.c"
     break;
 
-  case 527: /* stub_host: VAR_STUB_HOST STRING_ARG  */
-#line 2748 "./util/configparser.y"
-        {
-               OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str)))
+  case 531:
+#line 2766 "./util/configparser.y"
+    {
+               OUTYY(("P(stub-host:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[(2) - (2)].str)))
                        yyerror("out of memory");
        }
-#line 5895 "util/configparser.c"
     break;
 
-  case 528: /* stub_addr: VAR_STUB_ADDR STRING_ARG  */
-#line 2755 "./util/configparser.y"
-        {
-               OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str)))
+  case 532:
+#line 2773 "./util/configparser.y"
+    {
+               OUTYY(("P(stub-addr:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[(2) - (2)].str)))
                        yyerror("out of memory");
        }
-#line 5905 "util/configparser.c"
     break;
 
-  case 529: /* stub_first: VAR_STUB_FIRST STRING_ARG  */
-#line 2762 "./util/configparser.y"
-        {
-               OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 533:
+#line 2780 "./util/configparser.y"
+    {
+               OUTYY(("P(stub-first:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5917 "util/configparser.c"
     break;
 
-  case 530: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG  */
-#line 2771 "./util/configparser.y"
-        {
-               OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 534:
+#line 2789 "./util/configparser.y"
+    {
+               OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5929 "util/configparser.c"
     break;
 
-  case 531: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG  */
-#line 2780 "./util/configparser.y"
-        {
-               OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 535:
+#line 2798 "./util/configparser.y"
+    {
+               OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->stubs->ssl_upstream =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5942 "util/configparser.c"
     break;
 
-  case 532: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG  */
-#line 2790 "./util/configparser.y"
-        {
-                OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str)));
-                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 536:
+#line 2808 "./util/configparser.y"
+    {
+                OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[(2) - (2)].str)));
+                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                         yyerror("expected yes or no.");
                 else cfg_parser->cfg->stubs->tcp_upstream =
-                        (strcmp((yyvsp[0].str), "yes")==0);
-                free((yyvsp[0].str));
+                        (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+                free((yyvsp[(2) - (2)].str));
         }
-#line 5955 "util/configparser.c"
     break;
 
-  case 533: /* stub_prime: VAR_STUB_PRIME STRING_ARG  */
-#line 2800 "./util/configparser.y"
-        {
-               OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 537:
+#line 2818 "./util/configparser.y"
+    {
+               OUTYY(("P(stub-prime:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->stubs->isprime =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 5968 "util/configparser.c"
     break;
 
-  case 534: /* forward_name: VAR_NAME STRING_ARG  */
-#line 2810 "./util/configparser.y"
-        {
-               OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
+  case 538:
+#line 2828 "./util/configparser.y"
+    {
+               OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->forwards->name)
                        yyerror("forward name override, there must be one "
                                "name for one forward-zone");
                free(cfg_parser->cfg->forwards->name);
-               cfg_parser->cfg->forwards->name = (yyvsp[0].str);
+               cfg_parser->cfg->forwards->name = (yyvsp[(2) - (2)].str);
        }
-#line 5981 "util/configparser.c"
     break;
 
-  case 535: /* forward_host: VAR_FORWARD_HOST STRING_ARG  */
-#line 2820 "./util/configparser.y"
-        {
-               OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str)))
+  case 539:
+#line 2838 "./util/configparser.y"
+    {
+               OUTYY(("P(forward-host:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[(2) - (2)].str)))
                        yyerror("out of memory");
        }
-#line 5991 "util/configparser.c"
     break;
 
-  case 536: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG  */
-#line 2827 "./util/configparser.y"
-        {
-               OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str)))
+  case 540:
+#line 2845 "./util/configparser.y"
+    {
+               OUTYY(("P(forward-addr:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[(2) - (2)].str)))
                        yyerror("out of memory");
        }
-#line 6001 "util/configparser.c"
     break;
 
-  case 537: /* forward_first: VAR_FORWARD_FIRST STRING_ARG  */
-#line 2834 "./util/configparser.y"
-        {
-               OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 541:
+#line 2852 "./util/configparser.y"
+    {
+               OUTYY(("P(forward-first:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6013 "util/configparser.c"
     break;
 
-  case 538: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG  */
-#line 2843 "./util/configparser.y"
-        {
-               OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 542:
+#line 2861 "./util/configparser.y"
+    {
+               OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6025 "util/configparser.c"
     break;
 
-  case 539: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG  */
-#line 2852 "./util/configparser.y"
-        {
-               OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 543:
+#line 2870 "./util/configparser.y"
+    {
+               OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->forwards->ssl_upstream =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6038 "util/configparser.c"
     break;
 
-  case 540: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG  */
-#line 2862 "./util/configparser.y"
-        {
-                OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str)));
-                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 544:
+#line 2880 "./util/configparser.y"
+    {
+                OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[(2) - (2)].str)));
+                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                         yyerror("expected yes or no.");
                 else cfg_parser->cfg->forwards->tcp_upstream =
-                        (strcmp((yyvsp[0].str), "yes")==0);
-                free((yyvsp[0].str));
+                        (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+                free((yyvsp[(2) - (2)].str));
         }
-#line 6051 "util/configparser.c"
     break;
 
-  case 541: /* auth_name: VAR_NAME STRING_ARG  */
-#line 2872 "./util/configparser.y"
-        {
-               OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
+  case 545:
+#line 2890 "./util/configparser.y"
+    {
+               OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->auths->name)
                        yyerror("auth name override, there must be one name "
                                "for one auth-zone");
                free(cfg_parser->cfg->auths->name);
-               cfg_parser->cfg->auths->name = (yyvsp[0].str);
+               cfg_parser->cfg->auths->name = (yyvsp[(2) - (2)].str);
        }
-#line 6064 "util/configparser.c"
     break;
 
-  case 542: /* auth_zonefile: VAR_ZONEFILE STRING_ARG  */
-#line 2882 "./util/configparser.y"
-        {
-               OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str)));
+  case 546:
+#line 2900 "./util/configparser.y"
+    {
+               OUTYY(("P(zonefile:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->auths->zonefile);
-               cfg_parser->cfg->auths->zonefile = (yyvsp[0].str);
+               cfg_parser->cfg->auths->zonefile = (yyvsp[(2) - (2)].str);
        }
-#line 6074 "util/configparser.c"
     break;
 
-  case 543: /* auth_master: VAR_MASTER STRING_ARG  */
-#line 2889 "./util/configparser.y"
-        {
-               OUTYY(("P(master:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str)))
+  case 547:
+#line 2907 "./util/configparser.y"
+    {
+               OUTYY(("P(master:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[(2) - (2)].str)))
                        yyerror("out of memory");
        }
-#line 6084 "util/configparser.c"
     break;
 
-  case 544: /* auth_url: VAR_URL STRING_ARG  */
-#line 2896 "./util/configparser.y"
-        {
-               OUTYY(("P(url:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str)))
+  case 548:
+#line 2914 "./util/configparser.y"
+    {
+               OUTYY(("P(url:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[(2) - (2)].str)))
                        yyerror("out of memory");
        }
-#line 6094 "util/configparser.c"
     break;
 
-  case 545: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG  */
-#line 2903 "./util/configparser.y"
-        {
-               OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str)));
+  case 549:
+#line 2921 "./util/configparser.y"
+    {
+               OUTYY(("P(allow-notify:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify,
-                       (yyvsp[0].str)))
+                       (yyvsp[(2) - (2)].str)))
                        yyerror("out of memory");
        }
-#line 6105 "util/configparser.c"
     break;
 
-  case 546: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG  */
-#line 2911 "./util/configparser.y"
-        {
-               OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 550:
+#line 2929 "./util/configparser.y"
+    {
+               OUTYY(("P(zonemd-check:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->auths->zonemd_check =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6118 "util/configparser.c"
     break;
 
-  case 547: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG  */
-#line 2921 "./util/configparser.y"
-        {
-               OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 551:
+#line 2939 "./util/configparser.y"
+    {
+               OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->auths->zonemd_reject_absence =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6131 "util/configparser.c"
     break;
 
-  case 548: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG  */
-#line 2931 "./util/configparser.y"
-        {
-               OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 552:
+#line 2949 "./util/configparser.y"
+    {
+               OUTYY(("P(for-downstream:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->auths->for_downstream =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6144 "util/configparser.c"
     break;
 
-  case 549: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG  */
-#line 2941 "./util/configparser.y"
-        {
-               OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 553:
+#line 2959 "./util/configparser.y"
+    {
+               OUTYY(("P(for-upstream:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->auths->for_upstream =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6157 "util/configparser.c"
     break;
 
-  case 550: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG  */
-#line 2951 "./util/configparser.y"
-        {
-               OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 554:
+#line 2969 "./util/configparser.y"
+    {
+               OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->auths->fallback_enabled =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6170 "util/configparser.c"
     break;
 
-  case 551: /* view_name: VAR_NAME STRING_ARG  */
-#line 2961 "./util/configparser.y"
-        {
-               OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
+  case 555:
+#line 2979 "./util/configparser.y"
+    {
+               OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->views->name)
                        yyerror("view name override, there must be one "
                                "name for one view");
                free(cfg_parser->cfg->views->name);
-               cfg_parser->cfg->views->name = (yyvsp[0].str);
-       }
-#line 6183 "util/configparser.c"
-    break;
-
-  case 552: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG  */
-#line 2971 "./util/configparser.y"
-        {
-               OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
-                  strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 &&
-                  strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0
-                  && strcmp((yyvsp[0].str), "typetransparent")!=0
-                  && strcmp((yyvsp[0].str), "always_transparent")!=0
-                  && strcmp((yyvsp[0].str), "always_refuse")!=0
-                  && strcmp((yyvsp[0].str), "always_nxdomain")!=0
-                  && strcmp((yyvsp[0].str), "always_nodata")!=0
-                  && strcmp((yyvsp[0].str), "always_deny")!=0
-                  && strcmp((yyvsp[0].str), "always_null")!=0
-                  && strcmp((yyvsp[0].str), "noview")!=0
-                  && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0
-                  && strcmp((yyvsp[0].str), "inform_redirect") != 0
-                  && strcmp((yyvsp[0].str), "ipset") != 0) {
+               cfg_parser->cfg->views->name = (yyvsp[(2) - (2)].str);
+       }
+    break;
+
+  case 556:
+#line 2989 "./util/configparser.y"
+    {
+               OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
+               if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 &&
+                  strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 && strcmp((yyvsp[(3) - (3)].str), "redirect")!=0 &&
+                  strcmp((yyvsp[(3) - (3)].str), "transparent")!=0 && strcmp((yyvsp[(3) - (3)].str), "nodefault")!=0
+                  && strcmp((yyvsp[(3) - (3)].str), "typetransparent")!=0
+                  && strcmp((yyvsp[(3) - (3)].str), "always_transparent")!=0
+                  && strcmp((yyvsp[(3) - (3)].str), "always_refuse")!=0
+                  && strcmp((yyvsp[(3) - (3)].str), "always_nxdomain")!=0
+                  && strcmp((yyvsp[(3) - (3)].str), "always_nodata")!=0
+                  && strcmp((yyvsp[(3) - (3)].str), "always_deny")!=0
+                  && strcmp((yyvsp[(3) - (3)].str), "always_null")!=0
+                  && strcmp((yyvsp[(3) - (3)].str), "noview")!=0
+                  && strcmp((yyvsp[(3) - (3)].str), "inform")!=0 && strcmp((yyvsp[(3) - (3)].str), "inform_deny")!=0
+                  && strcmp((yyvsp[(3) - (3)].str), "inform_redirect") != 0
+                  && strcmp((yyvsp[(3) - (3)].str), "ipset") != 0) {
                        yyerror("local-zone type: expected static, deny, "
                                "refuse, redirect, transparent, "
                                "typetransparent, inform, inform_deny, "
@@ -6207,82 +6442,78 @@ yyreduce:
                                "always_refuse, always_nxdomain, "
                                "always_nodata, always_deny, always_null, "
                                "noview, nodefault or ipset");
-                       free((yyvsp[-1].str));
-                       free((yyvsp[0].str));
-               } else if(strcmp((yyvsp[0].str), "nodefault")==0) {
+                       free((yyvsp[(2) - (3)].str));
+                       free((yyvsp[(3) - (3)].str));
+               } else if(strcmp((yyvsp[(3) - (3)].str), "nodefault")==0) {
                        if(!cfg_strlist_insert(&cfg_parser->cfg->views->
-                               local_zones_nodefault, (yyvsp[-1].str)))
+                               local_zones_nodefault, (yyvsp[(2) - (3)].str)))
                                fatal_exit("out of memory adding local-zone");
-                       free((yyvsp[0].str));
+                       free((yyvsp[(3) - (3)].str));
 #ifdef USE_IPSET
-               } else if(strcmp((yyvsp[0].str), "ipset")==0) {
-                       size_t len = strlen((yyvsp[-1].str));
+               } else if(strcmp((yyvsp[(3) - (3)].str), "ipset")==0) {
+                       size_t len = strlen((yyvsp[(2) - (3)].str));
                        /* Make sure to add the trailing dot.
                         * These are str compared to domain names. */
-                       if((yyvsp[-1].str)[len-1] != '.') {
-                               if(!((yyvsp[-1].str) = realloc((yyvsp[-1].str), len+2))) {
+                       if((yyvsp[(2) - (3)].str)[len-1] != '.') {
+                               if(!((yyvsp[(2) - (3)].str) = realloc((yyvsp[(2) - (3)].str), len+2))) {
                                        fatal_exit("out of memory adding local-zone");
                                }
-                               (yyvsp[-1].str)[len] = '.';
-                               (yyvsp[-1].str)[len+1] = 0;
+                               (yyvsp[(2) - (3)].str)[len] = '.';
+                               (yyvsp[(2) - (3)].str)[len+1] = 0;
                        }
                        if(!cfg_strlist_insert(&cfg_parser->cfg->views->
-                               local_zones_ipset, (yyvsp[-1].str)))
+                               local_zones_ipset, (yyvsp[(2) - (3)].str)))
                                fatal_exit("out of memory adding local-zone");
-                       free((yyvsp[0].str));
+                       free((yyvsp[(3) - (3)].str));
 #endif
                } else {
                        if(!cfg_str2list_insert(
                                &cfg_parser->cfg->views->local_zones,
-                               (yyvsp[-1].str), (yyvsp[0].str)))
+                               (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)))
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 6242 "util/configparser.c"
     break;
 
-  case 553: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG  */
-#line 3027 "./util/configparser.y"
-        {
-               OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
-               validate_respip_action((yyvsp[0].str));
+  case 557:
+#line 3045 "./util/configparser.y"
+    {
+               OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
+               validate_respip_action((yyvsp[(3) - (3)].str));
                if(!cfg_str2list_insert(
-                       &cfg_parser->cfg->views->respip_actions, (yyvsp[-1].str), (yyvsp[0].str)))
+                       &cfg_parser->cfg->views->respip_actions, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)))
                        fatal_exit("out of memory adding per-view "
                                "response-ip action");
        }
-#line 6255 "util/configparser.c"
     break;
 
-  case 554: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG  */
-#line 3037 "./util/configparser.y"
-        {
-               OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str)));
+  case 558:
+#line 3055 "./util/configparser.y"
+    {
+               OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[(2) - (3)].str)));
                if(!cfg_str2list_insert(
-                       &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str)))
+                       &cfg_parser->cfg->views->respip_data, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)))
                        fatal_exit("out of memory adding response-ip-data");
        }
-#line 6266 "util/configparser.c"
     break;
 
-  case 555: /* view_local_data: VAR_LOCAL_DATA STRING_ARG  */
-#line 3045 "./util/configparser.y"
-        {
-               OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) {
+  case 559:
+#line 3063 "./util/configparser.y"
+    {
+               OUTYY(("P(view_local_data:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[(2) - (2)].str))) {
                        fatal_exit("out of memory adding local-data");
                }
        }
-#line 6277 "util/configparser.c"
     break;
 
-  case 556: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG  */
-#line 3053 "./util/configparser.y"
-        {
+  case 560:
+#line 3071 "./util/configparser.y"
+    {
                char* ptr;
-               OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str)));
-               ptr = cfg_ptr_reverse((yyvsp[0].str));
-               free((yyvsp[0].str));
+               OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str)));
+               ptr = cfg_ptr_reverse((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
                if(ptr) {
                        if(!cfg_strlist_insert(&cfg_parser->cfg->views->
                                local_data, ptr))
@@ -6291,785 +6522,749 @@ yyreduce:
                        yyerror("local-data-ptr could not be reversed");
                }
        }
-#line 6295 "util/configparser.c"
     break;
 
-  case 557: /* view_first: VAR_VIEW_FIRST STRING_ARG  */
-#line 3068 "./util/configparser.y"
-        {
-               OUTYY(("P(view-first:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 561:
+#line 3086 "./util/configparser.y"
+    {
+               OUTYY(("P(view-first:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6307 "util/configparser.c"
     break;
 
-  case 558: /* rcstart: VAR_REMOTE_CONTROL  */
-#line 3077 "./util/configparser.y"
-        {
+  case 562:
+#line 3095 "./util/configparser.y"
+    {
                OUTYY(("\nP(remote-control:)\n"));
        }
-#line 6315 "util/configparser.c"
     break;
 
-  case 569: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG  */
-#line 3088 "./util/configparser.y"
-        {
-               OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 573:
+#line 3106 "./util/configparser.y"
+    {
+               OUTYY(("P(control_enable:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->remote_control_enable =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6328 "util/configparser.c"
     break;
 
-  case 570: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG  */
-#line 3098 "./util/configparser.y"
-        {
-               OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+  case 574:
+#line 3116 "./util/configparser.y"
+    {
+               OUTYY(("P(control_port:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0)
                        yyerror("control port number expected");
-               else cfg_parser->cfg->control_port = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->control_port = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6340 "util/configparser.c"
     break;
 
-  case 571: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG  */
-#line 3107 "./util/configparser.y"
-        {
-               OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str)))
+  case 575:
+#line 3125 "./util/configparser.y"
+    {
+               OUTYY(("P(control_interface:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[(2) - (2)].str)))
                        yyerror("out of memory");
        }
-#line 6350 "util/configparser.c"
     break;
 
-  case 572: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG  */
-#line 3114 "./util/configparser.y"
-        {
-               OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str)));
-               cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+  case 576:
+#line 3132 "./util/configparser.y"
+    {
+               OUTYY(("P(control_use_cert:%s)\n", (yyvsp[(2) - (2)].str)));
+               cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6360 "util/configparser.c"
     break;
 
-  case 573: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG  */
-#line 3121 "./util/configparser.y"
-        {
-               OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str)));
+  case 577:
+#line 3139 "./util/configparser.y"
+    {
+               OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->server_key_file);
-               cfg_parser->cfg->server_key_file = (yyvsp[0].str);
+               cfg_parser->cfg->server_key_file = (yyvsp[(2) - (2)].str);
        }
-#line 6370 "util/configparser.c"
     break;
 
-  case 574: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG  */
-#line 3128 "./util/configparser.y"
-        {
-               OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str)));
+  case 578:
+#line 3146 "./util/configparser.y"
+    {
+               OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->server_cert_file);
-               cfg_parser->cfg->server_cert_file = (yyvsp[0].str);
+               cfg_parser->cfg->server_cert_file = (yyvsp[(2) - (2)].str);
        }
-#line 6380 "util/configparser.c"
     break;
 
-  case 575: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG  */
-#line 3135 "./util/configparser.y"
-        {
-               OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str)));
+  case 579:
+#line 3153 "./util/configparser.y"
+    {
+               OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->control_key_file);
-               cfg_parser->cfg->control_key_file = (yyvsp[0].str);
+               cfg_parser->cfg->control_key_file = (yyvsp[(2) - (2)].str);
        }
-#line 6390 "util/configparser.c"
     break;
 
-  case 576: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG  */
-#line 3142 "./util/configparser.y"
-        {
-               OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str)));
+  case 580:
+#line 3160 "./util/configparser.y"
+    {
+               OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->control_cert_file);
-               cfg_parser->cfg->control_cert_file = (yyvsp[0].str);
+               cfg_parser->cfg->control_cert_file = (yyvsp[(2) - (2)].str);
        }
-#line 6400 "util/configparser.c"
     break;
 
-  case 577: /* dtstart: VAR_DNSTAP  */
-#line 3149 "./util/configparser.y"
-        {
+  case 581:
+#line 3167 "./util/configparser.y"
+    {
                OUTYY(("\nP(dnstap:)\n"));
        }
-#line 6408 "util/configparser.c"
     break;
 
-  case 599: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG  */
-#line 3169 "./util/configparser.y"
-        {
-               OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 603:
+#line 3187 "./util/configparser.y"
+    {
+               OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->dnstap = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6420 "util/configparser.c"
     break;
 
-  case 600: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG  */
-#line 3178 "./util/configparser.y"
-        {
-               OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 604:
+#line 3196 "./util/configparser.y"
+    {
+               OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_bidirectional =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6433 "util/configparser.c"
     break;
 
-  case 601: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG  */
-#line 3188 "./util/configparser.y"
-        {
-               OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str)));
+  case 605:
+#line 3206 "./util/configparser.y"
+    {
+               OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dnstap_socket_path);
-               cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str);
+               cfg_parser->cfg->dnstap_socket_path = (yyvsp[(2) - (2)].str);
        }
-#line 6443 "util/configparser.c"
     break;
 
-  case 602: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG  */
-#line 3195 "./util/configparser.y"
-        {
-               OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str)));
+  case 606:
+#line 3213 "./util/configparser.y"
+    {
+               OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dnstap_ip);
-               cfg_parser->cfg->dnstap_ip = (yyvsp[0].str);
+               cfg_parser->cfg->dnstap_ip = (yyvsp[(2) - (2)].str);
        }
-#line 6453 "util/configparser.c"
     break;
 
-  case 603: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG  */
-#line 3202 "./util/configparser.y"
-        {
-               OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 607:
+#line 3220 "./util/configparser.y"
+    {
+               OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6465 "util/configparser.c"
     break;
 
-  case 604: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG  */
-#line 3211 "./util/configparser.y"
-        {
-               OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str)));
+  case 608:
+#line 3229 "./util/configparser.y"
+    {
+               OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dnstap_tls_server_name);
-               cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str);
+               cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[(2) - (2)].str);
        }
-#line 6475 "util/configparser.c"
     break;
 
-  case 605: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG  */
-#line 3218 "./util/configparser.y"
-        {
-               OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
+  case 609:
+#line 3236 "./util/configparser.y"
+    {
+               OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dnstap_tls_cert_bundle);
-               cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str);
+               cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[(2) - (2)].str);
        }
-#line 6485 "util/configparser.c"
     break;
 
-  case 606: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG  */
-#line 3225 "./util/configparser.y"
-        {
-               OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str)));
+  case 610:
+#line 3243 "./util/configparser.y"
+    {
+               OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dnstap_tls_client_key_file);
-               cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str);
+               cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[(2) - (2)].str);
        }
-#line 6495 "util/configparser.c"
     break;
 
-  case 607: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG  */
-#line 3232 "./util/configparser.y"
-        {
-               OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str)));
+  case 611:
+#line 3250 "./util/configparser.y"
+    {
+               OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dnstap_tls_client_cert_file);
-               cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str);
+               cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[(2) - (2)].str);
        }
-#line 6505 "util/configparser.c"
     break;
 
-  case 608: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG  */
-#line 3239 "./util/configparser.y"
-        {
-               OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 612:
+#line 3257 "./util/configparser.y"
+    {
+               OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6517 "util/configparser.c"
     break;
 
-  case 609: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG  */
-#line 3248 "./util/configparser.y"
-        {
-               OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 613:
+#line 3266 "./util/configparser.y"
+    {
+               OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6529 "util/configparser.c"
     break;
 
-  case 610: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG  */
-#line 3257 "./util/configparser.y"
-        {
-               OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str)));
+  case 614:
+#line 3275 "./util/configparser.y"
+    {
+               OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dnstap_identity);
-               cfg_parser->cfg->dnstap_identity = (yyvsp[0].str);
+               cfg_parser->cfg->dnstap_identity = (yyvsp[(2) - (2)].str);
        }
-#line 6539 "util/configparser.c"
     break;
 
-  case 611: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG  */
-#line 3264 "./util/configparser.y"
-        {
-               OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str)));
+  case 615:
+#line 3282 "./util/configparser.y"
+    {
+               OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dnstap_version);
-               cfg_parser->cfg->dnstap_version = (yyvsp[0].str);
+               cfg_parser->cfg->dnstap_version = (yyvsp[(2) - (2)].str);
        }
-#line 6549 "util/configparser.c"
     break;
 
-  case 612: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG  */
-#line 3271 "./util/configparser.y"
-        {
-               OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 616:
+#line 3289 "./util/configparser.y"
+    {
+               OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_log_resolver_query_messages =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6562 "util/configparser.c"
     break;
 
-  case 613: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG  */
-#line 3281 "./util/configparser.y"
-        {
-               OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 617:
+#line 3299 "./util/configparser.y"
+    {
+               OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_log_resolver_response_messages =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6575 "util/configparser.c"
     break;
 
-  case 614: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG  */
-#line 3291 "./util/configparser.y"
-        {
-               OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 618:
+#line 3309 "./util/configparser.y"
+    {
+               OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_log_client_query_messages =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6588 "util/configparser.c"
     break;
 
-  case 615: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG  */
-#line 3301 "./util/configparser.y"
-        {
-               OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 619:
+#line 3319 "./util/configparser.y"
+    {
+               OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_log_client_response_messages =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6601 "util/configparser.c"
     break;
 
-  case 616: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG  */
-#line 3311 "./util/configparser.y"
-        {
-               OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 620:
+#line 3329 "./util/configparser.y"
+    {
+               OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_log_forwarder_query_messages =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6614 "util/configparser.c"
     break;
 
-  case 617: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG  */
-#line 3321 "./util/configparser.y"
-        {
-               OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 621:
+#line 3339 "./util/configparser.y"
+    {
+               OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_log_forwarder_response_messages =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6627 "util/configparser.c"
     break;
 
-  case 618: /* pythonstart: VAR_PYTHON  */
-#line 3331 "./util/configparser.y"
-        {
+  case 622:
+#line 3349 "./util/configparser.y"
+    {
                OUTYY(("\nP(python:)\n"));
        }
-#line 6635 "util/configparser.c"
     break;
 
-  case 622: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG  */
-#line 3340 "./util/configparser.y"
-        {
-               OUTYY(("P(python-script:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str)))
+  case 626:
+#line 3358 "./util/configparser.y"
+    {
+               OUTYY(("P(python-script:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[(2) - (2)].str)))
                        yyerror("out of memory");
        }
-#line 6645 "util/configparser.c"
     break;
 
-  case 623: /* dynlibstart: VAR_DYNLIB  */
-#line 3346 "./util/configparser.y"
-        
+  case 627:
+#line 3364 "./util/configparser.y"
+    { 
                OUTYY(("\nP(dynlib:)\n")); 
        }
-#line 6653 "util/configparser.c"
     break;
 
-  case 627: /* dl_file: VAR_DYNLIB_FILE STRING_ARG  */
-#line 3355 "./util/configparser.y"
-        {
-               OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str)))
+  case 631:
+#line 3373 "./util/configparser.y"
+    {
+               OUTYY(("P(dynlib-file:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[(2) - (2)].str)))
                        yyerror("out of memory");
        }
-#line 6663 "util/configparser.c"
     break;
 
-  case 628: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG  */
-#line 3361 "./util/configparser.y"
-        {
-               OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str)));
-               if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 632:
+#line 3379 "./util/configparser.y"
+    {
+               OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[(2) - (2)].str)));
+               if (strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->disable_dnssec_lame_check =
-                       (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6676 "util/configparser.c"
     break;
 
-  case 629: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG  */
-#line 3371 "./util/configparser.y"
-        {
-               OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str)));
+  case 633:
+#line 3389 "./util/configparser.y"
+    {
+               OUTYY(("P(server_log_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->log_identity);
-               cfg_parser->cfg->log_identity = (yyvsp[0].str);
+               cfg_parser->cfg->log_identity = (yyvsp[(2) - (2)].str);
        }
-#line 6686 "util/configparser.c"
     break;
 
-  case 630: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG  */
-#line 3378 "./util/configparser.y"
-        {
-               OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
-               validate_respip_action((yyvsp[0].str));
+  case 634:
+#line 3396 "./util/configparser.y"
+    {
+               OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
+               validate_respip_action((yyvsp[(3) - (3)].str));
                if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions,
-                       (yyvsp[-1].str), (yyvsp[0].str)))
+                       (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)))
                        fatal_exit("out of memory adding response-ip");
        }
-#line 6698 "util/configparser.c"
     break;
 
-  case 631: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG  */
-#line 3387 "./util/configparser.y"
-        {
-               OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str)));
+  case 635:
+#line 3405 "./util/configparser.y"
+    {
+               OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[(2) - (3)].str)));
                if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data,
-                       (yyvsp[-1].str), (yyvsp[0].str)))
+                       (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)))
                        fatal_exit("out of memory adding response-ip-data");
        }
-#line 6709 "util/configparser.c"
     break;
 
-  case 632: /* dnscstart: VAR_DNSCRYPT  */
-#line 3395 "./util/configparser.y"
-        {
+  case 636:
+#line 3413 "./util/configparser.y"
+    {
                OUTYY(("\nP(dnscrypt:)\n"));
        }
-#line 6717 "util/configparser.c"
     break;
 
-  case 645: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG  */
-#line 3411 "./util/configparser.y"
-        {
-               OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+  case 649:
+#line 3429 "./util/configparser.y"
+    {
+               OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0);
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6729 "util/configparser.c"
     break;
 
-  case 646: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG  */
-#line 3421 "./util/configparser.y"
-        {
-               OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+  case 650:
+#line 3439 "./util/configparser.y"
+    {
+               OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0)
                        yyerror("port number expected");
-               else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str));
-               free((yyvsp[0].str));
+               else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[(2) - (2)].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6741 "util/configparser.c"
     break;
 
-  case 647: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG  */
-#line 3430 "./util/configparser.y"
-        {
-               OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str)));
+  case 651:
+#line 3448 "./util/configparser.y"
+    {
+               OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dnscrypt_provider);
-               cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str);
+               cfg_parser->cfg->dnscrypt_provider = (yyvsp[(2) - (2)].str);
        }
-#line 6751 "util/configparser.c"
     break;
 
-  case 648: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG  */
-#line 3437 "./util/configparser.y"
-        {
-               OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str)));
-               if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
-                       log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[0].str));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
+  case 652:
+#line 3455 "./util/configparser.y"
+    {
+               OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[(2) - (2)].str)))
+                       log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[(2) - (2)].str));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[(2) - (2)].str)))
                        fatal_exit("out of memory adding dnscrypt-provider-cert");
        }
-#line 6763 "util/configparser.c"
     break;
 
-  case 649: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG  */
-#line 3446 "./util/configparser.y"
-        {
-               OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str)));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str)))
+  case 653:
+#line 3464 "./util/configparser.y"
+    {
+               OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[(2) - (2)].str)))
                        fatal_exit("out of memory adding dnscrypt-provider-cert-rotated");
        }
-#line 6773 "util/configparser.c"
     break;
 
-  case 650: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG  */
-#line 3453 "./util/configparser.y"
-        {
-               OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str)));
-               if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
-                       log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[0].str));
-               if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
+  case 654:
+#line 3471 "./util/configparser.y"
+    {
+               OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[(2) - (2)].str)))
+                       log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[(2) - (2)].str));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[(2) - (2)].str)))
                        fatal_exit("out of memory adding dnscrypt-secret-key");
        }
-#line 6785 "util/configparser.c"
     break;
 
-  case 651: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG  */
-#line 3462 "./util/configparser.y"
-  {
-       OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str)));
-       if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size))
+  case 655:
+#line 3480 "./util/configparser.y"
+    {
+       OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
+       if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size))
                yyerror("memory size expected");
-       free((yyvsp[0].str));
+       free((yyvsp[(2) - (2)].str));
   }
-#line 6796 "util/configparser.c"
     break;
 
-  case 652: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG  */
-#line 3470 "./util/configparser.y"
-  {
-       OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str)));
-       if(atoi((yyvsp[0].str)) == 0) {
+  case 656:
+#line 3488 "./util/configparser.y"
+    {
+       OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
+       if(atoi((yyvsp[(2) - (2)].str)) == 0) {
                yyerror("number expected");
        } else {
-               cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi((yyvsp[0].str));
+               cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi((yyvsp[(2) - (2)].str));
                if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs))
                        yyerror("must be a power of 2");
        }
-       free((yyvsp[0].str));
+       free((yyvsp[(2) - (2)].str));
   }
-#line 6812 "util/configparser.c"
     break;
 
-  case 653: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG  */
-#line 3483 "./util/configparser.y"
-  {
-       OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str)));
-       if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size))
+  case 657:
+#line 3501 "./util/configparser.y"
+    {
+       OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
+       if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size))
                yyerror("memory size expected");
-       free((yyvsp[0].str));
+       free((yyvsp[(2) - (2)].str));
   }
-#line 6823 "util/configparser.c"
     break;
 
-  case 654: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG  */
-#line 3491 "./util/configparser.y"
-  {
-       OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str)));
-       if(atoi((yyvsp[0].str)) == 0) {
+  case 658:
+#line 3509 "./util/configparser.y"
+    {
+       OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
+       if(atoi((yyvsp[(2) - (2)].str)) == 0) {
                yyerror("number expected");
        } else {
-               cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi((yyvsp[0].str));
+               cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi((yyvsp[(2) - (2)].str));
                if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs))
                        yyerror("must be a power of 2");
        }
-       free((yyvsp[0].str));
+       free((yyvsp[(2) - (2)].str));
   }
-#line 6839 "util/configparser.c"
     break;
 
-  case 655: /* cachedbstart: VAR_CACHEDB  */
-#line 3504 "./util/configparser.y"
-        {
+  case 659:
+#line 3522 "./util/configparser.y"
+    {
                OUTYY(("\nP(cachedb:)\n"));
        }
-#line 6847 "util/configparser.c"
     break;
 
-  case 664: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG  */
-#line 3515 "./util/configparser.y"
-        {
+  case 668:
+#line 3533 "./util/configparser.y"
+    {
        #ifdef USE_CACHEDB
-               OUTYY(("P(backend:%s)\n", (yyvsp[0].str)));
+               OUTYY(("P(backend:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->cachedb_backend);
-               cfg_parser->cfg->cachedb_backend = (yyvsp[0].str);
+               cfg_parser->cfg->cachedb_backend = (yyvsp[(2) - (2)].str);
        #else
                OUTYY(("P(Compiled without cachedb, ignoring)\n"));
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        #endif
        }
-#line 6862 "util/configparser.c"
     break;
 
-  case 665: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG  */
-#line 3527 "./util/configparser.y"
-        {
+  case 669:
+#line 3545 "./util/configparser.y"
+    {
        #ifdef USE_CACHEDB
-               OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str)));
+               OUTYY(("P(secret-seed:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->cachedb_secret);
-               cfg_parser->cfg->cachedb_secret = (yyvsp[0].str);
+               cfg_parser->cfg->cachedb_secret = (yyvsp[(2) - (2)].str);
        #else
                OUTYY(("P(Compiled without cachedb, ignoring)\n"));
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        #endif
        }
-#line 6877 "util/configparser.c"
     break;
 
-  case 666: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG  */
-#line 3539 "./util/configparser.y"
-        {
+  case 670:
+#line 3557 "./util/configparser.y"
+    {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
-               OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str)));
+               OUTYY(("P(redis_server_host:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->redis_server_host);
-               cfg_parser->cfg->redis_server_host = (yyvsp[0].str);
+               cfg_parser->cfg->redis_server_host = (yyvsp[(2) - (2)].str);
        #else
                OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        #endif
        }
-#line 6892 "util/configparser.c"
     break;
 
-  case 667: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG  */
-#line 3551 "./util/configparser.y"
-        {
+  case 671:
+#line 3569 "./util/configparser.y"
+    {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
                int port;
-               OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str)));
-               port = atoi((yyvsp[0].str));
+               OUTYY(("P(redis_server_port:%s)\n", (yyvsp[(2) - (2)].str)));
+               port = atoi((yyvsp[(2) - (2)].str));
                if(port == 0 || port < 0 || port > 65535)
                        yyerror("valid redis server port number expected");
                else cfg_parser->cfg->redis_server_port = port;
        #else
                OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6910 "util/configparser.c"
     break;
 
-  case 668: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG  */
-#line 3566 "./util/configparser.y"
-        {
+  case 672:
+#line 3584 "./util/configparser.y"
+    {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
-               OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str)));
-               if(atoi((yyvsp[0].str)) == 0)
+               OUTYY(("P(redis_timeout:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(atoi((yyvsp[(2) - (2)].str)) == 0)
                        yyerror("redis timeout value expected");
-               else cfg_parser->cfg->redis_timeout = atoi((yyvsp[0].str));
+               else cfg_parser->cfg->redis_timeout = atoi((yyvsp[(2) - (2)].str));
        #else
                OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6926 "util/configparser.c"
     break;
 
-  case 669: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG  */
-#line 3579 "./util/configparser.y"
-        {
+  case 673:
+#line 3597 "./util/configparser.y"
+    {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
-               OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str)));
-               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+               OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
                        yyerror("expected yes or no.");
-               else cfg_parser->cfg->redis_expire_records = (strcmp((yyvsp[0].str), "yes")==0);
+               else cfg_parser->cfg->redis_expire_records = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
        #else
                OUTYY(("P(Compiled without cachedb or redis, ignoring)\n"));
        #endif
-               free((yyvsp[0].str));
+               free((yyvsp[(2) - (2)].str));
        }
-#line 6942 "util/configparser.c"
     break;
 
-  case 670: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG  */
-#line 3592 "./util/configparser.y"
-        {
-               OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
-               if (atoi((yyvsp[0].str)) < 0)
+  case 674:
+#line 3610 "./util/configparser.y"
+    {
+               OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
+               if (atoi((yyvsp[(3) - (3)].str)) < 0)
                        yyerror("positive number expected");
                else {
-                       if(!cfg_str2list_insert(&cfg_parser->cfg->tcp_connection_limits, (yyvsp[-1].str), (yyvsp[0].str)))
+                       if(!cfg_str2list_insert(&cfg_parser->cfg->tcp_connection_limits, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)))
                                fatal_exit("out of memory adding tcp connection limit");
                }
        }
-#line 6956 "util/configparser.c"
     break;
 
-  case 671: /* ipsetstart: VAR_IPSET  */
-#line 3603 "./util/configparser.y"
-                {
+  case 675:
+#line 3621 "./util/configparser.y"
+    {
                        OUTYY(("\nP(ipset:)\n"));
                }
-#line 6964 "util/configparser.c"
     break;
 
-  case 676: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG  */
-#line 3612 "./util/configparser.y"
-                {
+  case 680:
+#line 3630 "./util/configparser.y"
+    {
                #ifdef USE_IPSET
-                       OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str)));
+                       OUTYY(("P(name-v4:%s)\n", (yyvsp[(2) - (2)].str)));
                        if(cfg_parser->cfg->ipset_name_v4)
                                yyerror("ipset name v4 override, there must be one "
                                        "name for ip v4");
                        free(cfg_parser->cfg->ipset_name_v4);
-                       cfg_parser->cfg->ipset_name_v4 = (yyvsp[0].str);
+                       cfg_parser->cfg->ipset_name_v4 = (yyvsp[(2) - (2)].str);
                #else
                        OUTYY(("P(Compiled without ipset, ignoring)\n"));
-                       free((yyvsp[0].str));
+                       free((yyvsp[(2) - (2)].str));
                #endif
                }
-#line 6982 "util/configparser.c"
     break;
 
-  case 677: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG  */
-#line 3627 "./util/configparser.y"
-        {
+  case 681:
+#line 3645 "./util/configparser.y"
+    {
                #ifdef USE_IPSET
-                       OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str)));
+                       OUTYY(("P(name-v6:%s)\n", (yyvsp[(2) - (2)].str)));
                        if(cfg_parser->cfg->ipset_name_v6)
                                yyerror("ipset name v6 override, there must be one "
                                        "name for ip v6");
                        free(cfg_parser->cfg->ipset_name_v6);
-                       cfg_parser->cfg->ipset_name_v6 = (yyvsp[0].str);
+                       cfg_parser->cfg->ipset_name_v6 = (yyvsp[(2) - (2)].str);
                #else
                        OUTYY(("P(Compiled without ipset, ignoring)\n"));
-                       free((yyvsp[0].str));
+                       free((yyvsp[(2) - (2)].str));
                #endif
                }
-#line 7000 "util/configparser.c"
     break;
 
 
-#line 7004 "util/configparser.c"
-
+/* Line 1267 of yacc.c.  */
+#line 7175 "util/configparser.c"
       default: break;
     }
-  /* User semantic actions sometimes alter yychar, and that requires
-     that yytoken be updated with the new translation.  We take the
-     approach of translating immediately before every use of yytoken.
-     One alternative is translating here after every semantic action,
-     but that translation would be missed if the semantic action invokes
-     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
-     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
-     incorrect destructor might then be invoked immediately.  In the
-     case of YYERROR or YYBACKUP, subsequent parser actions might lead
-     to an incorrect destructor call or verbose syntax error message
-     before the lookahead is translated.  */
-  YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
+  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
 
   YYPOPSTACK (yylen);
   yylen = 0;
+  YY_STACK_PRINT (yyss, yyssp);
 
   *++yyvsp = yyval;
 
-  /* Now 'shift' the result of the reduction.  Determine what state
+
+  /* Now `shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
-  {
-    const int yylhs = yyr1[yyn] - YYNTOKENS;
-    const int yyi = yypgoto[yylhs] + *yyssp;
-    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
-               ? yytable[yyi]
-               : yydefgoto[yylhs]);
-  }
+
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTOKENS];
 
   goto yynewstate;
 
 
-/*--------------------------------------.
-| yyerrlab -- here on detecting error |
-`--------------------------------------*/
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
 yyerrlab:
-  /* Make sure we have latest lookahead translation.  See comments at
-     user semantic actions for why this is necessary.  */
-  yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
   /* If not already recovering from an error, report this error.  */
   if (!yyerrstatus)
     {
       ++yynerrs;
+#if ! YYERROR_VERBOSE
       yyerror (YY_("syntax error"));
+#else
+      {
+       YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
+       if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
+         {
+           YYSIZE_T yyalloc = 2 * yysize;
+           if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
+             yyalloc = YYSTACK_ALLOC_MAXIMUM;
+           if (yymsg != yymsgbuf)
+             YYSTACK_FREE (yymsg);
+           yymsg = (char *) YYSTACK_ALLOC (yyalloc);
+           if (yymsg)
+             yymsg_alloc = yyalloc;
+           else
+             {
+               yymsg = yymsgbuf;
+               yymsg_alloc = sizeof yymsgbuf;
+             }
+         }
+
+       if (0 < yysize && yysize <= yymsg_alloc)
+         {
+           (void) yysyntax_error (yymsg, yystate, yychar);
+           yyerror (yymsg);
+         }
+       else
+         {
+           yyerror (YY_("syntax error"));
+           if (yysize != 0)
+             goto yyexhaustedlab;
+         }
+      }
+#endif
     }
 
+
+
   if (yyerrstatus == 3)
     {
-      /* If just tried and failed to reuse lookahead token after an
-         error, discard it.  */
+      /* If just tried and failed to reuse look-ahead token after an
+        error, discard it.  */
 
       if (yychar <= YYEOF)
-        {
-          /* Return failure if at end of input.  */
-          if (yychar == YYEOF)
-            YYABORT;
-        }
+       {
+         /* Return failure if at end of input.  */
+         if (yychar == YYEOF)
+           YYABORT;
+       }
       else
-        {
-          yydestruct ("Error: discarding",
-                      yytoken, &yylval);
-          yychar = YYEMPTY;
-        }
+       {
+         yydestruct ("Error: discarding",
+                     yytoken, &yylval);
+         yychar = YYEMPTY;
+       }
     }
 
-  /* Else will try to reuse lookahead token after shifting the error
+  /* Else will try to reuse look-ahead token after shifting the error
      token.  */
   goto yyerrlab1;
 
@@ -7078,12 +7273,14 @@ yyerrlab:
 | yyerrorlab -- error raised explicitly by YYERROR.  |
 `---------------------------------------------------*/
 yyerrorlab:
-  /* Pacify compilers when the user code never invokes YYERROR and the
-     label yyerrorlab therefore never appears in user code.  */
-  if (0)
-    YYERROR;
 
-  /* Do not reclaim the symbols of the rule whose action triggered
+  /* Pacify compilers like GCC when the user code never invokes
+     YYERROR and the label yyerrorlab therefore never appears in user
+     code.  */
+  if (/*CONSTCOND*/ 0)
+     goto yyerrorlab;
+
+  /* Do not reclaim the symbols of the rule which action triggered
      this YYERROR.  */
   YYPOPSTACK (yylen);
   yylen = 0;
@@ -7096,42 +7293,42 @@ yyerrorlab:
 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
 `-------------------------------------------------------------*/
 yyerrlab1:
-  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
+  yyerrstatus = 3;     /* Each real token shifted decrements this.  */
 
-  /* Pop stack until we find a state that shifts the error token.  */
   for (;;)
     {
       yyn = yypact[yystate];
-      if (!yypact_value_is_default (yyn))
-        {
-          yyn += YYSYMBOL_YYerror;
-          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
-            {
-              yyn = yytable[yyn];
-              if (0 < yyn)
-                break;
-            }
-        }
+      if (yyn != YYPACT_NINF)
+       {
+         yyn += YYTERROR;
+         if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+           {
+             yyn = yytable[yyn];
+             if (0 < yyn)
+               break;
+           }
+       }
 
       /* Pop the current state because it cannot handle the error token.  */
       if (yyssp == yyss)
-        YYABORT;
+       YYABORT;
 
 
       yydestruct ("Error: popping",
-                  YY_ACCESSING_SYMBOL (yystate), yyvsp);
+                 yystos[yystate], yyvsp);
       YYPOPSTACK (1);
       yystate = *yyssp;
       YY_STACK_PRINT (yyss, yyssp);
     }
 
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
   *++yyvsp = yylval;
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
 
   /* Shift the error token.  */
-  YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
 
   yystate = yyn;
   goto yynewstate;
@@ -7144,7 +7341,6 @@ yyacceptlab:
   yyresult = 0;
   goto yyreturn;
 
-
 /*-----------------------------------.
 | yyabortlab -- YYABORT comes here.  |
 `-----------------------------------*/
@@ -7152,49 +7348,44 @@ yyabortlab:
   yyresult = 1;
   goto yyreturn;
 
-
-#if !defined yyoverflow
+#ifndef yyoverflow
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
 yyexhaustedlab:
   yyerror (YY_("memory exhausted"));
   yyresult = 2;
-  goto yyreturn;
+  /* Fall through.  */
 #endif
 
-
-/*-------------------------------------------------------.
-| yyreturn -- parsing is finished, clean up and return.  |
-`-------------------------------------------------------*/
 yyreturn:
-  if (yychar != YYEMPTY)
-    {
-      /* Make sure we have latest lookahead translation.  See comments at
-         user semantic actions for why this is necessary.  */
-      yytoken = YYTRANSLATE (yychar);
-      yydestruct ("Cleanup: discarding lookahead",
-                  yytoken, &yylval);
-    }
-  /* Do not reclaim the symbols of the rule whose action triggered
+  if (yychar != YYEOF && yychar != YYEMPTY)
+     yydestruct ("Cleanup: discarding lookahead",
+                yytoken, &yylval);
+  /* Do not reclaim the symbols of the rule which action triggered
      this YYABORT or YYACCEPT.  */
   YYPOPSTACK (yylen);
   YY_STACK_PRINT (yyss, yyssp);
   while (yyssp != yyss)
     {
       yydestruct ("Cleanup: popping",
-                  YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
+                 yystos[*yyssp], yyvsp);
       YYPOPSTACK (1);
     }
 #ifndef yyoverflow
   if (yyss != yyssa)
     YYSTACK_FREE (yyss);
 #endif
-
-  return yyresult;
+#if YYERROR_VERBOSE
+  if (yymsg != yymsgbuf)
+    YYSTACK_FREE (yymsg);
+#endif
+  /* Make sure YYID is used.  */
+  return YYID (yyresult);
 }
 
-#line 3641 "./util/configparser.y"
+
+#line 3659 "./util/configparser.y"
 
 
 /* parse helper routines could be here */
@@ -7216,3 +7407,4 @@ validate_respip_action(const char* action)
 }
 
 
+
index c299937c8d770a1c327fa3fa38f7567c3b76e445..d89bd3be60752de3dfe018d404c1c49a4fb50f51 100644 (file)
@@ -1,14 +1,14 @@
-/* A Bison parser, made by GNU Bison 3.7.6.  */
+/* A Bison parser, made by GNU Bison 2.3.  */
 
-/* Bison interface for Yacc-like parsers in C
+/* Skeleton interface for Bison's Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
-   Inc.
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+   Free Software Foundation, Inc.
 
-   This program is free software: you can redistribute it and/or modify
+   This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -16,7 +16,9 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
-/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
-   especially those whose name start with YY_ or yy_.  They are
-   private implementation details that can be changed or removed.  */
-
-#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
-# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
-/* Debug traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-#if YYDEBUG
-extern int yydebug;
-#endif
-
-/* Token kinds.  */
+/* Tokens.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
-  enum yytokentype
-  {
-    YYEMPTY = -2,
-    YYEOF = 0,                     /* "end of file"  */
-    YYerror = 256,                 /* error  */
-    YYUNDEF = 257,                 /* "invalid token"  */
-    SPACE = 258,                   /* SPACE  */
-    LETTER = 259,                  /* LETTER  */
-    NEWLINE = 260,                 /* NEWLINE  */
-    COMMENT = 261,                 /* COMMENT  */
-    COLON = 262,                   /* COLON  */
-    ANY = 263,                     /* ANY  */
-    ZONESTR = 264,                 /* ZONESTR  */
-    STRING_ARG = 265,              /* STRING_ARG  */
-    VAR_FORCE_TOPLEVEL = 266,      /* VAR_FORCE_TOPLEVEL  */
-    VAR_SERVER = 267,              /* VAR_SERVER  */
-    VAR_VERBOSITY = 268,           /* VAR_VERBOSITY  */
-    VAR_NUM_THREADS = 269,         /* VAR_NUM_THREADS  */
-    VAR_PORT = 270,                /* VAR_PORT  */
-    VAR_OUTGOING_RANGE = 271,      /* VAR_OUTGOING_RANGE  */
-    VAR_INTERFACE = 272,           /* VAR_INTERFACE  */
-    VAR_PREFER_IP4 = 273,          /* VAR_PREFER_IP4  */
-    VAR_DO_IP4 = 274,              /* VAR_DO_IP4  */
-    VAR_DO_IP6 = 275,              /* VAR_DO_IP6  */
-    VAR_PREFER_IP6 = 276,          /* VAR_PREFER_IP6  */
-    VAR_DO_UDP = 277,              /* VAR_DO_UDP  */
-    VAR_DO_TCP = 278,              /* VAR_DO_TCP  */
-    VAR_TCP_MSS = 279,             /* VAR_TCP_MSS  */
-    VAR_OUTGOING_TCP_MSS = 280,    /* VAR_OUTGOING_TCP_MSS  */
-    VAR_TCP_IDLE_TIMEOUT = 281,    /* VAR_TCP_IDLE_TIMEOUT  */
-    VAR_EDNS_TCP_KEEPALIVE = 282,  /* VAR_EDNS_TCP_KEEPALIVE  */
-    VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT  */
-    VAR_CHROOT = 284,              /* VAR_CHROOT  */
-    VAR_USERNAME = 285,            /* VAR_USERNAME  */
-    VAR_DIRECTORY = 286,           /* VAR_DIRECTORY  */
-    VAR_LOGFILE = 287,             /* VAR_LOGFILE  */
-    VAR_PIDFILE = 288,             /* VAR_PIDFILE  */
-    VAR_MSG_CACHE_SIZE = 289,      /* VAR_MSG_CACHE_SIZE  */
-    VAR_MSG_CACHE_SLABS = 290,     /* VAR_MSG_CACHE_SLABS  */
-    VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD  */
-    VAR_RRSET_CACHE_SIZE = 292,    /* VAR_RRSET_CACHE_SIZE  */
-    VAR_RRSET_CACHE_SLABS = 293,   /* VAR_RRSET_CACHE_SLABS  */
-    VAR_OUTGOING_NUM_TCP = 294,    /* VAR_OUTGOING_NUM_TCP  */
-    VAR_INFRA_HOST_TTL = 295,      /* VAR_INFRA_HOST_TTL  */
-    VAR_INFRA_LAME_TTL = 296,      /* VAR_INFRA_LAME_TTL  */
-    VAR_INFRA_CACHE_SLABS = 297,   /* VAR_INFRA_CACHE_SLABS  */
-    VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS  */
-    VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE  */
-    VAR_NAME = 300,                /* VAR_NAME  */
-    VAR_STUB_ZONE = 301,           /* VAR_STUB_ZONE  */
-    VAR_STUB_HOST = 302,           /* VAR_STUB_HOST  */
-    VAR_STUB_ADDR = 303,           /* VAR_STUB_ADDR  */
-    VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY  */
-    VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE  */
-    VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES  */
-    VAR_FORWARD_ZONE = 307,        /* VAR_FORWARD_ZONE  */
-    VAR_FORWARD_HOST = 308,        /* VAR_FORWARD_HOST  */
-    VAR_FORWARD_ADDR = 309,        /* VAR_FORWARD_ADDR  */
-    VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS  */
-    VAR_HIDE_IDENTITY = 311,       /* VAR_HIDE_IDENTITY  */
-    VAR_HIDE_VERSION = 312,        /* VAR_HIDE_VERSION  */
-    VAR_IDENTITY = 313,            /* VAR_IDENTITY  */
-    VAR_VERSION = 314,             /* VAR_VERSION  */
-    VAR_HARDEN_GLUE = 315,         /* VAR_HARDEN_GLUE  */
-    VAR_MODULE_CONF = 316,         /* VAR_MODULE_CONF  */
-    VAR_TRUST_ANCHOR_FILE = 317,   /* VAR_TRUST_ANCHOR_FILE  */
-    VAR_TRUST_ANCHOR = 318,        /* VAR_TRUST_ANCHOR  */
-    VAR_VAL_OVERRIDE_DATE = 319,   /* VAR_VAL_OVERRIDE_DATE  */
-    VAR_BOGUS_TTL = 320,           /* VAR_BOGUS_TTL  */
-    VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL  */
-    VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE  */
-    VAR_INCOMING_NUM_TCP = 323,    /* VAR_INCOMING_NUM_TCP  */
-    VAR_MSG_BUFFER_SIZE = 324,     /* VAR_MSG_BUFFER_SIZE  */
-    VAR_KEY_CACHE_SIZE = 325,      /* VAR_KEY_CACHE_SIZE  */
-    VAR_KEY_CACHE_SLABS = 326,     /* VAR_KEY_CACHE_SLABS  */
-    VAR_TRUSTED_KEYS_FILE = 327,   /* VAR_TRUSTED_KEYS_FILE  */
-    VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS  */
-    VAR_USE_SYSLOG = 329,          /* VAR_USE_SYSLOG  */
-    VAR_OUTGOING_INTERFACE = 330,  /* VAR_OUTGOING_INTERFACE  */
-    VAR_ROOT_HINTS = 331,          /* VAR_ROOT_HINTS  */
-    VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST  */
-    VAR_CACHE_MAX_TTL = 333,       /* VAR_CACHE_MAX_TTL  */
-    VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED  */
-    VAR_ACCESS_CONTROL = 335,      /* VAR_ACCESS_CONTROL  */
-    VAR_LOCAL_ZONE = 336,          /* VAR_LOCAL_ZONE  */
-    VAR_LOCAL_DATA = 337,          /* VAR_LOCAL_DATA  */
-    VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC  */
-    VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL  */
-    VAR_DO_DAEMONIZE = 340,        /* VAR_DO_DAEMONIZE  */
-    VAR_USE_CAPS_FOR_ID = 341,     /* VAR_USE_CAPS_FOR_ID  */
-    VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE  */
-    VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT  */
-    VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID  */
-    VAR_DLV_ANCHOR_FILE = 345,     /* VAR_DLV_ANCHOR_FILE  */
-    VAR_DLV_ANCHOR = 346,          /* VAR_DLV_ANCHOR  */
-    VAR_NEG_CACHE_SIZE = 347,      /* VAR_NEG_CACHE_SIZE  */
-    VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH  */
-    VAR_PRIVATE_ADDRESS = 349,     /* VAR_PRIVATE_ADDRESS  */
-    VAR_PRIVATE_DOMAIN = 350,      /* VAR_PRIVATE_DOMAIN  */
-    VAR_REMOTE_CONTROL = 351,      /* VAR_REMOTE_CONTROL  */
-    VAR_CONTROL_ENABLE = 352,      /* VAR_CONTROL_ENABLE  */
-    VAR_CONTROL_INTERFACE = 353,   /* VAR_CONTROL_INTERFACE  */
-    VAR_CONTROL_PORT = 354,        /* VAR_CONTROL_PORT  */
-    VAR_SERVER_KEY_FILE = 355,     /* VAR_SERVER_KEY_FILE  */
-    VAR_SERVER_CERT_FILE = 356,    /* VAR_SERVER_CERT_FILE  */
-    VAR_CONTROL_KEY_FILE = 357,    /* VAR_CONTROL_KEY_FILE  */
-    VAR_CONTROL_CERT_FILE = 358,   /* VAR_CONTROL_CERT_FILE  */
-    VAR_CONTROL_USE_CERT = 359,    /* VAR_CONTROL_USE_CERT  */
-    VAR_TCP_REUSE_TIMEOUT = 360,   /* VAR_TCP_REUSE_TIMEOUT  */
-    VAR_MAX_REUSE_TCP_QUERIES = 361, /* VAR_MAX_REUSE_TCP_QUERIES  */
-    VAR_EXTENDED_STATISTICS = 362, /* VAR_EXTENDED_STATISTICS  */
-    VAR_LOCAL_DATA_PTR = 363,      /* VAR_LOCAL_DATA_PTR  */
-    VAR_JOSTLE_TIMEOUT = 364,      /* VAR_JOSTLE_TIMEOUT  */
-    VAR_STUB_PRIME = 365,          /* VAR_STUB_PRIME  */
-    VAR_UNWANTED_REPLY_THRESHOLD = 366, /* VAR_UNWANTED_REPLY_THRESHOLD  */
-    VAR_LOG_TIME_ASCII = 367,      /* VAR_LOG_TIME_ASCII  */
-    VAR_DOMAIN_INSECURE = 368,     /* VAR_DOMAIN_INSECURE  */
-    VAR_PYTHON = 369,              /* VAR_PYTHON  */
-    VAR_PYTHON_SCRIPT = 370,       /* VAR_PYTHON_SCRIPT  */
-    VAR_VAL_SIG_SKEW_MIN = 371,    /* VAR_VAL_SIG_SKEW_MIN  */
-    VAR_VAL_SIG_SKEW_MAX = 372,    /* VAR_VAL_SIG_SKEW_MAX  */
-    VAR_VAL_MAX_RESTART = 373,     /* VAR_VAL_MAX_RESTART  */
-    VAR_CACHE_MIN_TTL = 374,       /* VAR_CACHE_MIN_TTL  */
-    VAR_VAL_LOG_LEVEL = 375,       /* VAR_VAL_LOG_LEVEL  */
-    VAR_AUTO_TRUST_ANCHOR_FILE = 376, /* VAR_AUTO_TRUST_ANCHOR_FILE  */
-    VAR_KEEP_MISSING = 377,        /* VAR_KEEP_MISSING  */
-    VAR_ADD_HOLDDOWN = 378,        /* VAR_ADD_HOLDDOWN  */
-    VAR_DEL_HOLDDOWN = 379,        /* VAR_DEL_HOLDDOWN  */
-    VAR_SO_RCVBUF = 380,           /* VAR_SO_RCVBUF  */
-    VAR_EDNS_BUFFER_SIZE = 381,    /* VAR_EDNS_BUFFER_SIZE  */
-    VAR_PREFETCH = 382,            /* VAR_PREFETCH  */
-    VAR_PREFETCH_KEY = 383,        /* VAR_PREFETCH_KEY  */
-    VAR_SO_SNDBUF = 384,           /* VAR_SO_SNDBUF  */
-    VAR_SO_REUSEPORT = 385,        /* VAR_SO_REUSEPORT  */
-    VAR_HARDEN_BELOW_NXDOMAIN = 386, /* VAR_HARDEN_BELOW_NXDOMAIN  */
-    VAR_IGNORE_CD_FLAG = 387,      /* VAR_IGNORE_CD_FLAG  */
-    VAR_LOG_QUERIES = 388,         /* VAR_LOG_QUERIES  */
-    VAR_LOG_REPLIES = 389,         /* VAR_LOG_REPLIES  */
-    VAR_LOG_LOCAL_ACTIONS = 390,   /* VAR_LOG_LOCAL_ACTIONS  */
-    VAR_TCP_UPSTREAM = 391,        /* VAR_TCP_UPSTREAM  */
-    VAR_SSL_UPSTREAM = 392,        /* VAR_SSL_UPSTREAM  */
-    VAR_TCP_AUTH_QUERY_TIMEOUT = 393, /* VAR_TCP_AUTH_QUERY_TIMEOUT  */
-    VAR_SSL_SERVICE_KEY = 394,     /* VAR_SSL_SERVICE_KEY  */
-    VAR_SSL_SERVICE_PEM = 395,     /* VAR_SSL_SERVICE_PEM  */
-    VAR_SSL_PORT = 396,            /* VAR_SSL_PORT  */
-    VAR_FORWARD_FIRST = 397,       /* VAR_FORWARD_FIRST  */
-    VAR_STUB_SSL_UPSTREAM = 398,   /* VAR_STUB_SSL_UPSTREAM  */
-    VAR_FORWARD_SSL_UPSTREAM = 399, /* VAR_FORWARD_SSL_UPSTREAM  */
-    VAR_TLS_CERT_BUNDLE = 400,     /* VAR_TLS_CERT_BUNDLE  */
-    VAR_STUB_TCP_UPSTREAM = 401,   /* VAR_STUB_TCP_UPSTREAM  */
-    VAR_FORWARD_TCP_UPSTREAM = 402, /* VAR_FORWARD_TCP_UPSTREAM  */
-    VAR_HTTPS_PORT = 403,          /* VAR_HTTPS_PORT  */
-    VAR_HTTP_ENDPOINT = 404,       /* VAR_HTTP_ENDPOINT  */
-    VAR_HTTP_MAX_STREAMS = 405,    /* VAR_HTTP_MAX_STREAMS  */
-    VAR_HTTP_QUERY_BUFFER_SIZE = 406, /* VAR_HTTP_QUERY_BUFFER_SIZE  */
-    VAR_HTTP_RESPONSE_BUFFER_SIZE = 407, /* VAR_HTTP_RESPONSE_BUFFER_SIZE  */
-    VAR_HTTP_NODELAY = 408,        /* VAR_HTTP_NODELAY  */
-    VAR_HTTP_NOTLS_DOWNSTREAM = 409, /* VAR_HTTP_NOTLS_DOWNSTREAM  */
-    VAR_STUB_FIRST = 410,          /* VAR_STUB_FIRST  */
-    VAR_MINIMAL_RESPONSES = 411,   /* VAR_MINIMAL_RESPONSES  */
-    VAR_RRSET_ROUNDROBIN = 412,    /* VAR_RRSET_ROUNDROBIN  */
-    VAR_MAX_UDP_SIZE = 413,        /* VAR_MAX_UDP_SIZE  */
-    VAR_DELAY_CLOSE = 414,         /* VAR_DELAY_CLOSE  */
-    VAR_UDP_CONNECT = 415,         /* VAR_UDP_CONNECT  */
-    VAR_UNBLOCK_LAN_ZONES = 416,   /* VAR_UNBLOCK_LAN_ZONES  */
-    VAR_INSECURE_LAN_ZONES = 417,  /* VAR_INSECURE_LAN_ZONES  */
-    VAR_INFRA_CACHE_MIN_RTT = 418, /* VAR_INFRA_CACHE_MIN_RTT  */
-    VAR_INFRA_KEEP_PROBING = 419,  /* VAR_INFRA_KEEP_PROBING  */
-    VAR_DNS64_PREFIX = 420,        /* VAR_DNS64_PREFIX  */
-    VAR_DNS64_SYNTHALL = 421,      /* VAR_DNS64_SYNTHALL  */
-    VAR_DNS64_IGNORE_AAAA = 422,   /* VAR_DNS64_IGNORE_AAAA  */
-    VAR_DNSTAP = 423,              /* VAR_DNSTAP  */
-    VAR_DNSTAP_ENABLE = 424,       /* VAR_DNSTAP_ENABLE  */
-    VAR_DNSTAP_SOCKET_PATH = 425,  /* VAR_DNSTAP_SOCKET_PATH  */
-    VAR_DNSTAP_IP = 426,           /* VAR_DNSTAP_IP  */
-    VAR_DNSTAP_TLS = 427,          /* VAR_DNSTAP_TLS  */
-    VAR_DNSTAP_TLS_SERVER_NAME = 428, /* VAR_DNSTAP_TLS_SERVER_NAME  */
-    VAR_DNSTAP_TLS_CERT_BUNDLE = 429, /* VAR_DNSTAP_TLS_CERT_BUNDLE  */
-    VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 430, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE  */
-    VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 431, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE  */
-    VAR_DNSTAP_SEND_IDENTITY = 432, /* VAR_DNSTAP_SEND_IDENTITY  */
-    VAR_DNSTAP_SEND_VERSION = 433, /* VAR_DNSTAP_SEND_VERSION  */
-    VAR_DNSTAP_BIDIRECTIONAL = 434, /* VAR_DNSTAP_BIDIRECTIONAL  */
-    VAR_DNSTAP_IDENTITY = 435,     /* VAR_DNSTAP_IDENTITY  */
-    VAR_DNSTAP_VERSION = 436,      /* VAR_DNSTAP_VERSION  */
-    VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 437, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES  */
-    VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 438, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES  */
-    VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 439, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES  */
-    VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 440, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES  */
-    VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 441, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES  */
-    VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 442, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES  */
-    VAR_RESPONSE_IP_TAG = 443,     /* VAR_RESPONSE_IP_TAG  */
-    VAR_RESPONSE_IP = 444,         /* VAR_RESPONSE_IP  */
-    VAR_RESPONSE_IP_DATA = 445,    /* VAR_RESPONSE_IP_DATA  */
-    VAR_HARDEN_ALGO_DOWNGRADE = 446, /* VAR_HARDEN_ALGO_DOWNGRADE  */
-    VAR_IP_TRANSPARENT = 447,      /* VAR_IP_TRANSPARENT  */
-    VAR_IP_DSCP = 448,             /* VAR_IP_DSCP  */
-    VAR_DISABLE_DNSSEC_LAME_CHECK = 449, /* VAR_DISABLE_DNSSEC_LAME_CHECK  */
-    VAR_IP_RATELIMIT = 450,        /* VAR_IP_RATELIMIT  */
-    VAR_IP_RATELIMIT_SLABS = 451,  /* VAR_IP_RATELIMIT_SLABS  */
-    VAR_IP_RATELIMIT_SIZE = 452,   /* VAR_IP_RATELIMIT_SIZE  */
-    VAR_RATELIMIT = 453,           /* VAR_RATELIMIT  */
-    VAR_RATELIMIT_SLABS = 454,     /* VAR_RATELIMIT_SLABS  */
-    VAR_RATELIMIT_SIZE = 455,      /* VAR_RATELIMIT_SIZE  */
-    VAR_OUTBOUND_MSG_RETRY = 456,  /* VAR_OUTBOUND_MSG_RETRY  */
-    VAR_RATELIMIT_FOR_DOMAIN = 457, /* VAR_RATELIMIT_FOR_DOMAIN  */
-    VAR_RATELIMIT_BELOW_DOMAIN = 458, /* VAR_RATELIMIT_BELOW_DOMAIN  */
-    VAR_IP_RATELIMIT_FACTOR = 459, /* VAR_IP_RATELIMIT_FACTOR  */
-    VAR_RATELIMIT_FACTOR = 460,    /* VAR_RATELIMIT_FACTOR  */
-    VAR_IP_RATELIMIT_BACKOFF = 461, /* VAR_IP_RATELIMIT_BACKOFF  */
-    VAR_RATELIMIT_BACKOFF = 462,   /* VAR_RATELIMIT_BACKOFF  */
-    VAR_SEND_CLIENT_SUBNET = 463,  /* VAR_SEND_CLIENT_SUBNET  */
-    VAR_CLIENT_SUBNET_ZONE = 464,  /* VAR_CLIENT_SUBNET_ZONE  */
-    VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 465, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD  */
-    VAR_CLIENT_SUBNET_OPCODE = 466, /* VAR_CLIENT_SUBNET_OPCODE  */
-    VAR_MAX_CLIENT_SUBNET_IPV4 = 467, /* VAR_MAX_CLIENT_SUBNET_IPV4  */
-    VAR_MAX_CLIENT_SUBNET_IPV6 = 468, /* VAR_MAX_CLIENT_SUBNET_IPV6  */
-    VAR_MIN_CLIENT_SUBNET_IPV4 = 469, /* VAR_MIN_CLIENT_SUBNET_IPV4  */
-    VAR_MIN_CLIENT_SUBNET_IPV6 = 470, /* VAR_MIN_CLIENT_SUBNET_IPV6  */
-    VAR_MAX_ECS_TREE_SIZE_IPV4 = 471, /* VAR_MAX_ECS_TREE_SIZE_IPV4  */
-    VAR_MAX_ECS_TREE_SIZE_IPV6 = 472, /* VAR_MAX_ECS_TREE_SIZE_IPV6  */
-    VAR_CAPS_WHITELIST = 473,      /* VAR_CAPS_WHITELIST  */
-    VAR_CACHE_MAX_NEGATIVE_TTL = 474, /* VAR_CACHE_MAX_NEGATIVE_TTL  */
-    VAR_PERMIT_SMALL_HOLDDOWN = 475, /* VAR_PERMIT_SMALL_HOLDDOWN  */
-    VAR_QNAME_MINIMISATION = 476,  /* VAR_QNAME_MINIMISATION  */
-    VAR_QNAME_MINIMISATION_STRICT = 477, /* VAR_QNAME_MINIMISATION_STRICT  */
-    VAR_IP_FREEBIND = 478,         /* VAR_IP_FREEBIND  */
-    VAR_DEFINE_TAG = 479,          /* VAR_DEFINE_TAG  */
-    VAR_LOCAL_ZONE_TAG = 480,      /* VAR_LOCAL_ZONE_TAG  */
-    VAR_ACCESS_CONTROL_TAG = 481,  /* VAR_ACCESS_CONTROL_TAG  */
-    VAR_LOCAL_ZONE_OVERRIDE = 482, /* VAR_LOCAL_ZONE_OVERRIDE  */
-    VAR_ACCESS_CONTROL_TAG_ACTION = 483, /* VAR_ACCESS_CONTROL_TAG_ACTION  */
-    VAR_ACCESS_CONTROL_TAG_DATA = 484, /* VAR_ACCESS_CONTROL_TAG_DATA  */
-    VAR_VIEW = 485,                /* VAR_VIEW  */
-    VAR_ACCESS_CONTROL_VIEW = 486, /* VAR_ACCESS_CONTROL_VIEW  */
-    VAR_VIEW_FIRST = 487,          /* VAR_VIEW_FIRST  */
-    VAR_SERVE_EXPIRED = 488,       /* VAR_SERVE_EXPIRED  */
-    VAR_SERVE_EXPIRED_TTL = 489,   /* VAR_SERVE_EXPIRED_TTL  */
-    VAR_SERVE_EXPIRED_TTL_RESET = 490, /* VAR_SERVE_EXPIRED_TTL_RESET  */
-    VAR_SERVE_EXPIRED_REPLY_TTL = 491, /* VAR_SERVE_EXPIRED_REPLY_TTL  */
-    VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 492, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT  */
-    VAR_SERVE_ORIGINAL_TTL = 493,  /* VAR_SERVE_ORIGINAL_TTL  */
-    VAR_FAKE_DSA = 494,            /* VAR_FAKE_DSA  */
-    VAR_FAKE_SHA1 = 495,           /* VAR_FAKE_SHA1  */
-    VAR_LOG_IDENTITY = 496,        /* VAR_LOG_IDENTITY  */
-    VAR_HIDE_TRUSTANCHOR = 497,    /* VAR_HIDE_TRUSTANCHOR  */
-    VAR_HIDE_HTTP_USER_AGENT = 498, /* VAR_HIDE_HTTP_USER_AGENT  */
-    VAR_HTTP_USER_AGENT = 499,     /* VAR_HTTP_USER_AGENT  */
-    VAR_TRUST_ANCHOR_SIGNALING = 500, /* VAR_TRUST_ANCHOR_SIGNALING  */
-    VAR_AGGRESSIVE_NSEC = 501,     /* VAR_AGGRESSIVE_NSEC  */
-    VAR_USE_SYSTEMD = 502,         /* VAR_USE_SYSTEMD  */
-    VAR_SHM_ENABLE = 503,          /* VAR_SHM_ENABLE  */
-    VAR_SHM_KEY = 504,             /* VAR_SHM_KEY  */
-    VAR_ROOT_KEY_SENTINEL = 505,   /* VAR_ROOT_KEY_SENTINEL  */
-    VAR_DNSCRYPT = 506,            /* VAR_DNSCRYPT  */
-    VAR_DNSCRYPT_ENABLE = 507,     /* VAR_DNSCRYPT_ENABLE  */
-    VAR_DNSCRYPT_PORT = 508,       /* VAR_DNSCRYPT_PORT  */
-    VAR_DNSCRYPT_PROVIDER = 509,   /* VAR_DNSCRYPT_PROVIDER  */
-    VAR_DNSCRYPT_SECRET_KEY = 510, /* VAR_DNSCRYPT_SECRET_KEY  */
-    VAR_DNSCRYPT_PROVIDER_CERT = 511, /* VAR_DNSCRYPT_PROVIDER_CERT  */
-    VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 512, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED  */
-    VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 513, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE  */
-    VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 514, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS  */
-    VAR_DNSCRYPT_NONCE_CACHE_SIZE = 515, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE  */
-    VAR_DNSCRYPT_NONCE_CACHE_SLABS = 516, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS  */
-    VAR_PAD_RESPONSES = 517,       /* VAR_PAD_RESPONSES  */
-    VAR_PAD_RESPONSES_BLOCK_SIZE = 518, /* VAR_PAD_RESPONSES_BLOCK_SIZE  */
-    VAR_PAD_QUERIES = 519,         /* VAR_PAD_QUERIES  */
-    VAR_PAD_QUERIES_BLOCK_SIZE = 520, /* VAR_PAD_QUERIES_BLOCK_SIZE  */
-    VAR_IPSECMOD_ENABLED = 521,    /* VAR_IPSECMOD_ENABLED  */
-    VAR_IPSECMOD_HOOK = 522,       /* VAR_IPSECMOD_HOOK  */
-    VAR_IPSECMOD_IGNORE_BOGUS = 523, /* VAR_IPSECMOD_IGNORE_BOGUS  */
-    VAR_IPSECMOD_MAX_TTL = 524,    /* VAR_IPSECMOD_MAX_TTL  */
-    VAR_IPSECMOD_WHITELIST = 525,  /* VAR_IPSECMOD_WHITELIST  */
-    VAR_IPSECMOD_STRICT = 526,     /* VAR_IPSECMOD_STRICT  */
-    VAR_CACHEDB = 527,             /* VAR_CACHEDB  */
-    VAR_CACHEDB_BACKEND = 528,     /* VAR_CACHEDB_BACKEND  */
-    VAR_CACHEDB_SECRETSEED = 529,  /* VAR_CACHEDB_SECRETSEED  */
-    VAR_CACHEDB_REDISHOST = 530,   /* VAR_CACHEDB_REDISHOST  */
-    VAR_CACHEDB_REDISPORT = 531,   /* VAR_CACHEDB_REDISPORT  */
-    VAR_CACHEDB_REDISTIMEOUT = 532, /* VAR_CACHEDB_REDISTIMEOUT  */
-    VAR_CACHEDB_REDISEXPIRERECORDS = 533, /* VAR_CACHEDB_REDISEXPIRERECORDS  */
-    VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 534, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM  */
-    VAR_FOR_UPSTREAM = 535,        /* VAR_FOR_UPSTREAM  */
-    VAR_AUTH_ZONE = 536,           /* VAR_AUTH_ZONE  */
-    VAR_ZONEFILE = 537,            /* VAR_ZONEFILE  */
-    VAR_MASTER = 538,              /* VAR_MASTER  */
-    VAR_URL = 539,                 /* VAR_URL  */
-    VAR_FOR_DOWNSTREAM = 540,      /* VAR_FOR_DOWNSTREAM  */
-    VAR_FALLBACK_ENABLED = 541,    /* VAR_FALLBACK_ENABLED  */
-    VAR_TLS_ADDITIONAL_PORT = 542, /* VAR_TLS_ADDITIONAL_PORT  */
-    VAR_LOW_RTT = 543,             /* VAR_LOW_RTT  */
-    VAR_LOW_RTT_PERMIL = 544,      /* VAR_LOW_RTT_PERMIL  */
-    VAR_FAST_SERVER_PERMIL = 545,  /* VAR_FAST_SERVER_PERMIL  */
-    VAR_FAST_SERVER_NUM = 546,     /* VAR_FAST_SERVER_NUM  */
-    VAR_ALLOW_NOTIFY = 547,        /* VAR_ALLOW_NOTIFY  */
-    VAR_TLS_WIN_CERT = 548,        /* VAR_TLS_WIN_CERT  */
-    VAR_TCP_CONNECTION_LIMIT = 549, /* VAR_TCP_CONNECTION_LIMIT  */
-    VAR_FORWARD_NO_CACHE = 550,    /* VAR_FORWARD_NO_CACHE  */
-    VAR_STUB_NO_CACHE = 551,       /* VAR_STUB_NO_CACHE  */
-    VAR_LOG_SERVFAIL = 552,        /* VAR_LOG_SERVFAIL  */
-    VAR_DENY_ANY = 553,            /* VAR_DENY_ANY  */
-    VAR_UNKNOWN_SERVER_TIME_LIMIT = 554, /* VAR_UNKNOWN_SERVER_TIME_LIMIT  */
-    VAR_LOG_TAG_QUERYREPLY = 555,  /* VAR_LOG_TAG_QUERYREPLY  */
-    VAR_STREAM_WAIT_SIZE = 556,    /* VAR_STREAM_WAIT_SIZE  */
-    VAR_TLS_CIPHERS = 557,         /* VAR_TLS_CIPHERS  */
-    VAR_TLS_CIPHERSUITES = 558,    /* VAR_TLS_CIPHERSUITES  */
-    VAR_TLS_USE_SNI = 559,         /* VAR_TLS_USE_SNI  */
-    VAR_IPSET = 560,               /* VAR_IPSET  */
-    VAR_IPSET_NAME_V4 = 561,       /* VAR_IPSET_NAME_V4  */
-    VAR_IPSET_NAME_V6 = 562,       /* VAR_IPSET_NAME_V6  */
-    VAR_TLS_SESSION_TICKET_KEYS = 563, /* VAR_TLS_SESSION_TICKET_KEYS  */
-    VAR_RPZ = 564,                 /* VAR_RPZ  */
-    VAR_TAGS = 565,                /* VAR_TAGS  */
-    VAR_RPZ_ACTION_OVERRIDE = 566, /* VAR_RPZ_ACTION_OVERRIDE  */
-    VAR_RPZ_CNAME_OVERRIDE = 567,  /* VAR_RPZ_CNAME_OVERRIDE  */
-    VAR_RPZ_LOG = 568,             /* VAR_RPZ_LOG  */
-    VAR_RPZ_LOG_NAME = 569,        /* VAR_RPZ_LOG_NAME  */
-    VAR_DYNLIB = 570,              /* VAR_DYNLIB  */
-    VAR_DYNLIB_FILE = 571,         /* VAR_DYNLIB_FILE  */
-    VAR_EDNS_CLIENT_STRING = 572,  /* VAR_EDNS_CLIENT_STRING  */
-    VAR_EDNS_CLIENT_STRING_OPCODE = 573, /* VAR_EDNS_CLIENT_STRING_OPCODE  */
-    VAR_NSID = 574,                /* VAR_NSID  */
-    VAR_ZONEMD_PERMISSIVE_MODE = 575, /* VAR_ZONEMD_PERMISSIVE_MODE  */
-    VAR_ZONEMD_CHECK = 576,        /* VAR_ZONEMD_CHECK  */
-    VAR_ZONEMD_REJECT_ABSENCE = 577, /* VAR_ZONEMD_REJECT_ABSENCE  */
-    VAR_RPZ_SIGNAL_NXDOMAIN_RA = 578, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA  */
-    VAR_INTERFACE_AUTOMATIC_PORTS = 579 /* VAR_INTERFACE_AUTOMATIC_PORTS  */
-  };
-  typedef enum yytokentype yytoken_kind_t;
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     SPACE = 258,
+     LETTER = 259,
+     NEWLINE = 260,
+     COMMENT = 261,
+     COLON = 262,
+     ANY = 263,
+     ZONESTR = 264,
+     STRING_ARG = 265,
+     VAR_FORCE_TOPLEVEL = 266,
+     VAR_SERVER = 267,
+     VAR_VERBOSITY = 268,
+     VAR_NUM_THREADS = 269,
+     VAR_PORT = 270,
+     VAR_OUTGOING_RANGE = 271,
+     VAR_INTERFACE = 272,
+     VAR_PREFER_IP4 = 273,
+     VAR_DO_IP4 = 274,
+     VAR_DO_IP6 = 275,
+     VAR_PREFER_IP6 = 276,
+     VAR_DO_UDP = 277,
+     VAR_DO_TCP = 278,
+     VAR_TCP_MSS = 279,
+     VAR_OUTGOING_TCP_MSS = 280,
+     VAR_TCP_IDLE_TIMEOUT = 281,
+     VAR_EDNS_TCP_KEEPALIVE = 282,
+     VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283,
+     VAR_CHROOT = 284,
+     VAR_USERNAME = 285,
+     VAR_DIRECTORY = 286,
+     VAR_LOGFILE = 287,
+     VAR_PIDFILE = 288,
+     VAR_MSG_CACHE_SIZE = 289,
+     VAR_MSG_CACHE_SLABS = 290,
+     VAR_NUM_QUERIES_PER_THREAD = 291,
+     VAR_RRSET_CACHE_SIZE = 292,
+     VAR_RRSET_CACHE_SLABS = 293,
+     VAR_OUTGOING_NUM_TCP = 294,
+     VAR_INFRA_HOST_TTL = 295,
+     VAR_INFRA_LAME_TTL = 296,
+     VAR_INFRA_CACHE_SLABS = 297,
+     VAR_INFRA_CACHE_NUMHOSTS = 298,
+     VAR_INFRA_CACHE_LAME_SIZE = 299,
+     VAR_NAME = 300,
+     VAR_STUB_ZONE = 301,
+     VAR_STUB_HOST = 302,
+     VAR_STUB_ADDR = 303,
+     VAR_TARGET_FETCH_POLICY = 304,
+     VAR_HARDEN_SHORT_BUFSIZE = 305,
+     VAR_HARDEN_LARGE_QUERIES = 306,
+     VAR_FORWARD_ZONE = 307,
+     VAR_FORWARD_HOST = 308,
+     VAR_FORWARD_ADDR = 309,
+     VAR_DO_NOT_QUERY_ADDRESS = 310,
+     VAR_HIDE_IDENTITY = 311,
+     VAR_HIDE_VERSION = 312,
+     VAR_IDENTITY = 313,
+     VAR_VERSION = 314,
+     VAR_HARDEN_GLUE = 315,
+     VAR_MODULE_CONF = 316,
+     VAR_TRUST_ANCHOR_FILE = 317,
+     VAR_TRUST_ANCHOR = 318,
+     VAR_VAL_OVERRIDE_DATE = 319,
+     VAR_BOGUS_TTL = 320,
+     VAR_VAL_CLEAN_ADDITIONAL = 321,
+     VAR_VAL_PERMISSIVE_MODE = 322,
+     VAR_INCOMING_NUM_TCP = 323,
+     VAR_MSG_BUFFER_SIZE = 324,
+     VAR_KEY_CACHE_SIZE = 325,
+     VAR_KEY_CACHE_SLABS = 326,
+     VAR_TRUSTED_KEYS_FILE = 327,
+     VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328,
+     VAR_USE_SYSLOG = 329,
+     VAR_OUTGOING_INTERFACE = 330,
+     VAR_ROOT_HINTS = 331,
+     VAR_DO_NOT_QUERY_LOCALHOST = 332,
+     VAR_CACHE_MAX_TTL = 333,
+     VAR_HARDEN_DNSSEC_STRIPPED = 334,
+     VAR_ACCESS_CONTROL = 335,
+     VAR_LOCAL_ZONE = 336,
+     VAR_LOCAL_DATA = 337,
+     VAR_INTERFACE_AUTOMATIC = 338,
+     VAR_STATISTICS_INTERVAL = 339,
+     VAR_DO_DAEMONIZE = 340,
+     VAR_USE_CAPS_FOR_ID = 341,
+     VAR_STATISTICS_CUMULATIVE = 342,
+     VAR_OUTGOING_PORT_PERMIT = 343,
+     VAR_OUTGOING_PORT_AVOID = 344,
+     VAR_DLV_ANCHOR_FILE = 345,
+     VAR_DLV_ANCHOR = 346,
+     VAR_NEG_CACHE_SIZE = 347,
+     VAR_HARDEN_REFERRAL_PATH = 348,
+     VAR_PRIVATE_ADDRESS = 349,
+     VAR_PRIVATE_DOMAIN = 350,
+     VAR_REMOTE_CONTROL = 351,
+     VAR_CONTROL_ENABLE = 352,
+     VAR_CONTROL_INTERFACE = 353,
+     VAR_CONTROL_PORT = 354,
+     VAR_SERVER_KEY_FILE = 355,
+     VAR_SERVER_CERT_FILE = 356,
+     VAR_CONTROL_KEY_FILE = 357,
+     VAR_CONTROL_CERT_FILE = 358,
+     VAR_CONTROL_USE_CERT = 359,
+     VAR_TCP_REUSE_TIMEOUT = 360,
+     VAR_MAX_REUSE_TCP_QUERIES = 361,
+     VAR_EXTENDED_STATISTICS = 362,
+     VAR_LOCAL_DATA_PTR = 363,
+     VAR_JOSTLE_TIMEOUT = 364,
+     VAR_STUB_PRIME = 365,
+     VAR_UNWANTED_REPLY_THRESHOLD = 366,
+     VAR_LOG_TIME_ASCII = 367,
+     VAR_DOMAIN_INSECURE = 368,
+     VAR_PYTHON = 369,
+     VAR_PYTHON_SCRIPT = 370,
+     VAR_VAL_SIG_SKEW_MIN = 371,
+     VAR_VAL_SIG_SKEW_MAX = 372,
+     VAR_VAL_MAX_RESTART = 373,
+     VAR_CACHE_MIN_TTL = 374,
+     VAR_VAL_LOG_LEVEL = 375,
+     VAR_AUTO_TRUST_ANCHOR_FILE = 376,
+     VAR_KEEP_MISSING = 377,
+     VAR_ADD_HOLDDOWN = 378,
+     VAR_DEL_HOLDDOWN = 379,
+     VAR_SO_RCVBUF = 380,
+     VAR_EDNS_BUFFER_SIZE = 381,
+     VAR_PREFETCH = 382,
+     VAR_PREFETCH_KEY = 383,
+     VAR_SO_SNDBUF = 384,
+     VAR_SO_REUSEPORT = 385,
+     VAR_HARDEN_BELOW_NXDOMAIN = 386,
+     VAR_IGNORE_CD_FLAG = 387,
+     VAR_LOG_QUERIES = 388,
+     VAR_LOG_REPLIES = 389,
+     VAR_LOG_LOCAL_ACTIONS = 390,
+     VAR_TCP_UPSTREAM = 391,
+     VAR_SSL_UPSTREAM = 392,
+     VAR_TCP_AUTH_QUERY_TIMEOUT = 393,
+     VAR_SSL_SERVICE_KEY = 394,
+     VAR_SSL_SERVICE_PEM = 395,
+     VAR_SSL_PORT = 396,
+     VAR_FORWARD_FIRST = 397,
+     VAR_STUB_SSL_UPSTREAM = 398,
+     VAR_FORWARD_SSL_UPSTREAM = 399,
+     VAR_TLS_CERT_BUNDLE = 400,
+     VAR_STUB_TCP_UPSTREAM = 401,
+     VAR_FORWARD_TCP_UPSTREAM = 402,
+     VAR_HTTPS_PORT = 403,
+     VAR_HTTP_ENDPOINT = 404,
+     VAR_HTTP_MAX_STREAMS = 405,
+     VAR_HTTP_QUERY_BUFFER_SIZE = 406,
+     VAR_HTTP_RESPONSE_BUFFER_SIZE = 407,
+     VAR_HTTP_NODELAY = 408,
+     VAR_HTTP_NOTLS_DOWNSTREAM = 409,
+     VAR_STUB_FIRST = 410,
+     VAR_MINIMAL_RESPONSES = 411,
+     VAR_RRSET_ROUNDROBIN = 412,
+     VAR_MAX_UDP_SIZE = 413,
+     VAR_DELAY_CLOSE = 414,
+     VAR_UDP_CONNECT = 415,
+     VAR_UNBLOCK_LAN_ZONES = 416,
+     VAR_INSECURE_LAN_ZONES = 417,
+     VAR_INFRA_CACHE_MIN_RTT = 418,
+     VAR_INFRA_KEEP_PROBING = 419,
+     VAR_DNS64_PREFIX = 420,
+     VAR_DNS64_SYNTHALL = 421,
+     VAR_DNS64_IGNORE_AAAA = 422,
+     VAR_DNSTAP = 423,
+     VAR_DNSTAP_ENABLE = 424,
+     VAR_DNSTAP_SOCKET_PATH = 425,
+     VAR_DNSTAP_IP = 426,
+     VAR_DNSTAP_TLS = 427,
+     VAR_DNSTAP_TLS_SERVER_NAME = 428,
+     VAR_DNSTAP_TLS_CERT_BUNDLE = 429,
+     VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 430,
+     VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 431,
+     VAR_DNSTAP_SEND_IDENTITY = 432,
+     VAR_DNSTAP_SEND_VERSION = 433,
+     VAR_DNSTAP_BIDIRECTIONAL = 434,
+     VAR_DNSTAP_IDENTITY = 435,
+     VAR_DNSTAP_VERSION = 436,
+     VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 437,
+     VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 438,
+     VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 439,
+     VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 440,
+     VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 441,
+     VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 442,
+     VAR_RESPONSE_IP_TAG = 443,
+     VAR_RESPONSE_IP = 444,
+     VAR_RESPONSE_IP_DATA = 445,
+     VAR_HARDEN_ALGO_DOWNGRADE = 446,
+     VAR_IP_TRANSPARENT = 447,
+     VAR_IP_DSCP = 448,
+     VAR_DISABLE_DNSSEC_LAME_CHECK = 449,
+     VAR_IP_RATELIMIT = 450,
+     VAR_IP_RATELIMIT_SLABS = 451,
+     VAR_IP_RATELIMIT_SIZE = 452,
+     VAR_RATELIMIT = 453,
+     VAR_RATELIMIT_SLABS = 454,
+     VAR_RATELIMIT_SIZE = 455,
+     VAR_OUTBOUND_MSG_RETRY = 456,
+     VAR_RATELIMIT_FOR_DOMAIN = 457,
+     VAR_RATELIMIT_BELOW_DOMAIN = 458,
+     VAR_IP_RATELIMIT_FACTOR = 459,
+     VAR_RATELIMIT_FACTOR = 460,
+     VAR_IP_RATELIMIT_BACKOFF = 461,
+     VAR_RATELIMIT_BACKOFF = 462,
+     VAR_SEND_CLIENT_SUBNET = 463,
+     VAR_CLIENT_SUBNET_ZONE = 464,
+     VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 465,
+     VAR_CLIENT_SUBNET_OPCODE = 466,
+     VAR_MAX_CLIENT_SUBNET_IPV4 = 467,
+     VAR_MAX_CLIENT_SUBNET_IPV6 = 468,
+     VAR_MIN_CLIENT_SUBNET_IPV4 = 469,
+     VAR_MIN_CLIENT_SUBNET_IPV6 = 470,
+     VAR_MAX_ECS_TREE_SIZE_IPV4 = 471,
+     VAR_MAX_ECS_TREE_SIZE_IPV6 = 472,
+     VAR_CAPS_WHITELIST = 473,
+     VAR_CACHE_MAX_NEGATIVE_TTL = 474,
+     VAR_PERMIT_SMALL_HOLDDOWN = 475,
+     VAR_QNAME_MINIMISATION = 476,
+     VAR_QNAME_MINIMISATION_STRICT = 477,
+     VAR_IP_FREEBIND = 478,
+     VAR_DEFINE_TAG = 479,
+     VAR_LOCAL_ZONE_TAG = 480,
+     VAR_ACCESS_CONTROL_TAG = 481,
+     VAR_LOCAL_ZONE_OVERRIDE = 482,
+     VAR_ACCESS_CONTROL_TAG_ACTION = 483,
+     VAR_ACCESS_CONTROL_TAG_DATA = 484,
+     VAR_VIEW = 485,
+     VAR_ACCESS_CONTROL_VIEW = 486,
+     VAR_VIEW_FIRST = 487,
+     VAR_SERVE_EXPIRED = 488,
+     VAR_SERVE_EXPIRED_TTL = 489,
+     VAR_SERVE_EXPIRED_TTL_RESET = 490,
+     VAR_SERVE_EXPIRED_REPLY_TTL = 491,
+     VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 492,
+     VAR_EDE_SERVE_EXPIRED = 493,
+     VAR_SERVE_ORIGINAL_TTL = 494,
+     VAR_FAKE_DSA = 495,
+     VAR_FAKE_SHA1 = 496,
+     VAR_LOG_IDENTITY = 497,
+     VAR_HIDE_TRUSTANCHOR = 498,
+     VAR_HIDE_HTTP_USER_AGENT = 499,
+     VAR_HTTP_USER_AGENT = 500,
+     VAR_TRUST_ANCHOR_SIGNALING = 501,
+     VAR_AGGRESSIVE_NSEC = 502,
+     VAR_USE_SYSTEMD = 503,
+     VAR_SHM_ENABLE = 504,
+     VAR_SHM_KEY = 505,
+     VAR_ROOT_KEY_SENTINEL = 506,
+     VAR_DNSCRYPT = 507,
+     VAR_DNSCRYPT_ENABLE = 508,
+     VAR_DNSCRYPT_PORT = 509,
+     VAR_DNSCRYPT_PROVIDER = 510,
+     VAR_DNSCRYPT_SECRET_KEY = 511,
+     VAR_DNSCRYPT_PROVIDER_CERT = 512,
+     VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 513,
+     VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 514,
+     VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 515,
+     VAR_DNSCRYPT_NONCE_CACHE_SIZE = 516,
+     VAR_DNSCRYPT_NONCE_CACHE_SLABS = 517,
+     VAR_PAD_RESPONSES = 518,
+     VAR_PAD_RESPONSES_BLOCK_SIZE = 519,
+     VAR_PAD_QUERIES = 520,
+     VAR_PAD_QUERIES_BLOCK_SIZE = 521,
+     VAR_IPSECMOD_ENABLED = 522,
+     VAR_IPSECMOD_HOOK = 523,
+     VAR_IPSECMOD_IGNORE_BOGUS = 524,
+     VAR_IPSECMOD_MAX_TTL = 525,
+     VAR_IPSECMOD_WHITELIST = 526,
+     VAR_IPSECMOD_STRICT = 527,
+     VAR_CACHEDB = 528,
+     VAR_CACHEDB_BACKEND = 529,
+     VAR_CACHEDB_SECRETSEED = 530,
+     VAR_CACHEDB_REDISHOST = 531,
+     VAR_CACHEDB_REDISPORT = 532,
+     VAR_CACHEDB_REDISTIMEOUT = 533,
+     VAR_CACHEDB_REDISEXPIRERECORDS = 534,
+     VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 535,
+     VAR_FOR_UPSTREAM = 536,
+     VAR_AUTH_ZONE = 537,
+     VAR_ZONEFILE = 538,
+     VAR_MASTER = 539,
+     VAR_URL = 540,
+     VAR_FOR_DOWNSTREAM = 541,
+     VAR_FALLBACK_ENABLED = 542,
+     VAR_TLS_ADDITIONAL_PORT = 543,
+     VAR_LOW_RTT = 544,
+     VAR_LOW_RTT_PERMIL = 545,
+     VAR_FAST_SERVER_PERMIL = 546,
+     VAR_FAST_SERVER_NUM = 547,
+     VAR_ALLOW_NOTIFY = 548,
+     VAR_TLS_WIN_CERT = 549,
+     VAR_TCP_CONNECTION_LIMIT = 550,
+     VAR_FORWARD_NO_CACHE = 551,
+     VAR_STUB_NO_CACHE = 552,
+     VAR_LOG_SERVFAIL = 553,
+     VAR_DENY_ANY = 554,
+     VAR_UNKNOWN_SERVER_TIME_LIMIT = 555,
+     VAR_LOG_TAG_QUERYREPLY = 556,
+     VAR_STREAM_WAIT_SIZE = 557,
+     VAR_TLS_CIPHERS = 558,
+     VAR_TLS_CIPHERSUITES = 559,
+     VAR_TLS_USE_SNI = 560,
+     VAR_IPSET = 561,
+     VAR_IPSET_NAME_V4 = 562,
+     VAR_IPSET_NAME_V6 = 563,
+     VAR_TLS_SESSION_TICKET_KEYS = 564,
+     VAR_RPZ = 565,
+     VAR_TAGS = 566,
+     VAR_RPZ_ACTION_OVERRIDE = 567,
+     VAR_RPZ_CNAME_OVERRIDE = 568,
+     VAR_RPZ_LOG = 569,
+     VAR_RPZ_LOG_NAME = 570,
+     VAR_DYNLIB = 571,
+     VAR_DYNLIB_FILE = 572,
+     VAR_EDNS_CLIENT_STRING = 573,
+     VAR_EDNS_CLIENT_STRING_OPCODE = 574,
+     VAR_NSID = 575,
+     VAR_ZONEMD_PERMISSIVE_MODE = 576,
+     VAR_ZONEMD_CHECK = 577,
+     VAR_ZONEMD_REJECT_ABSENCE = 578,
+     VAR_RPZ_SIGNAL_NXDOMAIN_RA = 579,
+     VAR_INTERFACE_AUTOMATIC_PORTS = 580,
+     VAR_EDE = 581
+   };
 #endif
-/* Token kinds.  */
-#define YYEMPTY -2
-#define YYEOF 0
-#define YYerror 256
-#define YYUNDEF 257
+/* Tokens.  */
 #define SPACE 258
 #define LETTER 259
 #define NEWLINE 260
@@ -619,113 +601,112 @@ extern int yydebug;
 #define VAR_SERVE_EXPIRED_TTL_RESET 490
 #define VAR_SERVE_EXPIRED_REPLY_TTL 491
 #define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 492
-#define VAR_SERVE_ORIGINAL_TTL 493
-#define VAR_FAKE_DSA 494
-#define VAR_FAKE_SHA1 495
-#define VAR_LOG_IDENTITY 496
-#define VAR_HIDE_TRUSTANCHOR 497
-#define VAR_HIDE_HTTP_USER_AGENT 498
-#define VAR_HTTP_USER_AGENT 499
-#define VAR_TRUST_ANCHOR_SIGNALING 500
-#define VAR_AGGRESSIVE_NSEC 501
-#define VAR_USE_SYSTEMD 502
-#define VAR_SHM_ENABLE 503
-#define VAR_SHM_KEY 504
-#define VAR_ROOT_KEY_SENTINEL 505
-#define VAR_DNSCRYPT 506
-#define VAR_DNSCRYPT_ENABLE 507
-#define VAR_DNSCRYPT_PORT 508
-#define VAR_DNSCRYPT_PROVIDER 509
-#define VAR_DNSCRYPT_SECRET_KEY 510
-#define VAR_DNSCRYPT_PROVIDER_CERT 511
-#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 512
-#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 513
-#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 514
-#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 515
-#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 516
-#define VAR_PAD_RESPONSES 517
-#define VAR_PAD_RESPONSES_BLOCK_SIZE 518
-#define VAR_PAD_QUERIES 519
-#define VAR_PAD_QUERIES_BLOCK_SIZE 520
-#define VAR_IPSECMOD_ENABLED 521
-#define VAR_IPSECMOD_HOOK 522
-#define VAR_IPSECMOD_IGNORE_BOGUS 523
-#define VAR_IPSECMOD_MAX_TTL 524
-#define VAR_IPSECMOD_WHITELIST 525
-#define VAR_IPSECMOD_STRICT 526
-#define VAR_CACHEDB 527
-#define VAR_CACHEDB_BACKEND 528
-#define VAR_CACHEDB_SECRETSEED 529
-#define VAR_CACHEDB_REDISHOST 530
-#define VAR_CACHEDB_REDISPORT 531
-#define VAR_CACHEDB_REDISTIMEOUT 532
-#define VAR_CACHEDB_REDISEXPIRERECORDS 533
-#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 534
-#define VAR_FOR_UPSTREAM 535
-#define VAR_AUTH_ZONE 536
-#define VAR_ZONEFILE 537
-#define VAR_MASTER 538
-#define VAR_URL 539
-#define VAR_FOR_DOWNSTREAM 540
-#define VAR_FALLBACK_ENABLED 541
-#define VAR_TLS_ADDITIONAL_PORT 542
-#define VAR_LOW_RTT 543
-#define VAR_LOW_RTT_PERMIL 544
-#define VAR_FAST_SERVER_PERMIL 545
-#define VAR_FAST_SERVER_NUM 546
-#define VAR_ALLOW_NOTIFY 547
-#define VAR_TLS_WIN_CERT 548
-#define VAR_TCP_CONNECTION_LIMIT 549
-#define VAR_FORWARD_NO_CACHE 550
-#define VAR_STUB_NO_CACHE 551
-#define VAR_LOG_SERVFAIL 552
-#define VAR_DENY_ANY 553
-#define VAR_UNKNOWN_SERVER_TIME_LIMIT 554
-#define VAR_LOG_TAG_QUERYREPLY 555
-#define VAR_STREAM_WAIT_SIZE 556
-#define VAR_TLS_CIPHERS 557
-#define VAR_TLS_CIPHERSUITES 558
-#define VAR_TLS_USE_SNI 559
-#define VAR_IPSET 560
-#define VAR_IPSET_NAME_V4 561
-#define VAR_IPSET_NAME_V6 562
-#define VAR_TLS_SESSION_TICKET_KEYS 563
-#define VAR_RPZ 564
-#define VAR_TAGS 565
-#define VAR_RPZ_ACTION_OVERRIDE 566
-#define VAR_RPZ_CNAME_OVERRIDE 567
-#define VAR_RPZ_LOG 568
-#define VAR_RPZ_LOG_NAME 569
-#define VAR_DYNLIB 570
-#define VAR_DYNLIB_FILE 571
-#define VAR_EDNS_CLIENT_STRING 572
-#define VAR_EDNS_CLIENT_STRING_OPCODE 573
-#define VAR_NSID 574
-#define VAR_ZONEMD_PERMISSIVE_MODE 575
-#define VAR_ZONEMD_CHECK 576
-#define VAR_ZONEMD_REJECT_ABSENCE 577
-#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 578
-#define VAR_INTERFACE_AUTOMATIC_PORTS 579
+#define VAR_EDE_SERVE_EXPIRED 493
+#define VAR_SERVE_ORIGINAL_TTL 494
+#define VAR_FAKE_DSA 495
+#define VAR_FAKE_SHA1 496
+#define VAR_LOG_IDENTITY 497
+#define VAR_HIDE_TRUSTANCHOR 498
+#define VAR_HIDE_HTTP_USER_AGENT 499
+#define VAR_HTTP_USER_AGENT 500
+#define VAR_TRUST_ANCHOR_SIGNALING 501
+#define VAR_AGGRESSIVE_NSEC 502
+#define VAR_USE_SYSTEMD 503
+#define VAR_SHM_ENABLE 504
+#define VAR_SHM_KEY 505
+#define VAR_ROOT_KEY_SENTINEL 506
+#define VAR_DNSCRYPT 507
+#define VAR_DNSCRYPT_ENABLE 508
+#define VAR_DNSCRYPT_PORT 509
+#define VAR_DNSCRYPT_PROVIDER 510
+#define VAR_DNSCRYPT_SECRET_KEY 511
+#define VAR_DNSCRYPT_PROVIDER_CERT 512
+#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 513
+#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 514
+#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 515
+#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 516
+#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 517
+#define VAR_PAD_RESPONSES 518
+#define VAR_PAD_RESPONSES_BLOCK_SIZE 519
+#define VAR_PAD_QUERIES 520
+#define VAR_PAD_QUERIES_BLOCK_SIZE 521
+#define VAR_IPSECMOD_ENABLED 522
+#define VAR_IPSECMOD_HOOK 523
+#define VAR_IPSECMOD_IGNORE_BOGUS 524
+#define VAR_IPSECMOD_MAX_TTL 525
+#define VAR_IPSECMOD_WHITELIST 526
+#define VAR_IPSECMOD_STRICT 527
+#define VAR_CACHEDB 528
+#define VAR_CACHEDB_BACKEND 529
+#define VAR_CACHEDB_SECRETSEED 530
+#define VAR_CACHEDB_REDISHOST 531
+#define VAR_CACHEDB_REDISPORT 532
+#define VAR_CACHEDB_REDISTIMEOUT 533
+#define VAR_CACHEDB_REDISEXPIRERECORDS 534
+#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 535
+#define VAR_FOR_UPSTREAM 536
+#define VAR_AUTH_ZONE 537
+#define VAR_ZONEFILE 538
+#define VAR_MASTER 539
+#define VAR_URL 540
+#define VAR_FOR_DOWNSTREAM 541
+#define VAR_FALLBACK_ENABLED 542
+#define VAR_TLS_ADDITIONAL_PORT 543
+#define VAR_LOW_RTT 544
+#define VAR_LOW_RTT_PERMIL 545
+#define VAR_FAST_SERVER_PERMIL 546
+#define VAR_FAST_SERVER_NUM 547
+#define VAR_ALLOW_NOTIFY 548
+#define VAR_TLS_WIN_CERT 549
+#define VAR_TCP_CONNECTION_LIMIT 550
+#define VAR_FORWARD_NO_CACHE 551
+#define VAR_STUB_NO_CACHE 552
+#define VAR_LOG_SERVFAIL 553
+#define VAR_DENY_ANY 554
+#define VAR_UNKNOWN_SERVER_TIME_LIMIT 555
+#define VAR_LOG_TAG_QUERYREPLY 556
+#define VAR_STREAM_WAIT_SIZE 557
+#define VAR_TLS_CIPHERS 558
+#define VAR_TLS_CIPHERSUITES 559
+#define VAR_TLS_USE_SNI 560
+#define VAR_IPSET 561
+#define VAR_IPSET_NAME_V4 562
+#define VAR_IPSET_NAME_V6 563
+#define VAR_TLS_SESSION_TICKET_KEYS 564
+#define VAR_RPZ 565
+#define VAR_TAGS 566
+#define VAR_RPZ_ACTION_OVERRIDE 567
+#define VAR_RPZ_CNAME_OVERRIDE 568
+#define VAR_RPZ_LOG 569
+#define VAR_RPZ_LOG_NAME 570
+#define VAR_DYNLIB 571
+#define VAR_DYNLIB_FILE 572
+#define VAR_EDNS_CLIENT_STRING 573
+#define VAR_EDNS_CLIENT_STRING_OPCODE 574
+#define VAR_NSID 575
+#define VAR_ZONEMD_PERMISSIVE_MODE 576
+#define VAR_ZONEMD_CHECK 577
+#define VAR_ZONEMD_REJECT_ABSENCE 578
+#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 579
+#define VAR_INTERFACE_AUTOMATIC_PORTS 580
+#define VAR_EDE 581
 
-/* Value type.  */
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-union YYSTYPE
-{
-#line 66 "./util/configparser.y"
 
-       char*   str;
 
-#line 719 "util/configparser.h"
 
-};
-typedef union YYSTYPE YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
+#line 66 "./util/configparser.y"
+{
+       char*   str;
+}
+/* Line 1529 of yacc.c.  */
+#line 705 "util/configparser.h"
+       YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
 #endif
 
-
 extern YYSTYPE yylval;
 
-int yyparse (void);
-
-#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED  */
index 946bd432e4fbd8d80de725cb3a6226ec63d4ed8f..c003f33583903c46da4bf97d346613d5c4fc1055 100644 (file)
@@ -155,7 +155,8 @@ 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_SERVE_EXPIRED_TTL
 %token VAR_SERVE_EXPIRED_TTL_RESET VAR_SERVE_EXPIRED_REPLY_TTL
-%token VAR_SERVE_EXPIRED_CLIENT_TIMEOUT VAR_SERVE_ORIGINAL_TTL VAR_FAKE_DSA
+%token VAR_SERVE_EXPIRED_CLIENT_TIMEOUT VAR_EDE_SERVE_EXPIRED
+%token VAR_SERVE_ORIGINAL_TTL VAR_FAKE_DSA
 %token VAR_FAKE_SHA1 VAR_LOG_IDENTITY VAR_HIDE_TRUSTANCHOR
 %token VAR_HIDE_HTTP_USER_AGENT VAR_HTTP_USER_AGENT
 %token VAR_TRUST_ANCHOR_SIGNALING VAR_AGGRESSIVE_NSEC VAR_USE_SYSTEMD
@@ -188,7 +189,7 @@ extern struct config_parser_state* cfg_parser;
 %token VAR_DYNLIB VAR_DYNLIB_FILE VAR_EDNS_CLIENT_STRING
 %token VAR_EDNS_CLIENT_STRING_OPCODE VAR_NSID
 %token VAR_ZONEMD_PERMISSIVE_MODE VAR_ZONEMD_CHECK VAR_ZONEMD_REJECT_ABSENCE
-%token VAR_RPZ_SIGNAL_NXDOMAIN_RA VAR_INTERFACE_AUTOMATIC_PORTS
+%token VAR_RPZ_SIGNAL_NXDOMAIN_RA VAR_INTERFACE_AUTOMATIC_PORTS VAR_EDE
 
 %%
 toplevelvars: /* empty */ | toplevelvars toplevelvar ;
@@ -292,7 +293,7 @@ content_server: server_num_threads | server_verbosity | server_port |
        server_serve_expired |
        server_serve_expired_ttl | server_serve_expired_ttl_reset |
        server_serve_expired_reply_ttl | server_serve_expired_client_timeout |
-       server_serve_original_ttl | server_fake_dsa | 
+       server_ede_serve_expired | server_serve_original_ttl | server_fake_dsa | 
        server_log_identity | server_use_systemd |
        server_response_ip_tag | server_response_ip | server_response_ip_data |
        server_shm_enable | server_shm_key | server_fake_sha1 |
@@ -312,7 +313,7 @@ content_server: server_num_threads | server_verbosity | server_port |
        server_edns_client_string_opcode | server_nsid |
        server_zonemd_permissive_mode | server_max_reuse_tcp_queries |
        server_tcp_reuse_timeout | server_tcp_auth_query_timeout |
-       server_interface_automatic_ports
+       server_interface_automatic_ports | server_ede
 
        ;
 stubstart: VAR_STUB_ZONE
@@ -2034,6 +2035,15 @@ server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG
                free($2);
        }
        ;
+server_ede_serve_expired: VAR_EDE_SERVE_EXPIRED STRING_ARG
+       {
+               OUTYY(("P(server_ede_serve_expired:%s)\n", $2));
+               if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->ede_serve_expired = (strcmp($2, "yes")==0);
+               free($2);
+       }
+       ;
 server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG
        {
                OUTYY(("P(server_serve_original_ttl:%s)\n", $2));
@@ -2731,7 +2741,15 @@ server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG
                        yyerror("option code must be in interval [0, 65535]");
                else cfg_parser->cfg->edns_client_string_opcode = atoi($2);
                free($2);
-
+       }
+       ;
+server_ede: VAR_EDE STRING_ARG
+       {
+               OUTYY(("P(server_ede:%s)\n", $2));
+               if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->ede = (strcmp($2, "yes")==0);
+               free($2);
        }
        ;
 stub_name: VAR_NAME STRING_ARG
index a600a8c60151655a35de8ccca664c04132cd83f8..5bb69d6ed06fc2fff257bddb591def269c94236c 100644 (file)
@@ -1157,7 +1157,7 @@ skip_pkt_rr(sldns_buffer* pkt)
 }
 
 /** skip RRs from packet */
-static int
+int
 skip_pkt_rrs(sldns_buffer* pkt, int num)
 {
        int i;
@@ -1235,3 +1235,4 @@ log_edns_opt_list(enum verbosity_value level, const char* info_str,
                }
        }
 }
+
index 4c0559a739a4e755c756e5d83f8c13c0074a603d..0c458e6e8e251e2a9200af44bfaf6fac3166dfff 100644 (file)
@@ -293,6 +293,15 @@ int parse_packet(struct sldns_buffer* pkt, struct msg_parse* msg,
 int parse_extract_edns_from_response_msg(struct msg_parse* msg,
        struct edns_data* edns, struct regional* region);
 
+/**
+ * Skip RRs from packet
+ * @param pkt: the packet. position at start must be right after the query
+ *     section. At end, right after EDNS data or no movement if failed.
+ * @param num: Limit of the number of records we want to parse.
+ * @return: 0 on success, 1 on failure.
+ */
+int skip_pkt_rrs(struct sldns_buffer* pkt, int num);
+
 /**
  * If EDNS data follows a query section, extract it and initialize edns struct.
  * @param pkt: the packet. position at start must be right after the query
index ec46e47247800e3b5e3cdf028f5e191f5202781c..e3ee607b15400048033dba21d2d4065818c53e57 100644 (file)
@@ -117,6 +117,7 @@ construct_reply_info_base(struct regional* region, uint16_t flags, size_t qd,
        rep->ar_numrrsets = ar;
        rep->rrset_count = total;
        rep->security = sec;
+       rep->reason_bogus = LDNS_EDE_NONE;
        rep->authoritative = 0;
        /* array starts after the refs */
        if(region)
@@ -989,6 +990,36 @@ parse_reply_in_temp_region(sldns_buffer* pkt, struct regional* region,
        return rep;
 }
 
+int edns_opt_list_append_ede(struct edns_option** list, struct regional* region,
+       sldns_ede_code code, const char *txt)
+{
+       struct edns_option** prevp;
+       struct edns_option* opt;
+       size_t txt_len = txt ? strlen(txt) : 0;
+
+       /* allocate new element */
+       opt = (struct edns_option*)regional_alloc(region, sizeof(*opt));
+       if(!opt)
+               return 0;
+       opt->next = NULL;
+       opt->opt_code = LDNS_EDNS_EDE;
+       opt->opt_len = txt_len + sizeof(uint16_t);
+       opt->opt_data = regional_alloc(region, txt_len + sizeof(uint16_t));
+       if(!opt->opt_data)
+               return 0;
+       sldns_write_uint16(opt->opt_data, (uint16_t)code);
+       if (txt_len)
+               memmove(opt->opt_data + 2, txt, txt_len);
+
+       /* append at end of list */
+       prevp = list;
+       while(*prevp != NULL)
+               prevp = &((*prevp)->next);
+       verbose(VERB_ALGO, "attached EDE code: %d with message: %s", code, txt);
+       *prevp = opt;
+       return 1;
+}
+
 int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len,
        uint8_t* data, struct regional* region)
 {
index 81c763fc7c3a247f04a5519594581e09ec175c4f..9538adc5a8b2bf7d48b02c72b2c53af14bfa9777 100644 (file)
@@ -43,6 +43,7 @@
 #define UTIL_DATA_MSGREPLY_H
 #include "util/storage/lruhash.h"
 #include "util/data/packed_rrset.h"
+#include "sldns/rrdef.h"
 struct sldns_buffer;
 struct comm_reply;
 struct alloc_cache;
@@ -167,6 +168,11 @@ struct reply_info {
         */
        enum sec_status security;
 
+       /**
+        * EDE (rfc8914) code with reason for DNSSEC bogus status.
+        */
+       sldns_ede_code reason_bogus;
+
        /**
         * Number of RRsets in each section.
         * The answer section. Add up the RRs in every RRset to calculate
@@ -528,7 +534,38 @@ void log_query_info(enum verbosity_value v, const char* str,
  * @return false on failure.
  */
 int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len,
-       uint8_t* data, struct regional* region);
+        uint8_t* data, struct regional* region);
+
+/**
+ * Append edns EDE option to edns options list
+ * @param LIST: the edns option list to append the edns option to.
+ * @param REGION: region to allocate the new edns option.
+ * @param CODE: the EDE code.
+ * @param TXT: Additional text for the option
+ */
+#define EDNS_OPT_LIST_APPEND_EDE(LIST, REGION, CODE, TXT)              \
+       do {                                                            \
+               struct {                                                \
+                       uint16_t code;                                  \
+                       char text[sizeof(TXT) - 1];                     \
+               } ede = { htons(CODE), TXT };                           \
+                verbose(VERB_ALGO, "attached EDE code: %d with"                \
+                        " message: %s", CODE, TXT);                    \
+               edns_opt_list_append((LIST), LDNS_EDNS_EDE,             \
+                       sizeof(uint16_t) + sizeof(TXT) - 1,             \
+                       (void *)&ede, (REGION));                        \
+       } while(0)
+
+/**
+ * Append edns EDE option to edns options list
+ * @param list: the edns option list to append the edns option to.
+ * @param region: region to allocate the new edns option.
+ * @param code: the EDE code.
+ * @param txt: Additional text for the option
+ * @return false on failure.
+ */
+int edns_opt_list_append_ede(struct edns_option** list, struct regional* region,
+       sldns_ede_code code, const char *txt);
 
 /**
  * Remove any option found on the edns option list that matches the code.
index f16583183bfef8ffaae8972c35e5b134ebd4fe2f..6698f94971b813f28bb864f1bd89680452095e96 100644 (file)
 #include "config.h"
 #include "util/module.h"
 #include "sldns/wire2str.h"
+#include "util/config_file.h"
+#include "util/regional.h"
+#include "util/data/dname.h"
+#include "util/net_help.h"
 
 const char* 
 strextstate(enum module_ext_state s)
@@ -71,6 +75,144 @@ strmodulevent(enum module_ev e)
        return "bad_event_value";
 }
 
+void errinf(struct module_qstate* qstate, const char* str)
+{
+       errinf_ede(qstate, str, LDNS_EDE_NONE);
+}
+
+void errinf_ede(struct module_qstate* qstate,
+       const char* str, sldns_ede_code reason_bogus)
+{
+       struct errinf_strlist* p;
+       if((qstate->env->cfg->val_log_level < 2 && !qstate->env->cfg->log_servfail) || !str)
+               return;
+       p = (struct errinf_strlist*)regional_alloc(qstate->region, sizeof(*p));
+       if(!p) {
+               log_err("malloc failure in validator-error-info string");
+               return;
+       }
+       p->next = NULL;
+       p->str = regional_strdup(qstate->region, str);
+       p->reason_bogus = reason_bogus;
+       if(!p->str) {
+               log_err("malloc failure in validator-error-info string");
+               return;
+       }
+       /* add at end */
+       if(qstate->errinf) {
+               struct errinf_strlist* q = qstate->errinf;
+               while(q->next)
+                       q = q->next;
+               q->next = p;
+       } else  qstate->errinf = p;
+}
+
+void errinf_origin(struct module_qstate* qstate, struct sock_list *origin)
+{
+       struct sock_list* p;
+       if(qstate->env->cfg->val_log_level < 2 && !qstate->env->cfg->log_servfail)
+               return;
+       for(p=origin; p; p=p->next) {
+               char buf[256];
+               if(p == origin)
+                       snprintf(buf, sizeof(buf), "from ");
+               else    snprintf(buf, sizeof(buf), "and ");
+               if(p->len == 0)
+                       snprintf(buf+strlen(buf), sizeof(buf)-strlen(buf), 
+                               "cache");
+               else 
+                       addr_to_str(&p->addr, p->len, buf+strlen(buf),
+                               sizeof(buf)-strlen(buf));
+               errinf(qstate, buf);
+       }
+}
+
+char* errinf_to_str_bogus(struct module_qstate* qstate)
+{
+       char buf[20480];
+       char* p = buf;
+       size_t left = sizeof(buf);
+       struct errinf_strlist* s;
+       char dname[LDNS_MAX_DOMAINLEN+1];
+       char t[16], c[16];
+       sldns_wire2str_type_buf(qstate->qinfo.qtype, t, sizeof(t));
+       sldns_wire2str_class_buf(qstate->qinfo.qclass, c, sizeof(c));
+       dname_str(qstate->qinfo.qname, dname);
+       snprintf(p, left, "validation failure <%s %s %s>:", dname, t, c);
+       left -= strlen(p); p += strlen(p);
+       if(!qstate->errinf)
+               snprintf(p, left, " misc failure");
+       else for(s=qstate->errinf; s; s=s->next) {
+               snprintf(p, left, " %s", s->str);
+               left -= strlen(p); p += strlen(p);
+       }
+       p = strdup(buf);
+       if(!p)
+               log_err("malloc failure in errinf_to_str");
+       return p;
+}
+
+sldns_ede_code errinf_to_reason_bogus(struct module_qstate* qstate)
+{
+       struct errinf_strlist* s;
+       for(s=qstate->errinf; s; s=s->next) {
+               if (s->reason_bogus != LDNS_EDE_NONE) {
+                       return s->reason_bogus;
+               }
+       }
+       return LDNS_EDE_NONE;
+}
+
+char* errinf_to_str_servfail(struct module_qstate* qstate)
+{
+       char buf[20480];
+       char* p = buf;
+       size_t left = sizeof(buf);
+       struct errinf_strlist* s;
+       char dname[LDNS_MAX_DOMAINLEN+1];
+       char t[16], c[16];
+       sldns_wire2str_type_buf(qstate->qinfo.qtype, t, sizeof(t));
+       sldns_wire2str_class_buf(qstate->qinfo.qclass, c, sizeof(c));
+       dname_str(qstate->qinfo.qname, dname);
+       snprintf(p, left, "SERVFAIL <%s %s %s>:", dname, t, c);
+       left -= strlen(p); p += strlen(p);
+       if(!qstate->errinf)
+               snprintf(p, left, " misc failure");
+       else for(s=qstate->errinf; s; s=s->next) {
+               snprintf(p, left, " %s", s->str);
+               left -= strlen(p); p += strlen(p);
+       }
+       p = strdup(buf);
+       if(!p)
+               log_err("malloc failure in errinf_to_str");
+       return p;
+}
+
+void errinf_rrset(struct module_qstate* qstate, struct ub_packed_rrset_key *rr)
+{
+       char buf[1024];
+       char dname[LDNS_MAX_DOMAINLEN+1];
+       char t[16], c[16];
+       if((qstate->env->cfg->val_log_level < 2 && !qstate->env->cfg->log_servfail) || !rr)
+               return;
+       sldns_wire2str_type_buf(ntohs(rr->rk.type), t, sizeof(t));
+       sldns_wire2str_class_buf(ntohs(rr->rk.rrset_class), c, sizeof(c));
+       dname_str(rr->rk.dname, dname);
+       snprintf(buf, sizeof(buf), "for <%s %s %s>", dname, t, c);
+       errinf(qstate, buf);
+}
+
+void errinf_dname(struct module_qstate* qstate, const char* str, uint8_t* dname)
+{
+       char b[1024];
+       char buf[LDNS_MAX_DOMAINLEN+1];
+       if((qstate->env->cfg->val_log_level < 2 && !qstate->env->cfg->log_servfail) || !str || !dname)
+               return;
+       dname_str(dname, buf);
+       snprintf(b, sizeof(b), "%s %s", str, buf);
+       errinf(qstate, b);
+}
+
 int
 edns_known_options_init(struct module_env* env)
 {
index 1ae7477cbd77b26a33cea08465a5df87b3777663..33068a71ce6eff1ddeec7fc53215437848a1a97b 100644 (file)
@@ -187,6 +187,15 @@ struct respip_addr_info;
 /** Maximum number of known edns options */
 #define MAX_KNOWN_EDNS_OPTS 256
 
+struct errinf_strlist {
+    /** next item in list */
+    struct errinf_strlist* next;
+    /** config option string */
+    char* str;
+    /** EDE code companion to the error str */
+    int reason_bogus;
+};
+
 enum inplace_cb_list_type {
        /* Inplace callbacks for when a resolved reply is ready to be sent to the
         * front.*/
@@ -624,8 +633,7 @@ struct module_qstate {
        /** region for this query. Cleared when query process finishes. */
        struct regional* region;
        /** failure reason information if val-log-level is high */
-       struct config_strlist* errinf;
-
+       struct errinf_strlist* errinf;
        /** which module is executing */
        int curmod;
        /** module states */
@@ -761,6 +769,65 @@ const char* strextstate(enum module_ext_state s);
  */
 const char* strmodulevent(enum module_ev e);
 
+/**
+ * Append text to the error info for validation.
+ * @param qstate: query state.
+ * @param str: copied into query region and appended.
+ * Failures to allocate are logged.
+ */
+void errinf(struct module_qstate* qstate, const char* str);
+void errinf_ede(struct module_qstate* qstate, const char* str,
+                sldns_ede_code reason_bogus);
+
+/**
+ * Append text to error info:  from 1.2.3.4
+ * @param qstate: query state.
+ * @param origin: sock list with origin of trouble. 
+ *  Every element added.
+ *  If NULL: nothing is added.
+ *  if 0len element: 'from cache' is added.
+ */
+void errinf_origin(struct module_qstate* qstate, struct sock_list *origin);
+
+/**
+ * Append text to error info:  for RRset name type class
+ * @param qstate: query state.
+ * @param rr: rrset_key.
+ */
+void errinf_rrset(struct module_qstate* qstate, struct ub_packed_rrset_key *rr);
+
+/**
+ * Append text to error info:  str dname
+ * @param qstate: query state.
+ * @param str: explanation string
+ * @param dname: the dname.
+ */
+void errinf_dname(struct module_qstate* qstate, const char* str, 
+    uint8_t* dname);
+
+/**
+ * Create error info in string.  For validation failures.
+ * @param qstate: query state.
+ * @return string or NULL on malloc failure (already logged).
+ *    This string is malloced and has to be freed by caller.
+ */
+char* errinf_to_str_bogus(struct module_qstate* qstate);
+/**
+ * Check the sldns_ede_code of the qstate.
+ * @param qstate: query state.
+ * @return LDNS_EDE_DNSSEC_BOGUS by default, or the first explicitly set
+ *   sldns_ede_code.
+ */
+sldns_ede_code errinf_to_reason_bogus(struct module_qstate* qstate);
+
+/**
+ * Create error info in string.  For other servfails.
+ * @param qstate: query state.
+ * @return string or NULL on malloc failure (already logged).
+ *    This string is malloced and has to be freed by caller.
+ */
+char* errinf_to_str_servfail(struct module_qstate* qstate);
+
 /**
  * Initialize the edns known options by allocating the required space.
  * @param env: the module environment.
index 96776a1f53b46840c4bb90df84b5837e9e235e34..3cdf9ceae851d2199f84ab0bc9e6f0bd9bcf0abf 100644 (file)
@@ -1263,7 +1263,7 @@ verify_dnskey(struct module_env* env, struct val_env* ve,
        int downprot = env->cfg->harden_algo_downgrade;
        enum sec_status sec = val_verify_DNSKEY_with_TA(env, ve, rrset,
                tp->ds_rrset, tp->dnskey_rrset, downprot?sigalg:NULL, &reason,
-               qstate);
+               NULL, qstate);
        /* sigalg is ignored, it returns algorithms signalled to exist, but
         * in 5011 there are no other rrsets to check.  if downprot is
         * enabled, then it checks that the DNSKEY is signed with all
@@ -1312,7 +1312,7 @@ rr_is_selfsigned_revoked(struct module_env* env, struct val_env* ve,
        /* no algorithm downgrade protection necessary, if it is selfsigned
         * revoked it can be removed. */
        sec = dnskey_verify_rrset(env, ve, dnskey_rrset, dnskey_rrset, i, 
-               &reason, LDNS_SECTION_ANSWER, qstate);
+               &reason, NULL, LDNS_SECTION_ANSWER, qstate);
        return (sec == sec_status_secure);
 }
 
index e0b88b6df81dcc333e1014600a8c6497e2294072..c190085b56ffc0b11c04667f90ae03b5de276ffa 100644 (file)
@@ -90,6 +90,7 @@ key_cache_insert(struct key_cache* kcache, struct key_entry_key* kkey,
                qstate->env->cfg->val_log_level >= 2) {
                /* on malloc failure there is simply no reason string */
                key_entry_set_reason(k, errinf_to_str_bogus(qstate));
+               key_entry_set_reason_bogus(k, errinf_to_reason_bogus(qstate));
        }
        key_entry_hash(k);
        slabhash_insert(kcache->slab, k->entry.hash, &k->entry, 
index 93fe2145e6f85c640b980fc5e0b747e65818b199..a47feba61a9ff3c4f6a7e181ec1150ae06b5aef0 100644 (file)
@@ -244,6 +244,15 @@ key_entry_set_reason(struct key_entry_key* kkey, char* reason)
        d->reason = reason;
 }
 
+void
+key_entry_set_reason_bogus(struct key_entry_key* kkey, sldns_ede_code ede)
+{
+       struct key_entry_data* d = (struct key_entry_data*)kkey->entry.data;
+       if (ede != LDNS_EDE_NONE) { /* reason_bogus init is LDNS_EDE_NONE already */
+               d->reason_bogus = ede;
+       }
+}
+
 char*
 key_entry_get_reason(struct key_entry_key* kkey)
 {
@@ -251,6 +260,14 @@ key_entry_get_reason(struct key_entry_key* kkey)
        return d->reason;
 }
 
+sldns_ede_code
+key_entry_get_reason_bogus(struct key_entry_key* kkey)
+{
+       struct key_entry_data* d = (struct key_entry_data*)kkey->entry.data;
+       return d->reason_bogus;
+
+}
+
 /** setup key entry in region */
 static int
 key_entry_setup(struct regional* region,
@@ -286,6 +303,7 @@ key_entry_create_null(struct regional* region,
        d->ttl = now + ttl;
        d->isbad = 0;
        d->reason = NULL;
+       d->reason_bogus = LDNS_EDE_NONE;
        d->rrset_type = LDNS_RR_TYPE_DNSKEY;
        d->rrset_data = NULL;
        d->algo = NULL;
@@ -306,6 +324,7 @@ key_entry_create_rrset(struct regional* region,
        d->ttl = rd->ttl + now;
        d->isbad = 0;
        d->reason = NULL;
+       d->reason_bogus = LDNS_EDE_NONE;
        d->rrset_type = ntohs(rrset->rk.type);
        d->rrset_data = (struct packed_rrset_data*)regional_alloc_init(region,
                rd, packed_rrset_sizeof(rd));
@@ -332,6 +351,7 @@ key_entry_create_bad(struct regional* region,
        d->ttl = now + ttl;
        d->isbad = 1;
        d->reason = NULL;
+       d->reason_bogus = LDNS_EDE_NONE;
        d->rrset_type = LDNS_RR_TYPE_DNSKEY;
        d->rrset_data = NULL;
        d->algo = NULL;
index ade65571a57aa2c2e6505e3ed6065b1c8dc44189..ded45beaa71d66d5367db61db7b7b76696c178d9 100644 (file)
@@ -45,6 +45,7 @@ struct packed_rrset_data;
 struct regional;
 struct ub_packed_rrset_key;
 #include "util/storage/lruhash.h"
+#include "sldns/rrdef.h"
 
 /**
  * A key entry for the validator.
@@ -80,6 +81,8 @@ struct key_entry_data {
        struct packed_rrset_data* rrset_data;
        /** not NULL sometimes to give reason why bogus */
        char* reason;
+        /** not NULL to give reason why bogus */
+        sldns_ede_code reason_bogus;
        /** list of algorithms signalled, ends with 0, or NULL */
        uint8_t* algo;
        /** DNS RR type of the rrset data (host order) */
@@ -150,6 +153,15 @@ int key_entry_isbad(struct key_entry_key* kkey);
  */
 void key_entry_set_reason(struct key_entry_key* kkey, char* reason);
 
+/**
+ * Set the EDE (RFC8914) code why the key is bad, if it
+ * exists (so not LDNS_EDE_NONE).
+ * @param kkey: bad key.
+ * @param ede: EDE code to attach to this key.
+ */
+void key_entry_set_reason_bogus(struct key_entry_key* kkey, sldns_ede_code ede);
+
+
 /**
  * Get reason why a key is bad.
  * @param kkey: bad key
@@ -158,6 +170,13 @@ void key_entry_set_reason(struct key_entry_key* kkey, char* reason);
  */
 char* key_entry_get_reason(struct key_entry_key* kkey);
 
+/**
+ * Get the EDE (RFC8914) code why a key is bad. Can return LDNS_EDE_NONE.
+ * @param kkey: bad key
+ * @return the ede code.
+ */
+sldns_ede_code key_entry_get_reason_bogus(struct key_entry_key* kkey);
+
 /**
  * Create a null entry, in the given region.
  * @param region: where to allocate
index a4e5b3137dbf7c819d4c0aa940b34812e09c0781..876bfab6dbbd93b37591899a129086985ccfe128 100644 (file)
@@ -187,7 +187,7 @@ nsec_verify_rrset(struct module_env* env, struct val_env* ve,
        if(d->security == sec_status_secure)
                return 1;
        d->security = val_verify_rrset_entry(env, ve, nsec, kkey, reason,
-               LDNS_SECTION_AUTHORITY, qstate);
+               NULL, LDNS_SECTION_AUTHORITY, qstate);
        if(d->security == sec_status_secure) {
                rrset_update_sec_status(env->rrset_cache, nsec, *env->now);
                return 1;
index 763b5ab7c767d4ad55db2c3ee484e9754da0c9ae..a2b3794f6019a02ce5b2a22b9024df63983f88af 100644 (file)
@@ -1289,7 +1289,8 @@ nsec3_prove_wildcard(struct module_env* env, struct val_env* ve,
 static int
 list_is_secure(struct module_env* env, struct val_env* ve, 
        struct ub_packed_rrset_key** list, size_t num,
-       struct key_entry_key* kkey, char** reason, struct module_qstate* qstate)
+       struct key_entry_key* kkey, char** reason, sldns_ede_code *reason_bogus,
+       struct module_qstate* qstate)
 {
        struct packed_rrset_data* d;
        size_t i;
@@ -1303,7 +1304,7 @@ list_is_secure(struct module_env* env, struct val_env* ve,
                if(d->security == sec_status_secure)
                        continue;
                d->security = val_verify_rrset_entry(env, ve, list[i], kkey,
-                       reason, LDNS_SECTION_AUTHORITY, qstate);
+                       reason, reason_bogus, LDNS_SECTION_AUTHORITY, qstate);
                if(d->security != sec_status_secure) {
                        verbose(VERB_ALGO, "NSEC3 did not verify");
                        return 0;
@@ -1317,7 +1318,7 @@ enum sec_status
 nsec3_prove_nods(struct module_env* env, struct val_env* ve,
        struct ub_packed_rrset_key** list, size_t num,
        struct query_info* qinfo, struct key_entry_key* kkey, char** reason,
-       struct module_qstate* qstate)
+       sldns_ede_code* reason_bogus, struct module_qstate* qstate)
 {
        rbtree_type ct;
        struct nsec3_filter flt;
@@ -1330,8 +1331,10 @@ nsec3_prove_nods(struct module_env* env, struct val_env* ve,
                *reason = "no valid NSEC3s";
                return sec_status_bogus; /* no valid NSEC3s, bogus */
        }
-       if(!list_is_secure(env, ve, list, num, kkey, reason, qstate))
+       if(!list_is_secure(env, ve, list, num, kkey, reason, reason_bogus, qstate)) {
+               *reason = "not all NSEC3 records secure";
                return sec_status_bogus; /* not all NSEC3 records secure */
+       }
        rbtree_init(&ct, &nsec3_hash_cmp); /* init names-to-hash cache */
        filter_init(&flt, list, num, qinfo); /* init RR iterator */
        if(!flt.zone) {
index 7fd37c169052f47cb5bc434bddc1dab32451e2c9..7676fc8b282dbefce3917af26221fe65d9ae766a 100644 (file)
@@ -68,6 +68,7 @@
 #define VALIDATOR_VAL_NSEC3_H
 #include "util/rbtree.h"
 #include "util/data/packed_rrset.h"
+#include "sldns/rrdef.h"
 struct val_env;
 struct regional;
 struct module_env;
@@ -186,6 +187,7 @@ nsec3_prove_wildcard(struct module_env* env, struct val_env* ve,
  * @param qinfo: query that is verified for.
  * @param kkey: key entry that signed the NSEC3s.
  * @param reason: string for bogus result.
+ * @param reason_bogus: EDE (RFC8914) code paired with the reason of failure.
  * @param qstate: qstate with region.
  * @return:
  *     sec_status SECURE of the proposition is proven by the NSEC3 RRs, 
@@ -197,7 +199,7 @@ enum sec_status
 nsec3_prove_nods(struct module_env* env, struct val_env* ve,
        struct ub_packed_rrset_key** list, size_t num, 
        struct query_info* qinfo, struct key_entry_key* kkey, char** reason,
-       struct module_qstate* qstate);
+       sldns_ede_code* reason_bogus, struct module_qstate* qstate);
 
 /**
  * Prove NXDOMAIN or NODATA.
index b15fba3f499d44951b5cea0d65392cc42afe4940..d5f16b11f819af6c2b155235774cf9e4df0c2a98 100644 (file)
@@ -525,11 +525,19 @@ int algo_needs_missing(struct algo_needs* n)
        return 0;
 }
 
+static enum sec_status
+dnskeyset_verify_rrset_sig(struct module_env* env, struct val_env* ve,
+       time_t now, struct ub_packed_rrset_key* rrset,
+       struct ub_packed_rrset_key* dnskey, size_t sig_idx,
+       struct rbtree_type** sortree,
+       char** reason, sldns_ede_code *reason_bogus,
+       sldns_pkt_section section, struct module_qstate* qstate);
+
 enum sec_status 
 dnskeyset_verify_rrset(struct module_env* env, struct val_env* ve,
        struct ub_packed_rrset_key* rrset, struct ub_packed_rrset_key* dnskey,
-       uint8_t* sigalg, char** reason, sldns_pkt_section section, 
-       struct module_qstate* qstate)
+       uint8_t* sigalg, char** reason, sldns_ede_code *reason_bogus,
+       sldns_pkt_section section, struct module_qstate* qstate)
 {
        enum sec_status sec;
        size_t i, num;
@@ -543,6 +551,8 @@ dnskeyset_verify_rrset(struct module_env* env, struct val_env* ve,
                verbose(VERB_QUERY, "rrset failed to verify due to a lack of "
                        "signatures");
                *reason = "no signatures";
+               if(reason_bogus)
+                       *reason_bogus = LDNS_EDE_RRSIGS_MISSING;
                return sec_status_bogus;
        }
 
@@ -551,12 +561,15 @@ dnskeyset_verify_rrset(struct module_env* env, struct val_env* ve,
                if(algo_needs_num_missing(&needs) == 0) {
                        verbose(VERB_QUERY, "zone has no known algorithms");
                        *reason = "zone has no known algorithms";
+                       if(reason_bogus)
+                               *reason_bogus = LDNS_EDE_UNSUPPORTED_DNSKEY_ALG;
                        return sec_status_insecure;
                }
        }
        for(i=0; i<num; i++) {
                sec = dnskeyset_verify_rrset_sig(env, ve, *env->now, rrset, 
-                       dnskey, i, &sortree, reason, section, qstate);
+                       dnskey, i, &sortree, reason, reason_bogus,
+                       section, qstate);
                /* see which algorithm has been fixed up */
                if(sec == sec_status_secure) {
                        if(!sigalg)
@@ -597,8 +610,8 @@ void algo_needs_reason(struct module_env* env, int alg, char** reason, char* s)
 enum sec_status 
 dnskey_verify_rrset(struct module_env* env, struct val_env* ve,
         struct ub_packed_rrset_key* rrset, struct ub_packed_rrset_key* dnskey,
-       size_t dnskey_idx, char** reason, sldns_pkt_section section,
-       struct module_qstate* qstate)
+       size_t dnskey_idx, char** reason, sldns_ede_code *reason_bogus,
+       sldns_pkt_section section, struct module_qstate* qstate)
 {
        enum sec_status sec;
        size_t i, num, numchecked = 0;
@@ -612,6 +625,8 @@ dnskey_verify_rrset(struct module_env* env, struct val_env* ve,
                verbose(VERB_QUERY, "rrset failed to verify due to a lack of "
                        "signatures");
                *reason = "no signatures";
+               if(reason_bogus)
+                       *reason_bogus = LDNS_EDE_RRSIGS_MISSING;
                return sec_status_bogus;
        }
        for(i=0; i<num; i++) {
@@ -620,10 +635,10 @@ dnskey_verify_rrset(struct module_env* env, struct val_env* ve,
                        tag != rrset_get_sig_keytag(rrset, i))
                        continue;
                buf_canon = 0;
-               sec = dnskey_verify_rrset_sig(env->scratch, 
+               sec = dnskey_verify_rrset_sig(env->scratch,
                        env->scratch_buffer, ve, *env->now, rrset, 
                        dnskey, dnskey_idx, i, &sortree, &buf_canon, reason,
-                       section, qstate);
+                       reason_bogus, section, qstate);
                if(sec == sec_status_secure)
                        return sec;
                numchecked ++;
@@ -633,12 +648,13 @@ dnskey_verify_rrset(struct module_env* env, struct val_env* ve,
        return sec_status_bogus;
 }
 
-enum sec_status 
-dnskeyset_verify_rrset_sig(struct module_env* env, struct val_env* ve, 
-       time_t now, struct ub_packed_rrset_key* rrset, 
-       struct ub_packed_rrset_key* dnskey, size_t sig_idx, 
-       struct rbtree_type** sortree, char** reason, sldns_pkt_section section,
-       struct module_qstate* qstate)
+static enum sec_status
+dnskeyset_verify_rrset_sig(struct module_env* env, struct val_env* ve,
+       time_t now, struct ub_packed_rrset_key* rrset,
+       struct ub_packed_rrset_key* dnskey, size_t sig_idx,
+       struct rbtree_type** sortree,
+       char** reason, sldns_ede_code *reason_bogus,
+       sldns_pkt_section section, struct module_qstate* qstate)
 {
        /* find matching keys and check them */
        enum sec_status sec = sec_status_bogus;
@@ -649,10 +665,12 @@ dnskeyset_verify_rrset_sig(struct module_env* env, struct val_env* ve,
        int buf_canon = 0;
        verbose(VERB_ALGO, "verify sig %d %d", (int)tag, algo);
        if(!dnskey_algo_id_is_supported(algo)) {
+               if(reason_bogus)
+                       *reason_bogus = LDNS_EDE_UNSUPPORTED_DNSKEY_ALG;
                verbose(VERB_QUERY, "verify sig: unknown algorithm");
                return sec_status_insecure;
        }
-       
+
        for(i=0; i<num; i++) {
                /* see if key matches keytag and algo */
                if(algo != dnskey_get_algo(dnskey, i) ||
@@ -661,14 +679,17 @@ dnskeyset_verify_rrset_sig(struct module_env* env, struct val_env* ve,
                numchecked ++;
 
                /* see if key verifies */
-               sec = dnskey_verify_rrset_sig(env->scratch, 
-                       env->scratch_buffer, ve, now, rrset, dnskey, i, 
-                       sig_idx, sortree, &buf_canon, reason, section, qstate);
+               sec = dnskey_verify_rrset_sig(env->scratch,
+                       env->scratch_buffer, ve, now, rrset, dnskey, i,
+                       sig_idx, sortree, &buf_canon, reason, reason_bogus,
+                       section, qstate);
                if(sec == sec_status_secure)
                        return sec;
        }
        if(numchecked == 0) {
                *reason = "signatures from unknown keys";
+               if(reason_bogus)
+                       *reason_bogus = LDNS_EDE_DNSKEY_MISSING;
                verbose(VERB_QUERY, "verify: could not find appropriate key");
                return sec_status_bogus;
        }
@@ -1361,8 +1382,8 @@ subtract_1982(uint32_t a, uint32_t b)
 
 /** check rrsig dates */
 static int
-check_dates(struct val_env* ve, uint32_t unow,
-       uint8_t* expi_p, uint8_t* incep_p, char** reason)
+check_dates(struct val_env* ve, uint32_t unow, uint8_t* expi_p,
+       uint8_t* incep_p, char** reason, sldns_ede_code *reason_bogus)
 {
        /* read out the dates */
        uint32_t expi, incep, now;
@@ -1386,6 +1407,14 @@ check_dates(struct val_env* ve, uint32_t unow,
                sigdate_error("verify: inception after expiration, "
                        "signature bad", expi, incep, now);
                *reason = "signature inception after expiration";
+               if(reason_bogus){
+                       /* from RFC8914 on Signature Not Yet Valid: The resolver
+                        * attempted to perform DNSSEC validation, but no
+                        * signatures are presently valid and at least some are
+                        * not yet valid. */
+                       *reason_bogus = LDNS_EDE_SIGNATURE_NOT_YET_VALID;
+               }
+
                return 0;
        }
        if(compare_1982(incep, now) > 0) {
@@ -1397,6 +1426,8 @@ check_dates(struct val_env* ve, uint32_t unow,
                        sigdate_error("verify: signature bad, current time is"
                                " before inception date", expi, incep, now);
                        *reason = "signature before inception date";
+                       if(reason_bogus)
+                               *reason_bogus = LDNS_EDE_SIGNATURE_NOT_YET_VALID;
                        return 0;
                }
                sigdate_error("verify warning suspicious signature inception "
@@ -1410,6 +1441,8 @@ check_dates(struct val_env* ve, uint32_t unow,
                        sigdate_error("verify: signature expired", expi, 
                                incep, now);
                        *reason = "signature expired";
+                       if(reason_bogus)
+                               *reason_bogus = LDNS_EDE_SIGNATURE_EXPIRED;
                        return 0;
                }
                sigdate_error("verify warning suspicious signature expiration "
@@ -1473,7 +1506,8 @@ dnskey_verify_rrset_sig(struct regional* region, sldns_buffer* buf,
        struct val_env* ve, time_t now,
         struct ub_packed_rrset_key* rrset, struct ub_packed_rrset_key* dnskey,
         size_t dnskey_idx, size_t sig_idx,
-       struct rbtree_type** sortree, int* buf_canon, char** reason,
+       struct rbtree_type** sortree, int* buf_canon,
+       char** reason, sldns_ede_code *reason_bogus,
        sldns_pkt_section section, struct module_qstate* qstate)
 {
        enum sec_status sec;
@@ -1492,12 +1526,16 @@ dnskey_verify_rrset_sig(struct regional* region, sldns_buffer* buf,
        if(siglen < 2+20) {
                verbose(VERB_QUERY, "verify: signature too short");
                *reason = "signature too short";
+               if(reason_bogus)
+                       *reason_bogus = LDNS_EDE_DNSSEC_BOGUS;
                return sec_status_bogus;
        }
 
        if(!(dnskey_get_flags(dnskey, dnskey_idx) & DNSKEY_BIT_ZSK)) {
                verbose(VERB_QUERY, "verify: dnskey without ZSK flag");
                *reason = "dnskey without ZSK flag";
+               if(reason_bogus)
+                       *reason_bogus = LDNS_EDE_NO_ZONE_KEY_BIT_SET;
                return sec_status_bogus; 
        }
 
@@ -1505,6 +1543,8 @@ dnskey_verify_rrset_sig(struct regional* region, sldns_buffer* buf,
                /* RFC 4034 says DNSKEY PROTOCOL MUST be 3 */
                verbose(VERB_QUERY, "verify: dnskey has wrong key protocol");
                *reason = "dnskey has wrong protocolnumber";
+               if(reason_bogus)
+                       *reason_bogus = LDNS_EDE_DNSSEC_BOGUS;
                return sec_status_bogus;
        }
 
@@ -1514,17 +1554,23 @@ dnskey_verify_rrset_sig(struct regional* region, sldns_buffer* buf,
        if(!signer_len) {
                verbose(VERB_QUERY, "verify: malformed signer name");
                *reason = "signer name malformed";
+               if(reason_bogus)
+                       *reason_bogus = LDNS_EDE_DNSSEC_BOGUS;
                return sec_status_bogus; /* signer name invalid */
        }
        if(!dname_subdomain_c(rrset->rk.dname, signer)) {
                verbose(VERB_QUERY, "verify: signer name is off-tree");
                *reason = "signer name off-tree";
+               if(reason_bogus)
+                       *reason_bogus = LDNS_EDE_DNSSEC_BOGUS;
                return sec_status_bogus; /* signer name offtree */
        }
        sigblock = (unsigned char*)signer+signer_len;
        if(siglen < 2+18+signer_len+1) {
                verbose(VERB_QUERY, "verify: too short, no signature data");
                *reason = "signature too short, no signature data";
+               if(reason_bogus)
+                       *reason_bogus = LDNS_EDE_DNSSEC_BOGUS;
                return sec_status_bogus; /* sig rdf is < 1 byte */
        }
        sigblock_len = (unsigned int)(siglen - 2 - 18 - signer_len);
@@ -1537,6 +1583,8 @@ dnskey_verify_rrset_sig(struct regional* region, sldns_buffer* buf,
                log_nametypeclass(VERB_QUERY, "the key name is", 
                        dnskey->rk.dname, 0, 0);
                *reason = "signer name mismatches key name";
+               if(reason_bogus)
+                       *reason_bogus = LDNS_EDE_DNSSEC_BOGUS;
                return sec_status_bogus;
        }
 
@@ -1545,18 +1593,24 @@ dnskey_verify_rrset_sig(struct regional* region, sldns_buffer* buf,
        if(memcmp(sig+2, &rrset->rk.type, 2) != 0) {
                verbose(VERB_QUERY, "verify: wrong type covered");
                *reason = "signature covers wrong type";
+               if(reason_bogus)
+                       *reason_bogus = LDNS_EDE_DNSSEC_BOGUS;
                return sec_status_bogus;
        }
        /* verify keytag and sig algo (possibly again) */
        if((int)sig[2+2] != dnskey_get_algo(dnskey, dnskey_idx)) {
                verbose(VERB_QUERY, "verify: wrong algorithm");
                *reason = "signature has wrong algorithm";
+               if(reason_bogus)
+                       *reason_bogus = LDNS_EDE_DNSSEC_BOGUS;
                return sec_status_bogus;
        }
        ktag = htons(dnskey_calc_keytag(dnskey, dnskey_idx));
        if(memcmp(sig+2+16, &ktag, 2) != 0) {
                verbose(VERB_QUERY, "verify: wrong keytag");
                *reason = "signature has wrong keytag";
+               if(reason_bogus)
+                       *reason_bogus = LDNS_EDE_DNSSEC_BOGUS;
                return sec_status_bogus;
        }
 
@@ -1564,6 +1618,8 @@ dnskey_verify_rrset_sig(struct regional* region, sldns_buffer* buf,
        if((int)sig[2+3] > dname_signame_label_count(rrset->rk.dname)) {
                verbose(VERB_QUERY, "verify: labelcount out of range");
                *reason = "signature labelcount out of range";
+               if(reason_bogus)
+                       *reason_bogus = LDNS_EDE_DNSSEC_BOGUS;
                return sec_status_bogus;
        }
 
@@ -1598,7 +1654,8 @@ dnskey_verify_rrset_sig(struct regional* region, sldns_buffer* buf,
                /* verify inception, expiration dates 
                 * Do this last so that if you ignore expired-sigs the
                 * rest is sure to be OK. */
-               if(!check_dates(ve, now, sig+2+8, sig+2+12, reason)) {
+               if(!check_dates(ve, now, sig+2+8, sig+2+12,
+                       reason, reason_bogus)) {
                        return sec_status_bogus;
                }
        }
index bbb95780d7fe69a747bba8fd657672706d2fc1ee..7f52b71e41fa047f412bd10b0f9a9f6925047412 100644 (file)
@@ -45,6 +45,7 @@
 #define VALIDATOR_VAL_SIGCRYPT_H
 #include "util/data/packed_rrset.h"
 #include "sldns/pkthdr.h"
+#include "sldns/rrdef.h"
 struct val_env;
 struct module_env;
 struct module_qstate;
@@ -256,6 +257,7 @@ uint16_t dnskey_get_flags(struct ub_packed_rrset_key* k, size_t idx);
  * @param sigalg: if nonNULL provide downgrade protection otherwise one
  *   algorithm is enough.
  * @param reason: if bogus, a string returned, fixed or alloced in scratch.
+ * @param reason_bogus: EDE (RFC8914) code paired with the reason of failure.
  * @param section: section of packet where this rrset comes from.
  * @param qstate: qstate with region.
  * @return SECURE if one key in the set verifies one rrsig.
@@ -264,9 +266,11 @@ uint16_t dnskey_get_flags(struct ub_packed_rrset_key* k, size_t idx);
  */
 enum sec_status dnskeyset_verify_rrset(struct module_env* env, 
        struct val_env* ve, struct ub_packed_rrset_key* rrset, 
-       struct ub_packed_rrset_key* dnskey, uint8_t* sigalg, char** reason,
+       struct ub_packed_rrset_key* dnskey, uint8_t* sigalg,
+       char** reason, sldns_ede_code *reason_bogus,
        sldns_pkt_section section, struct module_qstate* qstate);
 
+
 /** 
  * verify rrset against one specific dnskey (from rrset) 
  * @param env: module environment, scratch space is used.
@@ -275,38 +279,17 @@ enum sec_status dnskeyset_verify_rrset(struct module_env* env,
  * @param dnskey: DNSKEY rrset, keyset.
  * @param dnskey_idx: which key from the rrset to try.
  * @param reason: if bogus, a string returned, fixed or alloced in scratch.
+ * @param reason_bogus: EDE (RFC8914) code paired with the reason of failure.
  * @param section: section of packet where this rrset comes from.
  * @param qstate: qstate with region.
  * @return secure if *this* key signs any of the signatures on rrset.
  *     unchecked on error or and bogus on bad signature.
  */
-enum sec_status dnskey_verify_rrset(struct module_env* env, 
-       struct val_env* ve, struct ub_packed_rrset_key* rrset, 
-       struct ub_packed_rrset_key* dnskey, size_t dnskey_idx, char** reason,
+enum sec_status dnskey_verify_rrset(struct module_env* env, struct val_env* ve,
+        struct ub_packed_rrset_key* rrset, struct ub_packed_rrset_key* dnskey,
+       size_t dnskey_idx, char** reason, sldns_ede_code *reason_bogus,
        sldns_pkt_section section, struct module_qstate* qstate);
 
-/** 
- * verify rrset, with dnskey rrset, for a specific rrsig in rrset
- * @param env: module environment, scratch space is used.
- * @param ve: validator environment, date settings.
- * @param now: current time for validation (can be overridden).
- * @param rrset: to be validated.
- * @param dnskey: DNSKEY rrset, keyset to try.
- * @param sig_idx: which signature to try to validate.
- * @param sortree: reused sorted order. Stored in region. Pass NULL at start,
- *     and for a new rrset.
- * @param reason: if bogus, a string returned, fixed or alloced in scratch.
- * @param section: section of packet where this rrset comes from.
- * @param qstate: qstate with region.
- * @return secure if any key signs *this* signature. bogus if no key signs it,
- *     or unchecked on error.
- */
-enum sec_status dnskeyset_verify_rrset_sig(struct module_env* env, 
-       struct val_env* ve, time_t now, struct ub_packed_rrset_key* rrset, 
-       struct ub_packed_rrset_key* dnskey, size_t sig_idx, 
-       struct rbtree_type** sortree, char** reason, sldns_pkt_section section,
-       struct module_qstate* qstate);
-
 /** 
  * verify rrset, with specific dnskey(from set), for a specific rrsig 
  * @param region: scratch region used for temporary allocation.
@@ -323,17 +306,19 @@ enum sec_status dnskeyset_verify_rrset_sig(struct module_env* env,
  *     pass false at start. pass old value only for same rrset and same
  *     signature (but perhaps different key) for reuse.
  * @param reason: if bogus, a string returned, fixed or alloced in scratch.
+ * @param reason_bogus: EDE (8914) code paired with the reason of failure.
  * @param section: section of packet where this rrset comes from.
  * @param qstate: qstate with region.
  * @return secure if this key signs this signature. unchecked on error or 
  *     bogus if it did not validate.
  */
-enum sec_status dnskey_verify_rrset_sig(struct regional* region, 
-       struct sldns_buffer* buf, struct val_env* ve, time_t now,
-       struct ub_packed_rrset_key* rrset, struct ub_packed_rrset_key* dnskey, 
-       size_t dnskey_idx, size_t sig_idx,
-       struct rbtree_type** sortree, int* buf_canon, char** reason,
-       sldns_pkt_section section, struct module_qstate* qstate);
+enum sec_status dnskey_verify_rrset_sig(struct regional* region,
+        struct sldns_buffer* buf, struct val_env* ve, time_t now,
+        struct ub_packed_rrset_key* rrset, struct ub_packed_rrset_key* dnskey,
+        size_t dnskey_idx, size_t sig_idx,
+        struct rbtree_type** sortree, int* buf_canon,
+        char** reason, sldns_ede_code *reason_bogus,
+        sldns_pkt_section section, struct module_qstate* qstate);
 
 /**
  * canonical compare for two tree entries
index bb366d33940087079ea61ae21caba3e335131097..18a7c9c2e95d5427534d1d2697104f35999cd212 100644 (file)
@@ -332,11 +332,11 @@ rrset_get_ttl(struct ub_packed_rrset_key* rrset)
        return d->ttl;
 }
 
-enum sec_status 
+static enum sec_status 
 val_verify_rrset(struct module_env* env, struct val_env* ve,
         struct ub_packed_rrset_key* rrset, struct ub_packed_rrset_key* keys,
-       uint8_t* sigalg, char** reason, sldns_pkt_section section,
-       struct module_qstate* qstate)
+       uint8_t* sigalg, char** reason, sldns_ede_code *reason_bogus,
+       sldns_pkt_section section, struct module_qstate* qstate)
 {
        enum sec_status sec;
        struct packed_rrset_data* d = (struct packed_rrset_data*)rrset->
@@ -359,7 +359,7 @@ val_verify_rrset(struct module_env* env, struct val_env* ve,
        log_nametypeclass(VERB_ALGO, "verify rrset", rrset->rk.dname,
                ntohs(rrset->rk.type), ntohs(rrset->rk.rrset_class));
        sec = dnskeyset_verify_rrset(env, ve, rrset, keys, sigalg, reason,
-               section, qstate);
+               reason_bogus, section, qstate);
        verbose(VERB_ALGO, "verify result: %s", sec_status_to_string(sec));
        regional_free_all(env->scratch);
 
@@ -392,7 +392,8 @@ val_verify_rrset(struct module_env* env, struct val_env* ve,
 enum sec_status 
 val_verify_rrset_entry(struct module_env* env, struct val_env* ve,
         struct ub_packed_rrset_key* rrset, struct key_entry_key* kkey,
-       char** reason, sldns_pkt_section section, struct module_qstate* qstate)
+       char** reason, sldns_ede_code *reason_bogus,
+       sldns_pkt_section section, struct module_qstate* qstate)
 {
        /* temporary dnskey rrset-key */
        struct ub_packed_rrset_key dnskey;
@@ -406,16 +407,16 @@ val_verify_rrset_entry(struct module_env* env, struct val_env* ve,
        dnskey.entry.key = &dnskey;
        dnskey.entry.data = kd->rrset_data;
        sec = val_verify_rrset(env, ve, rrset, &dnskey, kd->algo, reason,
-               section, qstate);
+               reason_bogus, section, qstate);
        return sec;
 }
 
 /** verify that a DS RR hashes to a key and that key signs the set */
 static enum sec_status
-verify_dnskeys_with_ds_rr(struct module_env* env, struct val_env* ve, 
-       struct ub_packed_rrset_key* dnskey_rrset, 
+verify_dnskeys_with_ds_rr(struct module_env* env, struct val_env* ve,
+       struct ub_packed_rrset_key* dnskey_rrset,
         struct ub_packed_rrset_key* ds_rrset, size_t ds_idx, char** reason,
-       struct module_qstate* qstate)
+       sldns_ede_code *reason_bogus, struct module_qstate* qstate)
 {
        enum sec_status sec = sec_status_bogus;
        size_t i, num, numchecked = 0, numhashok = 0, numsizesupp = 0;
@@ -450,8 +451,8 @@ verify_dnskeys_with_ds_rr(struct module_env* env, struct val_env* ve,
 
                /* Otherwise, we have a match! Make sure that the DNSKEY 
                 * verifies *with this key*  */
-               sec = dnskey_verify_rrset(env, ve, dnskey_rrset, 
-                       dnskey_rrset, i, reason, LDNS_SECTION_ANSWER, qstate);
+               sec = dnskey_verify_rrset(env, ve, dnskey_rrset, dnskey_rrset,
+                       i, reason, reason_bogus, LDNS_SECTION_ANSWER, qstate);
                if(sec == sec_status_secure) {
                        return sec;
                }
@@ -488,11 +489,12 @@ int val_favorite_ds_algo(struct ub_packed_rrset_key* ds_rrset)
        return digest_algo;
 }
 
-enum sec_status 
+// @TODO change the use of this function to _ede function in authzone.c:8111
+enum sec_status
 val_verify_DNSKEY_with_DS(struct module_env* env, struct val_env* ve,
        struct ub_packed_rrset_key* dnskey_rrset,
        struct ub_packed_rrset_key* ds_rrset, uint8_t* sigalg, char** reason,
-       struct module_qstate* qstate)
+       sldns_ede_code *reason_bogus, struct module_qstate* qstate)
 {
        /* as long as this is false, we can consider this DS rrset to be
         * equivalent to no DS rrset. */
@@ -529,7 +531,7 @@ val_verify_DNSKEY_with_DS(struct module_env* env, struct val_env* ve,
                }
 
                sec = verify_dnskeys_with_ds_rr(env, ve, dnskey_rrset,
-                       ds_rrset, i, reason, qstate);
+                       ds_rrset, i, reason, reason_bogus, qstate);
                if(sec == sec_status_insecure)
                        continue;
 
@@ -571,15 +573,16 @@ val_verify_DNSKEY_with_DS(struct module_env* env, struct val_env* ve,
        return sec_status_bogus;
 }
 
-struct key_entry_key* 
+struct key_entry_key*
 val_verify_new_DNSKEYs(struct regional* region, struct module_env* env, 
        struct val_env* ve, struct ub_packed_rrset_key* dnskey_rrset, 
        struct ub_packed_rrset_key* ds_rrset, int downprot, char** reason,
-       struct module_qstate* qstate)
+       sldns_ede_code *reason_bogus, struct module_qstate* qstate)
 {
        uint8_t sigalg[ALGO_NEEDS_MAX+1];
-       enum sec_status sec = val_verify_DNSKEY_with_DS(env, ve, 
-               dnskey_rrset, ds_rrset, downprot?sigalg:NULL, reason, qstate);
+       enum sec_status sec = val_verify_DNSKEY_with_DS(env, ve,
+               dnskey_rrset, ds_rrset, downprot?sigalg:NULL, reason, 
+               reason_bogus, qstate);
 
        if(sec == sec_status_secure) {
                return key_entry_create_rrset(region, 
@@ -597,12 +600,12 @@ val_verify_new_DNSKEYs(struct regional* region, struct module_env* env,
                BOGUS_KEY_TTL, *env->now);
 }
 
-enum sec_status 
+enum sec_status
 val_verify_DNSKEY_with_TA(struct module_env* env, struct val_env* ve,
        struct ub_packed_rrset_key* dnskey_rrset,
        struct ub_packed_rrset_key* ta_ds,
        struct ub_packed_rrset_key* ta_dnskey, uint8_t* sigalg, char** reason,
-       struct module_qstate* qstate)
+       sldns_ede_code *reason_bogus, struct module_qstate* qstate)
 {
        /* as long as this is false, we can consider this anchor to be
         * equivalent to no anchor. */
@@ -617,6 +620,8 @@ val_verify_DNSKEY_with_TA(struct module_env* env, struct val_env* ve,
                verbose(VERB_QUERY, "DNSKEY RRset did not match DS RRset "
                        "by name");
                *reason = "DNSKEY RRset did not match DS RRset by name";
+               if(reason_bogus)
+                       *reason_bogus = LDNS_EDE_DNSKEY_MISSING;
                return sec_status_bogus;
        }
        if(ta_dnskey && (dnskey_rrset->rk.dname_len != ta_dnskey->rk.dname_len
@@ -625,6 +630,8 @@ val_verify_DNSKEY_with_TA(struct module_env* env, struct val_env* ve,
                verbose(VERB_QUERY, "DNSKEY RRset did not match anchor RRset "
                        "by name");
                *reason = "DNSKEY RRset did not match anchor RRset by name";
+               if(reason_bogus)
+                       *reason_bogus = LDNS_EDE_DNSKEY_MISSING;
                return sec_status_bogus;
        }
 
@@ -648,7 +655,7 @@ val_verify_DNSKEY_with_TA(struct module_env* env, struct val_env* ve,
                        continue;
 
                sec = verify_dnskeys_with_ds_rr(env, ve, dnskey_rrset,
-                       ta_ds, i, reason, qstate);
+                       ta_ds, i, reason, reason_bogus, qstate);
                if(sec == sec_status_insecure)
                        continue;
 
@@ -688,7 +695,7 @@ val_verify_DNSKEY_with_TA(struct module_env* env, struct val_env* ve,
                has_useful_ta = 1;
 
                sec = dnskey_verify_rrset(env, ve, dnskey_rrset,
-                       ta_dnskey, i, reason, LDNS_SECTION_ANSWER, qstate);
+                       ta_dnskey, i, reason, NULL, LDNS_SECTION_ANSWER, qstate);
                if(sec == sec_status_secure) {
                        if(!sigalg || algo_needs_set_secure(&needs,
                                (uint8_t)dnskey_get_algo(ta_dnskey, i))) {
@@ -723,24 +730,24 @@ val_verify_DNSKEY_with_TA(struct module_env* env, struct val_env* ve,
 
 struct key_entry_key* 
 val_verify_new_DNSKEYs_with_ta(struct regional* region, struct module_env* env,
-       struct val_env* ve, struct ub_packed_rrset_key* dnskey_rrset, 
+       struct val_env* ve, struct ub_packed_rrset_key* dnskey_rrset,
        struct ub_packed_rrset_key* ta_ds_rrset,
        struct ub_packed_rrset_key* ta_dnskey_rrset, int downprot,
-       char** reason, struct module_qstate* qstate)
+       char** reason, sldns_ede_code *reason_bogus, struct module_qstate* qstate)
 {
        uint8_t sigalg[ALGO_NEEDS_MAX+1];
-       enum sec_status sec = val_verify_DNSKEY_with_TA(env, ve, 
+       enum sec_status sec = val_verify_DNSKEY_with_TA(env, ve,
                dnskey_rrset, ta_ds_rrset, ta_dnskey_rrset,
-               downprot?sigalg:NULL, reason, qstate);
+               downprot?sigalg:NULL, reason, reason_bogus, qstate);
 
        if(sec == sec_status_secure) {
-               return key_entry_create_rrset(region, 
+               return key_entry_create_rrset(region,
                        dnskey_rrset->rk.dname, dnskey_rrset->rk.dname_len,
                        ntohs(dnskey_rrset->rk.rrset_class), dnskey_rrset,
                        downprot?sigalg:NULL, *env->now);
        } else if(sec == sec_status_insecure) {
                return key_entry_create_null(region, dnskey_rrset->rk.dname,
-                       dnskey_rrset->rk.dname_len, 
+                       dnskey_rrset->rk.dname_len,
                        ntohs(dnskey_rrset->rk.rrset_class),
                        rrset_get_ttl(dnskey_rrset), *env->now);
        }
@@ -749,7 +756,7 @@ val_verify_new_DNSKEYs_with_ta(struct regional* region, struct module_env* env,
                BOGUS_KEY_TTL, *env->now);
 }
 
-int 
+int
 val_dsset_isusable(struct ub_packed_rrset_key* ds_rrset)
 {
        size_t i;
@@ -776,6 +783,7 @@ val_dsset_isusable(struct ub_packed_rrset_key* ds_rrset)
                if(lt) snprintf(aerr, sizeof(aerr), "%s", lt->name);
                else snprintf(aerr, sizeof(aerr), "%d",
                        (int)ds_get_key_algo(ds_rrset, 0));
+
                verbose(VERB_ALGO, "DS unsupported, hash %s %s, "
                        "key algorithm %s %s", herr,
                        (ds_digest_algo_is_supported(ds_rrset, 0)?
index 6e9867f6e3c76919cee2546b6b08d101b56cca66..83e3d0ad824e2346873a20ebc1957da3d8bb1b99 100644 (file)
@@ -43,6 +43,7 @@
 #define VALIDATOR_VAL_UTILS_H
 #include "util/data/packed_rrset.h"
 #include "sldns/pkthdr.h"
+#include "sldns/rrdef.h"
 struct query_info;
 struct reply_info;
 struct val_env;
@@ -113,24 +114,6 @@ void val_find_signer(enum val_classification subtype,
        struct query_info* qinf, struct reply_info* rep,
        size_t cname_skip, uint8_t** signer_name, size_t* signer_len);
 
-/**
- * Verify RRset with keys
- * @param env: module environment (scratch buffer)
- * @param ve: validator environment (verification settings)
- * @param rrset: what to verify
- * @param keys: dnskey rrset to verify with.
- * @param sigalg: if nonNULL provide downgrade protection otherwise one
- *   algorithm is enough.  Algo list is constructed in here.
- * @param reason: reason of failure. Fixed string or alloced in scratch.
- * @param section: section of packet where this rrset comes from.
- * @param qstate: qstate with region.
- * @return security status of verification.
- */
-enum sec_status val_verify_rrset(struct module_env* env, struct val_env* ve,
-       struct ub_packed_rrset_key* rrset, struct ub_packed_rrset_key* keys,
-       uint8_t* sigalg, char** reason, sldns_pkt_section section,
-       struct module_qstate* qstate);
-
 /**
  * Verify RRset with keys from a keyset.
  * @param env: module environment (scratch buffer)
@@ -138,14 +121,15 @@ enum sec_status val_verify_rrset(struct module_env* env, struct val_env* ve,
  * @param rrset: what to verify
  * @param kkey: key_entry to verify with.
  * @param reason: reason of failure. Fixed string or alloced in scratch.
+ * @param reason_bogus: EDE (RFC8914) code paired with the reason of failure.
  * @param section: section of packet where this rrset comes from.
  * @param qstate: qstate with region.
  * @return security status of verification.
  */
 enum sec_status val_verify_rrset_entry(struct module_env* env, 
        struct val_env* ve, struct ub_packed_rrset_key* rrset, 
-       struct key_entry_key* kkey, char** reason, sldns_pkt_section section,
-       struct module_qstate* qstate);
+       struct key_entry_key* kkey, char** reason, sldns_ede_code *reason_bogus,
+       sldns_pkt_section section, struct module_qstate* qstate);
 
 /**
  * Verify DNSKEYs with DS rrset. Like val_verify_new_DNSKEYs but
@@ -158,15 +142,16 @@ enum sec_status val_verify_rrset_entry(struct module_env* env,
  *   algorithm is enough.  The list of signalled algorithms is returned,
  *   must have enough space for ALGO_NEEDS_MAX+1.
  * @param reason: reason of failure. Fixed string or alloced in scratch.
+ * @param reason_bogus: EDE (RFC8914) code paired with the reason of failure.
  * @param qstate: qstate with region.
  * @return: sec_status_secure if a DS matches.
  *     sec_status_insecure if end of trust (i.e., unknown algorithms).
  *     sec_status_bogus if it fails.
  */
-enum sec_status val_verify_DNSKEY_with_DS(struct module_env* env, 
-       struct val_env* ve, struct ub_packed_rrset_key* dnskey_rrset, 
-       struct ub_packed_rrset_key* ds_rrset, uint8_t* sigalg, char** reason,
-       struct module_qstate* qstate);
+enum sec_status val_verify_DNSKEY_with_DS(struct module_env* env,
+    struct val_env* ve, struct ub_packed_rrset_key* dnskey_rrset,
+    struct ub_packed_rrset_key* ds_rrset, uint8_t* sigalg, char** reason,
+    sldns_ede_code *reason_bogus, struct module_qstate* qstate);
 
 /**
  * Verify DNSKEYs with DS and DNSKEY rrset.  Like val_verify_DNSKEY_with_DS
@@ -180,16 +165,17 @@ enum sec_status val_verify_DNSKEY_with_DS(struct module_env* env,
  *   algorithm is enough.  The list of signalled algorithms is returned,
  *   must have enough space for ALGO_NEEDS_MAX+1.
  * @param reason: reason of failure. Fixed string or alloced in scratch.
+* @param reason_bogus: EDE (RFC8914) code paired with the reason of failure.
  * @param qstate: qstate with region.
  * @return: sec_status_secure if a DS matches.
  *     sec_status_insecure if end of trust (i.e., unknown algorithms).
  *     sec_status_bogus if it fails.
  */
-enum sec_status val_verify_DNSKEY_with_TA(struct module_env* env, 
-       struct val_env* ve, struct ub_packed_rrset_key* dnskey_rrset, 
-       struct ub_packed_rrset_key* ta_ds,
-       struct ub_packed_rrset_key* ta_dnskey, uint8_t* sigalg, char** reason,
-       struct module_qstate* qstate);
+enum sec_status val_verify_DNSKEY_with_TA(struct module_env* env,
+    struct val_env* ve, struct ub_packed_rrset_key* dnskey_rrset,
+    struct ub_packed_rrset_key* ta_ds,
+    struct ub_packed_rrset_key* ta_dnskey, uint8_t* sigalg, char** reason,
+    sldns_ede_code *reason_bogus, struct module_qstate* qstate);
 
 /**
  * Verify new DNSKEYs with DS rrset. The DS contains hash values that should
@@ -204,6 +190,7 @@ enum sec_status val_verify_DNSKEY_with_TA(struct module_env* env,
  * @param downprot: if true provide downgrade protection otherwise one
  *   algorithm is enough.
  * @param reason: reason of failure. Fixed string or alloced in scratch.
+ * @param reason_bogus: EDE (RFC8914) code paired with the reason of failure.
  * @param qstate: qstate with region.
  * @return a KeyEntry. This will either contain the now trusted
  *         dnskey_rrset, a "null" key entry indicating that this DS
@@ -215,12 +202,11 @@ enum sec_status val_verify_DNSKEY_with_TA(struct module_env* env,
  *         rrset.
  *         if downprot is set, a key entry with an algo list is made.
  */
-struct key_entry_key* val_verify_new_DNSKEYs(struct regional* region, 
-       struct module_env* env, struct val_env* ve, 
-       struct ub_packed_rrset_key* dnskey_rrset, 
-       struct ub_packed_rrset_key* ds_rrset, int downprot, char** reason,
-       struct module_qstate* qstate);
-
+struct key_entry_key* val_verify_new_DNSKEYs(struct regional* region,
+    struct module_env* env, struct val_env* ve,
+    struct ub_packed_rrset_key* dnskey_rrset, 
+    struct ub_packed_rrset_key* ds_rrset, int downprot, char** reason,
+    sldns_ede_code *reason_bogus, struct module_qstate* qstate);
 
 /**
  * Verify rrset with trust anchor: DS and DNSKEY rrset.
@@ -234,6 +220,7 @@ struct key_entry_key* val_verify_new_DNSKEYs(struct regional* region,
  * @param downprot: if true provide downgrade protection otherwise one
  *   algorithm is enough.
  * @param reason: reason of failure. Fixed string or alloced in scratch.
+ * @param reason_bogus: EDE (RFC8914) code paired with the reason of failure.
  * @param qstate: qstate with region.
  * @return a KeyEntry. This will either contain the now trusted
  *         dnskey_rrset, a "null" key entry indicating that this DS
@@ -246,11 +233,11 @@ struct key_entry_key* val_verify_new_DNSKEYs(struct regional* region,
  *         if downprot is set, a key entry with an algo list is made.
  */
 struct key_entry_key* val_verify_new_DNSKEYs_with_ta(struct regional* region, 
-       struct module_env* env, struct val_env* ve, 
-       struct ub_packed_rrset_key* dnskey_rrset, 
-       struct ub_packed_rrset_key* ta_ds_rrset, 
-       struct ub_packed_rrset_key* ta_dnskey_rrset,
-       int downprot, char** reason, struct module_qstate* qstate);
+    struct module_env* env, struct val_env* ve,
+    struct ub_packed_rrset_key* dnskey_rrset,
+    struct ub_packed_rrset_key* ta_ds_rrset,
+    struct ub_packed_rrset_key* ta_dnskey_rrset, int downprot,
+    char** reason, sldns_ede_code *reason_bogus, struct module_qstate* qstate);
 
 /**
  * Determine if DS rrset is usable for validator or not.
index e6307284fb0ed5272b858194a76c614f18e6fdc9..75f3220cf3d9caa3e33ff28a9df3570c2cfaa2be 100644 (file)
@@ -69,6 +69,20 @@ static void process_ds_response(struct module_qstate* qstate,
        struct val_qstate* vq, int id, int rcode, struct dns_msg* msg, 
        struct query_info* qinfo, struct sock_list* origin);
 
+
+/* Updates the suplied EDE (RFC8914) code selectively so we don't loose
+ * a more specific code
+ */
+static void
+update_reason_bogus(struct reply_info* rep, sldns_ede_code reason_bogus)
+{
+       if (rep->reason_bogus == LDNS_EDE_DNSSEC_BOGUS ||
+               rep->reason_bogus == LDNS_EDE_NONE) {
+               rep->reason_bogus = reason_bogus;
+       }
+}
+
+
 /** fill up nsec3 key iterations config entry */
 static int
 fill_nsec3_iter(struct val_env* ve, char* s, int c)
@@ -230,6 +244,7 @@ val_new_getmsg(struct module_qstate* qstate, struct val_qstate* vq)
                vq->orig_msg->rep->flags = (uint16_t)(qstate->return_rcode&0xf)
                        |BIT_QR|BIT_RA|(qstate->query_flags|(BIT_CD|BIT_RD));
                vq->orig_msg->rep->qdcount = 1;
+               vq->orig_msg->rep->reason_bogus = LDNS_EDE_NONE;
        } else {
                vq->orig_msg = qstate->return_msg;
        }
@@ -592,6 +607,7 @@ validate_msg_signatures(struct module_qstate* qstate, struct module_env* env,
        enum sec_status sec;
        int dname_seen = 0;
        char* reason = NULL;
+       sldns_ede_code reason_bogus = LDNS_EDE_DNSSEC_BOGUS;
 
        /* validate the ANSWER section */
        for(i=0; i<chase_reply->an_numrrsets; i++) {
@@ -613,20 +629,22 @@ validate_msg_signatures(struct module_qstate* qstate, struct module_env* env,
 
                /* Verify the answer rrset */
                sec = val_verify_rrset_entry(env, ve, s, key_entry, &reason,
-                       LDNS_SECTION_ANSWER, qstate);
+                       &reason_bogus, LDNS_SECTION_ANSWER, qstate);
                /* If the (answer) rrset failed to validate, then this 
                 * message is BAD. */
                if(sec != sec_status_secure) {
                        log_nametypeclass(VERB_QUERY, "validator: response "
                                "has failed ANSWER rrset:", s->rk.dname,
                                ntohs(s->rk.type), ntohs(s->rk.rrset_class));
-                       errinf(qstate, reason);
+                       errinf_ede(qstate, reason, reason_bogus);
                        if(ntohs(s->rk.type) == LDNS_RR_TYPE_CNAME)
                                errinf(qstate, "for CNAME");
                        else if(ntohs(s->rk.type) == LDNS_RR_TYPE_DNAME)
                                errinf(qstate, "for DNAME");
                        errinf_origin(qstate, qstate->reply_origin);
                        chase_reply->security = sec_status_bogus;
+                       update_reason_bogus(chase_reply, reason_bogus);
+
                        return 0;
                }
 
@@ -643,17 +661,18 @@ validate_msg_signatures(struct module_qstate* qstate, struct module_env* env,
                chase_reply->ns_numrrsets; i++) {
                s = chase_reply->rrsets[i];
                sec = val_verify_rrset_entry(env, ve, s, key_entry, &reason,
-                       LDNS_SECTION_AUTHORITY, qstate);
+                       &reason_bogus, LDNS_SECTION_AUTHORITY, qstate);
                /* If anything in the authority section fails to be secure, 
                 * we have a bad message. */
                if(sec != sec_status_secure) {
                        log_nametypeclass(VERB_QUERY, "validator: response "
                                "has failed AUTHORITY rrset:", s->rk.dname,
                                ntohs(s->rk.type), ntohs(s->rk.rrset_class));
-                       errinf(qstate, reason);
+                       errinf_ede(qstate, reason, reason_bogus);
                        errinf_origin(qstate, qstate->reply_origin);
                        errinf_rrset(qstate, s);
                        chase_reply->security = sec_status_bogus;
+                       update_reason_bogus(chase_reply, reason_bogus);
                        return 0;
                }
        }
@@ -669,9 +688,10 @@ validate_msg_signatures(struct module_qstate* qstate, struct module_env* env,
                /* only validate rrs that have signatures with the key */
                /* leave others unchecked, those get removed later on too */
                val_find_rrset_signer(s, &sname, &slen);
+
                if(sname && query_dname_compare(sname, key_entry->name)==0)
                        (void)val_verify_rrset_entry(env, ve, s, key_entry,
-                               &reason, LDNS_SECTION_ADDITIONAL, qstate);
+                               &reason, NULL, LDNS_SECTION_ADDITIONAL, qstate);
                /* the additional section can fail to be secure, 
                 * it is optional, check signature in case we need
                 * to clean the additional section later. */
@@ -804,6 +824,7 @@ validate_positive_response(struct module_env* env, struct val_env* ve,
                                "inconsistent wildcard sigs:", s->rk.dname,
                                ntohs(s->rk.type), ntohs(s->rk.rrset_class));
                        chase_reply->security = sec_status_bogus;
+                       update_reason_bogus(chase_reply, LDNS_EDE_DNSSEC_BOGUS);
                        return;
                }
                if(wc && !wc_cached && env->cfg->aggressive_nsec) {
@@ -861,6 +882,7 @@ validate_positive_response(struct module_env* env, struct val_env* ve,
                        "expansion and did not prove original data "
                        "did not exist");
                chase_reply->security = sec_status_bogus;
+               update_reason_bogus(chase_reply, LDNS_EDE_DNSSEC_BOGUS);
                return;
        }
 
@@ -959,6 +981,7 @@ validate_nodata_response(struct module_env* env, struct val_env* ve,
                if(verbosity >= VERB_ALGO)
                        log_dns_msg("Failed NODATA", qchase, chase_reply);
                chase_reply->security = sec_status_bogus;
+               update_reason_bogus(chase_reply, LDNS_EDE_DNSSEC_BOGUS);
                return;
        }
 
@@ -1045,6 +1068,7 @@ validate_nameerror_response(struct module_env* env, struct val_env* ve,
                verbose(VERB_QUERY, "NameError response has failed to prove: "
                          "qname does not exist");
                chase_reply->security = sec_status_bogus;
+               update_reason_bogus(chase_reply, LDNS_EDE_DNSSEC_BOGUS);
                /* Be lenient with RCODE in NSEC NameError responses */
                validate_nodata_response(env, ve, qchase, chase_reply, kkey);
                if (chase_reply->security == sec_status_secure)
@@ -1056,6 +1080,7 @@ validate_nameerror_response(struct module_env* env, struct val_env* ve,
                verbose(VERB_QUERY, "NameError response has failed to prove: "
                          "covering wildcard does not exist");
                chase_reply->security = sec_status_bogus;
+               update_reason_bogus(chase_reply, LDNS_EDE_DNSSEC_BOGUS);
                /* Be lenient with RCODE in NSEC NameError responses */
                validate_nodata_response(env, ve, qchase, chase_reply, kkey);
                if (chase_reply->security == sec_status_secure)
@@ -1138,6 +1163,7 @@ validate_any_response(struct module_env* env, struct val_env* ve,
        if(qchase->qtype != LDNS_RR_TYPE_ANY) {
                log_err("internal error: ANY validation called for non-ANY");
                chase_reply->security = sec_status_bogus;
+               update_reason_bogus(chase_reply, LDNS_EDE_DNSSEC_BOGUS);
                return;
        }
 
@@ -1154,6 +1180,7 @@ validate_any_response(struct module_env* env, struct val_env* ve,
                                s->rk.dname, ntohs(s->rk.type), 
                                ntohs(s->rk.rrset_class));
                        chase_reply->security = sec_status_bogus;
+                       update_reason_bogus(chase_reply, LDNS_EDE_DNSSEC_BOGUS);
                        return;
                }
        }
@@ -1208,6 +1235,7 @@ validate_any_response(struct module_env* env, struct val_env* ve,
                        "expansion and did not prove original data "
                        "did not exist");
                chase_reply->security = sec_status_bogus;
+               update_reason_bogus(chase_reply, LDNS_EDE_DNSSEC_BOGUS);
                return;
        }
 
@@ -1255,6 +1283,7 @@ validate_cname_response(struct module_env* env, struct val_env* ve,
                                "inconsistent wildcard sigs:", s->rk.dname,
                                ntohs(s->rk.type), ntohs(s->rk.rrset_class));
                        chase_reply->security = sec_status_bogus;
+                       update_reason_bogus(chase_reply, LDNS_EDE_DNSSEC_BOGUS);
                        return;
                }
                
@@ -1267,6 +1296,7 @@ validate_cname_response(struct module_env* env, struct val_env* ve,
                                "wildcarded DNAME:", s->rk.dname, 
                                ntohs(s->rk.type), ntohs(s->rk.rrset_class));
                        chase_reply->security = sec_status_bogus;
+                       update_reason_bogus(chase_reply, LDNS_EDE_DNSSEC_BOGUS);
                        return;
                }
 
@@ -1324,6 +1354,7 @@ validate_cname_response(struct module_env* env, struct val_env* ve,
                        "expansion and did not prove original data "
                        "did not exist");
                chase_reply->security = sec_status_bogus;
+               update_reason_bogus(chase_reply, LDNS_EDE_DNSSEC_BOGUS);
                return;
        }
 
@@ -1424,6 +1455,7 @@ validate_cname_noanswer_response(struct module_env* env, struct val_env* ve,
                verbose(VERB_QUERY, "CNAMEchain to noanswer proves that name "
                        "exists and not exists, bogus");
                chase_reply->security = sec_status_bogus;
+               update_reason_bogus(chase_reply, LDNS_EDE_DNSSEC_BOGUS);
                return;
        }
        if(!nodata_valid_nsec && !nxdomain_valid_nsec && nsec3s_seen) {
@@ -1449,6 +1481,7 @@ validate_cname_noanswer_response(struct module_env* env, struct val_env* ve,
                if(verbosity >= VERB_ALGO)
                        log_dns_msg("Failed CNAMEnoanswer", qchase, chase_reply);
                chase_reply->security = sec_status_bogus;
+               update_reason_bogus(chase_reply, LDNS_EDE_DNSSEC_BOGUS);
                return;
        }
 
@@ -1492,6 +1525,10 @@ processInit(struct module_qstate* qstate, struct val_qstate* vq,
                verbose(VERB_ALGO, "restart count exceeded");
                return val_error(qstate, id);
        }
+
+       /* correctly initialize reason_bogus */
+       update_reason_bogus(vq->chase_reply, LDNS_EDE_DNSSEC_BOGUS);
+
        verbose(VERB_ALGO, "validator classification %s", 
                val_classification_to_string(subtype));
        if(subtype == VAL_CLASS_REFERRAL && 
@@ -1557,6 +1594,7 @@ processInit(struct module_qstate* qstate, struct val_qstate* vq,
                        verbose(VERB_QUERY, "unsigned parent zone denies"
                                " trust anchor, indeterminate");
                        vq->chase_reply->security = sec_status_indeterminate;
+                       update_reason_bogus(vq->chase_reply, LDNS_EDE_DNSSEC_INDETERMINATE);
                        vq->state = VAL_FINISHED_STATE;
                        return 1;
                }
@@ -1588,6 +1626,7 @@ processInit(struct module_qstate* qstate, struct val_qstate* vq,
        if(vq->key_entry == NULL && anchor == NULL) {
                /*response isn't under a trust anchor, so we cannot validate.*/
                vq->chase_reply->security = sec_status_indeterminate;
+               update_reason_bogus(vq->chase_reply, LDNS_EDE_DNSSEC_INDETERMINATE);
                /* go to finished state to cache this result */
                vq->state = VAL_FINISHED_STATE;
                return 1;
@@ -1633,16 +1672,25 @@ processInit(struct module_qstate* qstate, struct val_qstate* vq,
                vq->state = VAL_FINISHED_STATE;
                return 1;
        } else if(key_entry_isbad(vq->key_entry)) {
+               sldns_ede_code ede = LDNS_EDE_DNSSEC_BOGUS;
+
+               /* the key could have a more spefic EDE than just bogus */
+               if(key_entry_get_reason_bogus(vq->key_entry) != LDNS_EDE_NONE) {
+                       ede = key_entry_get_reason_bogus(vq->key_entry);
+               }
+
                /* key is bad, chain is bad, reply is bogus */
                errinf_dname(qstate, "key for validation", vq->key_entry->name);
-               errinf(qstate, "is marked as invalid");
+               errinf_ede(qstate, "is marked as invalid", ede);
                if(key_entry_get_reason(vq->key_entry)) {
                        errinf(qstate, "because of a previous");
                        errinf(qstate, key_entry_get_reason(vq->key_entry));
                }
+
                /* no retries, stop bothering the authority until timeout */
                vq->restart_count = ve->max_restart;
                vq->chase_reply->security = sec_status_bogus;
+               update_reason_bogus(vq->chase_reply, ede);
                vq->state = VAL_FINISHED_STATE;
                return 1;
        }
@@ -1713,9 +1761,10 @@ processFindKey(struct module_qstate* qstate, struct val_qstate* vq, int id)
                        vq->empty_DS_name) == 0) {
                        /* do not query for empty_DS_name again */
                        verbose(VERB_ALGO, "Cannot retrieve DS for signature");
-                       errinf(qstate, "no signatures");
+                       errinf_ede(qstate, "no signatures", LDNS_EDE_RRSIGS_MISSING);
                        errinf_origin(qstate, qstate->reply_origin);
                        vq->chase_reply->security = sec_status_bogus;
+                       update_reason_bogus(vq->chase_reply, LDNS_EDE_RRSIGS_MISSING);
                        vq->state = VAL_FINISHED_STATE;
                        return 1;
                }
@@ -1848,7 +1897,10 @@ processValidate(struct module_qstate* qstate, struct val_qstate* vq,
                        "of trust to keys for", vq->key_entry->name,
                        LDNS_RR_TYPE_DNSKEY, vq->key_entry->key_class);
                vq->chase_reply->security = sec_status_bogus;
-               errinf(qstate, "while building chain of trust");
+
+               update_reason_bogus(vq->chase_reply, LDNS_EDE_DNSKEY_MISSING);
+               errinf_ede(qstate, "while building chain of trust",
+                       LDNS_EDE_DNSKEY_MISSING);
                if(vq->restart_count >= ve->max_restart)
                        key_cache_insert(ve->kcache, vq->key_entry, qstate);
                return 1;
@@ -1861,9 +1913,10 @@ processValidate(struct module_qstate* qstate, struct val_qstate* vq,
                        "signer name", &vq->qchase);
                verbose(VERB_DETAIL, "Could not establish validation of "
                          "INSECURE status of unsigned response.");
-               errinf(qstate, "no signatures");
+               errinf_ede(qstate, "no signatures", LDNS_EDE_RRSIGS_MISSING);
                errinf_origin(qstate, qstate->reply_origin);
                vq->chase_reply->security = sec_status_bogus;
+               update_reason_bogus(vq->chase_reply, LDNS_EDE_RRSIGS_MISSING);
                return 1;
        }
        subtype = val_classify_response(qstate->query_flags, &qstate->qinfo,
@@ -2001,17 +2054,20 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq,
                vq->orig_msg->rep, vq->rrset_skip);
 
        /* store overall validation result in orig_msg */
-       if(vq->rrset_skip == 0)
+       if(vq->rrset_skip == 0) {
                vq->orig_msg->rep->security = vq->chase_reply->security;
-       else if(subtype != VAL_CLASS_REFERRAL ||
+               update_reason_bogus(vq->orig_msg->rep, vq->chase_reply->reason_bogus);
+       } else if(subtype != VAL_CLASS_REFERRAL ||
                vq->rrset_skip < vq->orig_msg->rep->an_numrrsets + 
                vq->orig_msg->rep->ns_numrrsets) {
                /* ignore sec status of additional section if a referral 
                 * type message skips there and
                 * use the lowest security status as end result. */
-               if(vq->chase_reply->security < vq->orig_msg->rep->security)
+               if(vq->chase_reply->security < vq->orig_msg->rep->security) {
                        vq->orig_msg->rep->security = 
                                vq->chase_reply->security;
+                       update_reason_bogus(vq->orig_msg->rep, vq->chase_reply->reason_bogus);
+               }
        }
 
        if(subtype == VAL_CLASS_REFERRAL) {
@@ -2034,6 +2090,7 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq,
                        &vq->rrset_skip)) {
                        verbose(VERB_ALGO, "validator: failed to chase CNAME");
                        vq->orig_msg->rep->security = sec_status_bogus;
+                       update_reason_bogus(vq->orig_msg->rep, LDNS_EDE_DNSSEC_BOGUS);
                } else {
                        /* restart process for new qchase at rrset_skip */
                        log_query_info(VERB_ALGO, "validator: chased to",
@@ -2247,9 +2304,11 @@ val_operate(struct module_qstate* qstate, enum module_ev event, int id,
                 * queries. If we get here, it is bogus or an internal error */
                if(qstate->qinfo.qclass == LDNS_RR_CLASS_ANY) {
                        verbose(VERB_ALGO, "cannot validate classANY: bogus");
-                       if(qstate->return_msg)
+                       if(qstate->return_msg) {
                                qstate->return_msg->rep->security =
                                        sec_status_bogus;
+                               update_reason_bogus(qstate->return_msg->rep, LDNS_EDE_DNSSEC_BOGUS);
+                       }
                        qstate->ext_state[id] = module_finished;
                        return;
                }
@@ -2304,6 +2363,7 @@ primeResponseToKE(struct ub_packed_rrset_key* dnskey_rrset,
        struct key_entry_key* kkey = NULL;
        enum sec_status sec = sec_status_unchecked;
        char* reason = NULL;
+       sldns_ede_code reason_bogus = LDNS_EDE_DNSSEC_BOGUS;
        int downprot = qstate->env->cfg->harden_algo_downgrade;
 
        if(!dnskey_rrset) {
@@ -2311,7 +2371,7 @@ primeResponseToKE(struct ub_packed_rrset_key* dnskey_rrset,
                        "could not fetch DNSKEY rrset", 
                        ta->name, LDNS_RR_TYPE_DNSKEY, ta->dclass);
                if(qstate->env->cfg->harden_dnssec_stripped) {
-                       errinf(qstate, "no DNSKEY rrset");
+                       errinf_ede(qstate, "no DNSKEY rrset", LDNS_EDE_DNSKEY_MISSING);
                        kkey = key_entry_create_bad(qstate->region, ta->name,
                                ta->namelen, ta->dclass, BOGUS_KEY_TTL,
                                *qstate->env->now);
@@ -2327,7 +2387,7 @@ primeResponseToKE(struct ub_packed_rrset_key* dnskey_rrset,
        /* attempt to verify with trust anchor DS and DNSKEY */
        kkey = val_verify_new_DNSKEYs_with_ta(qstate->region, qstate->env, ve, 
                dnskey_rrset, ta->ds_rrset, ta->dnskey_rrset, downprot,
-               &reason, qstate);
+               &reason, &reason_bogus, qstate);
        if(!kkey) {
                log_err("out of memory: verifying prime TA");
                return NULL;
@@ -2346,7 +2406,7 @@ primeResponseToKE(struct ub_packed_rrset_key* dnskey_rrset,
                /* NOTE: in this case, we should probably reject the trust 
                 * anchor for longer, perhaps forever. */
                if(qstate->env->cfg->harden_dnssec_stripped) {
-                       errinf(qstate, reason);
+                       errinf_ede(qstate, reason, reason_bogus);
                        kkey = key_entry_create_bad(qstate->region, ta->name,
                                ta->namelen, ta->dclass, BOGUS_KEY_TTL,
                                *qstate->env->now);
@@ -2389,6 +2449,7 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq,
 {
        struct val_env* ve = (struct val_env*)qstate->env->modinfo[id];
        char* reason = NULL;
+       sldns_ede_code reason_bogus = LDNS_EDE_DNSSEC_BOGUS;
        enum val_classification subtype;
        if(rcode != LDNS_RCODE_NOERROR) {
                char rc[16];
@@ -2397,7 +2458,8 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq,
                /* errors here pretty much break validation */
                verbose(VERB_DETAIL, "DS response was error, thus bogus");
                errinf(qstate, rc);
-               errinf(qstate, "no DS");
+               errinf_ede(qstate, "no DS", LDNS_EDE_NETWORK_ERROR);
+
                goto return_bogus;
        }
 
@@ -2411,17 +2473,17 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq,
                if(!ds) {
                        log_warn("internal error: POSITIVE DS response was "
                                "missing DS.");
-                       errinf(qstate, "no DS record");
+                       errinf_ede(qstate, "no DS record", LDNS_EDE_DNSSEC_BOGUS);
                        goto return_bogus;
                }
                /* Verify only returns BOGUS or SECURE. If the rrset is 
                 * bogus, then we are done. */
-               sec = val_verify_rrset_entry(qstate->env, ve, ds, 
-                       vq->key_entry, &reason, LDNS_SECTION_ANSWER, qstate);
+               sec = val_verify_rrset_entry(qstate->env, ve, ds,
+                       vq->key_entry, &reason, &reason_bogus, LDNS_SECTION_ANSWER, qstate);
                if(sec != sec_status_secure) {
                        verbose(VERB_DETAIL, "DS rrset in DS response did "
                                "not verify");
-                       errinf(qstate, reason);
+                       errinf_ede(qstate, reason, reason_bogus);
                        goto return_bogus;
                }
 
@@ -2430,6 +2492,9 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq,
                if(!val_dsset_isusable(ds)) {
                        /* If they aren't usable, then we treat it like 
                         * there was no DS. */
+
+                       // @TODO add EDE Unsupported DS Digest Type
+
                        *ke = key_entry_create_null(qstate->region, 
                                qinfo->qname, qinfo->qname_len, qinfo->qclass, 
                                ub_packed_rrset_ttl(ds), *qstate->env->now);
@@ -2452,7 +2517,7 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq,
                /* make sure there are NSECs or NSEC3s with signatures */
                if(!val_has_signed_nsecs(msg->rep, &reason)) {
                        verbose(VERB_ALGO, "no NSECs: %s", reason);
-                       errinf(qstate, reason);
+                       errinf_ede(qstate, reason, LDNS_EDE_NSEC_MISSING);
                        goto return_bogus;
                }
 
@@ -2493,7 +2558,7 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq,
                sec = nsec3_prove_nods(qstate->env, ve, 
                        msg->rep->rrsets + msg->rep->an_numrrsets,
                        msg->rep->ns_numrrsets, qinfo, vq->key_entry, &reason,
-                       qstate);
+                       &reason_bogus, qstate);
                switch(sec) {
                        case sec_status_insecure:
                                /* case insecure also continues to unsigned
@@ -2515,7 +2580,7 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq,
                        case sec_status_bogus:
                                verbose(VERB_DETAIL, "NSEC3s for the "
                                        "referral did not prove no DS.");
-                               errinf(qstate, reason);
+                               errinf_ede(qstate, reason, reason_bogus);
                                goto return_bogus;
                        case sec_status_unchecked:
                        default:
@@ -2554,7 +2619,7 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq,
                        goto return_bogus;
                }
                sec = val_verify_rrset_entry(qstate->env, ve, cname, 
-                       vq->key_entry, &reason, LDNS_SECTION_ANSWER, qstate);
+                       vq->key_entry, &reason, NULL, LDNS_SECTION_ANSWER, qstate);
                if(sec == sec_status_secure) {
                        verbose(VERB_ALGO, "CNAME validated, "
                                "proof that DS does not exist");
@@ -2685,6 +2750,7 @@ process_dnskey_response(struct module_qstate* qstate, struct val_qstate* vq,
        struct ub_packed_rrset_key* dnskey = NULL;
        int downprot;
        char* reason = NULL;
+       sldns_ede_code reason_bogus = LDNS_EDE_DNSSEC_BOGUS;
 
        if(rcode == LDNS_RCODE_NOERROR)
                dnskey = reply_find_answer_rrset(qinfo, msg->rep);
@@ -2693,6 +2759,7 @@ process_dnskey_response(struct module_qstate* qstate, struct val_qstate* vq,
                /* bad response */
                verbose(VERB_DETAIL, "Missing DNSKEY RRset in response to "
                        "DNSKEY query.");
+
                if(vq->restart_count < ve->max_restart) {
                        val_blacklist(&vq->chain_blacklist, qstate->region,
                                origin, 1);
@@ -2707,7 +2774,7 @@ process_dnskey_response(struct module_qstate* qstate, struct val_qstate* vq,
                        log_err("alloc failure in missing dnskey response");
                        /* key_entry is NULL for failure in Validate */
                }
-               errinf(qstate, "No DNSKEY record");
+               errinf_ede(qstate, "No DNSKEY record", LDNS_EDE_DNSKEY_MISSING);
                errinf_origin(qstate, origin);
                errinf_dname(qstate, "for key", qinfo->qname);
                vq->state = VAL_VALIDATE_STATE;
@@ -2721,7 +2788,7 @@ process_dnskey_response(struct module_qstate* qstate, struct val_qstate* vq,
        }
        downprot = qstate->env->cfg->harden_algo_downgrade;
        vq->key_entry = val_verify_new_DNSKEYs(qstate->region, qstate->env,
-               ve, dnskey, vq->ds_rrset, downprot, &reason, qstate);
+               ve, dnskey, vq->ds_rrset, downprot, &reason, &reason_bogus, qstate);
 
        if(!vq->key_entry) {
                log_err("out of memory in verify new DNSKEYs");
@@ -2742,7 +2809,7 @@ process_dnskey_response(struct module_qstate* qstate, struct val_qstate* vq,
                        }
                        verbose(VERB_DETAIL, "Did not match a DS to a DNSKEY, "
                                "thus bogus.");
-                       errinf(qstate, reason);
+                       errinf_ede(qstate, reason, reason_bogus);
                        errinf_origin(qstate, origin);
                        errinf_dname(qstate, "for key", qinfo->qname);
                }