diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml new file mode 100644 index 000000000..fbbdd8018 --- /dev/null +++ b/.github/workflows/analysis_ports.yml @@ -0,0 +1,346 @@ +name: Analysis and Ports + +on: + workflow_dispatch: + inputs: + start: + description: 'Start analysis and port workflow' + default: 'yes' + required: true + +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + matrix: + include: + - name: GCC on Linux + os: ubuntu-latest + config: "--enable-debug --disable-flto" + make_test: "yes" + - name: Clang-analyzer + os: ubuntu-latest + config: "CC=clang --enable-debug --disable-flto --disable-static" + make_test: "yes" + clang_analysis: "yes" + - name: libevent + os: ubuntu-latest + install_libevent: "yes" + config: "CC=clang --enable-debug --disable-flto --with-libevent --disable-static" + make_test: "yes" + clang_analysis: "yes" + - name: OS X + os: macos-latest + install_expat: "yes" + config: "--enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl --with-libexpat=/usr/local/opt/expat" + make_test: "yes" + - name: Clang on OS X + os: macos-latest + install_expat: "yes" + config: "CC=clang --enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl --with-libexpat=/usr/local/opt/expat --disable-static" + make_test: "yes" + clang_analysis: "yes" + - name: ubsan (gcc undefined behaviour sanitizer) + os: ubuntu-latest + config: 'CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=undefined -fno-sanitize-recover=all" --disable-flto --disable-static' + make_test: "yes" + - name: asan (gcc address sanitizer) + os: ubuntu-latest + config: 'CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=address" --disable-flto --disable-static' + make_test: "yes" + - name: Apple iPhone on iOS, armv7 + os: macos-latest + AUTOTOOLS_HOST: armv7-apple-ios + OPENSSL_HOST: ios-cross + IOS_SDK: iPhoneOS + IOS_CPU: armv7s + test_ios: "yes" + config: "no" + make: "no" + - name: Apple iPhone on iOS, arm64 + os: macos-latest + AUTOTOOLS_HOST: aarch64-apple-ios + OPENSSL_HOST: ios64-cross + IOS_SDK: iPhoneOS + IOS_CPU: arm64 + test_ios: "yes" + config: "no" + make: "no" + - name: Apple TV on iOS, arm64 + os: macos-latest + AUTOTOOLS_HOST: aarch64-apple-ios + OPENSSL_HOST: ios64-cross + IOS_SDK: AppleTVOS + IOS_CPU: arm64 + test_ios: "yes" + config: "no" + make: "no" + - name: Apple Watch on iOS, armv7 + os: macos-latest + AUTOTOOLS_HOST: armv7-apple-ios + OPENSSL_HOST: ios-cross + IOS_SDK: WatchOS + IOS_CPU: armv7k + test_ios: "yes" + config: "no" + make: "no" + - name: iPhoneSimulator on OS X, i386 + os: macos-latest + AUTOTOOLS_HOST: i386-apple-ios + OPENSSL_HOST: iphoneos-cross + IOS_SDK: iPhoneSimulator + IOS_CPU: i386 + test_ios: "yes" + config: "no" + make: "no" + - name: iPhoneSimulator on OS X, x86_64 + os: macos-latest + AUTOTOOLS_HOST: x86_64-apple-ios + OPENSSL_HOST: iphoneos-cross + IOS_SDK: iPhoneSimulator + IOS_CPU: x86_64 + test_ios: "yes" + config: "no" + make: "no" + - name: AppleTVSimulator on OS X, x86_64 + os: macos-latest + AUTOTOOLS_HOST: x86_64-apple-ios + OPENSSL_HOST: iphoneos-cross + IOS_SDK: AppleTVSimulator + IOS_CPU: x86_64 + test_ios: "yes" + config: "no" + make: "no" + - name: WatchSimulator on OS X, i386 + os: macos-latest + AUTOTOOLS_HOST: i386-apple-ios + OPENSSL_HOST: iphoneos-cross + IOS_SDK: WatchSimulator + IOS_CPU: i386 + test_ios: "yes" + config: "no" + make: "no" + - name: Android armv7a + os: ubuntu-latest + AUTOTOOLS_HOST: armv7a-linux-androidabi + OPENSSL_HOST: android-arm + ANDROID_CPU: armv7a + ANDROID_API: 23 + test_android: "yes" + config: "no" + make: "no" + - name: Android aarch64 + os: ubuntu-latest + AUTOTOOLS_HOST: aarch64-linux-android + OPENSSL_HOST: android-arm64 + ANDROID_CPU: aarch64 + ANDROID_API: 23 + test_android: "yes" + config: "no" + make: "no" + - name: Android x86 + os: ubuntu-latest + AUTOTOOLS_HOST: i686-linux-android + OPENSSL_HOST: android-x86 + ANDROID_CPU: x86 + ANDROID_API: 23 + test_android: "yes" + config: "no" + make: "no" + - name: Android x86_64 + os: ubuntu-latest + AUTOTOOLS_HOST: x86_64-linux-android + OPENSSL_HOST: android-x86_64 + ANDROID_CPU: x86_64 + ANDROID_API: 23 + test_android: "yes" + config: "no" + make: "no" + - name: Windows + os: windows-latest + test_windows: "yes" + config: "no" + make: "no" + + steps: + - uses: actions/checkout@v2 + with: + submodules: false + - name: test_windows + if: ${{ matrix.test_windows == 'yes' }} + shell: bash + run: | + export unboundpath=`pwd` + echo unboundpath=${unboundpath} + cd .. + export prepath=`pwd` + echo prepath=${prepath} + #echo "curl cpanm" + #curl -L -k -s -S -o cpanm https://cpanmin.us/ + #echo "perl cpanm Pod::Usage" + #perl cpanm Pod::Usage + mkdir openssl + echo "curl openssl" + curl -L -k -s -S -o openssl-1.1.1j.tar.gz https://www.openssl.org/source/openssl-1.1.1j.tar.gz + tar xzf openssl-1.1.1j.tar.gz + cd openssl-1.1.1j + # remove pod::Usage because we do not need -help or -man output + # from the Configure script + echo "Fixup ./Configure by removing use Pod::Usage require" + sed -e 's/use Pod::Usage//' < Configure > Configure.fix + echo "./Configure.fix no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix=\""$prepath/openssl\""" + ./Configure.fix no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="$prepath/openssl" + # make the libs only, build faster + echo "make build_libs" + #make + make build_libs + mv Makefile Makefile.orig + # fixup \\ in the installtop to /. + echo "fixup INSTALLTOP" + sed -e 's?^INSTALLTOP=.*$?INSTALLTOP='"$prepath"'/openssl?' < Makefile.orig > Makefile + # install the includes and libs only, build faster + echo "make install_dev" + #make install_sw + make install_dev + cd .. + mkdir expat + echo "curl expat" + curl -L -k -s -S -o expat-2.2.10.tar.gz https://github.com/libexpat/libexpat/releases/download/R_2_2_10/expat-2.2.10.tar.gz + tar xzf expat-2.2.10.tar.gz + cd expat-2.2.10 + echo "./configure SHELL=/usr/bin/bash CONFIG_SHELL=/usr/bin/bash --prefix=\"$prepath/expat\" --exec-prefix=\"$prepath/expat\" --bindir=\"$prepath/expat/bin\" --includedir=\"$prepath/expat/include\" --mandir=\"$prepath/expat/man\" --libdir=\"$prepath/expat/lib\"" + ./configure SHELL=/usr/bin/bash CONFIG_SHELL=/usr/bin/bash --prefix="$prepath/expat" --exec-prefix="$prepath/expat" --bindir="$prepath/expat/bin" --includedir="$prepath/expat/include" --mandir="$prepath/expat/man" --libdir="$prepath/expat/lib" + # fixup SHELL is treated specially, but SHELZZ is not by make. + echo "Fixup Makefiles by renaming SHELL to SHELLZZ" + mv Makefile Makefile.orig + sed -e 's/SHELL/SHELLZZ/g' < Makefile.orig > Makefile + mv lib/Makefile lib/Makefile.orig + sed -e 's/SHELL/SHELLZZ/g' < lib/Makefile.orig > lib/Makefile + mv doc/Makefile doc/Makefile.orig + sed -e 's/SHELL/SHELLZZ/g' < doc/Makefile.orig > doc/Makefile + mv examples/Makefile examples/Makefile.orig + sed -e 's/SHELL/SHELLZZ/g' < examples/Makefile.orig > examples/Makefile + mv tests/Makefile tests/Makefile.orig + sed -e 's/SHELL/SHELLZZ/g' < tests/Makefile.orig > tests/Makefile + mv xmlwf/Makefile xmlwf/Makefile.orig + sed -e 's/SHELL/SHELLZZ/g' < xmlwf/Makefile.orig > xmlwf/Makefile + echo "make" + make + echo "make install" + make install + cd .. + echo "unbound" + cd unbound + echo "./configure --enable-debug --enable-static-exe --disable-flto \"--with-ssl=$prepath/openssl\" --with-libexpat=\"$prepath/expat\" --disable-shared" + ./configure --enable-debug --enable-static-exe --disable-flto "--with-ssl=$prepath/openssl" --with-libexpat="$prepath/expat" --disable-shared + make + # specific test output + #make testbound.exe; ./testbound.exe -s + #make testbound; ./testbound.exe -p testdata/acl.rpl -o -vvvv + make test + - name: test_android + if: ${{ matrix.test_android == 'yes' }} + env: + AUTOTOOLS_HOST: ${{ matrix.AUTOTOOLS_HOST }} + OPENSSL_HOST: ${{ matrix.OPENSSL_HOST }} + ANDROID_API: ${{ matrix.ANDROID_API }} + ANDROID_CPU: ${{ matrix.ANDROID_CPU }} + run: | + #(already installed) ./contrib/android/install_tools.sh + export ANDROID_PREFIX="$HOME/android$ANDROID_API-$ANDROID_CPU" + echo ANDROID_PREFIX=${ANDROID_PREFIX} + export ANDROID_SDK_ROOT="$HOME/android-sdk" + echo ANDROID_SDK_ROOT=${ANDROID_SDK_ROOT} + export ANDROID_NDK_ROOT="$HOME/android-ndk" + echo ANDROID_NDK_ROOT=${ANDROID_NDK_ROOT} + export AUTOTOOLS_BUILD="$(./config.guess)" + echo AUTOTOOLS_BUILD=${AUTOTOOLS_BUILD} + export PKG_CONFIG_PATH="$ANDROID_PREFIX/lib/pkgconfig" + echo PKG_CONFIG_PATH=${PKG_CONFIG_PATH} + export CONFIG_OPTS="--build=$AUTOTOOLS_BUILD --host=$AUTOTOOLS_HOST --prefix=$ANDROID_PREFIX --with-ssl=$ANDROID_PREFIX --disable-gost --with-libexpat=$ANDROID_PREFIX" + echo CONFIG_OPTS=${CONFIG_OPTS} + echo "::group::install_ndk" + echo "./contrib/android/install_ndk.sh" + ./contrib/android/install_ndk.sh + echo "::endgroup::" + echo "::group::setenv_android.sh" + echo "./contrib/android/setenv_android.sh" + source ./contrib/android/setenv_android.sh + echo "::endgroup::" + echo "::group::install_openssl" + echo "./contrib/android/install_openssl.sh" + ./contrib/android/install_openssl.sh + echo "::endgroup::" + echo "::group::install_expat" + echo "./contrib/android/install_expat.sh" + ./contrib/android/install_expat.sh + echo "::endgroup::" + echo "::group::configure" + echo "./configure ${CONFIG_OPTS}" + ./configure ${CONFIG_OPTS} + echo "::endgroup::" + echo "::group::make" + # make is here to preserve environment variables + make + echo "::endgroup::" + echo "::group::make install" + make install + echo "::endgroup::" + - name: test ios + if: ${{ matrix.test_ios == 'yes' }} + env: + AUTOTOOLS_HOST: ${{ matrix.AUTOTOOLS_HOST }} + OPENSSL_HOST: ${{ matrix.OPENSSL_HOST }} + IOS_SDK: ${{ matrix.IOS_SDK }} + IOS_CPU: ${{ matrix.IOS_CPU }} + run: | + #(already installed) ./contrib/ios/install_tools.sh + export AUTOTOOLS_BUILD="$(./config.guess)" + echo AUTOTOOLS_BUILD=${AUTOTOOLS_BUILD} + export IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU" + echo IOS_PREFIX=${IOS_PREFIX} + export PKG_CONFIG_PATH="$IOS_PREFIX/lib/pkgconfig" + echo PKG_CONFIG_PATH=${PKG_CONFIG_PATH} + export CONFIG_OPTS="--build=$AUTOTOOLS_BUILD --host=$AUTOTOOLS_HOST --prefix=$IOS_PREFIX --with-ssl=$IOS_PREFIX --disable-gost --with-libexpat=$IOS_PREFIX" + echo CONFIG_OPTS=${CONFIG_OPTS} + echo "::group::setenv_ios.sh" + echo "./contrib/ios/setenv_ios.sh" + source ./contrib/ios/setenv_ios.sh + echo "::endgroup::" + echo "::group::install_openssl" + echo "./contrib/ios/install_openssl.sh" + ./contrib/ios/install_openssl.sh + echo "::endgroup::" + echo "::group::install_expat" + echo "./contrib/ios/install_expat.sh" + ./contrib/ios/install_expat.sh + echo "::endgroup::" + echo "::group::configure" + echo "./configure ${CONFIG_OPTS}" + ./configure ${CONFIG_OPTS} + echo "::endgroup::" + echo "::group::make" + # make is here to preserve environment variables + make + echo "::endgroup::" + echo "::group::make install" + make install + echo "::endgroup::" + - name: install libevent + if: ${{ matrix.install_libevent == 'yes' }} + run: sudo apt-get install libevent-dev + - name: install expat + if: ${{ matrix.install_expat == 'yes' }} + run: brew install expat + - name: configure + if: ${{ matrix.config != 'no' }} + run: ./configure ${{ matrix.config }} + - name: make + if: ${{ matrix.make != 'no' }} + run: make + - name: make test + if: ${{ matrix.make_test == 'yes' }} + run: make test + - name: clang-analysis + if: ${{ matrix.clang_analysis == 'yes' }} + run: (cd testdata/clang-analysis.tdir; bash clang-analysis.test) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..73d68fbf3 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,21 @@ +name: ci + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: configure + run: ./configure --enable-debug + - name: make + run: make + - name: make test + run: make test diff --git a/Makefile.in b/Makefile.in index 8d5c7ee83..3ac3b1681 100644 --- a/Makefile.in +++ b/Makefile.in @@ -175,10 +175,12 @@ UNITTEST_SRC=testcode/unitanchor.c testcode/unitdname.c \ testcode/unitlruhash.c testcode/unitmain.c testcode/unitmsgparse.c \ testcode/unitneg.c testcode/unitregional.c testcode/unitslabhash.c \ testcode/unitverify.c testcode/readhex.c testcode/testpkts.c testcode/unitldns.c \ -testcode/unitecs.c testcode/unitauth.c testcode/unitzonemd.c +testcode/unitecs.c testcode/unitauth.c testcode/unitzonemd.c \ +testcode/unittcpreuse.c UNITTEST_OBJ=unitanchor.lo unitdname.lo unitlruhash.lo unitmain.lo \ unitmsgparse.lo unitneg.lo unitregional.lo unitslabhash.lo unitverify.lo \ -readhex.lo testpkts.lo unitldns.lo unitecs.lo unitauth.lo unitzonemd.lo +readhex.lo testpkts.lo unitldns.lo unitecs.lo unitauth.lo unitzonemd.lo \ +unittcpreuse.lo UNITTEST_OBJ_LINK=$(UNITTEST_OBJ) worker_cb.lo $(COMMON_OBJ) $(SLDNS_OBJ) \ $(COMPAT_OBJ) DAEMON_SRC=daemon/acl_list.c daemon/cachedump.c daemon/daemon.c \ @@ -244,6 +246,9 @@ DELAYER_SRC=testcode/delayer.c DELAYER_OBJ=delayer.lo DELAYER_OBJ_LINK=$(DELAYER_OBJ) worker_cb.lo $(COMMON_OBJ) $(COMPAT_OBJ) \ $(SLDNS_OBJ) +READZONE_SRC=testcode/readzone.c +READZONE_OBJ=readzone.lo +READZONE_OBJ_LINK=$(READZONE_OBJ) worker_cb.lo $(COMMON_OBJ) $(COMPAT_OBJ) $(SLDNS_OBJ) IPSET_SRC=@IPSET_SRC@ IPSET_OBJ=@IPSET_OBJ@ DNSTAP_SOCKET_SRC=dnstap/unbound-dnstap-socket.c @@ -280,7 +285,7 @@ ALL_SRC=$(COMMON_SRC) $(UNITTEST_SRC) $(DAEMON_SRC) \ $(CONTROL_SRC) $(UBANCHOR_SRC) $(PETAL_SRC) $(DNSTAP_SOCKET_SRC)\ $(PYTHONMOD_SRC) $(PYUNBOUND_SRC) $(WIN_DAEMON_THE_SRC) \ $(SVCINST_SRC) $(SVCUNINST_SRC) $(ANCHORUPD_SRC) $(SLDNS_SRC) \ - $(DOHCLIENT_SRC) + $(DOHCLIENT_SRC) $(READZONE_SRC) ALL_OBJ=$(COMMON_OBJ) $(UNITTEST_OBJ) $(DAEMON_OBJ) \ $(TESTBOUND_OBJ) $(LOCKVERIFY_OBJ) $(PKTVIEW_OBJ) \ @@ -289,7 +294,7 @@ ALL_OBJ=$(COMMON_OBJ) $(UNITTEST_OBJ) $(DAEMON_OBJ) \ $(CONTROL_OBJ) $(UBANCHOR_OBJ) $(PETAL_OBJ) $(DNSTAP_SOCKET_OBJ)\ $(COMPAT_OBJ) $(PYUNBOUND_OBJ) \ $(SVCINST_OBJ) $(SVCUNINST_OBJ) $(ANCHORUPD_OBJ) $(SLDNS_OBJ) \ - $(DOHCLIENT_OBJ) + $(DOHCLIENT_OBJ) $(READZONE_OBJ) COMPILE=$(LIBTOOL) --tag=CC --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) @PTHREAD_CFLAGS_ONLY@ LINK=$(LIBTOOL) --tag=CC --mode=link $(CC) $(staticexe) $(RUNTIME_PATH) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) @@ -327,7 +332,7 @@ TEST_BIN=asynclook$(EXEEXT) delayer$(EXEEXT) \ lock-verify$(EXEEXT) memstats$(EXEEXT) perf$(EXEEXT) \ petal$(EXEEXT) pktview$(EXEEXT) streamtcp$(EXEEXT) \ $(DNSTAP_SOCKET_TESTBIN) dohclient$(EXEEXT) \ - testbound$(EXEEXT) unittest$(EXEEXT) + testbound$(EXEEXT) unittest$(EXEEXT) readzone$(EXEEXT) tests: all $(TEST_BIN) check: test @@ -405,6 +410,9 @@ perf$(EXEEXT): $(PERF_OBJ_LINK) delayer$(EXEEXT): $(DELAYER_OBJ_LINK) $(LINK) -o $@ $(DELAYER_OBJ_LINK) $(SSLLIB) $(LIBS) +readzone$(EXEEXT): $(READZONE_OBJ_LINK) + $(LINK) -o $@ $(READZONE_OBJ_LINK) $(SSLLIB) $(LIBS) + signit$(EXEEXT): testcode/signit.c $(CC) $(CPPFLAGS) $(CFLAGS) @PTHREAD_CFLAGS_ONLY@ -o $@ testcode/signit.c $(LDFLAGS) -lldns $(SSLLIB) $(LIBS) @@ -701,7 +709,8 @@ infra.lo infra.o: $(srcdir)/services/cache/infra.c config.h $(srcdir)/sldns/rrde rrset.lo rrset.o: $(srcdir)/services/cache/rrset.c config.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/slabhash.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/config_file.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/regional.h $(srcdir)/util/alloc.h $(srcdir)/util/net_help.h + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/util/regional.h \ + $(srcdir)/util/alloc.h $(srcdir)/util/net_help.h as112.lo as112.o: $(srcdir)/util/as112.c $(srcdir)/util/as112.h dname.lo dname.o: $(srcdir)/util/data/dname.c config.h $(srcdir)/util/data/dname.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgparse.h \ @@ -790,7 +799,8 @@ iter_utils.lo iter_utils.o: $(srcdir)/iterator/iter_utils.c config.h $(srcdir)/i $(srcdir)/iterator/iter_donotq.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/iterator/iter_priv.h \ $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/rrset.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/services/outside_network.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h \ $(srcdir)/util/regional.h $(srcdir)/util/data/dname.h $(srcdir)/util/random.h $(srcdir)/util/fptr_wlist.h \ $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ $(srcdir)/services/localzone.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h \ @@ -837,11 +847,7 @@ modstack.lo modstack.o: $(srcdir)/services/modstack.c config.h $(srcdir)/service $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/dns64/dns64.h $(srcdir)/iterator/iterator.h \ - $(srcdir)/services/outbound_list.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h \ - $(PYTHONMOD_HEADER) $(DYNLIBMOD_HEADER) $(srcdir)/cachedb/cachedb.h \ - $(srcdir)/ipsecmod/ipsecmod.h $(srcdir)/edns-subnet/subnetmod.h $(srcdir)/util/alloc.h $(srcdir)/util/net_help.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/util/data/dname.h $(srcdir)/edns-subnet/addrtree.h \ - $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/ipset/ipset.h + $(srcdir)/services/outbound_list.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h view.lo view.o: $(srcdir)/services/view.c config.h $(srcdir)/services/view.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h \ @@ -872,8 +878,7 @@ outside_network.lo outside_network.o: $(srcdir)/services/outside_network.c confi $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h \ $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h \ - $(srcdir)/util/edns.h $(srcdir)/dnstap/dnstap.h \ - + $(srcdir)/util/edns.h $(srcdir)/dnstap/dnstap.h alloc.lo alloc.o: $(srcdir)/util/alloc.c config.h $(srcdir)/util/alloc.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/regional.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ @@ -894,8 +899,7 @@ config_file.lo config_file.o: $(srcdir)/util/config_file.c config.h $(srcdir)/ut $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/data/dname.h \ $(srcdir)/util/rtt.h $(srcdir)/services/cache/infra.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/parseutil.h \ - $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/edns-subnet/edns-subnet.h \ - $(srcdir)/util/iana_ports.inc + $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/util/iana_ports.inc configlexer.lo configlexer.o: util/configlexer.c config.h $(srcdir)/util/configyyrename.h \ $(srcdir)/util/config_file.h util/configparser.h configparser.lo configparser.o: util/configparser.c config.h $(srcdir)/util/configyyrename.h \ @@ -924,8 +928,9 @@ authzone.lo authzone.o: $(srcdir)/services/authzone.c config.h $(srcdir)/service $(srcdir)/util/data/msgencode.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/util/random.h \ $(srcdir)/services/cache/dns.h $(srcdir)/services/outside_network.h \ $(srcdir)/services/listen_dnsport.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h \ - $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/keyraw.h \ - $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_secalgo.h + $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/keyraw.h $(srcdir)/validator/val_nsec3.h \ + $(srcdir)/validator/val_nsec.h $(srcdir)/validator/val_secalgo.h $(srcdir)/validator/val_sigcrypt.h \ + $(srcdir)/validator/val_anchor.h $(srcdir)/validator/val_utils.h fptr_wlist.lo fptr_wlist.o: $(srcdir)/util/fptr_wlist.c config.h $(srcdir)/util/fptr_wlist.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/module.h \ @@ -934,7 +939,7 @@ fptr_wlist.lo fptr_wlist.o: $(srcdir)/util/fptr_wlist.c config.h $(srcdir)/util/ $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/mini_event.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h \ $(srcdir)/services/outside_network.h $(srcdir)/services/cache/infra.h \ $(srcdir)/util/rtt.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/dns64/dns64.h \ $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_fwd.h \ @@ -942,13 +947,18 @@ fptr_wlist.lo fptr_wlist.o: $(srcdir)/util/fptr_wlist.c config.h $(srcdir)/util/ $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_sigcrypt.h $(srcdir)/validator/val_kentry.h \ $(srcdir)/validator/val_neg.h $(srcdir)/validator/autotrust.h $(srcdir)/libunbound/libworker.h \ $(srcdir)/libunbound/context.h $(srcdir)/util/alloc.h $(srcdir)/libunbound/unbound-event.h \ - $(srcdir)/libunbound/worker.h $(PYTHONMOD_HEADER) $(DYNLIBMOD_HEADER) \ - $(srcdir)/cachedb/cachedb.h $(srcdir)/ipsecmod/ipsecmod.h $(srcdir)/edns-subnet/subnetmod.h \ - $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/edns-subnet/addrtree.h \ - $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/ipset/ipset.h $(srcdir)/dnstap/dtstream.h + $(srcdir)/libunbound/worker.h locks.lo locks.o: $(srcdir)/util/locks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h log.lo log.o: $(srcdir)/util/log.c config.h $(srcdir)/util/log.h $(srcdir)/util/locks.h $(srcdir)/sldns/sbuffer.h -mini_event.lo mini_event.o: $(srcdir)/util/mini_event.c config.h $(srcdir)/util/mini_event.h +mini_event.lo mini_event.o: $(srcdir)/util/mini_event.c config.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h \ + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h module.lo module.o: $(srcdir)/util/module.c config.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/wire2str.h @@ -961,14 +971,12 @@ netevent.lo netevent.o: $(srcdir)/util/netevent.c config.h $(srcdir)/util/neteve $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/services/view.h \ $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/sldns/str2wire.h \ - $(srcdir)/dnstap/dnstap.h $(srcdir)/services/listen_dnsport.h \ - + $(srcdir)/dnstap/dnstap.h $(srcdir)/services/listen_dnsport.h net_help.lo net_help.o: $(srcdir)/util/net_help.c config.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/module.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h \ - $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/wire2str.h \ - + $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/wire2str.h random.lo random.o: $(srcdir)/util/random.c config.h $(srcdir)/util/random.h $(srcdir)/util/log.h rbtree.lo rbtree.o: $(srcdir)/util/rbtree.c config.h $(srcdir)/util/log.h $(srcdir)/util/fptr_wlist.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ @@ -1022,8 +1030,7 @@ tube.lo tube.o: $(srcdir)/util/tube.c config.h $(srcdir)/util/tube.h $(srcdir)/u $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/ub_event.h ub_event.lo ub_event.o: $(srcdir)/util/ub_event.c config.h $(srcdir)/util/ub_event.h $(srcdir)/util/log.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/util/tube.h \ - + $(srcdir)/util/tube.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h ub_event_pluggable.lo ub_event_pluggable.o: $(srcdir)/util/ub_event_pluggable.c config.h $(srcdir)/util/ub_event.h \ $(srcdir)/libunbound/unbound-event.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/util/log.h $(srcdir)/util/fptr_wlist.h \ @@ -1033,8 +1040,7 @@ ub_event_pluggable.lo ub_event_pluggable.o: $(srcdir)/util/ub_event_pluggable.c $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h \ - + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h winsock_event.lo winsock_event.o: $(srcdir)/util/winsock_event.c config.h autotrust.lo autotrust.o: $(srcdir)/validator/autotrust.c config.h $(srcdir)/validator/autotrust.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ @@ -1047,8 +1053,7 @@ autotrust.lo autotrust.o: $(srcdir)/validator/autotrust.c config.h $(srcdir)/val $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ $(srcdir)/respip/respip.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/validator/val_kcache.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/keyraw.h \ - + $(srcdir)/validator/val_kcache.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/keyraw.h val_anchor.lo val_anchor.o: $(srcdir)/validator/val_anchor.c config.h $(srcdir)/validator/val_anchor.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/validator/val_sigcrypt.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h \ @@ -1078,13 +1083,11 @@ val_kcache.lo val_kcache.o: $(srcdir)/validator/val_kcache.c config.h $(srcdir)/ val_kentry.lo val_kentry.o: $(srcdir)/validator/val_kentry.c config.h $(srcdir)/validator/val_kentry.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ - -val_neg.lo val_neg.o: $(srcdir)/validator/val_neg.c config.h \ - $(srcdir)/validator/val_neg.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/rbtree.h \ - $(srcdir)/validator/val_nsec.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_utils.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/net_help.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h +val_neg.lo val_neg.o: $(srcdir)/validator/val_neg.c config.h $(srcdir)/validator/val_neg.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/util/rbtree.h $(srcdir)/validator/val_nsec.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_utils.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/net_help.h \ $(srcdir)/util/config_file.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ $(srcdir)/services/cache/dns.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h val_nsec3.lo val_nsec3.o: $(srcdir)/validator/val_nsec3.c config.h $(srcdir)/validator/val_nsec3.h \ @@ -1102,17 +1105,15 @@ val_nsec.lo val_nsec.o: $(srcdir)/validator/val_nsec.c config.h $(srcdir)/valida val_secalgo.lo val_secalgo.o: $(srcdir)/validator/val_secalgo.c config.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/validator/val_secalgo.h \ $(srcdir)/validator/val_nsec3.h $(srcdir)/util/rbtree.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ - $(srcdir)/sldns/sbuffer.h \ - + $(srcdir)/sldns/sbuffer.h val_sigcrypt.lo val_sigcrypt.o: $(srcdir)/validator/val_sigcrypt.c config.h \ $(srcdir)/validator/val_sigcrypt.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/sldns/pkthdr.h $(srcdir)/validator/val_secalgo.h \ $(srcdir)/validator/validator.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/rrdef.h $(srcdir)/validator/val_utils.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/rbtree.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h \ - $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/wire2str.h \ - + $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/parseutil.h \ + $(srcdir)/sldns/wire2str.h val_utils.lo val_utils.o: $(srcdir)/validator/val_utils.c config.h $(srcdir)/validator/val_utils.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/validator/validator.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ @@ -1133,43 +1134,13 @@ dns64.lo dns64.o: $(srcdir)/dns64/dns64.c config.h $(srcdir)/dns64/dns64.h $(src $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/net_help.h \ $(srcdir)/util/regional.h $(srcdir)/util/data/dname.h $(srcdir)/sldns/str2wire.h -edns-subnet.lo edns-subnet.o: $(srcdir)/edns-subnet/edns-subnet.c config.h \ - $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h -subnetmod.lo subnetmod.o: $(srcdir)/edns-subnet/subnetmod.c config.h $(srcdir)/edns-subnet/subnetmod.h \ - $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/services/outbound_list.h $(srcdir)/util/alloc.h \ - $(srcdir)/util/net_help.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/data/dname.h \ - $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h \ - $(srcdir)/edns-subnet/subnet-whitelist.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ - $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ - $(srcdir)/services/localzone.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h \ - $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ - $(srcdir)/respip/respip.h $(srcdir)/services/cache/dns.h $(srcdir)/util/regional.h \ - $(srcdir)/iterator/iter_utils.h $(srcdir)/iterator/iter_resptype.h +edns-subnet.lo edns-subnet.o: $(srcdir)/edns-subnet/edns-subnet.c config.h +subnetmod.lo subnetmod.o: $(srcdir)/edns-subnet/subnetmod.c config.h addrtree.lo addrtree.o: $(srcdir)/edns-subnet/addrtree.c config.h $(srcdir)/util/log.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/edns-subnet/addrtree.h -subnet-whitelist.lo subnet-whitelist.o: $(srcdir)/edns-subnet/subnet-whitelist.c config.h \ - $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h \ - $(srcdir)/edns-subnet/subnet-whitelist.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ - $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h -cachedb.lo cachedb.o: $(srcdir)/cachedb/cachedb.c config.h $(srcdir)/cachedb/cachedb.h $(srcdir)/util/module.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/cachedb/redis.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/data/msgencode.h $(srcdir)/services/cache/dns.h \ - $(srcdir)/validator/val_neg.h $(srcdir)/util/rbtree.h $(srcdir)/validator/val_secalgo.h \ - $(srcdir)/iterator/iter_utils.h $(srcdir)/iterator/iter_resptype.h $(srcdir)/sldns/parseutil.h \ - $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/sbuffer.h -redis.lo redis.o: $(srcdir)/cachedb/redis.c config.h $(srcdir)/cachedb/redis.h $(srcdir)/cachedb/cachedb.h \ - $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/alloc.h $(srcdir)/util/config_file.h \ - $(srcdir)/sldns/sbuffer.h +subnet-whitelist.lo subnet-whitelist.o: $(srcdir)/edns-subnet/subnet-whitelist.c config.h respip.lo respip.o: $(srcdir)/respip/respip.c config.h $(srcdir)/services/localzone.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/module.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ @@ -1182,42 +1153,8 @@ respip.lo respip.o: $(srcdir)/respip/respip.c config.h $(srcdir)/services/localz $(srcdir)/util/regional.h checklocks.lo checklocks.o: $(srcdir)/testcode/checklocks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/testcode/checklocks.h -dnstap.lo dnstap.o: $(srcdir)/dnstap/dnstap.c config.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnstap/dnstap.h \ - $(srcdir)/dnstap/dtstream.h $(srcdir)/util/locks.h dnstap/dnstap.pb-c.h -dnstap.pb-c.lo dnstap.pb-c.o: dnstap/dnstap.pb-c.c dnstap/dnstap.pb-c.h \ - -dnstap_fstrm.lo dnstap_fstrm.o: $(srcdir)/dnstap/dnstap_fstrm.c config.h $(srcdir)/dnstap/dnstap_fstrm.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h -dtstream.lo dtstream.o: $(srcdir)/dnstap/dtstream.c config.h $(srcdir)/dnstap/dtstream.h $(srcdir)/util/locks.h \ - $(srcdir)/util/log.h $(srcdir)/dnstap/dnstap_fstrm.h $(srcdir)/util/config_file.h $(srcdir)/util/ub_event.h \ - $(srcdir)/util/net_help.h $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/sldns/sbuffer.h \ - -ipsecmod.lo ipsecmod.o: $(srcdir)/ipsecmod/ipsecmod.c config.h $(srcdir)/ipsecmod/ipsecmod.h \ - $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/rbtree.h $(srcdir)/ipsecmod/ipsecmod-whitelist.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/tube.h \ - $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ - $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h \ - $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h \ - $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/services/cache/dns.h $(srcdir)/sldns/wire2str.h -ipsecmod-whitelist.lo ipsecmod-whitelist.o: $(srcdir)/ipsecmod/ipsecmod-whitelist.c config.h \ - $(srcdir)/ipsecmod/ipsecmod.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ - $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/rbtree.h \ - $(srcdir)/ipsecmod/ipsecmod-whitelist.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/regional.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/data/dname.h $(srcdir)/sldns/str2wire.h -ipset.lo ipset.o: $(srcdir)/ipset/ipset.c config.h $(srcdir)/ipset/ipset.h $(srcdir)/util/module.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h \ - $(srcdir)/services/cache/dns.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/parseutil.h +ipsecmod.lo ipsecmod.o: $(srcdir)/ipsecmod/ipsecmod.c config.h +ipsecmod-whitelist.lo ipsecmod-whitelist.o: $(srcdir)/ipsecmod/ipsecmod-whitelist.c config.h unitanchor.lo unitanchor.o: $(srcdir)/testcode/unitanchor.c config.h $(srcdir)/util/log.h $(srcdir)/util/data/dname.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/testcode/unitmain.h \ $(srcdir)/validator/val_anchor.h $(srcdir)/util/rbtree.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/rrdef.h @@ -1226,8 +1163,7 @@ unitdname.lo unitdname.o: $(srcdir)/testcode/unitdname.c config.h $(srcdir)/util $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h unitlruhash.lo unitlruhash.o: $(srcdir)/testcode/unitlruhash.c config.h $(srcdir)/testcode/unitmain.h \ $(srcdir)/util/log.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/storage/slabhash.h -unitmain.lo unitmain.o: $(srcdir)/testcode/unitmain.c config.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ +unitmain.lo unitmain.o: $(srcdir)/testcode/unitmain.c config.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ $(srcdir)/util/log.h $(srcdir)/testcode/unitmain.h $(srcdir)/util/alloc.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h \ $(srcdir)/util/config_file.h $(srcdir)/util/rtt.h $(srcdir)/util/timehist.h $(srcdir)/iterator/iterator.h \ $(srcdir)/services/outbound_list.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h \ @@ -1268,14 +1204,7 @@ testpkts.lo testpkts.o: $(srcdir)/testcode/testpkts.c config.h $(srcdir)/testcod unitldns.lo unitldns.o: $(srcdir)/testcode/unitldns.c config.h $(srcdir)/util/log.h $(srcdir)/testcode/unitmain.h \ $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/wire2str.h \ $(srcdir)/sldns/parseutil.h -unitzonemd.lo unitzonemd.o: $(srcdir)/testcode/unitzonemd.c config.h $(srcdir)/services/authzone.h -unitecs.lo unitecs.o: $(srcdir)/testcode/unitecs.c config.h $(srcdir)/util/log.h $(srcdir)/util/module.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/testcode/unitmain.h $(srcdir)/edns-subnet/addrtree.h \ - $(srcdir)/edns-subnet/subnetmod.h $(srcdir)/services/outbound_list.h $(srcdir)/util/alloc.h \ - $(srcdir)/util/net_help.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/data/dname.h \ - $(srcdir)/edns-subnet/edns-subnet.h +unitecs.lo unitecs.o: $(srcdir)/testcode/unitecs.c config.h unitauth.lo unitauth.o: $(srcdir)/testcode/unitauth.c config.h $(srcdir)/services/authzone.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h \ $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/data/msgparse.h \ @@ -1286,49 +1215,58 @@ unitauth.lo unitauth.o: $(srcdir)/testcode/unitauth.c config.h $(srcdir)/service $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/testcode/unitmain.h \ $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/services/cache/dns.h $(srcdir)/sldns/str2wire.h \ $(srcdir)/sldns/wire2str.h +unitzonemd.lo unitzonemd.o: $(srcdir)/testcode/unitzonemd.c config.h $(srcdir)/util/log.h \ + $(srcdir)/testcode/unitmain.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h $(srcdir)/services/authzone.h \ + $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h \ + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/data/dname.h $(srcdir)/util/regional.h \ + $(srcdir)/validator/val_anchor.h +unittcpreuse.lo unittcpreuse.o: $(srcdir)/testcode/unittcpreuse.c config.h $(srcdir)/services/outside_network.h \ +$(srcdir)/util/random.h acl_list.lo acl_list.o: $(srcdir)/daemon/acl_list.c config.h $(srcdir)/daemon/acl_list.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h $(srcdir)/util/locks.h \ $(srcdir)/util/log.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h \ $(srcdir)/services/localzone.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h -cachedump.lo cachedump.o: $(srcdir)/daemon/cachedump.c config.h \ - $(srcdir)/daemon/cachedump.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h \ - $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ - $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \ - $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \ - $(srcdir)/util/data/dname.h $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h \ - $(srcdir)/iterator/iter_delegpt.h $(srcdir)/iterator/iter_utils.h $(srcdir)/iterator/iter_resptype.h \ - $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/sldns/wire2str.h \ - $(srcdir)/sldns/str2wire.h -daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h \ - $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ - $(srcdir)/daemon/worker.h \ - $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h \ - $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/shm_side/shm_main.h $(srcdir)/util/storage/lookup3.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/util/tcp_conn_limit.h $(srcdir)/util/edns.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/rtt.h $(srcdir)/services/localzone.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ - $(srcdir)/services/rpz.h $(srcdir)/respip/respip.h $(srcdir)/util/random.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h \ - $(srcdir)/sldns/keyraw.h -remote.lo remote.o: $(srcdir)/daemon/remote.c config.h \ - $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ +cachedump.lo cachedump.o: $(srcdir)/daemon/cachedump.c config.h $(srcdir)/daemon/cachedump.h \ + $(srcdir)/daemon/remote.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ - $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/daemon.h \ + $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/dns.h \ + $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h \ + $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/iterator/iterator.h \ + $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/iterator/iter_utils.h \ + $(srcdir)/iterator/iter_resptype.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h \ + $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h +daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ + $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ + $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/view.h $(srcdir)/util/config_file.h $(srcdir)/util/shm_side/shm_main.h \ + $(srcdir)/util/storage/lookup3.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/tcp_conn_limit.h \ + $(srcdir)/util/edns.h $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/services/localzone.h \ + $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h $(srcdir)/respip/respip.h \ + $(srcdir)/util/random.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h $(srcdir)/sldns/keyraw.h +remote.lo remote.o: $(srcdir)/daemon/remote.c config.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/worker.h \ + $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h \ + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/alloc.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h \ + $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/daemon.h \ $(srcdir)/services/modstack.h $(srcdir)/daemon/cachedump.h $(srcdir)/util/config_file.h \ $(srcdir)/util/net_help.h $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \ @@ -1353,21 +1291,19 @@ stats.lo stats.o: $(srcdir)/daemon/stats.c config.h $(srcdir)/daemon/stats.h $(s $(srcdir)/util/net_help.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h \ $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ - $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_neg.h $(srcdir)/edns-subnet/subnetmod.h \ - $(srcdir)/util/data/dname.h $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h \ - + $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_neg.h unbound.lo unbound.o: $(srcdir)/daemon/unbound.c config.h $(srcdir)/util/log.h $(srcdir)/daemon/daemon.h \ $(srcdir)/util/locks.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ - $(srcdir)/daemon/remote.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/services/cache/rrset.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h \ - $(srcdir)/services/localzone.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h \ - $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h \ - $(srcdir)/util/net_help.h $(srcdir)/util/ub_event.h + $(srcdir)/daemon/remote.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h $(srcdir)/services/listen_dnsport.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/fptr_wlist.h \ + $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/ub_event.h worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \ $(srcdir)/util/random.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ @@ -1375,32 +1311,32 @@ worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(sr $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/daemon.h \ - $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/services/outside_network.h \ - $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/rtt.h $(srcdir)/services/cache/dns.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ - $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/respip/respip.h \ - $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \ - $(srcdir)/util/edns.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h \ - $(srcdir)/validator/autotrust.h $(srcdir)/validator/val_anchor.h $(srcdir)/libunbound/context.h \ - $(srcdir)/libunbound/unbound-event.h $(srcdir)/libunbound/libworker.h $(srcdir)/sldns/wire2str.h \ - $(srcdir)/util/shm_side/shm_main.h $(srcdir)/dnstap/dtstream.h + $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/listen_dnsport.h \ + $(srcdir)/services/outside_network.h $(srcdir)/services/outbound_list.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/respip/respip.h $(srcdir)/util/data/msgencode.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/edns.h \ + $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/iterator/iter_utils.h \ + $(srcdir)/iterator/iter_resptype.h $(srcdir)/validator/autotrust.h $(srcdir)/validator/val_anchor.h \ + $(srcdir)/libunbound/context.h $(srcdir)/libunbound/unbound-event.h $(srcdir)/libunbound/libworker.h \ + $(srcdir)/sldns/wire2str.h $(srcdir)/util/shm_side/shm_main.h $(srcdir)/dnstap/dtstream.h testbound.lo testbound.o: $(srcdir)/testcode/testbound.c config.h $(srcdir)/testcode/testpkts.h \ $(srcdir)/testcode/replay.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/util/rbtree.h $(srcdir)/testcode/fake_event.h \ - $(srcdir)/daemon/remote.h \ - $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h $(srcdir)/daemon/unbound.c $(srcdir)/util/log.h \ - $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \ - $(srcdir)/util/rtt.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h \ + $(srcdir)/daemon/remote.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h $(srcdir)/daemon/unbound.c $(srcdir)/daemon/daemon.h \ + $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/services/view.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/net_help.h $(srcdir)/util/ub_event.h + $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ + $(srcdir)/respip/respip.h $(srcdir)/util/net_help.h $(srcdir)/util/ub_event.h testpkts.lo testpkts.o: $(srcdir)/testcode/testpkts.c config.h $(srcdir)/testcode/testpkts.h \ $(srcdir)/util/net_help.h $(srcdir)/util/log.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h @@ -1411,39 +1347,38 @@ worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(sr $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/daemon.h \ - $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/services/outside_network.h \ - $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/rtt.h $(srcdir)/services/cache/dns.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ - $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/respip/respip.h \ - $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \ - $(srcdir)/util/edns.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h \ - $(srcdir)/validator/autotrust.h $(srcdir)/validator/val_anchor.h $(srcdir)/libunbound/context.h \ - $(srcdir)/libunbound/unbound-event.h $(srcdir)/libunbound/libworker.h $(srcdir)/sldns/wire2str.h \ - $(srcdir)/util/shm_side/shm_main.h $(srcdir)/dnstap/dtstream.h + $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/listen_dnsport.h \ + $(srcdir)/services/outside_network.h $(srcdir)/services/outbound_list.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/respip/respip.h $(srcdir)/util/data/msgencode.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/edns.h \ + $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/iterator/iter_utils.h \ + $(srcdir)/iterator/iter_resptype.h $(srcdir)/validator/autotrust.h $(srcdir)/validator/val_anchor.h \ + $(srcdir)/libunbound/context.h $(srcdir)/libunbound/unbound-event.h $(srcdir)/libunbound/libworker.h \ + $(srcdir)/sldns/wire2str.h $(srcdir)/util/shm_side/shm_main.h $(srcdir)/dnstap/dtstream.h acl_list.lo acl_list.o: $(srcdir)/daemon/acl_list.c config.h $(srcdir)/daemon/acl_list.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h $(srcdir)/util/locks.h \ $(srcdir)/util/log.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h \ $(srcdir)/services/localzone.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h -daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h \ - $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ - $(srcdir)/daemon/worker.h \ - $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h \ - $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/shm_side/shm_main.h $(srcdir)/util/storage/lookup3.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/util/tcp_conn_limit.h $(srcdir)/util/edns.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/rtt.h $(srcdir)/services/localzone.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ - $(srcdir)/services/rpz.h $(srcdir)/respip/respip.h $(srcdir)/util/random.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h \ - $(srcdir)/sldns/keyraw.h +daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ + $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ + $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/view.h $(srcdir)/util/config_file.h $(srcdir)/util/shm_side/shm_main.h \ + $(srcdir)/util/storage/lookup3.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/tcp_conn_limit.h \ + $(srcdir)/util/edns.h $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/services/localzone.h \ + $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h $(srcdir)/respip/respip.h \ + $(srcdir)/util/random.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h $(srcdir)/sldns/keyraw.h stats.lo stats.o: $(srcdir)/daemon/stats.c config.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ $(srcdir)/libunbound/unbound.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ @@ -1457,9 +1392,7 @@ stats.lo stats.o: $(srcdir)/daemon/stats.c config.h $(srcdir)/daemon/stats.h $(s $(srcdir)/util/net_help.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h \ $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ - $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_neg.h $(srcdir)/edns-subnet/subnetmod.h \ - $(srcdir)/util/data/dname.h $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h \ - + $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_neg.h replay.lo replay.o: $(srcdir)/testcode/replay.c config.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \ $(srcdir)/util/config_file.h $(srcdir)/testcode/replay.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/testcode/testpkts.h $(srcdir)/util/rbtree.h \ @@ -1476,7 +1409,7 @@ fake_event.lo fake_event.o: $(srcdir)/testcode/fake_event.c config.h $(srcdir)/t $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ $(srcdir)/services/localzone.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h \ $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h \ - $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h + $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h $(srcdir)/daemon/remote.h lock_verify.lo lock_verify.o: $(srcdir)/testcode/lock_verify.c config.h $(srcdir)/util/log.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/locks.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/module.h \ @@ -1511,8 +1444,7 @@ unbound-checkconf.lo unbound-checkconf.o: $(srcdir)/smallapp/unbound-checkconf.c $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/sldns/str2wire.h \ - $(PYTHONMOD_HEADER) $(srcdir)/edns-subnet/subnet-whitelist.h + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/sldns/str2wire.h worker_cb.lo worker_cb.o: $(srcdir)/smallapp/worker_cb.c config.h $(srcdir)/libunbound/context.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \ $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/unbound-event.h $(srcdir)/util/data/packed_rrset.h \ @@ -1546,70 +1478,72 @@ libunbound.lo libunbound.o: $(srcdir)/libunbound/libunbound.c $(srcdir)/libunbou $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ $(srcdir)/services/rpz.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/respip/respip.h -libworker.lo libworker.o: $(srcdir)/libunbound/libworker.c config.h \ - $(srcdir)/libunbound/libworker.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/libunbound/context.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h \ - $(srcdir)/services/modstack.h $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/unbound-event.h \ - $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/outside_network.h \ - $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/services/mesh.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ - $(srcdir)/services/view.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ - $(srcdir)/util/timehist.h $(srcdir)/respip/respip.h $(srcdir)/services/cache/rrset.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/services/outbound_list.h $(srcdir)/util/fptr_wlist.h \ - $(srcdir)/util/tube.h $(srcdir)/util/regional.h $(srcdir)/util/random.h $(srcdir)/util/storage/lookup3.h \ - $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgencode.h \ - $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/sldns/str2wire.h +libworker.lo libworker.o: $(srcdir)/libunbound/libworker.c config.h $(srcdir)/libunbound/libworker.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/libunbound/context.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/unbound-event.h $(srcdir)/libunbound/worker.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/services/outside_network.h $(srcdir)/util/netevent.h \ + $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/util/config_file.h \ + $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/respip/respip.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/outbound_list.h \ + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/regional.h $(srcdir)/util/random.h \ + $(srcdir)/util/storage/lookup3.h $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/data/msgencode.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h \ + $(srcdir)/sldns/str2wire.h unbound-host.lo unbound-host.o: $(srcdir)/smallapp/unbound-host.c config.h $(srcdir)/libunbound/unbound.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/wire2str.h \ - + $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/wire2str.h asynclook.lo asynclook.o: $(srcdir)/testcode/asynclook.c config.h $(srcdir)/libunbound/unbound.h \ $(srcdir)/libunbound/context.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h \ $(srcdir)/services/modstack.h $(srcdir)/libunbound/unbound-event.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/rrdef.h \ - + $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/rrdef.h streamtcp.lo streamtcp.o: $(srcdir)/testcode/streamtcp.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/net_help.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/dname.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h \ - + $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h perf.lo perf.o: $(srcdir)/testcode/perf.c config.h $(srcdir)/util/log.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h \ $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h delayer.lo delayer.o: $(srcdir)/testcode/delayer.c config.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h \ $(srcdir)/util/config_file.h $(srcdir)/sldns/sbuffer.h -unbound-control.lo unbound-control.o: $(srcdir)/smallapp/unbound-control.c config.h \ - $(srcdir)/util/log.h $(srcdir)/util/config_file.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h \ - $(srcdir)/util/shm_side/shm_main.h $(srcdir)/libunbound/unbound.h $(srcdir)/daemon/stats.h \ - $(srcdir)/util/timehist.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/pkthdr.h $(srcdir)/services/rpz.h \ - $(srcdir)/services/localzone.h $(srcdir)/util/rbtree.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/module.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/rrdef.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/services/modstack.h $(srcdir)/respip/respip.h +unbound-control.lo unbound-control.o: $(srcdir)/smallapp/unbound-control.c config.h $(srcdir)/util/log.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h $(srcdir)/util/shm_side/shm_main.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/sldns/wire2str.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/util/rbtree.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/services/modstack.h $(srcdir)/respip/respip.h \ + $(srcdir)/services/listen_dnsport.h unbound-anchor.lo unbound-anchor.o: $(srcdir)/smallapp/unbound-anchor.c config.h $(srcdir)/libunbound/unbound.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/parseutil.h \ - -petal.lo petal.o: $(srcdir)/testcode/petal.c config.h \ - + $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/parseutil.h +petal.lo petal.o: $(srcdir)/testcode/petal.c config.h unbound-dnstap-socket.lo unbound-dnstap-socket.o: $(srcdir)/dnstap/unbound-dnstap-socket.c config.h \ $(srcdir)/dnstap/dtstream.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/dnstap/dnstap_fstrm.h \ $(srcdir)/util/ub_event.h $(srcdir)/util/net_help.h $(srcdir)/services/listen_dnsport.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h \ - dnstap/dnstap.pb-c.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h -pythonmod_utils.lo pythonmod_utils.o: $(srcdir)/pythonmod/pythonmod_utils.c config.h $(srcdir)/util/module.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/util/net_help.h $(srcdir)/services/cache/dns.h \ - $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/regional.h \ - $(srcdir)/iterator/iter_delegpt.h $(srcdir)/sldns/sbuffer.h \ - + $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/daemon/worker.h \ + $(srcdir)/libunbound/worker.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ + $(srcdir)/daemon/remote.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h \ + $(srcdir)/services/authzone.h $(srcdir)/respip/respip.h $(srcdir)/libunbound/context.h \ + $(srcdir)/libunbound/unbound-event.h +pythonmod_utils.lo pythonmod_utils.o: $(srcdir)/pythonmod/pythonmod_utils.c config.h \ + $(srcdir)/pythonmod/pythonmod_utils.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/netevent.h \ + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/net_help.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ + $(srcdir)/util/regional.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/sldns/sbuffer.h win_svc.lo win_svc.o: $(srcdir)/winrc/win_svc.c config.h $(srcdir)/winrc/win_svc.h $(srcdir)/winrc/w_inst.h \ $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ $(srcdir)/daemon/worker.h \ @@ -1617,8 +1551,8 @@ win_svc.lo win_svc.o: $(srcdir)/winrc/win_svc.c config.h $(srcdir)/winrc/win_svc $(srcdir)/util/storage/lruhash.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h \ - $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/ub_event.h $(srcdir)/util/net_help.h + $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h $(srcdir)/util/config_file.h $(srcdir)/util/ub_event.h \ + $(srcdir)/util/net_help.h w_inst.lo w_inst.o: $(srcdir)/winrc/w_inst.c config.h $(srcdir)/winrc/w_inst.h $(srcdir)/winrc/win_svc.h unbound-service-install.lo unbound-service-install.o: $(srcdir)/winrc/unbound-service-install.c config.h \ $(srcdir)/winrc/w_inst.h @@ -1626,14 +1560,12 @@ unbound-service-remove.lo unbound-service-remove.o: $(srcdir)/winrc/unbound-serv $(srcdir)/winrc/w_inst.h anchor-update.lo anchor-update.o: $(srcdir)/winrc/anchor-update.c config.h $(srcdir)/libunbound/unbound.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/wire2str.h -keyraw.lo keyraw.o: $(srcdir)/sldns/keyraw.c config.h $(srcdir)/sldns/keyraw.h \ - $(srcdir)/sldns/rrdef.h \ - +keyraw.lo keyraw.o: $(srcdir)/sldns/keyraw.c config.h $(srcdir)/sldns/keyraw.h $(srcdir)/sldns/rrdef.h sbuffer.lo sbuffer.o: $(srcdir)/sldns/sbuffer.c config.h $(srcdir)/sldns/sbuffer.h wire2str.lo wire2str.o: $(srcdir)/sldns/wire2str.c config.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/sldns/keyraw.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h + $(srcdir)/sldns/keyraw.h $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h parse.lo parse.o: $(srcdir)/sldns/parse.c config.h $(srcdir)/sldns/parse.h $(srcdir)/sldns/parseutil.h \ $(srcdir)/sldns/sbuffer.h parseutil.lo parseutil.o: $(srcdir)/sldns/parseutil.c config.h $(srcdir)/sldns/parseutil.h @@ -1644,8 +1576,8 @@ dohclient.lo dohclient.o: $(srcdir)/testcode/dohclient.c config.h $(srcdir)/sldn $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/parseutil.h \ $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/util/net_help.h \ - + $(srcdir)/sldns/pkthdr.h $(srcdir)/util/net_help.h +readzone.lo readzone.o: $(srcdir)/testcode/readzone.c ctime_r.lo ctime_r.o: $(srcdir)/compat/ctime_r.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h fake-rfc2553.lo fake-rfc2553.o: $(srcdir)/compat/fake-rfc2553.c $(srcdir)/compat/fake-rfc2553.h config.h gmtime_r.lo gmtime_r.o: $(srcdir)/compat/gmtime_r.c config.h @@ -1660,11 +1592,9 @@ strlcat.lo strlcat.o: $(srcdir)/compat/strlcat.c config.h strlcpy.lo strlcpy.o: $(srcdir)/compat/strlcpy.c config.h strptime.lo strptime.o: $(srcdir)/compat/strptime.c config.h getentropy_freebsd.lo getentropy_freebsd.o: $(srcdir)/compat/getentropy_freebsd.c -getentropy_linux.lo getentropy_linux.o: $(srcdir)/compat/getentropy_linux.c config.h \ - +getentropy_linux.lo getentropy_linux.o: $(srcdir)/compat/getentropy_linux.c config.h getentropy_osx.lo getentropy_osx.o: $(srcdir)/compat/getentropy_osx.c -getentropy_solaris.lo getentropy_solaris.o: $(srcdir)/compat/getentropy_solaris.c config.h \ - +getentropy_solaris.lo getentropy_solaris.o: $(srcdir)/compat/getentropy_solaris.c config.h getentropy_win.lo getentropy_win.o: $(srcdir)/compat/getentropy_win.c explicit_bzero.lo explicit_bzero.o: $(srcdir)/compat/explicit_bzero.c config.h arc4random.lo arc4random.o: $(srcdir)/compat/arc4random.c config.h $(srcdir)/compat/chacha_private.h diff --git a/acx_nlnetlabs.m4 b/acx_nlnetlabs.m4 index ad8fb5007..39e92d875 100644 --- a/acx_nlnetlabs.m4 +++ b/acx_nlnetlabs.m4 @@ -2,7 +2,9 @@ # Copyright 2009, Wouter Wijngaards, NLnet Labs. # BSD licensed. # -# Version 39 +# Version 41 +# 2021-07-30 fix for openssl use of lib64 directory. +# 2021-06-14 fix nonblocking test to use host instead of target for mingw test. # 2021-05-17 fix nonblocking socket test from grep on mingw32 to mingw for # 64bit compatibility. # 2021-03-24 fix ACX_FUNC_DEPRECATED to use CPPFLAGS and CFLAGS. @@ -668,9 +670,15 @@ AC_DEFUN([ACX_SSL_CHECKS], [ HAVE_SSL=yes dnl assume /usr is already in the lib and dynlib paths. if test "$ssldir" != "/usr" -a "$ssldir" != ""; then - LDFLAGS="$LDFLAGS -L$ssldir/lib" - LIBSSL_LDFLAGS="$LIBSSL_LDFLAGS -L$ssldir/lib" - ACX_RUNTIME_PATH_ADD([$ssldir/lib]) + if test ! -d "$ssldir/lib" -a -d "$ssldir/lib64"; then + LDFLAGS="$LDFLAGS -L$ssldir/lib64" + LIBSSL_LDFLAGS="$LIBSSL_LDFLAGS -L$ssldir/lib64" + ACX_RUNTIME_PATH_ADD([$ssldir/lib64]) + else + LDFLAGS="$LDFLAGS -L$ssldir/lib" + LIBSSL_LDFLAGS="$LIBSSL_LDFLAGS -L$ssldir/lib" + ACX_RUNTIME_PATH_ADD([$ssldir/lib]) + fi fi AC_MSG_CHECKING([for EVP_sha256 in -lcrypto]) @@ -917,7 +925,7 @@ dnl a nonblocking socket do not work, a new call to select is necessary. AC_DEFUN([ACX_CHECK_NONBLOCKING_BROKEN], [ AC_MSG_CHECKING([if nonblocking sockets work]) -if echo $target | grep mingw >/dev/null; then +if echo $host | grep mingw >/dev/null; then AC_MSG_RESULT([no (windows)]) AC_DEFINE([NONBLOCKING_IS_BROKEN], 1, [Define if the network stack does not fully support nonblocking io (causes lower performance).]) else diff --git a/compat/ctime_r.c b/compat/ctime_r.c index 87c2609a8..9f2bf15bc 100644 --- a/compat/ctime_r.c +++ b/compat/ctime_r.c @@ -38,5 +38,5 @@ char *ctime_r(const time_t *timep, char *buf) strcpy(buf, result); } lock_basic_unlock(&ctime_lock); - return result; + return buf; } diff --git a/config.h.in b/config.h.in index cb27afa4f..ea6afa480 100644 --- a/config.h.in +++ b/config.h.in @@ -429,6 +429,9 @@ /* Define to 1 if you have the `OPENSSL_init_ssl' function. */ #undef HAVE_OPENSSL_INIT_SSL +/* Define to 1 if you have the header file. */ +#undef HAVE_OPENSSL_PARAM_BUILD_H + /* Define to 1 if you have the header file. */ #undef HAVE_OPENSSL_RAND_H @@ -438,6 +441,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_OPENSSL_SSL_H +/* Define to 1 if you have the `OSSL_PARAM_BLD_new' function. */ +#undef HAVE_OSSL_PARAM_BLD_NEW + /* Define if you have POSIX threads libraries and header files. */ #undef HAVE_PTHREAD @@ -541,6 +547,9 @@ /* Define to 1 if you have the `SSL_get0_peername' function. */ #undef HAVE_SSL_GET0_PEERNAME +/* Define to 1 if you have the `SSL_get1_peer_certificate' function. */ +#undef HAVE_SSL_GET1_PEER_CERTIFICATE + /* Define to 1 if you have the `SSL_set1_host' function. */ #undef HAVE_SSL_SET1_HOST @@ -856,6 +865,14 @@ /* Define if you enable libevent */ #undef USE_LIBEVENT +/* Define this to enable use of /proc/sys/net/ipv4/ip_local_port_range as a + default outgoing port range. This is only for the libunbound on Linux and + does not affect unbound resolving daemon itself. This may severely limit + the number of available outgoing ports and thus decrease randomness. Define + this only when the target system restricts (e.g. some of SELinux enabled + distributions) the use of non-ephemeral ports. */ +#undef USE_LINUX_IP_LOCAL_PORT_RANGE + /* Define if you want to use internal select based events */ #undef USE_MINI_EVENT diff --git a/configure b/configure index d0050b1e6..346fd5e5b 100755 --- a/configure +++ b/configure @@ -901,6 +901,7 @@ enable_ipsecmod enable_ipset with_libmnl enable_explicit_port_randomisation +enable_linux_ip_local_port_range with_libunbound_only ' ac_precious_vars='build_alias @@ -1593,6 +1594,16 @@ Optional Features: --disable-explicit-port-randomisation disable explicit source port randomisation and rely on the kernel to provide random source ports + --enable-linux-ip-local-port-range + Define this to enable use of + /proc/sys/net/ipv4/ip_local_port_range as a default + outgoing port range. This is only for the libunbound + on Linux and does not affect unbound resolving + daemon itself. This may severely limit the number of + available outgoing ports and thus decrease + randomness. Define this only when the target system + restricts (e.g. some of SELinux enabled + distributions) the use of non-ephemeral ports. Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -4206,7 +4217,7 @@ esac # are we on MinGW? if uname -s 2>&1 | grep MINGW >/dev/null; then on_mingw="yes" else - if echo $host $target | grep mingw >/dev/null; then on_mingw="yes" + if echo $host | grep mingw >/dev/null; then on_mingw="yes" else on_mingw="no"; fi fi @@ -14616,6 +14627,8 @@ CC=$lt_save_CC +# pkg-config is only needed for these options, do not require it otherwise +if test "$enable_systemd" = "yes" -o "$with_pyunbound" = "yes" -o "$with_pythonmod" = "yes"; then @@ -14736,6 +14749,7 @@ $as_echo "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 @@ -15927,7 +15941,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if nonblocking sockets work" >&5 $as_echo_n "checking if nonblocking sockets work... " >&6; } -if echo $target | grep mingw >/dev/null; then +if echo $host | grep mingw >/dev/null; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (windows)" >&5 $as_echo "no (windows)" >&6; } @@ -16195,7 +16209,10 @@ done # check if we can use SO_REUSEPORT -if echo "$host" | $GREP -i -e linux -e dragonfly >/dev/null; then +reuseport_default=0 +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 @@ -18002,8 +18019,19 @@ _ACEOF $as_echo "found in $ssldir" >&6; } HAVE_SSL=yes if test "$ssldir" != "/usr" -a "$ssldir" != ""; then - LDFLAGS="$LDFLAGS -L$ssldir/lib" - LIBSSL_LDFLAGS="$LIBSSL_LDFLAGS -L$ssldir/lib" + if test ! -d "$ssldir/lib" -a -d "$ssldir/lib64"; then + LDFLAGS="$LDFLAGS -L$ssldir/lib64" + LIBSSL_LDFLAGS="$LIBSSL_LDFLAGS -L$ssldir/lib64" + + if test "x$enable_rpath" = xyes; then + if echo "$ssldir/lib64" | grep "^/" >/dev/null; then + RUNTIME_PATH="$RUNTIME_PATH -R$ssldir/lib64" + fi + fi + + else + LDFLAGS="$LDFLAGS -L$ssldir/lib" + LIBSSL_LDFLAGS="$LIBSSL_LDFLAGS -L$ssldir/lib" if test "x$enable_rpath" = xyes; then if echo "$ssldir/lib" | grep "^/" >/dev/null; then @@ -18011,6 +18039,7 @@ $as_echo "found in $ssldir" >&6; } fi fi + fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EVP_sha256 in -lcrypto" >&5 @@ -18393,7 +18422,7 @@ 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 +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 @@ -18407,7 +18436,7 @@ fi done -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 +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 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" @@ -18423,7 +18452,7 @@ 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 +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" @@ -19178,8 +19207,8 @@ fi case "$enable_tfo_client" in yes) - case `uname` in - Linux) ac_fn_c_check_decl "$LINENO" "MSG_FASTOPEN" "ac_cv_have_decl_MSG_FASTOPEN" "$ac_includes_default + case "$host_os" in + linux*) ac_fn_c_check_decl "$LINENO" "MSG_FASTOPEN" "ac_cv_have_decl_MSG_FASTOPEN" "$ac_includes_default #include " @@ -19195,8 +19224,8 @@ cat >>confdefs.h <<_ACEOF #define USE_MSG_FASTOPEN 1 _ACEOF - ;; - 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_c_check_decl "$LINENO" "CONNECT_RESUME_ON_READ_WRITE" "ac_cv_have_decl_CONNECT_RESUME_ON_READ_WRITE" "$ac_includes_default #include " @@ -19212,9 +19241,9 @@ cat >>confdefs.h <<_ACEOF #define USE_OSX_MSG_FASTOPEN 1 _ACEOF - ;; + ;; esac - ;; + ;; no|*) ;; esac @@ -20429,7 +20458,7 @@ done # check if setreuid en setregid fail, on MacOSX10.4(darwin8). -if echo $target_os | grep darwin8 > /dev/null; then +if echo $host_os | grep darwin8 > /dev/null; then $as_echo "#define DARWIN_BROKEN_SETREUID 1" >>confdefs.h @@ -21614,6 +21643,23 @@ $as_echo "#define DISABLE_EXPLICIT_PORT_RANDOMISATION 1" >>confdefs.h ;; 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 : + 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 + + ;; + no|*) + ;; + esac +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; } diff --git a/configure.ac b/configure.ac index 9abf2299f..fe911723c 100644 --- a/configure.ac +++ b/configure.ac @@ -149,7 +149,7 @@ esac # are we on MinGW? if uname -s 2>&1 | grep MINGW >/dev/null; then on_mingw="yes" else - if echo $host $target | grep mingw >/dev/null; then on_mingw="yes" + if echo $host | grep mingw >/dev/null; then on_mingw="yes" else on_mingw="no"; fi fi @@ -385,7 +385,10 @@ AC_CHECK_PROG(doxygen, doxygen, doxygen) AC_CHECK_TOOL(STRIP, strip) ACX_LIBTOOL_C_ONLY +# pkg-config is only needed for these options, do not require it otherwise +if test "$enable_systemd" = "yes" -o "$with_pyunbound" = "yes" -o "$with_pythonmod" = "yes"; then PKG_PROG_PKG_CONFIG +fi # Checks for header files. AC_CHECK_HEADERS([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],,, [AC_INCLUDES_DEFAULT]) @@ -490,7 +493,10 @@ ACX_MKDIR_ONE_ARG AC_CHECK_FUNCS([strptime],[AC_CHECK_STRPTIME_WORKS],[AC_LIBOBJ([strptime])]) # check if we can use SO_REUSEPORT -if echo "$host" | $GREP -i -e linux -e dragonfly >/dev/null; then +reuseport_default=0 +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 AC_DEFINE(REUSEPORT_DEFAULT, 1, [if REUSEPORT is enabled by default]) else AC_DEFINE(REUSEPORT_DEFAULT, 0, [if REUSEPORT is enabled by default]) @@ -853,13 +859,13 @@ if grep VERSION_TEXT $ssldir/include/openssl/opensslv.h | grep "LibreSSL" >/dev/ else AC_MSG_RESULT([no]) fi -AC_CHECK_HEADERS([openssl/conf.h openssl/engine.h openssl/bn.h openssl/dh.h openssl/dsa.h openssl/rsa.h openssl/core_names.h],,, [AC_INCLUDES_DEFAULT]) -AC_CHECK_FUNCS([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]) +AC_CHECK_HEADERS([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],,, [AC_INCLUDES_DEFAULT]) +AC_CHECK_FUNCS([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]) # these check_funcs need -lssl BAKLIBS="$LIBS" LIBS="-lssl $LIBS" -AC_CHECK_FUNCS([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]) +AC_CHECK_FUNCS([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]) LIBS="$BAKLIBS" AC_CHECK_DECLS([SSL_COMP_get_compression_methods,sk_SSL_COMP_pop_free,SSL_CTX_set_ecdh_auto], [], [], [ @@ -1216,23 +1222,23 @@ esac AC_ARG_ENABLE(tfo-client, AS_HELP_STRING([--enable-tfo-client],[Enable TCP Fast Open for client mode])) case "$enable_tfo_client" in yes) - case `uname` in - Linux) AC_CHECK_DECL([MSG_FASTOPEN], [AC_MSG_WARN([Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO])], - [AC_MSG_ERROR([TCP Fast Open is not available for client mode: please rerun without --enable-tfo-client])], - [AC_INCLUDES_DEFAULT + case "$host_os" in + linux*) AC_CHECK_DECL([MSG_FASTOPEN], [AC_MSG_WARN([Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO])], + [AC_MSG_ERROR([TCP Fast Open is not available for client mode: please rerun without --enable-tfo-client])], + [AC_INCLUDES_DEFAULT #include ]) - AC_DEFINE_UNQUOTED([USE_MSG_FASTOPEN], [1], [Define this to enable client TCP Fast Open.]) - ;; - Darwin) AC_CHECK_DECL([CONNECT_RESUME_ON_READ_WRITE], [AC_MSG_WARN([Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO])], - [AC_MSG_ERROR([TCP Fast Open is not available for client mode: please rerun without --enable-tfo-client])], - [AC_INCLUDES_DEFAULT + AC_DEFINE_UNQUOTED([USE_MSG_FASTOPEN], [1], [Define this to enable client TCP Fast Open.]) + ;; + darwin*) AC_CHECK_DECL([CONNECT_RESUME_ON_READ_WRITE], [AC_MSG_WARN([Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO])], + [AC_MSG_ERROR([TCP Fast Open is not available for client mode: please rerun without --enable-tfo-client])], + [AC_INCLUDES_DEFAULT #include ]) - AC_DEFINE_UNQUOTED([USE_OSX_MSG_FASTOPEN], [1], [Define this to enable client TCP Fast Open.]) - ;; + AC_DEFINE_UNQUOTED([USE_OSX_MSG_FASTOPEN], [1], [Define this to enable client TCP Fast Open.]) + ;; esac - ;; + ;; no|*) ;; esac @@ -1593,7 +1599,7 @@ AC_CHECK_FUNCS([setresuid],,[AC_CHECK_FUNCS([setreuid])]) AC_CHECK_FUNCS([setresgid],,[AC_CHECK_FUNCS([setregid])]) # check if setreuid en setregid fail, on MacOSX10.4(darwin8). -if echo $target_os | grep darwin8 > /dev/null; then +if echo $host_os | grep darwin8 > /dev/null; then AC_DEFINE(DARWIN_BROKEN_SETREUID, 1, [Define this if on macOSX10.4-darwin8 and setreuid and setregid do not work]) fi AC_CHECK_DECLS([inet_pton,inet_ntop], [], [], [ @@ -1856,6 +1862,17 @@ case "$enable_explicit_port_randomisation" in ;; esac +if echo "$host" | $GREP -i -e linux >/dev/null; then + AC_ARG_ENABLE(linux-ip-local-port-range, AC_HELP_STRING([--enable-linux-ip-local-port-range], [Define this to enable use of /proc/sys/net/ipv4/ip_local_port_range as a default outgoing port range. This is only for the libunbound on Linux and does not affect unbound resolving daemon itself. This may severely limit the number of available outgoing ports and thus decrease randomness. Define this only when the target system restricts (e.g. some of SELinux enabled distributions) the use of non-ephemeral ports.])) + case "$enable_linux_ip_local_port_range" in + yes) + AC_DEFINE([USE_LINUX_IP_LOCAL_PORT_RANGE], [1], [Define this to enable use of /proc/sys/net/ipv4/ip_local_port_range as a default outgoing port range. This is only for the libunbound on Linux and does not affect unbound resolving daemon itself. This may severely limit the number of available outgoing ports and thus decrease randomness. Define this only when the target system restricts (e.g. some of SELinux enabled distributions) the use of non-ephemeral ports.]) + ;; + no|*) + ;; + esac +fi + AC_MSG_CHECKING([if ${MAKE:-make} supports $< with implicit rule in scope]) # on openBSD, the implicit rule make $< work. diff --git a/contrib/unbound.service.in b/contrib/unbound.service.in index a4596978d..90ee708ce 100644 --- a/contrib/unbound.service.in +++ b/contrib/unbound.service.in @@ -60,8 +60,12 @@ NoNewPrivileges=true PrivateDevices=true PrivateTmp=true ProtectHome=true +ProtectClock=true ProtectControlGroups=true +ProtectKernelLogs=true ProtectKernelModules=true +ProtectKernelTunables=true +ProtectProc=invisible ProtectSystem=strict RuntimeDirectory=unbound ConfigurationDirectory=unbound diff --git a/contrib/unbound.spec b/contrib/unbound.spec index 6ddc5f18d..17be4ccd0 100644 --- a/contrib/unbound.spec +++ b/contrib/unbound.spec @@ -1,15 +1,14 @@ Summary: Validating, recursive, and caching DNS resolver Name: unbound -Version: 1.4.18 +Version: 1.13.1 Release: 1%{?dist} License: BSD Url: http://www.nlnetlabs.nl/unbound/ -Source: http://www.unbound.net/downloads/%{name}-%{version}.tar.gz +Source: http://www.nlnetlabs.nl/downloads/unbound/%{name}-%{version}.tar.gz #Source1: unbound.init Group: System Environment/Daemons -Requires: ldns BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -BuildRequires: flex, openssl-devel, expat-devel, ldns-devel +BuildRequires: flex, openssl-devel, expat-devel %description Unbound is a validating, recursive, and caching DNS resolver. @@ -42,7 +41,7 @@ install -d 0700 %{buildroot}%{_localstatedir}/%{name} install -d 0755 %{buildroot}%{_initrddir} install -m 0755 contrib/unbound.init %{buildroot}%{_initrddir}/unbound # add symbolic link from /etc/unbound.conf -> /var/unbound/unbound.conf -ln -s %{_localstatedir}/unbound/unbound.conf %{buildroot}%{_sysconfdir}/unbound.conf +ln -s ../%{_localstatedir}/unbound/unbound.conf %{buildroot}%{_sysconfdir}/unbound.conf # remove static library from install (fedora packaging guidelines) rm -f %{buildroot}%{_libdir}/libunbound.a %{buildroot}%{_libdir}/libunbound.la @@ -55,11 +54,12 @@ rm -rf ${RPM_BUILD_ROOT} %attr(0755,root,root) %{_initrddir}/%{name} %attr(0700,%{name},%{name}) %dir %{_localstatedir}/%{name} %attr(0644,%{name},%{name}) %config(noreplace) %{_localstatedir}/%{name}/unbound.conf -%attr(0644,%{name},%{name}) %config(noreplace) %{_sysconfdir}/unbound.conf +%config(noreplace) %{_sysconfdir}/unbound.conf %{_sbindir}/* %{_mandir}/*/* %{_includedir}/* %{_libdir}/libunbound* +%{_libdir}/pkgconfig/libunbound* %pre getent group unbound >/dev/null || groupadd -r unbound @@ -89,7 +89,13 @@ if [ "$1" -ge "1" ]; then fi %changelog -* Thu Jul 13 2011 Wouter Wijngaards - 1.4.8 +* Thu Jun 10 2021 Wouter Wijngaards - 1.13.1 +- ldns and ldns-devel no longer required. Fixed date. Version to 1.13.1. +- Removed symlink attr mode, made unbound.conf symlink relative. +- Added pkgconfig/libunbound.pc to the packaged files. +- fixed download url to nlnetlabs.nl download. + +* Wed Jul 13 2011 Wouter Wijngaards - 1.4.8 - ldns required and ldns-devel required for build, no more ldns-builtin. * Thu Mar 17 2011 Wouter Wijngaards - 1.4.8 diff --git a/contrib/unbound_munin_ b/contrib/unbound_munin_ index defca291c..503752758 100755 --- a/contrib/unbound_munin_ +++ b/contrib/unbound_munin_ @@ -14,7 +14,6 @@ # Run the command unbound-control-setup to generate the key files. # # Environment variables for this script -# statefile - where to put temporary statefile. # unbound_conf - where the unbound.conf file is located. # unbound_control - where to find unbound-control executable. # spoof_warn - what level to warn about spoofing @@ -24,7 +23,6 @@ # with: # [unbound*] # user root -# env.statefile /usr/local/var/munin/plugin-state/unbound-state # env.unbound_conf /usr/local/etc/unbound/unbound.conf # env.unbound_control /usr/local/sbin/unbound-control # env.spoof_warn 1000 @@ -66,7 +64,6 @@ System with unbound daemon. [unbound*] user root - env.statefile /usr/local/var/munin/plugin-state/unbound-state env.unbound_conf /usr/local/etc/unbound/unbound.conf env.unbound_control /usr/local/sbin/unbound-control env.spoof_warn 1000 @@ -98,7 +95,8 @@ BSD =cut -state=${statefile:-/usr/local/var/munin/plugin-state/unbound-state} +state="${MUNIN_PLUGSTATE}/unbound.state" +seentags="${MUNIN_PLUGSTATE}/unbound-seentags.state" conf=${unbound_conf:-/usr/local/etc/unbound/unbound.conf} ctrl=${unbound_control:-/usr/local/sbin/unbound-control} warn=${spoof_warn:-1000} @@ -121,12 +119,24 @@ get_value ( ) { fi } +# Update list of seen query types etc to seentags file. This is run while +# holding the lock, after the state file is updated. +update_seentags() { + tmplist="$(cat ${seentags} 2> /dev/null) +num.query.type.A +num.query.class.IN +num.query.opcode.QUERY +num.answer.rcode.NOERROR +" + (echo "${tmplist}"; grep ^num ${state} | sed -e 's/=.*//') | sort -u > ${seentags} +} + # download the state from the unbound server. get_state ( ) { # obtain lock for fetching the state # because there is a race condition in fetching and writing to file - # see if the lock is stale, if so, take it + # see if the lock is stale, if so, take it if test -f $lock ; then pid="`cat $lock 2>&1`" kill -0 "$pid" >/dev/null 2>&1 @@ -168,6 +178,7 @@ get_state ( ) { rm -f $lock exit 1 fi + update_seentags rm -f $lock } @@ -232,7 +243,7 @@ if test "$1" = "config" ; then echo "graph_args --base 1000 -l 0" echo "graph_vlabel queries / \${graph_period}" echo "graph_scale no" - echo "graph_category DNS" + echo "graph_category dns" for x in `grep "^thread[0-9][0-9]*\.num\.queries=" $state | sed -e 's/=.*//'`; do exist_config $x "queries handled by `basename $x .num.queries`" @@ -256,7 +267,7 @@ if test "$1" = "config" ; then echo "graph_args --base 1000 -l 0" echo "graph_vlabel number of queries" echo "graph_scale no" - echo "graph_category DNS" + echo "graph_category dns" p_config "total.requestlist.avg" "Average size of queue on insert" "GAUGE" p_config "total.requestlist.max" "Max size of queue (in 5 min)" "GAUGE" p_config "total.requestlist.overwritten" "Number of queries replaced by new ones" "GAUGE" @@ -267,7 +278,7 @@ if test "$1" = "config" ; then echo "graph_title Unbound memory usage" echo "graph_args --base 1024 -l 0" echo "graph_vlabel memory used in bytes" - echo "graph_category DNS" + echo "graph_category dns" p_config "mem.cache.rrset" "RRset cache memory" "GAUGE" p_config "mem.cache.message" "Message cache memory" "GAUGE" p_config "mem.mod.iterator" "Iterator module memory" "GAUGE" @@ -283,9 +294,8 @@ if test "$1" = "config" ; then echo "graph_args --base 1000 -l 0" echo "graph_vlabel queries / \${graph_period}" echo "graph_scale no" - echo "graph_category DNS" - for x in `grep "^num.query.type" $state`; do - nm=`echo $x | sed -e 's/=.*$//'` + echo "graph_category dns" + for nm in `grep "^num.query.type" $seentags`; do tp=`echo $nm | sed -e s/num.query.type.//` p_config "$nm" "$tp" "ABSOLUTE" done @@ -296,9 +306,8 @@ if test "$1" = "config" ; then echo "graph_args --base 1000 -l 0" echo "graph_vlabel queries / \${graph_period}" echo "graph_scale no" - echo "graph_category DNS" - for x in `grep "^num.query.class" $state`; do - nm=`echo $x | sed -e 's/=.*$//'` + echo "graph_category dns" + for nm in `grep "^num.query.class" $seentags`; do tp=`echo $nm | sed -e s/num.query.class.//` p_config "$nm" "$tp" "ABSOLUTE" done @@ -309,9 +318,8 @@ if test "$1" = "config" ; then echo "graph_args --base 1000 -l 0" echo "graph_vlabel queries / \${graph_period}" echo "graph_scale no" - echo "graph_category DNS" - for x in `grep "^num.query.opcode" $state`; do - nm=`echo $x | sed -e 's/=.*$//'` + echo "graph_category dns" + for nm in `grep "^num.query.opcode" $seentags`; do tp=`echo $nm | sed -e s/num.query.opcode.//` p_config "$nm" "$tp" "ABSOLUTE" done @@ -322,9 +330,8 @@ if test "$1" = "config" ; then echo "graph_args --base 1000 -l 0" echo "graph_vlabel answer packets / \${graph_period}" echo "graph_scale no" - echo "graph_category DNS" - for x in `grep "^num.answer.rcode" $state`; do - nm=`echo $x | sed -e 's/=.*$//'` + echo "graph_category dns" + for nm in `grep "^num.answer.rcode" $seentags`; do tp=`echo $nm | sed -e s/num.answer.rcode.//` p_config "$nm" "$tp" "ABSOLUTE" done @@ -338,7 +345,7 @@ if test "$1" = "config" ; then echo "graph_args --base 1000 -l 0" echo "graph_vlabel queries / \${graph_period}" echo "graph_scale no" - echo "graph_category DNS" + echo "graph_category dns" p_config "num.query.flags.QR" "QR (query reply) flag" "ABSOLUTE" p_config "num.query.flags.AA" "AA (auth answer) flag" "ABSOLUTE" p_config "num.query.flags.TC" "TC (truncated) flag" "ABSOLUTE" @@ -356,7 +363,7 @@ if test "$1" = "config" ; then echo "graph_args --base 1000 -l 0" echo "graph_vlabel queries / \${graph_period}" echo "graph_scale no" - echo "graph_category DNS" + echo "graph_category dns" echo hcache.label "cache hits" echo hcache.min 0 echo hcache.type ABSOLUTE @@ -467,27 +474,23 @@ memory) done ;; by_type) - for x in `grep "^num.query.type" $state`; do - nm=`echo $x | sed -e 's/=.*$//'` - print_value_line $nm $x + for nm in `grep "^num.query.type" $seentags`; do + print_value $nm done ;; by_class) - for x in `grep "^num.query.class" $state`; do - nm=`echo $x | sed -e 's/=.*$//'` - print_value_line $nm $x + for nm in `grep "^num.query.class" $seentags`; do + print_value $nm done ;; by_opcode) - for x in `grep "^num.query.opcode" $state`; do - nm=`echo $x | sed -e 's/=.*$//'` - print_value_line $nm $x + for nm in `grep "^num.query.opcode" $seentags`; do + print_value $nm done ;; by_rcode) - for x in `grep "^num.answer.rcode" $state`; do - nm=`echo $x | sed -e 's/=.*$//'` - print_value_line $nm $x + for nm in `grep "^num.answer.rcode" $seentags`; do + print_value $nm done print_value "num.answer.secure" print_value "num.answer.bogus" diff --git a/daemon/remote.c b/daemon/remote.c index 5836c0c79..923ddefa4 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -1304,10 +1304,35 @@ do_zones_remove(RES* ssl, struct local_zones* zones) (void)ssl_printf(ssl, "removed %d zones\n", num); } +/** check syntax of newly added RR */ +static int +check_RR_syntax(RES* ssl, char* str, int line) +{ + uint8_t rr[LDNS_RR_BUF_SIZE]; + size_t len = sizeof(rr), dname_len = 0; + int s = sldns_str2wire_rr_buf(str, rr, &len, &dname_len, 3600, + NULL, 0, NULL, 0); + if(s != 0) { + char linestr[32]; + if(line == 0) + linestr[0]=0; + else snprintf(linestr, sizeof(linestr), "line %d ", line); + if(!ssl_printf(ssl, "error parsing local-data at %sposition %d '%s': %s\n", + linestr, LDNS_WIREPARSE_OFFSET(s), str, + sldns_get_errorstr_parse(s))) + return 0; + return 0; + } + return 1; +} + /** Add new RR data */ static int -perform_data_add(RES* ssl, struct local_zones* zones, char* arg) +perform_data_add(RES* ssl, struct local_zones* zones, char* arg, int line) { + if(!check_RR_syntax(ssl, arg, line)) { + return 0; + } if(!local_zones_add_RR(zones, arg)) { ssl_printf(ssl,"error in syntax or out of memory, %s\n", arg); return 0; @@ -1319,7 +1344,7 @@ perform_data_add(RES* ssl, struct local_zones* zones, char* arg) static void do_data_add(RES* ssl, struct local_zones* zones, char* arg) { - if(!perform_data_add(ssl, zones, arg)) + if(!perform_data_add(ssl, zones, arg, 0)) return; send_ok(ssl); } @@ -1329,15 +1354,12 @@ static void do_datas_add(RES* ssl, struct local_zones* zones) { char buf[2048]; - int num = 0; + int num = 0, line = 0; while(ssl_read_line(ssl, buf, sizeof(buf))) { if(buf[0] == 0x04 && buf[1] == 0) break; /* end of transmission */ - if(!perform_data_add(ssl, zones, buf)) { - if(!ssl_printf(ssl, "error for input line: %s\n", buf)) - return; - } - else + line++; + if(perform_data_add(ssl, zones, buf, line)) num++; } (void)ssl_printf(ssl, "added %d datas\n", num); @@ -3316,7 +3338,11 @@ int remote_control_callback(struct comm_point* c, void* arg, int err, if (!rc->use_cert) { verbose(VERB_ALGO, "unauthenticated remote control connection"); } else if(SSL_get_verify_result(s->ssl) == X509_V_OK) { +#ifdef HAVE_SSL_GET1_PEER_CERTIFICATE + X509* x = SSL_get1_peer_certificate(s->ssl); +#else X509* x = SSL_get_peer_certificate(s->ssl); +#endif if(!x) { verbose(VERB_DETAIL, "remote control connection " "provided no client certificate"); diff --git a/daemon/unbound.c b/daemon/unbound.c index 78771dbdd..934a96c80 100644 --- a/daemon/unbound.c +++ b/daemon/unbound.c @@ -222,7 +222,7 @@ checkrlimits(struct config_file* cfg) #endif if(getrlimit(RLIMIT_DATA, &rlim) == 0) { if(rlim.rlim_cur != (rlim_t)RLIM_INFINITY && - rlim.rlim_cur < memsize_expect) { + rlim.rlim_cur < (rlim_t)memsize_expect) { log_warn("the ulimit(data seg size) is smaller than the expected memory usage (added size of caches). %u < %u bytes", (unsigned)rlim.rlim_cur, (unsigned)memsize_expect); } } diff --git a/dnstap/dnstap.c b/dnstap/dnstap.c index 6577a019a..5c0cde1d5 100644 --- a/dnstap/dnstap.c +++ b/dnstap/dnstap.c @@ -507,19 +507,19 @@ dt_msg_send_outside_query(struct dt_env *env, void dt_msg_send_outside_response(struct dt_env *env, - struct sockaddr_storage *rsock, - struct sockaddr_storage *qsock, - enum comm_point_type cptype, - uint8_t *zone, size_t zone_len, - uint8_t *qbuf, size_t qbuf_len, - const struct timeval *qtime, - const struct timeval *rtime, - sldns_buffer *rmsg) + struct sockaddr_storage *rsock, + struct sockaddr_storage *qsock, + enum comm_point_type cptype, + uint8_t *zone, size_t zone_len, + uint8_t *qbuf, size_t qbuf_len, + const struct timeval *qtime, + const struct timeval *rtime, + sldns_buffer *rmsg) { struct dt_msg dm; uint16_t qflags; - log_assert(qbuf_len >= sizeof(qflags)); + (void)qbuf_len; log_assert(qbuf_len >= sizeof(qflags)); memcpy(&qflags, qbuf, sizeof(qflags)); qflags = ntohs(qflags); diff --git a/dnstap/unbound-dnstap-socket.c b/dnstap/unbound-dnstap-socket.c index 9eaf01243..3de8ab3f0 100644 --- a/dnstap/unbound-dnstap-socket.c +++ b/dnstap/unbound-dnstap-socket.c @@ -1012,6 +1012,7 @@ void dtio_tap_callback(int fd, short ATTR_UNUSED(bits), void* arg) if(verbosity) log_info("bidirectional stream"); if(!reply_with_accept(data)) { tap_data_free(data); + return; } } else if(data->len >= 4 && sldns_read_uint32(data->frame) == FSTRM_CONTROL_FRAME_STOP && data->is_bidirectional) { @@ -1166,8 +1167,13 @@ int sig_quit = 0; /** signal handler for user quit */ static RETSIGTYPE main_sigh(int sig) { - if(!sig_quit) - fprintf(stderr, "exit on signal %d\n", sig); + if(!sig_quit) { + char str[] = "exit on signal \n"; + str[15] = '0' + (sig/10)%10; + str[16] = '0' + sig%10; + /* simple cast to void will not silence Wunused-result */ + (void)!write(STDERR_FILENO, str, strlen(str)); + } if(sig_base) { ub_event_base_loopexit(sig_base); sig_base = NULL; diff --git a/doc/Changelog b/doc/Changelog index 1362ef7b0..7927da389 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,148 @@ +5 August 2021: Wouter + - Tag for 1.13.2rc1 release. + +4 August 2021: George + - Merge PR #415 from sibeream: Use + /proc/sys/net/ipv4/ip_local_port_range to determine available outgoing + ports. (New --enable-linux-ip-local-port-range configuration option) + - Bump MAX_RESTART_COUNT to 11 from 8; in relation to #438. This + allows longer CNAME chains in Unbound. + +4 August 2021: Wouter + - In unit test use openssl set security level to allow keys in test. + - Fix static analysis warnings about localzone locks that are unused. + - Fix missing locks in zonemd unit test. + - Fix readzone compile under debug config. + - Fix out of sourcedir run of zonemd unit tests. + - Fix libnettle zonemd unit test. + - Fix unit test zonemd_reload for use in run_vm. + +3 August 2021: George + - Listen to read or write events after the SSL handshake. + Sticky events on windows would stick on read when write was needed. + +3 August 2021: Wouter + - Merge PR #517 from dyunwei: #420 breaks the mesh reply list + function that need to reuse the dns answer. + - Annotate assertion into error printout; we think it may be an + error, but the situation looks harmless. + - Fix sign comparison warning on FreeBSD. + +2 August 2021: Wouter + - Prepare for OpenSSL 3.0.0 provider API usage, move the sldns + keyraw functions to produce EVP_PKEY results. + - Move RSA and DSA to use OpenSSL 3.0.0 API. + - Move ECDSA functions to use OpenSSL 3.0.0 API. + - iana portlist update. + - Fix verbose printout failure in tcp reuse unit test. + +30 July 2021: Wouter + - Fix #515: Compilation against openssl 3.0.0 beta2 is failing to + build unbound. + - For #515: Fix compilation with openssl 3.0.0 beta2, lib64 dir and + SSL_get_peer_certificate. + - Move acx_nlnetlabs.m4 to version 41, with lib64 openssl dir check. + +26 July 2021: George + - Merge #513: Stream reuse, attempt to fix #411, #439, #469. This + introduces a couple of fixes for the stream reuse functionality + that could result in broken internal structures. + +26 July 2021: Wouter + - Merge #512: unbound.service.in: upgrade hardening to latest + standards. + - Fix readzone unknown type print for memory resize. + +21 July 2021: Wouter + - Fix that ldns_zone_new_frm_fp_l counts the line number for an empty + line after a comment. + +16 July 2021: George + - Introduce 'http-user-agent:' and 'hide-http-user-agent:' options. + +16 July 2021: Wouter + - Merge #510 from ndptech: Don't call a function which hasn't been + defined. + - Fix for #510: in depth, use ifdefs for windows api event calls. + - Fix spelling in doc/unbound.doxygen comment. + - Fix spelling in localzone.h comment. + - Fix unbound-control local_data and local_datas to print detailed + syntax errors. + - review fix to remove duplicate error printout. + - Insert header into testcode/readzone.c, it was missing. + - Fix from lint for ignored return value. + - Fix for older parsers for function call in serve expired get cached. + +6 July 2021: Wouter + - iana portlist update. + +5 July 2021: George + - Fix compiler warnings for #491. + - Fix clang-analysis warnings for testcode/readzone.c. + +4 July 2021: George + - Fix Wunused-result compile warnings. + +2 July 2021: Tom + - Merge PR #491: Add SVCB and HTTPS types and handling according to + draft-ietf-dnsop-svcb-https. + +2 July 2021: Wouter + - Fix #506: Python Module Seems to Leak Memory if it Experiences an + Unhandled Exception. + +25 June 2021: Wouter + - Fix up permissions on rpl data file in tests. + - Fix testbound newline treatment in moment_read and tempfile write. + - Fix configure grep for reuseport default for failure. + - Fix compat ctime_r return value + - Fix configure does not require pkg-config if not needed. + - Fix unit test in the ctime_r calls for autotrust and in testbound. + - Fix auth zone download on windows to unlink before rename. + +24 June 2021: Wouter + - Add analyzer and port compile github workflow. + +23 June 2021: Wouter + - Fix #503: DNS over HTTPS response truncated. + - Fix warnings reported by the gcc analyzer. + +21 June 2021: George + - Fix #495: Documentation or implementation of "verbosity" option. + +18 June 2021: Wouter + - Fix a number of warnings reported by the gcc analyzer. + +15 June 2021: George + - Merge #440 by kimheino: Various fixes to contrib/unbound_munin_ file. + +14 June 2021: Wouter + - Fix configure nonblocking test and onmingw test to use host. + +10 June 2021: Wouter + - Fix #500: SPEC file in version 1.13.1 references version 1.4; + unable to build RPM from source. + - Fix contrib/unbound.spec, fixed url and comment. + +9 June 2021: George + - Merge #486 by fobster: Make VAL_MAX_RESTART_COUNT configurable. + - Generated lexer and parser for #486; updated example.conf. + - Fix #413 (based on patch by k-ronny): unbound: does not compile + on macOS 11.1-x86_64 host. + - Use host_os instead of target_os in configure for Darwin8 build. + +8 June 2021: George + - Fix unused variable warning when compiling with --enable-dnstap. + +7 June 2021: George + - Merge #448 from shoeper: Update unbound-control.8.in, fix + rpz_disable typo. + - Fix #425: Document auth-zone supports communication with DNS + primary on nondefault port. + +1 June 2021: George + - Fix test for zonemd-check option. + 27 May 2021: Wouter - Merge #496 from banburybill: Use build system endianness if available, otherwise try to work it out. diff --git a/doc/example.conf.in b/doc/example.conf.in index 34a51272d..de305223c 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -371,6 +371,9 @@ server: # enable to not answer trustanchor.unbound queries. # hide-trustanchor: no + # enable to not set the User-Agent HTTP header. + # hide-http-user-agent: no + # the identity to report. Leave "" or default to return hostname. # identity: "" @@ -380,6 +383,10 @@ server: # NSID identity (hex string, or "ascii_somestring"). default disabled. # nsid: "aabbccdd" + # User-Agent HTTP header to use. Leave "" or default to use package name + # and version. + # http-user-agent: "" + # the target fetch policy. # series of integers describing the policy per dependency depth. # The number of values in the list determines the maximum dependency @@ -557,6 +564,10 @@ server: # val-sig-skew-min: 3600 # val-sig-skew-max: 86400 + # The maximum number the validator should restart validation with + # another authority in case of failed validation. + # val-max-restart: 5 + # Should additional section of secure message also be kept clean of # unsecure data. Useful to shield the users of this validator from # potential bogus data in the additional section. All unsigned data diff --git a/doc/unbound-control.8.in b/doc/unbound-control.8.in index bdb14cff0..c107c3bbc 100644 --- a/doc/unbound-control.8.in +++ b/doc/unbound-control.8.in @@ -89,8 +89,7 @@ it. If the zone does not exist, the command succeeds. Add new local data, the given resource record. Like \fBlocal\-data\fR config statement, except for when no covering zone exists. In that case this remote control command creates a transparent zone with the same -name as this record. This command is not good at returning detailed syntax -errors. +name as this record. .TP .B local_data_remove \fIname Remove all RR data from local name. If the name already has no items, @@ -308,7 +307,7 @@ serial check). And then the zone is transferred for a newer zone version. .B rpz_enable \fIzone\fR Enable the RPZ zone if it had previously been disabled. .TP -.B rpz_enable \fIzone\fR +.B rpz_disable \fIzone\fR Disable the RPZ zone. .TP .B view_list_local_zones \fIview\fR diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 95f0ae0a3..59f72d7d3 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -89,11 +89,11 @@ These options are part of the clause. .TP .B verbosity: \fI -The verbosity number, level 0 means no verbosity, only errors. Level 1 -gives operational information. Level 2 gives detailed operational -information. Level 3 gives query level information, output per query. -Level 4 gives algorithm level information. Level 5 logs client -identification for cache misses. Default is level 1. +The verbosity number, level 0 means no verbosity, only errors. Level 1 +gives operational information. Level 2 gives detailed operational +information including short information per query. Level 3 gives query level +information, output per query. Level 4 gives algorithm level information. +Level 5 logs client identification for cache misses. Default is level 1. The verbosity can also be increased from the commandline, see \fIunbound\fR(8). .TP .B statistics\-interval: \fI @@ -852,6 +852,17 @@ If enabled version.server and version.bind queries are refused. Set the version to report. If set to "", the default, then the package version is returned. .TP +.B hide\-http\-user\-agent: \fI +If enabled the HTTP header User-Agent is not set. Use with caution as some +webserver configurations may reject HTTP requests lacking this header. +If needed, it is better to explicitly set the +.B http\-user\-agent +below. +.TP +.B http\-user\-agent: \fI +Set the HTTP User-Agent header for outgoing HTTP requests. If set to "", +the default, then the package name and version are used. +.TP .B nsid:\fR Add the specified nsid to the EDNS section of the answer when queried with an NSID EDNS enabled packet. As a sequence of hex characters or @@ -1140,6 +1151,10 @@ min and max very low disables the clock skew allowances. Setting both min and max very high makes the validator check the signature timestamps less strictly. .TP +.B val\-max\-restart: \fI +The maximum number the validator should restart validation with +another authority in case of failed validation. Default is 5. +.TP .B val\-bogus\-ttl: \fI The time to live for bogus data. This is data that has failed validation; due to invalid signatures or other checks. The TTL from that data cannot be @@ -1923,7 +1938,9 @@ Name of the authority zone. .B primary: \fI Where to download a copy of the zone from, with AXFR and IXFR. Multiple primaries can be specified. They are all tried if one fails. -With the "ip#name" notation a AXFR over TLS can be used. +To use a nondefault port for DNS communication append '@' with the port number. +You can append a '#' and a name, then AXFR over TLS can be used and the tls authentication certificates will be checked with that name. If you combine +the '@' and '#', the '@' comes first. If you point it at another Unbound instance, it would not work because that does not support AXFR/IXFR for the zone, but if you used \fBurl:\fR to download the zonefile as a text file from a webserver that would work. @@ -2539,6 +2556,15 @@ Name of the authority zone. .B primary: \fI Where to download a copy of the zone from, with AXFR and IXFR. Multiple primaries can be specified. They are all tried if one fails. +To use a nondefault port for DNS communication append '@' with the port number. +You can append a '#' and a name, then AXFR over TLS can be used and the tls authentication certificates will be checked with that name. If you combine +the '@' and '#', the '@' comes first. +If you point it at another Unbound instance, it would not work because +that does not support AXFR/IXFR for the zone, but if you used \fBurl:\fR to download +the zonefile as a text file from a webserver that would work. +If you specify the hostname, you cannot use the domain from the zonefile, +because it may not have that when retrieving that data, instead use a plain +IP address to avoid a circular dependency on retrieving that IP address. .TP .B master: \fI Alternate syntax for \fBprimary\fR. diff --git a/doc/unbound.doxygen b/doc/unbound.doxygen index 4c32d8943..823e09253 100644 --- a/doc/unbound.doxygen +++ b/doc/unbound.doxygen @@ -1076,7 +1076,7 @@ TREEVIEW_WIDTH = 250 FORMULA_FONTSIZE = 10 -# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# Use the FORMULA_TRANSPARENT tag to determine whether or not the images # generated for formulas are transparent PNGs. Transparent PNGs are # not supported properly for IE 6.0, but are supported on all modern browsers. # Note that when changing this option you need to delete any form_*.png files diff --git a/iterator/iter_utils.c b/iterator/iter_utils.c index adc611f73..668f898eb 100644 --- a/iterator/iter_utils.c +++ b/iterator/iter_utils.c @@ -440,6 +440,7 @@ iter_filter_order(struct iter_env* iter_env, struct module_env* env, prev = NULL; a = dp->result_list; for(i = 0; i < got_num; i++) { + if(!a) break; /* robustness */ swap_to_front = 0; if(a->addr.ss_family != AF_INET6 && attempt == -1) { /* if we only have ip4 at low attempt count, @@ -497,6 +498,7 @@ iter_filter_order(struct iter_env* iter_env, struct module_env* env, prev = NULL; a = dp->result_list; for(i = 0; i < got_num; i++) { + if(!a) break; /* robustness */ swap_to_front = 0; if(a->addr.ss_family != AF_INET && attempt == -1) { /* if we only have ip6 at low attempt count, diff --git a/iterator/iterator.h b/iterator/iterator.h index 7952f26df..dc5e57527 100644 --- a/iterator/iterator.h +++ b/iterator/iterator.h @@ -61,7 +61,7 @@ struct rbtree_type; * its subqueries */ #define MAX_TARGET_NX 5 /** max number of query restarts. Determines max number of CNAME chain. */ -#define MAX_RESTART_COUNT 8 +#define MAX_RESTART_COUNT 11 /** max number of referrals. Makes sure resolver does not run away */ #define MAX_REFERRAL_COUNT 130 /** max number of queries-sent-out. Make sure large NS set does not loop */ diff --git a/libunbound/context.c b/libunbound/context.c index 267366ae5..e589c6ae2 100644 --- a/libunbound/context.c +++ b/libunbound/context.c @@ -69,6 +69,7 @@ context_finalize(struct ub_ctx* ctx) } else { log_init(cfg->logfile, cfg->use_syslog, NULL); } + cfg_apply_local_port_policy(cfg, 65536); config_apply(cfg); if(!modstack_setup(&ctx->mods, cfg->module_conf, ctx->env)) return UB_INITFAIL; diff --git a/libunbound/libworker.c b/libunbound/libworker.c index 4733eb464..8a9ca9419 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -456,8 +456,15 @@ fill_res(struct ub_result* res, struct ub_packed_rrset_key* answer, if(rep->rrset_count != 0) res->ttl = (int)rep->ttl; res->data = (char**)calloc(1, sizeof(char*)); + if(!res->data) + return 0; /* out of memory */ res->len = (int*)calloc(1, sizeof(int)); - return (res->data && res->len); + if(!res->len) { + free(res->data); + res->data = NULL; + return 0; /* out of memory */ + } + return 1; } data = (struct packed_rrset_data*)answer->entry.data; if(query_dname_compare(rq->qname, answer->rk.dname) != 0) { @@ -465,15 +472,30 @@ fill_res(struct ub_result* res, struct ub_packed_rrset_key* answer, return 0; /* out of memory */ } else res->canonname = NULL; res->data = (char**)calloc(data->count+1, sizeof(char*)); - res->len = (int*)calloc(data->count+1, sizeof(int)); - if(!res->data || !res->len) + if(!res->data) return 0; /* out of memory */ + res->len = (int*)calloc(data->count+1, sizeof(int)); + if(!res->len) { + free(res->data); + res->data = NULL; + return 0; /* out of memory */ + } for(i=0; icount; i++) { /* remove rdlength from rdata */ res->len[i] = (int)(data->rr_len[i] - 2); res->data[i] = memdup(data->rr_data[i]+2, (size_t)res->len[i]); - if(!res->data[i]) + if(!res->data[i]) { + size_t j; + for(j=0; jdata[j]); + res->data[j] = NULL; + } + free(res->data); + res->data = NULL; + free(res->len); + res->len = NULL; return 0; /* out of memory */ + } } /* ttl for positive answers, from CNAME and answer RRs */ if(data->count != 0) { diff --git a/libunbound/python/libunbound.i b/libunbound/python/libunbound.i index ab244a6fb..763879e80 100644 --- a/libunbound/python/libunbound.i +++ b/libunbound/python/libunbound.i @@ -936,6 +936,8 @@ int _ub_resolve_async(struct ub_ctx* ctx, char* name, int rrtype, int rrclass, v int r; struct cb_data* id; id = (struct cb_data*) malloc(sizeof(struct cb_data)); + if(!id) + return -2; /* UB_NOMEM */ id->data = mydata; id->func = pyfunc; diff --git a/pythonmod/interface.i b/pythonmod/interface.i index 5dae04aa4..ce7dcde71 100644 --- a/pythonmod/interface.i +++ b/pythonmod/interface.i @@ -1546,7 +1546,7 @@ int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len, { PyObject *func, *py_edns, *py_qstate, *py_opt_list_out, *py_qinfo; PyObject *py_rep, *py_repinfo, *py_region; - PyObject *py_args, *py_kwargs, *result; + PyObject *py_args = NULL, *py_kwargs = NULL, *result = NULL; int res = 0; double py_start_time = ((double)start_time->tv_sec) + ((double)start_time->tv_usec) / 1.0e6; @@ -1561,11 +1561,20 @@ int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len, py_rep = SWIG_NewPointerObj((void*) rep, SWIGTYPE_p_reply_info, 0); py_repinfo = SWIG_NewPointerObj((void*) repinfo, SWIGTYPE_p_comm_reply, 0); py_region = SWIG_NewPointerObj((void*) region, SWIGTYPE_p_regional, 0); - py_args = Py_BuildValue("(OOOiOOO)", py_qinfo, py_qstate, py_rep, - rcode, py_edns, py_opt_list_out, py_region); - py_kwargs = Py_BuildValue("{s:O,s:d}", "repinfo", py_repinfo, "start_time", - py_start_time); - result = PyObject_Call(func, py_args, py_kwargs); + if(py_qinfo && py_qstate && py_rep && py_edns && py_opt_list_out + && py_region && py_repinfo) { + py_args = Py_BuildValue("(OOOiOOO)", py_qinfo, py_qstate, py_rep, + rcode, py_edns, py_opt_list_out, py_region); + py_kwargs = Py_BuildValue("{s:O,s:d}", "repinfo", py_repinfo, "start_time", + py_start_time); + if(py_args && py_kwargs) { + result = PyObject_Call(func, py_args, py_kwargs); + } else { + log_err("pythonmod: malloc failure in python_inplace_cb_reply_generic"); + } + } else { + log_err("pythonmod: malloc failure in python_inplace_cb_reply_generic"); + } Py_XDECREF(py_edns); Py_XDECREF(py_qstate); Py_XDECREF(py_opt_list_out); @@ -1624,6 +1633,7 @@ int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len, { int res = 0; PyObject *func = python_callback; + PyObject *py_args = NULL, *py_kwargs = NULL, *result = NULL; PyGILState_STATE gstate = PyGILState_Ensure(); @@ -1632,12 +1642,19 @@ int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len, PyObject *py_addr = SWIG_NewPointerObj((void *) addr, SWIGTYPE_p_sockaddr_storage, 0); PyObject *py_zone = PyBytes_FromStringAndSize((const char *)zone, zonelen); PyObject *py_region = SWIG_NewPointerObj((void*) region, SWIGTYPE_p_regional, 0); - - PyObject *py_args = Py_BuildValue("(OiOOOO)", py_qinfo, flags, py_qstate, py_addr, py_zone, py_region); - PyObject *py_kwargs = Py_BuildValue("{}"); - PyObject *result = PyObject_Call(func, py_args, py_kwargs); - if (result) { - res = PyInt_AsLong(result); + if(py_qinfo && py_qstate && py_addr && py_zone && py_region) { + py_args = Py_BuildValue("(OiOOOO)", py_qinfo, flags, py_qstate, py_addr, py_zone, py_region); + py_kwargs = Py_BuildValue("{}"); + if(py_args && py_kwargs) { + result = PyObject_Call(func, py_args, py_kwargs); + if (result) { + res = PyInt_AsLong(result); + } + } else { + log_err("pythonmod: malloc failure in python_inplace_cb_query_generic"); + } + } else { + log_err("pythonmod: malloc failure in python_inplace_cb_query_generic"); } Py_XDECREF(py_qinfo); diff --git a/pythonmod/pythonmod.c b/pythonmod/pythonmod.c index 6e60d02fe..4bea54e6a 100644 --- a/pythonmod/pythonmod.c +++ b/pythonmod/pythonmod.c @@ -245,6 +245,11 @@ cleanup: /* clear the exception, by not restoring it */ /* Restore the exception state */ /* PyErr_Restore(exc_typ, exc_val, exc_tb); */ + /* when using PyErr_Restore there is no need to Py_XDECREF for + * these 3 pointers. */ + Py_XDECREF(exc_typ); + Py_XDECREF(exc_val); + Py_XDECREF(exc_tb); } int pythonmod_init(struct module_env* env, int id) @@ -561,9 +566,19 @@ void pythonmod_operate(struct module_qstate* qstate, enum module_ev event, { /* create qstate */ pq = qstate->minfo[id] = malloc(sizeof(struct pythonmod_qstate)); + if(!pq) { + log_err("pythonmod_operate: malloc failure for qstate"); + PyGILState_Release(gil); + return; + } /* Initialize per query data */ pq->data = PyDict_New(); + if(!pq->data) { + log_err("pythonmod_operate: malloc failure for query data dict"); + PyGILState_Release(gil); + return; + } } /* Call operate */ diff --git a/respip/respip.c b/respip/respip.c index a4ef7dfce..3d1b3feaf 100644 --- a/respip/respip.c +++ b/respip/respip.c @@ -130,7 +130,7 @@ respip_sockaddr_delete(struct respip_set* set, struct resp_addr* node) struct resp_addr* prev; prev = (struct resp_addr*)rbtree_previous((struct rbnode_type*)node); lock_rw_destroy(&node->lock); - rbtree_delete(&set->ip_tree, node); + (void)rbtree_delete(&set->ip_tree, node); /* no free'ing, all allocated in region */ if(!prev) addr_tree_init_parents((rbtree_type*)set); diff --git a/services/authzone.c b/services/authzone.c index 76fcfc0ac..562df938e 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -5163,6 +5163,9 @@ xfr_write_after_update(struct auth_xfer* xfr, struct module_env* env) lock_rw_unlock(&z->lock); return; } +#ifdef UB_ON_WINDOWS + (void)unlink(zfilename); /* windows does not replace file with rename() */ +#endif if(rename(tmpfile, zfilename) < 0) { log_err("could not rename(%s, %s): %s", tmpfile, zfilename, strerror(errno)); @@ -5434,7 +5437,7 @@ xfr_transfer_init_fetch(struct auth_xfer* xfr, struct module_env* env) xfr->task_transfer->cp = outnet_comm_point_for_http( env->outnet, auth_xfer_transfer_http_callback, xfr, &addr, addrlen, -1, master->ssl, master->host, - master->file); + master->file, env->cfg); if(!xfr->task_transfer->cp) { char zname[255+1], as[256]; dname_str(xfr->name, zname); @@ -7179,12 +7182,14 @@ xfer_set_masters(struct auth_master** list, struct config_auth* c, if(with_http) for(p = c->urls; p; p = p->next) { m = auth_master_new(&list); + if(!m) return 0; m->http = 1; if(!parse_url(p->str, &m->host, &m->file, &m->port, &m->ssl)) return 0; } for(p = c->masters; p; p = p->next) { m = auth_master_new(&list); + if(!m) return 0; m->ixfr = 1; /* this flag is not configurable */ m->host = strdup(p->str); if(!m->host) { @@ -7194,6 +7199,7 @@ xfer_set_masters(struct auth_master** list, struct config_auth* c, } for(p = c->allow_notify; p; p = p->next) { m = auth_master_new(&list); + if(!m) return 0; m->allow_notify = 1; m->host = strdup(p->str); if(!m->host) { diff --git a/services/cache/infra.c b/services/cache/infra.c index 2d16bcd6e..518e69622 100644 --- a/services/cache/infra.c +++ b/services/cache/infra.c @@ -236,6 +236,9 @@ infra_create(struct config_file* cfg) sizeof(struct infra_cache)); size_t maxmem = cfg->infra_cache_numhosts * (sizeof(struct infra_key)+ sizeof(struct infra_data)+INFRA_BYTES_NAME); + if(!infra) { + return NULL; + } infra->hosts = slabhash_create(cfg->infra_cache_slabs, INFRA_HOST_STARTSIZE, maxmem, &infra_sizefunc, &infra_compfunc, &infra_delkeyfunc, &infra_deldatafunc, NULL); diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index ca40fac5c..b43def567 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -2477,6 +2477,10 @@ static int http2_query_read_done(struct http2_session* h2_session, "buffer already assigned to stream"); return -1; } + + /* the c->buffer might be used by mesh_send_reply and no be cleard + * need to be cleared before use */ + sldns_buffer_clear(h2_session->c->buffer); if(sldns_buffer_remaining(h2_session->c->buffer) < sldns_buffer_remaining(h2_stream->qbuffer)) { /* qbuffer will be free'd in frame close cb */ @@ -2678,18 +2682,45 @@ static int http2_buffer_uri_query(struct http2_session* h2_session, return 0; } - if(!(b64len = sldns_b64url_pton( - (char const *)start, length, - sldns_buffer_current(h2_stream->qbuffer), - expectb64len)) || b64len < 0) { - lock_basic_lock(&http2_query_buffer_count_lock); - http2_query_buffer_count -= expectb64len; - lock_basic_unlock(&http2_query_buffer_count_lock); - sldns_buffer_free(h2_stream->qbuffer); - h2_stream->qbuffer = NULL; - /* return without error, method can be an - * unknown POST */ - return 1; + if(sldns_b64_contains_nonurl((char const*)start, length)) { + char buf[65536+4]; + verbose(VERB_ALGO, "HTTP2 stream contains wrong b64 encoding"); + /* copy to the scratch buffer temporarily to terminate the + * string with a zero */ + if(length+1 > sizeof(buf)) { + /* too long */ + lock_basic_lock(&http2_query_buffer_count_lock); + http2_query_buffer_count -= expectb64len; + lock_basic_unlock(&http2_query_buffer_count_lock); + sldns_buffer_free(h2_stream->qbuffer); + h2_stream->qbuffer = NULL; + return 1; + } + memmove(buf, start, length); + buf[length] = 0; + if(!(b64len = sldns_b64_pton(buf, sldns_buffer_current( + h2_stream->qbuffer), expectb64len)) || b64len < 0) { + lock_basic_lock(&http2_query_buffer_count_lock); + http2_query_buffer_count -= expectb64len; + lock_basic_unlock(&http2_query_buffer_count_lock); + sldns_buffer_free(h2_stream->qbuffer); + h2_stream->qbuffer = NULL; + return 1; + } + } else { + if(!(b64len = sldns_b64url_pton( + (char const *)start, length, + sldns_buffer_current(h2_stream->qbuffer), + expectb64len)) || b64len < 0) { + lock_basic_lock(&http2_query_buffer_count_lock); + http2_query_buffer_count -= expectb64len; + lock_basic_unlock(&http2_query_buffer_count_lock); + sldns_buffer_free(h2_stream->qbuffer); + h2_stream->qbuffer = NULL; + /* return without error, method can be an + * unknown POST */ + return 1; + } } sldns_buffer_skip(h2_stream->qbuffer, (size_t)b64len); return 1; diff --git a/services/localzone.c b/services/localzone.c index a24137eac..075f1087e 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -745,9 +745,15 @@ static int lz_enter_zones(struct local_zones* zones, struct config_file* cfg) { struct config_str2list* p; +#ifndef THREADS_DISABLED struct local_zone* z; +#endif for(p = cfg->local_zones; p; p = p->next) { - if(!(z=lz_enter_zone(zones, p->str, p->str2, + if(!( +#ifndef THREADS_DISABLED + z= +#endif + lz_enter_zone(zones, p->str, p->str2, LDNS_RR_CLASS_IN))) return 0; lock_rw_unlock(&z->lock); @@ -1027,7 +1033,9 @@ lz_setup_implicit(struct local_zones* zones, struct config_file* cfg) } if(have_name) { uint8_t* n2; +#ifndef THREADS_DISABLED struct local_zone* z; +#endif /* allocate zone of smallest shared topdomain to contain em */ n2 = nm; dname_remove_labels(&n2, &nmlen, nmlabs - match); @@ -1039,7 +1047,11 @@ lz_setup_implicit(struct local_zones* zones, struct config_file* cfg) } log_nametypeclass(VERB_ALGO, "implicit transparent local-zone", n2, 0, dclass); - if(!(z=lz_enter_zone_dname(zones, n2, nmlen, match, + if(!( +#ifndef THREADS_DISABLED + z= +#endif + lz_enter_zone_dname(zones, n2, nmlen, match, local_zone_transparent, dclass))) { return 0; } diff --git a/services/localzone.h b/services/localzone.h index fe632568d..9a06a7f84 100644 --- a/services/localzone.h +++ b/services/localzone.h @@ -160,7 +160,7 @@ struct local_zone { rbtree_type data; /** if data contains zone apex SOA data, this is a ptr to it. */ struct ub_packed_rrset_key* soa; - /** if data contains zone apex SOA data, this is a prt to an + /** if data contains zone apex SOA data, this is a ptr to an * artificial negative SOA rrset (TTL is the minimum of the TTL and the * SOA.MINIMUM). */ struct ub_packed_rrset_key* soa_negative; diff --git a/services/mesh.c b/services/mesh.c index f00ad3e86..200531903 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -439,7 +439,7 @@ mesh_serve_expired_init(struct mesh_state* mstate, int timeout) mstate->s.serve_expired_data->get_cached_answer = mstate->s.serve_expired_data->get_cached_answer? mstate->s.serve_expired_data->get_cached_answer: - mesh_serve_expired_lookup; + &mesh_serve_expired_lookup; /* In case this timer already popped, start it again */ if(!mstate->s.serve_expired_data->timer) { @@ -1967,7 +1967,7 @@ mesh_serve_expired_callback(void* arg) while(1) { fptr_ok(fptr_whitelist_serve_expired_lookup( qstate->serve_expired_data->get_cached_answer)); - msg = qstate->serve_expired_data->get_cached_answer(qstate, + msg = (*qstate->serve_expired_data->get_cached_answer)(qstate, lookup_qinfo); if(!msg) return; diff --git a/services/outside_network.c b/services/outside_network.c index af14f8622..a3f982e72 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -90,10 +90,6 @@ static int randomize_and_send_udp(struct pending* pend, sldns_buffer* packet, static void waiting_list_remove(struct outside_network* outnet, struct waiting_tcp* w); -/** remove reused element from tree and lru list */ -static void reuse_tcp_remove_tree_list(struct outside_network* outnet, - struct reuse_tcp* reuse); - /** select a DNS ID for a TCP stream */ static uint16_t tcp_select_id(struct outside_network* outnet, struct reuse_tcp* reuse); @@ -351,6 +347,8 @@ log_reuse_tcp(enum verbosity_value v, const char* msg, struct reuse_tcp* reuse) uint16_t port; char addrbuf[128]; if(verbosity < v) return; + if(!reuse || !reuse->pending || !reuse->pending->c) + return; addr_to_str(&reuse->addr, reuse->addrlen, addrbuf, sizeof(addrbuf)); port = ntohs(((struct sockaddr_in*)&reuse->addr)->sin_port); verbose(v, "%s %s#%u fd %d", msg, addrbuf, (unsigned)port, @@ -370,6 +368,8 @@ static struct waiting_tcp* reuse_write_wait_pop(struct reuse_tcp* reuse) w->write_wait_next->write_wait_prev = NULL; else reuse->write_wait_last = NULL; w->write_wait_queued = 0; + w->write_wait_next = NULL; + w->write_wait_prev = NULL; return w; } @@ -377,6 +377,8 @@ static struct waiting_tcp* reuse_write_wait_pop(struct reuse_tcp* reuse) static void reuse_write_wait_remove(struct reuse_tcp* reuse, struct waiting_tcp* w) { + log_assert(w); + log_assert(w->write_wait_queued); if(!w) return; if(!w->write_wait_queued) @@ -384,10 +386,16 @@ static void reuse_write_wait_remove(struct reuse_tcp* reuse, if(w->write_wait_prev) w->write_wait_prev->write_wait_next = w->write_wait_next; else reuse->write_wait_first = w->write_wait_next; + log_assert(!w->write_wait_prev || + w->write_wait_prev->write_wait_next != w->write_wait_prev); if(w->write_wait_next) w->write_wait_next->write_wait_prev = w->write_wait_prev; else reuse->write_wait_last = w->write_wait_prev; + log_assert(!w->write_wait_next + || w->write_wait_next->write_wait_prev != w->write_wait_next); w->write_wait_queued = 0; + w->write_wait_next = NULL; + w->write_wait_prev = NULL; } /** push the element after the last on the writewait list */ @@ -398,6 +406,8 @@ static void reuse_write_wait_push_back(struct reuse_tcp* reuse, log_assert(!w->write_wait_queued); if(reuse->write_wait_last) { reuse->write_wait_last->write_wait_next = w; + log_assert(reuse->write_wait_last->write_wait_next != + reuse->write_wait_last); w->write_wait_prev = reuse->write_wait_last; } else { reuse->write_wait_first = w; @@ -447,34 +457,45 @@ tree_by_id_get_id(rbnode_type* node) } /** insert into reuse tcp tree and LRU, false on failure (duplicate) */ -static int +int reuse_tcp_insert(struct outside_network* outnet, struct pending_tcp* pend_tcp) { log_reuse_tcp(VERB_CLIENT, "reuse_tcp_insert", &pend_tcp->reuse); if(pend_tcp->reuse.item_on_lru_list) { if(!pend_tcp->reuse.node.key) - log_err("internal error: reuse_tcp_insert: on lru list without key"); + log_err("internal error: reuse_tcp_insert: " + "in lru list without key"); return 1; } pend_tcp->reuse.node.key = &pend_tcp->reuse; pend_tcp->reuse.pending = pend_tcp; if(!rbtree_insert(&outnet->tcp_reuse, &pend_tcp->reuse.node)) { - /* this is a duplicate connection, close this one */ - verbose(VERB_CLIENT, "reuse_tcp_insert: duplicate connection"); - pend_tcp->reuse.node.key = NULL; - return 0; + /* We are not in the LRU list but we are already in the + * tcp_reuse tree, strange. + * Continue to add ourselves to the LRU list. */ + log_err("internal error: reuse_tcp_insert: in lru list but " + "not in the tree"); } /* insert into LRU, first is newest */ pend_tcp->reuse.lru_prev = NULL; if(outnet->tcp_reuse_first) { pend_tcp->reuse.lru_next = outnet->tcp_reuse_first; + log_assert(pend_tcp->reuse.lru_next != &pend_tcp->reuse); outnet->tcp_reuse_first->lru_prev = &pend_tcp->reuse; + log_assert(outnet->tcp_reuse_first->lru_prev != + outnet->tcp_reuse_first); } else { pend_tcp->reuse.lru_next = NULL; outnet->tcp_reuse_last = &pend_tcp->reuse; } outnet->tcp_reuse_first = &pend_tcp->reuse; pend_tcp->reuse.item_on_lru_list = 1; + log_assert((!outnet->tcp_reuse_first && !outnet->tcp_reuse_last) || + (outnet->tcp_reuse_first && outnet->tcp_reuse_last)); + log_assert(outnet->tcp_reuse_first != outnet->tcp_reuse_first->lru_next && + outnet->tcp_reuse_first != outnet->tcp_reuse_first->lru_prev); + log_assert(outnet->tcp_reuse_last != outnet->tcp_reuse_last->lru_next && + outnet->tcp_reuse_last != outnet->tcp_reuse_last->lru_prev); return 1; } @@ -712,28 +733,65 @@ outnet_tcp_take_into_use(struct waiting_tcp* w) /** Touch the lru of a reuse_tcp element, it is in use. * This moves it to the front of the list, where it is not likely to * be closed. Items at the back of the list are closed to make space. */ -static void +void reuse_tcp_lru_touch(struct outside_network* outnet, struct reuse_tcp* reuse) { if(!reuse->item_on_lru_list) { log_err("internal error: we need to touch the lru_list but item not in list"); return; /* not on the list, no lru to modify */ } + log_assert(reuse->lru_prev || + (!reuse->lru_prev && outnet->tcp_reuse_first == reuse)); if(!reuse->lru_prev) return; /* already first in the list */ /* remove at current position */ /* since it is not first, there is a previous element */ reuse->lru_prev->lru_next = reuse->lru_next; + log_assert(reuse->lru_prev->lru_next != reuse->lru_prev); if(reuse->lru_next) reuse->lru_next->lru_prev = reuse->lru_prev; else outnet->tcp_reuse_last = reuse->lru_prev; + log_assert(!reuse->lru_next || reuse->lru_next->lru_prev != reuse->lru_next); + log_assert(outnet->tcp_reuse_last != outnet->tcp_reuse_last->lru_next && + outnet->tcp_reuse_last != outnet->tcp_reuse_last->lru_prev); /* insert at the front */ reuse->lru_prev = NULL; reuse->lru_next = outnet->tcp_reuse_first; + if(outnet->tcp_reuse_first) { + outnet->tcp_reuse_first->lru_prev = reuse; + } + log_assert(reuse->lru_next != reuse); /* since it is not first, it is not the only element and * lru_next is thus not NULL and thus reuse is now not the last in * the list, so outnet->tcp_reuse_last does not need to be modified */ outnet->tcp_reuse_first = reuse; + log_assert(outnet->tcp_reuse_first != outnet->tcp_reuse_first->lru_next && + outnet->tcp_reuse_first != outnet->tcp_reuse_first->lru_prev); + log_assert((!outnet->tcp_reuse_first && !outnet->tcp_reuse_last) || + (outnet->tcp_reuse_first && outnet->tcp_reuse_last)); +} + +/** Snip the last reuse_tcp element off of the LRU list */ +struct reuse_tcp* +reuse_tcp_lru_snip(struct outside_network* outnet) +{ + struct reuse_tcp* reuse = outnet->tcp_reuse_last; + if(!reuse) return NULL; + /* snip off of LRU */ + log_assert(reuse->lru_next == NULL); + if(reuse->lru_prev) { + outnet->tcp_reuse_last = reuse->lru_prev; + reuse->lru_prev->lru_next = NULL; + } else { + outnet->tcp_reuse_last = NULL; + outnet->tcp_reuse_first = NULL; + } + log_assert((!outnet->tcp_reuse_first && !outnet->tcp_reuse_last) || + (outnet->tcp_reuse_first && outnet->tcp_reuse_last)); + reuse->item_on_lru_list = 0; + reuse->lru_next = NULL; + reuse->lru_prev = NULL; + return reuse; } /** call callback on waiting_tcp, if not NULL */ @@ -747,21 +805,71 @@ waiting_tcp_callback(struct waiting_tcp* w, struct comm_point* c, int error, } } +/** add waiting_tcp element to the outnet tcp waiting list */ +static void +outnet_add_tcp_waiting(struct outside_network* outnet, struct waiting_tcp* w) +{ + struct timeval tv; + log_assert(!w->on_tcp_waiting_list); + if(w->on_tcp_waiting_list) + return; + w->next_waiting = NULL; + if(outnet->tcp_wait_last) + outnet->tcp_wait_last->next_waiting = w; + else outnet->tcp_wait_first = w; + outnet->tcp_wait_last = w; + w->on_tcp_waiting_list = 1; +#ifndef S_SPLINT_S + tv.tv_sec = w->timeout/1000; + tv.tv_usec = (w->timeout%1000)*1000; +#endif + comm_timer_set(w->timer, &tv); +} + +/** add waiting_tcp element as first to the outnet tcp waiting list */ +static void +outnet_add_tcp_waiting_first(struct outside_network* outnet, + struct waiting_tcp* w, int reset_timer) +{ + struct timeval tv; + log_assert(!w->on_tcp_waiting_list); + if(w->on_tcp_waiting_list) + return; + w->next_waiting = outnet->tcp_wait_first; + if(!outnet->tcp_wait_last) + outnet->tcp_wait_last = w; + outnet->tcp_wait_first = w; + w->on_tcp_waiting_list = 1; + if(reset_timer) { +#ifndef S_SPLINT_S + tv.tv_sec = w->timeout/1000; + tv.tv_usec = (w->timeout%1000)*1000; +#endif + comm_timer_set(w->timer, &tv); + } + log_assert( + (!outnet->tcp_reuse_first && !outnet->tcp_reuse_last) || + (outnet->tcp_reuse_first && outnet->tcp_reuse_last)); +} + /** see if buffers can be used to service TCP queries */ static void use_free_buffer(struct outside_network* outnet) { struct waiting_tcp* w; - while(outnet->tcp_free && outnet->tcp_wait_first - && !outnet->want_to_quit) { + while(outnet->tcp_wait_first && !outnet->want_to_quit) { #ifdef USE_DNSTAP struct pending_tcp* pend_tcp = NULL; #endif struct reuse_tcp* reuse = NULL; w = outnet->tcp_wait_first; + log_assert(w->on_tcp_waiting_list); outnet->tcp_wait_first = w->next_waiting; if(outnet->tcp_wait_last == w) outnet->tcp_wait_last = NULL; + log_assert( + (!outnet->tcp_reuse_first && !outnet->tcp_reuse_last) || + (outnet->tcp_reuse_first && outnet->tcp_reuse_last)); w->on_tcp_waiting_list = 0; reuse = reuse_tcp_find(outnet, &w->addr, w->addrlen, w->ssl_upstream); @@ -790,7 +898,7 @@ use_free_buffer(struct outside_network* outnet) reuse->pending->c->fd, reuse->pending, w); } - } else { + } else if(outnet->tcp_free) { struct pending_tcp* pend = w->outnet->tcp_free; rbtree_init(&pend->reuse.tree_by_id, reuse_id_cmp); pend->reuse.pending = pend; @@ -807,11 +915,15 @@ use_free_buffer(struct outside_network* outnet) #ifdef USE_DNSTAP pend_tcp = pend; #endif + } else { + /* no reuse and no free buffer, put back at the start */ + outnet_add_tcp_waiting_first(outnet, w, 0); + break; } #ifdef USE_DNSTAP if(outnet->dtenv && pend_tcp && w && w->sq && - (outnet->dtenv->log_resolver_query_messages || - outnet->dtenv->log_forwarder_query_messages)) { + (outnet->dtenv->log_resolver_query_messages || + outnet->dtenv->log_forwarder_query_messages)) { sldns_buffer tmp; sldns_buffer_init_frm_data(&tmp, w->pkt, w->pkt_len); dt_msg_send_outside_query(outnet->dtenv, &w->sq->addr, @@ -822,26 +934,6 @@ use_free_buffer(struct outside_network* outnet) } } -/** add waiting_tcp element to the outnet tcp waiting list */ -static void -outnet_add_tcp_waiting(struct outside_network* outnet, struct waiting_tcp* w) -{ - struct timeval tv; - if(w->on_tcp_waiting_list) - return; - w->next_waiting = NULL; - if(outnet->tcp_wait_last) - outnet->tcp_wait_last->next_waiting = w; - else outnet->tcp_wait_first = w; - outnet->tcp_wait_last = w; - w->on_tcp_waiting_list = 1; -#ifndef S_SPLINT_S - tv.tv_sec = w->timeout/1000; - tv.tv_usec = (w->timeout%1000)*1000; -#endif - comm_timer_set(w->timer, &tv); -} - /** delete element from tree by id */ static void reuse_tree_by_id_delete(struct reuse_tcp* reuse, struct waiting_tcp* w) @@ -915,7 +1007,7 @@ reuse_move_writewait_away(struct outside_network* outnet, } /** remove reused element from tree and lru list */ -static void +void reuse_tcp_remove_tree_list(struct outside_network* outnet, struct reuse_tcp* reuse) { @@ -941,21 +1033,38 @@ reuse_tcp_remove_tree_list(struct outside_network* outnet, * and thus have a pending pointer to the struct */ log_assert(reuse->lru_prev->pending); reuse->lru_prev->lru_next = reuse->lru_next; + log_assert(reuse->lru_prev->lru_next != reuse->lru_prev); } else { log_assert(!reuse->lru_next || reuse->lru_next->pending); outnet->tcp_reuse_first = reuse->lru_next; + log_assert(!outnet->tcp_reuse_first || + (outnet->tcp_reuse_first != + outnet->tcp_reuse_first->lru_next && + outnet->tcp_reuse_first != + outnet->tcp_reuse_first->lru_prev)); } if(reuse->lru_next) { /* assert that members of the lru list are waiting * and thus have a pending pointer to the struct */ log_assert(reuse->lru_next->pending); reuse->lru_next->lru_prev = reuse->lru_prev; + log_assert(reuse->lru_next->lru_prev != reuse->lru_next); } else { log_assert(!reuse->lru_prev || reuse->lru_prev->pending); outnet->tcp_reuse_last = reuse->lru_prev; + log_assert(!outnet->tcp_reuse_last || + (outnet->tcp_reuse_last != + outnet->tcp_reuse_last->lru_next && + outnet->tcp_reuse_last != + outnet->tcp_reuse_last->lru_prev)); } + log_assert((!outnet->tcp_reuse_first && !outnet->tcp_reuse_last) || + (outnet->tcp_reuse_first && outnet->tcp_reuse_last)); reuse->item_on_lru_list = 0; + reuse->lru_next = NULL; + reuse->lru_prev = NULL; } + reuse->pending = NULL; } /** helper function that deletes an element from the tree of readwait @@ -982,8 +1091,12 @@ decommission_pending_tcp(struct outside_network* outnet, struct pending_tcp* pend) { verbose(VERB_CLIENT, "decommission_pending_tcp"); - pend->next_free = outnet->tcp_free; - outnet->tcp_free = pend; + /* A certain code path can lead here twice for the same pending_tcp + * creating a loop in the free pending_tcp list. */ + if(outnet->tcp_free != pend) { + pend->next_free = outnet->tcp_free; + outnet->tcp_free = pend; + } if(pend->reuse.node.key) { /* needs unlink from the reuse tree to get deleted */ reuse_tcp_remove_tree_list(outnet, &pend->reuse); @@ -1069,6 +1182,7 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, struct pending_tcp* pend = (struct pending_tcp*)arg; struct outside_network* outnet = pend->reuse.outnet; struct waiting_tcp* w = NULL; + log_assert(pend->reuse.item_on_lru_list && pend->reuse.node.key); verbose(VERB_ALGO, "outnettcp cb"); if(error == NETEVENT_TIMEOUT) { if(pend->c->tcp_write_and_read) { @@ -1680,22 +1794,19 @@ outside_network_delete(struct outside_network* outnet) size_t i; for(i=0; inum_tcp; i++) if(outnet->tcp_conns[i]) { - if(outnet->tcp_conns[i]->query && - !outnet->tcp_conns[i]->query-> - on_tcp_waiting_list) { + struct pending_tcp* pend; + pend = outnet->tcp_conns[i]; + if(pend->reuse.item_on_lru_list) { /* delete waiting_tcp elements that * the tcp conn is working on */ - struct pending_tcp* pend = - (struct pending_tcp*)outnet-> - tcp_conns[i]->query-> - next_waiting; decommission_pending_tcp(outnet, pend); } comm_point_delete(outnet->tcp_conns[i]->c); - waiting_tcp_delete(outnet->tcp_conns[i]->query); free(outnet->tcp_conns[i]); + outnet->tcp_conns[i] = NULL; } free(outnet->tcp_conns); + outnet->tcp_conns = NULL; } if(outnet->tcp_wait_first) { struct waiting_tcp* p = outnet->tcp_wait_first, *np; @@ -2093,24 +2204,12 @@ outnet_tcptimer(void* arg) static void reuse_tcp_close_oldest(struct outside_network* outnet) { - struct pending_tcp* pend; + struct reuse_tcp* reuse; verbose(VERB_CLIENT, "reuse_tcp_close_oldest"); - if(!outnet->tcp_reuse_last) return; - pend = outnet->tcp_reuse_last->pending; - - /* snip off of LRU */ - log_assert(pend->reuse.lru_next == NULL); - if(pend->reuse.lru_prev) { - outnet->tcp_reuse_last = pend->reuse.lru_prev; - pend->reuse.lru_prev->lru_next = NULL; - } else { - outnet->tcp_reuse_last = NULL; - outnet->tcp_reuse_first = NULL; - } - pend->reuse.item_on_lru_list = 0; - + reuse = reuse_tcp_lru_snip(outnet); + if(!reuse) return; /* free up */ - reuse_cb_and_decommission(outnet, pend, NETEVENT_CLOSED); + reuse_cb_and_decommission(outnet, reuse->pending, NETEVENT_CLOSED); } static uint16_t @@ -2216,6 +2315,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, reuse_tcp_lru_touch(sq->outnet, reuse); } + log_assert(!reuse || (reuse && pend)); /* if !pend but we have reuse streams, close a reuse stream * to be able to open a new one to this target, no use waiting * to reuse a file descriptor while another query needs to use @@ -2223,6 +2323,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, if(!pend) { reuse_tcp_close_oldest(sq->outnet); pend = sq->outnet->tcp_free; + log_assert(!reuse || (pend == reuse->pending)); } /* allocate space to store query */ @@ -2261,6 +2362,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, if(pend) { /* we have a buffer available right now */ if(reuse) { + log_assert(reuse == &pend->reuse); /* reuse existing fd, write query and continue */ /* store query in tree by id */ verbose(VERB_CLIENT, "pending_tcp_query: reuse, store"); @@ -2447,6 +2549,9 @@ waiting_list_remove(struct outside_network* outnet, struct waiting_tcp* w) prev = p; p = p->next_waiting; } + /* waiting_list_remove is currently called only with items that are + * already in the waiting list. */ + log_assert(0); } /** reuse tcp stream, remove serviced query from stream, @@ -3434,15 +3539,28 @@ outnet_comm_point_for_tcp(struct outside_network* outnet, return cp; } +/** setup the User-Agent HTTP header based on http-user-agent configuration */ +static void +setup_http_user_agent(sldns_buffer* buf, struct config_file* cfg) +{ + if(cfg->hide_http_user_agent) return; + if(cfg->http_user_agent==NULL || cfg->http_user_agent[0] == 0) { + sldns_buffer_printf(buf, "User-Agent: %s/%s\r\n", PACKAGE_NAME, + PACKAGE_VERSION); + } else { + sldns_buffer_printf(buf, "User-Agent: %s\r\n", cfg->http_user_agent); + } +} + /** setup http request headers in buffer for sending query to destination */ static int -setup_http_request(sldns_buffer* buf, char* host, char* path) +setup_http_request(sldns_buffer* buf, char* host, char* path, + struct config_file* cfg) { sldns_buffer_clear(buf); sldns_buffer_printf(buf, "GET /%s HTTP/1.1\r\n", path); sldns_buffer_printf(buf, "Host: %s\r\n", host); - sldns_buffer_printf(buf, "User-Agent: unbound/%s\r\n", - PACKAGE_VERSION); + setup_http_user_agent(buf, cfg); /* We do not really do multiple queries per connection, * but this header setting is also not needed. * sldns_buffer_printf(buf, "Connection: close\r\n") */ @@ -3458,7 +3576,7 @@ struct comm_point* outnet_comm_point_for_http(struct outside_network* outnet, comm_point_callback_type* cb, void* cb_arg, struct sockaddr_storage* to_addr, socklen_t to_addrlen, int timeout, - int ssl, char* host, char* path) + int ssl, char* host, char* path, struct config_file* cfg) { /* cp calls cb with err=NETEVENT_DONE when transfer is done */ struct comm_point* cp; @@ -3494,7 +3612,7 @@ outnet_comm_point_for_http(struct outside_network* outnet, comm_point_start_listening(cp, fd, timeout); /* setup http request in cp->buffer */ - if(!setup_http_request(cp->buffer, host, path)) { + if(!setup_http_request(cp->buffer, host, path, cfg)) { log_err("error setting up http request"); comm_point_delete(cp); return NULL; diff --git a/services/outside_network.h b/services/outside_network.h index 071f37dde..d0d532e64 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -63,6 +63,7 @@ struct edns_option; struct module_env; struct module_qstate; struct query_info; +struct config_file; /** * Send queries to outside servers and wait for answers from servers. @@ -681,12 +682,28 @@ struct waiting_tcp* reuse_tcp_by_id_find(struct reuse_tcp* reuse, uint16_t id); /** insert element in tree by id */ void reuse_tree_by_id_insert(struct reuse_tcp* reuse, struct waiting_tcp* w); +/** insert element in tcp_reuse tree and LRU list */ +int reuse_tcp_insert(struct outside_network* outnet, + struct pending_tcp* pend_tcp); + +/** touch the LRU of the element */ +void reuse_tcp_lru_touch(struct outside_network* outnet, + struct reuse_tcp* reuse); + +/** remove element from tree and LRU list */ +void reuse_tcp_remove_tree_list(struct outside_network* outnet, + struct reuse_tcp* reuse); + +/** snip the last reuse_tcp element off of the LRU list if any */ +struct reuse_tcp* reuse_tcp_lru_snip(struct outside_network* outnet); + /** delete readwait waiting_tcp elements, deletes the elements in the list */ void reuse_del_readwait(rbtree_type* tree_by_id); /** get TCP file descriptor for address, returns -1 on failure, * tcp_mss is 0 or maxseg size to set for TCP packets. */ -int outnet_get_tcp_fd(struct sockaddr_storage* addr, socklen_t addrlen, int tcp_mss, int dscp); +int outnet_get_tcp_fd(struct sockaddr_storage* addr, socklen_t addrlen, + int tcp_mss, int dscp); /** * Create udp commpoint suitable for sending packets to the destination. @@ -740,12 +757,13 @@ struct comm_point* outnet_comm_point_for_tcp(struct outside_network* outnet, * @param ssl: set to true for https. * @param host: hostname to use for the destination. part of http request. * @param path: pathname to lookup, eg. name of the file on the destination. + * @param cfg: running configuration for User-Agent setup. * @return http_out commpoint, or NULL. */ struct comm_point* outnet_comm_point_for_http(struct outside_network* outnet, comm_point_callback_type* cb, void* cb_arg, struct sockaddr_storage* to_addr, socklen_t to_addrlen, int timeout, - int ssl, char* host, char* path); + int ssl, char* host, char* path, struct config_file* cfg); /** connect tcp connection to addr, 0 on failure */ int outnet_tcp_connect(int s, struct sockaddr_storage* addr, socklen_t addrlen); diff --git a/sldns/keyraw.c b/sldns/keyraw.c index 2ec225bc5..b1e60d8b5 100644 --- a/sldns/keyraw.c +++ b/sldns/keyraw.c @@ -26,11 +26,15 @@ #ifdef HAVE_OPENSSL_BN_H #include #endif -#ifdef HAVE_OPENSSL_RSA_H -#include -#endif -#ifdef HAVE_OPENSSL_DSA_H -#include +#ifdef HAVE_OPENSSL_PARAM_BUILD_H +# include +#else +# ifdef HAVE_OPENSSL_RSA_H +# include +# endif +# ifdef HAVE_OPENSSL_DSA_H +# include +# endif #endif #endif /* HAVE_SSL */ @@ -191,45 +195,59 @@ void sldns_key_EVP_unload_gost(void) } #endif /* USE_GOST */ -DSA * -sldns_key_buf2dsa_raw(unsigned char* key, size_t len) +/* Retrieve params as BIGNUM from raw buffer */ +static int +sldns_key_dsa_buf_bignum(unsigned char* key, size_t len, BIGNUM** p, + BIGNUM** q, BIGNUM** g, BIGNUM** y) { uint8_t T; uint16_t length; uint16_t offset; - DSA *dsa; - BIGNUM *Q; BIGNUM *P; - BIGNUM *G; BIGNUM *Y; if(len == 0) - return NULL; + return 0; T = (uint8_t)key[0]; length = (64 + T * 8); offset = 1; if (T > 8) { - return NULL; + return 0; } if(len < (size_t)1 + SHA_DIGEST_LENGTH + 3*length) - return NULL; + return 0; - Q = BN_bin2bn(key+offset, SHA_DIGEST_LENGTH, NULL); + *q = BN_bin2bn(key+offset, SHA_DIGEST_LENGTH, NULL); offset += SHA_DIGEST_LENGTH; - P = BN_bin2bn(key+offset, (int)length, NULL); + *p = BN_bin2bn(key+offset, (int)length, NULL); offset += length; - G = BN_bin2bn(key+offset, (int)length, NULL); + *g = BN_bin2bn(key+offset, (int)length, NULL); offset += length; - Y = BN_bin2bn(key+offset, (int)length, NULL); + *y = BN_bin2bn(key+offset, (int)length, NULL); + if(!*q || !*p || !*g || !*y) { + BN_free(*q); + BN_free(*p); + BN_free(*g); + BN_free(*y); + return 0; + } + return 1; +} + +#ifndef HAVE_OSSL_PARAM_BLD_NEW +DSA * +sldns_key_buf2dsa_raw(unsigned char* key, size_t len) +{ + DSA *dsa; + BIGNUM *Q=NULL, *P=NULL, *G=NULL, *Y=NULL; + if(!sldns_key_dsa_buf_bignum(key, len, &P, &Q, &G, &Y)) { + return NULL; + } /* create the key and set its properties */ - if(!Q || !P || !G || !Y || !(dsa = DSA_new())) { - BN_free(Q); - BN_free(P); - BN_free(G); - BN_free(Y); + if(!(dsa = DSA_new())) { return NULL; } #if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(HAVE_LIBRESSL) @@ -261,22 +279,111 @@ sldns_key_buf2dsa_raw(unsigned char* key, size_t len) return dsa; } +#endif /* HAVE_OSSL_PARAM_BLD_NEW */ -RSA * -sldns_key_buf2rsa_raw(unsigned char* key, size_t len) +EVP_PKEY *sldns_key_dsa2pkey_raw(unsigned char* key, size_t len) +{ +#ifdef HAVE_OSSL_PARAM_BLD_NEW + EVP_PKEY* evp_key = NULL; + EVP_PKEY_CTX* ctx; + BIGNUM *p=NULL, *q=NULL, *g=NULL, *y=NULL; + OSSL_PARAM_BLD* param_bld; + OSSL_PARAM* params = NULL; + if(!sldns_key_dsa_buf_bignum(key, len, &p, &q, &g, &y)) { + return NULL; + } + + param_bld = OSSL_PARAM_BLD_new(); + if(!param_bld) { + BN_free(p); + BN_free(q); + BN_free(g); + BN_free(y); + return NULL; + } + if(!OSSL_PARAM_BLD_push_BN(param_bld, "p", p) || + !OSSL_PARAM_BLD_push_BN(param_bld, "g", g) || + !OSSL_PARAM_BLD_push_BN(param_bld, "q", q) || + !OSSL_PARAM_BLD_push_BN(param_bld, "pub", y)) { + OSSL_PARAM_BLD_free(param_bld); + BN_free(p); + BN_free(q); + BN_free(g); + BN_free(y); + return NULL; + } + params = OSSL_PARAM_BLD_to_param(param_bld); + OSSL_PARAM_BLD_free(param_bld); + + ctx = EVP_PKEY_CTX_new_from_name(NULL, "DSA", NULL); + if(!ctx) { + OSSL_PARAM_free(params); + BN_free(p); + BN_free(q); + BN_free(g); + BN_free(y); + return NULL; + } + if(EVP_PKEY_fromdata_init(ctx) <= 0) { + EVP_PKEY_CTX_free(ctx); + OSSL_PARAM_free(params); + BN_free(p); + BN_free(q); + BN_free(g); + BN_free(y); + return NULL; + } + if(EVP_PKEY_fromdata(ctx, &evp_key, EVP_PKEY_PUBLIC_KEY, params) <= 0) { + EVP_PKEY_CTX_free(ctx); + OSSL_PARAM_free(params); + BN_free(p); + BN_free(q); + BN_free(g); + BN_free(y); + return NULL; + } + + EVP_PKEY_CTX_free(ctx); + OSSL_PARAM_free(params); + BN_free(p); + BN_free(q); + BN_free(g); + BN_free(y); + return evp_key; +#else + DSA* dsa; + EVP_PKEY* evp_key = EVP_PKEY_new(); + if(!evp_key) { + return NULL; + } + dsa = sldns_key_buf2dsa_raw(key, len); + if(!dsa) { + EVP_PKEY_free(evp_key); + return NULL; + } + if(EVP_PKEY_assign_DSA(evp_key, dsa) == 0) { + DSA_free(dsa); + EVP_PKEY_free(evp_key); + return NULL; + } + return evp_key; +#endif +} + +/* Retrieve params as BIGNUM from raw buffer, n is modulus, e is exponent */ +static int +sldns_key_rsa_buf_bignum(unsigned char* key, size_t len, BIGNUM** n, + BIGNUM** e) { uint16_t offset; uint16_t exp; uint16_t int16; - RSA *rsa; - BIGNUM *modulus; - BIGNUM *exponent; if (len == 0) - return NULL; + return 0; if (key[0] == 0) { if(len < 3) - return NULL; + return 0; memmove(&int16, key+1, 2); exp = ntohs(int16); offset = 3; @@ -287,23 +394,34 @@ sldns_key_buf2rsa_raw(unsigned char* key, size_t len) /* key length at least one */ if(len < (size_t)offset + exp + 1) - return NULL; + return 0; /* Exponent */ - exponent = BN_new(); - if(!exponent) return NULL; - (void) BN_bin2bn(key+offset, (int)exp, exponent); + *e = BN_new(); + if(!*e) return 0; + (void) BN_bin2bn(key+offset, (int)exp, *e); offset += exp; /* Modulus */ - modulus = BN_new(); - if(!modulus) { - BN_free(exponent); - return NULL; + *n = BN_new(); + if(!*n) { + BN_free(*e); + return 0; } /* length of the buffer must match the key length! */ - (void) BN_bin2bn(key+offset, (int)(len - offset), modulus); + (void) BN_bin2bn(key+offset, (int)(len - offset), *n); + return 1; +} +#ifndef HAVE_OSSL_PARAM_BLD_NEW +RSA * +sldns_key_buf2rsa_raw(unsigned char* key, size_t len) +{ + BIGNUM* modulus = NULL; + BIGNUM* exponent = NULL; + RSA *rsa; + if(!sldns_key_rsa_buf_bignum(key, len, &modulus, &exponent)) + return NULL; rsa = RSA_new(); if(!rsa) { BN_free(exponent); @@ -327,6 +445,88 @@ sldns_key_buf2rsa_raw(unsigned char* key, size_t len) return rsa; } +#endif /* HAVE_OSSL_PARAM_BLD_NEW */ + +EVP_PKEY* sldns_key_rsa2pkey_raw(unsigned char* key, size_t len) +{ +#ifdef HAVE_OSSL_PARAM_BLD_NEW + EVP_PKEY* evp_key = NULL; + EVP_PKEY_CTX* ctx; + BIGNUM *n=NULL, *e=NULL; + OSSL_PARAM_BLD* param_bld; + OSSL_PARAM* params = NULL; + + if(!sldns_key_rsa_buf_bignum(key, len, &n, &e)) { + return NULL; + } + + param_bld = OSSL_PARAM_BLD_new(); + if(!param_bld) { + BN_free(n); + BN_free(e); + return NULL; + } + if(!OSSL_PARAM_BLD_push_BN(param_bld, "n", n)) { + OSSL_PARAM_BLD_free(param_bld); + BN_free(n); + BN_free(e); + return NULL; + } + if(!OSSL_PARAM_BLD_push_BN(param_bld, "e", e)) { + OSSL_PARAM_BLD_free(param_bld); + BN_free(n); + BN_free(e); + return NULL; + } + params = OSSL_PARAM_BLD_to_param(param_bld); + OSSL_PARAM_BLD_free(param_bld); + + ctx = EVP_PKEY_CTX_new_from_name(NULL, "RSA", NULL); + if(!ctx) { + OSSL_PARAM_free(params); + BN_free(n); + BN_free(e); + return NULL; + } + if(EVP_PKEY_fromdata_init(ctx) <= 0) { + EVP_PKEY_CTX_free(ctx); + OSSL_PARAM_free(params); + BN_free(n); + BN_free(e); + return NULL; + } + if(EVP_PKEY_fromdata(ctx, &evp_key, EVP_PKEY_PUBLIC_KEY, params) <= 0) { + EVP_PKEY_CTX_free(ctx); + OSSL_PARAM_free(params); + BN_free(n); + BN_free(e); + return NULL; + } + + EVP_PKEY_CTX_free(ctx); + OSSL_PARAM_free(params); + BN_free(n); + BN_free(e); + return evp_key; +#else + RSA* rsa; + EVP_PKEY *evp_key = EVP_PKEY_new(); + if(!evp_key) { + return NULL; + } + rsa = sldns_key_buf2rsa_raw(key, len); + if(!rsa) { + EVP_PKEY_free(evp_key); + return NULL; + } + if(EVP_PKEY_assign_RSA(evp_key, rsa) == 0) { + RSA_free(rsa); + EVP_PKEY_free(evp_key); + return NULL; + } + return evp_key; +#endif +} #ifdef USE_GOST EVP_PKEY* @@ -357,6 +557,62 @@ sldns_gost2pkey_raw(unsigned char* key, size_t keylen) EVP_PKEY* sldns_ecdsa2pkey_raw(unsigned char* key, size_t keylen, uint8_t algo) { +#ifdef HAVE_OSSL_PARAM_BLD_NEW + unsigned char buf[256+2]; /* sufficient for 2*384/8+1 */ + EVP_PKEY *evp_key = NULL; + EVP_PKEY_CTX* ctx; + OSSL_PARAM_BLD* param_bld; + OSSL_PARAM* params = NULL; + char* group = NULL; + + /* check length, which uncompressed must be 2 bignums */ + if(algo == LDNS_ECDSAP256SHA256) { + if(keylen != 2*256/8) return NULL; + group = "prime256v1"; + } else if(algo == LDNS_ECDSAP384SHA384) { + if(keylen != 2*384/8) return NULL; + group = "P-384"; + } else { + return NULL; + } + if(keylen+1 > sizeof(buf)) { /* sanity check */ + return NULL; + } + /* prepend the 0x04 for uncompressed format */ + buf[0] = POINT_CONVERSION_UNCOMPRESSED; + memmove(buf+1, key, keylen); + + param_bld = OSSL_PARAM_BLD_new(); + if(!param_bld) { + return NULL; + } + if(!OSSL_PARAM_BLD_push_utf8_string(param_bld, "group", group, 0) || + !OSSL_PARAM_BLD_push_octet_string(param_bld, "pub", buf, keylen+1)) { + OSSL_PARAM_BLD_free(param_bld); + return NULL; + } + params = OSSL_PARAM_BLD_to_param(param_bld); + OSSL_PARAM_BLD_free(param_bld); + + ctx = EVP_PKEY_CTX_new_from_name(NULL, "EC", NULL); + if(!ctx) { + OSSL_PARAM_free(params); + return NULL; + } + if(EVP_PKEY_fromdata_init(ctx) <= 0) { + EVP_PKEY_CTX_free(ctx); + OSSL_PARAM_free(params); + return NULL; + } + if(EVP_PKEY_fromdata(ctx, &evp_key, EVP_PKEY_PUBLIC_KEY, params) <= 0) { + EVP_PKEY_CTX_free(ctx); + OSSL_PARAM_free(params); + return NULL; + } + EVP_PKEY_CTX_free(ctx); + OSSL_PARAM_free(params); + return evp_key; +#else unsigned char buf[256+2]; /* sufficient for 2*384/8+1 */ const unsigned char* pp = buf; EVP_PKEY *evp_key; @@ -393,6 +649,7 @@ sldns_ecdsa2pkey_raw(unsigned char* key, size_t keylen, uint8_t algo) return NULL; } return evp_key; +#endif /* HAVE_OSSL_PARAM_BLD_NEW */ } #endif /* USE_ECDSA */ diff --git a/sldns/keyraw.h b/sldns/keyraw.h index 989b02ce0..b1f19740c 100644 --- a/sldns/keyraw.h +++ b/sldns/keyraw.h @@ -57,6 +57,7 @@ int sldns_key_EVP_load_gost_id(void); /** Release the engine reference held for the GOST engine. */ void sldns_key_EVP_unload_gost(void); +#ifndef HAVE_OSSL_PARAM_BLD_NEW /** * Like sldns_key_buf2dsa, but uses raw buffer. * \param[in] key the uncompressed wireformat of the key. @@ -64,6 +65,15 @@ void sldns_key_EVP_unload_gost(void); * \return a DSA * structure with the key material */ DSA *sldns_key_buf2dsa_raw(unsigned char* key, size_t len); +#endif + +/** + * Converts a holding buffer with DSA key material to EVP PKEY in openssl. + * \param[in] key the uncompressed wireformat of the key. + * \param[in] len length of key data + * \return the key or NULL on error. + */ +EVP_PKEY *sldns_key_dsa2pkey_raw(unsigned char* key, size_t len); /** * Converts a holding buffer with key material to EVP PKEY in openssl. @@ -84,6 +94,7 @@ EVP_PKEY* sldns_gost2pkey_raw(unsigned char* key, size_t keylen); */ EVP_PKEY* sldns_ecdsa2pkey_raw(unsigned char* key, size_t keylen, uint8_t algo); +#ifndef HAVE_OSSL_PARAM_BLD_NEW /** * Like sldns_key_buf2rsa, but uses raw buffer. * \param[in] key the uncompressed wireformat of the key. @@ -91,6 +102,15 @@ EVP_PKEY* sldns_ecdsa2pkey_raw(unsigned char* key, size_t keylen, uint8_t algo); * \return a RSA * structure with the key material */ RSA *sldns_key_buf2rsa_raw(unsigned char* key, size_t len); +#endif + +/** + * Converts a holding buffer with RSA key material to EVP PKEY in openssl. + * \param[in] key the uncompressed wireformat of the key. + * \param[in] len length of key data + * \return the key or NULL on error. + */ +EVP_PKEY* sldns_key_rsa2pkey_raw(unsigned char* key, size_t len); /** * Converts a holding buffer with key material to EVP PKEY in openssl. diff --git a/sldns/parse.c b/sldns/parse.c index f4de8602f..491c8f51b 100644 --- a/sldns/parse.c +++ b/sldns/parse.c @@ -149,6 +149,9 @@ sldns_fget_token_l(FILE *f, char *token, const char *delim, size_t limit, int *l if (c != '\0' && c != '\n') { *t++ = c; } + if (c == '\n' && line_nr) { + *line_nr = *line_nr + 1; + } if (c == '\\' && prev_c == '\\') prev_c = 0; else prev_c = c; diff --git a/sldns/parseutil.c b/sldns/parseutil.c index 9f289d359..ba71df55d 100644 --- a/sldns/parseutil.c +++ b/sldns/parseutil.c @@ -790,3 +790,18 @@ int sldns_b64url_pton(char const *src, size_t srcsize, uint8_t *target, } return sldns_b64_pton_base(src, srcsize, target, targsize, 1); } + +int sldns_b64_contains_nonurl(char const *src, size_t srcsize) +{ + const char* s = src; + while(*s && srcsize) { + char d = *s++; + srcsize--; + /* the '+' and the '/' and padding '=' is not allowed in b64 + * url encoding */ + if(d == '+' || d == '/' || d == '=') { + return 1; + } + } + return 0; +} diff --git a/sldns/parseutil.h b/sldns/parseutil.h index 7eb23317f..74d7c7275 100644 --- a/sldns/parseutil.h +++ b/sldns/parseutil.h @@ -102,6 +102,7 @@ size_t sldns_b64_pton_calculate_size(size_t srcsize); int sldns_b64_pton(char const *src, uint8_t *target, size_t targsize); int sldns_b64url_pton(char const *src, size_t srcsize, uint8_t *target, size_t targsize); +int sldns_b64_contains_nonurl(char const *src, size_t srcsize); /** * calculates the size needed to store the result of b32_ntop diff --git a/sldns/rrdef.c b/sldns/rrdef.c index 54051313a..fe5c8e104 100644 --- a/sldns/rrdef.c +++ b/sldns/rrdef.c @@ -153,6 +153,9 @@ static const sldns_rdf_type type_csync_wireformat[] = { static const sldns_rdf_type type_zonemd_wireformat[] = { LDNS_RDF_TYPE_INT32, LDNS_RDF_TYPE_INT8, LDNS_RDF_TYPE_INT8, LDNS_RDF_TYPE_HEX }; +static const sldns_rdf_type type_svcb_wireformat[] = { + LDNS_RDF_TYPE_INT16, LDNS_RDF_TYPE_DNAME +}; /* nsec3 is some vars, followed by same type of data of nsec */ static const sldns_rdf_type type_nsec3_wireformat[] = { /* LDNS_RDF_TYPE_NSEC3_VARS, LDNS_RDF_TYPE_NSEC3_NEXT_OWNER, LDNS_RDF_TYPE_NSEC*/ @@ -377,8 +380,10 @@ static sldns_rr_descriptor rdata_field_descriptors[] = { {LDNS_RR_TYPE_CSYNC, "CSYNC", 3, 3, type_csync_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, /* 63 */ {LDNS_RR_TYPE_ZONEMD, "ZONEMD", 4, 4, type_zonemd_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, -{(enum sldns_enum_rr_type)0, "TYPE64", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, -{(enum sldns_enum_rr_type)0, "TYPE65", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, + /* 64 */ + {LDNS_RR_TYPE_SVCB, "SVCB", 2, 2, type_svcb_wireformat, LDNS_RDF_TYPE_SVCPARAM, LDNS_RR_NO_COMPRESS, 0 }, + /* 65 */ + {LDNS_RR_TYPE_HTTPS, "HTTPS", 2, 2, type_svcb_wireformat, LDNS_RDF_TYPE_SVCPARAM, LDNS_RR_NO_COMPRESS, 0 }, {(enum sldns_enum_rr_type)0, "TYPE66", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, {(enum sldns_enum_rr_type)0, "TYPE67", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, {(enum sldns_enum_rr_type)0, "TYPE68", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, diff --git a/sldns/rrdef.h b/sldns/rrdef.h index ece632c3c..42d5de064 100644 --- a/sldns/rrdef.h +++ b/sldns/rrdef.h @@ -196,6 +196,8 @@ enum sldns_enum_rr_type LDNS_RR_TYPE_OPENPGPKEY = 61, /* RFC 7929 */ LDNS_RR_TYPE_CSYNC = 62, /* RFC 7477 */ LDNS_RR_TYPE_ZONEMD = 63, /* draft-ietf-dnsop-dns-zone-digest-12 */ + LDNS_RR_TYPE_SVCB = 64, /* draft-ietf-dnsop-svcb-https-04 */ + LDNS_RR_TYPE_HTTPS = 65, /* draft-ietf-dnsop-svcb-https-04 */ LDNS_RR_TYPE_SPF = 99, /* RFC 4408 */ @@ -353,8 +355,13 @@ enum sldns_enum_rdf_type /** TSIG extended 16bit error value */ LDNS_RDF_TYPE_TSIGERROR, + /* draft-ietf-dnsop-svcb-https-05: + * each SvcParam consisting of a SvcParamKey=SvcParamValue pair or + * a standalone SvcParamKey */ + LDNS_RDF_TYPE_SVCPARAM, + /* Aliases */ - LDNS_RDF_TYPE_BITMAP = LDNS_RDF_TYPE_NSEC + LDNS_RDF_TYPE_BITMAP = LDNS_RDF_TYPE_NSEC, }; typedef enum sldns_enum_rdf_type sldns_rdf_type; diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 401625728..fbd615cbf 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -29,7 +29,6 @@ #define RET_ERR(e, off) ((int)((e)|((off)<= MAX_NUMBER_OF_SVCPARAMS) + return LDNS_WIREPARSE_ERR_SVCB_TOO_MANY_PARAMS; + } + + /* In draft-ietf-dnsop-svcb-https-06 Section 7: + * + * In wire format, the keys are represented by their numeric + * values in network byte order, concatenated in ascending order. + */ + qsort((void *)svcparams + ,nparams + ,sizeof(uint8_t*) + ,sldns_str2wire_svcparam_key_cmp); + + + /* The code below revolves around sematic errors in the SVCParam set. + * So long as we do not distinguish between running Unbound as a primary + * or as a secondary, we default to secondary behavior and we ignore the + * sematic errors. */ + +#ifdef SVCB_SEMANTIC_ERRORS + { + uint8_t* mandatory = NULL; + /* In draft-ietf-dnsop-svcb-https-06 Section 7: + * + * Keys (...) MUST NOT appear more than once. + * + * If they key has already been seen, we have a duplicate + */ + for(i=0; i < nparams; i++) { + uint16_t key = sldns_read_uint16(svcparams[i]); + if(i + 1 < nparams && key == sldns_read_uint16(svcparams[i+1])) + return LDNS_WIREPARSE_ERR_SVCB_DUPLICATE_KEYS; + if(key == SVCB_KEY_MANDATORY) + mandatory = svcparams[i]; + } + + /* 4. verify that all the SvcParamKeys in mandatory are present */ + if(mandatory) { + /* Divide by sizeof(uint16_t)*/ + uint16_t mandatory_nkeys = sldns_read_uint16(mandatory + 2) / sizeof(uint16_t); + + /* Guaranteed by sldns_str2wire_svcparam_key_value */ + assert(mandatory_nkeys > 0); + + for(i=0; i < mandatory_nkeys; i++) { + uint16_t mandatory_key = sldns_read_uint16( + mandatory + + 2 * sizeof(uint16_t) + + i * sizeof(uint16_t)); + uint8_t found = 0; + size_t j; + + for(j=0; j < nparams; j++) { + if(mandatory_key == sldns_read_uint16(svcparams[j])) { + found = 1; + break; + } + } + + if(!found) + return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_MISSING_PARAM; + } + } + } +#endif + /* Write rdata in correct order */ + for (i = 0; i < nparams; i++) { + uint16_t svcparam_len = sldns_read_uint16(svcparams[i] + 2) + + 2 * sizeof(uint16_t); + + if ((unsigned)(new_rdata_ptr - new_rdata) + svcparam_len > sizeof(new_rdata)) + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; + + memcpy(new_rdata_ptr, svcparams[i], svcparam_len); + new_rdata_ptr += svcparam_len; + } + memcpy(rdata, new_rdata, rdata_len); + return LDNS_WIREPARSE_ERR_OK; +} + /** parse rdata from string into rr buffer(-remainder after dname). */ static int rrinternal_parse_rdata(sldns_buffer* strbuf, char* token, size_t token_len, @@ -712,6 +827,42 @@ rrinternal_parse_rdata(sldns_buffer* strbuf, char* token, size_t token_len, /* write rdata length */ sldns_write_uint16(rr+dname_len+8, (uint16_t)(rr_cur_len-dname_len-10)); *rr_len = rr_cur_len; + /* SVCB/HTTPS handling */ + if (rr_type == LDNS_RR_TYPE_SVCB || rr_type == LDNS_RR_TYPE_HTTPS) { + size_t rdata_len = rr_cur_len - dname_len - 10; + uint8_t *rdata = rr+dname_len + 10; + + /* skip 1st rdata field SvcPriority (uint16_t) */ + if (rdata_len < sizeof(uint16_t)) + return LDNS_WIREPARSE_ERR_OK; + + rdata_len -= sizeof(uint16_t); + rdata += sizeof(uint16_t); + + /* skip 2nd rdata field dname */ + while (rdata_len && *rdata != 0) { + uint8_t label_len; + + if (*rdata & 0xC0) + return LDNS_WIREPARSE_ERR_OK; + + label_len = *rdata + 1; + if (rdata_len < label_len) + return LDNS_WIREPARSE_ERR_OK; + + rdata_len -= label_len; + rdata += label_len; + } + /* The root label is one more character, so smaller + * than 1 + 1 means no Svcparam Keys */ + if (rdata_len < 2 || *rdata != 0) + return LDNS_WIREPARSE_ERR_OK; + + rdata_len -= 1; + rdata += 1; + return sldns_str2wire_check_svcbparams(rdata, rdata_len); + + } return LDNS_WIREPARSE_ERR_OK; } @@ -938,6 +1089,524 @@ int sldns_fp2wire_rr_buf(FILE* in, uint8_t* rr, size_t* len, size_t* dname_len, return LDNS_WIREPARSE_ERR_OK; } +static int +sldns_str2wire_svcparam_key_lookup(const char *key, size_t key_len) +{ + char buf[64]; + char *endptr; + unsigned long int key_value; + + if (key_len >= 4 && key_len <= 8 && !strncmp(key, "key", 3)) { + memcpy(buf, key + 3, key_len - 3); + buf[key_len - 3] = 0; + key_value = strtoul(buf, &endptr, 10); + + if (endptr > buf /* digits seen */ + && *endptr == 0 /* no non-digit chars after digits */ + && key_value <= 65535) /* no overflow */ + return key_value; + + } else switch (key_len) { + case sizeof("mandatory")-1: + if (!strncmp(key, "mandatory", sizeof("mandatory")-1)) + return SVCB_KEY_MANDATORY; + if (!strncmp(key, "echconfig", sizeof("echconfig")-1)) + return SVCB_KEY_ECH; /* allow "echconfig as well as "ech" */ + break; + + case sizeof("alpn")-1: + if (!strncmp(key, "alpn", sizeof("alpn")-1)) + return SVCB_KEY_ALPN; + if (!strncmp(key, "port", sizeof("port")-1)) + return SVCB_KEY_PORT; + break; + + case sizeof("no-default-alpn")-1: + if (!strncmp( key , "no-default-alpn" + , sizeof("no-default-alpn")-1)) + return SVCB_KEY_NO_DEFAULT_ALPN; + break; + + case sizeof("ipv4hint")-1: + if (!strncmp(key, "ipv4hint", sizeof("ipv4hint")-1)) + return SVCB_KEY_IPV4HINT; + if (!strncmp(key, "ipv6hint", sizeof("ipv6hint")-1)) + return SVCB_KEY_IPV6HINT; + break; + + case sizeof("ech")-1: + if (!strncmp(key, "ech", sizeof("ech")-1)) + return SVCB_KEY_ECH; + break; + + default: + break; + } + + /* Although the returned value might be used by the caller, + * the parser has erred, so the zone will not be loaded. + */ + return -1; +} + +static int +sldns_str2wire_svcparam_port(const char* val, uint8_t* rd, size_t* rd_len) +{ + unsigned long int port; + char *endptr; + + if (*rd_len < 6) + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; + + port = strtoul(val, &endptr, 10); + + if (endptr > val /* digits seen */ + && *endptr == 0 /* no non-digit chars after digits */ + && port <= 65535) { /* no overflow */ + + sldns_write_uint16(rd, SVCB_KEY_PORT); + sldns_write_uint16(rd + 2, sizeof(uint16_t)); + sldns_write_uint16(rd + 4, port); + *rd_len = 6; + + return LDNS_WIREPARSE_ERR_OK; + } + + return LDNS_WIREPARSE_ERR_SVCB_PORT_VALUE_SYNTAX; +} + +static int +sldns_str2wire_svcbparam_ipv4hint(const char* val, uint8_t* rd, size_t* rd_len) +{ + size_t count; + char ip_str[INET_ADDRSTRLEN+1]; + char *next_ip_str; + size_t i; + + for (i = 0, count = 1; val[i]; i++) { + if (val[i] == ',') + count += 1; + if (count > SVCB_MAX_COMMA_SEPARATED_VALUES) { + return LDNS_WIREPARSE_ERR_SVCB_IPV4_TOO_MANY_ADDRESSES; + } + } + + if (*rd_len < (LDNS_IP4ADDRLEN * count) + 4) + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; + + /* count is number of comma's in val + 1; so the actual number of IPv4 + * addresses in val + */ + sldns_write_uint16(rd, SVCB_KEY_IPV4HINT); + sldns_write_uint16(rd + 2, LDNS_IP4ADDRLEN * count); + *rd_len = 4; + + while (count) { + if (!(next_ip_str = strchr(val, ','))) { + if (inet_pton(AF_INET, val, rd + *rd_len) != 1) + break; + *rd_len += LDNS_IP4ADDRLEN; + + assert(count == 1); + + } else if (next_ip_str - val >= (int)sizeof(ip_str)) + break; + + else { + memcpy(ip_str, val, next_ip_str - val); + ip_str[next_ip_str - val] = 0; + if (inet_pton(AF_INET, ip_str, rd + *rd_len) != 1) { + break; + } + *rd_len += LDNS_IP4ADDRLEN; + + val = next_ip_str + 1; + } + count--; + } + if (count) /* verify that we parsed all values */ + return LDNS_WIREPARSE_ERR_SYNTAX_IP4; + + return LDNS_WIREPARSE_ERR_OK; +} + +static int +sldns_str2wire_svcbparam_ipv6hint(const char* val, uint8_t* rd, size_t* rd_len) +{ + size_t count; + char ip_str[INET6_ADDRSTRLEN+1]; + char *next_ip_str; + size_t i; + + for (i = 0, count = 1; val[i]; i++) { + if (val[i] == ',') + count += 1; + if (count > SVCB_MAX_COMMA_SEPARATED_VALUES) { + return LDNS_WIREPARSE_ERR_SVCB_IPV6_TOO_MANY_ADDRESSES; + } + } + + if (*rd_len < (LDNS_IP6ADDRLEN * count) + 4) + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; + + /* count is number of comma's in val + 1; so the actual number of IPv6 + * addresses in val + */ + sldns_write_uint16(rd, SVCB_KEY_IPV6HINT); + sldns_write_uint16(rd + 2, LDNS_IP6ADDRLEN * count); + *rd_len = 4; + + while (count) { + if (!(next_ip_str = strchr(val, ','))) { + if (inet_pton(AF_INET6, val, rd + *rd_len) != 1) + break; + *rd_len += LDNS_IP6ADDRLEN; + + assert(count == 1); + + } else if (next_ip_str - val >= (int)sizeof(ip_str)) + break; + + else { + memcpy(ip_str, val, next_ip_str - val); + ip_str[next_ip_str - val] = 0; + if (inet_pton(AF_INET6, ip_str, rd + *rd_len) != 1) { + break; + } + *rd_len += LDNS_IP6ADDRLEN; + + val = next_ip_str + 1; + } + count--; + } + if (count) /* verify that we parsed all values */ + return LDNS_WIREPARSE_ERR_SYNTAX_IP6; + + return LDNS_WIREPARSE_ERR_OK; +} + +/* compare function used for sorting uint16_t's */ +static int +sldns_network_uint16_cmp(const void *a, const void *b) +{ + return ((int)sldns_read_uint16(a)) - ((int)sldns_read_uint16(b)); +} + +static int +sldns_str2wire_svcbparam_mandatory(const char* val, uint8_t* rd, size_t* rd_len) +{ + size_t i, count, val_len; + char* next_key; + + val_len = strlen(val); + + for (i = 0, count = 1; val[i]; i++) { + if (val[i] == ',') + count += 1; + if (count > SVCB_MAX_COMMA_SEPARATED_VALUES) { + return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_TOO_MANY_KEYS; + } + } + if (sizeof(uint16_t) * (count + 2) > *rd_len) + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; + + sldns_write_uint16(rd, SVCB_KEY_MANDATORY); + sldns_write_uint16(rd + 2, sizeof(uint16_t) * count); + *rd_len = 4; + + while (1) { + int svcparamkey; + + if (!(next_key = strchr(val, ','))) { + svcparamkey = sldns_str2wire_svcparam_key_lookup(val, val_len); + + if (svcparamkey < 0) { + return LDNS_WIREPARSE_ERR_SVCB_UNKNOWN_KEY; + } + + sldns_write_uint16(rd + *rd_len, svcparamkey); + *rd_len += 2; + break; + } else { + svcparamkey = sldns_str2wire_svcparam_key_lookup(val, next_key - val); + + if (svcparamkey < 0) { + return LDNS_WIREPARSE_ERR_SVCB_UNKNOWN_KEY; + } + + sldns_write_uint16(rd + *rd_len, + svcparamkey); + *rd_len += 2; + } + + val_len -= next_key - val + 1; + val = next_key + 1; /* skip the comma */ + } + + /* In draft-ietf-dnsop-svcb-https-06 Section 7: + * + * "In wire format, the keys are represented by their numeric + * values in network byte order, concatenated in ascending order." + */ + qsort((void *)(rd + 4), count, sizeof(uint16_t), sldns_network_uint16_cmp); + + /* The code below revolves around sematic errors in the SVCParam set. + * So long as we do not distinguish between running Unbound as a primary + * or as a secondary, we default to secondary behavior and we ignore the + * semantic errors. */ +#ifdef SVCB_SEMANTIC_ERRORS + /* In draft-ietf-dnsop-svcb-https-06 Section 8 + * automatically mandatory MUST NOT appear in its own value-list + */ + if (sldns_read_uint16(rd + 4) == SVCB_KEY_MANDATORY) + return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_IN_MANDATORY; + + /* Guarantee key uniqueness. After the sort we only need to + * compare neighbouring keys */ + if (count > 1) { + for (i = 0; i < count - 1; i++) { + uint8_t* current_pos = (rd + 4 + (sizeof(uint16_t) * i)); + uint16_t key = sldns_read_uint16(current_pos); + + if (key == sldns_read_uint16(current_pos + 2)) { + return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_DUPLICATE_KEY; + } + } + } +#endif + return LDNS_WIREPARSE_ERR_OK; +} + +static int +sldns_str2wire_svcbparam_ech_value(const char* val, uint8_t* rd, size_t* rd_len) +{ + uint8_t buffer[LDNS_MAX_RDFLEN]; + int wire_len; + + /* single 0 represents empty buffer */ + if(strcmp(val, "0") == 0) { + if (*rd_len < 4) + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; + sldns_write_uint16(rd, SVCB_KEY_ECH); + sldns_write_uint16(rd + 2, 0); + + return LDNS_WIREPARSE_ERR_OK; + } + + wire_len = sldns_b64_pton(val, buffer, LDNS_MAX_RDFLEN); + + if (wire_len <= 0) { + return LDNS_WIREPARSE_ERR_SYNTAX_B64; + } else if ((unsigned)wire_len + 4 > *rd_len) { + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; + } else { + sldns_write_uint16(rd, SVCB_KEY_ECH); + sldns_write_uint16(rd + 2, wire_len); + memcpy(rd + 4, buffer, wire_len); + *rd_len = 4 + wire_len; + + return LDNS_WIREPARSE_ERR_OK; + } +} + +static const char* +sldns_str2wire_svcbparam_parse_next_unescaped_comma(const char *val) +{ + while (*val) { + /* Only return when the comma is not escaped*/ + if (*val == '\\'){ + ++val; + if (!*val) + break; + } else if (*val == ',') + return val; + + val++; + } + return NULL; +} + +/* The source is already properly unescaped, this double unescaping is purely to allow for + * comma's in comma seperated alpn lists. + * + * In draft-ietf-dnsop-svcb-https-06 Section 7: + * To enable simpler parsing, this SvcParamValue MUST NOT contain escape sequences. + */ +static size_t +sldns_str2wire_svcbparam_parse_copy_unescaped(uint8_t *dst, + const char *src, size_t len) +{ + uint8_t *orig_dst = dst; + + while (len) { + if (*src == '\\') { + src++; + len--; + if (!len) + break; + } + *dst++ = *src++; + len--; + } + return (size_t)(dst - orig_dst); +} + +static int +sldns_str2wire_svcbparam_alpn_value(const char* val, + uint8_t* rd, size_t* rd_len) +{ + uint8_t unescaped_dst[LDNS_MAX_RDFLEN]; + uint8_t *dst = unescaped_dst; + const char *next_str; + size_t str_len; + size_t dst_len; + size_t val_len; + + val_len = strlen(val); + + if (val_len > sizeof(unescaped_dst)) { + return LDNS_WIREPARSE_ERR_SVCB_ALPN_KEY_TOO_LARGE; + } + while (val_len) { + size_t key_len; + + str_len = (next_str = sldns_str2wire_svcbparam_parse_next_unescaped_comma(val)) + ? (size_t)(next_str - val) : val_len; + + if (str_len > 255) { + return LDNS_WIREPARSE_ERR_SVCB_ALPN_KEY_TOO_LARGE; + } + + key_len = sldns_str2wire_svcbparam_parse_copy_unescaped(dst + 1, val, str_len); + *dst++ = key_len; + dst += key_len; + + if (!next_str) + break; + + /* skip the comma in the next iteration */ + val_len -= next_str - val + 1; + val = next_str + 1; + } + dst_len = dst - unescaped_dst; + if (*rd_len < 4 + dst_len) + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; + sldns_write_uint16(rd, SVCB_KEY_ALPN); + sldns_write_uint16(rd + 2, dst_len); + memcpy(rd + 4, unescaped_dst, dst_len); + *rd_len = 4 + dst_len; + + return LDNS_WIREPARSE_ERR_OK; +} + +static int +sldns_str2wire_svcparam_value(const char *key, size_t key_len, + const char *val, uint8_t* rd, size_t* rd_len) +{ + size_t str_len; + int svcparamkey = sldns_str2wire_svcparam_key_lookup(key, key_len); + + if (svcparamkey < 0) { + return LDNS_WIREPARSE_ERR_SVCB_UNKNOWN_KEY; + } + + /* key without value */ + if (val == NULL) { + switch (svcparamkey) { +#ifdef SVCB_SEMANTIC_ERRORS + case SVCB_KEY_MANDATORY: + case SVCB_KEY_ALPN: + case SVCB_KEY_PORT: + case SVCB_KEY_IPV4HINT: + case SVCB_KEY_IPV6HINT: + return LDNS_WIREPARSE_ERR_SVCB_MISSING_PARAM; +#endif + default: + if (*rd_len < 4) + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; + sldns_write_uint16(rd, svcparamkey); + sldns_write_uint16(rd + 2, 0); + *rd_len = 4; + + return LDNS_WIREPARSE_ERR_OK; + } + } + + /* value is non-empty */ + switch (svcparamkey) { + case SVCB_KEY_PORT: + return sldns_str2wire_svcparam_port(val, rd, rd_len); + case SVCB_KEY_IPV4HINT: + return sldns_str2wire_svcbparam_ipv4hint(val, rd, rd_len); + case SVCB_KEY_IPV6HINT: + return sldns_str2wire_svcbparam_ipv6hint(val, rd, rd_len); + case SVCB_KEY_MANDATORY: + return sldns_str2wire_svcbparam_mandatory(val, rd, rd_len); +#ifdef SVCB_SEMANTIC_ERRORS + case SVCB_KEY_NO_DEFAULT_ALPN: + return LDNS_WIREPARSE_ERR_SVCB_NO_DEFAULT_ALPN_VALUE; +#endif + case SVCB_KEY_ECH: + return sldns_str2wire_svcbparam_ech_value(val, rd, rd_len); + case SVCB_KEY_ALPN: + return sldns_str2wire_svcbparam_alpn_value(val, rd, rd_len); + default: + str_len = strlen(val); + if (*rd_len < 4 + str_len) + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; + sldns_write_uint16(rd, svcparamkey); + sldns_write_uint16(rd + 2, str_len); + memcpy(rd + 4, val, str_len); + *rd_len = 4 + str_len; + + return LDNS_WIREPARSE_ERR_OK; + } + + return LDNS_WIREPARSE_ERR_GENERAL; +} + +int sldns_str2wire_svcparam_buf(const char* str, uint8_t* rd, size_t* rd_len) +{ + const char* eq_pos; + char unescaped_val[LDNS_MAX_RDFLEN]; + char* val_out = unescaped_val; + const char* val_in; + + eq_pos = strchr(str, '='); + + /* case: key=value */ + if (eq_pos != NULL && eq_pos[1]) { + val_in = eq_pos + 1; + + /* unescape characters and "" blocks */ + if (*val_in == '"') { + val_in++; + while (*val_in != '"' + && (unsigned)(val_out - unescaped_val + 1) < sizeof(unescaped_val) + && sldns_parse_char( (uint8_t*) val_out, &val_in)) { + val_out++; + } + } else { + while ((unsigned)(val_out - unescaped_val + 1) < sizeof(unescaped_val) + && sldns_parse_char( (uint8_t*) val_out, &val_in)) { + val_out++; + } + } + *val_out = 0; + + return sldns_str2wire_svcparam_value(str, eq_pos - str, + unescaped_val[0] ? unescaped_val : NULL, rd, rd_len); + } + /* case: key= */ + else if (eq_pos != NULL && !(eq_pos[1])) { + return sldns_str2wire_svcparam_value(str, eq_pos - str, NULL, rd, rd_len); + } + /* case: key */ + else { + return sldns_str2wire_svcparam_value(str, strlen(str), NULL, rd, rd_len); + } +} + int sldns_str2wire_rdf_buf(const char* str, uint8_t* rd, size_t* len, sldns_rdf_type rdftype) { @@ -1010,6 +1679,8 @@ int sldns_str2wire_rdf_buf(const char* str, uint8_t* rd, size_t* len, return sldns_str2wire_hip_buf(str, rd, len); case LDNS_RDF_TYPE_INT16_DATA: return sldns_str2wire_int16_data_buf(str, rd, len); + case LDNS_RDF_TYPE_SVCPARAM: + return sldns_str2wire_svcparam_buf(str, rd, len); case LDNS_RDF_TYPE_UNKNOWN: case LDNS_RDF_TYPE_SERVICE: return LDNS_WIREPARSE_ERR_NOT_IMPL; diff --git a/sldns/str2wire.h b/sldns/str2wire.h index 70070e4f5..0c3164989 100644 --- a/sldns/str2wire.h +++ b/sldns/str2wire.h @@ -23,10 +23,27 @@ extern "C" { #endif struct sldns_struct_lookup_table; +#define LDNS_IP4ADDRLEN (32/8) +#define LDNS_IP6ADDRLEN (128/8) + /** buffer to read an RR, cannot be larger than 64K because of packet size */ #define LDNS_RR_BUF_SIZE 65535 /* bytes */ #define LDNS_DEFAULT_TTL 3600 +/* SVCB keys currently defined in draft-ietf-dnsop-svcb-https */ +#define SVCB_KEY_MANDATORY 0 +#define SVCB_KEY_ALPN 1 +#define SVCB_KEY_NO_DEFAULT_ALPN 2 +#define SVCB_KEY_PORT 3 +#define SVCB_KEY_IPV4HINT 4 +#define SVCB_KEY_ECH 5 +#define SVCB_KEY_IPV6HINT 6 +#define SVCPARAMKEY_COUNT 7 + +#define MAX_NUMBER_OF_SVCPARAMS 64 + +#define SVCB_MAX_COMMA_SEPARATED_VALUES 1000 + /* * To convert class and type to string see * sldns_get_rr_class_by_name(str) @@ -204,6 +221,20 @@ uint8_t* sldns_wirerr_get_rdatawl(uint8_t* rr, size_t len, size_t dname_len); #define LDNS_WIREPARSE_ERR_SYNTAX_INTEGER_OVERFLOW 370 #define LDNS_WIREPARSE_ERR_INCLUDE 371 #define LDNS_WIREPARSE_ERR_PARENTHESIS 372 +#define LDNS_WIREPARSE_ERR_SVCB_UNKNOWN_KEY 373 +#define LDNS_WIREPARSE_ERR_SVCB_MISSING_PARAM 374 +#define LDNS_WIREPARSE_ERR_SVCB_TOO_MANY_PARAMS 375 +#define LDNS_WIREPARSE_ERR_SVCB_DUPLICATE_KEYS 376 +#define LDNS_WIREPARSE_ERR_SVCB_MANDATORY_TOO_MANY_KEYS 377 +#define LDNS_WIREPARSE_ERR_SVCB_MANDATORY_MISSING_PARAM 378 +#define LDNS_WIREPARSE_ERR_SVCB_MANDATORY_DUPLICATE_KEY 379 +#define LDNS_WIREPARSE_ERR_SVCB_MANDATORY_IN_MANDATORY 380 +#define LDNS_WIREPARSE_ERR_SVCB_PORT_VALUE_SYNTAX 381 +#define LDNS_WIREPARSE_ERR_SVCB_IPV4_TOO_MANY_ADDRESSES 382 +#define LDNS_WIREPARSE_ERR_SVCB_IPV6_TOO_MANY_ADDRESSES 383 +#define LDNS_WIREPARSE_ERR_SVCB_ALPN_KEY_TOO_LARGE 384 +#define LDNS_WIREPARSE_ERR_SVCB_NO_DEFAULT_ALPN_VALUE 385 +#define LDNS_WIREPARSE_ERR_SVCPARAM_BROKEN_RDATA 386 /** * Get reference to a constant string for the (parse) error. diff --git a/sldns/wire2str.c b/sldns/wire2str.c index d0d1632d4..6a177ec0b 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -149,6 +149,30 @@ static sldns_lookup_table sldns_wireparse_errors_data[] = { { LDNS_WIREPARSE_ERR_SYNTAX_INTEGER_OVERFLOW, "Syntax error, integer overflow" }, { LDNS_WIREPARSE_ERR_INCLUDE, "$INCLUDE directive was seen in the zone" }, { LDNS_WIREPARSE_ERR_PARENTHESIS, "Parse error, parenthesis mismatch" }, + { LDNS_WIREPARSE_ERR_SVCB_UNKNOWN_KEY, "Unknown SvcParamKey"}, + { LDNS_WIREPARSE_ERR_SVCB_MISSING_PARAM, "SvcParam is missing a SvcParamValue"}, + { LDNS_WIREPARSE_ERR_SVCB_DUPLICATE_KEYS, "Duplicate SVCB key found"}, + { LDNS_WIREPARSE_ERR_SVCB_MANDATORY_TOO_MANY_KEYS, "Too many keys in mandatory" }, + { LDNS_WIREPARSE_ERR_SVCB_TOO_MANY_PARAMS, + "Too many SvcParams. Unbound only allows 63 entries" }, + { LDNS_WIREPARSE_ERR_SVCB_MANDATORY_MISSING_PARAM, + "Mandatory SvcParamKey is missing"}, + { LDNS_WIREPARSE_ERR_SVCB_MANDATORY_DUPLICATE_KEY, + "Keys in SvcParam mandatory MUST be unique" }, + { LDNS_WIREPARSE_ERR_SVCB_MANDATORY_IN_MANDATORY, + "mandatory MUST not be included as mandatory parameter" }, + { LDNS_WIREPARSE_ERR_SVCB_PORT_VALUE_SYNTAX, + "Could not parse port SvcParamValue" }, + { LDNS_WIREPARSE_ERR_SVCB_IPV4_TOO_MANY_ADDRESSES, + "Too many IPv4 addresses in ipv4hint" }, + { LDNS_WIREPARSE_ERR_SVCB_IPV6_TOO_MANY_ADDRESSES, + "Too many IPv6 addresses in ipv6hint" }, + { LDNS_WIREPARSE_ERR_SVCB_ALPN_KEY_TOO_LARGE, + "Alpn strings need to be smaller than 255 chars"}, + { LDNS_WIREPARSE_ERR_SVCB_NO_DEFAULT_ALPN_VALUE, + "No-default-alpn should not have a value" }, + { LDNS_WIREPARSE_ERR_SVCPARAM_BROKEN_RDATA, + "General SVCParam error" }, { 0, NULL } }; sldns_lookup_table* sldns_wireparse_errors = sldns_wireparse_errors_data; @@ -196,6 +220,12 @@ static sldns_lookup_table sldns_tsig_errors_data[] = { }; sldns_lookup_table* sldns_tsig_errors = sldns_tsig_errors_data; +/* draft-ietf-dnsop-svcb-https-06: 6. Initial SvcParamKeys */ +const char *svcparamkey_strs[] = { + "mandatory", "alpn", "no-default-alpn", "port", + "ipv4hint", "ech", "ipv6hint" +}; + char* sldns_wire2str_pkt(uint8_t* data, size_t len) { size_t slen = (size_t)sldns_wire2str_pkt_buf(data, len, NULL, 0); @@ -940,6 +970,253 @@ int sldns_wire2str_ttl_scan(uint8_t** d, size_t* dlen, char** s, size_t* slen) return sldns_str_print(s, slen, "%u", (unsigned)ttl); } +static int +sldns_print_svcparamkey(char** s, size_t* slen, uint16_t svcparamkey) +{ + if (svcparamkey < SVCPARAMKEY_COUNT) { + return sldns_str_print(s, slen, "%s", svcparamkey_strs[svcparamkey]); + } + else { + return sldns_str_print(s, slen, "key%d", (int)svcparamkey); + } +} + +static int sldns_wire2str_svcparam_port2str(char** s, + size_t* slen, uint16_t data_len, uint8_t* data) +{ + int w = 0; + + if (data_len != 2) + return -1; /* wireformat error, a short is 2 bytes */ + w = sldns_str_print(s, slen, "=%d", (int)sldns_read_uint16(data)); + + return w; +} + +static int sldns_wire2str_svcparam_ipv4hint2str(char** s, + size_t* slen, uint16_t data_len, uint8_t* data) +{ + char ip_str[INET_ADDRSTRLEN + 1]; + + int w = 0; + + assert(data_len > 0); + + if ((data_len % LDNS_IP4ADDRLEN) == 0) { + if (inet_ntop(AF_INET, data, ip_str, sizeof(ip_str)) == NULL) + return -1; /* wireformat error, incorrect size or inet family */ + + w += sldns_str_print(s, slen, "=%s", ip_str); + data += LDNS_IP4ADDRLEN; + + while ((data_len -= LDNS_IP4ADDRLEN) > 0) { + if (inet_ntop(AF_INET, data, ip_str, sizeof(ip_str)) == NULL) + return -1; /* wireformat error, incorrect size or inet family */ + + w += sldns_str_print(s, slen, ",%s", ip_str); + data += LDNS_IP4ADDRLEN; + } + } else + return -1; + + return w; +} + +static int sldns_wire2str_svcparam_ipv6hint2str(char** s, + size_t* slen, uint16_t data_len, uint8_t* data) +{ + char ip_str[INET6_ADDRSTRLEN + 1]; + + int w = 0; + + assert(data_len > 0); + + if ((data_len % LDNS_IP6ADDRLEN) == 0) { + if (inet_ntop(AF_INET6, data, ip_str, sizeof(ip_str)) == NULL) + return -1; /* wireformat error, incorrect size or inet family */ + + w += sldns_str_print(s, slen, "=%s", ip_str); + data += LDNS_IP6ADDRLEN; + + while ((data_len -= LDNS_IP6ADDRLEN) > 0) { + if (inet_ntop(AF_INET6, data, ip_str, sizeof(ip_str)) == NULL) + return -1; /* wireformat error, incorrect size or inet family */ + + w += sldns_str_print(s, slen, ",%s", ip_str); + data += LDNS_IP6ADDRLEN; + } + } else + return -1; + + return w; +} + +static int sldns_wire2str_svcparam_mandatory2str(char** s, + size_t* slen, uint16_t data_len, uint8_t* data) +{ + int w = 0; + + assert(data_len > 0); + + if (data_len % sizeof(uint16_t)) + return -1; // wireformat error, data_len must be multiple of shorts + w += sldns_str_print(s, slen, "="); + w += sldns_print_svcparamkey(s, slen, sldns_read_uint16(data)); + data += 2; + + while ((data_len -= sizeof(uint16_t))) { + w += sldns_str_print(s, slen, ","); + w += sldns_print_svcparamkey(s, slen, sldns_read_uint16(data)); + data += 2; + } + + return w; +} + +static int sldns_wire2str_svcparam_alpn2str(char** s, + size_t* slen, uint16_t data_len, uint8_t* data) +{ + uint8_t *dp = (void *)data; + int w = 0; + + assert(data_len > 0); /* Guaranteed by sldns_wire2str_svcparam_scan */ + + w += sldns_str_print(s, slen, "=\""); + while (data_len) { + /* alpn is list of length byte (str_len) followed by a string of that size */ + uint8_t i, str_len = *dp++; + + if (str_len > --data_len) + return -1; + + for (i = 0; i < str_len; i++) { + if (dp[i] == '"' || dp[i] == '\\') + w += sldns_str_print(s, slen, "\\\\\\%c", dp[i]); + + else if (dp[i] == ',') + w += sldns_str_print(s, slen, "\\\\%c", dp[i]); + + else if (!isprint(dp[i])) + w += sldns_str_print(s, slen, "\\%03u", (unsigned) dp[i]); + + else + w += sldns_str_print(s, slen, "%c", dp[i]); + } + dp += str_len; + if ((data_len -= str_len)) + w += sldns_str_print(s, slen, "%s", ","); + } + w += sldns_str_print(s, slen, "\""); + + return w; +} + +static int sldns_wire2str_svcparam_ech2str(char** s, + size_t* slen, uint16_t data_len, uint8_t* data) +{ + int size; + int w = 0; + + assert(data_len > 0); /* Guaranteed by sldns_wire2str_svcparam_scan */ + + w += sldns_str_print(s, slen, "=\""); + + if ((size = sldns_b64_ntop(data, data_len, *s, *slen)) < 0) + return -1; + + (*s) += size; + (*slen) -= size; + + w += sldns_str_print(s, slen, "\""); + + return w + size; +} + +int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* slen) +{ + uint8_t ch; + uint16_t svcparamkey, data_len; + int written_chars = 0; + int r, i; + + /* verify that we have enough data to read svcparamkey and data_len */ + if(*dlen < 4) + return -1; + + svcparamkey = sldns_read_uint16(*d); + data_len = sldns_read_uint16(*d+2); + *d += 4; + *dlen -= 4; + + /* verify that we have data_len data */ + if (data_len > *dlen) + return -1; + + written_chars += sldns_print_svcparamkey(s, slen, svcparamkey); + if (!data_len) { + + /* Some SvcParams MUST have values */ + switch (svcparamkey) { + case SVCB_KEY_ALPN: + case SVCB_KEY_PORT: + case SVCB_KEY_IPV4HINT: + case SVCB_KEY_IPV6HINT: + case SVCB_KEY_MANDATORY: + return -1; + default: + return written_chars; + } + } + + switch (svcparamkey) { + case SVCB_KEY_PORT: + r = sldns_wire2str_svcparam_port2str(s, slen, data_len, *d); + break; + case SVCB_KEY_IPV4HINT: + r = sldns_wire2str_svcparam_ipv4hint2str(s, slen, data_len, *d); + break; + case SVCB_KEY_IPV6HINT: + r = sldns_wire2str_svcparam_ipv6hint2str(s, slen, data_len, *d); + break; + case SVCB_KEY_MANDATORY: + r = sldns_wire2str_svcparam_mandatory2str(s, slen, data_len, *d); + break; + case SVCB_KEY_NO_DEFAULT_ALPN: + return -1; /* wireformat error, should not have a value */ + case SVCB_KEY_ALPN: + r = sldns_wire2str_svcparam_alpn2str(s, slen, data_len, *d); + break; + case SVCB_KEY_ECH: + r = sldns_wire2str_svcparam_ech2str(s, slen, data_len, *d); + break; + default: + r = sldns_str_print(s, slen, "=\""); + + for (i = 0; i < data_len; i++) { + ch = (*d)[i]; + + if (ch == '"' || ch == '\\') + r += sldns_str_print(s, slen, "\\%c", ch); + + else if (!isprint(ch)) + r += sldns_str_print(s, slen, "\\%03u", (unsigned) ch); + + else + r += sldns_str_print(s, slen, "%c", ch); + + } + r += sldns_str_print(s, slen, "\""); + break; + } + if (r <= 0) + return -1; /* wireformat error */ + + written_chars += r; + *d += data_len; + *dlen -= data_len; + return written_chars; +} + int sldns_wire2str_rdf_scan(uint8_t** d, size_t* dlen, char** s, size_t* slen, int rdftype, uint8_t* pkt, size_t pktlen, int* comprloop) { @@ -1017,6 +1294,8 @@ int sldns_wire2str_rdf_scan(uint8_t** d, size_t* dlen, char** s, size_t* slen, return sldns_wire2str_tag_scan(d, dlen, s, slen); case LDNS_RDF_TYPE_LONG_STR: return sldns_wire2str_long_str_scan(d, dlen, s, slen); + case LDNS_RDF_TYPE_SVCPARAM: + return sldns_wire2str_svcparam_scan(d, dlen, s, slen); case LDNS_RDF_TYPE_TSIGERROR: return sldns_wire2str_tsigerror_scan(d, dlen, s, slen); } diff --git a/sldns/wire2str.h b/sldns/wire2str.h index 0167fe7c1..b1ad459e3 100644 --- a/sldns/wire2str.h +++ b/sldns/wire2str.h @@ -494,6 +494,18 @@ int sldns_wire2str_opcode_buf(int opcode, char* str, size_t len); int sldns_wire2str_dname_buf(uint8_t* dname, size_t dname_len, char* str, size_t len); +/** + * Convert wire SVCB to a string with user buffer. + * @param d: the SVCB data in uncompressed wireformat. + * @param dlen: length of the SVCB data. + * @param s: the string to write to. + * @param slen: length of string. + * @return the number of characters for this element, excluding zerobyte. + * Is larger or equal than str_len if output was truncated. + */ +int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, + size_t* slen); + /** * Scan wireformat rdf field to string, with user buffers. * It shifts the arguments to move along (see sldns_wire2str_pkt_scan). diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index af72f2a4e..a3df25795 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -499,9 +499,7 @@ static void ssl_path_err(const char* s, const char *path) { unsigned long err; err = ERR_peek_error(); - if (ERR_GET_LIB(err) == ERR_LIB_SYS && - (ERR_GET_FUNC(err) == SYS_F_FOPEN || - ERR_GET_FUNC(err) == SYS_F_FREAD) ) { + if (ERR_GET_LIB(err) == ERR_LIB_SYS) { fprintf(stderr, "error: %s\n%s: %s\n", s, path, ERR_reason_error_string(err)); exit(1); diff --git a/testcode/delayer.c b/testcode/delayer.c index 54175dbe3..e915961f5 100644 --- a/testcode/delayer.c +++ b/testcode/delayer.c @@ -347,7 +347,11 @@ static volatile int do_quit = 0; /** signal handler for user quit */ static RETSIGTYPE delayer_sigh(int sig) { - printf("exit on signal %d\n", sig); + char str[] = "exit on signal \n"; + str[15] = '0' + (sig/10)%10; + str[16] = '0' + sig%10; + /* simple cast to void will not silence Wunused-result */ + (void)!write(STDOUT_FILENO, str, strlen(str)); do_quit = 1; } diff --git a/testcode/dohclient.c b/testcode/dohclient.c index 0dc039f26..93d84a835 100644 --- a/testcode/dohclient.c +++ b/testcode/dohclient.c @@ -423,6 +423,7 @@ http2_session_create() if(nghttp2_session_callbacks_new(&callbacks) == NGHTTP2_ERR_NOMEM) { log_err("failed to initialize nghttp2 callback"); + free(h2_session); return NULL; } nghttp2_session_callbacks_set_recv_callback(callbacks, http2_recv_cb); diff --git a/testcode/fake_event.c b/testcode/fake_event.c index 125355f05..5f81b9eb8 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -451,6 +451,8 @@ fake_front_query(struct replay_runtime* runtime, struct replay_moment *todo) struct comm_reply repinfo; memset(&repinfo, 0, sizeof(repinfo)); repinfo.c = (struct comm_point*)calloc(1, sizeof(struct comm_point)); + if(!repinfo.c) + fatal_exit("out of memory in fake_front_query"); repinfo.addrlen = (socklen_t)sizeof(struct sockaddr_in); if(todo->addrlen != 0) { repinfo.addrlen = todo->addrlen; @@ -597,7 +599,7 @@ autotrust_check(struct replay_runtime* runtime, struct replay_moment* mom) log_err("should be: %s", p->str); fatal_exit("autotrust_check failed"); } - if(line[0]) line[strlen(line)-1] = 0; /* remove newline */ + strip_end_white(line); expanded = macro_process(runtime->vars, runtime, p->str); if(!expanded) fatal_exit("could not expand macro line %d", lineno); @@ -650,7 +652,7 @@ tempfile_check(struct replay_runtime* runtime, struct replay_moment* mom) log_err("should be: %s", p->str); fatal_exit("tempfile_check failed"); } - if(line[0]) line[strlen(line)-1] = 0; /* remove newline */ + strip_end_white(line); expanded = macro_process(runtime->vars, runtime, p->str); if(!expanded) fatal_exit("could not expand macro line %d", lineno); @@ -909,6 +911,8 @@ comm_base_create(int ATTR_UNUSED(sigs)) /* we return the runtime structure instead. */ struct replay_runtime* runtime = (struct replay_runtime*) calloc(1, sizeof(struct replay_runtime)); + if(!runtime) + fatal_exit("out of memory in fake_event.c:comm_base_create"); runtime->scenario = saved_scenario; runtime->vars = macro_store_create(); if(!runtime->vars) fatal_exit("out of memory"); @@ -1534,6 +1538,8 @@ struct comm_timer* comm_timer_create(struct comm_base* base, { struct replay_runtime* runtime = (struct replay_runtime*)base; struct fake_timer* t = (struct fake_timer*)calloc(1, sizeof(*t)); + if(!t) + fatal_exit("out of memory in fake_event.c:comm_timer_create"); t->cb = cb; t->cb_arg = cb_arg; fptr_ok(fptr_whitelist_comm_timer(t->cb)); /* check in advance */ @@ -1711,7 +1717,7 @@ struct comm_point* outnet_comm_point_for_tcp(struct outside_network* outnet, addr_to_str((struct sockaddr_storage*)to_addr, to_addrlen, addrbuf, sizeof(addrbuf)); if(verbosity >= VERB_ALGO) { - if(buf[0] != 0) buf[strlen(buf)-1] = 0; /* del newline*/ + strip_end_white(buf); log_info("tcp to %s: %s", addrbuf, buf); } log_assert(sldns_buffer_limit(query)-LDNS_HEADER_SIZE >= 2); @@ -1743,7 +1749,7 @@ struct comm_point* outnet_comm_point_for_tcp(struct outside_network* outnet, struct comm_point* outnet_comm_point_for_http(struct outside_network* outnet, comm_point_callback_type* cb, void* cb_arg, struct sockaddr_storage* to_addr, socklen_t to_addrlen, int timeout, - int ssl, char* host, char* path) + int ssl, char* host, char* path, struct config_file* cfg) { struct replay_runtime* runtime = (struct replay_runtime*) outnet->base; @@ -1765,6 +1771,7 @@ struct comm_point* outnet_comm_point_for_http(struct outside_network* outnet, (void)ssl; (void)host; (void)path; + (void)cfg; /* handle http comm point and return contents from test script */ return (struct comm_point*)fc; @@ -1801,7 +1808,7 @@ int comm_point_send_udp_msg(struct comm_point *c, sldns_buffer* packet, addr_to_str((struct sockaddr_storage*)addr, addrlen, addrbuf, sizeof(addrbuf)); if(verbosity >= VERB_ALGO) { - if(buf[0] != 0) buf[strlen(buf)-1] = 0; /* del newline*/ + strip_end_white(buf); log_info("udp to %s: %s", addrbuf, buf); } log_assert(sldns_buffer_limit(packet)-LDNS_HEADER_SIZE >= 2); diff --git a/testcode/petal.c b/testcode/petal.c index 123684aab..a1a376155 100644 --- a/testcode/petal.c +++ b/testcode/petal.c @@ -238,6 +238,9 @@ setup_ctx(char* key, char* cert) (void)SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2); #endif (void)SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv3); +#ifdef HAVE_SSL_CTX_SET_SECURITY_LEVEL + SSL_CTX_set_security_level(ctx, 0); /* for keys in tests */ +#endif if(!SSL_CTX_use_certificate_chain_file(ctx, cert)) print_exit("cannot read cert"); if(!SSL_CTX_use_PrivateKey_file(ctx, key, SSL_FILETYPE_PEM)) diff --git a/testcode/readzone.c b/testcode/readzone.c new file mode 100644 index 000000000..94511e577 --- /dev/null +++ b/testcode/readzone.c @@ -0,0 +1,158 @@ +/* + * testcode/readzone.c - readzone tool reads zonefiles + * + * Copyright (c) 2021, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ +/** + * \file + * Command to read and echo a zonefile. + */ + +#include "config.h" +#include +#include +#include +#include +#include + +#include +#include "sldns/str2wire.h" +#include "sldns/wire2str.h" + +int print_usage(FILE *out, const char *progname) +{ + fprintf(out, "usage: %s [ -u ] []\n", progname); + fprintf(out, "\t-u\tprint in unknown type (RFC3597) format\n"); + return out == stdout ? EXIT_SUCCESS : EXIT_FAILURE; +} + +int main(int argc, char *const *argv) +{ + char *progname = argv[0]; + uint8_t rr[LDNS_RR_BUF_SIZE]; + char *str = malloc(1024 * 1024); + size_t str_len = sizeof(str); + struct sldns_file_parse_state state; + FILE *in = NULL; + int s = -1; + int opt; + int print_in_unknown_type_format = 0; + + while ((opt = getopt(argc, argv, "hu")) != -1) { + switch (opt) { + case 'h': + free(str); + return print_usage(stdout, progname); + case 'u': + print_in_unknown_type_format = 1; + break; + default: + free(str); + return print_usage(stderr, progname); + } + } + argc -= optind; + argv += optind; + + memset(&state, 0, sizeof(state)); + state.default_ttl = 3600; + state.lineno = 1; + if (argc == 2) { + state.origin_len = sizeof(state.origin); + s = sldns_str2wire_dname_buf(argv[1], state.origin + , &state.origin_len); + if (s) { + fprintf(stderr, "Error parsing origin: %s\n" + , sldns_get_errorstr_parse(s)); + free(str); + return EXIT_FAILURE; + } + s = -1; + } + if (!str) + fprintf(stderr, "Memory allocation error: %s\n" + , strerror(errno)); + + else if (argc != 1 && argc != 2) { + free(str); + return print_usage(stderr, progname); + } + + else if (!(in = fopen(argv[0], "r"))) + fprintf(stderr, "Error opening \"%s\": %s\n" + , argv[0], strerror(errno)); + else while (!feof(in)) { + size_t rr_len = sizeof(rr), dname_len = 0; + size_t written; + + s = sldns_fp2wire_rr_buf(in, rr, &rr_len, &dname_len, &state); + if (s) { + fprintf( stderr, "parse error %d:%d: %s\n" + , state.lineno, LDNS_WIREPARSE_OFFSET(s) + , sldns_get_errorstr_parse(s)); + break; + } + if (rr_len == 0) + continue; + + if (print_in_unknown_type_format) + written = sldns_wire2str_rr_unknown_buf( + rr, rr_len, str, str_len); + else + written = sldns_wire2str_rr_buf( + rr, rr_len, str, str_len); + + if (written > str_len) { + while (written > str_len) + str_len *= 2; + free(str); + if (!(str = malloc(str_len))) { + fprintf(stderr, "Memory allocation error: %s\n" + , strerror(errno)); + s = -1; + break; + } + if (print_in_unknown_type_format) + (void) sldns_wire2str_rr_unknown_buf( + rr, rr_len, str, str_len); + else + (void) sldns_wire2str_rr_buf( + rr, rr_len, str, str_len); + } + fprintf(stdout, "%s", str); + } + if (in) + fclose(in); + free(str); + return !in || s ? EXIT_FAILURE : EXIT_SUCCESS; +} diff --git a/testcode/replay.c b/testcode/replay.c index 84ce50441..2487c146f 100644 --- a/testcode/replay.c +++ b/testcode/replay.c @@ -124,8 +124,7 @@ replay_range_delete(struct replay_range* rng) free(rng); } -/** strip whitespace from end of string */ -static void +void strip_end_white(char* p) { size_t i; @@ -227,7 +226,7 @@ read_file_content(FILE* in, int* lineno, struct replay_moment* mom) if(strncmp(line, "FILE_END", 8) == 0) { return; } - if(line[0]) line[strlen(line)-1] = 0; /* remove newline */ + strip_end_white(line); if(!cfg_strlist_insert(last, strdup(line))) fatal_exit("malloc failure"); last = &( (*last)->next ); @@ -249,7 +248,7 @@ read_assign_step(char* remain, struct replay_moment* mom) if(eq != '=') fatal_exit("no '=' in assign: %s", remain); remain += skip; - if(remain[0]) remain[strlen(remain)-1]=0; /* remove newline */ + strip_end_white(remain); mom->string = strdup(remain); if(!mom->variable || !mom->string) fatal_exit("out of memory"); @@ -318,8 +317,7 @@ replay_moment_read(char* remain, FILE* in, const char* name, mom->evt_type = repevt_autotrust_check; while(isspace((unsigned char)*remain)) remain++; - if(strlen(remain)>0 && remain[strlen(remain)-1]=='\n') - remain[strlen(remain)-1] = 0; + strip_end_white(remain); mom->autotrust_id = strdup(remain); if(!mom->autotrust_id) fatal_exit("out of memory"); read_file_content(in, &pstate->lineno, mom); @@ -327,8 +325,7 @@ replay_moment_read(char* remain, FILE* in, const char* name, mom->evt_type = repevt_tempfile_check; while(isspace((unsigned char)*remain)) remain++; - if(strlen(remain)>0 && remain[strlen(remain)-1]=='\n') - remain[strlen(remain)-1] = 0; + strip_end_white(remain); mom->autotrust_id = strdup(remain); if(!mom->autotrust_id) fatal_exit("out of memory"); read_file_content(in, &pstate->lineno, mom); @@ -359,8 +356,7 @@ replay_moment_read(char* remain, FILE* in, const char* name, m++; if(!extstrtoaddr(s, &mom->addr, &mom->addrlen)) fatal_exit("bad infra_rtt address %s", s); - if(strlen(m)>0 && m[strlen(m)-1]=='\n') - m[strlen(m)-1] = 0; + strip_end_white(m); mom->variable = strdup(remain); mom->string = strdup(m); if(!mom->string) fatal_exit("out of memory"); @@ -375,8 +371,7 @@ replay_moment_read(char* remain, FILE* in, const char* name, if(parse_keyword(&remain, "ADDRESS")) { while(isspace((unsigned char)*remain)) remain++; - if(strlen(remain) > 0) /* remove \n */ - remain[strlen(remain)-1] = 0; + strip_end_white(remain); if(!extstrtoaddr(remain, &mom->addr, &mom->addrlen)) { log_err("line %d: could not parse ADDRESS: %s", pstate->lineno, remain); @@ -693,7 +688,11 @@ do_macro_ctime(char* arg) return NULL; } ctime_r(&tt, buf); - if(buf[0]) buf[strlen(buf)-1]=0; /* remove trailing newline */ +#ifdef USE_WINSOCK + if(strlen(buf) > 10 && buf[7]==' ' && buf[8]=='0') + buf[8]=' '; /* fix error in windows ctime */ +#endif + strip_end_white(buf); return strdup(buf); } diff --git a/testcode/replay.h b/testcode/replay.h index 5132cdacb..0271dff03 100644 --- a/testcode/replay.h +++ b/testcode/replay.h @@ -425,6 +425,9 @@ int replay_var_compare(const void* a, const void* b); /** get oldest enabled fake timer */ struct fake_timer* replay_get_oldest_timer(struct replay_runtime* runtime); +/** strip whitespace from end of string */ +void strip_end_white(char* p); + /** * Create variable storage * @return new or NULL on failure. diff --git a/testcode/streamtcp.c b/testcode/streamtcp.c index ffdddbe9d..2bd076ee5 100644 --- a/testcode/streamtcp.c +++ b/testcode/streamtcp.c @@ -397,11 +397,17 @@ send_em(const char* svr, int udp, int usessl, int noanswer, int onarrival, /** SIGPIPE handler */ static RETSIGTYPE sigh(int sig) { + char str[] = "Got unhandled signal \n"; if(sig == SIGPIPE) { - printf("got SIGPIPE, remote connection gone\n"); + char* strpipe = "got SIGPIPE, remote connection gone\n"; + /* simple cast to void will not silence Wunused-result */ + (void)!write(STDOUT_FILENO, strpipe, strlen(strpipe)); exit(1); } - printf("Got unhandled signal %d\n", sig); + str[21] = '0' + (sig/10)%10; + str[22] = '0' + sig%10; + /* simple cast to void will not silence Wunused-result */ + (void)!write(STDOUT_FILENO, str, strlen(str)); exit(1); } #endif /* SIGPIPE */ diff --git a/testcode/testbound.c b/testcode/testbound.c index a7cf27a73..c92900142 100644 --- a/testcode/testbound.c +++ b/testcode/testbound.c @@ -168,7 +168,7 @@ spool_temp_file_name(int* lineno, FILE* cfg, char* id) id++; if(*id == '\0') fatal_exit("TEMPFILE_NAME must have id, line %d", *lineno); - id[strlen(id)-1]=0; /* remove newline */ + strip_end_white(id); fake_temp_file("_temp_", id, line, sizeof(line)); fprintf(cfg, "\"%s\"\n", line); } @@ -185,7 +185,7 @@ spool_temp_file(FILE* in, int* lineno, char* id) id++; if(*id == '\0') fatal_exit("TEMPFILE_CONTENTS must have id, line %d", *lineno); - id[strlen(id)-1]=0; /* remove newline */ + strip_end_white(id); fake_temp_file("_temp_", id, line, sizeof(line)); /* open file and spool to it */ spool = fopen(line, "w"); @@ -205,7 +205,7 @@ spool_temp_file(FILE* in, int* lineno, char* id) char* tid = parse+17; while(isspace((unsigned char)*tid)) tid++; - tid[strlen(tid)-1]=0; /* remove newline */ + strip_end_white(tid); fake_temp_file("_temp_", tid, l2, sizeof(l2)); snprintf(line, sizeof(line), "$INCLUDE %s\n", l2); } @@ -230,7 +230,7 @@ spool_auto_file(FILE* in, int* lineno, FILE* cfg, char* id) id++; if(*id == '\0') fatal_exit("AUTROTRUST_FILE must have id, line %d", *lineno); - id[strlen(id)-1]=0; /* remove newline */ + strip_end_white(id); fake_temp_file("_auto_", id, line, sizeof(line)); /* add option for the file */ fprintf(cfg, "server: auto-trust-anchor-file: \"%s\"\n", line); diff --git a/testcode/unitauth.c b/testcode/unitauth.c index 184573ab6..d193526b8 100644 --- a/testcode/unitauth.c +++ b/testcode/unitauth.c @@ -468,8 +468,13 @@ tmpfilecleanup(void) int i; char buf[256]; for(i=0; iid = id; - w->outnet = outnet; - w->next_waiting = (void*)reuse->pending; - reuse_tree_by_id_insert(reuse, w); - } -} - -/** fill up the reuse ID tree and test assertions */ -static void tcpid_fillup(struct reuse_tcp* reuse, - struct outside_network* outnet) -{ - int t, numtest=3; - for(t=0; ttree_by_id, reuse_id_cmp); - tcpid_addmore(reuse, outnet, 65535); - reuse_del_readwait(&reuse->tree_by_id); - } -} - -/** test TCP ID selection */ -static void tcpid_test(void) -{ - struct pending_tcp pend; - struct outside_network outnet; - unit_show_func("services/outside_network.c", "reuse_tcp_select_id"); - memset(&pend, 0, sizeof(pend)); - pend.reuse.pending = &pend; - memset(&outnet, 0, sizeof(outnet)); - outnet.rnd = ub_initstate(NULL); - rbtree_init(&pend.reuse.tree_by_id, reuse_id_cmp); - tcpid_fillup(&pend.reuse, &outnet); - ub_randfree(outnet.rnd); -} - void unit_show_func(const char* file, const char* func) { printf("test %s:%s\n", file, func); @@ -953,8 +907,8 @@ main(int argc, char* argv[]) infra_test(); ldns_test(); zonemd_test(); + tcpreuse_test(); msgparse_test(); - tcpid_test(); #ifdef CLIENT_SUBNET ecs_test(); #endif /* CLIENT_SUBNET */ diff --git a/testcode/unitmain.h b/testcode/unitmain.h index 66d1322f2..adcd74f77 100644 --- a/testcode/unitmain.h +++ b/testcode/unitmain.h @@ -82,5 +82,7 @@ void ldns_test(void); void authzone_test(void); /** unit test for zonemd functions */ void zonemd_test(void); +/** unit test for tcp_reuse functions */ +void tcpreuse_test(void); #endif /* TESTCODE_UNITMAIN_H */ diff --git a/testcode/unittcpreuse.c b/testcode/unittcpreuse.c new file mode 100644 index 000000000..087c6c1b9 --- /dev/null +++ b/testcode/unittcpreuse.c @@ -0,0 +1,236 @@ +/* + * testcode/unittcpreuse.c - unit test for tcp_reuse. + * + * Copyright (c) 2021, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ +/** + * \file + * Tests the tcp_reuse functionality. + */ + +#include "config.h" +#include "testcode/unitmain.h" +#include "util/log.h" +#include "util/random.h" +#include "services/outside_network.h" + +/** add number of new IDs to the reuse tree, randomly chosen */ +static void tcpid_addmore(struct reuse_tcp* reuse, + struct outside_network* outnet, unsigned int addnum) +{ + unsigned int i; + struct waiting_tcp* w; + for(i=0; iid = id; + w->outnet = outnet; + w->next_waiting = (void*)reuse->pending; + reuse_tree_by_id_insert(reuse, w); + } +} + +/** fill up the reuse ID tree and test assertions */ +static void tcpid_fillup(struct reuse_tcp* reuse, + struct outside_network* outnet) +{ + int t, numtest=3; + for(t=0; ttree_by_id, reuse_id_cmp); + tcpid_addmore(reuse, outnet, 65535); + reuse_del_readwait(&reuse->tree_by_id); + } +} + +/** test TCP ID selection */ +static void tcpid_test(void) +{ + struct pending_tcp pend; + struct outside_network outnet; + unit_show_func("services/outside_network.c", "reuse_tcp_select_id"); + memset(&pend, 0, sizeof(pend)); + pend.reuse.pending = &pend; + memset(&outnet, 0, sizeof(outnet)); + outnet.rnd = ub_initstate(NULL); + rbtree_init(&pend.reuse.tree_by_id, reuse_id_cmp); + tcpid_fillup(&pend.reuse, &outnet); + ub_randfree(outnet.rnd); +} + +/** check that the tree has present number of nodes and the LRU is linked + * properly. */ +static void check_tree_and_list(struct outside_network* outnet, int present) +{ + int i; + struct reuse_tcp *reuse, *next_reuse; + unit_assert(present == (int)outnet->tcp_reuse.count); + if(present < 1) { + unit_assert(outnet->tcp_reuse_first == NULL); + unit_assert(outnet->tcp_reuse_last == NULL); + return; + } + unit_assert(outnet->tcp_reuse_first->item_on_lru_list); + unit_assert(!outnet->tcp_reuse_first->lru_prev); + reuse = outnet->tcp_reuse_first; + for(i=0; iitem_on_lru_list); + unit_assert(reuse->lru_next); + unit_assert(reuse->lru_next != reuse); + next_reuse = reuse->lru_next; + unit_assert(next_reuse->lru_prev == reuse); + reuse = next_reuse; + } + unit_assert(!reuse->lru_next); + unit_assert(outnet->tcp_reuse_last->item_on_lru_list); + unit_assert(outnet->tcp_reuse_last == reuse); +} + +/** creates pending_tcp. Copy of outside_network.c:create_pending_tcp without + * the comm_point creation */ +static int create_pending_tcp(struct outside_network* outnet) +{ + size_t i; + if(outnet->num_tcp == 0) + return 1; /* no tcp needed, nothing to do */ + if(!(outnet->tcp_conns = (struct pending_tcp **)calloc( + outnet->num_tcp, sizeof(struct pending_tcp*)))) + return 0; + for(i=0; inum_tcp; i++) { + if(!(outnet->tcp_conns[i] = (struct pending_tcp*)calloc(1, + sizeof(struct pending_tcp)))) + return 0; + outnet->tcp_conns[i]->next_free = outnet->tcp_free; + outnet->tcp_free = outnet->tcp_conns[i]; + } + return 1; +} + +/** empty the tcp_reuse tree and LRU list */ +static void empty_tree(struct outside_network* outnet) +{ + size_t i; + struct reuse_tcp* reuse; + reuse = outnet->tcp_reuse_first; + i = outnet->tcp_reuse.count; + while(reuse) { + reuse_tcp_remove_tree_list(outnet, reuse); + check_tree_and_list(outnet, --i); + reuse = outnet->tcp_reuse_first; + } +} + +/** check removal of the LRU element on the given position of total elements */ +static void check_removal(struct outside_network* outnet, int position, int total) +{ + int i; + struct reuse_tcp* reuse; + empty_tree(outnet); + for(i=0; itcp_conns[i]); + } + check_tree_and_list(outnet, total); + reuse = outnet->tcp_reuse_first; + for(i=0; ilru_next; + reuse_tcp_remove_tree_list(outnet, reuse); + check_tree_and_list(outnet, total-1); +} + +/** check snipping off the last element of the LRU with total elements */ +static void check_snip(struct outside_network* outnet, int total) +{ + int i; + struct reuse_tcp* reuse; + empty_tree(outnet); + for(i=0; itcp_conns[i]); + } + check_tree_and_list(outnet, total); + reuse = reuse_tcp_lru_snip(outnet); + while(reuse) { + reuse_tcp_remove_tree_list(outnet, reuse); + check_tree_and_list(outnet, --total); + reuse = reuse_tcp_lru_snip(outnet); + } + unit_assert(outnet->tcp_reuse_first == NULL); + unit_assert(outnet->tcp_reuse_last == NULL); + unit_assert(outnet->tcp_reuse.count == 0); +} + +/** test tcp_reuse tree and LRU list functions */ +static void tcp_reuse_tree_list_test(void) +{ + size_t i; + struct outside_network outnet; + struct reuse_tcp* reuse; + memset(&outnet, 0, sizeof(outnet)); + rbtree_init(&outnet.tcp_reuse, reuse_cmp); + outnet.num_tcp = 5; + outnet.tcp_reuse_max = outnet.num_tcp; + if(!create_pending_tcp(&outnet)) fatal_exit("out of memory"); + /* add all to the tree */ + unit_show_func("services/outside_network.c", "reuse_tcp_insert"); + for(i=0; ilru_next; reuse = reuse->lru_next); + reuse_tcp_lru_touch(&outnet, reuse); + check_tree_and_list(&outnet, outnet.num_tcp); + } + /* check removal */ + unit_show_func("services/outside_network.c", "reuse_tcp_remove_tree_list"); + check_removal(&outnet, 2, 5); + check_removal(&outnet, 1, 3); + check_removal(&outnet, 1, 2); + /* check snip */ + unit_show_func("services/outside_network.c", "reuse_tcp_lru_snip"); + check_snip(&outnet, 4); + + for(i=0; ilock); z->zonemd_check = 1; + lock_rw_unlock(&z->lock); /* create zonemd digest */ result = auth_zone_generate_zonemd_hash(z, scheme, hashalgo, @@ -130,37 +136,37 @@ static void zonemd_generate_test(const char* zname, char* zfile, static void zonemd_generate_tests(void) { unit_show_func("services/authzone.c", "auth_zone_generate_zonemd_hash"); - zonemd_generate_test("example.org", "testdata/zonemd.example1.zone", + zonemd_generate_test("example.org", SRCDIRSTR "/testdata/zonemd.example1.zone", 1, 2, "20564D10F50A0CEBEC856C64032B7DFB53D3C449A421A5BC7A21F7627B4ACEA4DF29F2C6FE82ED9C23ADF6F4D420D5DD63EF6E6349D60FDAB910B65DF8D481B7"); /* https://tools.ietf.org/html/draft-ietf-dnsop-dns-zone-digest-12 * from section A.1 */ - zonemd_generate_test("example", "testdata/zonemd.example_a1.zone", + zonemd_generate_test("example", SRCDIRSTR "/testdata/zonemd.example_a1.zone", 1, 1, "c68090d90a7aed716bc459f9340e3d7c1370d4d24b7e2fc3a1ddc0b9a87153b9a9713b3c9ae5cc27777f98b8e730044c"); /* https://tools.ietf.org/html/draft-ietf-dnsop-dns-zone-digest-12 * from section A.2 */ - zonemd_generate_test("example", "testdata/zonemd.example_a2.zone", + zonemd_generate_test("example", SRCDIRSTR "/testdata/zonemd.example_a2.zone", 1, 1, "31cefb03814f5062ad12fa951ba0ef5f8da6ae354a415767246f7dc932ceb1e742a2108f529db6a33a11c01493de358d"); /* https://tools.ietf.org/html/draft-ietf-dnsop-dns-zone-digest-12 * from section A.3 SHA384 digest */ - zonemd_generate_test("example", "testdata/zonemd.example_a3.zone", + zonemd_generate_test("example", SRCDIRSTR "/testdata/zonemd.example_a3.zone", 1, 1, "62e6cf51b02e54b9b5f967d547ce43136792901f9f88e637493daaf401c92c279dd10f0edb1c56f8080211f8480ee306"); /* https://tools.ietf.org/html/draft-ietf-dnsop-dns-zone-digest-12 * from section A.3 SHA512 digest*/ - zonemd_generate_test("example", "testdata/zonemd.example_a3.zone", + zonemd_generate_test("example", SRCDIRSTR "/testdata/zonemd.example_a3.zone", 1, 2, "08cfa1115c7b948c4163a901270395ea226a930cd2cbcf2fa9a5e6eb85f37c8a4e114d884e66f176eab121cb02db7d652e0cc4827e7a3204f166b47e5613fd27"); /* https://tools.ietf.org/html/draft-ietf-dnsop-dns-zone-digest-12 * from section A.4 */ - zonemd_generate_test("uri.arpa", "testdata/zonemd.example_a4.zone", + zonemd_generate_test("uri.arpa", SRCDIRSTR "/testdata/zonemd.example_a4.zone", 1, 1, "1291b78ddf7669b1a39d014d87626b709b55774c5d7d58fadc556439889a10eaf6f11d615900a4f996bd46279514e473"); /* https://tools.ietf.org/html/draft-ietf-dnsop-dns-zone-digest-12 * from section A.5 */ - zonemd_generate_test("root-servers.net", "testdata/zonemd.example_a5.zone", + zonemd_generate_test("root-servers.net", SRCDIRSTR "/testdata/zonemd.example_a5.zone", 1, 1, "f1ca0ccd91bd5573d9f431c00ee0101b2545c97602be0a978a3b11dbfc1c776d5b3e86ae3d973d6b5349ba7f04340f79"); } @@ -168,7 +174,7 @@ static void zonemd_generate_tests(void) static void zonemd_check_test(void) { const char* zname = "example.org"; - char* zfile = "testdata/zonemd.example1.zone"; + char* zfile = SRCDIRSTR "/testdata/zonemd.example1.zone"; int scheme = 1; int hashalgo = 2; const char* digest = "20564D10F50A0CEBEC856C64032B7DFB53D3C449A421A5BC7A21F7627B4ACEA4DF29F2C6FE82ED9C23ADF6F4D420D5DD63EF6E6349D60FDAB910B65DF8D481B7"; @@ -197,7 +203,9 @@ static void zonemd_check_test(void) /* read file */ z = authtest_addzone(az, zname, zfile); unit_assert(z); + lock_rw_wrlock(&z->lock); z->zonemd_check = 1; + lock_rw_unlock(&z->lock); hashlen = sizeof(hash); if(sldns_str2wire_hex_buf(digest, hash, &hashlen) != 0) { unit_assert(0); /* parse failure */ @@ -337,25 +345,25 @@ static void zonemd_verify_tests(void) unit_show_func("services/authzone.c", "auth_zone_verify_zonemd"); /* give trustanchor for unsigned zone, should fail */ zonemd_verify_test("example.org", - "testdata/zonemd.example1.zone", + SRCDIRSTR "/testdata/zonemd.example1.zone", "example.org. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20180302005009", "verify DNSKEY RRset with trust anchor failed: have trust anchor, but zone has no DNSKEY"); /* unsigned zone without ZONEMD in it */ zonemd_verify_test("example.org", - "testdata/zonemd.example1.zone", + SRCDIRSTR "/testdata/zonemd.example1.zone", NULL, "20180302005009", "no ZONEMD present"); /* no trust anchor, so it succeeds for zone with a correct ZONEMD */ zonemd_verify_test("example.com", - "testdata/zonemd.example2.zone", + SRCDIRSTR "/testdata/zonemd.example2.zone", NULL, "20180302005009", "ZONEMD verification successful"); /* trust anchor for another zone, so it is indeterminate */ zonemd_verify_test("example.com", - "testdata/zonemd.example2.zone", + SRCDIRSTR "/testdata/zonemd.example2.zone", "example.org. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20180302005009", "ZONEMD verification successful"); @@ -364,7 +372,7 @@ static void zonemd_verify_tests(void) /* this zonefile has an incorrect ZONEMD digest, with correct * DNSSEC signature. */ zonemd_verify_test("example.com", - "testdata/zonemd.example3.zone", + SRCDIRSTR "/testdata/zonemd.example3.zone", NULL, "20180302005009", "incorrect digest"); @@ -372,7 +380,7 @@ static void zonemd_verify_tests(void) /* this zonefile has an incorrect ZONEMD digest, with correct * DNSSEC signature. */ zonemd_verify_test("example.com", - "testdata/zonemd.example4.zone", + SRCDIRSTR "/testdata/zonemd.example4.zone", NULL, "20180302005009", "incorrect digest"); @@ -380,91 +388,116 @@ static void zonemd_verify_tests(void) /* this zonefile has a correct ZONEMD digest and * correct DNSSEC signature */ zonemd_verify_test("example.com", - "testdata/zonemd.example5.zone", + SRCDIRSTR "/testdata/zonemd.example5.zone", NULL, "20180302005009", "ZONEMD verification successful"); /* valid zonemd, in dnssec NSEC3 zone, no trust anchor*/ zonemd_verify_test("example.com", - "testdata/zonemd.example6.zone", + SRCDIRSTR "/testdata/zonemd.example6.zone", NULL, "20180302005009", "ZONEMD verification successful"); /* load a DNSSEC signed zone with a trust anchor, valid ZONEMD */ zonemd_verify_test("example.com", - "testdata/zonemd.example5.zone", + SRCDIRSTR "/testdata/zonemd.example5.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", "ZONEMD verification successful"); /* load a DNSSEC NSEC3 signed zone with a trust anchor, valid ZONEMD */ zonemd_verify_test("example.com", - "testdata/zonemd.example6.zone", + SRCDIRSTR "/testdata/zonemd.example6.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", "ZONEMD verification successful"); /* load a DNSSEC NSEC zone without ZONEMD */ zonemd_verify_test("example.com", - "testdata/zonemd.example7.zone", + SRCDIRSTR "/testdata/zonemd.example7.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", "DNSSEC verified nonexistence of ZONEMD"); /* load a DNSSEC NSEC3 zone without ZONEMD */ zonemd_verify_test("example.com", - "testdata/zonemd.example8.zone", + SRCDIRSTR "/testdata/zonemd.example8.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", "DNSSEC verified nonexistence of ZONEMD"); /* load DNSSEC zone but RRSIG on ZONEMD is wrong */ zonemd_verify_test("example.com", - "testdata/zonemd.example9.zone", + SRCDIRSTR "/testdata/zonemd.example9.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", - "DNSSEC verify failed for ZONEMD RRset: signature crypto failed"); +#ifdef HAVE_SSL + "DNSSEC verify failed for ZONEMD RRset: signature crypto failed" +#else /* HAVE_NETTLE */ + "DNSSEC verify failed for ZONEMD RRset: RSA signature verification failed" +#endif + ); /* load DNSSEC zone but RRSIG on SOA is wrong */ zonemd_verify_test("example.com", - "testdata/zonemd.example10.zone", + SRCDIRSTR "/testdata/zonemd.example10.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", - "DNSSEC verify failed for SOA RRset: signature crypto failed"); +#ifdef HAVE_SSL + "DNSSEC verify failed for SOA RRset: signature crypto failed" +#else /* HAVE_NETTLE */ + "DNSSEC verify failed for SOA RRset: RSA signature verification failed" +#endif + ); /* load DNSSEC zone without ZONEMD, but NSEC bitmap says it exists */ zonemd_verify_test("example.com", - "testdata/zonemd.example11.zone", + SRCDIRSTR "/testdata/zonemd.example11.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", "DNSSEC NSEC bitmap says type ZONEMD exists"); /* load DNSSEC zone without ZONEMD, but NSEC3 bitmap says it exists */ zonemd_verify_test("example.com", - "testdata/zonemd.example12.zone", + SRCDIRSTR "/testdata/zonemd.example12.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", "DNSSEC NSEC3 bitmap says type ZONEMD exists"); /* load DNSSEC zone without ZONEMD, but RRSIG on NSEC not okay */ zonemd_verify_test("example.com", - "testdata/zonemd.example13.zone", + SRCDIRSTR "/testdata/zonemd.example13.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", - "DNSSEC verify failed for NSEC RRset: signature crypto failed"); +#ifdef HAVE_SSL + "DNSSEC verify failed for NSEC RRset: signature crypto failed" +#else /* HAVE_NETTLE */ + "DNSSEC verify failed for NSEC RRset: RSA signature verification failed" +#endif + ); /* load DNSSEC zone without ZONEMD, but RRSIG on NSEC3 not okay */ zonemd_verify_test("example.com", - "testdata/zonemd.example14.zone", + SRCDIRSTR "/testdata/zonemd.example14.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", - "DNSSEC verify failed for NSEC3 RRset: signature crypto failed"); +#ifdef HAVE_SSL + "DNSSEC verify failed for NSEC3 RRset: signature crypto failed" +#else /* HAVE_NETTLE */ + "DNSSEC verify failed for NSEC3 RRset: RSA signature verification failed" +#endif + ); /* load DNSSEC zone, with ZONEMD, but DNSKEY RRSIG is not okay. */ zonemd_verify_test("example.com", - "testdata/zonemd.example15.zone", + SRCDIRSTR "/testdata/zonemd.example15.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", - "verify DNSKEY RRset with trust anchor failed: signature crypto failed"); +#ifdef HAVE_SSL + "verify DNSKEY RRset with trust anchor failed: signature crypto failed" +#else /* HAVE_NETTLE */ + "verify DNSKEY RRset with trust anchor failed: RSA signature verification failed" +#endif + ); /* load DNSSEC zone, but trust anchor mismatches DNSKEY */ zonemd_verify_test("example.com", - "testdata/zonemd.example5.zone", + SRCDIRSTR "/testdata/zonemd.example5.zone", /* okay anchor is "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", */ "example.com. IN DS 55566 8 2 0000000000111111222223333444444dfcf92595148022f2c2fd98e5deee90af", @@ -473,7 +506,7 @@ static void zonemd_verify_tests(void) /* load DNSSEC zone, but trust anchor fails because the zone * has expired signatures. We set the date for it */ zonemd_verify_test("example.com", - "testdata/zonemd.example5.zone", + SRCDIRSTR "/testdata/zonemd.example5.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", /* okay date: "20201020135527", */ "20221020135527", @@ -481,14 +514,14 @@ static void zonemd_verify_tests(void) /* duplicate zonemd with same scheme and algorithm */ zonemd_verify_test("example.com", - "testdata/zonemd.example16.zone", + SRCDIRSTR "/testdata/zonemd.example16.zone", NULL, "20180302005009", "ZONEMD RRSet contains more than one RR with the same scheme and hash algorithm"); /* different capitalisation of ns name and owner names, should * be canonicalized. */ zonemd_verify_test("example.com", - "testdata/zonemd.example17.zone", + SRCDIRSTR "/testdata/zonemd.example17.zone", NULL, "20180302005009", "ZONEMD verification successful"); diff --git a/testdata/http_user_agent.tdir/127.0.0.1/example.com.zone b/testdata/http_user_agent.tdir/127.0.0.1/example.com.zone new file mode 100644 index 000000000..695eb1c32 --- /dev/null +++ b/testdata/http_user_agent.tdir/127.0.0.1/example.com.zone @@ -0,0 +1,3 @@ +example.com. IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +example.com. IN NS ns.example.net. +www.example.com. IN A 1.2.3.4 diff --git a/testdata/http_user_agent.tdir/http_user_agent.conf b/testdata/http_user_agent.tdir/http_user_agent.conf new file mode 100644 index 000000000..c563416ae --- /dev/null +++ b/testdata/http_user_agent.tdir/http_user_agent.conf @@ -0,0 +1,24 @@ +auth-zone: + name: "example.com" + for-upstream: yes + for-downstream: yes + url: "https://127.0.0.1:@TOPORT@/example.com.zone" +remote-control: + control-enable: yes + control-interface: 127.0.0.1 + control-port: @CONTROL_PORT@ + server-key-file: "unbound_server.key" + server-cert-file: "unbound_server.pem" + control-key-file: "unbound_control.key" + control-cert-file: "unbound_control.pem" +server: + verbosity: 7 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + use-caps-for-id: yes diff --git a/testdata/http_user_agent.tdir/http_user_agent.dsc b/testdata/http_user_agent.tdir/http_user_agent.dsc new file mode 100644 index 000000000..6b24c43fc --- /dev/null +++ b/testdata/http_user_agent.tdir/http_user_agent.dsc @@ -0,0 +1,16 @@ +BaseName: http_user_agent +Version: 1.0 +Description: Check the http-user-agent configuration +CreationDate: Wed 2 Jun 13:59:26 CEST 2021 +Maintainer: +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: http_user_agent.pre +Post: http_user_agent.post +Test: http_user_agent.test +AuxFiles: +Passed: +Failure: diff --git a/testdata/http_user_agent.tdir/http_user_agent.post b/testdata/http_user_agent.tdir/http_user_agent.post new file mode 100644 index 000000000..797ff57c8 --- /dev/null +++ b/testdata/http_user_agent.tdir/http_user_agent.post @@ -0,0 +1,11 @@ +# #-- http_user_agent.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +PRE="../.." +. ../common.sh +kill_pid $UNBOUND_PID +kill_pid $PETAL_PID diff --git a/testdata/http_user_agent.tdir/http_user_agent.pre b/testdata/http_user_agent.tdir/http_user_agent.pre new file mode 100644 index 000000000..e94bd536e --- /dev/null +++ b/testdata/http_user_agent.tdir/http_user_agent.pre @@ -0,0 +1,37 @@ +# #-- http_user_agent.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 + +PRE="../.." +. ../common.sh +get_random_port 3 +UNBOUND_PORT=$RND_PORT +PETAL_PORT=$(($RND_PORT + 1)) +CONTROL_PORT=$(($RND_PORT + 3)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "PETAL_PORT=$PETAL_PORT" >> .tpkg.var.test +echo "CONTROL_PORT=$CONTROL_PORT" >> .tpkg.var.test + +get_make +(cd $PRE; $MAKE petal) + +# start https daemon +# More verbosity because we need to see the HTTP headers +$PRE/petal -vv -a "127.0.0.1" -p $PETAL_PORT >petal.log 2>&1 & +PETAL_PID=$! +echo "PETAL_PID=$PETAL_PID" >> .tpkg.var.test +cat .tpkg.var.test +wait_petal_up petal.log + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$PETAL_PORT'/' -e 's/@CONTROL_PORT\@/'$CONTROL_PORT'/'< http_user_agent.conf > ub.conf +# start unbound in the background +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_unbound_up unbound.log + diff --git a/testdata/http_user_agent.tdir/http_user_agent.test b/testdata/http_user_agent.tdir/http_user_agent.test new file mode 100644 index 000000000..afc0fbbe6 --- /dev/null +++ b/testdata/http_user_agent.tdir/http_user_agent.test @@ -0,0 +1,103 @@ +# #-- http_user_agent.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 + +PRE="../.." + +# Query and check check that we get the correct answer from the auth_zone +query () { + echo "> dig www.example.com." + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile + if grep SERVFAIL outfile; then + echo "> try again" + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile + fi + if grep SERVFAIL outfile; then + echo "> try again" + sleep 1 + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile + fi + if grep SERVFAIL outfile; then + echo "> try again" + sleep 1 + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile + fi + if grep SERVFAIL outfile; then + echo "> try again" + sleep 1 + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile + fi + if grep SERVFAIL outfile; then + echo "> try again" + sleep 10 + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile + fi + if grep SERVFAIL outfile; then + echo "> try again" + sleep 10 + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile + fi + echo "> check answer" + if grep "1.2.3.4" outfile; then + echo "OK" + else + echo "Not OK" + exit 1 + fi +} + +# Reload the configuration and retransfer the zone +reload_and_retransfer () { + echo "> Reloading Unbound" + echo "$PRE/unbound-control -c ub.conf reload" + $PRE/unbound-control -c ub.conf reload + if test $? -ne 0; then + echo "wrong exit value from unbound-control" + exit 1 + fi + echo "> Refetching example.com" + echo "$PRE/unbound-control -c ub.conf auth_zone_transfer example.com" + $PRE/unbound-control -c ub.conf auth_zone_transfer example.com + if test $? -ne 0; then + echo "wrong exit value from unbound-control" + exit 1 + fi +} + +# do the test +query +# add custom http-user-agent +echo "server: http-user-agent: customUA" >> ub.conf +reload_and_retransfer +query +# hide http-user-agent +echo "server: hide-http-user-agent: yes" >> ub.conf +reload_and_retransfer +query + +echo "> cat logfiles" +cat petal.log +cat unbound.log + +# check petal.log for the correct number of occurences. +# It should be 2 User-Agents, one being the custom. +echo "> check User-Agent occurences" +occurences=`grep "User-Agent:" petal.log | wc -l` +echo $occurences +if test $occurences -eq 2; then + echo "OK" +else + echo "Not OK" + exit 1 +fi +echo "> check custom User-Agent" +if grep "User-Agent: customUA" petal.log; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/testdata/http_user_agent.tdir/petal.key b/testdata/http_user_agent.tdir/petal.key new file mode 100644 index 000000000..6614e498f --- /dev/null +++ b/testdata/http_user_agent.tdir/petal.key @@ -0,0 +1,21 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIDfQIBAAKBwQC1xQ/Kca6zszZbcCtdOTIH2Uy2gOy/DfabMUU7TmNPm0dVE0NJ +RuN+Rm304SonpwghfP2/ULZNnuDgpG03/32yI7k/VzG6iA4hiF7tT/KAAWC/+2l1 +QCsawCV2bSrFK0VhcZr7ALqXd8vkDaQ867K029ypjOQtAJ85qdO3mERy7TGtdUcu +O6hLeVet419YeQ2F8cfNxn63d7bOzNGLPW5xwaCd3UcgD+Ib0k4xfFvbinvPQUeU +J/i4YDWexFYSL+ECAwEAAQKBwCLXXQl+9O+5AEhSnd1Go1Jh0pSA7eBJOuXQcebG +Rb7ykp+6C4G2NtDziwwPRNdI6wQQQ0sym18RfyVQHydGr78/nbiIbB3HCn5e92Mh +mefzW6ow9Kvm2txLzGKA1lvoyRbNm81jnG/eygi3u7Nqd5PNv+4dHj2RkTlmxOeh +qnDMVP5md8uZPv6lYNnrnIzvLCR5vnPNdVwn89AqzI85IcDZdy0R9ZX4NBbsDgAU +6ig6uXuRXvSGiyJ/OUXSrnogaQJhAOjvkHUhVZQkPOxO90TNH4j0GdKKtbSWxIdz +lKfuJeBAEqs0TL+C6vbS81Xw3W1alyDdUBk3rJMOBqW6Ryq5HNL+j5H+Jfsh7fvc +Yle+5wHGci0P9zCFZCrY8It7n9XFIwJhAMfEi6oJa2G8waPJ1bQhxka82Tf9pnKM +XCn/1BBOFjVIx5F842cpA+zp5a62GENTGYPQTTRBB/2/ZwnW5aIkrlg54AtmbqBZ +Oh+2kJdJQD/tfoVmc5soUE2ScTHadK5RKwJhAN4w9kjkXS+MSZjX0kIMsBIBVkhh +C+aREjJqa9ir7/Ey7RvmLXdYuCxtGLRXp7/R8+rjcK49Tx6O+IRJZe042mfhbq3C +EhS1Tr86f4xXix9EXlDhs9bSxrOgcAN9Dv/opQJhAK7eBcPaav0rVfYh/8emqQHS +3fJ9Pu6WnzbEksWTFS2ff9KDGCx9YspIFJ5TF/oXDAaumGZdZrlgirm6O1kr8tGY +F97i04PZl1+bWAaWQH+1TUNI43m2WFUPE7coG2tb8QJgcddDg9VlXliZqgcETZfJ +kJmYETxrcSn3ao6v116N8yxhEgUgjkmsCTiFgx36iDVnXwK6PIt+sIu8MC7eYNa3 +berrv/M21K0LRn20IWRxvUobG070weHCAgkko7fTWgr2 +-----END RSA PRIVATE KEY----- diff --git a/testdata/http_user_agent.tdir/petal.pem b/testdata/http_user_agent.tdir/petal.pem new file mode 100644 index 000000000..19c8b895b --- /dev/null +++ b/testdata/http_user_agent.tdir/petal.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICFzCCAUACCQDO660L5y5LGDANBgkqhkiG9w0BAQUFADAQMQ4wDAYDVQQDEwVw +ZXRhbDAeFw0xMDA5MzAxMzQzMDFaFw0zMDA2MTcxMzQzMDFaMBAxDjAMBgNVBAMT +BXBldGFsMIHfMA0GCSqGSIb3DQEBAQUAA4HNADCByQKBwQC1xQ/Kca6zszZbcCtd +OTIH2Uy2gOy/DfabMUU7TmNPm0dVE0NJRuN+Rm304SonpwghfP2/ULZNnuDgpG03 +/32yI7k/VzG6iA4hiF7tT/KAAWC/+2l1QCsawCV2bSrFK0VhcZr7ALqXd8vkDaQ8 +67K029ypjOQtAJ85qdO3mERy7TGtdUcuO6hLeVet419YeQ2F8cfNxn63d7bOzNGL +PW5xwaCd3UcgD+Ib0k4xfFvbinvPQUeUJ/i4YDWexFYSL+ECAwEAATANBgkqhkiG +9w0BAQUFAAOBwQBBkX9KDP2RXbg+xPmdJ4P6CwvA5x1LZwC++ydVx4NlvT0pWicD +ZUnXjcWAJlkeOuUBAqFG7WHTrXpUUAjmdqFVq2yFjteUYBdrFz0RDB2jM9feeKYO +mTgxdZyT9a6humxCxt5VfgT02axLjm/2AqCyFPMbf4PASoJDln01AEuZLZ8Xl2gV +bYHMnHTGoD1Hu6FNEzRgkMC6XT8X3YjHvzQhpc/qL5wEfEsinQGdX4twsuWbf8xd +q7miNnkO8vd0maw= +-----END CERTIFICATE----- diff --git a/testdata/http_user_agent.tdir/unbound_control.key b/testdata/http_user_agent.tdir/unbound_control.key new file mode 100644 index 000000000..753a4ef61 --- /dev/null +++ b/testdata/http_user_agent.tdir/unbound_control.key @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIG4gIBAAKCAYEAstEp+Pyh8XGrtZ77A4FhYjvbeB3dMa7Q2rGWxobzlA9przhA +1aChAvUtCOAuM+rB6NTNB8YWfZJbQHawyMNpmC77cg6vXLYCGUQHZyAqidN049RJ +F5T7j4N8Vniv17LiRdr0S6swy4PRvEnIPPV43EQHZqC5jVvHsKkhIfmBF/Dj5TXR +ypeawWV/m5jeU6/4HRYMfytBZdO1mPXuWLh0lgbQ4SCbgrOUVD3rniMk1yZIbQOm +vlDHYqekjDb/vOW2KxUQLG04aZMJ1mWfdbwG0CKQkSjISEDZ1l76vhM6mTM0fwXb +IvyFZ9yPPCle1mF5aSlxS2cmGuGVSRQaw8XF9fe3a9ACJJTr33HdSpyaZkKRAUzL +cKqLCl323daKv3NwwAT03Tj4iQM416ASMoiyfFa/2GWTKQVjddu8Crar7tGaf5xr +lig4DBmrBvdYA3njy72/RD71hLwmlRoCGU7dRuDr9O6KASUm1Ri91ONZ/qdjMvov +15l2vj4GV+KXR00dAgMBAAECggGAHepIL1N0dEQkCdpy+/8lH54L9WhpnOo2HqAf +LU9eaKK7d4jdr9+TkD8cLaPzltPrZNxVALvu/0sA4SP6J1wpyj/x6P7z73qzly5+ +Xo5PD4fEwmi9YaiW/UduAblnEZrnp/AddptJKoL/D5T4XtpiQddPtael4zQ7kB57 +YIexRSQTvEDovA/o3/nvA0TrzOxfgd4ycQP3iOWGN/TMzyLsvjydrUwbOB567iz9 +whL3Etdgvnwh5Sz2blbFfH+nAR8ctvFFz+osPvuIVR21VMEI6wm7kTpSNnQ6sh/c +lrLb/bTADn4g7z/LpIZJ+MrLvyEcoqValrLYeFBhM9CV8woPxvkO2P3pU47HVGax +tC7GV6a/kt5RoKFd/TNdiA3OC7NGZtaeXv9VkPf4fVwBtSO9d5ZZXTGEynDD/rUQ +U4KFJe6OD23APjse08HiiKqTPhsOneOONU67iqoaTdIkT2R4EdlkVEDpXVtWb+G9 +Q+IqYzVljlzuyHrhWXLJw/FMa2aBAoHBAOnZbi4gGpH+P6886WDWVgIlTccuXoyc +Mg9QQYk9UDeXxL0AizR5bZy49Sduegz9vkHpAiZARQsUnizHjZ8YlRcrmn4t6tx3 +ahTIKAjdprnxJfYINM580j8CGbXvX5LhIlm3O267D0Op+co3+7Ujy+cjsIuFQrP+ +1MqMgXSeBjzC1APivmps7HeFE+4w0k2PfN5wSMDNCzLo99PZuUG5XZ93OVOS5dpN +b+WskdcD8NOoJy/X/5A08veEI/jYO/DyqQKBwQDDwUQCOWf41ecvJLtBHKmEnHDz +ftzHino9DRKG8a9XaN4rmetnoWEaM2vHGX3pf3mwH+dAe8vJdAQueDhBKYeEpm6C +TYNOpou1+Zs5s99BilCTNYo8fkMOAyqwRwmz9zgHS6QxXuPwsghKefLJGt6o6RFF +tfWVTfLlYJ+I3GQe3ySsk3wjVz4oUTKiyiq5+KzD+HhEkS7u+RQ7Z0ZI2xd2cF8Y +aN2hjKDpcOiFf3CDoqka5D1qMNLgIHO52AHww1UCgcA1h7o7AMpURRka6hyaODY0 +A4oMYEbwdQjYjIyT998W+rzkbu1us6UtzQEBZ760npkgyU/epbOoV63lnkCC/MOU +LD0PST+L/CHiY/cWIHb79YG1EifUZKpUFg0Aoq0EGFkepF0MefGCkbRGYA5UZr9U +R80wAu9D+L+JJiS0J0BSRF74DL196zUuHt5zFeXuLzxsRtPAnq9DliS08BACRYZy +7H3I7cWD9Vn5/0jbKWHFcaaWwyETR6uekTcSzZzbCRECgcBeoE3/xUA9SSk34Mmj +7/cB4522Ft0imA3+9RK/qJTZ7Bd5fC4PKjOGNtUiqW/0L2rjeIiQ40bfWvWqgPKw +jSK1PL6uvkl6+4cNsFsYyZpiVDoe7wKju2UuoNlB3RUTqa2r2STFuNj2wRjA57I1 +BIgdnox65jqQsd14g/yaa+75/WP9CE45xzKEyrtvdcqxm0Pod3OrsYK+gikFjiar +kT0GQ8u0QPzh2tjt/2ZnIfOBrl+QYERP0MofDZDjhUdq2wECgcB0Lu841+yP5cdR +qbJhXO4zJNh7oWNcJlOuQp3ZMNFrA1oHpe9pmLukiROOy01k9WxIMQDzU5GSqRv3 +VLkYOIcbhJ3kClKAcM3j95SkKbU2H5/RENb3Ck52xtl4pNU1x/3PnVFZfDVuuHO9 +MZ9YBcIeK98MyP2jr5JtFKnOyPE7xKq0IHIhXadpbc2wjje5FtZ1cUtMyEECCXNa +C1TpXebHGyXGpY9WdWXhjdE/1jPvfS+uO5WyuDpYPr339gsdq1g= +-----END RSA PRIVATE KEY----- diff --git a/testdata/http_user_agent.tdir/unbound_control.pem b/testdata/http_user_agent.tdir/unbound_control.pem new file mode 100644 index 000000000..a1edf7017 --- /dev/null +++ b/testdata/http_user_agent.tdir/unbound_control.pem @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte +-----END CERTIFICATE----- diff --git a/testdata/http_user_agent.tdir/unbound_server.key b/testdata/http_user_agent.tdir/unbound_server.key new file mode 100644 index 000000000..370a7bbb2 --- /dev/null +++ b/testdata/http_user_agent.tdir/unbound_server.key @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIG5AIBAAKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI +0x41iG32a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+Nqq +GRS7XVQ24vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Z +uh9MDgotaBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8K +WaBe1ca4TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5 +FzUReSXZuTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xP +q6O9UPj4+nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XL +A5UoZgRzXgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP +7kFZSngxdy1+A/bNAgMBAAECggGBALpTOIqQwVg4CFBylL/a8K1IWJTI/I65sklf +XxYL7G7SB2HlEJ//z+E+F0+S4Vlao1vyLQ5QkgE82pAUB8FoMWvY1qF0Y8A5wtm6 +iZSGk4OLK488ZbT8Ii9i+AGKgPe2XbVxsJwj8N4k7Zooqec9hz73Up8ATEWJkRz7 +2u7oMGG4z91E0PULA64dOi3l/vOQe5w/Aa+CwVbAWtI05o7kMvQEBMDJn6C7CByo +MB5op9wueJMnz7PM7hns+U7Dy6oE4ljuolJUy51bDzFWwoM54cRoQqLFNHd8JVQj +WxldCkbfF43iyprlsEcUrTyUjtdA+ZeiG39vg/mtdmgNpGmdupHJZQvSuG8IcVlz +O+eMSeQS1QXPD6Ik8UK4SU0h+zOl8xIWtRrsxQuh4fnTN40udm/YUWl/6gOebsBI +IrVLlKGqJSfB3tMjpCRqdTzJ0dA9keVpkqm2ugZkxEf1+/efq/rFIQ2pUBLCqNTN +qpNqruK8y8FphP30I2uI4Ej2UIB8AQKBwQDd2Yptj2FyDyaXCycsyde0wYkNyzGU +dRnzdibfHnMZwjgTjwAwgIUBVIS8H0/z7ZJQKN7osJfddMrtjJtYYUk9g/dCpHXs +bNh2QSoWah3FdzNGuWd0iRf9+LFxhjAAMo/FS8zFJAJKrFsBdCGTfFUMdsLC0bjr +YjiWBuvV72uKf8XIZX5KIZruKdWBBcWukcb21R1UDyFYyXRBsly5XHaIYKZql3km +7pV7MKWO0IYgHbHIqGUqPQlzZ/lkunS1jKECgcEA23wHffD6Ou9/x3okPx2AWpTr +gh8rgqbyo6hQkBW5Y90Wz824cqaYebZDaBR/xlVx/YwjKkohv8Bde2lpH/ZxRZ1Z +5Sk2s6GJ/vU0L9RsJZgCgj4L6Coal1NMxuZtCXAlnOpiCdxSZgfqbshbTVz30KsG +ZJG361Cua1ScdAHxlZBxT52/1Sm0zRC2hnxL7h4qo7Idmtzs40LAJvYOKekR0pPN +oWeJfra7vgx/jVNvMFWoOoSLpidVO4g+ot4ery6tAoHAdW3rCic1C2zdnmH28Iw+ +s50l8Lk3mz+I5wgJd1zkzCO0DxZIoWPGA3g7cmCYr6N3KRsZMs4W9NAXgjpFGDkW +zYsG3K21BdpvkdjYcFjnPVjlOXB2RIc0vehf9Jl02wXoeCSxVUDEPcaRvWk9RJYx +ZpGOchUU7vNkxHURbIJ4yCzuAi9G8/Jp0dsu+kaV5tufF5SjG5WOrzKjaQsCbdN1 +oqaWMCHRrTvov/Z2C+xwsptFOdN5CSyZzg6hQiI4GMlBAoHAXyb6KINcOEi0YMp3 +BFXJ23tMTnEs78tozcKeipigcsbaqORK3omS+NEnj+uzKUzJyl4CsMbKstK2tFYS +mSTCHqgE3PBtIpsZtEqhgUraR8IK9GPpzZDTTl9ynZgwFTNlWw3RyuyVXF56J+T8 +kCGJ3hEHCHqT/ZRQyX85BKIDFhA0z4tYKxWVqIFiYBNq56R0X9tMMmMs36mEnF93 +7Ht6mowxTZQRa7nU0qOgeKh/P7ki4Zus3y+WJ+T9IqahLtlRAoHBAIhqMrcxSAB8 +RpB9jukJlAnidw2jCMPgrFE8tP0khhVvGrXMldxAUsMKntDIo8dGCnG1KTcWDI0O +jepvSPHSsxVLFugL79h0eVIS5z4huW48i9xgU8VlHdgAcgEPIAOFcOw2BCu/s0Vp +O+MM/EyUOdo3NsibB3qc/GJI6iNBYS7AljYEVo6rXo5V/MZvZUF4vClen6Obzsre +MTTb+4sJjfqleWuvr1XNMeu2mBfXBQkWGZP1byBK0MvD/aQ2PWq92A== +-----END RSA PRIVATE KEY----- diff --git a/testdata/http_user_agent.tdir/unbound_server.pem b/testdata/http_user_agent.tdir/unbound_server.pem new file mode 100644 index 000000000..986807310 --- /dev/null +++ b/testdata/http_user_agent.tdir/unbound_server.pem @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== +-----END CERTIFICATE----- diff --git a/testdata/root_key_sentinel.rpl b/testdata/root_key_sentinel.rpl old mode 100755 new mode 100644 diff --git a/testdata/svcb.tdir/crypto.cloudflare.com.zone b/testdata/svcb.tdir/crypto.cloudflare.com.zone new file mode 100644 index 000000000..53c89c735 --- /dev/null +++ b/testdata/svcb.tdir/crypto.cloudflare.com.zone @@ -0,0 +1,9 @@ +crypto.cloudflare.com. 3600 IN SOA jobs.ns.cloudflare.com. dns.cloudflare.com. ( + 2037099480 ; serial + 10000 ; refresh (2 hours 46 minutes 40 seconds) + 2400 ; retry (40 minutes) + 604800 ; expire (1 week) + 3600 ; minimum (1 hour) + ) +crypto.cloudflare.com. 300 IN HTTPS 1 . alpn=h2 ipv4hint=162.159.135.79,162.159.136.79 echconfig=AEj+CgBETwAgACDeVpr34JzYHDGNFoGWhksj5mpBxradonbqH3X9+h7jHgAEAAEAAQAAABNjbG91ZGZsYXJlLWVzbmkuY29tAAA= ipv6hint=2606:4700:7::a29f:874f,2606:4700:7::a29f:884f + diff --git a/testdata/svcb.tdir/svcb.dsc b/testdata/svcb.tdir/svcb.dsc new file mode 100644 index 000000000..6eae7638e --- /dev/null +++ b/testdata/svcb.tdir/svcb.dsc @@ -0,0 +1,16 @@ +BaseName: svcb +Version: 1.0 +Description: Test SVCB and HTTPS parsing +CreationDate: Fri May 25 12:51:22 UTC 2021 +Maintainer: Tom Carpay +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: +Post: +Test: svcb.test +AuxFiles: +Passed: +Failure: diff --git a/testdata/svcb.tdir/svcb.failure-cases-01 b/testdata/svcb.tdir/svcb.failure-cases-01 new file mode 100644 index 000000000..c60151692 --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-01 @@ -0,0 +1,9 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; Here there are multiple instances of the same SvcParamKey in the mandatory list + +f21 HTTPS 1 foo.example.com. ech="123" +f21 HTTPS 1 foo.example.com. echconfig="123" diff --git a/testdata/svcb.tdir/svcb.failure-cases-02 b/testdata/svcb.tdir/svcb.failure-cases-02 new file mode 100644 index 000000000..9d6f0186d --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-02 @@ -0,0 +1,8 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; Port must be a positive number < 65536 + +f22 HTTPS 1 foo.example.com. port=65536 diff --git a/testdata/svcb.tdir/svcb.failure-cases-03 b/testdata/svcb.tdir/svcb.failure-cases-03 new file mode 100644 index 000000000..bb819daae --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-03 @@ -0,0 +1,8 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; 65 SvcParams is too many SvcParams; the limit is 64 + +f23 HTTPS 1 foo.example.com. ( key11=a key12=a key13=a key14=a key15=a key16=a key17=a key18=a key19=a key110=a key111=a key112=a key113=a key114=a key115=a key116=a key117=a key118=a key119=a key120=a key121=a key122=a key123=a key124=a key125=a key126=a key127=a key128=a key129=a key130=a key131=a key132=a key133=a key134=a key135=a key136=a key137=a key138=a key139=a key140=a key141=a key142=a key143=a key144=a key145=a key146=a key147=a key148=a key149=a key150=a key151=a key152=a key153=a key154=a key155=a key156=a key157=a key158=a key159=a key160=a key161=a key162=a key163=a key164=a key165=a ) \ No newline at end of file diff --git a/testdata/svcb.tdir/svcb.failure-cases-04 b/testdata/svcb.tdir/svcb.failure-cases-04 new file mode 100644 index 000000000..ae02ac417 --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-04 @@ -0,0 +1,8 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; 256 is too many characters for an alpn; maximum is 255 + +f23 HTTPS 1 foo.example.com. ( alpn="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ) \ No newline at end of file diff --git a/testdata/svcb.tdir/svcb.success-cases.zone b/testdata/svcb.tdir/svcb.success-cases.zone new file mode 100644 index 000000000..5d6339542 --- /dev/null +++ b/testdata/svcb.tdir/svcb.success-cases.zone @@ -0,0 +1,47 @@ +$ORIGIN success-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + + +; A particular key does not need to have a value + +s01 SVCB 0 . key123 + + +; echconfig does not need to have a value + +s02 SVCB 0 . echconfig + + +; When "no-default-alpn" is specified in an RR, "alpn" must also be specified +; in order for the RR to be "self-consistent" + +s03 HTTPS 0 . alpn="h2,h3" no-default-alpn + + +; SHOULD is not MUST (so allowed) +; Zone-file implementations SHOULD enforce self-consistency + +s04 HTTPS 0 . no-default-alpn + + +; SHOULD is not MUST (so allowed) +; (port and no-default-alpn are automatically mandatory keys with HTTPS) +; Other automatically mandatory keys SHOULD NOT appear in the list either. + +s05 HTTPS 0 . alpn="dot" no-default-alpn port=853 mandatory=port + +; Any valid base64 is okay for ech +s06 HTTPS 0 . ech="aGVsbG93b3JsZCE=" + +; echconfig is an alias for ech +s07 HTTPS 0 . echconfig="aGVsbG93b3JsZCE=" + +; maximum size allowed in a svcb rdata set (63 SvcParams) + +s08 HTTPS 0 . ( key11=a key12=a key13=a key14=a key15=a key16=a key17=a key18=a key19=a key110=a key111=a key112=a key113=a key114=a key115=a key116=a key117=a key118=a key119=a key120=a key121=a key122=a key123=a key124=a key125=a key126=a key127=a key128=a key129=a key130=a key131=a key132=a key133=a key134=a key135=a key136=a key137=a key138=a key139=a key140=a key141=a key142=a key143=a key144=a key145=a key146=a key147=a key148=a key149=a key150=a key151=a key152=a key153=a key154=a key155=a key156=a key157=a key158=a key159=a key160=a key161=a key162=a key163=a) + +; maximum alpn size allowed (255 characters) + +s09 HTTPS 0 . ( alpn="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ) diff --git a/testdata/svcb.tdir/svcb.success-cases.zone.cmp b/testdata/svcb.tdir/svcb.success-cases.zone.cmp new file mode 100644 index 000000000..e504e7b18 --- /dev/null +++ b/testdata/svcb.tdir/svcb.success-cases.zone.cmp @@ -0,0 +1,10 @@ +success-cases. 3600 IN SOA primary.success-cases. admin.success-cases. 0 0 0 0 0 +s01.success-cases. 3600 IN SVCB 0 . key123 +s02.success-cases. 3600 IN SVCB 0 . ech +s03.success-cases. 3600 IN HTTPS 0 . alpn="h2,h3" no-default-alpn +s04.success-cases. 3600 IN HTTPS 0 . no-default-alpn +s05.success-cases. 3600 IN HTTPS 0 . mandatory=port alpn="dot" no-default-alpn port=853 +s06.success-cases. 3600 IN HTTPS 0 . ech="aGVsbG93b3JsZCE=" +s07.success-cases. 3600 IN HTTPS 0 . ech="aGVsbG93b3JsZCE=" +s08.success-cases. 3600 IN HTTPS 0 . key11="a" key12="a" key13="a" key14="a" key15="a" key16="a" key17="a" key18="a" key19="a" key110="a" key111="a" key112="a" key113="a" key114="a" key115="a" key116="a" key117="a" key118="a" key119="a" key120="a" key121="a" key122="a" key123="a" key124="a" key125="a" key126="a" key127="a" key128="a" key129="a" key130="a" key131="a" key132="a" key133="a" key134="a" key135="a" key136="a" key137="a" key138="a" key139="a" key140="a" key141="a" key142="a" key143="a" key144="a" key145="a" key146="a" key147="a" key148="a" key149="a" key150="a" key151="a" key152="a" key153="a" key154="a" key155="a" key156="a" key157="a" key158="a" key159="a" key160="a" key161="a" key162="a" key163="a" +s09.success-cases. 3600 IN HTTPS 0 . alpn="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" diff --git a/testdata/svcb.tdir/svcb.test b/testdata/svcb.tdir/svcb.test new file mode 100644 index 000000000..707287d5c --- /dev/null +++ b/testdata/svcb.tdir/svcb.test @@ -0,0 +1,97 @@ +# #-- svcb.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 + + +# check and write the test vectors in their respective formats +PRE=../.. +if ! $PRE/readzone svcb.test-vectors-pf.zone > svcb.test-vectors-pf.zone.out +then + echo "Could not parse presentation format zone" + exit 1 + +elif ! $PRE/readzone svcb.test-vectors-pf.zone.out > svcb.test-vectors-pf.zone.out.out +then + echo "Could not parse output from presentation format zone" + exit 1 + +elif ! $PRE/readzone svcb.test-vectors-wf.zone > svcb.test-vectors-wf.zone.out +then + echo "Could not parse RFC3597 formatted zone" + exit 1 + +elif ! $PRE/readzone svcb.test-vectors-wf.zone.out > svcb.test-vectors-wf.zone.out.out +then + echo "Could not parse output from RFC3597 formatted zone" + exit 1 +else + echo "All test zones parsed successfully" +fi + + +# check the formatting of the written files +if ! diff svcb.test-vectors-pf.zone.out svcb.test-vectors-pf.zone.out.out +then + echo "Parsing inconsistency 1" + exit 1 + +elif ! diff svcb.test-vectors-pf.zone.out svcb.test-vectors-wf.zone.out +then + echo "Parsing inconsistency 2" + exit 1 + +elif ! diff svcb.test-vectors-pf.zone.out svcb.test-vectors-wf.zone.out.out +then + echo "Parsing inconsistency 3" + exit 1 +else + echo "Parsing of SVCB and HTTPS was consistent" +fi + + +# check all the failure cases +if $PRE/readzone svcb.failure-cases-01 +then + echo "Failure case 01: ech value is not base64 encoded" + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-02 +then + echo "Failure case 02: port value needs to be a positive integer < 65536" + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-03 +then + echo "Failure case 02: 65 SvcParams is too many SvcParams; the limit is 64" + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-04 +then + echo "Failure case 04: 256 is too many characters for an alpn; maximum is 255" + echo "Incorrectly succeeded" + exit 1 +else + echo "All failure cases test successfully" +fi + + +# check all the succes and write them +if ! $PRE/readzone svcb.success-cases.zone > svcb.success-cases.zone.out +then + echo "Some particular success cases did not succeed to parse" + exit 1 + +elif ! diff svcb.success-cases.zone.out svcb.success-cases.zone.cmp +then + echo "Some success cases could not be printed" + exit 1 +else + echo "All particular success cases parsed and printed successfully" +fi + + diff --git a/testdata/svcb.tdir/svcb.test-vectors-pf.zone b/testdata/svcb.tdir/svcb.test-vectors-pf.zone new file mode 100644 index 000000000..d2cb5087b --- /dev/null +++ b/testdata/svcb.tdir/svcb.test-vectors-pf.zone @@ -0,0 +1,92 @@ +$ORIGIN test-vectors. +$TTL 3600 + +@ SOA primary admin 1 3600 1800 7200 3600 + + NS primary +primary A 127.0.0.1 +; D.1. AliasForm + +v01 SVCB 0 foo.example.com. + +; D.2. ServiceForm +; The first form is the simple "use the ownername". + +v02 SVCB 1 . + +; This vector only has a port. + +v03 SVCB 16 foo.example.com. port=53 + +; This example has a key that is not registered, its value is unquoted. + +v04 SVCB 1 foo.example.com. key667=hello + +; This example has a key that is not registered, its value is quoted and +; contains a decimal-escaped character. + +v05 SVCB 1 foo.example.com. key667="hello\210qoo" + +; Here, two IPv6 hints are quoted in the presentation format. + +v06 SVCB 1 foo.example.com. ipv6hint="2001:db8::1,2001:db8::53:1" + +; This example shows a single IPv6 hint in IPv4 mapped IPv6 presentation format. + +v07 SVCB 1 example.com. ipv6hint="2001:db8:ffff:ffff:ffff:ffff:198.51.100.100" + +; In the next vector, neither the SvcParamValues nor the mandatory keys are +; sorted in presentation format, but are correctly sorted in the wire-format. + +v08 SVCB 16 foo.example.org. (alpn=h2,h3-19 mandatory=ipv4hint,alpn + ipv4hint=192.0.2.1) + +; This last (two) vectors has an alpn value with an escaped comma and an +; escaped backslash in two presentation formats. + +v09 SVCB 16 foo.example.org. alpn="f\\\\oo\\,bar,h2" +v10 SVCB 16 foo.example.org. alpn=f\\\092oo\092,bar,h2 + + +; D.1. AliasForm + +v11 HTTPS 0 foo.example.com. + +; D.2. ServiceForm +; The first form is the simple "use the ownername". + +v12 HTTPS 1 . + +; This vector only has a port. + +v13 HTTPS 16 foo.example.com. port=53 + +; This example has a key that is not registered, its value is unquoted. + +v14 HTTPS 1 foo.example.com. key667=hello + +; This example has a key that is not registered, its value is quoted and +; contains a decimal-escaped character. + +v15 HTTPS 1 foo.example.com. key667="hello\210qoo" + +; Here, two IPv6 hints are quoted in the presentation format. + +v16 HTTPS 1 foo.example.com. ipv6hint="2001:db8::1,2001:db8::53:1" + +; This example shows a single IPv6 hint in IPv4 mapped IPv6 presentation format. + +v17 HTTPS 1 example.com. ipv6hint="2001:db8:ffff:ffff:ffff:ffff:198.51.100.100" + +; In the next vector, neither the SvcParamValues nor the mandatory keys are +; sorted in presentation format, but are correctly sorted in the wire-format. + +v18 HTTPS 16 foo.example.org. (alpn=h2,h3-19 mandatory=ipv4hint,alpn + ipv4hint=192.0.2.1) + +; This last (two) vectors has an alpn value with an escaped comma and an +; escaped backslash in two presentation formats. + +v19 HTTPS 16 foo.example.org. alpn="f\\\\oo\\,bar,h2" +v20 HTTPS 16 foo.example.org. alpn=f\\\092oo\092,bar,h2 + diff --git a/testdata/svcb.tdir/svcb.test-vectors-wf.zone b/testdata/svcb.tdir/svcb.test-vectors-wf.zone new file mode 100644 index 000000000..bf47ab75c --- /dev/null +++ b/testdata/svcb.tdir/svcb.test-vectors-wf.zone @@ -0,0 +1,232 @@ +$ORIGIN test-vectors. +$TTL 3600 + +@ SOA primary admin 1 3600 1800 7200 3600 + + NS primary +primary A 127.0.0.1 + +; D.1. AliasForm + +v01 SVCB \# 19 ( +00 00 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 ; target +) + +; D.2. ServiceForm +; The first form is the simple "use the ownername". + +v02 SVCB \# 3 ( +00 01 ; priority +00 ; target (root label) +) + +; This vector only has a port. + +v03 SVCB \# 25 ( +00 10 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 ; target +00 03 ; key 3 +00 02 ; length 2 +00 35 ; value +) + +; This example has a key that is not registered, its value is unquoted. + +v04 SVCB \# 28 ( +00 01 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 ; target +02 9b ; key 667 +00 05 ; length 5 +68 65 6c 6c 6f ; value +) + +; This example has a key that is not registered, its value is quoted and +; contains a decimal-escaped character. + +v05 SVCB \# 32 ( +00 01 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 ; target +02 9b ; key 667 +00 09 ; length 9 +68 65 6c 6c 6f d2 71 6f 6f ; value +) + +; Here, two IPv6 hints are quoted in the presentation format. + +v06 SVCB \# 55 ( +00 01 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 ; target +00 06 ; key 6 +00 20 ; length 32 +20 01 0d b8 00 00 00 00 00 00 00 00 00 00 00 01 ; first address +20 01 0d b8 00 00 00 00 00 00 00 00 00 53 00 01 ; second address +) + +; This example shows a single IPv6 hint in IPv4 mapped IPv6 presentation format. + +v07 SVCB \# 35 ( +00 01 ; priority +07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 ; target +00 06 ; key 6 +00 10 ; length 16 +20 01 0d b8 ff ff ff ff ff ff ff ff c6 33 64 64 ; address +) + +; In the next vector, neither the SvcParamValues nor the mandatory keys are +; sorted in presentation format, but are correctly sorted in the wire-format. + +v08 SVCB \# 48 ( +00 10 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 6f 72 67 00 ; target +00 00 ; key 0 +00 04 ; param length 4 +00 01 ; value: key 1 +00 04 ; value: key 4 +00 01 ; key 1 +00 09 ; param length 9 +02 ; alpn length 2 +68 32 ; alpn value +05 ; alpn length 5 +68 33 2d 31 39 ; alpn value +00 04 ; key 4 +00 04 ; param length 4 +c0 00 02 01 ; param value +) + +; This last (two) vectors has an alpn value with an escaped comma and an +; escaped backslash in two presentation formats. + +v09 SVCB \# 35 ( +00 10 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 6f 72 67 00 ; target +00 01 ; key 1 +00 0c ; param length 12 +08 ; alpn length 8 +66 5c 6f 6f 2c 62 61 72 ; alpn value +02 ; alpn length 2 +68 32 ; alpn value +) +v10 SVCB \# 35 ( +00 10 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 6f 72 67 00 ; target +00 01 ; key 1 +00 0c ; param length 12 +08 ; alpn length 8 +66 5c 6f 6f 2c 62 61 72 ; alpn value +02 ; alpn length 2 +68 32 ; alpn value +) + +; D.1. AliasForm + +v11 HTTPS \# 19 ( +00 00 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 ; target +) + +; D.2. ServiceForm +; The first form is the simple "use the ownername". + +v12 HTTPS \# 3 ( +00 01 ; priority +00 ; target (root label) +) + +; This vector only has a port. + +v13 HTTPS \# 25 ( +00 10 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 ; target +00 03 ; key 3 +00 02 ; length 2 +00 35 ; value +) + +; This example has a key that is not registered, its value is unquoted. + +v14 HTTPS \# 28 ( +00 01 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 ; target +02 9b ; key 667 +00 05 ; length 5 +68 65 6c 6c 6f ; value +) + +; This example has a key that is not registered, its value is quoted and +; contains a decimal-escaped character. + +v15 HTTPS \# 32 ( +00 01 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 ; target +02 9b ; key 667 +00 09 ; length 9 +68 65 6c 6c 6f d2 71 6f 6f ; value +) + +; Here, two IPv6 hints are quoted in the presentation format. + +v16 HTTPS \# 55 ( +00 01 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 ; target +00 06 ; key 6 +00 20 ; length 32 +20 01 0d b8 00 00 00 00 00 00 00 00 00 00 00 01 ; first address +20 01 0d b8 00 00 00 00 00 00 00 00 00 53 00 01 ; second address +) + +; This example shows a single IPv6 hint in IPv4 mapped IPv6 presentation format. + +v17 HTTPS \# 35 ( +00 01 ; priority +07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 ; target +00 06 ; key 6 +00 10 ; length 16 +20 01 0d b8 ff ff ff ff ff ff ff ff c6 33 64 64 ; address +) + +; In the next vector, neither the SvcParamValues nor the mandatory keys are +; sorted in presentation format, but are correctly sorted in the wire-format. + +v18 HTTPS \# 48 ( +00 10 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 6f 72 67 00 ; target +00 00 ; key 0 +00 04 ; param length 4 +00 01 ; value: key 1 +00 04 ; value: key 4 +00 01 ; key 1 +00 09 ; param length 9 +02 ; alpn length 2 +68 32 ; alpn value +05 ; alpn length 5 +68 33 2d 31 39 ; alpn value +00 04 ; key 4 +00 04 ; param length 4 +c0 00 02 01 ; param value +) + +; This last (two) vectors has an alpn value with an escaped comma and an +; escaped backslash in two presentation formats. + +v19 HTTPS \# 35 ( +00 10 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 6f 72 67 00 ; target +00 01 ; key 1 +00 0c ; param length 12 +08 ; alpn length 8 +66 5c 6f 6f 2c 62 61 72 ; alpn value +02 ; alpn length 2 +68 32 ; alpn value +) +v20 HTTPS \# 35 ( +00 10 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 6f 72 67 00 ; target +00 01 ; key 1 +00 0c ; param length 12 +08 ; alpn length 8 +66 5c 6f 6f 2c 62 61 72 ; alpn value +02 ; alpn length 2 +68 32 ; alpn value +) + diff --git a/testdata/zonemd_reload.tdir/zonemd_reload.conf b/testdata/zonemd_reload.tdir/zonemd_reload.conf index 27bdb4424..9afd6e2b1 100644 --- a/testdata/zonemd_reload.tdir/zonemd_reload.conf +++ b/testdata/zonemd_reload.tdir/zonemd_reload.conf @@ -19,4 +19,5 @@ auth-zone: for-upstream: yes for-downstream: yes zonefile: "zonemd_reload.zone" + zonemd-check: yes #master: "127.0.0.1@@TOPORT@" diff --git a/testdata/zonemd_reload.tdir/zonemd_reload.test b/testdata/zonemd_reload.tdir/zonemd_reload.test index 5ae1d9b0c..fbdf07511 100644 --- a/testdata/zonemd_reload.tdir/zonemd_reload.test +++ b/testdata/zonemd_reload.tdir/zonemd_reload.test @@ -41,7 +41,7 @@ echo "> cat logfiles" cat fwd.log cat unbound.log echo "> check answer" -if grep www.example.com outfile | grep "127.0.0.1"; then +if grep www.example.com outfile | grep "192.0.2.1"; then echo "OK" else echo "Not OK" diff --git a/testdata/zonemd_reload.tdir/zonemd_reload.zone b/testdata/zonemd_reload.tdir/zonemd_reload.zone index 16b631c7b..01e57a738 100644 --- a/testdata/zonemd_reload.tdir/zonemd_reload.zone +++ b/testdata/zonemd_reload.tdir/zonemd_reload.zone @@ -1,8 +1,8 @@ example.com. IN SOA ns.example.com. hostmaster.example.com. 200154054 28800 7200 604800 3600 example.com. IN NS ns.example.com. -example.com. IN ZONEMD 200154054 1 2 EFAA5B78B38AB1C45DE57B8167BCCE906451D0E72118E1F5E80B5F0C3CF04BFFC65D53C011185528EAD439D6F3A02F511961E090E5E4E0DFA013BD276D728B22 -www.example.com. IN A 127.0.0.1 -ns.example.com. IN A 127.0.0.1 +example.com. IN ZONEMD 200154054 1 2 D207FBBD1403DC8FDDC0159AB1F4B4C54A2FEB814E5CB1E82841C51D1372E78E4F6C75F7A9D710CC78C54E2DB3B92D07C72990644F93E1C44AC356EACA3980C5 +www.example.com. IN A 192.0.2.1 +ns.example.com. IN A 192.0.2.1 bar.example.com. IN A 1.2.3.4 ding.example.com. IN A 1.2.3.4 foo.example.com. IN A 1.2.3.4 diff --git a/util/config_file.c b/util/config_file.c index 341978d97..50b0e645a 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -238,8 +238,10 @@ config_create(void) cfg->hide_identity = 0; cfg->hide_version = 0; cfg->hide_trustanchor = 0; + cfg->hide_http_user_agent = 0; cfg->identity = NULL; cfg->version = NULL; + cfg->http_user_agent = NULL; cfg->nsid_cfg_str = NULL; cfg->nsid = NULL; cfg->nsid_len = 0; @@ -253,6 +255,7 @@ config_create(void) cfg->val_date_override = 0; cfg->val_sig_skew_min = 3600; /* at least daylight savings trouble */ cfg->val_sig_skew_max = 86400; /* at most timezone settings trouble */ + cfg->val_max_restart = 5; cfg->val_clean_additional = 1; cfg->val_log_level = 0; cfg->val_log_squelch = 0; @@ -594,8 +597,10 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_YNO("hide-identity:", hide_identity) else S_YNO("hide-version:", hide_version) else S_YNO("hide-trustanchor:", hide_trustanchor) + else S_YNO("hide-http-user-agent:", hide_http_user_agent) else S_STR("identity:", identity) else S_STR("version:", version) + else S_STR("http-user-agent:", http_user_agent) else if(strcmp(opt, "nsid:") == 0) { free(cfg->nsid_cfg_str); if (!(cfg->nsid_cfg_str = strdup(val))) @@ -764,12 +769,14 @@ int config_set_option(struct config_file* cfg, const char* opt, #endif else if(strcmp(opt, "define-tag:") ==0) { return config_add_tag(cfg, val); - /* val_sig_skew_min and max are copied into val_env during init, - * so this does not update val_env with set_option */ + /* val_sig_skew_min, max and val_max_restart are copied into val_env + * during init so this does not update val_env with set_option */ } else if(strcmp(opt, "val-sig-skew-min:") == 0) { IS_NUMBER_OR_ZERO; cfg->val_sig_skew_min = (int32_t)atoi(val); } else if(strcmp(opt, "val-sig-skew-max:") == 0) { IS_NUMBER_OR_ZERO; cfg->val_sig_skew_max = (int32_t)atoi(val); } + else if(strcmp(opt, "val-max-restart:") == 0) + { IS_NUMBER_OR_ZERO; cfg->val_max_restart = (int32_t)atoi(val); } else if (strcmp(opt, "outgoing-interface:") == 0) { char* d = strdup(val); char** oi = @@ -1052,8 +1059,10 @@ config_get_option(struct config_file* cfg, const char* opt, else O_YNO(opt, "hide-identity", hide_identity) else O_YNO(opt, "hide-version", hide_version) else O_YNO(opt, "hide-trustanchor", hide_trustanchor) + else O_YNO(opt, "hide-http-user-agent", hide_http_user_agent) else O_STR(opt, "identity", identity) else O_STR(opt, "version", version) + else O_STR(opt, "http-user-agent", http_user_agent) else O_STR(opt, "nsid", nsid_cfg_str) else O_STR(opt, "target-fetch-policy", target_fetch_policy) else O_YNO(opt, "harden-short-bufsize", harden_short_bufsize) @@ -1190,6 +1199,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_DEC(opt, "fast-server-permil", fast_server_permil) else O_DEC(opt, "val-sig-skew-min", val_sig_skew_min) else O_DEC(opt, "val-sig-skew-max", val_sig_skew_max) + else O_DEC(opt, "val-max-restart", val_max_restart) else O_YNO(opt, "qname-minimisation", qname_minimisation) else O_YNO(opt, "qname-minimisation-strict", qname_minimisation_strict) else O_IFC(opt, "define-tag", num_tags, tagname) @@ -1528,6 +1538,7 @@ config_delete(struct config_file* cfg) #endif free(cfg->identity); free(cfg->version); + free(cfg->http_user_agent); free(cfg->nsid_cfg_str); free(cfg->nsid); free(cfg->module_conf); @@ -1693,6 +1704,37 @@ int cfg_condense_ports(struct config_file* cfg, int** avail) return num; } +void cfg_apply_local_port_policy(struct config_file* cfg, int num) { +(void)cfg; +(void)num; +#ifdef USE_LINUX_IP_LOCAL_PORT_RANGE + { + int i = 0; + FILE* range_fd; + if ((range_fd = fopen(LINUX_IP_LOCAL_PORT_RANGE_PATH, "r")) != NULL) { + int min_port = 0; + int max_port = num - 1; + if (fscanf(range_fd, "%d %d", &min_port, &max_port) == 2) { + for(i=0; ioutgoing_avail_ports[i] = 0; + } + for(i=max_port+1; ioutgoing_avail_ports[i] = 0; + } + } else { + log_err("unexpected port range in %s", + LINUX_IP_LOCAL_PORT_RANGE_PATH); + } + fclose(range_fd); + } else { + log_err("failed to read from file: %s (%s)", + LINUX_IP_LOCAL_PORT_RANGE_PATH, + strerror(errno)); + } + } +#endif +} + /** print error with file and line number */ static void ub_c_error_va_list(const char *fmt, va_list args) { diff --git a/util/config_file.h b/util/config_file.h index d62babba1..aed6812da 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -340,10 +340,14 @@ struct config_file { int hide_version; /** do not report trustanchor (trustanchor.unbound) */ int hide_trustanchor; + /** do not report the User-Agent HTTP header */ + int hide_http_user_agent; /** identity, hostname is returned if "". */ char* identity; /** version, package version returned if "". */ char* version; + /** User-Agent for HTTP header */ + char* http_user_agent; /** nsid */ char *nsid_cfg_str; uint8_t *nsid; @@ -373,6 +377,8 @@ struct config_file { int32_t val_sig_skew_min; /** the maximum for signature clock skew */ int32_t val_sig_skew_max; + /** max number of query restarts, number of IPs to probe */ + int32_t val_max_restart; /** this value sets the number of seconds before revalidating bogus */ int bogus_ttl; /** should validator clean additional section for secure msgs */ @@ -1184,6 +1190,13 @@ int cfg_mark_ports(const char* str, int allow, int* avail, int num); */ int cfg_condense_ports(struct config_file* cfg, int** avail); +/** + * Apply system specific port range policy. + * @param cfg: config file. + * @param num: size of the array (65536). + */ +void cfg_apply_local_port_policy(struct config_file* cfg, int num); + /** * Scan ports available * @param avail: the array from cfg. @@ -1323,5 +1336,9 @@ int if_is_https(const char* ifname, const char* port, int https_port); */ int cfg_has_https(struct config_file* cfg); +#ifdef USE_LINUX_IP_LOCAL_PORT_RANGE +#define LINUX_IP_LOCAL_PORT_RANGE_PATH "/proc/sys/net/ipv4/ip_local_port_range" +#endif + #endif /* UTIL_CONFIG_FILE_H */ diff --git a/util/configlexer.c b/util/configlexer.c index e31e36739..af30f0643 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 349 -#define YY_END_OF_BUFFER 350 +#define YY_NUM_RULES 352 +#define YY_END_OF_BUFFER 353 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,387 +363,391 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3445] = +static const flex_int16_t yy_accept[3484] = { 0, - 1, 1, 323, 323, 327, 327, 331, 331, 335, 335, - 1, 1, 339, 339, 343, 343, 350, 347, 1, 321, - 321, 348, 2, 348, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 323, 324, 324, 325, - 348, 327, 328, 328, 329, 348, 334, 331, 332, 332, - 333, 348, 335, 336, 336, 337, 348, 346, 322, 2, - 326, 348, 346, 342, 339, 340, 340, 341, 348, 343, - 344, 344, 345, 348, 347, 0, 1, 2, 2, 2, - 2, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 1, 1, 326, 326, 330, 330, 334, 334, 338, 338, + 1, 1, 342, 342, 346, 346, 353, 350, 1, 324, + 324, 351, 2, 351, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 326, 327, 327, 328, + 351, 330, 331, 331, 332, 351, 337, 334, 335, 335, + 336, 351, 338, 339, 339, 340, 351, 349, 325, 2, + 329, 351, 349, 345, 342, 343, 343, 344, 351, 346, + 347, 347, 348, 351, 350, 0, 1, 2, 2, 2, + 2, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 323, - 0, 327, 0, 334, 0, 331, 335, 0, 346, 0, - 2, 2, 346, 342, 0, 339, 343, 0, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 326, + 0, 330, 0, 337, 0, 334, 338, 0, 349, 0, + 2, 2, 349, 345, 0, 342, 346, 0, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 346, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 349, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 128, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 137, - 347, 347, 347, 347, 347, 347, 347, 346, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 128, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 137, + 350, 350, 350, 350, 350, 350, 350, 349, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 112, 347, 320, - 347, 347, 347, 347, 347, 347, 347, 8, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 112, 350, 323, + 350, 350, 350, 350, 350, 350, 350, 8, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 347, 347, 347, 347, 347, 347, 347, 129, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 142, 347, 347, 346, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 350, 350, 350, 350, 350, 350, 350, 129, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 142, 350, 350, 349, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 313, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 316, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 346, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 67, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 245, 347, - 14, 15, 347, 19, 18, 347, 347, 229, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 349, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 67, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 248, 350, 14, 15, 350, 19, 18, 350, + 350, 232, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 135, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 227, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 3, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 135, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 230, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 3, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 346, 347, 347, 347, 347, 347, 347, 347, - 307, 347, 347, 306, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 330, 347, 347, 347, 347, 347, 347, 347, 347, - 66, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 349, + 350, 350, 350, 350, 350, 350, 350, 310, 350, 350, + 309, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 333, 350, 350, 350, 350, 350, 350, 350, 350, 66, - 347, 347, 347, 347, 347, 347, 347, 70, 347, 276, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 314, - 315, 347, 347, 347, 347, 347, 347, 347, 71, 347, - 347, 136, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 132, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 216, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 21, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 70, 350, 279, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 317, 318, + 350, 350, 350, 350, 350, 350, 350, 71, 350, 350, + 136, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 132, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 219, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 21, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 161, - 347, 347, 347, 347, 347, 346, 330, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 110, 347, - 347, 347, 347, 347, 347, 347, 284, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 185, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 160, 347, 347, 347, 347, 347, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 162, + 350, 350, 350, 350, 350, 349, 333, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 110, 350, + 350, 350, 350, 350, 350, 350, 287, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 188, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 109, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 35, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 36, 347, 347, 347, 347, 347, 347, 347, 347, + 350, 350, 350, 350, 350, 350, 161, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 109, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 35, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 347, 347, 347, 347, 347, 347, 347, 68, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 134, 347, 347, - 347, 346, 347, 347, 347, 347, 347, 127, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 69, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 249, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 186, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 350, 350, 350, 36, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 68, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 134, 350, 350, 350, 349, 350, 350, 350, 350, 350, + 127, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 69, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 252, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 189, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 347, 347, 347, 347, 347, 347, 347, 347, 57, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 267, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 61, 347, 62, 347, 347, 347, 347, 347, - 113, 347, 114, 347, 347, 347, 347, 111, 347, 347, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 57, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 270, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 61, 350, 62, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 7, - 347, 347, 347, 347, 346, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 238, 347, 347, 347, 347, 163, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 250, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 350, 350, 350, 350, 350, 113, 350, 114, 350, 350, + 350, 350, 111, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 7, 350, 350, 350, 350, + 349, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 241, + 350, 350, 350, 350, 165, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 253, 350, 350, 350, 350, 350, 350, 350, 350, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 48, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 58, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 208, 347, 207, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 16, - 17, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 72, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 215, 347, 347, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 48, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 58, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 211, 350, 210, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 16, 17, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 347, 347, 347, 347, 116, 347, 115, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 199, 347, 347, 347, 347, 347, 347, 347, 347, - 143, 347, 347, 347, 346, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 104, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 92, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 228, 347, 347, 347, 347, 347, 347, 347, 347, + 350, 350, 72, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 218, 350, 350, 350, 350, + 350, 350, 116, 350, 115, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 202, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 143, + 350, 350, 350, 349, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 104, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 92, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 97, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 65, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 202, 203, 347, 347, 347, 278, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 6, 347, 347, 347, 347, 347, 347, 297, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 282, 347, 347, 347, 347, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 231, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 97, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 65, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 205, 206, 350, 350, 350, 281, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 6, 350, 350, 350, 350, 350, 350, 300, 350, - 347, 347, 308, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 45, 347, 347, 347, - 347, 47, 347, 347, 347, 93, 347, 347, 347, 347, - 347, 55, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 346, 347, 195, 347, 347, 347, 138, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 220, - 347, 196, 347, 347, 347, 235, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 56, 347, 347, 347, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 285, 350, 350, 350, + 350, 350, 350, 311, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 45, 350, 350, + 350, 350, 47, 350, 350, 350, 93, 350, 350, 350, + 350, 350, 55, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 349, 350, 198, 350, 350, 350, + 138, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 223, 350, 199, 350, 350, 350, 238, 350, 350, - 347, 347, 347, 347, 347, 347, 347, 140, 121, 347, - 122, 347, 347, 347, 120, 347, 347, 347, 347, 347, - 347, 347, 347, 158, 347, 347, 53, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 266, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 197, 347, 347, 347, 347, 347, 200, - 347, 206, 347, 347, 347, 347, 347, 347, 234, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 108, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 56, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 140, + 121, 350, 122, 350, 350, 350, 120, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 158, 350, 350, 53, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 269, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 200, 350, 350, + 350, 350, 350, 203, 350, 209, 350, 350, 350, 350, + 350, 350, 237, 350, 350, 350, 350, 350, 350, 350, - 347, 347, 347, 347, 133, 347, 347, 347, 347, 347, - 347, 347, 63, 347, 347, 347, 29, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 20, 347, - 347, 347, 347, 347, 347, 30, 39, 347, 168, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 193, 347, 347, 346, 347, 347, 347, 347, - 347, 347, 80, 82, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 286, 347, 347, - 347, 347, 246, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 108, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 133, 350, + 350, 350, 350, 350, 350, 350, 63, 350, 350, 350, + 29, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 20, 350, 350, 350, 350, 350, 350, 30, + 39, 350, 170, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 196, 350, 350, + 349, 350, 350, 350, 350, 350, 350, 80, 82, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 347, 347, 347, 347, 347, 123, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 157, 347, 49, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 301, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 162, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 295, 347, 347, 347, 226, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 311, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 179, 347, + 350, 350, 289, 350, 350, 350, 350, 249, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 123, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 157, 350, 49, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 304, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 164, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 298, - 347, 347, 347, 347, 347, 347, 347, 347, 117, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 174, 347, 187, 347, 347, 347, 347, 347, 347, 346, - 347, 146, 347, 347, 347, 347, 347, 103, 347, 347, - 347, 347, 218, 347, 347, 347, 347, 347, 347, 236, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 258, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 139, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 350, 350, 350, 229, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 314, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 182, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 117, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 177, 350, 190, + 350, 350, 350, 350, 350, 350, 350, 349, 350, 146, + 350, 350, 350, 350, 350, 103, 350, 350, 350, 350, + 221, 350, 350, 350, 350, 350, 350, 239, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 347, 347, 178, 347, 347, 347, 347, 347, 347, 83, - 347, 84, 347, 347, 347, 347, 347, 64, 304, 347, - 347, 347, 347, 347, 91, 188, 347, 209, 347, 239, - 347, 347, 201, 279, 347, 347, 347, 347, 347, 347, - 76, 347, 190, 347, 347, 347, 347, 347, 9, 347, - 347, 347, 347, 347, 107, 347, 347, 347, 347, 271, - 347, 347, 347, 347, 217, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 350, 350, 350, 350, 261, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 139, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 181, 350, 350, 350, 350, 350, 350, 83, + 350, 84, 350, 350, 350, 350, 350, 64, 307, 350, + 350, 350, 350, 350, 91, 191, 350, 212, 350, 242, + 350, 350, 204, 282, 350, 350, 350, 350, 350, 350, + 76, 350, 193, 350, 350, 350, 350, 350, 9, 350, + 350, 350, 350, 350, 107, 350, 350, 350, 350, 274, + 350, 350, 350, 350, 220, 350, 350, 350, 350, 350, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 346, 347, 347, 347, 347, - 177, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 164, 347, 285, 347, 347, 347, 347, 347, 257, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 230, 347, 347, 347, 347, 347, 277, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 305, 347, - 189, 347, 347, 347, 347, 347, 347, 347, 347, 75, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 349, 350, 350, 350, + 350, 180, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 166, 350, 288, 350, 350, 350, 350, 350, + 260, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 233, 350, 350, 350, 350, 350, 280, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 77, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 106, 347, 347, 347, 347, 269, 347, 347, 347, 347, - 281, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 222, 37, 31, 33, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 38, 347, - 32, 34, 347, 347, 347, 347, 347, 347, 347, 347, - 102, 347, 347, 347, 347, 347, 347, 347, 347, 346, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 224, 221, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 350, 350, 350, 350, 350, 163, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 308, 350, 192, 350, 350, 350, 350, 350, 350, + 350, 350, 75, 77, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 106, 350, 350, 350, 350, 272, 350, + 350, 350, 350, 284, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 225, 37, 31, 33, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 38, 350, 32, 34, 350, 350, 350, 350, 350, + 350, 350, 350, 102, 350, 176, 350, 350, 350, 350, - 347, 74, 347, 347, 347, 141, 347, 124, 347, 347, - 347, 347, 347, 347, 347, 347, 159, 50, 347, 347, - 347, 338, 13, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 299, 347, 302, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 12, 347, 347, - 22, 347, 347, 347, 347, 347, 275, 347, 347, 347, - 347, 283, 347, 347, 347, 78, 347, 232, 347, 347, - 347, 347, 347, 223, 347, 347, 73, 347, 347, 347, - 347, 347, 23, 347, 347, 46, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 173, 172, + 350, 350, 350, 349, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 227, 224, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 74, 350, 350, 350, 141, + 350, 124, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 159, 50, 350, 350, 350, 341, 13, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 302, 350, + 305, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 12, 350, 350, 22, 350, 350, 350, 350, + 350, 278, 350, 350, 350, 350, 286, 350, 350, 350, - 347, 347, 338, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 225, 219, 347, 237, 347, 347, 287, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 85, 347, 347, 347, 347, 270, 347, 347, 347, - 347, 205, 347, 347, 347, 347, 347, 231, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 309, - 310, 170, 347, 347, 79, 347, 347, 347, 347, 180, - 347, 347, 347, 118, 119, 347, 347, 347, 25, 347, + 78, 350, 235, 350, 350, 350, 350, 350, 226, 350, + 350, 73, 350, 350, 350, 350, 350, 23, 350, 350, + 46, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 175, 174, 350, 350, 341, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 228, 222, 350, + 240, 350, 350, 290, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 85, 350, 350, + 350, 350, 273, 350, 350, 350, 350, 208, 350, 350, - 347, 165, 347, 167, 347, 210, 347, 347, 347, 347, - 171, 347, 347, 347, 347, 240, 347, 347, 347, 347, - 347, 347, 347, 148, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 248, 347, 347, 347, - 347, 347, 347, 347, 318, 347, 27, 347, 280, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 89, 211, 347, 347, 268, 347, 303, - 347, 204, 347, 347, 347, 347, 347, 59, 347, 347, - 347, 347, 347, 347, 4, 347, 347, 347, 347, 131, - 147, 347, 347, 347, 184, 347, 347, 347, 347, 347, + 350, 350, 350, 234, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 312, 313, 172, 350, 350, + 79, 350, 350, 350, 350, 183, 350, 350, 350, 118, + 119, 350, 350, 350, 25, 350, 350, 167, 350, 169, + 350, 213, 350, 350, 350, 350, 173, 350, 350, 350, + 350, 243, 350, 350, 350, 350, 350, 350, 350, 148, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 251, 350, 350, 350, 350, 350, 350, 350, + 321, 350, 27, 350, 283, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 243, 40, 41, 347, 347, 347, 347, - 347, 347, 347, 288, 347, 347, 347, 347, 347, 347, - 347, 256, 347, 347, 347, 347, 347, 347, 347, 347, - 214, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 88, 347, 60, 274, 347, 244, 347, - 347, 347, 347, 347, 11, 347, 347, 347, 347, 347, - 347, 347, 347, 130, 347, 347, 347, 347, 212, 94, - 347, 347, 43, 347, 347, 347, 347, 347, 347, 347, - 347, 176, 347, 347, 347, 347, 347, 347, 347, 150, + 89, 214, 350, 350, 271, 350, 306, 350, 207, 350, + 350, 350, 350, 350, 59, 350, 350, 350, 350, 350, + 350, 4, 350, 350, 350, 350, 131, 147, 350, 350, + 350, 187, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 246, 40, 41, 350, 350, 350, 350, 350, 350, 350, + 291, 350, 350, 350, 350, 350, 350, 350, 259, 350, + 350, 350, 350, 350, 350, 350, 350, 217, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 88, 350, 60, 277, 350, 247, 350, 350, 350, - 347, 347, 347, 347, 247, 347, 347, 347, 347, 347, - 255, 347, 347, 347, 347, 144, 347, 347, 347, 125, - 126, 347, 347, 347, 96, 100, 95, 347, 347, 347, - 347, 86, 347, 347, 347, 347, 347, 347, 10, 347, - 347, 347, 347, 347, 272, 312, 347, 347, 347, 347, - 347, 317, 42, 347, 347, 347, 347, 347, 175, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 101, 99, 347, 54, 347, 347, - 87, 300, 347, 347, 347, 347, 24, 347, 347, 347, + 350, 350, 11, 350, 350, 350, 350, 350, 350, 350, + 350, 130, 350, 350, 350, 350, 215, 94, 350, 350, + 43, 350, 350, 350, 350, 350, 350, 350, 350, 179, + 350, 350, 350, 350, 350, 350, 350, 150, 350, 350, + 350, 350, 250, 350, 350, 350, 350, 350, 258, 350, + 350, 350, 350, 144, 350, 350, 350, 125, 126, 350, + 350, 350, 96, 100, 95, 160, 350, 350, 350, 350, + 86, 350, 350, 350, 350, 350, 350, 10, 350, 350, + 350, 350, 350, 275, 315, 350, 350, 350, 350, 350, + 320, 42, 350, 350, 350, 350, 350, 178, 350, 350, - 347, 347, 198, 347, 347, 347, 347, 347, 213, 347, - 347, 347, 347, 347, 347, 347, 347, 194, 347, 347, - 166, 81, 347, 347, 347, 347, 347, 289, 347, 347, - 347, 347, 347, 347, 347, 252, 347, 347, 251, 145, - 347, 347, 98, 51, 347, 151, 152, 155, 156, 153, - 154, 90, 298, 347, 347, 273, 347, 347, 347, 26, - 347, 169, 347, 347, 347, 347, 192, 347, 242, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 182, - 181, 44, 347, 347, 347, 347, 347, 347, 347, 347, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 101, 99, 350, 54, 350, 350, 87, + 303, 350, 350, 350, 350, 24, 350, 350, 350, 350, + 350, 201, 350, 350, 350, 350, 350, 216, 350, 350, + 350, 350, 350, 350, 350, 350, 197, 350, 350, 168, + 81, 350, 350, 350, 350, 350, 292, 350, 350, 350, + 350, 350, 350, 350, 255, 350, 350, 254, 145, 350, + 350, 98, 51, 350, 151, 152, 155, 156, 153, 154, + 90, 301, 350, 350, 276, 350, 350, 350, 26, 350, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 296, 347, 347, 347, 347, 105, - 347, 241, 347, 265, 293, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 319, 347, 52, 5, - 347, 347, 233, 347, 347, 294, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 253, 28, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 254, - 347, 347, 347, 149, 347, 347, 347, 347, 347, 347, - 347, 347, 183, 347, 191, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 290, 347, 347, 347, 347, 347, + 171, 350, 350, 350, 350, 195, 350, 245, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 185, 184, + 44, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 299, 350, 350, 350, 350, 105, 350, + 244, 350, 268, 296, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 322, 350, 52, 5, 350, + 350, 236, 350, 350, 297, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 256, 28, 350, 350, 350, 350, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 316, 347, 347, 261, 347, 347, 347, 347, - 347, 291, 347, 347, 347, 347, 347, 347, 292, 347, - 347, 347, 259, 347, 262, 263, 347, 347, 347, 347, - 347, 260, 264, 0 + 350, 350, 350, 350, 350, 350, 350, 350, 257, 350, + 350, 350, 149, 350, 350, 350, 350, 350, 350, 350, + 350, 186, 350, 194, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 293, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 319, 350, 350, 264, 350, 350, 350, 350, 350, + 294, 350, 350, 350, 350, 350, 350, 295, 350, 350, + 350, 262, 350, 265, 266, 350, 350, 350, 350, 350, + 263, 267, 0 } ; static const YY_CHAR yy_ec[256] = @@ -786,17 +790,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[3463] = +static const flex_int16_t yy_base[3502] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 4039, 3298, 81, 6721, - 6721, 6721, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 5204, 5022, 81, 6793, + 6793, 6793, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 197, 145, - 185, 199, 208, 213, 178, 123, 3236, 6721, 6721, 6721, - 107, 2864, 6721, 6721, 6721, 154, 2451, 2010, 6721, 6721, - 6721, 245, 1786, 6721, 6721, 6721, 163, 1733, 6721, 249, - 6721, 253, 148, 1670, 1574, 6721, 6721, 6721, 257, 1426, - 6721, 6721, 6721, 233, 1294, 263, 201, 0, 267, 0, + 185, 199, 208, 213, 178, 123, 4580, 6793, 6793, 6793, + 107, 3835, 6793, 6793, 6793, 154, 3459, 3338, 6793, 6793, + 6793, 245, 3159, 6793, 6793, 6793, 163, 2930, 6793, 249, + 6793, 253, 148, 2502, 2483, 6793, 6793, 6793, 257, 2236, + 6793, 6793, 6793, 233, 1695, 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, @@ -804,8 +808,8 @@ static const flex_int16_t yy_base[3463] = 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, 1266, - 419, 1115, 422, 1023, 429, 930, 888, 433, 775, 437, + 367, 389, 390, 394, 393, 395, 396, 403, 404, 1436, + 419, 1297, 422, 1003, 429, 930, 888, 433, 775, 437, 441, 0, 433, 705, 447, 479, 287, 452, 411, 445, 426, 446, 447, 448, 449, 450, 451, 453, 452, 456, 470, 234, 463, 473, 481, 479, 476, 483, 486, 487, @@ -826,737 +830,747 @@ static const flex_int16_t yy_base[3463] = 738, 741, 745, 743, 750, 752, 760, 755, 756, 771, 763, 766, 762, 774, 773, 765, 769, 794, 799, 782, 787, 800, 801, 804, 802, 803, 806, 808, 809, 814, - 818, 819, 823, 807, 825, 827, 834, 829, 6721, 831, + 818, 819, 823, 807, 825, 827, 834, 829, 6793, 831, 838, 846, 839, 847, 850, 848, 854, 856, 836, 866, - 864, 867, 876, 898, 849, 871, 868, 878, 881, 6721, + 864, 867, 876, 898, 849, 871, 868, 878, 881, 6793, 884, 882, 922, 890, 891, 908, 910, 859, 909, 911, - 904, 912, 933, 906, 915, 929, 945, 942, 920, 930, + 904, 912, 933, 906, 920, 915, 945, 942, 930, 943, - 944, 946, 948, 958, 953, 955, 956, 957, 966, 861, - 961, 962, 972, 964, 973, 974, 978, 979, 980, 987, - 993, 985, 976, 988, 994, 996, 999, 998, 1011, 1008, - 1006, 1004, 1001, 1017, 1027, 1019, 1030, 1031, 1034, 1033, - 1022, 1043, 1032, 1047, 1048, 1039, 1049, 1057, 1054, 1041, - 1055, 1059, 1060, 1061, 1063, 1066, 1067, 1068, 1069, 1073, - 1077, 1071, 1087, 1074, 1082, 1089, 1084, 6721, 1091, 6721, - 1093, 1094, 1095, 1096, 1100, 1098, 1097, 6721, 1101, 1107, - 1108, 1099, 1116, 1111, 1129, 1122, 1112, 1124, 1130, 1131, - 1134, 1142, 1137, 1138, 1146, 1139, 1143, 1144, 1147, 1150, + 944, 946, 952, 954, 955, 953, 957, 958, 966, 861, + 961, 970, 981, 962, 964, 968, 971, 974, 986, 983, + 990, 991, 993, 995, 997, 996, 1001, 999, 1022, 1004, + 1002, 1000, 1016, 1017, 1024, 1023, 1025, 1028, 1030, 1029, + 1037, 1041, 1038, 1046, 1047, 1048, 1049, 1059, 1054, 1055, + 1056, 1060, 1062, 1063, 1066, 1068, 1069, 1071, 1073, 1074, + 1080, 1081, 1085, 1089, 1075, 1090, 1082, 6793, 1097, 6793, + 1092, 1095, 1099, 1100, 1101, 1102, 1105, 6793, 1107, 1110, + 1109, 1112, 1120, 1115, 1136, 1111, 1118, 1123, 1135, 1119, + 1137, 1145, 1140, 1141, 1148, 1143, 1146, 1147, 1149, 1150, - 1151, 1152, 1155, 1158, 1159, 1162, 1179, 6721, 1161, 1163, - 1171, 1165, 1170, 1172, 1176, 1190, 1191, 1173, 1197, 1201, - 1203, 1210, 1206, 1207, 1208, 1209, 1213, 1182, 1214, 1218, - 1216, 1222, 1225, 1224, 1226, 1230, 1227, 1228, 1229, 1245, - 6721, 1237, 1238, 1249, 1256, 1252, 1254, 1241, 1257, 1255, - 1258, 1259, 1261, 1265, 517, 1272, 1278, 1268, 1273, 1281, - 1279, 1283, 1282, 1284, 1287, 1290, 1288, 1289, 1301, 1298, - 1303, 1309, 1312, 1314, 1316, 1323, 1325, 1310, 1318, 1326, - 1322, 1320, 1328, 1332, 1333, 1321, 1334, 1337, 1346, 1343, - 1342, 1345, 1348, 1351, 1349, 1354, 1356, 1355, 1357, 1365, + 1153, 1156, 1159, 1161, 1155, 1162, 1178, 6793, 1163, 1167, + 1165, 1168, 1176, 1182, 1173, 1181, 1191, 1190, 1201, 1193, + 1199, 1213, 1202, 1203, 1211, 1210, 1215, 1220, 1216, 1222, + 1224, 1225, 1227, 1228, 1226, 1230, 1231, 1234, 1232, 1238, + 1240, 6793, 1247, 1244, 1250, 1255, 1257, 1258, 1259, 1260, + 1261, 1262, 1263, 1264, 1266, 517, 1271, 1282, 1289, 1272, + 1291, 1275, 1290, 1286, 1288, 1265, 1292, 1296, 1294, 1307, + 1298, 1309, 1314, 1322, 1318, 1320, 1327, 1329, 1304, 1324, + 1299, 1326, 1330, 1332, 1334, 1333, 1335, 1341, 1339, 1348, + 1344, 1346, 1345, 1347, 1351, 1353, 1355, 1356, 1357, 1359, - 1358, 1366, 1370, 1367, 1368, 1372, 1376, 1374, 1383, 1384, - 1386, 6721, 1393, 1391, 1394, 1395, 1402, 1403, 1404, 1389, - 1396, 1408, 1410, 1411, 1412, 1418, 1413, 1419, 1420, 1424, - 1425, 1427, 1435, 1430, 1428, 1445, 1444, 1446, 1437, 1448, - 1449, 1433, 1456, 1453, 1463, 1461, 1459, 1460, 1472, 1467, - 1468, 1469, 1476, 1473, 1477, 1478, 1475, 1490, 1487, 1479, - 1499, 1496, 1498, 1506, 1501, 1485, 1507, 1504, 1512, 1511, - 1515, 1516, 1517, 1518, 1525, 1520, 1521, 1522, 1526, 1527, - 1528, 1531, 1535, 1546, 1532, 1539, 1542, 1544, 1548, 1549, - 1551, 1556, 1557, 1558, 1559, 1560, 1561, 1567, 1564, 1571, + 1366, 1361, 1373, 1369, 1371, 1372, 1368, 1387, 1376, 1379, + 1391, 1392, 1389, 1390, 6793, 1399, 1398, 1401, 1402, 1408, + 1409, 1410, 1400, 1411, 1414, 1417, 1418, 1419, 1425, 1422, + 1426, 1420, 1427, 1433, 1432, 1440, 1446, 1435, 1450, 1451, + 1453, 1437, 1449, 1456, 1457, 1465, 1462, 1466, 1468, 1464, + 1469, 1478, 1470, 1473, 1475, 1485, 1481, 1482, 1487, 1484, + 1496, 1498, 1490, 1507, 1499, 1509, 1516, 1502, 1488, 1517, + 1506, 1518, 1512, 1521, 1522, 1523, 1526, 1533, 1528, 1529, + 1534, 1535, 1536, 1537, 1531, 1544, 1547, 1545, 1548, 1551, + 1552, 1553, 1557, 1560, 1555, 1561, 1566, 1567, 1568, 1570, - 1570, 1572, 1582, 1580, 1583, 1585, 1586, 1587, 1589, 1590, - 1592, 1597, 1598, 1604, 1606, 1607, 1609, 1608, 1612, 1620, - 1610, 1618, 1625, 1619, 1626, 1627, 1630, 1611, 1637, 1638, - 1641, 1643, 1645, 6721, 1631, 1634, 1646, 1649, 1651, 1652, - 1655, 1662, 1657, 1660, 1658, 1659, 1661, 1685, 6721, 1664, - 6721, 6721, 1669, 6721, 6721, 1671, 1668, 6721, 1672, 1682, - 1683, 1688, 1695, 1700, 1698, 1675, 1689, 1702, 1712, 1723, - 1708, 1710, 1711, 1714, 1715, 1716, 1721, 1719, 1717, 1728, - 1734, 1746, 1743, 1747, 1744, 1749, 1751, 1755, 1758, 1757, - 1764, 1765, 1756, 1766, 1769, 1770, 1772, 1771, 1774, 1777, + 1558, 1578, 1588, 1569, 1580, 1582, 1581, 1589, 1590, 1591, + 1596, 1597, 1598, 1600, 1601, 1608, 1611, 1602, 1605, 1614, + 1615, 1617, 1618, 1627, 1619, 1628, 1632, 1633, 1634, 1622, + 1635, 1638, 1640, 1641, 1645, 1646, 1648, 6793, 1652, 1660, + 1653, 1658, 1655, 1656, 1661, 1669, 1664, 1668, 1665, 1666, + 1670, 1692, 6793, 1674, 6793, 6793, 1676, 6793, 6793, 1677, + 1678, 6793, 1682, 1687, 1699, 1698, 1705, 1707, 1709, 1685, + 1710, 1680, 1719, 1725, 1716, 1717, 1718, 1723, 1730, 1721, + 1731, 1728, 1738, 1742, 1740, 1746, 1749, 1754, 1756, 1758, + 1750, 1761, 1767, 1764, 1770, 1772, 1775, 1760, 1776, 1778, - 1780, 1781, 1778, 1776, 1783, 1793, 1784, 1798, 1801, 6721, - 1799, 1808, 1803, 1812, 1809, 1813, 1815, 1810, 1811, 1821, - 1824, 1817, 1826, 1827, 1828, 1829, 1830, 1831, 1834, 1836, - 1840, 1838, 1849, 1839, 6721, 1842, 1852, 1841, 1854, 1853, - 1857, 1863, 1855, 1856, 1864, 1866, 1876, 1871, 1867, 1874, - 1877, 1878, 1880, 1884, 6721, 1883, 1889, 1890, 1891, 1892, - 1894, 1897, 1899, 1900, 1901, 1903, 1904, 1905, 1906, 1915, - 1907, 1912, 1918, 1919, 1922, 1927, 1929, 1931, 1939, 1930, - 1932, 1941, 1934, 1940, 1942, 1944, 1945, 1947, 1957, 1959, - 1946, 1961, 1956, 1958, 1969, 1971, 1968, 1973, 1974, 1975, + 1779, 1780, 1782, 1781, 1784, 1787, 1790, 1791, 1793, 1786, + 1794, 1805, 1803, 1796, 1813, 6793, 1809, 1821, 1806, 1823, + 1819, 1826, 1827, 1822, 1810, 1832, 1834, 1829, 1835, 1836, + 1838, 1839, 1840, 1842, 1844, 1846, 1850, 1848, 1860, 1849, + 6793, 1862, 1863, 1851, 1859, 1865, 1866, 1873, 1867, 1852, + 1870, 1876, 1886, 1882, 1884, 1887, 1888, 1890, 1891, 1892, + 6793, 1894, 1901, 1898, 1902, 1904, 1893, 1908, 1905, 1910, + 1911, 1912, 1917, 1915, 1918, 1922, 1923, 1924, 1926, 1929, + 1934, 1931, 1938, 1941, 1948, 1942, 1944, 1949, 1950, 1951, + 1953, 1954, 1955, 1957, 1962, 1966, 1965, 1969, 1967, 1968, - 1976, 1981, 1983, 1984, 1985, 1988, 1995, 1979, 1991, 1993, - 2000, 2004, 2014, 2002, 2006, 2015, 1996, 2009, 2019, 2012, - 6721, 2021, 2023, 6721, 2025, 2026, 2027, 2049, 2032, 2030, - 2028, 2036, 2039, 2040, 2041, 2047, 2050, 2053, 2063, 2042, - 2059, 2068, 2066, 2071, 2075, 2069, 2077, 2078, 2079, 2080, - 2082, 2085, 2098, 2100, 2096, 2102, 2107, 2083, 2103, 2106, - 2125, 2104, 2108, 2109, 2115, 2110, 2112, 2120, 2118, 2119, - 2121, 2114, 2135, 2136, 2134, 2137, 2142, 2143, 2148, 2149, - 2150, 6721, 2160, 2156, 2152, 2157, 2163, 2172, 2164, 2165, - 6721, 2168, 2173, 2167, 2180, 2178, 2175, 2181, 2179, 2188, + 1978, 1986, 1971, 1982, 1983, 1984, 1985, 1990, 1993, 1998, + 1994, 1996, 1999, 2008, 2000, 2005, 2007, 2010, 2013, 2023, + 2009, 2026, 2018, 2011, 2021, 2027, 2028, 6793, 2034, 2035, + 6793, 2037, 2036, 2038, 2060, 2039, 2042, 2051, 2044, 2045, + 2048, 2053, 2061, 2057, 2064, 2073, 2074, 2077, 2080, 2079, + 2082, 2086, 2085, 2088, 2089, 2092, 2095, 2093, 2100, 2107, + 2109, 2055, 2113, 2117, 2112, 2114, 2118, 2137, 2115, 2116, + 2125, 2119, 2122, 2124, 2120, 2126, 2130, 2135, 2140, 2132, + 2147, 2150, 2146, 2149, 2152, 2153, 2160, 2162, 2165, 2164, + 6793, 2172, 2170, 2174, 2175, 2176, 2183, 2181, 2179, 6793, - 2185, 2189, 2191, 2195, 2190, 2192, 2203, 6721, 2198, 6721, - 2193, 2206, 2208, 2210, 2211, 2212, 2216, 2215, 2217, 6721, - 6721, 2218, 2219, 2232, 2227, 2234, 2224, 2235, 6721, 2236, - 2246, 6721, 2237, 2244, 2242, 2249, 2250, 2253, 2251, 2255, - 2260, 2257, 2265, 2258, 2262, 2261, 6721, 2276, 2263, 2278, - 2280, 2272, 2281, 2282, 2286, 2289, 6721, 2268, 2292, 2293, - 2300, 2296, 2297, 2298, 2302, 2303, 2307, 2309, 2310, 2311, - 2313, 2318, 2321, 2317, 2319, 2329, 2327, 2337, 6721, 2333, - 2334, 2320, 2341, 2339, 2343, 2336, 2346, 2347, 2348, 2350, - 2351, 2349, 2356, 2357, 2358, 2359, 2368, 2369, 2364, 2366, + 2182, 2185, 2187, 2196, 2188, 2192, 2195, 2199, 2201, 2202, + 2204, 2205, 2208, 2206, 2207, 2226, 6793, 2209, 6793, 2213, + 2210, 2218, 2221, 2228, 2229, 2231, 2232, 2233, 6793, 6793, + 2234, 2235, 2248, 2251, 2241, 2243, 2252, 6793, 2253, 2260, + 6793, 2262, 2261, 2256, 2255, 2257, 2267, 2268, 2271, 2278, + 2274, 2282, 2277, 2279, 2283, 6793, 2287, 2280, 2288, 2291, + 2289, 2295, 2298, 2302, 2299, 6793, 2300, 2308, 2309, 2316, + 2313, 2314, 2317, 2318, 2319, 2322, 2325, 2326, 2327, 2328, + 2337, 2338, 2329, 2342, 2339, 2343, 2351, 6793, 2349, 2350, + 2336, 2358, 2355, 2362, 2357, 2363, 2353, 2359, 2364, 2370, - 2373, 2374, 2376, 2377, 2384, 2381, 2382, 2383, 2385, 6721, - 2386, 2388, 2392, 2396, 2398, 2394, 171, 2395, 2397, 2404, - 2406, 2408, 2419, 2407, 2421, 2426, 2413, 2423, 2422, 2425, - 2431, 2432, 2433, 2434, 2435, 2436, 2437, 2439, 6721, 2441, - 2442, 2444, 2448, 2447, 2450, 2455, 6721, 2457, 2464, 2467, - 2476, 2459, 2468, 2477, 2473, 2478, 2479, 2481, 2483, 2485, - 2484, 2487, 2493, 2490, 6721, 2495, 2498, 2500, 2491, 2507, - 2506, 2499, 2513, 2514, 2515, 2518, 2516, 2517, 2520, 2519, - 2521, 2522, 2527, 2526, 2523, 2525, 2535, 2536, 2537, 2546, - 2547, 2539, 2548, 2549, 6721, 2559, 2550, 2554, 2552, 2555, + 2365, 2369, 2375, 2377, 2379, 2386, 2387, 2382, 2383, 2385, + 2390, 2391, 2392, 2394, 2399, 2396, 2401, 2400, 2402, 6793, + 2403, 2407, 2408, 2413, 2415, 2411, 171, 2421, 2417, 2424, + 2423, 2425, 2430, 2426, 2439, 2443, 2438, 2440, 2442, 2447, + 2441, 2448, 2451, 2449, 2450, 2453, 2457, 2458, 6793, 2466, + 2459, 2461, 2463, 2468, 2467, 2470, 6793, 2476, 2481, 2483, + 2491, 2485, 2493, 2494, 2495, 2498, 2496, 2499, 2500, 2501, + 2503, 2506, 2510, 2509, 6793, 2512, 2517, 2518, 2515, 2524, + 2526, 2525, 2527, 2531, 2532, 2533, 2537, 2536, 2538, 2539, + 2540, 2541, 2547, 2548, 2555, 2544, 2554, 2556, 2557, 2560, - 2557, 2562, 2570, 2577, 2561, 2572, 2574, 2578, 2588, 2581, - 2583, 2590, 2598, 2595, 2603, 2591, 2604, 2605, 2613, 2602, - 2615, 2617, 2606, 2618, 2625, 2621, 2608, 2624, 2627, 2631, - 2638, 2639, 2635, 2642, 2634, 2651, 2644, 2659, 2664, 2655, - 6721, 2653, 2663, 2647, 2667, 2674, 2670, 2669, 2672, 2671, - 2675, 2680, 2681, 2682, 2689, 2686, 2637, 2688, 2690, 2692, - 2694, 2697, 2693, 2698, 2705, 2708, 2701, 2713, 2715, 6721, - 2718, 2709, 2719, 2720, 2725, 2722, 2727, 2730, 2728, 2732, - 2734, 2736, 2737, 2739, 2740, 2741, 2750, 2746, 2745, 2747, - 2748, 6721, 2759, 2752, 2758, 2760, 2764, 2765, 2770, 2768, + 2566, 2562, 2567, 2568, 2575, 2570, 6793, 2577, 2573, 2580, + 2576, 2582, 2585, 2586, 2587, 2604, 2589, 2593, 2596, 2605, + 2610, 2600, 2612, 2620, 2616, 2622, 2625, 2630, 2626, 2632, + 2635, 2628, 2638, 2640, 2641, 2642, 2650, 2646, 2647, 2648, + 2651, 2652, 2662, 2663, 2654, 2664, 2666, 2669, 2658, 2676, + 2681, 2683, 6793, 2685, 2673, 2687, 2690, 2697, 2692, 2671, + 2695, 2698, 2702, 2703, 2704, 2706, 2713, 2708, 2710, 2714, + 2716, 2715, 2717, 2724, 2719, 2725, 2727, 2734, 2730, 2736, + 2595, 6793, 2738, 2739, 2740, 2742, 2747, 2743, 2749, 2752, + 2755, 2754, 2756, 2758, 2761, 2762, 2764, 2765, 2772, 2768, - 2772, 2778, 2776, 2780, 2782, 2783, 2784, 6721, 2791, 2792, - 2789, 2793, 2795, 2796, 2799, 2801, 2802, 6721, 2803, 2805, - 2806, 2809, 2807, 2811, 2818, 2819, 2814, 6721, 2831, 2821, - 2817, 2826, 2828, 2829, 2830, 2832, 2836, 2838, 2839, 2842, - 2845, 2849, 2850, 6721, 2851, 2859, 2860, 2852, 2854, 2865, - 2866, 2867, 2868, 2871, 2875, 2869, 6721, 2890, 2887, 2886, - 2894, 2889, 2874, 2892, 2896, 2898, 2895, 2899, 2902, 2904, - 6721, 2906, 2905, 2909, 2911, 2914, 2915, 2916, 2928, 2917, - 2921, 2925, 2926, 2930, 2931, 2932, 2936, 2942, 2934, 2944, - 2948, 2946, 2951, 2938, 2954, 2962, 2963, 2959, 2965, 2966, + 2769, 2774, 2770, 6793, 2780, 2771, 2782, 2784, 2789, 2791, + 2790, 2793, 2792, 2800, 2802, 2803, 2804, 2805, 2806, 6793, + 2814, 2815, 2811, 2813, 2823, 2820, 2822, 2824, 2826, 2827, + 6793, 2828, 2830, 2832, 2831, 2834, 2836, 2843, 2844, 2839, + 6793, 2855, 2850, 2840, 2851, 2853, 2852, 2856, 2857, 2861, + 2862, 2867, 2863, 2873, 2869, 2875, 6793, 2876, 2883, 2878, + 2879, 2886, 2884, 2889, 2890, 2901, 2891, 2897, 2893, 6793, + 2916, 2911, 2902, 2918, 2903, 2914, 2919, 2920, 2921, 2923, + 2924, 2927, 2928, 6793, 2929, 2931, 2933, 2934, 2938, 2936, + 2939, 2952, 2945, 2947, 2950, 2953, 2955, 2956, 2960, 2962, - 2967, 2968, 2969, 2976, 2977, 2981, 2978, 2984, 6721, 2987, - 2988, 2982, 2980, 2990, 2993, 2994, 2996, 2999, 2995, 2997, - 3001, 3004, 3008, 3017, 3020, 3010, 3012, 3021, 3022, 3023, - 3024, 3025, 3026, 3031, 3034, 3033, 3035, 3036, 3043, 3039, - 3042, 3051, 3047, 3050, 3052, 3053, 3054, 3056, 3059, 3060, - 3064, 3057, 3063, 3073, 3079, 3081, 3065, 3083, 3075, 3084, - 3086, 3089, 6721, 3092, 3096, 3090, 3094, 3097, 3103, 3104, - 3106, 3107, 3098, 3112, 3115, 3116, 3118, 3121, 3123, 3124, - 3131, 3127, 6721, 3128, 6721, 3129, 3130, 3133, 3142, 3137, - 6721, 3141, 6721, 3145, 3152, 3143, 3147, 6721, 3153, 3149, + 2967, 2959, 2961, 2971, 2973, 2963, 2976, 2979, 2983, 2987, + 2992, 2988, 2989, 2994, 2991, 2995, 2996, 2998, 3006, 3007, + 3010, 3008, 3012, 6793, 3015, 3016, 3018, 3005, 3019, 3021, + 3022, 3025, 3028, 3024, 3026, 3033, 3036, 3030, 3046, 3048, + 3039, 3051, 3041, 3043, 3054, 3053, 3055, 3056, 3057, 3067, + 3064, 3065, 3066, 3077, 3068, 3072, 3079, 3070, 3080, 3081, + 3082, 3083, 3084, 3088, 3090, 3093, 3094, 3095, 3086, 3107, + 3109, 3110, 3112, 3104, 3102, 3118, 3119, 6793, 3122, 3123, + 3120, 3124, 3126, 3130, 3127, 3139, 3134, 3137, 3136, 3143, + 3148, 3145, 3146, 3151, 3153, 3161, 3157, 6793, 3154, 6793, - 3154, 3155, 3158, 3160, 3162, 3165, 3166, 3167, 3168, 3175, - 3171, 3169, 3173, 3179, 3181, 3183, 3189, 3190, 3191, 3192, - 3194, 3195, 3197, 3205, 3198, 3200, 3209, 3202, 3210, 6721, - 3219, 3222, 3214, 3223, 3216, 3212, 3224, 3226, 3229, 3231, - 3233, 3235, 3237, 3239, 3242, 3244, 3247, 3248, 3249, 3250, - 3260, 3258, 3267, 6721, 3262, 3264, 3265, 3266, 6721, 3269, - 3270, 3279, 3281, 3271, 3273, 3275, 3283, 3287, 3277, 3289, - 3292, 3293, 3303, 3300, 3304, 6721, 3306, 3308, 3302, 3314, - 3310, 3322, 3324, 3320, 3328, 3330, 3332, 3333, 3321, 3319, - 3335, 3336, 3339, 3346, 3347, 3343, 3350, 3345, 3352, 3359, + 3158, 3162, 3168, 3176, 3163, 6793, 3175, 6793, 3177, 3182, + 3171, 3178, 6793, 3185, 3184, 3166, 3189, 3190, 3191, 3193, + 3195, 3196, 3197, 3199, 3200, 3203, 3204, 3206, 3207, 3209, + 3217, 3211, 3219, 3223, 3220, 3227, 3230, 3224, 3238, 3214, + 3231, 3240, 3241, 3233, 3242, 6793, 3249, 3243, 3253, 3254, + 3255, 3256, 3258, 3257, 3261, 3260, 3262, 3264, 3267, 3268, + 3279, 3273, 3265, 3280, 3281, 3284, 3292, 3290, 3297, 6793, + 3293, 3295, 3296, 3298, 6793, 3301, 3299, 3302, 3308, 3305, + 3311, 3312, 3313, 3317, 3314, 3321, 3320, 3325, 3330, 3334, + 3335, 6793, 3336, 3337, 3322, 3341, 3349, 3352, 3356, 3353, - 3355, 3349, 3351, 3353, 3361, 3362, 3363, 3364, 3365, 3366, - 3372, 3369, 6721, 3379, 3380, 3381, 3384, 3383, 3385, 3386, - 3393, 3387, 6721, 3396, 3389, 3397, 3398, 3399, 3404, 3411, - 3405, 3412, 3413, 3416, 3414, 3415, 3417, 6721, 3420, 6721, - 3418, 3423, 3437, 3439, 3432, 3428, 3442, 3448, 3441, 3434, - 3450, 3449, 3451, 3457, 3458, 3459, 3460, 3461, 3462, 3469, - 3465, 3466, 3467, 3472, 3475, 3477, 3484, 3482, 3485, 6721, - 6721, 3481, 3491, 3494, 3488, 3492, 3498, 3499, 3496, 3502, - 3510, 3511, 3512, 3519, 6721, 3515, 3516, 3517, 3520, 3527, - 3522, 3524, 3541, 3533, 3534, 3542, 3537, 6721, 3526, 3544, + 3359, 3361, 3357, 3363, 3364, 3355, 3365, 3366, 3367, 3375, + 3378, 3371, 3380, 3379, 3382, 3389, 3385, 3381, 3383, 3391, + 3392, 3393, 3394, 3395, 3396, 3397, 3400, 3411, 3398, 3416, + 6793, 3406, 3415, 3419, 3426, 3401, 3424, 3405, 3428, 3429, + 6793, 3431, 3433, 3434, 3435, 3436, 3441, 3438, 3443, 3444, + 3445, 3446, 3448, 3451, 3449, 6793, 3457, 6793, 3458, 3466, + 3471, 3474, 3464, 3468, 3475, 3480, 3481, 3482, 3484, 3485, + 3487, 3490, 3491, 3493, 3495, 3496, 3497, 3504, 3500, 3503, + 3511, 3510, 3512, 3513, 3521, 3517, 3518, 6793, 6793, 3516, + 3519, 3531, 3527, 3525, 3533, 3535, 3539, 3540, 3542, 3544, - 3551, 3547, 3550, 3555, 6721, 3554, 6721, 3552, 3556, 3557, - 3561, 3563, 3564, 3567, 3568, 3569, 3570, 3574, 3585, 3586, - 3578, 3588, 3582, 3589, 3590, 3593, 3597, 3600, 3596, 3598, - 3599, 6721, 3604, 3601, 3608, 3606, 3615, 3619, 3613, 3605, - 6721, 3616, 3623, 3626, 3625, 3630, 3634, 3631, 3635, 3636, - 3639, 3640, 3641, 3644, 3646, 6721, 3642, 3643, 3657, 3652, - 3649, 3653, 3666, 3668, 3670, 6721, 3672, 3673, 3680, 3676, - 3678, 3660, 3681, 3679, 3683, 3685, 3686, 3687, 3688, 3689, - 3694, 3695, 3691, 3700, 3697, 3702, 3708, 3701, 3712, 3721, - 3718, 6721, 3719, 3723, 3720, 3724, 3725, 3729, 3730, 3733, + 3546, 3553, 6793, 3549, 3554, 3555, 3556, 3568, 3557, 3559, + 3572, 3571, 3567, 3579, 3574, 6793, 3570, 3578, 3588, 3583, + 3584, 3591, 6793, 3586, 6793, 3589, 3595, 3597, 3598, 3600, + 3599, 3601, 3602, 3604, 3606, 3617, 3613, 3625, 3611, 3622, + 3623, 3626, 3627, 3629, 3632, 3636, 3631, 3633, 3634, 6793, + 3640, 3635, 3637, 3642, 3648, 3651, 3654, 3657, 3650, 6793, + 3658, 3661, 3660, 3662, 3664, 3672, 3665, 3675, 3667, 3677, + 3678, 3681, 3682, 3683, 6793, 3680, 3685, 3696, 3689, 3691, + 3697, 3707, 3708, 3713, 6793, 3693, 3710, 3720, 3716, 3717, + 3700, 3718, 3704, 3722, 3723, 3725, 3726, 3727, 3728, 3730, - 3735, 3726, 3741, 3747, 3728, 3737, 3751, 3752, 3759, 3754, - 6721, 3761, 3760, 3768, 3763, 3764, 3766, 3769, 3770, 3772, - 3776, 3773, 3774, 3780, 3777, 3790, 3783, 3785, 3786, 3787, - 3798, 3793, 6721, 3809, 3800, 3801, 3810, 3806, 3811, 3821, - 3818, 3799, 3820, 3823, 3824, 3828, 3825, 3830, 3831, 3834, - 3835, 6721, 6721, 3837, 3838, 3839, 6721, 3840, 3843, 3853, - 3842, 3857, 3844, 3846, 3859, 3851, 3854, 3867, 3862, 3869, - 6721, 3870, 3877, 3872, 3874, 3879, 3876, 6721, 3882, 3889, - 3887, 3890, 3884, 3891, 3894, 3896, 3897, 3898, 3899, 3902, - 3910, 3912, 3907, 3905, 3914, 6721, 3909, 3915, 3917, 3924, + 3733, 3734, 3736, 3735, 3747, 3746, 3738, 3750, 3760, 3740, + 6793, 3756, 3757, 3762, 3763, 3764, 3765, 3767, 3770, 3772, + 3773, 3785, 3786, 3774, 3777, 3789, 3790, 3797, 3796, 6793, + 3806, 3792, 3807, 3803, 3780, 3809, 3814, 3782, 3811, 3818, + 3804, 3815, 3820, 3821, 3822, 3824, 3833, 3828, 3830, 3831, + 3832, 3843, 3834, 6793, 3845, 3846, 3838, 3855, 3848, 3851, + 3862, 3858, 3861, 3863, 3865, 3868, 3869, 3871, 3873, 3874, + 3877, 3872, 6793, 6793, 3879, 3880, 3887, 6793, 3888, 3882, + 3889, 3885, 3899, 3886, 3893, 3902, 3904, 3890, 3910, 3900, + 3906, 6793, 3912, 3920, 3915, 3918, 3927, 3928, 6793, 3919, - 3919, 3921, 6721, 3926, 3928, 3930, 3933, 3935, 3941, 3942, - 3943, 3948, 3949, 3950, 3952, 3951, 3953, 3955, 3963, 3958, - 3962, 3960, 3961, 3967, 3968, 3978, 6721, 3972, 3979, 3980, - 3984, 6721, 3986, 3993, 3994, 6721, 3997, 3989, 3996, 3998, - 4005, 6721, 4002, 4003, 4004, 4006, 4017, 4008, 4018, 4020, - 4009, 4013, 4021, 4022, 6721, 4023, 4024, 4027, 6721, 4036, - 4037, 4041, 4045, 4029, 4048, 4046, 4050, 4047, 4051, 6721, - 4054, 6721, 4058, 4056, 4062, 6721, 4057, 4064, 4065, 4067, - 4071, 4072, 4073, 4079, 4075, 4081, 4083, 4084, 4085, 4086, - 4088, 4095, 4087, 4091, 4094, 4096, 6721, 4097, 4099, 4106, + 3929, 3932, 3934, 3924, 3936, 3940, 3937, 3941, 3942, 3943, + 3945, 3953, 3954, 3950, 3951, 3957, 6793, 3952, 3958, 3962, + 3964, 3955, 3968, 6793, 3965, 3971, 3978, 3976, 3981, 3986, + 3987, 3988, 3993, 3973, 3989, 3995, 3996, 3997, 3998, 4006, + 4002, 4007, 4005, 4008, 4012, 4015, 4009, 6793, 4019, 4023, + 4024, 4026, 6793, 4030, 4033, 4037, 6793, 4041, 4036, 4038, + 4040, 4048, 6793, 4045, 4046, 4047, 4053, 4049, 4061, 4051, + 4064, 4066, 4056, 4060, 4063, 4067, 6793, 4069, 4070, 4071, + 6793, 4082, 4077, 4084, 4087, 4072, 4094, 4090, 4093, 4091, + 4095, 6793, 4100, 6793, 4099, 4101, 4106, 6793, 4103, 4108, - 4103, 4107, 4111, 4113, 4114, 4116, 4118, 6721, 6721, 4127, - 6721, 4119, 4124, 4128, 6721, 4130, 4129, 4138, 4133, 4136, - 4139, 4147, 4134, 6721, 4149, 4151, 6721, 4153, 4154, 4161, - 4156, 4157, 4158, 4164, 4159, 4162, 4169, 4170, 4171, 4172, - 4166, 4173, 4174, 6721, 4167, 4175, 4177, 4191, 4185, 4194, - 4196, 4195, 4197, 6721, 4201, 4202, 4205, 4207, 4208, 6721, - 4209, 6721, 4210, 4211, 4213, 4219, 4216, 4230, 6721, 4227, - 4222, 4232, 4226, 4233, 4237, 4240, 4241, 4242, 4234, 4249, - 4248, 4244, 4247, 4256, 4258, 6721, 4251, 4261, 4263, 4264, - 4267, 4268, 4277, 4269, 4276, 4272, 4273, 4280, 4283, 4284, + 4109, 4111, 4112, 4117, 4118, 4116, 4125, 4126, 4127, 4129, + 4130, 4128, 4133, 4137, 4134, 4135, 4139, 4140, 6793, 4141, + 4143, 4150, 4145, 4155, 4151, 4158, 4148, 4162, 4163, 6793, + 6793, 4172, 6793, 4174, 4164, 4166, 6793, 4168, 4173, 4181, + 4178, 4184, 4186, 4179, 4190, 4191, 6793, 4193, 4200, 6793, + 4194, 4196, 4204, 4205, 4203, 4206, 4207, 4208, 4211, 4212, + 4213, 4214, 4215, 4222, 4216, 4221, 4218, 6793, 4223, 4229, + 4232, 4239, 4231, 4235, 4245, 4241, 4240, 6793, 4251, 4257, + 4247, 4253, 4254, 6793, 4262, 6793, 4250, 4263, 4264, 4267, + 4266, 4279, 6793, 4275, 4270, 4281, 4274, 4278, 4286, 4282, - 4286, 4291, 4292, 4293, 6721, 4294, 4296, 4299, 4308, 4301, - 4305, 4304, 6721, 4309, 4310, 4312, 6721, 4318, 4319, 4323, - 4325, 4322, 4326, 4327, 4328, 4333, 4330, 4329, 6721, 4336, - 4337, 4335, 4341, 4351, 4350, 6721, 6721, 4352, 6721, 4354, - 4338, 4342, 4362, 4363, 4364, 4366, 4367, 4369, 4370, 4374, - 4372, 4379, 6721, 4375, 4387, 4382, 4391, 4399, 4401, 4383, - 4397, 4396, 6721, 6721, 4403, 4406, 4400, 4411, 4412, 4408, - 4415, 4423, 4414, 4424, 4427, 4429, 4428, 6721, 4431, 4398, - 4436, 4430, 6721, 4437, 4438, 4441, 4439, 4442, 4445, 4444, - 4446, 4448, 4449, 4452, 4455, 4457, 4456, 4458, 4465, 4467, + 4289, 4290, 4291, 4298, 4296, 4293, 4295, 4303, 4304, 6793, + 4299, 4305, 4310, 4313, 4315, 4316, 4323, 4320, 4322, 4321, + 4326, 4328, 4329, 4331, 4337, 4335, 4340, 4333, 6793, 4343, + 4346, 4347, 4359, 4349, 4354, 4350, 6793, 4357, 4360, 4366, + 6793, 4364, 4356, 4370, 4373, 4367, 4374, 4375, 4378, 4380, + 4381, 4382, 6793, 4383, 4386, 4384, 4388, 4397, 4390, 6793, + 6793, 4400, 6793, 4401, 4389, 4405, 4408, 4409, 4413, 4411, + 4414, 4416, 4417, 4418, 4421, 4424, 4427, 6793, 4428, 4436, + 4431, 4439, 4448, 4449, 4441, 4446, 4432, 6793, 6793, 4451, + 4455, 4457, 4459, 4460, 4462, 4445, 4471, 4464, 4467, 4473, - 4468, 4469, 4473, 4470, 4476, 6721, 4477, 4478, 4480, 4481, - 4482, 4489, 4490, 4491, 4492, 6721, 4494, 6721, 4501, 4493, - 4496, 4498, 4516, 4505, 4517, 4512, 4518, 4521, 4522, 4527, - 4528, 4536, 4524, 4529, 4537, 4531, 4545, 4547, 4548, 6721, - 4549, 4541, 4550, 4551, 4556, 4558, 4533, 4560, 4562, 4565, - 4566, 4567, 4569, 4574, 4571, 4575, 4576, 4577, 4578, 6721, - 4582, 4589, 4579, 4595, 4583, 4586, 4596, 4602, 4605, 4590, - 4600, 4606, 6721, 4607, 4610, 4612, 6721, 4613, 4614, 4616, - 4617, 4620, 4623, 4625, 4624, 4626, 6721, 4628, 4632, 4636, - 4634, 4635, 4638, 4640, 4644, 4646, 4647, 4651, 6721, 4663, + 4475, 4482, 6793, 4479, 4477, 4484, 4478, 6793, 4485, 4486, + 4489, 4487, 4490, 4493, 4492, 4494, 4496, 4499, 4504, 4505, + 4500, 4513, 4506, 4507, 4516, 4517, 4519, 4520, 4522, 4527, + 6793, 4523, 4529, 4530, 4534, 4535, 4537, 4539, 4538, 4541, + 4551, 6793, 4543, 6793, 4542, 4547, 4546, 4563, 4544, 4554, + 4566, 4567, 4568, 4569, 4572, 4573, 4576, 4577, 4587, 4578, + 4582, 4588, 4590, 4592, 4597, 4598, 6793, 4600, 4584, 4594, + 4601, 4607, 4609, 4610, 4612, 4615, 4617, 4619, 4618, 4621, + 4625, 4622, 4626, 4627, 4628, 4630, 6793, 4632, 4639, 4631, + 4641, 4643, 4645, 4652, 4646, 4654, 4648, 4656, 4657, 6793, - 4650, 4659, 4660, 4658, 4661, 4667, 4668, 4670, 6721, 4672, - 4675, 4676, 4684, 4685, 4681, 4682, 4692, 4689, 4690, 4687, - 4693, 4698, 4699, 4700, 4704, 4705, 4703, 4716, 4721, 4707, - 6721, 4718, 6721, 4719, 4722, 4726, 4724, 4727, 4729, 4732, - 4731, 6721, 4734, 4739, 4741, 4742, 4735, 6721, 4746, 4743, - 4745, 4749, 6721, 4762, 4747, 4748, 4754, 4764, 4769, 6721, - 4772, 4773, 4774, 4781, 4783, 4778, 4785, 4780, 4788, 4786, - 4782, 4790, 4791, 4799, 4797, 4795, 6721, 4801, 4803, 4808, - 4810, 4804, 4812, 4802, 4814, 4817, 4819, 6721, 4820, 4823, - 4824, 4826, 4827, 4828, 4829, 4836, 4833, 4835, 4837, 4838, + 4658, 4660, 4664, 6793, 4665, 4666, 4668, 4670, 4676, 4669, + 4672, 4678, 4680, 6793, 4682, 4684, 4687, 4686, 4690, 4691, + 4692, 4696, 4698, 4699, 4702, 6793, 4712, 4703, 4711, 4714, + 4710, 4713, 4717, 4723, 4721, 6793, 4724, 4725, 4727, 4737, + 4739, 4732, 4734, 4746, 4736, 4743, 4744, 4745, 4751, 4750, + 4752, 4755, 4756, 4757, 4766, 4768, 4763, 6793, 4770, 6793, + 4772, 4773, 4774, 4783, 4778, 4776, 4780, 4784, 4786, 6793, + 4788, 4791, 4794, 4795, 4796, 6793, 4797, 4798, 4800, 4799, + 6793, 4813, 4812, 4801, 4818, 4803, 4819, 6793, 4823, 4824, + 4826, 4834, 4835, 4832, 4837, 4825, 4842, 4833, 4838, 4840, - 4841, 4842, 6721, 4847, 4845, 4849, 4858, 4860, 4862, 6721, - 4865, 6721, 4855, 4850, 4867, 4866, 4871, 6721, 6721, 4873, - 4881, 4876, 4879, 4880, 6721, 6721, 4883, 6721, 4884, 6721, - 4885, 4887, 6721, 6721, 4886, 4890, 4893, 4895, 4896, 4898, - 6721, 4905, 6721, 4912, 4907, 4894, 4909, 4913, 6721, 4911, - 4917, 4915, 4921, 4923, 6721, 4919, 4932, 4924, 4925, 6721, - 4935, 4936, 4929, 4937, 6721, 4943, 4946, 4947, 4938, 4941, - 4949, 4951, 4957, 4958, 4961, 4959, 4960, 4962, 4963, 4966, - 4970, 4975, 4977, 4967, 4978, 4981, 4983, 4987, 4985, 4989, - 4990, 4991, 4992, 4994, 4999, 4993, 5001, 5004, 4756, 4995, + 4846, 4850, 4848, 4849, 6793, 4851, 4853, 4858, 4860, 4861, + 4863, 4864, 4867, 4869, 4866, 6793, 4873, 4874, 4875, 4876, + 4877, 4880, 4882, 4889, 4885, 4892, 4886, 4888, 4896, 4897, + 4898, 4906, 6793, 4899, 4901, 4903, 4916, 4912, 4921, 6793, + 4909, 6793, 4913, 4924, 4926, 4914, 4930, 6793, 6793, 4928, + 4939, 4922, 4936, 4937, 6793, 6793, 4942, 6793, 4938, 6793, + 4943, 4944, 6793, 6793, 4945, 4947, 4948, 4949, 4953, 4952, + 6793, 4962, 6793, 4965, 4963, 4955, 4966, 4967, 6793, 4968, + 4974, 4970, 4978, 4976, 6793, 4980, 4985, 4981, 4983, 6793, + 4992, 4993, 4984, 4986, 6793, 4994, 5001, 4997, 5005, 5006, - 5008, 5005, 5006, 5014, 5016, 5018, 5021, 5022, 5023, 5024, - 5027, 4495, 5025, 5028, 5030, 5029, 5033, 5037, 5042, 5043, - 6721, 5035, 5045, 5047, 5048, 5052, 5054, 5055, 5062, 5064, - 5068, 6721, 5071, 6721, 5073, 5065, 5075, 5076, 5077, 6721, - 5078, 5079, 5080, 5081, 5082, 5084, 5085, 5088, 5089, 5093, - 5099, 6721, 5106, 5096, 5090, 5094, 5114, 6721, 5109, 5116, - 5117, 5119, 5120, 5121, 5122, 5123, 5126, 5124, 5129, 5131, - 5125, 5132, 5133, 5147, 5149, 5144, 5134, 5151, 5153, 5154, - 5155, 5156, 5157, 5158, 5159, 5165, 5167, 5171, 6721, 5162, - 6721, 5173, 5174, 5175, 5178, 5179, 5180, 5183, 5186, 6721, + 5007, 5008, 5011, 5013, 5009, 5014, 5016, 5017, 5024, 5031, + 5033, 5035, 5039, 5028, 5026, 5041, 5042, 5047, 5045, 5049, + 5050, 5051, 5052, 5054, 5056, 5053, 5059, 5061, 5063, 5064, + 5068, 5065, 5066, 5078, 5067, 5079, 5081, 5082, 5085, 5088, + 5089, 5090, 5092, 5093, 5095, 5018, 5094, 5096, 5101, 5098, + 5100, 6793, 5102, 5104, 5105, 5108, 5118, 5119, 5122, 5130, + 5134, 5135, 6793, 5137, 6793, 5139, 5123, 5131, 5125, 5143, + 6793, 5145, 5146, 5147, 5148, 5112, 5150, 5149, 5152, 5153, + 5155, 5156, 6793, 5160, 5161, 5154, 5174, 5163, 6793, 5177, + 5167, 5178, 5179, 5180, 5184, 5182, 5185, 5188, 5189, 5191, - 6721, 5188, 5189, 5191, 5194, 5195, 5197, 5199, 5200, 5202, - 6721, 5201, 5207, 5218, 5212, 6721, 5204, 5214, 5220, 5222, - 6721, 5223, 5224, 5226, 5228, 5229, 5232, 5236, 5237, 5238, - 5239, 5242, 5244, 6721, 6721, 6721, 6721, 5249, 5245, 5253, - 5247, 5255, 5256, 5257, 5261, 5259, 5263, 5264, 6721, 5272, - 6721, 6721, 5269, 5273, 5275, 5276, 5277, 5280, 5282, 5284, - 6721, 5286, 5288, 5290, 5287, 5297, 5304, 5300, 5294, 5307, - 5308, 5309, 5298, 5310, 5317, 5318, 5319, 5312, 5321, 5325, - 5330, 6721, 6721, 5322, 5332, 5333, 5340, 5337, 5338, 5341, - 5350, 5345, 5346, 5347, 5348, 5352, 5353, 5364, 5365, 5357, + 5193, 5195, 5181, 5202, 5205, 6793, 5207, 5210, 5218, 5213, + 5214, 5215, 5216, 5217, 5219, 5221, 5223, 5224, 5233, 5225, + 5236, 6793, 5237, 6793, 5238, 5240, 5242, 5243, 5244, 5245, + 5246, 5248, 6793, 6793, 5251, 5252, 5258, 5253, 5260, 5262, + 5264, 5265, 5269, 6793, 5270, 5272, 5282, 5274, 6793, 5277, + 5279, 5283, 5289, 6793, 5284, 5286, 5290, 5298, 5291, 5301, + 5302, 5304, 5293, 5305, 5306, 5312, 6793, 6793, 6793, 6793, + 5314, 5308, 5319, 5316, 5320, 5322, 5323, 5325, 5328, 5321, + 5324, 6793, 5336, 6793, 6793, 5337, 5338, 5340, 5344, 5345, + 5346, 5347, 5350, 6793, 5348, 6793, 5352, 5355, 5351, 5362, - 5354, 6721, 5361, 5367, 5370, 6721, 5369, 6721, 5371, 5375, - 5377, 5378, 5379, 5383, 5384, 5387, 6721, 6721, 5382, 5399, - 5397, 6721, 6721, 5386, 5389, 5394, 5402, 5404, 5398, 5406, - 5407, 5419, 5408, 6721, 5410, 6721, 5412, 5416, 5424, 5414, - 5434, 5435, 5426, 5436, 5438, 5433, 5440, 6721, 5442, 5443, - 6721, 5452, 5447, 5449, 5448, 5454, 6721, 5457, 5455, 5460, - 5464, 6721, 5466, 5467, 5470, 6721, 5477, 6721, 5461, 5474, - 5468, 5484, 5482, 6721, 5472, 5485, 6721, 5488, 5490, 5493, - 5491, 5495, 6721, 5498, 5499, 6721, 5500, 5502, 5505, 5510, - 5503, 5512, 5513, 5507, 5514, 5521, 5523, 5527, 6721, 6721, + 5368, 5359, 5369, 5371, 5372, 5373, 5374, 5375, 5382, 5380, + 5383, 5381, 5386, 5390, 5395, 6793, 6793, 5387, 5398, 5399, + 5407, 5403, 5404, 5405, 5416, 5411, 5412, 5413, 5414, 5418, + 5420, 5427, 5430, 5423, 5425, 6793, 5431, 5434, 5432, 6793, + 5433, 6793, 5442, 5443, 5436, 5440, 5446, 5449, 5450, 5452, + 5457, 6793, 6793, 5456, 5465, 5460, 6793, 6793, 5444, 5464, + 5467, 5469, 5470, 5471, 5472, 5473, 5476, 5478, 6793, 5479, + 6793, 5480, 5483, 5492, 5482, 5495, 5499, 5485, 5502, 5505, + 5498, 5508, 6793, 5501, 5509, 6793, 5517, 5512, 5514, 5516, + 5519, 6793, 5520, 5523, 5525, 5527, 6793, 5529, 5531, 5532, - 5530, 5529, 135, 5538, 5516, 5533, 5535, 5536, 5546, 5519, - 5541, 5548, 6721, 6721, 5549, 6721, 5543, 5556, 6721, 5550, - 5557, 5561, 5552, 5558, 5564, 5565, 5566, 5568, 5572, 5573, - 5574, 5571, 5579, 5595, 5597, 5581, 5578, 5592, 5598, 5601, - 5603, 5605, 5606, 5607, 5583, 5608, 5610, 5612, 5614, 5615, - 5616, 6721, 5619, 5625, 5628, 5620, 6721, 5633, 5630, 5640, - 5641, 6721, 5643, 5644, 5645, 5647, 5648, 6721, 5634, 5650, - 5622, 5651, 5655, 5658, 5661, 5665, 5662, 5663, 5666, 6721, - 6721, 6721, 5668, 5678, 6721, 5680, 5667, 5671, 5682, 6721, - 5684, 5685, 5686, 6721, 6721, 5687, 5688, 5690, 6721, 5689, + 6793, 5539, 6793, 5533, 5540, 5536, 5550, 5542, 6793, 5543, + 5546, 6793, 5552, 5556, 5557, 5558, 5559, 6793, 5562, 5564, + 6793, 5565, 5567, 5568, 5574, 5575, 5577, 5570, 5578, 5579, + 5586, 5588, 5591, 6793, 6793, 5598, 5584, 135, 5600, 5581, + 5597, 5601, 5602, 5609, 5605, 5606, 5612, 6793, 6793, 5613, + 6793, 5607, 5616, 6793, 5614, 5620, 5624, 5626, 5622, 5628, + 5629, 5631, 5633, 5634, 5647, 5637, 5635, 5652, 5642, 5662, + 5638, 5664, 5665, 5667, 5669, 5671, 5659, 5673, 5674, 5653, + 5676, 5677, 5680, 5681, 5683, 5684, 5685, 6793, 5688, 5696, + 5697, 5689, 6793, 5702, 5691, 5709, 5706, 6793, 5713, 5710, - 5697, 6721, 5692, 6721, 5695, 6721, 5701, 5702, 5710, 5705, - 6721, 5703, 5713, 5715, 5717, 6721, 5720, 5723, 5725, 5727, - 5728, 5730, 5732, 6721, 5739, 5735, 5738, 5742, 5734, 5744, - 5745, 5746, 5747, 5759, 5750, 5755, 6721, 5757, 5758, 5762, - 5768, 5760, 5770, 5771, 6721, 5764, 6721, 5773, 6721, 5774, - 5776, 5777, 5782, 5778, 5780, 5788, 5790, 5792, 5797, 5783, - 5798, 5803, 5800, 6721, 6721, 5805, 5808, 6721, 5809, 6721, - 5811, 6721, 5812, 5813, 5815, 5816, 5817, 6721, 5826, 5814, - 5818, 5837, 5821, 5823, 6721, 5835, 5833, 5838, 5840, 6721, - 6721, 5841, 5849, 5845, 6721, 5846, 5852, 5854, 5848, 5855, + 5714, 5715, 5716, 6793, 5703, 5718, 5722, 5720, 5727, 5728, + 5640, 5736, 5731, 5732, 5733, 6793, 6793, 6793, 5738, 5748, + 6793, 5750, 5740, 5734, 5742, 6793, 5752, 5753, 5745, 6793, + 6793, 5755, 5756, 5758, 6793, 5763, 5770, 6793, 5765, 6793, + 5766, 6793, 5768, 5769, 5771, 5775, 6793, 5776, 5778, 5779, + 5785, 6793, 5795, 5797, 5799, 5792, 5782, 5788, 5800, 6793, + 5809, 5806, 5808, 5815, 5804, 5812, 5810, 5816, 5817, 5825, + 5818, 5827, 6793, 5828, 5829, 5833, 5836, 5820, 5830, 5840, + 6793, 5841, 6793, 5847, 6793, 5844, 5849, 5848, 5842, 5850, + 5853, 5856, 5854, 5858, 5867, 5860, 5863, 5865, 5871, 5873, - 5859, 5856, 5860, 5862, 5870, 5865, 5871, 5866, 5873, 5874, - 5876, 5877, 5887, 6721, 6721, 6721, 5881, 5885, 5896, 5892, - 5894, 5901, 5898, 6721, 5899, 5903, 5906, 5900, 5913, 5908, - 5910, 6721, 5912, 5914, 5915, 5917, 5921, 5918, 5922, 5927, - 6721, 5929, 5934, 5939, 5931, 5941, 5943, 5948, 5950, 5951, - 5935, 5958, 5954, 6721, 5956, 6721, 6721, 5953, 6721, 5957, - 5960, 5962, 5963, 5965, 6721, 5968, 5969, 5970, 5973, 5971, - 5974, 5976, 5978, 6721, 5986, 5984, 5988, 5992, 6721, 6721, - 5990, 5994, 6721, 5999, 5996, 6000, 6008, 6003, 6005, 6010, - 6012, 6721, 6016, 6018, 6006, 6019, 6022, 6021, 6024, 6721, + 6793, 6793, 5875, 5877, 6793, 5879, 6793, 5883, 6793, 5880, + 5885, 5884, 5886, 5888, 6793, 5895, 5887, 5890, 5903, 5898, + 5904, 6793, 5905, 5908, 5909, 5911, 6793, 6793, 5912, 5919, + 5915, 6793, 5914, 5917, 5925, 5918, 5926, 5930, 5927, 5931, + 5934, 5941, 5937, 5939, 5942, 5944, 5945, 5947, 5952, 5957, + 6793, 6793, 6793, 5953, 5948, 5967, 5964, 5966, 5976, 5959, + 6793, 5973, 5972, 5974, 5975, 5986, 5981, 5983, 6793, 5984, + 5985, 5987, 5988, 5990, 5991, 5992, 5993, 6793, 6005, 6007, + 5995, 5997, 6009, 6016, 6018, 6020, 6022, 6013, 6023, 6030, + 6027, 6793, 6029, 6793, 6793, 6025, 6793, 6031, 6033, 6035, - 6028, 6025, 6029, 6031, 6721, 6032, 6037, 6038, 6040, 6041, - 6721, 6042, 6034, 6058, 6043, 6721, 6045, 6057, 6059, 6721, - 6721, 6063, 6067, 6064, 6721, 6721, 6721, 6070, 6071, 6073, - 6075, 6721, 6078, 6082, 6086, 6088, 6093, 6081, 6721, 6089, - 6095, 6097, 6098, 6099, 6721, 6721, 6100, 6101, 6102, 6106, - 6103, 6721, 6721, 6108, 6110, 6111, 6109, 6112, 6721, 6114, - 6119, 6126, 6122, 6128, 6135, 6137, 6130, 6138, 6139, 6147, - 6150, 6140, 6142, 6149, 6153, 6154, 6152, 6156, 6166, 6161, - 6163, 6169, 6164, 6172, 6721, 6721, 6174, 6721, 6176, 6178, - 6721, 6721, 6181, 6183, 6185, 6189, 6721, 6191, 6193, 6195, + 6034, 6036, 6793, 6039, 6040, 6041, 6043, 6042, 6050, 6046, + 6048, 6793, 6058, 6051, 6061, 6063, 6793, 6793, 6064, 6070, + 6793, 6073, 6074, 6067, 6082, 6065, 6075, 6087, 6084, 6793, + 6088, 6090, 6078, 6091, 6094, 6093, 6096, 6793, 6100, 6097, + 6101, 6103, 6793, 6104, 6109, 6110, 6112, 6113, 6793, 6114, + 6106, 6130, 6115, 6793, 6117, 6129, 6131, 6793, 6793, 6135, + 6139, 6136, 6793, 6793, 6793, 6793, 6142, 6143, 6145, 6147, + 6793, 6150, 6154, 6158, 6160, 6165, 6153, 6793, 6161, 6167, + 6169, 6170, 6171, 6793, 6793, 6172, 6173, 6174, 6178, 6175, + 6793, 6793, 6180, 6182, 6183, 6181, 6184, 6793, 6186, 6191, - 6197, 6186, 6721, 6198, 6200, 6201, 6202, 6203, 6721, 6205, - 6206, 6209, 6211, 6215, 6217, 6218, 6221, 6721, 6216, 6233, - 6721, 6721, 6222, 6224, 6213, 6234, 6230, 6721, 6238, 6242, - 6237, 6244, 6243, 6245, 6250, 6721, 6246, 6247, 6721, 6721, - 6253, 6254, 6721, 6721, 6255, 6721, 6721, 6721, 6721, 6721, - 6721, 6721, 6721, 6259, 6258, 6721, 6260, 6268, 6271, 6721, - 6275, 6721, 6265, 6276, 6278, 6272, 6721, 6277, 6721, 6279, - 6283, 6284, 6293, 6286, 6296, 6287, 6280, 6290, 6298, 6303, - 6304, 6306, 6305, 6307, 6309, 6311, 6321, 6313, 6318, 6721, - 6721, 6721, 6310, 6322, 6326, 6327, 6332, 6334, 6338, 6340, + 6198, 6194, 6200, 6207, 6209, 6202, 6210, 6211, 6219, 6222, + 6212, 6214, 6221, 6225, 6226, 6224, 6228, 6238, 6233, 6235, + 6241, 6236, 6244, 6793, 6793, 6246, 6793, 6248, 6250, 6793, + 6793, 6253, 6255, 6257, 6261, 6793, 6263, 6265, 6267, 6269, + 6258, 6793, 6270, 6272, 6273, 6274, 6275, 6793, 6277, 6278, + 6281, 6283, 6287, 6289, 6290, 6293, 6793, 6288, 6305, 6793, + 6793, 6294, 6296, 6285, 6306, 6302, 6793, 6310, 6314, 6309, + 6316, 6315, 6317, 6322, 6793, 6318, 6319, 6793, 6793, 6325, + 6326, 6793, 6793, 6327, 6793, 6793, 6793, 6793, 6793, 6793, + 6793, 6793, 6331, 6330, 6793, 6332, 6340, 6343, 6793, 6347, - 6329, 6341, 6343, 6344, 6345, 6347, 6351, 6358, 6353, 6356, - 6354, 6363, 6355, 6365, 6721, 6370, 6371, 6357, 6374, 6721, - 6377, 6721, 6360, 6721, 6721, 6380, 6381, 6383, 6384, 6393, - 6394, 6385, 6389, 6390, 6395, 6397, 6721, 6405, 6721, 6721, - 6398, 6401, 6721, 6406, 6407, 6721, 6408, 6410, 6412, 6413, - 6414, 6416, 6417, 6418, 6425, 6721, 6721, 6429, 6430, 6432, - 6434, 6436, 6443, 6438, 6440, 6442, 6450, 6444, 6452, 6721, - 6454, 6456, 6458, 6721, 6460, 6459, 6462, 6465, 6466, 6473, - 6468, 6470, 6721, 6471, 6721, 6475, 6477, 6476, 6479, 6480, - 6482, 6490, 6488, 6492, 6721, 6494, 6496, 6500, 6501, 6503, + 6793, 6337, 6348, 6350, 6344, 6793, 6349, 6793, 6351, 6355, + 6356, 6365, 6358, 6368, 6359, 6352, 6362, 6370, 6375, 6376, + 6378, 6377, 6379, 6381, 6383, 6393, 6385, 6390, 6793, 6793, + 6793, 6382, 6394, 6398, 6399, 6404, 6406, 6410, 6412, 6401, + 6413, 6415, 6416, 6417, 6419, 6423, 6430, 6425, 6428, 6426, + 6435, 6427, 6437, 6793, 6442, 6443, 6429, 6446, 6793, 6449, + 6793, 6432, 6793, 6793, 6452, 6453, 6455, 6456, 6465, 6466, + 6457, 6461, 6462, 6467, 6469, 6793, 6477, 6793, 6793, 6470, + 6473, 6793, 6478, 6479, 6793, 6480, 6482, 6484, 6485, 6486, + 6488, 6489, 6490, 6497, 6793, 6793, 6501, 6502, 6504, 6506, - 6506, 6507, 6508, 6510, 6512, 6513, 6522, 6516, 6518, 6524, - 6526, 6528, 6721, 6530, 6532, 6721, 6533, 6534, 6535, 6536, - 6540, 6721, 6545, 6537, 6542, 6548, 6553, 6550, 6721, 6559, - 6563, 6560, 6721, 6564, 6721, 6721, 6565, 6566, 6568, 6572, - 6574, 6721, 6721, 6721, 6601, 6608, 6615, 6622, 6629, 6636, - 6643, 88, 6650, 6657, 6664, 6671, 6678, 6685, 6692, 6699, - 6706, 6713 + 6508, 6515, 6510, 6512, 6514, 6522, 6516, 6524, 6793, 6526, + 6528, 6530, 6793, 6532, 6531, 6534, 6537, 6538, 6545, 6540, + 6542, 6793, 6543, 6793, 6547, 6549, 6548, 6551, 6552, 6554, + 6562, 6560, 6564, 6793, 6566, 6568, 6572, 6573, 6575, 6578, + 6579, 6580, 6582, 6584, 6585, 6594, 6588, 6590, 6596, 6598, + 6600, 6793, 6602, 6604, 6793, 6605, 6606, 6607, 6608, 6612, + 6793, 6617, 6609, 6614, 6620, 6625, 6622, 6793, 6631, 6635, + 6632, 6793, 6636, 6793, 6793, 6637, 6638, 6640, 6644, 6646, + 6793, 6793, 6793, 6673, 6680, 6687, 6694, 6701, 6708, 6715, + 88, 6722, 6729, 6736, 6743, 6750, 6757, 6764, 6771, 6778, + + 6785 } ; -static const flex_int16_t yy_def[3463] = +static const flex_int16_t yy_def[3502] = { 0, - 3444, 1, 3445, 3445, 3446, 3446, 3447, 3447, 3448, 3448, - 3449, 3449, 3450, 3450, 3451, 3451, 3444, 3452, 3444, 3444, - 3444, 3444, 3453, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3454, 3444, 3444, 3444, - 3454, 3455, 3444, 3444, 3444, 3455, 3456, 3444, 3444, 3444, - 3444, 3456, 3457, 3444, 3444, 3444, 3457, 3458, 3444, 3459, - 3444, 3458, 3458, 3460, 3444, 3444, 3444, 3444, 3460, 3461, - 3444, 3444, 3444, 3461, 3452, 3452, 3444, 3462, 3453, 3462, - 3453, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3483, 1, 3484, 3484, 3485, 3485, 3486, 3486, 3487, 3487, + 3488, 3488, 3489, 3489, 3490, 3490, 3483, 3491, 3483, 3483, + 3483, 3483, 3492, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3493, 3483, 3483, 3483, + 3493, 3494, 3483, 3483, 3483, 3494, 3495, 3483, 3483, 3483, + 3483, 3495, 3496, 3483, 3483, 3483, 3496, 3497, 3483, 3498, + 3483, 3497, 3497, 3499, 3483, 3483, 3483, 3483, 3499, 3500, + 3483, 3483, 3483, 3500, 3491, 3491, 3483, 3501, 3492, 3501, + 3492, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3454, - 3454, 3455, 3455, 3456, 3456, 3444, 3457, 3457, 3458, 3458, - 3459, 3459, 3458, 3460, 3460, 3444, 3461, 3461, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3493, + 3493, 3494, 3494, 3495, 3495, 3483, 3496, 3496, 3497, 3497, + 3498, 3498, 3497, 3499, 3499, 3483, 3500, 3500, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3458, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3497, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3458, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3497, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3444, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3458, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3491, 3497, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3458, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3444, 3444, 3452, 3444, 3444, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3497, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3483, 3491, 3483, 3483, 3491, 3483, 3483, 3491, + 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3458, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3497, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3444, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3483, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3452, 3452, 3452, 3452, 3458, 3458, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3497, 3497, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3458, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3497, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3444, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3444, 3452, 3452, 3452, 3452, 3444, 3452, 3452, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3483, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3452, 3452, 3452, 3458, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3483, 3491, 3491, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, + 3497, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3444, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3483, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3452, 3452, 3452, 3452, 3444, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3458, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, + 3491, 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3491, 3491, 3491, 3497, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3444, 3444, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3483, 3483, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, - 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3458, 3452, 3444, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3444, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3483, 3491, 3491, 3491, 3483, 3491, 3491, 3491, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3497, 3491, 3483, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3483, 3491, 3491, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3444, 3452, - 3444, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3483, 3491, 3483, 3491, 3491, 3491, 3483, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3491, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3444, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3444, 3444, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3444, 3452, 3452, 3458, 3452, 3452, 3452, 3452, - 3452, 3452, 3444, 3444, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3497, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3483, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3444, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3458, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3497, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3444, 3452, - 3452, 3452, 3452, 3452, 3444, 3444, 3452, 3444, 3452, 3444, - 3452, 3452, 3444, 3444, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3444, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3483, 3491, + 3491, 3491, 3491, 3491, 3483, 3483, 3491, 3483, 3491, 3483, + 3491, 3491, 3483, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3491, + 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3483, + 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3458, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3444, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3497, 3491, 3491, 3491, + 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3444, 3444, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3444, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3458, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3444, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3483, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3483, 3491, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3483, 3483, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3483, 3483, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3491, - 3452, 3444, 3452, 3452, 3452, 3444, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3444, 3452, 3452, - 3452, 3444, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3452, 3444, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3444, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3444, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3444, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3444, + 3491, 3491, 3491, 3497, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3483, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3483, + 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3483, 3491, 3491, 3491, 3483, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3483, 3491, 3491, 3483, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, - 3452, 3452, 3458, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3444, 3444, 3452, 3444, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3444, 3444, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3444, - 3452, 3452, 3452, 3444, 3444, 3452, 3452, 3452, 3444, 3452, + 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3491, + 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3483, 3483, 3491, 3491, 3497, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3483, 3491, + 3483, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3483, 3491, 3491, - 3452, 3444, 3452, 3444, 3452, 3444, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3444, 3452, 3444, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3444, 3452, 3452, 3444, 3452, 3444, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3444, - 3444, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3483, 3483, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3483, + 3483, 3491, 3491, 3491, 3483, 3491, 3491, 3483, 3491, 3483, + 3491, 3483, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, + 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3444, 3444, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3452, 3444, 3444, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3444, 3444, - 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, + 3483, 3483, 3491, 3491, 3483, 3491, 3483, 3491, 3483, 3491, + 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3491, 3491, 3491, 3483, 3483, 3491, 3491, + 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3483, 3483, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3483, 3483, 3491, 3483, 3491, 3491, 3491, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3444, - 3444, 3452, 3452, 3452, 3444, 3444, 3444, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3444, 3444, 3452, 3452, 3452, 3452, - 3452, 3444, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3444, 3444, 3452, 3444, 3452, 3452, - 3444, 3444, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3491, 3491, 3491, 3483, 3483, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3491, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3483, 3483, 3491, + 3491, 3491, 3483, 3483, 3483, 3483, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3483, 3483, 3491, 3491, 3491, 3491, 3491, + 3483, 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, - 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3444, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3444, 3444, - 3452, 3452, 3444, 3444, 3452, 3444, 3444, 3444, 3444, 3444, - 3444, 3444, 3444, 3452, 3452, 3444, 3452, 3452, 3452, 3444, - 3452, 3444, 3452, 3452, 3452, 3452, 3444, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3444, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3483, 3483, 3491, 3483, 3491, 3491, 3483, + 3483, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3483, + 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3483, 3483, 3491, + 3491, 3483, 3483, 3491, 3483, 3483, 3483, 3483, 3483, 3483, + 3483, 3483, 3491, 3491, 3483, 3491, 3491, 3491, 3483, 3491, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3444, - 3452, 3444, 3452, 3444, 3444, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3444, 3444, - 3452, 3452, 3444, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3444, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3444, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, + 3483, 3491, 3491, 3491, 3491, 3483, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3483, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3483, 3491, + 3483, 3491, 3483, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3483, 3483, 3491, + 3491, 3483, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3483, 3483, 3491, 3491, 3491, 3491, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3444, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3444, 3452, 3444, 3444, 3452, 3452, 3452, 3452, - 3452, 3444, 3444, 0, 3444, 3444, 3444, 3444, 3444, 3444, - 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, - 3444, 3444 + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3483, 3491, 3483, 3483, 3491, 3491, 3491, 3491, 3491, + 3483, 3483, 0, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + + 3483 } ; -static const flex_int16_t yy_nxt[6762] = +static const flex_int16_t yy_nxt[6834] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1618,7 +1632,7 @@ static const flex_int16_t yy_nxt[6762] = 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, 732, 334, 86, 338, 323, 331, + 332, 86, 86, 86, 736, 334, 86, 338, 323, 331, 324, 86, 335, 86, 86, 340, 86, 342, 86, 339, 341, 86, 333, 86, 86, 86, 344, 336, 86, 86, 86, 343, 86, 86, 346, 86, 348, 86, 345, 86, @@ -1655,656 +1669,664 @@ static const flex_int16_t yy_nxt[6762] = 86, 86, 86, 86, 492, 496, 498, 86, 499, 86, 501, 497, 170, 507, 86, 500, 508, 86, 505, 86, 86, 86, 522, 502, 86, 509, 503, 523, 504, 86, - 510, 86, 511, 544, 86, 86, 525, 86, 512, 568, + 510, 86, 511, 545, 86, 86, 525, 86, 512, 569, 528, 168, 513, 86, 86, 524, 526, 514, 527, 530, - 515, 86, 516, 539, 517, 540, 529, 86, 538, 86, - 541, 86, 86, 86, 86, 86, 547, 518, 86, 542, - 519, 166, 520, 86, 521, 86, 543, 531, 532, 546, - 549, 545, 86, 86, 548, 550, 86, 533, 551, 534, - 535, 536, 553, 557, 537, 86, 552, 86, 86, 86, - 555, 86, 554, 558, 560, 562, 86, 563, 86, 86, - 86, 86, 559, 567, 86, 86, 561, 86, 556, 86, - 570, 565, 571, 572, 566, 86, 86, 86, 564, 86, - 569, 86, 86, 86, 577, 578, 579, 573, 86, 584, + 515, 86, 516, 540, 517, 541, 529, 86, 539, 86, + 542, 86, 86, 86, 86, 86, 548, 518, 86, 543, + 519, 166, 520, 86, 521, 86, 544, 531, 532, 547, + 550, 546, 553, 86, 549, 551, 86, 533, 534, 535, + 536, 537, 554, 552, 538, 86, 86, 86, 86, 86, + 556, 563, 555, 558, 561, 86, 86, 86, 86, 564, + 86, 86, 560, 568, 86, 86, 559, 86, 557, 86, + 562, 86, 566, 86, 86, 567, 565, 86, 571, 578, + 570, 572, 573, 575, 86, 574, 86, 576, 577, 86, - 86, 86, 574, 575, 581, 576, 86, 86, 585, 86, - 582, 86, 86, 580, 86, 598, 586, 86, 601, 86, - 590, 86, 600, 587, 86, 583, 589, 588, 599, 593, - 86, 591, 86, 592, 603, 86, 165, 594, 595, 602, - 86, 596, 597, 86, 86, 86, 86, 86, 606, 605, - 607, 608, 86, 604, 86, 609, 86, 610, 611, 612, - 86, 86, 86, 615, 616, 614, 613, 86, 86, 618, - 86, 617, 86, 86, 86, 622, 86, 620, 621, 86, - 86, 86, 86, 623, 86, 628, 86, 86, 624, 619, - 86, 629, 633, 627, 630, 86, 631, 86, 626, 625, + 582, 579, 580, 86, 86, 585, 86, 583, 86, 86, + 86, 601, 86, 86, 86, 86, 165, 86, 603, 581, + 591, 592, 584, 587, 602, 586, 588, 589, 590, 86, + 86, 606, 593, 604, 594, 86, 86, 86, 86, 605, + 595, 86, 86, 86, 608, 609, 610, 611, 596, 597, + 86, 86, 598, 599, 86, 613, 600, 607, 615, 86, + 86, 86, 86, 618, 614, 616, 619, 86, 86, 86, + 612, 620, 86, 86, 617, 86, 86, 625, 623, 86, + 624, 86, 86, 621, 86, 626, 86, 86, 86, 631, + 622, 627, 632, 86, 86, 86, 630, 633, 86, 635, - 86, 632, 86, 635, 86, 637, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 639, 634, 640, 642, 636, - 86, 86, 644, 650, 86, 86, 649, 638, 163, 86, - 641, 643, 645, 651, 646, 86, 652, 86, 647, 654, - 653, 648, 86, 86, 86, 655, 657, 86, 656, 660, - 86, 86, 86, 663, 662, 86, 86, 86, 658, 86, - 86, 666, 659, 86, 86, 86, 665, 669, 86, 670, - 661, 86, 86, 672, 86, 86, 86, 664, 86, 667, - 671, 668, 687, 86, 86, 86, 86, 673, 675, 86, - 689, 674, 86, 676, 684, 86, 706, 685, 677, 686, + 629, 628, 86, 86, 638, 86, 634, 636, 86, 637, + 86, 640, 86, 86, 86, 86, 642, 639, 86, 645, + 86, 643, 86, 86, 86, 86, 641, 653, 86, 656, + 647, 86, 86, 86, 644, 646, 86, 654, 648, 652, + 649, 650, 651, 655, 658, 657, 661, 659, 86, 86, + 86, 660, 663, 86, 86, 666, 86, 665, 86, 86, + 86, 86, 86, 86, 669, 662, 86, 672, 86, 86, + 668, 673, 86, 664, 86, 86, 86, 675, 86, 667, + 86, 86, 670, 671, 674, 690, 86, 677, 678, 86, + 676, 86, 679, 689, 86, 86, 687, 680, 694, 681, - 678, 694, 688, 86, 86, 690, 679, 691, 680, 692, - 86, 681, 682, 693, 86, 695, 86, 699, 683, 86, - 86, 86, 86, 86, 703, 698, 86, 86, 700, 86, - 696, 86, 708, 697, 701, 86, 702, 86, 86, 86, - 86, 86, 86, 86, 709, 704, 705, 710, 714, 715, - 86, 86, 707, 711, 86, 720, 712, 717, 86, 719, - 716, 713, 170, 722, 718, 86, 721, 86, 86, 86, - 86, 86, 86, 725, 86, 735, 729, 723, 86, 161, - 731, 86, 724, 727, 726, 86, 86, 730, 737, 728, - 734, 86, 86, 733, 86, 86, 86, 86, 736, 739, + 692, 688, 693, 86, 86, 682, 86, 683, 691, 695, + 684, 685, 86, 696, 86, 86, 86, 686, 697, 698, + 702, 701, 699, 86, 86, 700, 86, 706, 86, 86, + 704, 703, 705, 86, 709, 86, 711, 86, 86, 86, + 86, 86, 715, 86, 86, 86, 707, 86, 708, 718, + 713, 86, 712, 86, 710, 714, 719, 86, 716, 722, + 86, 724, 726, 170, 720, 717, 721, 725, 86, 723, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 733, 735, 727, 746, 86, 86, 728, 730, 86, 731, + 734, 729, 737, 732, 738, 86, 739, 740, 741, 86, - 86, 86, 86, 86, 738, 742, 743, 86, 748, 740, - 744, 86, 741, 749, 86, 751, 86, 745, 747, 753, - 746, 752, 86, 86, 750, 86, 754, 86, 755, 86, - 756, 86, 757, 86, 86, 86, 86, 758, 86, 86, - 762, 86, 761, 760, 759, 86, 86, 86, 765, 764, - 86, 766, 763, 770, 769, 86, 86, 767, 86, 86, - 771, 86, 86, 773, 86, 775, 768, 86, 86, 86, - 86, 86, 781, 772, 778, 774, 782, 776, 86, 86, - 86, 86, 789, 86, 779, 86, 784, 86, 777, 86, - 780, 785, 792, 783, 786, 787, 86, 86, 788, 86, + 742, 86, 86, 86, 86, 86, 743, 86, 747, 86, + 163, 86, 86, 744, 752, 765, 745, 86, 748, 753, + 86, 755, 86, 751, 754, 749, 756, 86, 750, 757, + 758, 86, 759, 86, 760, 86, 761, 86, 763, 86, + 86, 762, 86, 86, 766, 86, 86, 86, 86, 764, + 769, 770, 86, 768, 86, 774, 773, 86, 86, 86, + 86, 86, 767, 776, 86, 778, 86, 780, 86, 86, + 86, 771, 86, 772, 86, 783, 777, 775, 779, 86, + 787, 86, 86, 781, 86, 86, 86, 788, 790, 86, + 782, 784, 86, 791, 786, 785, 792, 793, 789, 794, - 796, 793, 86, 790, 86, 791, 86, 86, 86, 86, - 798, 794, 799, 797, 795, 86, 86, 86, 804, 802, - 801, 86, 803, 86, 86, 86, 86, 805, 806, 808, - 810, 86, 86, 86, 800, 811, 807, 86, 86, 178, - 86, 86, 817, 86, 819, 809, 86, 815, 86, 818, - 86, 812, 816, 814, 813, 820, 821, 86, 86, 86, - 822, 86, 86, 828, 823, 827, 86, 826, 824, 86, - 830, 829, 86, 86, 86, 825, 86, 831, 833, 834, - 86, 86, 86, 841, 835, 86, 86, 838, 86, 86, - 86, 86, 86, 836, 837, 848, 844, 832, 86, 843, + 86, 795, 86, 86, 86, 86, 802, 796, 797, 798, + 799, 86, 86, 86, 86, 86, 800, 804, 801, 805, + 803, 86, 86, 86, 86, 808, 807, 86, 809, 810, + 86, 86, 86, 86, 812, 86, 814, 816, 86, 86, + 86, 806, 811, 813, 817, 86, 86, 823, 86, 161, + 86, 825, 815, 86, 819, 821, 820, 822, 818, 86, + 826, 827, 86, 86, 86, 824, 86, 828, 830, 86, + 86, 829, 834, 836, 832, 86, 831, 86, 86, 86, + 835, 86, 86, 86, 837, 840, 86, 839, 86, 833, + 841, 86, 847, 844, 86, 86, 842, 86, 86, 843, - 86, 839, 840, 86, 846, 842, 850, 847, 845, 86, - 849, 86, 86, 854, 86, 856, 852, 86, 855, 86, - 86, 851, 858, 857, 86, 86, 853, 860, 86, 86, - 86, 86, 866, 86, 86, 86, 859, 867, 86, 86, - 86, 86, 861, 868, 86, 86, 862, 863, 86, 864, - 869, 865, 86, 875, 870, 86, 873, 86, 871, 86, - 872, 86, 86, 874, 86, 876, 877, 878, 882, 86, - 86, 86, 86, 86, 86, 176, 879, 86, 891, 889, - 86, 881, 880, 86, 86, 86, 884, 883, 892, 885, - 886, 887, 888, 86, 890, 86, 86, 893, 86, 86, + 86, 86, 838, 86, 849, 850, 854, 845, 846, 86, + 852, 86, 86, 848, 856, 86, 862, 851, 853, 86, + 86, 855, 86, 860, 857, 86, 863, 858, 861, 86, + 86, 86, 864, 866, 86, 86, 86, 859, 865, 86, + 872, 86, 86, 867, 86, 873, 86, 86, 86, 86, + 86, 874, 868, 869, 881, 870, 879, 86, 86, 871, + 86, 86, 875, 876, 86, 86, 86, 877, 86, 878, + 86, 86, 880, 86, 86, 883, 884, 888, 882, 86, + 86, 86, 86, 86, 885, 896, 889, 886, 895, 887, + 890, 86, 897, 86, 86, 86, 899, 891, 892, 893, - 86, 897, 86, 86, 894, 86, 895, 896, 902, 901, - 86, 86, 903, 900, 898, 904, 905, 86, 899, 86, - 86, 86, 86, 170, 86, 86, 907, 912, 913, 908, - 910, 86, 86, 86, 914, 906, 909, 911, 86, 86, - 86, 928, 915, 86, 86, 920, 916, 86, 917, 921, - 86, 86, 922, 924, 86, 918, 86, 919, 86, 86, - 923, 925, 86, 927, 86, 86, 930, 926, 86, 934, - 86, 86, 86, 86, 86, 86, 931, 86, 935, 929, - 936, 86, 86, 175, 86, 86, 933, 950, 86, 937, - 932, 951, 947, 949, 939, 86, 86, 938, 86, 948, + 894, 86, 86, 86, 86, 898, 901, 903, 902, 86, + 86, 86, 900, 86, 86, 86, 908, 907, 86, 904, + 909, 86, 906, 905, 86, 914, 911, 86, 86, 912, + 86, 86, 170, 913, 919, 86, 915, 920, 910, 917, + 86, 86, 916, 918, 921, 86, 86, 86, 86, 922, + 925, 86, 928, 86, 86, 929, 924, 931, 86, 86, + 923, 86, 926, 930, 932, 86, 86, 935, 86, 86, + 933, 86, 927, 86, 86, 937, 941, 86, 86, 86, + 938, 86, 86, 86, 934, 942, 936, 86, 943, 86, + 86, 86, 940, 86, 939, 86, 944, 957, 86, 956, - 940, 86, 86, 941, 952, 954, 958, 942, 86, 955, - 943, 86, 953, 86, 956, 86, 959, 944, 945, 961, - 946, 86, 957, 86, 86, 86, 969, 86, 86, 86, - 86, 972, 86, 974, 86, 960, 86, 962, 963, 976, - 964, 86, 971, 965, 970, 978, 170, 86, 966, 975, - 980, 977, 973, 981, 967, 968, 86, 86, 982, 86, - 86, 984, 86, 983, 86, 987, 979, 986, 86, 86, - 86, 86, 985, 988, 989, 990, 991, 86, 86, 86, - 992, 993, 86, 86, 86, 86, 995, 86, 999, 86, - 86, 86, 998, 86, 86, 1002, 86, 86, 994, 168, + 86, 958, 954, 946, 945, 86, 955, 947, 86, 959, + 948, 86, 86, 967, 949, 961, 965, 950, 86, 962, + 86, 963, 86, 86, 951, 952, 968, 953, 960, 86, + 86, 86, 86, 964, 86, 977, 86, 966, 86, 969, + 970, 86, 971, 86, 86, 972, 984, 980, 982, 976, + 973, 86, 978, 86, 979, 86, 974, 975, 981, 86, + 986, 990, 86, 86, 983, 989, 991, 86, 987, 86, + 985, 86, 993, 86, 86, 1001, 992, 86, 994, 995, + 86, 996, 997, 86, 988, 86, 998, 1000, 86, 86, + 999, 86, 86, 86, 86, 86, 1004, 86, 1008, 86, - 1006, 1004, 1007, 996, 997, 1000, 86, 1001, 1009, 1003, - 1008, 86, 86, 1010, 86, 1012, 86, 1011, 1005, 1014, - 1016, 86, 86, 86, 86, 86, 86, 1015, 86, 1018, - 86, 1017, 1019, 1020, 86, 1013, 1021, 86, 1022, 86, - 86, 86, 86, 86, 86, 1024, 1029, 86, 1025, 86, - 1032, 86, 86, 86, 86, 86, 1033, 1023, 1030, 1027, - 1026, 1031, 86, 1028, 1035, 86, 86, 86, 86, 86, - 86, 1034, 1038, 1040, 1036, 1039, 86, 86, 1037, 86, - 86, 1041, 1042, 1046, 86, 1048, 1044, 86, 1047, 86, - 86, 86, 1045, 86, 1043, 1049, 86, 86, 1056, 1051, + 86, 1002, 1007, 86, 86, 1011, 86, 86, 1017, 86, + 1003, 1013, 1015, 1005, 1006, 1009, 86, 1010, 86, 86, + 1018, 1016, 86, 86, 1012, 1019, 86, 1020, 1021, 1014, + 1023, 1028, 86, 1025, 86, 86, 86, 1024, 1022, 86, + 86, 1027, 86, 1026, 1029, 86, 1030, 86, 86, 86, + 1031, 86, 86, 86, 1033, 86, 1038, 86, 1034, 86, + 1041, 86, 86, 86, 86, 86, 1032, 1042, 1039, 1036, + 1035, 1040, 86, 86, 1037, 86, 86, 1047, 86, 86, + 86, 1043, 1049, 86, 1044, 1045, 86, 1048, 1046, 86, + 1052, 1050, 1053, 1055, 1051, 86, 1057, 86, 1056, 86, - 1054, 1057, 86, 86, 86, 86, 1050, 86, 1055, 1059, - 86, 1053, 86, 86, 86, 1052, 86, 86, 86, 86, - 86, 1067, 1070, 1065, 1058, 86, 1060, 1061, 86, 1071, - 1062, 86, 86, 1064, 1063, 86, 1068, 1072, 1069, 1066, - 86, 1075, 86, 86, 86, 86, 1074, 86, 1076, 1078, - 1073, 1079, 86, 86, 86, 86, 1077, 86, 86, 86, - 86, 1084, 1080, 1082, 1089, 1081, 1090, 1083, 1092, 86, - 86, 86, 86, 1091, 86, 1085, 1095, 1087, 1096, 1086, - 1088, 86, 86, 1093, 86, 1097, 86, 86, 86, 86, - 1104, 1094, 86, 1101, 86, 1103, 86, 86, 86, 1099, + 86, 86, 1054, 86, 86, 86, 86, 86, 1063, 1065, + 1060, 86, 1058, 1066, 86, 86, 1064, 86, 86, 1059, + 1068, 86, 1062, 86, 86, 86, 1070, 1061, 86, 1079, + 86, 86, 1067, 1074, 1076, 86, 86, 86, 1069, 86, + 1072, 1071, 86, 1073, 86, 1080, 1077, 86, 1075, 1081, + 1078, 86, 1085, 1084, 86, 86, 1083, 86, 1082, 1087, + 1088, 86, 86, 86, 86, 1086, 86, 86, 86, 1098, + 86, 1091, 1093, 1099, 1089, 86, 1101, 1090, 86, 86, + 86, 86, 86, 1092, 86, 1104, 1094, 1096, 1106, 1095, + 1097, 86, 1100, 1105, 1102, 86, 86, 86, 86, 86, - 1105, 86, 1108, 1110, 86, 1098, 86, 1100, 86, 86, - 1102, 166, 1109, 86, 1107, 86, 1106, 86, 1112, 86, - 1113, 1116, 86, 1119, 1111, 86, 1117, 170, 86, 1120, - 1118, 1121, 86, 1114, 86, 1115, 86, 1123, 86, 86, - 86, 86, 1122, 86, 1124, 86, 1136, 1137, 1139, 86, - 1126, 1127, 86, 86, 86, 86, 1138, 1141, 1125, 1128, - 86, 1129, 86, 86, 1148, 1130, 86, 1131, 1144, 1142, - 1146, 1132, 86, 1133, 1143, 1147, 86, 1140, 1134, 86, - 1145, 86, 86, 1135, 86, 1150, 1149, 1156, 86, 1153, - 86, 86, 86, 86, 1152, 86, 86, 1151, 86, 1154, + 1113, 1103, 1110, 86, 1112, 1114, 86, 86, 1108, 86, + 1115, 86, 86, 86, 1107, 1118, 1109, 1120, 86, 1111, + 86, 86, 86, 86, 86, 1117, 86, 1116, 1122, 1123, + 1126, 86, 1130, 1119, 86, 1127, 170, 1128, 1121, 86, + 86, 86, 1124, 1129, 1125, 1133, 1131, 86, 86, 86, + 86, 86, 86, 1146, 1132, 86, 1149, 86, 86, 1147, + 1134, 86, 1136, 1137, 86, 1151, 86, 1175, 86, 1138, + 86, 1135, 1139, 86, 86, 1154, 1140, 86, 1141, 1148, + 1156, 1152, 1142, 1150, 1143, 1157, 86, 86, 1153, 1144, + 86, 1155, 86, 86, 1145, 86, 1158, 1160, 86, 86, - 1155, 1161, 1160, 1162, 1157, 1163, 1159, 1164, 1165, 86, - 1166, 86, 1158, 86, 1167, 86, 86, 86, 1168, 86, - 86, 86, 86, 86, 1182, 86, 1179, 86, 86, 1178, - 1183, 86, 86, 86, 86, 1169, 1180, 1170, 86, 1171, - 1181, 1184, 1189, 1188, 1172, 1185, 1173, 86, 86, 86, - 86, 1186, 1174, 1187, 1190, 86, 86, 1175, 1176, 1191, - 1195, 86, 86, 86, 1177, 86, 1196, 1198, 1192, 86, - 86, 1193, 1199, 86, 1194, 1201, 86, 86, 86, 1203, - 86, 86, 1204, 1197, 1200, 86, 86, 1209, 86, 1202, - 1206, 86, 86, 86, 86, 1207, 1208, 1205, 86, 1212, + 1163, 86, 86, 1166, 1159, 86, 86, 1162, 86, 1161, + 1164, 1165, 1171, 86, 1173, 1167, 1174, 1170, 1172, 1169, + 86, 1176, 86, 1168, 1177, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 1189, 86, 1192, 86, 86, 86, + 1188, 1194, 1193, 86, 1191, 86, 1179, 1178, 86, 1180, + 86, 1181, 1190, 86, 1200, 1195, 1182, 1196, 1183, 86, + 86, 1199, 86, 86, 1184, 86, 86, 1197, 1201, 1185, + 1186, 1202, 1198, 86, 1207, 86, 1187, 86, 86, 1210, + 1203, 1204, 1208, 86, 1205, 86, 1211, 86, 86, 86, + 1215, 1206, 86, 1213, 86, 86, 86, 1209, 86, 1216, - 1210, 86, 86, 86, 86, 86, 86, 1211, 86, 1219, - 1221, 86, 1213, 1217, 1216, 1214, 86, 1218, 1215, 86, - 1223, 86, 1220, 86, 86, 86, 1225, 1222, 86, 86, - 86, 86, 86, 1230, 1235, 1231, 1232, 86, 1227, 1224, - 86, 1233, 1226, 1228, 1229, 86, 1234, 86, 86, 86, - 86, 1242, 1237, 1240, 1243, 86, 1236, 86, 1241, 86, - 1244, 1238, 86, 86, 86, 1239, 86, 1251, 86, 1245, - 86, 86, 1253, 86, 86, 86, 86, 1249, 86, 1247, - 1255, 86, 1246, 1250, 1248, 86, 1254, 1266, 1256, 86, - 1252, 86, 1257, 86, 86, 86, 1259, 1258, 1260, 86, + 86, 86, 1214, 1221, 1218, 86, 1212, 1219, 86, 86, + 1222, 1217, 86, 1224, 86, 86, 1220, 86, 86, 86, + 86, 86, 86, 86, 1223, 1231, 86, 1229, 1226, 1228, + 1230, 86, 1225, 1233, 86, 1227, 1237, 1232, 1234, 86, + 1235, 86, 86, 1236, 86, 86, 86, 86, 86, 178, + 1242, 1243, 1244, 1238, 86, 1239, 86, 1245, 1247, 1241, + 1240, 86, 1246, 1248, 86, 86, 86, 1252, 86, 86, + 86, 1249, 1253, 86, 86, 86, 1254, 1256, 1250, 1255, + 86, 86, 1251, 1257, 86, 1263, 1259, 86, 1258, 1265, + 86, 86, 86, 86, 1261, 86, 86, 1267, 1260, 1262, - 1263, 1261, 86, 1262, 1264, 86, 86, 1269, 1270, 86, - 86, 86, 1268, 86, 1265, 86, 86, 1274, 1273, 1271, - 86, 1267, 86, 86, 86, 1280, 86, 1278, 1281, 1272, - 86, 86, 86, 86, 86, 1282, 1284, 1283, 1275, 1279, - 86, 1276, 86, 1277, 1286, 1285, 86, 86, 1290, 86, - 86, 1287, 86, 1289, 86, 1292, 86, 1291, 1293, 86, - 86, 86, 86, 86, 86, 1288, 1297, 1298, 1294, 86, - 86, 86, 86, 1299, 1300, 1304, 1305, 86, 1295, 86, - 1296, 86, 86, 1302, 1307, 1308, 86, 86, 1301, 86, - 86, 1303, 1306, 1312, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 1269, 86, 1266, 1271, 1264, 86, 1272, + 1268, 86, 86, 86, 1270, 86, 1275, 1274, 1273, 1278, + 1276, 86, 86, 1281, 1277, 1282, 86, 86, 1280, 86, + 86, 86, 86, 1286, 1285, 86, 1283, 1279, 86, 86, + 86, 86, 86, 1290, 1292, 1293, 1296, 1294, 1284, 86, + 86, 86, 86, 1287, 1291, 86, 86, 1288, 1298, 1289, + 1295, 1297, 86, 86, 86, 1302, 86, 1299, 86, 1301, + 86, 86, 86, 1303, 1304, 86, 86, 86, 86, 1305, + 1309, 1300, 86, 86, 1307, 1306, 1310, 1312, 86, 1311, + 86, 1308, 86, 1316, 1317, 86, 86, 1320, 86, 86, - 1318, 86, 1311, 1310, 1314, 86, 1309, 170, 86, 86, - 86, 86, 1313, 1319, 1320, 1315, 1321, 86, 1317, 86, - 86, 86, 1323, 1316, 1326, 1324, 86, 1322, 1330, 1325, - 1327, 1328, 86, 1331, 86, 86, 86, 1334, 86, 86, - 1329, 1333, 1332, 1335, 86, 86, 86, 86, 86, 86, - 86, 1338, 86, 1344, 86, 86, 1341, 86, 1336, 1337, - 86, 86, 1339, 86, 165, 1342, 1348, 1340, 86, 1345, - 86, 1343, 86, 1350, 1354, 1346, 1347, 86, 1355, 1358, - 86, 86, 1351, 1349, 1352, 1356, 86, 1353, 1357, 86, - 86, 86, 86, 1360, 86, 1359, 86, 86, 86, 1364, + 86, 1319, 1314, 86, 86, 86, 1313, 86, 1325, 86, + 1318, 1315, 86, 86, 86, 86, 86, 1323, 1322, 1331, + 86, 86, 1321, 1327, 170, 1324, 86, 1326, 86, 1332, + 86, 1333, 1328, 1334, 86, 1330, 86, 86, 86, 86, + 1329, 1339, 1341, 86, 1335, 1337, 1343, 1340, 1336, 1338, + 1344, 86, 86, 86, 86, 86, 86, 1347, 1346, 1342, + 86, 86, 86, 86, 86, 1348, 86, 1345, 1349, 1351, + 86, 86, 86, 1354, 86, 1350, 86, 1352, 1357, 86, + 86, 86, 1353, 86, 176, 1355, 1358, 1361, 1363, 86, + 1356, 1360, 1359, 1367, 86, 1368, 86, 1364, 86, 1365, - 86, 1363, 1367, 86, 86, 1361, 86, 1371, 86, 1362, - 1366, 86, 86, 86, 1368, 1365, 1372, 1369, 1373, 86, - 86, 1377, 1370, 1376, 1374, 1375, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 1383, 86, 86, - 86, 1378, 1379, 1381, 1382, 1384, 1388, 1380, 86, 86, - 86, 1385, 86, 1387, 1389, 1386, 1390, 1392, 1391, 86, - 86, 86, 86, 86, 1393, 86, 1400, 86, 86, 1394, - 86, 1395, 86, 1403, 86, 86, 1398, 1397, 1401, 1396, - 1406, 1402, 1399, 86, 1408, 86, 1405, 86, 1404, 1409, - 86, 86, 1413, 1410, 86, 1407, 86, 1423, 1427, 1411, + 1362, 1369, 1366, 1370, 86, 1371, 86, 86, 86, 86, + 1373, 86, 86, 86, 86, 175, 86, 1377, 1376, 86, + 1372, 1380, 86, 86, 1384, 86, 1379, 1374, 86, 1375, + 86, 86, 1378, 1381, 1382, 1385, 1386, 86, 86, 86, + 86, 1383, 1388, 1389, 86, 86, 86, 1390, 1387, 86, + 86, 86, 86, 86, 86, 1391, 1396, 86, 1394, 1392, + 86, 86, 1403, 1397, 1393, 1395, 1401, 86, 86, 86, + 86, 1398, 1400, 86, 1399, 86, 1402, 1404, 1406, 86, + 86, 86, 1413, 86, 1415, 1407, 86, 1405, 86, 86, + 86, 1409, 1408, 86, 1410, 86, 1412, 1418, 86, 86, - 1412, 86, 1414, 86, 86, 1422, 1415, 1421, 86, 1416, - 1417, 86, 1424, 1425, 1418, 86, 86, 86, 86, 86, - 1419, 86, 1428, 1429, 1420, 1426, 86, 1430, 86, 1432, - 86, 86, 1437, 1433, 86, 1434, 1431, 86, 86, 1435, - 86, 1439, 1440, 1438, 86, 1443, 1444, 86, 86, 1436, - 86, 86, 86, 1445, 1441, 86, 1447, 86, 1474, 1446, - 86, 1448, 1442, 1449, 86, 1450, 86, 1451, 86, 1452, - 1458, 1453, 86, 1454, 1455, 1456, 86, 86, 1460, 1457, - 86, 1462, 86, 86, 86, 86, 1463, 86, 86, 1461, - 1466, 1459, 1464, 86, 86, 86, 1472, 1468, 1467, 86, + 86, 1416, 86, 1414, 1421, 1411, 86, 1417, 86, 86, + 1501, 1423, 1422, 86, 1420, 1419, 1424, 86, 86, 1428, + 1426, 1425, 1427, 86, 1429, 86, 1436, 1438, 1430, 86, + 1439, 1431, 1432, 86, 1437, 86, 1433, 1442, 86, 86, + 1440, 86, 1434, 86, 1443, 86, 1435, 1441, 86, 1445, + 1444, 86, 1447, 86, 86, 86, 1448, 1452, 1449, 86, + 86, 86, 1446, 86, 86, 86, 1455, 86, 1453, 1458, + 1459, 86, 1460, 1451, 1450, 86, 86, 86, 1456, 86, + 1454, 1461, 86, 1457, 86, 1468, 86, 1467, 1462, 86, + 1469, 1470, 1471, 1463, 86, 1464, 86, 1465, 86, 1466, - 1473, 86, 86, 86, 1465, 86, 86, 86, 1476, 1471, - 86, 86, 1469, 1470, 86, 1475, 1478, 1479, 86, 1477, - 1483, 86, 86, 1482, 1480, 1485, 86, 1488, 86, 1484, - 1486, 86, 86, 86, 1487, 86, 1481, 1491, 86, 1493, - 86, 86, 1490, 86, 1494, 86, 1495, 86, 1498, 86, - 86, 1489, 86, 86, 86, 1492, 1501, 1503, 86, 86, - 86, 86, 1506, 86, 1504, 86, 1496, 1505, 1497, 1500, - 1499, 86, 86, 86, 1502, 1508, 1510, 86, 86, 1507, - 1509, 86, 1512, 86, 1515, 86, 1513, 1511, 1514, 86, - 1516, 86, 1517, 86, 1518, 86, 86, 86, 1523, 1524, + 86, 1474, 1473, 86, 1477, 86, 1480, 1472, 86, 1478, + 86, 86, 1476, 1481, 1479, 86, 86, 86, 1475, 86, + 1487, 86, 1488, 86, 1483, 1482, 86, 86, 86, 86, + 86, 1489, 86, 1486, 1491, 1484, 1485, 86, 86, 1493, + 86, 1490, 1492, 86, 1494, 1497, 1498, 86, 1500, 86, + 1495, 86, 86, 86, 1502, 86, 86, 1503, 1499, 1506, + 86, 1508, 86, 1496, 1505, 86, 1509, 86, 86, 86, + 1513, 86, 1504, 1510, 86, 86, 1507, 86, 86, 1518, + 1516, 86, 86, 86, 86, 86, 1519, 86, 1511, 1521, + 1512, 1520, 1515, 86, 1514, 86, 1523, 86, 1517, 1524, - 1526, 1520, 86, 1521, 86, 86, 86, 1525, 86, 86, - 1522, 1519, 86, 1530, 86, 86, 86, 1527, 86, 86, - 86, 1532, 170, 1529, 86, 1538, 1539, 86, 1528, 1534, - 86, 86, 86, 1540, 86, 1531, 1533, 1535, 1541, 86, - 1536, 86, 86, 86, 86, 86, 1549, 1537, 1542, 86, - 1544, 86, 86, 1546, 1543, 86, 1547, 1554, 86, 1545, - 1553, 1548, 86, 86, 86, 86, 1558, 86, 1556, 1550, - 1552, 1559, 86, 86, 1561, 1562, 1551, 163, 86, 86, - 86, 86, 86, 1557, 86, 1555, 1567, 86, 86, 1568, - 1570, 1560, 1563, 1569, 1564, 1565, 1571, 1572, 1566, 86, + 1525, 1522, 86, 86, 86, 86, 86, 1527, 1529, 1530, + 1531, 1526, 1528, 86, 1532, 86, 86, 86, 86, 86, + 1533, 1538, 1539, 1535, 86, 1536, 86, 86, 86, 1540, + 1542, 1541, 1537, 86, 1534, 86, 86, 86, 1546, 86, + 86, 86, 1543, 86, 170, 86, 1548, 86, 1545, 86, + 1554, 1555, 86, 86, 1544, 1550, 86, 86, 1556, 1551, + 1547, 1549, 1557, 86, 86, 86, 86, 1552, 86, 86, + 86, 1565, 1553, 1560, 86, 86, 86, 1558, 1562, 1563, + 86, 1569, 86, 1559, 1561, 1570, 86, 1564, 86, 86, + 1574, 86, 86, 1572, 1566, 1575, 86, 86, 1568, 86, - 86, 1575, 86, 86, 1573, 86, 1576, 86, 86, 86, - 1574, 86, 86, 1578, 1580, 86, 1581, 86, 86, 86, - 1584, 1577, 86, 1579, 86, 1589, 1582, 86, 86, 86, - 86, 1590, 1583, 1586, 86, 1593, 1587, 1585, 86, 86, - 1588, 86, 1594, 86, 86, 86, 1591, 86, 1592, 86, - 1600, 86, 1596, 1595, 1597, 86, 1601, 86, 1598, 86, - 1602, 86, 1605, 1599, 86, 1603, 1604, 86, 1609, 1610, - 1611, 1608, 86, 1607, 1606, 86, 86, 1613, 86, 86, - 86, 86, 86, 1618, 1619, 1614, 1612, 1617, 1620, 86, - 86, 86, 1621, 86, 86, 86, 1615, 86, 1622, 1623, + 1567, 1577, 86, 86, 86, 1571, 86, 1578, 1573, 1576, + 86, 1579, 1586, 1585, 86, 86, 86, 1580, 1581, 1583, + 1587, 1582, 1584, 1588, 86, 1591, 1590, 86, 1589, 86, + 1592, 86, 86, 86, 86, 1593, 86, 86, 1596, 1597, + 86, 86, 86, 170, 86, 1600, 86, 86, 1605, 86, + 1595, 86, 86, 1594, 1598, 1606, 1602, 1599, 86, 1609, + 86, 1601, 1603, 86, 1604, 86, 86, 1607, 86, 86, + 1610, 1608, 86, 86, 86, 86, 86, 1612, 1616, 1611, + 86, 1613, 1617, 1614, 86, 1618, 86, 1622, 1615, 86, + 1619, 1623, 86, 1621, 1627, 1620, 86, 1626, 1624, 1628, - 86, 86, 1616, 86, 1625, 1624, 86, 86, 86, 86, - 86, 1626, 86, 1631, 86, 1627, 1630, 86, 1633, 1634, - 1628, 86, 1629, 86, 1637, 86, 1642, 1639, 1632, 1638, - 86, 1635, 1640, 86, 86, 86, 86, 86, 86, 86, - 1636, 1650, 1646, 1641, 86, 1645, 86, 86, 86, 86, - 1654, 1651, 86, 1643, 1644, 86, 86, 1647, 1657, 1648, - 86, 1656, 1649, 86, 86, 86, 86, 86, 1652, 86, - 86, 1655, 86, 86, 1665, 1653, 86, 86, 86, 1658, - 1666, 1662, 1659, 1672, 1660, 1661, 86, 1664, 86, 1667, - 1663, 1670, 86, 1671, 86, 1668, 86, 86, 1669, 86, + 86, 86, 86, 1630, 86, 86, 1631, 86, 86, 86, + 1632, 86, 1625, 1636, 1637, 1629, 1635, 1638, 86, 86, + 86, 86, 1639, 86, 1633, 86, 1640, 1641, 86, 86, + 1634, 86, 86, 1642, 86, 86, 1644, 86, 86, 86, + 1643, 86, 1649, 86, 1645, 1648, 86, 1651, 1646, 86, + 1647, 1652, 86, 1655, 86, 1657, 86, 1650, 1656, 86, + 1658, 86, 1654, 1653, 86, 1660, 86, 86, 86, 86, + 86, 1664, 1659, 1661, 1668, 1662, 1663, 86, 86, 86, + 86, 86, 1669, 86, 1672, 86, 1675, 1665, 1667, 1666, + 86, 1674, 86, 86, 86, 86, 86, 86, 1670, 86, - 1673, 1674, 86, 86, 1677, 86, 1675, 86, 1678, 86, - 86, 86, 1676, 1687, 1681, 1685, 86, 86, 1682, 86, - 86, 1679, 1686, 1680, 1689, 86, 1684, 1683, 86, 86, - 1690, 86, 1691, 1692, 86, 1688, 86, 86, 1697, 1698, - 86, 86, 86, 86, 86, 1695, 86, 1702, 1701, 1703, - 86, 1693, 1694, 1705, 86, 86, 86, 1696, 86, 1699, - 86, 1706, 86, 1700, 1707, 86, 86, 86, 86, 1710, - 1704, 86, 1708, 86, 1715, 86, 1709, 1713, 86, 86, - 86, 86, 86, 1711, 86, 1719, 86, 1712, 86, 1721, - 1716, 1714, 86, 1722, 86, 1720, 86, 1727, 1718, 1717, + 1673, 86, 1676, 86, 1683, 1671, 86, 86, 86, 1684, + 1680, 1687, 1677, 1678, 1679, 86, 1682, 86, 1681, 1688, + 86, 1689, 86, 86, 1693, 86, 1685, 1686, 1690, 1691, + 1692, 86, 86, 86, 1695, 86, 86, 86, 1696, 86, + 86, 1699, 1703, 86, 1694, 1704, 1705, 86, 1700, 86, + 86, 1697, 86, 1698, 1708, 1702, 86, 1701, 86, 86, + 1709, 86, 1706, 1707, 86, 1710, 86, 86, 1715, 1716, + 86, 86, 168, 1713, 86, 86, 86, 1712, 1711, 86, + 1719, 86, 1720, 1721, 86, 1717, 1714, 1723, 86, 86, + 86, 86, 1718, 1724, 1725, 86, 1722, 86, 86, 1730, - 1723, 1724, 86, 86, 86, 86, 1732, 86, 86, 1730, - 86, 86, 1733, 86, 1726, 86, 1728, 1725, 86, 1735, - 1731, 1729, 86, 86, 1737, 86, 1738, 86, 1740, 170, - 1734, 1741, 86, 1736, 1739, 86, 86, 86, 1742, 86, - 1743, 1744, 86, 1746, 86, 1745, 86, 1752, 86, 161, - 86, 1747, 86, 1753, 1756, 86, 1750, 86, 1748, 1749, - 86, 86, 86, 86, 1760, 1758, 1757, 1762, 1761, 1751, - 1754, 86, 1755, 86, 1764, 86, 1766, 86, 86, 86, - 86, 1759, 86, 86, 86, 1768, 86, 1769, 86, 1765, - 86, 1763, 86, 1771, 86, 1772, 86, 1767, 1773, 1776, + 1726, 1728, 86, 86, 86, 1733, 86, 1727, 86, 86, + 86, 1731, 86, 86, 1739, 1737, 86, 86, 1729, 86, + 86, 1734, 86, 1732, 86, 1740, 1738, 86, 1736, 1735, + 86, 1745, 86, 86, 1742, 1741, 86, 86, 1746, 1750, + 86, 1748, 1744, 86, 86, 1743, 86, 1751, 1749, 1754, + 1747, 86, 1753, 86, 86, 86, 86, 1752, 1757, 1761, + 1759, 1760, 86, 1755, 1756, 1758, 86, 86, 170, 86, + 86, 86, 1763, 86, 86, 86, 1771, 86, 86, 1762, + 86, 86, 1772, 1777, 1764, 1766, 86, 1765, 1769, 1767, + 1768, 1775, 86, 86, 86, 1776, 1779, 86, 1770, 1781, - 86, 1777, 86, 1775, 1774, 86, 86, 1770, 1778, 1781, - 1784, 86, 1782, 86, 1779, 86, 86, 86, 1785, 86, - 1786, 86, 1792, 86, 1783, 1780, 1789, 86, 1788, 1793, - 1791, 1794, 86, 86, 86, 86, 1787, 86, 1795, 1798, - 1790, 86, 1796, 86, 1797, 86, 86, 1800, 86, 86, - 1801, 1799, 86, 1805, 1806, 1804, 86, 1808, 86, 86, - 86, 1807, 86, 86, 86, 86, 86, 1802, 86, 1803, - 1810, 1811, 86, 1812, 86, 86, 86, 86, 86, 86, - 1813, 1809, 86, 1821, 1814, 86, 1815, 1822, 1816, 1817, - 1818, 1827, 86, 86, 86, 1819, 86, 86, 86, 86, + 1773, 1774, 1780, 86, 1783, 86, 86, 1785, 86, 86, + 86, 86, 86, 1778, 86, 86, 1790, 1787, 86, 1788, + 1784, 86, 1791, 1782, 86, 86, 86, 86, 1786, 1795, + 86, 1796, 1792, 86, 86, 86, 1789, 1803, 86, 166, + 1794, 1800, 1793, 86, 1801, 1797, 1798, 86, 86, 86, + 86, 1805, 1804, 1799, 86, 1808, 1802, 1810, 1807, 1812, + 1809, 1811, 86, 1813, 1817, 86, 86, 1806, 86, 86, + 86, 1814, 86, 1815, 86, 1816, 86, 86, 86, 86, + 86, 1818, 1824, 1823, 86, 1825, 1820, 1827, 86, 1826, + 1819, 86, 86, 86, 86, 86, 86, 1821, 86, 1822, - 86, 1823, 86, 1820, 1824, 1825, 86, 1826, 1833, 86, - 86, 86, 86, 1837, 1829, 1835, 1828, 86, 86, 1830, - 1831, 1832, 1834, 1836, 86, 86, 86, 86, 86, 86, - 86, 86, 1838, 86, 1844, 1842, 86, 1845, 1839, 1851, - 1846, 86, 1840, 1841, 1843, 86, 1847, 86, 1848, 1852, - 86, 1853, 86, 1849, 86, 86, 1850, 1854, 1856, 1855, - 1857, 86, 86, 86, 86, 1861, 1859, 1858, 1860, 1862, - 86, 86, 86, 86, 86, 86, 1870, 1871, 86, 86, - 86, 1865, 86, 1867, 1869, 86, 1868, 1864, 86, 1863, - 86, 1877, 1866, 1873, 86, 86, 1878, 86, 86, 1872, + 1829, 1830, 86, 1831, 86, 86, 86, 86, 86, 86, + 86, 86, 1832, 86, 86, 1828, 1833, 1841, 86, 86, + 1836, 1837, 1838, 1834, 86, 1835, 1842, 1839, 86, 86, + 1843, 1845, 86, 1848, 1849, 1840, 1844, 86, 1851, 86, + 1846, 86, 86, 1854, 86, 1847, 86, 86, 86, 86, + 1858, 86, 1856, 1850, 86, 1852, 86, 86, 86, 86, + 1857, 86, 86, 1853, 86, 1860, 1855, 1863, 1865, 1859, + 86, 86, 165, 1866, 1864, 1862, 1867, 86, 1868, 86, + 1861, 86, 1872, 1873, 86, 1869, 1874, 86, 86, 1875, + 1870, 1877, 1878, 86, 86, 86, 1871, 86, 86, 1876, - 1879, 86, 1875, 1874, 86, 86, 1876, 86, 1883, 86, - 1880, 86, 86, 1887, 1885, 86, 1886, 1884, 1889, 1881, - 1891, 1890, 1882, 86, 86, 86, 1895, 1888, 86, 86, - 86, 1896, 86, 86, 1901, 86, 1903, 86, 1900, 86, - 86, 1892, 1897, 1894, 1898, 1893, 86, 86, 1904, 1907, - 86, 1905, 1899, 1902, 86, 86, 1908, 86, 1911, 1909, - 86, 1906, 1915, 86, 86, 86, 1913, 86, 86, 86, - 86, 1910, 1914, 1912, 86, 1916, 86, 86, 1919, 1920, - 86, 86, 86, 86, 1917, 1921, 1927, 86, 1918, 1923, - 1922, 86, 1929, 1930, 1924, 86, 1925, 1926, 86, 86, + 86, 1882, 1881, 86, 86, 1883, 86, 1879, 86, 86, + 86, 1891, 1892, 86, 1880, 1886, 86, 86, 1888, 1890, + 1885, 1889, 1884, 86, 86, 86, 86, 1887, 1898, 86, + 86, 86, 86, 1899, 86, 1900, 1893, 1894, 86, 1896, + 86, 1895, 1897, 1901, 86, 1904, 86, 1906, 86, 1908, + 1903, 1907, 86, 86, 1902, 86, 1905, 86, 1912, 86, + 1916, 1910, 86, 1909, 1911, 1917, 86, 86, 86, 86, + 86, 1924, 86, 1913, 1921, 1922, 1918, 1915, 1914, 1925, + 86, 86, 1919, 86, 86, 86, 1928, 86, 1923, 1926, + 1920, 86, 86, 1929, 1927, 1932, 86, 86, 1936, 86, - 1932, 86, 86, 86, 1931, 1936, 86, 1938, 1928, 86, - 86, 86, 86, 86, 86, 1933, 1942, 86, 86, 86, - 1934, 86, 1935, 1937, 1945, 1944, 86, 1940, 86, 86, - 1941, 1939, 86, 1946, 1943, 1948, 86, 1947, 170, 86, - 1950, 1949, 1952, 86, 86, 1951, 1955, 86, 86, 86, - 1953, 1959, 86, 86, 86, 86, 86, 86, 1954, 86, - 1957, 1961, 86, 1956, 1966, 86, 86, 1960, 1958, 1962, - 86, 1963, 1969, 86, 1964, 1978, 1965, 1967, 1970, 86, - 1968, 86, 1972, 86, 1971, 86, 86, 1975, 1976, 86, - 1973, 86, 86, 86, 86, 1974, 86, 1979, 86, 86, + 1934, 86, 86, 1930, 86, 1931, 1935, 1937, 86, 1933, + 86, 86, 86, 86, 86, 86, 1941, 86, 1940, 86, + 1950, 1938, 1942, 1944, 86, 1943, 86, 1939, 1945, 1948, + 86, 1946, 1951, 1947, 1953, 86, 86, 1952, 86, 86, + 86, 1957, 86, 1959, 86, 86, 86, 86, 86, 86, + 86, 1949, 1963, 86, 1965, 86, 1954, 1955, 1958, 1956, + 1966, 86, 1961, 86, 86, 1962, 1960, 86, 1964, 1968, + 86, 86, 1969, 86, 86, 170, 1974, 86, 86, 1970, + 86, 1967, 1972, 1973, 1977, 86, 1971, 1975, 86, 1981, + 86, 86, 1976, 86, 86, 86, 86, 1978, 86, 1980, - 86, 86, 86, 1977, 86, 1984, 1985, 86, 86, 1989, - 86, 1986, 1980, 86, 86, 86, 1982, 1983, 1981, 1987, - 1993, 86, 1990, 1988, 1997, 86, 1995, 1994, 1998, 1996, - 1992, 86, 86, 86, 86, 1991, 86, 86, 86, 86, - 2004, 86, 86, 86, 2007, 2008, 86, 2009, 86, 2002, - 86, 2000, 1999, 2011, 86, 2001, 2005, 2003, 2006, 2010, - 86, 2012, 2013, 2015, 86, 86, 2017, 86, 2019, 2016, - 2018, 2014, 86, 86, 86, 2021, 86, 86, 2024, 86, - 2023, 86, 86, 86, 2027, 86, 86, 86, 2026, 86, - 86, 2020, 2030, 86, 2031, 2032, 86, 2033, 86, 86, + 1979, 1983, 86, 1988, 86, 1982, 86, 1984, 1985, 86, + 86, 1995, 1986, 86, 1989, 2000, 1991, 86, 1987, 1992, + 86, 86, 1990, 86, 1993, 1994, 86, 1997, 1998, 86, + 86, 86, 1996, 86, 2001, 86, 86, 2002, 86, 86, + 86, 86, 1999, 86, 2006, 2007, 86, 86, 86, 86, + 2008, 86, 2011, 86, 2004, 2009, 2005, 2003, 2012, 86, + 86, 2010, 2019, 86, 2017, 2015, 2018, 2020, 2014, 86, + 86, 2013, 2016, 86, 2021, 86, 86, 86, 86, 2026, + 86, 2029, 2030, 86, 2031, 86, 86, 86, 2022, 2023, + 86, 2024, 2027, 86, 2028, 86, 2025, 2033, 86, 86, - 86, 2022, 2025, 86, 2028, 2041, 86, 2029, 2034, 2035, - 2036, 86, 86, 86, 86, 2037, 2043, 2039, 2038, 86, - 2040, 2044, 86, 86, 86, 2047, 2042, 2045, 2050, 2046, - 2048, 86, 2052, 86, 86, 2054, 86, 86, 86, 2049, - 2051, 86, 2056, 86, 86, 2059, 2060, 86, 86, 2062, - 86, 86, 86, 86, 2053, 86, 86, 86, 2057, 86, - 2067, 2064, 2065, 2055, 86, 2058, 86, 86, 2061, 2069, - 86, 2068, 86, 2073, 2071, 86, 2063, 2066, 2070, 2072, - 86, 2075, 86, 86, 2079, 86, 2082, 86, 2078, 86, - 86, 2083, 86, 2074, 2081, 86, 2085, 86, 2077, 2086, + 2034, 2037, 86, 86, 2039, 86, 2032, 2038, 2035, 86, + 86, 2036, 2040, 2041, 2043, 2048, 86, 86, 2045, 86, + 86, 2044, 86, 2042, 86, 2046, 2047, 86, 86, 2049, + 2050, 86, 2051, 86, 86, 86, 2055, 86, 2053, 2054, + 2057, 86, 2056, 86, 86, 86, 86, 86, 163, 2052, + 2065, 86, 2067, 2058, 2059, 2060, 86, 2068, 86, 86, + 2061, 86, 2063, 2062, 86, 2064, 2070, 2066, 86, 2074, + 2071, 86, 2072, 2069, 86, 86, 86, 2078, 86, 2073, + 2075, 86, 86, 2080, 86, 86, 86, 86, 2083, 2084, + 86, 2086, 86, 86, 2076, 86, 2091, 2077, 86, 86, - 86, 2076, 86, 86, 86, 2080, 2088, 86, 2087, 86, - 86, 86, 86, 2092, 2084, 86, 2095, 2096, 86, 2097, - 86, 2091, 86, 86, 2089, 86, 2090, 86, 86, 2093, - 86, 2100, 86, 2099, 86, 2104, 2105, 86, 2094, 86, - 2098, 86, 2102, 86, 2110, 2109, 86, 2101, 86, 2107, - 2103, 2106, 2111, 2113, 86, 86, 86, 2112, 2108, 2114, - 2117, 86, 86, 86, 86, 86, 86, 2115, 86, 2121, - 2124, 86, 2116, 86, 86, 86, 86, 2119, 2127, 2129, - 86, 86, 2130, 2118, 2120, 86, 2122, 2128, 2123, 2125, - 2126, 86, 86, 86, 2132, 2131, 2136, 86, 2137, 86, + 86, 86, 86, 86, 2081, 2085, 86, 2079, 2082, 2088, + 2089, 2093, 86, 86, 2092, 86, 2090, 86, 2087, 86, + 2094, 2095, 2096, 86, 2099, 86, 2097, 2103, 86, 2098, + 2102, 86, 86, 86, 2106, 2101, 2109, 86, 2105, 2100, + 86, 86, 86, 2107, 2110, 86, 2112, 86, 2104, 86, + 86, 2108, 2111, 86, 86, 86, 86, 2116, 86, 2119, + 2120, 2121, 2115, 86, 86, 86, 86, 86, 86, 2113, + 86, 86, 2114, 2117, 2124, 86, 2129, 86, 86, 2123, + 2128, 86, 2118, 2122, 86, 2126, 86, 2130, 2133, 86, + 2125, 86, 2134, 2127, 86, 2135, 2131, 2132, 2137, 86, - 2138, 2140, 86, 2133, 2141, 2139, 86, 86, 2134, 86, - 86, 86, 2145, 2135, 2143, 86, 86, 86, 86, 86, - 2147, 86, 86, 2144, 2150, 2152, 86, 2146, 2142, 2148, - 86, 86, 2153, 86, 170, 86, 86, 86, 3444, 2156, - 86, 2154, 86, 2151, 2149, 2160, 2155, 2157, 2158, 86, - 86, 2162, 2161, 2163, 86, 2166, 2159, 2164, 86, 86, - 86, 86, 2165, 86, 86, 2167, 2169, 86, 2168, 86, - 86, 86, 2171, 2170, 2172, 86, 2174, 86, 86, 2178, - 86, 2173, 2175, 2177, 86, 86, 86, 2183, 86, 2176, - 2180, 2181, 86, 2179, 86, 2182, 86, 86, 86, 86, + 86, 86, 86, 2136, 2138, 2141, 86, 2142, 86, 86, + 86, 86, 2139, 2148, 2145, 86, 2143, 2140, 86, 86, + 86, 86, 86, 2151, 2153, 86, 2155, 2144, 86, 2154, + 2146, 2147, 86, 2149, 2152, 2150, 86, 86, 2160, 86, + 2162, 2156, 2161, 86, 2164, 2163, 86, 2157, 2165, 86, + 86, 86, 2158, 86, 86, 2169, 2167, 2159, 86, 86, + 86, 86, 86, 2171, 86, 2168, 86, 2173, 2175, 86, + 2170, 2177, 2172, 86, 86, 2166, 170, 86, 2178, 86, + 86, 2181, 86, 86, 86, 86, 2176, 2174, 2179, 2185, + 86, 2187, 2182, 2180, 2183, 86, 2188, 86, 2186, 2189, - 86, 86, 2190, 2188, 86, 2185, 2189, 86, 86, 86, - 86, 2195, 86, 2192, 2184, 2186, 86, 2187, 2191, 86, - 86, 2200, 2196, 2194, 86, 2193, 86, 86, 2198, 86, - 2197, 86, 86, 2201, 2204, 2207, 2199, 86, 2202, 2206, - 86, 86, 86, 86, 2205, 2212, 86, 86, 2203, 86, - 2214, 86, 86, 2208, 2215, 2217, 2211, 2209, 2210, 2216, - 86, 2218, 86, 2213, 86, 2219, 86, 86, 2222, 86, - 86, 86, 86, 2221, 86, 86, 2223, 86, 2226, 86, - 86, 2227, 86, 86, 86, 86, 86, 86, 86, 2220, - 86, 2225, 2224, 2235, 2229, 2230, 2228, 2232, 86, 2231, + 86, 2191, 2184, 86, 86, 2190, 86, 86, 86, 2192, + 2194, 2193, 86, 86, 86, 2197, 86, 2195, 2196, 86, + 2199, 86, 86, 2203, 86, 86, 2198, 2202, 2200, 86, + 86, 86, 2207, 2201, 2204, 2205, 2206, 2208, 86, 86, + 86, 86, 86, 86, 2215, 2213, 86, 86, 86, 2210, + 86, 2214, 86, 86, 86, 2220, 86, 2217, 86, 2209, + 2211, 86, 2212, 86, 86, 2216, 2221, 2219, 86, 2225, + 2218, 86, 2223, 2226, 2222, 86, 86, 86, 2224, 86, + 2229, 86, 2228, 2227, 2231, 86, 86, 86, 2237, 2230, + 2232, 86, 86, 2233, 86, 2234, 2235, 86, 2239, 86, - 2237, 2234, 2239, 2240, 86, 2233, 2236, 86, 86, 86, - 86, 2238, 2243, 2244, 86, 86, 2241, 2247, 86, 2246, - 86, 86, 86, 86, 86, 2249, 86, 2242, 2250, 86, - 2245, 2251, 86, 2253, 2255, 86, 2248, 2257, 2254, 86, - 86, 2252, 2258, 86, 2260, 86, 86, 86, 2256, 2259, - 86, 2262, 2263, 86, 86, 86, 2268, 86, 2264, 2265, - 86, 86, 86, 2272, 86, 2261, 2269, 2267, 2273, 86, - 2270, 86, 2271, 2266, 86, 2277, 86, 86, 2278, 2274, - 86, 86, 86, 2275, 2281, 86, 86, 2282, 2276, 86, - 86, 2283, 2287, 86, 2285, 2279, 86, 86, 2289, 86, + 2236, 2240, 2242, 86, 86, 2244, 86, 86, 2238, 86, + 2241, 2248, 2243, 86, 2245, 2247, 86, 86, 86, 86, + 86, 86, 2253, 2250, 86, 86, 86, 86, 86, 86, + 2246, 86, 2249, 2254, 86, 86, 86, 2262, 2256, 2257, + 2252, 2251, 86, 2258, 86, 86, 2255, 2259, 86, 2261, + 2263, 2267, 86, 86, 86, 2260, 2264, 2266, 86, 2271, + 86, 2270, 2268, 86, 86, 2265, 86, 86, 2269, 2273, + 86, 2276, 2274, 2272, 2277, 86, 86, 86, 2275, 86, + 86, 2279, 2282, 86, 2278, 2280, 2284, 86, 86, 2281, + 2285, 86, 86, 2287, 86, 86, 2289, 2286, 2283, 86, - 2290, 2280, 2286, 2284, 86, 86, 86, 86, 2288, 86, - 2292, 2296, 86, 2291, 86, 2298, 2294, 86, 86, 2295, - 2299, 86, 86, 86, 2293, 86, 2300, 2301, 2304, 2302, - 2305, 86, 86, 2297, 2303, 86, 86, 2309, 86, 86, - 86, 86, 86, 86, 2306, 2308, 86, 2316, 86, 86, - 86, 86, 2307, 2310, 86, 86, 2312, 2311, 2315, 2320, - 2314, 2317, 2318, 86, 86, 86, 2313, 86, 2319, 2321, - 2327, 2323, 2322, 2325, 2326, 86, 86, 86, 2331, 86, - 86, 2333, 86, 86, 2324, 86, 2330, 86, 86, 2332, - 2336, 2335, 86, 2328, 2339, 170, 86, 3444, 2341, 2345, + 2291, 2290, 86, 86, 86, 2295, 86, 2292, 86, 86, + 2299, 86, 86, 2288, 2296, 2300, 86, 86, 86, 2297, + 2298, 2293, 2304, 86, 2294, 2301, 86, 2305, 86, 86, + 2308, 2302, 2303, 86, 86, 86, 86, 2310, 2309, 86, + 2314, 86, 86, 2306, 86, 2316, 86, 2312, 86, 2307, + 86, 2317, 2311, 86, 2315, 2313, 86, 2318, 2319, 86, + 86, 2323, 86, 86, 2320, 2321, 2325, 86, 2322, 86, + 86, 2326, 86, 86, 2327, 2329, 2328, 86, 2331, 86, + 86, 2324, 2330, 86, 2332, 2336, 86, 86, 86, 2334, + 2333, 86, 2335, 86, 86, 86, 86, 86, 2337, 86, - 86, 2329, 2334, 2342, 86, 2337, 2343, 2338, 2344, 86, - 86, 86, 86, 86, 86, 2348, 86, 2340, 2346, 86, - 2349, 86, 2352, 2353, 86, 86, 2354, 86, 86, 2347, - 2357, 2364, 2358, 2355, 2350, 2362, 86, 86, 2359, 2360, - 86, 86, 86, 86, 86, 2351, 2356, 2361, 2363, 86, - 86, 86, 86, 2365, 86, 86, 2368, 86, 86, 86, - 2371, 86, 86, 2366, 2377, 86, 2375, 2370, 86, 86, - 86, 86, 2378, 2373, 2380, 2367, 2372, 2369, 86, 2374, - 86, 86, 86, 86, 2376, 2379, 86, 2385, 2388, 86, - 86, 86, 2383, 86, 86, 86, 2382, 2381, 2389, 2386, + 2343, 86, 86, 86, 2339, 2338, 2347, 2341, 2344, 2342, + 86, 2345, 2349, 86, 86, 2348, 2340, 2346, 86, 2350, + 2352, 86, 86, 2358, 86, 2353, 86, 86, 2360, 86, + 86, 86, 2351, 2354, 86, 2357, 2359, 86, 2363, 2355, + 86, 86, 2364, 2367, 170, 86, 2369, 2356, 2361, 86, + 2362, 2370, 86, 2365, 86, 2371, 2372, 2373, 86, 86, + 2366, 86, 86, 2376, 86, 2375, 2368, 2374, 86, 2377, + 86, 2381, 86, 86, 2382, 86, 2384, 86, 2385, 2380, + 86, 2387, 2386, 2378, 86, 2388, 86, 2383, 86, 2390, + 86, 86, 86, 2389, 2379, 86, 2391, 86, 86, 86, - 2384, 2387, 86, 86, 86, 86, 86, 86, 86, 86, - 2390, 86, 2391, 2402, 86, 2401, 2396, 2392, 86, 2393, - 2400, 2394, 2398, 2404, 2395, 86, 2397, 2399, 2403, 86, - 86, 86, 2666, 2405, 86, 86, 2409, 86, 2406, 2410, - 86, 86, 86, 2411, 86, 2407, 86, 2408, 2412, 86, - 86, 2415, 2413, 2416, 86, 2414, 2417, 2418, 86, 2419, - 86, 86, 86, 86, 86, 2427, 2420, 2421, 2425, 86, - 2426, 86, 2428, 86, 2422, 86, 2424, 2430, 86, 86, - 86, 2433, 86, 2423, 86, 2432, 2434, 86, 86, 86, - 86, 86, 86, 2429, 2431, 86, 86, 2436, 2435, 86, + 86, 2393, 86, 86, 2396, 86, 86, 86, 2399, 86, + 2392, 2394, 86, 86, 2403, 2398, 2405, 86, 86, 86, + 86, 2401, 2406, 2395, 2400, 2397, 86, 2402, 2407, 86, + 86, 2408, 86, 86, 2404, 86, 86, 2413, 2410, 2416, + 86, 2411, 86, 86, 2417, 2409, 2414, 86, 86, 2412, + 86, 86, 86, 2415, 86, 86, 86, 86, 2426, 86, + 86, 2418, 2419, 2424, 86, 2430, 2433, 86, 2428, 2422, + 2420, 2427, 2421, 2423, 2429, 2425, 86, 2432, 2431, 86, + 86, 86, 86, 2435, 2434, 86, 86, 2439, 2440, 86, + 86, 86, 2441, 161, 2436, 86, 2437, 86, 2438, 2442, - 2440, 2441, 86, 86, 2438, 2445, 2437, 2443, 86, 86, - 2439, 2442, 2446, 86, 2444, 86, 2447, 2449, 86, 86, - 86, 2452, 2450, 86, 2455, 86, 86, 86, 2451, 86, - 86, 2448, 2460, 86, 2459, 2453, 86, 86, 86, 86, - 2465, 86, 2454, 2462, 2458, 86, 2456, 86, 86, 86, - 2457, 86, 2463, 86, 2464, 2461, 2467, 86, 2472, 86, - 86, 2468, 2474, 86, 86, 2466, 2469, 2475, 2473, 2470, - 2478, 86, 86, 86, 86, 2479, 86, 2480, 2481, 2471, - 86, 86, 2476, 86, 2477, 86, 2485, 2483, 86, 86, - 2487, 2490, 2491, 2488, 86, 86, 2482, 86, 86, 2494, + 86, 86, 2445, 86, 2448, 86, 2443, 86, 2444, 2449, + 86, 86, 2446, 86, 86, 2447, 2450, 2452, 2451, 2455, + 86, 2456, 86, 86, 2458, 86, 2454, 2453, 86, 2460, + 86, 86, 86, 2463, 86, 86, 2462, 2464, 86, 86, + 86, 86, 2457, 86, 86, 86, 2459, 2461, 2466, 2465, + 2470, 2471, 86, 2473, 86, 2468, 86, 2467, 86, 86, + 2477, 86, 2469, 2472, 2475, 86, 2479, 86, 2476, 86, + 86, 86, 2482, 86, 2474, 2478, 2485, 86, 86, 86, + 2480, 86, 86, 86, 2481, 86, 2483, 2489, 2490, 86, + 2492, 86, 2484, 86, 2495, 86, 2488, 86, 2486, 86, - 86, 2484, 86, 86, 2489, 86, 86, 2495, 2496, 2486, - 2493, 86, 86, 86, 2499, 2492, 86, 86, 86, 2498, - 86, 2500, 2501, 2505, 2507, 2497, 2502, 2503, 2506, 86, - 2504, 86, 86, 2511, 86, 86, 2510, 86, 2512, 86, - 86, 2509, 86, 2515, 86, 170, 2513, 86, 86, 2514, - 2516, 2508, 86, 2521, 86, 86, 86, 2523, 86, 86, - 86, 86, 86, 2519, 2517, 2529, 2518, 86, 2520, 86, - 2522, 2524, 2525, 2526, 2527, 86, 2532, 86, 2528, 2531, - 2653, 2530, 86, 2533, 2534, 86, 86, 86, 2537, 2535, - 2538, 86, 2536, 86, 86, 86, 86, 2540, 86, 86, + 86, 2491, 2487, 86, 86, 86, 2493, 2497, 2494, 86, + 2502, 86, 86, 2498, 2504, 86, 86, 2496, 2505, 2508, + 2503, 2499, 2500, 86, 86, 86, 86, 86, 2509, 2510, + 86, 2501, 2511, 2506, 86, 2507, 86, 86, 86, 2513, + 86, 2515, 2517, 2518, 2520, 86, 2521, 86, 2512, 86, + 86, 2514, 86, 2524, 2525, 2519, 86, 86, 86, 86, + 2516, 2526, 2523, 86, 86, 86, 2522, 2529, 86, 86, + 86, 2528, 2530, 2535, 2531, 2536, 86, 2532, 2533, 86, + 2537, 86, 2527, 86, 2534, 86, 86, 86, 2541, 86, + 2542, 86, 2543, 86, 2546, 2540, 86, 170, 2545, 86, - 2539, 86, 2542, 86, 86, 2546, 2547, 2541, 86, 2544, - 86, 2543, 86, 2549, 86, 86, 86, 86, 2550, 2551, - 2552, 86, 2545, 86, 2548, 86, 2554, 86, 2553, 2558, - 86, 2557, 86, 86, 2555, 2556, 86, 86, 2560, 86, - 86, 86, 86, 2567, 2564, 2559, 86, 2566, 86, 86, - 86, 86, 2568, 2563, 86, 86, 2561, 2562, 86, 2572, - 86, 2565, 86, 86, 2582, 2577, 2569, 2576, 86, 2570, - 2571, 86, 2574, 86, 2575, 86, 2573, 2579, 86, 86, - 86, 2578, 2581, 2583, 86, 2585, 86, 2580, 2587, 86, - 2586, 2589, 86, 86, 86, 2591, 86, 86, 86, 86, + 2544, 86, 2547, 2538, 86, 2539, 2552, 86, 86, 86, + 86, 86, 86, 86, 86, 2563, 86, 2550, 2554, 2548, + 2551, 2549, 2555, 2553, 2558, 86, 86, 2556, 2557, 2559, + 2560, 86, 86, 2564, 2561, 2565, 86, 86, 86, 86, + 2566, 2568, 2569, 2562, 2567, 86, 86, 86, 86, 2571, + 86, 86, 2572, 86, 2570, 86, 2573, 2578, 2574, 86, + 2577, 86, 86, 86, 86, 2575, 86, 2580, 2581, 2582, + 2583, 86, 2576, 86, 86, 2579, 86, 86, 2584, 86, + 86, 2589, 86, 2585, 2588, 2586, 86, 86, 86, 86, + 86, 2591, 2590, 86, 2595, 86, 2598, 2587, 86, 86, - 86, 2588, 2590, 86, 2595, 2584, 86, 86, 86, 86, - 2600, 86, 2593, 2598, 2599, 2592, 2594, 2601, 86, 2602, - 86, 2603, 86, 2604, 86, 86, 86, 2597, 86, 2596, - 86, 2606, 86, 2608, 86, 2611, 86, 86, 86, 2613, - 2609, 2612, 86, 2607, 2605, 86, 2610, 2616, 86, 86, - 86, 86, 2617, 2615, 86, 2614, 86, 2620, 2621, 86, - 86, 2618, 86, 2624, 86, 2622, 2626, 2625, 2619, 2623, - 86, 86, 86, 86, 86, 86, 86, 2630, 2634, 86, - 86, 2633, 2635, 86, 2627, 2628, 2629, 2636, 86, 2637, - 86, 86, 2638, 2631, 86, 2632, 86, 2641, 86, 2640, + 2597, 86, 86, 2594, 2599, 86, 2600, 2592, 2593, 86, + 86, 86, 86, 2596, 86, 2604, 86, 2601, 2606, 86, + 2602, 2609, 86, 2610, 2607, 86, 86, 86, 2603, 86, + 2608, 2613, 2605, 2611, 86, 86, 2612, 86, 2615, 86, + 2614, 86, 2616, 86, 2618, 2619, 2620, 2621, 2622, 86, + 86, 86, 86, 2617, 2624, 86, 86, 86, 86, 2623, + 86, 86, 86, 2628, 2633, 86, 86, 2631, 86, 2625, + 2626, 2632, 2635, 2627, 2634, 86, 86, 2636, 86, 86, + 86, 86, 2630, 86, 2637, 2639, 2629, 86, 2644, 86, + 2641, 86, 2646, 86, 86, 2642, 86, 86, 86, 86, - 86, 2642, 86, 86, 86, 86, 86, 86, 86, 2639, - 2643, 2649, 86, 2651, 86, 2645, 2652, 86, 86, 86, - 2654, 86, 2644, 2648, 2646, 2650, 2647, 86, 2655, 86, - 2656, 86, 2658, 2661, 86, 86, 86, 86, 86, 2657, - 86, 86, 170, 86, 2662, 2669, 86, 2671, 86, 2659, - 86, 2660, 2667, 2665, 2670, 86, 86, 2664, 86, 2672, - 86, 86, 2663, 2668, 2678, 86, 2675, 86, 86, 3444, - 2673, 2674, 2680, 2681, 2682, 86, 2683, 86, 86, 2679, - 2676, 86, 2684, 2677, 86, 2685, 86, 2686, 86, 86, - 86, 86, 86, 86, 86, 86, 2687, 86, 86, 2688, + 2640, 2638, 2645, 2643, 2649, 86, 86, 86, 2653, 2650, + 86, 2648, 2647, 2654, 86, 2655, 2651, 2652, 86, 86, + 86, 86, 86, 2659, 86, 2658, 86, 86, 2657, 86, + 86, 86, 2663, 2703, 2662, 86, 2656, 86, 2660, 86, + 2661, 86, 2666, 2667, 86, 2668, 86, 2669, 86, 2664, + 2665, 2670, 86, 2671, 86, 86, 2674, 2672, 86, 2673, + 86, 2675, 86, 86, 86, 86, 86, 86, 2682, 86, + 2676, 2684, 86, 2685, 86, 2678, 86, 86, 86, 86, + 86, 86, 2677, 2681, 2679, 2683, 2680, 2686, 2688, 2687, + 2689, 86, 86, 2694, 86, 86, 2691, 2696, 86, 2690, - 2697, 86, 86, 86, 2695, 2690, 86, 86, 2689, 86, - 2692, 2691, 86, 2701, 2694, 2693, 2705, 2696, 2702, 86, - 2699, 2698, 86, 2703, 2700, 2704, 2706, 86, 2708, 86, - 86, 2707, 86, 86, 86, 86, 86, 86, 86, 86, - 2711, 2717, 86, 2718, 86, 86, 86, 86, 2709, 2712, - 2710, 2724, 2721, 2713, 2714, 2715, 2716, 86, 2719, 2722, - 86, 2723, 86, 2720, 86, 2725, 86, 86, 86, 86, - 86, 86, 86, 2729, 2733, 86, 2732, 2734, 86, 2726, - 86, 2728, 2735, 2736, 86, 2727, 86, 86, 86, 2730, - 2731, 86, 86, 86, 2737, 2738, 86, 2742, 2743, 86, + 2692, 86, 86, 86, 2695, 86, 86, 170, 86, 86, + 2705, 86, 2693, 86, 86, 86, 2699, 86, 86, 2704, + 2701, 86, 2698, 2706, 2712, 86, 2707, 2697, 2708, 2700, + 2702, 86, 86, 2709, 2729, 86, 86, 2714, 86, 2710, + 2715, 2711, 2716, 86, 86, 2713, 2717, 86, 86, 2718, + 86, 2719, 86, 2720, 2721, 2722, 86, 2723, 86, 86, + 86, 86, 86, 86, 2731, 86, 86, 86, 86, 86, + 2735, 2724, 2736, 86, 86, 2740, 86, 2726, 2725, 2742, + 86, 2728, 2727, 2730, 2733, 2732, 2734, 86, 2737, 2738, + 86, 86, 86, 86, 86, 86, 2739, 86, 86, 2741, - 2740, 86, 86, 2748, 86, 2747, 2739, 86, 86, 2751, - 86, 2741, 86, 86, 86, 86, 2744, 86, 2745, 2754, - 86, 2746, 2749, 2752, 2756, 86, 2750, 86, 2753, 2755, - 2757, 86, 2759, 86, 2762, 86, 86, 86, 2758, 86, - 2766, 86, 86, 2765, 2768, 86, 2764, 2760, 2763, 86, - 86, 86, 86, 2761, 2769, 86, 2774, 86, 86, 2770, - 86, 2767, 86, 2775, 2772, 2777, 86, 2771, 86, 86, - 86, 2783, 86, 2778, 86, 2773, 86, 86, 2780, 2781, - 2776, 2779, 86, 2782, 2786, 86, 86, 2787, 86, 86, - 86, 2788, 2785, 86, 2790, 86, 2784, 86, 2791, 86, + 2745, 86, 86, 3483, 86, 2752, 86, 2753, 86, 2743, + 2744, 2751, 2746, 2747, 2754, 86, 2748, 2749, 86, 2757, + 86, 2750, 2758, 86, 2756, 2759, 86, 86, 86, 86, + 86, 86, 86, 2755, 86, 2764, 86, 86, 86, 2768, + 2770, 2767, 2761, 2763, 2760, 2769, 86, 2762, 2771, 86, + 86, 86, 2765, 86, 2766, 86, 86, 86, 86, 86, + 2773, 86, 2777, 2778, 86, 86, 86, 2775, 2782, 2772, + 2783, 86, 2774, 86, 2786, 86, 2776, 86, 86, 2779, + 2780, 2784, 86, 86, 2781, 86, 2789, 86, 2787, 2791, + 86, 2785, 86, 2788, 2792, 86, 86, 86, 2790, 86, - 86, 86, 2789, 86, 2793, 2794, 2796, 86, 2797, 2799, - 86, 86, 2792, 86, 2795, 2798, 2800, 86, 2801, 2803, - 170, 86, 86, 86, 2808, 86, 2802, 2805, 2804, 2806, - 86, 86, 86, 2810, 86, 86, 2809, 2813, 86, 2812, - 2811, 2807, 2814, 86, 2816, 86, 86, 2818, 2815, 2817, - 86, 86, 2819, 86, 86, 2820, 2821, 2823, 86, 86, - 86, 86, 2824, 86, 2825, 86, 86, 86, 2822, 2826, - 86, 2830, 2831, 2828, 86, 2832, 2827, 86, 86, 2833, - 86, 2834, 86, 86, 86, 2835, 2836, 2829, 86, 2838, - 86, 86, 86, 2839, 2837, 86, 86, 86, 2844, 86, + 2793, 2797, 86, 86, 86, 2794, 86, 2800, 2799, 2798, + 2801, 86, 2795, 2803, 86, 86, 2796, 86, 86, 86, + 2804, 86, 2806, 2802, 2809, 86, 2805, 86, 2810, 86, + 2807, 2812, 86, 86, 86, 86, 86, 86, 86, 2808, + 2818, 86, 2813, 2811, 2815, 2816, 2814, 2817, 2821, 86, + 86, 86, 2820, 86, 2819, 2822, 2823, 86, 86, 86, + 86, 86, 2825, 86, 86, 86, 2826, 2824, 86, 2828, + 2831, 2829, 86, 2832, 2834, 86, 2830, 2836, 2827, 2833, + 2835, 86, 86, 2838, 170, 86, 86, 86, 86, 2843, + 3483, 2840, 2839, 86, 86, 86, 86, 2845, 2844, 86, - 86, 2842, 86, 3444, 2841, 2843, 2847, 86, 2840, 2845, - 86, 86, 86, 2846, 2852, 86, 2848, 86, 2849, 86, - 86, 86, 2850, 86, 2853, 86, 2851, 86, 2855, 86, - 2854, 2857, 86, 2861, 3444, 2856, 2862, 86, 2859, 86, - 2858, 2864, 2865, 2867, 3444, 2860, 86, 86, 86, 86, - 2868, 86, 2863, 86, 2869, 86, 86, 2866, 2870, 2873, - 86, 86, 86, 2874, 2871, 86, 2875, 86, 86, 2872, - 86, 2878, 2880, 86, 86, 2876, 2881, 86, 2882, 86, - 86, 86, 2877, 86, 2883, 86, 2879, 86, 2884, 2885, - 86, 2889, 2887, 2888, 2886, 86, 2890, 86, 86, 2893, + 86, 2837, 2848, 86, 2847, 2841, 2842, 2849, 86, 2846, + 2851, 86, 86, 2850, 2853, 2852, 86, 86, 86, 2854, + 86, 2855, 2856, 2858, 86, 86, 86, 86, 2859, 86, + 2860, 86, 2857, 86, 2865, 2861, 86, 2866, 86, 2863, + 86, 2867, 2862, 86, 86, 86, 86, 86, 2871, 86, + 2868, 2869, 2870, 86, 2864, 86, 86, 86, 2872, 86, + 2873, 2874, 86, 86, 2879, 86, 2876, 2875, 2877, 86, + 86, 2878, 2883, 86, 2880, 2881, 2885, 86, 86, 2884, + 86, 2888, 86, 86, 86, 86, 86, 2882, 2893, 86, + 2889, 86, 86, 86, 2891, 86, 86, 2886, 86, 2887, - 2894, 86, 2895, 86, 86, 2892, 86, 2891, 86, 2896, - 2899, 86, 86, 86, 2902, 86, 86, 2897, 86, 2903, - 86, 2898, 2904, 86, 2906, 86, 86, 86, 2910, 86, - 2900, 2905, 86, 2901, 86, 2911, 86, 2913, 2908, 2907, - 86, 2909, 86, 86, 2912, 2915, 86, 2914, 86, 86, - 2916, 86, 2917, 2921, 86, 2920, 86, 2922, 2923, 86, - 2924, 86, 86, 86, 2926, 86, 2918, 2925, 2919, 86, - 86, 86, 2927, 2929, 86, 2930, 2933, 86, 86, 86, - 2937, 86, 2931, 2932, 86, 86, 86, 86, 2928, 2939, - 2949, 86, 86, 2936, 86, 2934, 86, 2940, 2935, 2938, + 2897, 2892, 2900, 2890, 2898, 86, 2901, 2895, 86, 2903, + 2894, 86, 86, 2896, 86, 86, 2902, 2904, 86, 2905, + 2899, 86, 86, 2907, 2909, 86, 2906, 86, 2910, 86, + 86, 2911, 86, 86, 2914, 2908, 86, 2916, 86, 2917, + 86, 2918, 86, 2912, 86, 86, 86, 2913, 2919, 86, + 2920, 2921, 86, 86, 2915, 86, 86, 2925, 2923, 86, + 2929, 2924, 2926, 86, 2930, 86, 2922, 2927, 2931, 86, + 86, 86, 86, 2932, 2935, 86, 2928, 86, 86, 2938, + 86, 86, 2939, 86, 2933, 2934, 2940, 86, 86, 2942, + 86, 86, 86, 2946, 86, 2936, 2943, 86, 2937, 86, - 2943, 2941, 2944, 2942, 2946, 86, 2950, 2945, 86, 2947, - 86, 86, 2951, 2948, 86, 2952, 86, 2953, 86, 86, - 86, 86, 2957, 86, 2955, 86, 2958, 86, 86, 86, - 2960, 2964, 86, 86, 2954, 86, 2961, 2965, 86, 2979, - 2956, 86, 2959, 86, 2966, 2968, 86, 86, 2962, 2963, - 2969, 2967, 2970, 86, 86, 2972, 86, 86, 86, 2971, - 86, 86, 2978, 86, 86, 2977, 2973, 2974, 86, 2975, - 2976, 86, 2984, 2980, 86, 86, 86, 2985, 86, 86, - 86, 86, 2982, 2988, 86, 2987, 2989, 2981, 2986, 2983, - 2990, 86, 2991, 86, 2992, 86, 2995, 86, 86, 86, + 2947, 86, 2950, 2941, 86, 2949, 2945, 2951, 2948, 2944, + 86, 86, 2952, 86, 86, 86, 2957, 2953, 86, 86, + 86, 2956, 86, 2959, 2960, 86, 86, 86, 2962, 86, + 2954, 2961, 2963, 86, 2955, 86, 2965, 86, 2966, 86, + 2969, 86, 86, 2958, 86, 2973, 86, 86, 86, 2980, + 86, 86, 2964, 86, 2981, 86, 2967, 2968, 2972, 2970, + 86, 2974, 2971, 2975, 2977, 86, 86, 2978, 3020, 2982, + 2984, 2976, 86, 2979, 2983, 86, 2985, 86, 86, 2986, + 86, 2987, 86, 2988, 86, 2989, 86, 86, 2990, 86, + 86, 2991, 2993, 86, 86, 2995, 86, 86, 86, 2997, - 86, 86, 86, 86, 3002, 86, 2999, 2996, 86, 2993, - 86, 2997, 3000, 2994, 86, 86, 86, 3003, 86, 3005, - 3006, 3009, 3001, 86, 3007, 2998, 86, 3008, 86, 3004, - 86, 3012, 3014, 86, 3013, 3015, 86, 3016, 86, 3010, - 86, 86, 3011, 86, 3444, 86, 3021, 86, 86, 3017, - 3020, 86, 86, 3022, 3024, 86, 3023, 86, 86, 86, - 86, 3018, 3019, 86, 3028, 3025, 3030, 3032, 86, 3026, - 86, 86, 86, 86, 3033, 86, 3034, 86, 3029, 3027, - 3035, 86, 3036, 86, 86, 3041, 86, 86, 3031, 86, - 86, 86, 3037, 86, 3044, 86, 86, 3040, 3038, 3039, + 3001, 86, 86, 2994, 86, 2998, 3483, 2992, 3002, 86, + 86, 3006, 2996, 3003, 3005, 86, 86, 2999, 3000, 86, + 3004, 3007, 86, 86, 3008, 3009, 86, 86, 86, 86, + 3015, 86, 3010, 86, 3014, 86, 3011, 3012, 3013, 3016, + 86, 86, 3017, 3021, 86, 86, 86, 86, 3022, 86, + 3025, 86, 3019, 86, 3024, 86, 3026, 3023, 86, 3018, + 3027, 86, 3028, 86, 3032, 86, 86, 3029, 86, 86, + 3034, 86, 3030, 3031, 3036, 3033, 86, 3039, 86, 86, + 3037, 86, 86, 86, 86, 3044, 3042, 3043, 86, 86, + 3040, 86, 86, 3035, 3046, 86, 3038, 3045, 86, 3049, - 3042, 86, 3043, 86, 3045, 86, 3050, 3046, 3049, 3048, - 86, 86, 3047, 86, 3052, 3054, 86, 3056, 86, 3051, - 3057, 86, 86, 3059, 86, 86, 86, 86, 86, 86, - 86, 86, 3055, 3062, 86, 3064, 86, 3053, 3065, 86, - 3067, 3060, 3061, 3058, 3068, 3063, 86, 3066, 86, 3071, - 86, 86, 3074, 86, 86, 3070, 3076, 3069, 86, 86, - 3072, 86, 86, 3077, 3079, 86, 3080, 86, 86, 86, - 3073, 3083, 86, 86, 3075, 86, 3081, 3088, 86, 86, - 3085, 3078, 3086, 86, 86, 3092, 86, 86, 3082, 86, - 86, 3084, 3094, 3095, 86, 3087, 3090, 3089, 86, 3091, + 3041, 86, 3050, 3483, 3047, 86, 3048, 3051, 86, 3052, + 86, 3053, 86, 86, 3054, 3055, 3058, 86, 3057, 86, + 3056, 86, 86, 86, 3059, 86, 3060, 3061, 86, 86, + 86, 86, 3067, 86, 3065, 3062, 3483, 3063, 86, 3069, + 86, 86, 86, 86, 3064, 3070, 86, 3071, 3066, 86, + 3073, 3072, 3074, 86, 86, 86, 3068, 86, 3075, 3078, + 86, 86, 86, 86, 3082, 3081, 86, 86, 3076, 86, + 3079, 86, 3086, 86, 3077, 3080, 86, 3085, 86, 3083, + 86, 3088, 3089, 3092, 86, 3084, 86, 3094, 86, 3095, + 86, 3087, 86, 86, 3090, 3097, 86, 86, 86, 86, - 86, 3096, 3093, 3099, 3100, 86, 3097, 86, 3102, 86, - 3101, 86, 86, 86, 86, 3105, 86, 3104, 3098, 86, - 3108, 86, 3111, 86, 3106, 86, 86, 86, 86, 3103, - 86, 86, 3107, 3116, 86, 86, 3444, 3112, 3109, 3110, - 86, 3120, 86, 3115, 86, 3113, 3121, 86, 86, 3119, - 3117, 3118, 86, 3114, 86, 3125, 86, 3122, 3123, 3124, - 3126, 86, 3127, 86, 86, 3130, 86, 86, 3132, 86, - 86, 86, 3131, 86, 3129, 86, 86, 3128, 86, 3138, - 3139, 86, 86, 86, 86, 3133, 86, 86, 3145, 86, - 3146, 86, 3134, 3147, 3136, 3135, 3144, 86, 3137, 86, + 86, 86, 3100, 86, 3091, 3093, 3102, 3103, 86, 3098, + 3106, 86, 3105, 3096, 3099, 3101, 86, 86, 86, 3109, + 3104, 86, 86, 3112, 86, 86, 3114, 86, 86, 3117, + 86, 86, 86, 3115, 3107, 3110, 3108, 3118, 86, 86, + 86, 3111, 3121, 86, 86, 3113, 3119, 86, 3126, 3116, + 86, 3123, 86, 3124, 86, 86, 3130, 86, 86, 3120, + 86, 86, 3122, 3132, 3128, 86, 86, 3125, 3133, 3127, + 86, 3134, 86, 3131, 3137, 3129, 3138, 86, 3135, 86, + 86, 3136, 3139, 3140, 3143, 86, 86, 86, 86, 86, + 3141, 3142, 3144, 3146, 86, 3149, 86, 86, 86, 86, - 3142, 86, 3141, 86, 3143, 86, 3152, 86, 3140, 86, - 3150, 3153, 86, 86, 3154, 3156, 86, 3148, 86, 86, - 3149, 86, 3159, 86, 3151, 86, 3158, 3155, 3157, 86, - 3160, 86, 86, 3161, 86, 86, 3162, 86, 86, 3163, - 3165, 86, 86, 3167, 86, 86, 3166, 86, 3444, 3168, - 86, 86, 3164, 86, 86, 86, 86, 3169, 86, 3177, - 3178, 3181, 3170, 3172, 3171, 3180, 3173, 3179, 3174, 3175, - 86, 86, 86, 3183, 3176, 3185, 86, 86, 3182, 3186, - 86, 3187, 3188, 86, 86, 3184, 86, 3191, 86, 3189, - 3192, 86, 3193, 3194, 86, 86, 3195, 3196, 3200, 86, + 86, 86, 3154, 86, 86, 86, 86, 3145, 86, 3150, + 86, 3147, 3148, 3160, 3153, 3157, 3151, 3158, 86, 3159, + 86, 3156, 86, 3155, 3161, 3152, 86, 3162, 3163, 86, + 3164, 86, 3165, 86, 3166, 86, 86, 3169, 86, 3167, + 86, 3171, 86, 86, 86, 3170, 86, 86, 86, 86, + 3177, 3178, 86, 86, 86, 86, 86, 3172, 3184, 86, + 3185, 86, 3168, 86, 86, 3186, 3173, 3175, 3174, 3176, + 3181, 86, 3183, 3180, 86, 3182, 86, 86, 86, 3179, + 86, 3189, 3191, 86, 3187, 3192, 86, 86, 86, 3195, + 3196, 86, 3193, 3188, 3194, 86, 3197, 86, 3190, 3198, - 3197, 86, 86, 3198, 3199, 3190, 86, 3201, 86, 3203, - 86, 86, 86, 86, 86, 86, 86, 3202, 3209, 86, - 3208, 86, 86, 86, 86, 86, 3205, 86, 3213, 3204, - 3212, 3214, 86, 3206, 3207, 86, 3210, 3217, 3218, 86, - 3215, 86, 3220, 86, 3219, 3216, 3211, 3221, 86, 3222, - 86, 86, 86, 86, 3227, 86, 3224, 3229, 3223, 3228, - 86, 3225, 86, 86, 3226, 86, 86, 86, 3236, 86, - 3231, 3233, 3234, 3237, 86, 3239, 86, 86, 3230, 86, - 3238, 3240, 86, 3232, 3235, 86, 3243, 86, 3244, 86, - 3242, 86, 3241, 3246, 86, 3247, 86, 3248, 86, 86, + 86, 86, 3199, 86, 86, 3200, 86, 86, 3201, 86, + 86, 3202, 3204, 86, 86, 3206, 86, 86, 3205, 86, + 3483, 3207, 86, 86, 3203, 86, 86, 86, 86, 3208, + 86, 3216, 3217, 3220, 3209, 3211, 3210, 3219, 3212, 3218, + 3213, 3214, 86, 86, 86, 3222, 3215, 3224, 86, 86, + 3221, 3225, 86, 3226, 3227, 86, 86, 3223, 86, 3230, + 86, 3228, 3231, 86, 3232, 3233, 86, 86, 3234, 3235, + 3239, 86, 3236, 86, 86, 3237, 3238, 3229, 86, 3240, + 86, 3242, 86, 86, 86, 86, 86, 86, 86, 3241, + 3248, 86, 3247, 86, 86, 86, 86, 86, 3244, 86, - 3245, 3249, 86, 3250, 86, 3251, 86, 3252, 86, 3253, - 86, 86, 3256, 86, 86, 86, 86, 3260, 86, 86, - 3255, 3262, 86, 3257, 86, 3254, 86, 3258, 86, 86, - 86, 86, 3266, 3267, 86, 86, 3259, 86, 3261, 3263, - 3271, 3264, 3265, 86, 3268, 3269, 86, 86, 3273, 3276, - 86, 86, 3272, 3270, 3275, 86, 86, 86, 86, 86, - 86, 3274, 3278, 86, 3277, 3282, 86, 86, 86, 3283, - 3284, 86, 86, 86, 3288, 3279, 3280, 3287, 86, 3281, - 3290, 86, 3285, 3291, 86, 86, 3289, 3292, 86, 86, - 86, 86, 86, 86, 3286, 3295, 86, 86, 3294, 86, + 3252, 3243, 3251, 3253, 86, 3245, 3246, 86, 3249, 3256, + 3257, 86, 3254, 86, 3259, 86, 3258, 3255, 3250, 3260, + 86, 3261, 86, 86, 86, 86, 3266, 86, 3263, 3268, + 3262, 3267, 86, 3264, 86, 86, 3265, 86, 86, 86, + 3275, 86, 3270, 3272, 3273, 3276, 86, 3278, 86, 86, + 3269, 86, 3277, 3279, 86, 3271, 3274, 86, 3282, 86, + 3283, 86, 3281, 86, 3280, 3285, 86, 3286, 86, 3287, + 86, 86, 3284, 3288, 86, 3289, 86, 3290, 86, 3291, + 86, 3292, 86, 86, 3295, 86, 86, 86, 86, 3299, + 86, 86, 3294, 3301, 86, 3296, 86, 3293, 86, 3297, - 86, 3293, 3300, 86, 3297, 3296, 86, 3299, 3301, 86, - 3303, 86, 3305, 3304, 3302, 3298, 86, 86, 86, 86, - 86, 3306, 86, 86, 86, 3312, 86, 3307, 3310, 3314, - 3311, 86, 3309, 3315, 86, 86, 3317, 3318, 3320, 86, - 86, 3308, 86, 3313, 3322, 86, 3316, 86, 3323, 3321, - 3324, 86, 3325, 86, 86, 3319, 86, 86, 86, 3328, - 86, 3326, 3329, 3330, 86, 3333, 86, 86, 86, 86, - 86, 86, 3336, 86, 3327, 3337, 86, 3339, 86, 3332, - 3334, 3335, 3340, 86, 86, 3331, 3343, 86, 3338, 3342, - 86, 3345, 3346, 86, 86, 3347, 86, 86, 86, 3341, + 86, 86, 86, 86, 3305, 3306, 86, 86, 3298, 86, + 3300, 3302, 3310, 3303, 3304, 86, 3307, 3308, 86, 86, + 3312, 3315, 86, 86, 3311, 3309, 3314, 86, 86, 86, + 86, 86, 86, 3313, 3317, 86, 3316, 3321, 86, 86, + 86, 3322, 3323, 86, 86, 86, 3327, 3318, 3319, 3326, + 86, 3320, 3329, 86, 3324, 3330, 86, 86, 3328, 3331, + 86, 86, 86, 86, 86, 86, 3325, 3334, 86, 86, + 3333, 86, 86, 3332, 3339, 86, 3336, 3335, 86, 3338, + 3340, 86, 3342, 86, 3344, 3343, 3341, 3337, 86, 86, + 86, 86, 86, 3345, 86, 86, 86, 3351, 86, 3346, - 3350, 3351, 86, 86, 3348, 3344, 86, 86, 86, 3356, - 86, 86, 3352, 3355, 86, 3353, 3349, 3357, 86, 86, - 86, 86, 3354, 86, 3361, 86, 86, 86, 3363, 86, - 86, 86, 3358, 3360, 3359, 3368, 3369, 3370, 86, 3365, - 3366, 3362, 86, 86, 3364, 86, 3374, 86, 3367, 86, - 3376, 86, 3377, 86, 3375, 86, 86, 86, 3378, 3382, - 3379, 3372, 3371, 86, 3373, 86, 3383, 86, 3380, 86, - 3385, 86, 86, 86, 3384, 86, 3381, 3386, 86, 86, - 3391, 86, 3388, 86, 86, 3394, 86, 3395, 86, 86, - 86, 3387, 86, 86, 3398, 86, 3393, 3389, 3390, 3396, + 3349, 3353, 3350, 86, 3348, 3354, 86, 86, 3356, 3357, + 3359, 86, 86, 3347, 86, 3352, 3361, 86, 3355, 86, + 3362, 3360, 3363, 86, 3364, 86, 86, 3358, 86, 86, + 86, 3367, 86, 3365, 3368, 3369, 86, 3372, 86, 86, + 86, 86, 86, 86, 3375, 86, 3366, 3376, 86, 3378, + 86, 3371, 3373, 3374, 3379, 86, 86, 3370, 3382, 86, + 3377, 3381, 86, 3384, 3385, 86, 86, 3386, 86, 86, + 86, 3380, 3389, 3390, 86, 86, 3387, 3383, 86, 86, + 86, 3395, 86, 86, 3391, 3394, 86, 3392, 3388, 3396, + 86, 86, 86, 86, 3393, 86, 3400, 86, 86, 86, - 3392, 86, 3397, 86, 3402, 86, 3403, 86, 3401, 86, - 3406, 3399, 3400, 86, 86, 3408, 86, 3409, 3404, 86, - 86, 86, 3413, 86, 3410, 86, 86, 3411, 3415, 86, - 3414, 86, 3407, 3405, 3416, 86, 3417, 86, 3418, 86, - 3412, 86, 3422, 86, 3420, 86, 86, 86, 86, 86, - 86, 3424, 3425, 86, 3428, 86, 3419, 3429, 86, 3444, - 3421, 86, 3432, 86, 3423, 3433, 86, 3426, 3427, 3430, - 3434, 3435, 86, 86, 3431, 3436, 86, 86, 86, 86, - 3437, 86, 3438, 3439, 3442, 86, 3443, 86, 3444, 3444, - 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3440, 3444, + 3402, 86, 86, 86, 3397, 3399, 3398, 3407, 3408, 3409, + 86, 3404, 3405, 3401, 86, 86, 3403, 86, 3413, 86, + 3406, 86, 3415, 86, 3416, 86, 3414, 86, 86, 86, + 3417, 3421, 3418, 3411, 3410, 86, 3412, 86, 3422, 86, + 3419, 86, 3424, 86, 86, 86, 3423, 86, 3420, 3425, + 86, 86, 3430, 86, 3427, 86, 86, 3433, 86, 3434, + 86, 86, 86, 3426, 86, 86, 3437, 86, 3432, 3428, + 3429, 3435, 3431, 86, 3436, 86, 3441, 86, 3442, 86, + 3440, 86, 3445, 3438, 3439, 86, 86, 3447, 86, 3448, + 3443, 86, 86, 86, 3452, 86, 3449, 86, 86, 3450, - 3441, 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, 3444, 89, 89, 89, 89, 160, 160, 3444, - 3444, 3444, 160, 160, 162, 162, 3444, 3444, 162, 3444, - 162, 164, 3444, 3444, 3444, 3444, 3444, 164, 167, 167, - 3444, 3444, 3444, 167, 167, 169, 3444, 3444, 3444, 3444, - 3444, 169, 171, 171, 3444, 171, 171, 171, 171, 174, + 3454, 86, 3453, 86, 3446, 3444, 3455, 86, 3456, 86, + 3457, 86, 3451, 86, 3461, 86, 3459, 86, 86, 86, + 86, 86, 86, 3463, 3464, 86, 3467, 86, 3458, 3468, + 86, 3483, 3460, 86, 3471, 86, 3462, 3472, 86, 3465, + 3466, 3469, 3473, 3474, 86, 86, 3470, 3475, 86, 86, + 86, 86, 3476, 86, 3477, 3478, 3481, 86, 3482, 86, + 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + 3479, 3483, 3480, 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, - 3444, 3444, 3444, 3444, 3444, 174, 177, 177, 3444, 3444, - 3444, 177, 177, 90, 90, 3444, 90, 90, 90, 90, - 17, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, - 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, - 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, - 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, - 3444 + 63, 68, 68, 68, 68, 68, 68, 68, 74, 74, + 74, 74, 74, 74, 74, 80, 80, 80, 80, 80, + 80, 80, 89, 89, 3483, 89, 89, 89, 89, 160, + 160, 3483, 3483, 3483, 160, 160, 162, 162, 3483, 3483, + 162, 3483, 162, 164, 3483, 3483, 3483, 3483, 3483, 164, + 167, 167, 3483, 3483, 3483, 167, 167, 169, 3483, 3483, + 3483, 3483, 3483, 169, 171, 171, 3483, 171, 171, 171, + 171, 174, 3483, 3483, 3483, 3483, 3483, 174, 177, 177, + 3483, 3483, 3483, 177, 177, 90, 90, 3483, 90, 90, + 90, 90, 17, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + + 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + 3483, 3483, 3483 } ; -static const flex_int16_t yy_chk[6762] = +static const flex_int16_t yy_chk[6834] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2314,18 +2336,18 @@ static const flex_int16_t yy_chk[6762] = 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, 3452, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3491, 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, 2803, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 2838, 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, 1117, 32, 36, 36, 37, 37, + 28, 92, 31, 32, 1127, 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, @@ -2364,9 +2386,9 @@ static const flex_int16_t yy_chk[6762] = 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, - 555, 214, 218, 216, 208, 209, 211, 205, 210, 211, + 556, 214, 218, 216, 208, 209, 211, 205, 210, 211, 215, 215, 220, 220, 215, 219, 215, 221, 218, 217, - 222, 219, 223, 221, 555, 224, 222, 227, 215, 221, + 222, 219, 223, 221, 556, 224, 222, 227, 215, 221, 215, 224, 225, 227, 228, 229, 230, 231, 225, 228, 230, 229, 223, 231, 232, 234, 233, 225, 235, 236, 237, 232, 233, 238, 235, 239, 237, 240, 234, 241, @@ -2407,649 +2429,657 @@ static const flex_int16_t yy_chk[6762] = 381, 167, 373, 384, 385, 376, 378, 373, 379, 382, 373, 374, 374, 385, 374, 386, 381, 391, 384, 394, - 386, 386, 389, 387, 390, 392, 391, 374, 395, 387, - 374, 166, 374, 399, 374, 383, 387, 383, 383, 390, - 393, 389, 396, 400, 392, 394, 393, 383, 395, 383, - 383, 383, 397, 399, 383, 398, 396, 401, 397, 402, - 398, 403, 397, 400, 402, 404, 405, 405, 406, 407, - 408, 404, 401, 409, 411, 412, 403, 414, 398, 409, - 412, 407, 413, 413, 408, 413, 415, 416, 406, 423, - 411, 417, 418, 419, 418, 419, 419, 414, 422, 422, + 386, 386, 389, 387, 390, 392, 391, 374, 396, 387, + 374, 166, 374, 395, 374, 383, 387, 383, 383, 390, + 393, 389, 396, 399, 392, 394, 393, 383, 383, 383, + 383, 383, 397, 395, 383, 398, 400, 401, 397, 402, + 398, 404, 397, 399, 402, 403, 406, 404, 405, 405, + 407, 408, 401, 409, 411, 414, 400, 415, 398, 409, + 403, 416, 407, 412, 417, 408, 406, 418, 412, 418, + 411, 413, 413, 415, 413, 414, 420, 416, 417, 419, - 420, 424, 415, 416, 420, 417, 421, 425, 423, 426, - 421, 428, 427, 419, 433, 430, 424, 432, 433, 431, - 428, 430, 432, 425, 429, 421, 427, 426, 431, 429, - 434, 428, 436, 428, 435, 441, 164, 429, 429, 434, - 435, 429, 429, 437, 438, 443, 440, 439, 438, 437, - 439, 440, 446, 436, 450, 441, 442, 442, 443, 444, - 444, 445, 447, 447, 448, 446, 445, 449, 451, 450, - 448, 449, 452, 453, 454, 454, 455, 452, 453, 456, - 457, 458, 459, 454, 462, 459, 460, 464, 455, 451, - 461, 460, 464, 458, 461, 465, 462, 467, 457, 456, + 420, 419, 419, 421, 422, 422, 423, 421, 424, 426, + 425, 430, 428, 432, 427, 431, 164, 430, 432, 419, + 428, 428, 421, 424, 431, 423, 425, 426, 427, 433, + 434, 435, 428, 433, 428, 429, 436, 435, 437, 434, + 429, 438, 440, 439, 437, 438, 439, 440, 429, 429, + 441, 443, 429, 429, 442, 442, 429, 436, 444, 444, + 445, 446, 447, 447, 443, 445, 448, 449, 450, 451, + 441, 449, 448, 452, 446, 453, 454, 454, 452, 455, + 453, 456, 457, 450, 458, 454, 459, 460, 465, 459, + 451, 455, 460, 461, 462, 467, 458, 461, 463, 463, - 463, 463, 466, 466, 469, 469, 471, 472, 473, 474, - 477, 476, 482, 475, 479, 472, 465, 473, 475, 467, - 480, 481, 477, 483, 484, 487, 482, 471, 162, 483, - 474, 476, 479, 484, 479, 486, 485, 488, 480, 487, - 486, 481, 485, 489, 490, 488, 489, 491, 488, 492, - 493, 494, 496, 495, 494, 492, 497, 498, 490, 495, - 499, 497, 491, 500, 501, 502, 496, 500, 503, 501, - 493, 504, 505, 503, 509, 506, 510, 495, 512, 498, - 502, 499, 512, 513, 511, 514, 518, 504, 506, 515, - 514, 505, 507, 507, 509, 528, 528, 510, 507, 511, + 457, 456, 464, 466, 466, 471, 462, 464, 472, 465, + 469, 469, 473, 474, 475, 476, 472, 467, 477, 475, + 479, 473, 481, 480, 486, 482, 471, 483, 484, 486, + 477, 487, 490, 483, 474, 476, 488, 484, 479, 482, + 479, 480, 481, 485, 488, 487, 490, 488, 489, 485, + 491, 489, 492, 493, 494, 495, 496, 494, 492, 497, + 498, 495, 499, 500, 497, 491, 501, 500, 505, 502, + 496, 501, 503, 493, 504, 506, 509, 503, 511, 495, + 510, 512, 498, 499, 502, 512, 515, 505, 506, 513, + 504, 507, 507, 511, 516, 514, 509, 507, 516, 507, - 507, 518, 513, 516, 517, 515, 507, 516, 507, 517, - 519, 507, 507, 517, 520, 519, 521, 522, 507, 523, - 524, 525, 526, 522, 525, 521, 527, 529, 522, 531, - 520, 530, 530, 520, 523, 532, 524, 534, 533, 535, - 537, 538, 539, 536, 531, 526, 527, 532, 536, 537, - 542, 543, 529, 533, 548, 543, 534, 539, 540, 542, - 538, 535, 544, 545, 540, 546, 544, 547, 550, 545, - 549, 551, 552, 548, 553, 558, 552, 546, 554, 160, - 554, 558, 547, 550, 549, 556, 559, 553, 560, 551, - 557, 557, 561, 556, 560, 563, 562, 564, 559, 562, + 514, 510, 515, 518, 517, 507, 520, 507, 513, 517, + 507, 507, 521, 517, 519, 523, 524, 507, 518, 519, + 522, 521, 520, 526, 525, 520, 522, 525, 527, 529, + 523, 522, 524, 528, 528, 530, 530, 531, 532, 535, + 533, 534, 534, 536, 537, 539, 526, 538, 527, 537, + 532, 540, 531, 541, 529, 533, 538, 544, 535, 541, + 543, 544, 546, 545, 539, 536, 540, 545, 546, 543, + 547, 548, 549, 550, 551, 552, 553, 554, 566, 555, + 553, 555, 547, 566, 557, 560, 548, 550, 562, 551, + 554, 549, 557, 552, 558, 558, 559, 560, 561, 564, - 565, 567, 568, 566, 561, 565, 566, 85, 569, 563, - 567, 570, 564, 569, 569, 571, 571, 567, 568, 573, - 567, 572, 572, 578, 570, 573, 574, 574, 575, 575, - 576, 579, 577, 582, 586, 581, 576, 577, 577, 580, - 581, 583, 580, 579, 578, 584, 585, 587, 584, 583, - 588, 585, 582, 589, 588, 591, 590, 586, 592, 589, - 590, 593, 595, 592, 594, 594, 587, 596, 598, 597, - 599, 601, 600, 591, 597, 593, 601, 595, 600, 602, - 604, 605, 605, 603, 598, 606, 603, 608, 596, 607, - 599, 603, 608, 602, 603, 603, 609, 610, 604, 611, + 562, 565, 559, 563, 561, 567, 563, 569, 567, 568, + 162, 571, 581, 564, 570, 581, 565, 579, 568, 570, + 570, 572, 572, 569, 571, 568, 573, 573, 568, 574, + 575, 575, 576, 576, 577, 574, 578, 580, 579, 582, + 577, 578, 578, 583, 582, 584, 586, 585, 587, 580, + 585, 586, 589, 584, 588, 590, 589, 591, 593, 592, + 594, 590, 583, 592, 595, 594, 596, 596, 597, 598, + 599, 587, 600, 588, 602, 599, 593, 591, 595, 601, + 603, 607, 604, 597, 605, 606, 603, 604, 606, 609, + 598, 600, 610, 606, 602, 601, 606, 606, 605, 607, - 613, 609, 620, 606, 614, 607, 613, 615, 616, 621, - 615, 610, 616, 614, 611, 617, 618, 619, 620, 618, - 617, 622, 619, 623, 624, 625, 627, 621, 622, 624, - 626, 626, 628, 629, 616, 627, 623, 630, 631, 80, - 632, 635, 633, 634, 635, 625, 642, 631, 633, 634, - 639, 628, 632, 630, 629, 636, 636, 637, 636, 638, - 637, 640, 641, 643, 638, 642, 644, 641, 639, 643, - 645, 644, 647, 648, 646, 640, 645, 646, 648, 649, - 650, 651, 652, 653, 649, 649, 654, 652, 657, 653, - 655, 656, 660, 650, 651, 660, 656, 647, 666, 655, + 608, 608, 613, 614, 611, 612, 616, 609, 610, 611, + 612, 617, 616, 623, 618, 619, 613, 618, 614, 619, + 617, 620, 621, 622, 624, 621, 620, 625, 622, 623, + 626, 627, 628, 632, 625, 630, 627, 629, 629, 631, + 633, 619, 624, 626, 630, 635, 634, 636, 638, 160, + 642, 638, 628, 636, 632, 634, 633, 635, 631, 637, + 639, 639, 643, 639, 640, 637, 641, 640, 642, 644, + 645, 641, 646, 648, 644, 647, 643, 650, 646, 648, + 647, 649, 651, 653, 649, 652, 654, 651, 655, 645, + 652, 652, 656, 655, 657, 658, 653, 660, 656, 654, - 659, 652, 652, 658, 658, 654, 661, 659, 657, 662, - 660, 663, 661, 664, 665, 665, 663, 668, 664, 664, - 667, 662, 667, 666, 670, 669, 663, 669, 671, 672, - 673, 674, 675, 676, 677, 678, 668, 676, 675, 679, - 680, 681, 670, 677, 682, 685, 671, 672, 683, 673, - 678, 674, 686, 684, 679, 687, 682, 688, 680, 684, - 681, 689, 690, 683, 691, 685, 686, 687, 691, 692, - 693, 694, 695, 696, 697, 75, 688, 699, 699, 697, - 698, 690, 689, 701, 700, 702, 693, 692, 700, 694, - 695, 695, 696, 704, 698, 703, 705, 701, 706, 707, + 659, 669, 650, 663, 658, 659, 663, 655, 655, 661, + 661, 662, 665, 657, 664, 668, 668, 660, 662, 671, + 664, 663, 666, 667, 665, 673, 669, 666, 667, 667, + 670, 672, 670, 672, 674, 675, 676, 666, 671, 677, + 678, 679, 680, 673, 685, 679, 678, 681, 682, 683, + 684, 680, 674, 675, 687, 676, 685, 686, 688, 677, + 687, 689, 681, 682, 690, 691, 692, 683, 695, 684, + 693, 701, 686, 694, 696, 689, 690, 694, 688, 697, + 698, 699, 704, 700, 691, 701, 695, 692, 700, 693, + 696, 702, 702, 705, 707, 706, 704, 697, 698, 698, - 708, 705, 709, 710, 702, 711, 703, 704, 710, 709, - 712, 713, 711, 708, 706, 712, 713, 714, 707, 715, - 716, 718, 717, 721, 728, 719, 715, 720, 721, 716, - 718, 722, 724, 720, 722, 714, 717, 719, 723, 725, - 726, 736, 723, 727, 735, 728, 724, 736, 725, 729, - 729, 730, 730, 731, 731, 726, 732, 727, 733, 737, - 730, 732, 738, 735, 739, 740, 738, 733, 741, 742, - 743, 745, 746, 744, 747, 742, 739, 750, 743, 737, - 744, 757, 753, 74, 756, 759, 741, 757, 766, 745, - 740, 759, 750, 756, 747, 760, 761, 746, 748, 753, + 699, 703, 708, 709, 710, 703, 706, 708, 707, 711, + 712, 713, 705, 714, 715, 718, 713, 712, 719, 709, + 714, 716, 711, 710, 717, 719, 716, 720, 721, 717, + 722, 723, 725, 718, 724, 730, 720, 725, 715, 722, + 724, 726, 721, 723, 726, 727, 728, 729, 731, 727, + 730, 732, 733, 733, 734, 734, 729, 735, 735, 736, + 728, 737, 731, 734, 736, 739, 741, 740, 743, 744, + 737, 742, 732, 740, 745, 742, 746, 747, 749, 750, + 743, 748, 746, 751, 739, 747, 741, 754, 748, 757, + 760, 761, 745, 772, 744, 763, 749, 761, 770, 760, - 748, 762, 767, 748, 760, 762, 766, 748, 763, 763, - 748, 765, 761, 764, 764, 768, 767, 748, 748, 769, - 748, 771, 765, 772, 773, 769, 771, 774, 775, 776, - 779, 774, 778, 776, 777, 768, 770, 770, 770, 777, - 770, 780, 773, 770, 772, 779, 68, 781, 770, 776, - 781, 778, 775, 782, 770, 770, 783, 785, 782, 782, - 784, 784, 786, 783, 787, 787, 780, 786, 788, 793, - 790, 789, 785, 788, 789, 790, 791, 791, 792, 794, - 792, 793, 795, 796, 798, 797, 795, 799, 799, 804, - 800, 803, 798, 801, 802, 802, 805, 807, 794, 63, + 764, 763, 754, 751, 750, 752, 757, 752, 85, 764, + 752, 766, 765, 772, 752, 766, 770, 752, 767, 767, + 768, 768, 769, 771, 752, 752, 773, 752, 765, 775, + 776, 777, 773, 769, 780, 776, 778, 771, 774, 774, + 774, 782, 774, 779, 781, 774, 782, 779, 781, 775, + 774, 783, 777, 785, 778, 784, 774, 774, 780, 786, + 784, 788, 787, 791, 781, 787, 788, 788, 785, 789, + 783, 790, 790, 798, 792, 798, 789, 794, 791, 792, + 793, 793, 794, 795, 786, 796, 795, 797, 797, 799, + 796, 800, 801, 802, 804, 803, 801, 805, 805, 810, - 806, 804, 807, 796, 797, 800, 806, 801, 809, 803, - 808, 808, 811, 809, 809, 812, 813, 811, 805, 814, - 816, 812, 815, 818, 819, 814, 816, 815, 817, 818, - 822, 817, 819, 820, 820, 813, 821, 821, 822, 823, - 824, 825, 826, 827, 828, 824, 829, 829, 825, 830, - 832, 832, 834, 831, 838, 836, 833, 823, 830, 827, - 826, 831, 833, 828, 836, 837, 840, 839, 843, 844, - 841, 834, 839, 841, 837, 840, 842, 845, 838, 846, - 849, 842, 843, 847, 848, 848, 845, 850, 847, 847, - 851, 852, 846, 853, 844, 849, 856, 854, 856, 851, + 806, 799, 804, 807, 808, 808, 809, 811, 814, 814, + 800, 810, 812, 802, 803, 806, 813, 807, 812, 819, + 815, 813, 817, 825, 809, 815, 815, 817, 818, 811, + 820, 825, 821, 822, 818, 824, 820, 821, 819, 822, + 823, 824, 828, 823, 826, 826, 827, 827, 829, 830, + 828, 831, 832, 833, 830, 834, 835, 835, 831, 836, + 838, 838, 840, 837, 844, 850, 829, 839, 836, 833, + 832, 837, 845, 839, 834, 842, 843, 845, 846, 847, + 849, 840, 847, 851, 842, 843, 848, 846, 844, 852, + 850, 848, 851, 853, 849, 854, 854, 855, 853, 853, - 854, 857, 857, 858, 859, 860, 850, 861, 854, 859, - 862, 853, 863, 864, 865, 852, 866, 867, 868, 869, - 871, 867, 870, 865, 858, 872, 860, 861, 870, 871, - 862, 873, 874, 864, 863, 875, 868, 872, 869, 866, - 876, 875, 877, 880, 878, 881, 874, 883, 876, 878, - 873, 879, 879, 884, 882, 885, 877, 886, 887, 891, - 888, 884, 880, 882, 889, 881, 890, 883, 892, 893, - 889, 894, 890, 891, 892, 885, 895, 887, 896, 886, - 888, 897, 895, 893, 896, 897, 898, 899, 900, 901, - 903, 894, 908, 900, 902, 902, 903, 904, 905, 899, + 856, 857, 852, 858, 859, 860, 867, 862, 860, 862, + 857, 864, 855, 863, 863, 865, 860, 866, 869, 856, + 865, 868, 859, 870, 871, 872, 867, 858, 874, 876, + 873, 875, 864, 871, 873, 876, 877, 878, 866, 879, + 869, 868, 880, 870, 882, 877, 874, 881, 872, 878, + 875, 883, 882, 881, 884, 886, 880, 887, 879, 884, + 885, 885, 888, 889, 890, 883, 891, 892, 893, 895, + 894, 888, 890, 896, 886, 895, 898, 887, 897, 896, + 899, 900, 898, 889, 903, 901, 891, 893, 903, 892, + 894, 901, 897, 902, 899, 904, 905, 906, 907, 902, - 904, 906, 907, 909, 909, 898, 910, 899, 907, 917, - 901, 58, 908, 911, 906, 914, 905, 912, 911, 915, - 912, 913, 918, 915, 910, 920, 913, 913, 916, 916, - 914, 917, 919, 912, 922, 912, 923, 919, 925, 926, - 927, 931, 918, 930, 920, 929, 929, 930, 932, 932, - 923, 925, 933, 934, 935, 940, 931, 934, 922, 926, - 936, 927, 928, 937, 940, 928, 938, 928, 937, 935, - 939, 928, 941, 928, 936, 939, 939, 933, 928, 943, - 938, 942, 946, 928, 944, 942, 941, 946, 945, 944, - 947, 948, 949, 950, 943, 951, 958, 942, 952, 944, + 909, 900, 906, 908, 908, 910, 909, 911, 905, 912, + 911, 910, 913, 915, 904, 914, 905, 916, 916, 907, + 917, 914, 921, 918, 924, 913, 919, 912, 918, 919, + 920, 923, 923, 915, 925, 920, 920, 921, 917, 922, + 926, 927, 919, 922, 919, 926, 924, 929, 930, 933, + 932, 934, 936, 936, 925, 937, 939, 939, 940, 937, + 927, 941, 930, 932, 938, 941, 942, 962, 962, 933, + 944, 929, 934, 935, 943, 944, 935, 945, 935, 938, + 946, 942, 935, 940, 935, 946, 946, 947, 943, 935, + 948, 945, 950, 949, 935, 951, 947, 949, 953, 952, - 945, 951, 950, 952, 947, 953, 949, 954, 955, 955, - 956, 953, 948, 954, 957, 956, 959, 962, 958, 960, - 957, 963, 964, 966, 966, 967, 963, 972, 965, 962, - 967, 969, 970, 968, 971, 959, 964, 960, 961, 961, - 965, 968, 973, 972, 961, 969, 961, 975, 973, 974, - 976, 970, 961, 971, 974, 977, 978, 961, 961, 975, - 979, 979, 980, 981, 961, 985, 980, 983, 976, 984, - 986, 977, 984, 983, 978, 986, 987, 989, 990, 988, - 994, 992, 989, 981, 985, 988, 993, 995, 997, 987, - 992, 996, 999, 995, 998, 993, 994, 990, 1001, 998, + 951, 954, 955, 953, 948, 956, 958, 950, 957, 949, + 951, 952, 958, 959, 960, 954, 961, 957, 959, 956, + 960, 963, 961, 955, 964, 965, 963, 966, 969, 970, + 964, 967, 972, 975, 970, 973, 973, 974, 971, 976, + 969, 975, 974, 977, 972, 980, 966, 965, 978, 967, + 968, 968, 971, 979, 981, 976, 968, 977, 968, 983, + 981, 980, 984, 982, 968, 985, 986, 978, 982, 968, + 968, 983, 979, 987, 988, 988, 968, 990, 989, 992, + 984, 985, 989, 993, 986, 992, 993, 994, 995, 996, + 997, 987, 999, 995, 998, 1001, 997, 990, 1002, 998, - 996, 1000, 1002, 1005, 1003, 1006, 1011, 997, 1004, 1005, - 1007, 1009, 999, 1003, 1002, 1000, 1007, 1004, 1001, 1012, - 1011, 1013, 1006, 1014, 1015, 1016, 1013, 1009, 1018, 1017, - 1019, 1022, 1023, 1018, 1025, 1019, 1022, 1027, 1015, 1012, - 1025, 1023, 1014, 1016, 1017, 1024, 1024, 1026, 1028, 1030, - 1033, 1033, 1027, 1031, 1033, 1035, 1026, 1034, 1031, 1031, - 1034, 1028, 1036, 1037, 1039, 1030, 1038, 1041, 1040, 1035, - 1042, 1044, 1043, 1041, 1046, 1045, 1049, 1039, 1043, 1037, - 1045, 1058, 1036, 1040, 1038, 1052, 1044, 1058, 1046, 1048, - 1042, 1050, 1048, 1051, 1053, 1054, 1050, 1049, 1051, 1055, + 1003, 1005, 996, 1004, 1001, 1006, 994, 1002, 1007, 1004, + 1005, 999, 1008, 1007, 1009, 1010, 1003, 1011, 1012, 1014, + 1015, 1013, 1018, 1021, 1006, 1014, 1020, 1012, 1009, 1011, + 1013, 1022, 1008, 1016, 1023, 1010, 1022, 1015, 1018, 1016, + 1020, 1024, 1025, 1021, 1026, 1027, 1028, 1031, 1032, 80, + 1027, 1028, 1031, 1023, 1035, 1024, 1036, 1032, 1034, 1026, + 1025, 1033, 1033, 1035, 1034, 1037, 1039, 1040, 1045, 1044, + 1046, 1036, 1040, 1040, 1043, 1042, 1042, 1043, 1037, 1042, + 1047, 1048, 1039, 1044, 1049, 1050, 1046, 1051, 1045, 1052, + 1053, 1050, 1054, 1058, 1048, 1052, 1055, 1054, 1047, 1049, - 1054, 1052, 1056, 1053, 1055, 1059, 1060, 1061, 1062, 1062, - 1063, 1064, 1060, 1061, 1056, 1065, 1066, 1066, 1065, 1063, - 1067, 1059, 1068, 1069, 1070, 1072, 1071, 1070, 1073, 1064, - 1074, 1072, 1075, 1082, 1073, 1074, 1076, 1075, 1067, 1071, - 1077, 1068, 1076, 1069, 1078, 1077, 1080, 1081, 1083, 1086, - 1078, 1080, 1084, 1082, 1083, 1085, 1085, 1084, 1086, 1087, - 1088, 1089, 1092, 1090, 1091, 1081, 1090, 1091, 1087, 1093, - 1094, 1095, 1096, 1092, 1093, 1097, 1098, 1099, 1088, 1100, - 1089, 1097, 1098, 1095, 1100, 1101, 1101, 1102, 1094, 1103, - 1104, 1096, 1099, 1105, 1106, 1107, 1108, 1105, 1109, 1111, + 1057, 1059, 1061, 1057, 1060, 1053, 1059, 1051, 1062, 1060, + 1055, 1063, 1065, 1067, 1058, 1064, 1063, 1062, 1061, 1067, + 1064, 1068, 1069, 1070, 1065, 1071, 1071, 1072, 1069, 1070, + 1073, 1074, 1075, 1075, 1074, 1076, 1072, 1068, 1077, 1078, + 1079, 1080, 1083, 1079, 1081, 1082, 1085, 1083, 1073, 1091, + 1081, 1082, 1085, 1076, 1080, 1084, 1086, 1077, 1087, 1078, + 1084, 1086, 1089, 1090, 1087, 1092, 1097, 1089, 1093, 1091, + 1095, 1092, 1098, 1093, 1094, 1094, 1096, 1099, 1101, 1095, + 1099, 1090, 1102, 1100, 1097, 1096, 1100, 1102, 1103, 1101, + 1104, 1098, 1105, 1106, 1107, 1108, 1109, 1110, 1110, 1106, - 1112, 1112, 1104, 1103, 1107, 1113, 1102, 1116, 1118, 1114, - 1119, 1115, 1106, 1113, 1114, 1108, 1115, 1120, 1111, 1121, - 1124, 1122, 1118, 1109, 1121, 1119, 1127, 1116, 1125, 1120, - 1122, 1123, 1123, 1126, 1125, 1129, 1128, 1129, 1130, 1126, - 1124, 1128, 1127, 1130, 1131, 1132, 1133, 1134, 1135, 1136, - 1137, 1133, 1138, 1140, 1140, 1141, 1136, 1142, 1131, 1132, - 1144, 1143, 1134, 1145, 57, 1137, 1144, 1135, 1146, 1141, - 1148, 1138, 1152, 1146, 1148, 1142, 1143, 1149, 1149, 1152, - 1150, 1153, 1146, 1145, 1146, 1150, 1155, 1146, 1151, 1151, - 1154, 1156, 1157, 1154, 1158, 1153, 1159, 1161, 1160, 1158, + 1107, 1109, 1104, 1111, 1112, 1113, 1103, 1114, 1115, 1116, + 1108, 1105, 1115, 1118, 1117, 1119, 1121, 1113, 1112, 1122, + 1122, 1123, 1111, 1117, 1126, 1114, 1124, 1116, 1125, 1123, + 1129, 1124, 1118, 1125, 1128, 1121, 1131, 1130, 1132, 1134, + 1119, 1131, 1133, 1133, 1126, 1129, 1135, 1132, 1128, 1130, + 1136, 1137, 1135, 1138, 1141, 1139, 1136, 1139, 1138, 1134, + 1140, 1142, 1144, 1145, 1143, 1140, 1146, 1137, 1141, 1143, + 1147, 1148, 1151, 1146, 1152, 1142, 1153, 1144, 1150, 1150, + 1155, 1154, 1145, 1156, 75, 1147, 1151, 1154, 1156, 1158, + 1148, 1153, 1152, 1158, 1159, 1159, 1160, 1156, 1162, 1156, - 1162, 1157, 1161, 1164, 1169, 1155, 1163, 1166, 1166, 1156, - 1160, 1167, 1172, 1168, 1162, 1159, 1167, 1163, 1168, 1171, - 1170, 1172, 1164, 1171, 1169, 1170, 1173, 1174, 1175, 1177, - 1178, 1176, 1180, 1179, 1181, 1182, 1185, 1178, 1186, 1184, - 1183, 1173, 1174, 1176, 1177, 1179, 1183, 1175, 1187, 1188, - 1189, 1180, 1192, 1182, 1184, 1181, 1185, 1187, 1186, 1190, - 1191, 1193, 1194, 1197, 1188, 1199, 1196, 1198, 1200, 1189, - 1201, 1190, 1196, 1199, 1205, 1202, 1193, 1192, 1197, 1191, - 1202, 1198, 1194, 1203, 1204, 1206, 1201, 1207, 1200, 1204, - 1204, 1208, 1208, 1205, 1210, 1203, 1211, 1212, 1216, 1206, + 1155, 1160, 1156, 1161, 1161, 1162, 1163, 1164, 1165, 1167, + 1164, 1166, 1168, 1169, 1170, 74, 1171, 1168, 1167, 1172, + 1163, 1171, 1174, 1173, 1176, 1176, 1170, 1165, 1179, 1166, + 1177, 1178, 1169, 1172, 1173, 1177, 1178, 1180, 1182, 1181, + 1183, 1174, 1180, 1181, 1184, 1185, 1186, 1182, 1179, 1188, + 1187, 1189, 1190, 1191, 1192, 1183, 1188, 1196, 1186, 1184, + 1193, 1194, 1195, 1189, 1185, 1187, 1193, 1197, 1195, 1198, + 1199, 1190, 1192, 1200, 1191, 1202, 1194, 1196, 1198, 1201, + 1203, 1204, 1205, 1206, 1208, 1199, 1209, 1197, 1205, 1211, + 1208, 1201, 1200, 1210, 1202, 1212, 1204, 1211, 1213, 1214, - 1207, 1209, 1209, 1212, 1216, 1211, 1209, 1210, 1214, 1209, - 1209, 1213, 1213, 1214, 1209, 1220, 1215, 1217, 1218, 1223, - 1209, 1227, 1217, 1218, 1209, 1215, 1219, 1219, 1221, 1221, - 1222, 1224, 1225, 1222, 1226, 1222, 1220, 1228, 1225, 1223, - 1229, 1227, 1228, 1226, 1230, 1231, 1232, 1235, 1233, 1224, - 1257, 1231, 1232, 1233, 1229, 1234, 1235, 1237, 1257, 1234, - 1244, 1235, 1230, 1235, 1236, 1235, 1242, 1235, 1240, 1236, - 1242, 1237, 1238, 1238, 1239, 1239, 1243, 1239, 1244, 1240, - 1245, 1246, 1248, 1247, 1250, 1249, 1246, 1246, 1251, 1245, - 1249, 1243, 1247, 1252, 1253, 1254, 1255, 1251, 1250, 1256, + 1215, 1209, 1217, 1206, 1214, 1203, 1218, 1210, 1281, 1219, + 1281, 1216, 1215, 1222, 1213, 1212, 1216, 1216, 1220, 1220, + 1218, 1217, 1219, 1221, 1221, 1223, 1222, 1224, 1221, 1225, + 1225, 1221, 1221, 1224, 1223, 1226, 1221, 1228, 1227, 1229, + 1226, 1232, 1221, 1228, 1229, 1230, 1221, 1227, 1231, 1231, + 1230, 1233, 1233, 1234, 1235, 1236, 1234, 1237, 1234, 1238, + 1239, 1240, 1232, 1237, 1241, 1242, 1240, 1245, 1238, 1243, + 1244, 1249, 1245, 1236, 1235, 1243, 1244, 1246, 1241, 1247, + 1239, 1246, 1248, 1242, 1260, 1249, 1255, 1248, 1247, 1250, + 1250, 1251, 1251, 1247, 1251, 1247, 1252, 1247, 1254, 1247, - 1256, 1258, 1255, 1259, 1248, 1260, 1263, 1261, 1259, 1254, - 1262, 1264, 1252, 1253, 1267, 1258, 1261, 1262, 1265, 1260, - 1266, 1266, 1272, 1265, 1263, 1268, 1268, 1272, 1269, 1267, - 1269, 1271, 1273, 1274, 1271, 1276, 1264, 1275, 1275, 1277, - 1277, 1279, 1274, 1278, 1278, 1280, 1279, 1281, 1282, 1282, - 1283, 1273, 1284, 1285, 1286, 1276, 1285, 1287, 1289, 1288, - 1290, 1291, 1290, 1287, 1288, 1294, 1280, 1289, 1281, 1284, - 1283, 1295, 1293, 1296, 1286, 1293, 1295, 1297, 1298, 1291, - 1294, 1300, 1297, 1299, 1300, 1301, 1298, 1296, 1299, 1303, - 1301, 1302, 1302, 1304, 1303, 1305, 1306, 1307, 1309, 1310, + 1256, 1255, 1254, 1257, 1258, 1259, 1260, 1252, 1261, 1258, + 1258, 1262, 1257, 1261, 1259, 1263, 1264, 1265, 1256, 1266, + 1267, 1268, 1268, 1269, 1263, 1262, 1267, 1270, 1272, 1271, + 1273, 1269, 1275, 1266, 1271, 1264, 1265, 1274, 1276, 1273, + 1277, 1270, 1272, 1279, 1274, 1277, 1278, 1278, 1280, 1280, + 1275, 1283, 1284, 1285, 1283, 1286, 1288, 1284, 1279, 1287, + 1287, 1289, 1289, 1276, 1286, 1290, 1290, 1292, 1291, 1293, + 1294, 1294, 1285, 1291, 1295, 1296, 1288, 1297, 1298, 1299, + 1297, 1300, 1301, 1303, 1306, 1299, 1300, 1302, 1292, 1302, + 1293, 1301, 1296, 1305, 1295, 1307, 1305, 1308, 1298, 1306, - 1312, 1305, 1311, 1306, 1309, 1310, 1312, 1311, 1313, 1314, - 1307, 1304, 1315, 1316, 1316, 1317, 1319, 1313, 1320, 1321, - 1323, 1319, 1322, 1315, 1324, 1325, 1326, 1327, 1314, 1321, - 1331, 1325, 1326, 1327, 1330, 1317, 1320, 1322, 1329, 1332, - 1323, 1333, 1334, 1335, 1329, 1336, 1336, 1324, 1330, 1337, - 1331, 1338, 1339, 1333, 1330, 1340, 1334, 1341, 1341, 1332, - 1340, 1335, 1342, 1343, 1345, 1348, 1346, 1349, 1343, 1337, - 1339, 1346, 1346, 1347, 1348, 1349, 1338, 52, 1350, 1351, - 1352, 1353, 1356, 1345, 1354, 1342, 1353, 1363, 1355, 1353, - 1355, 1347, 1350, 1354, 1351, 1352, 1356, 1358, 1352, 1360, + 1307, 1303, 1309, 1311, 1310, 1313, 1312, 1309, 1311, 1312, + 1313, 1308, 1310, 1314, 1314, 1315, 1316, 1317, 1318, 1319, + 1315, 1321, 1322, 1317, 1323, 1318, 1324, 1321, 1322, 1323, + 1325, 1324, 1319, 1326, 1316, 1327, 1325, 1328, 1329, 1329, + 1330, 1332, 1326, 1333, 1335, 1334, 1332, 1336, 1328, 1337, + 1338, 1339, 1340, 1344, 1327, 1334, 1338, 1339, 1340, 1335, + 1330, 1333, 1342, 1343, 1345, 1347, 1346, 1336, 1342, 1348, + 1349, 1349, 1337, 1344, 1350, 1351, 1353, 1343, 1346, 1347, + 1352, 1353, 1355, 1343, 1345, 1354, 1354, 1348, 1356, 1358, + 1359, 1360, 1361, 1356, 1350, 1359, 1359, 1363, 1352, 1362, - 1359, 1361, 1362, 1358, 1359, 1364, 1361, 1361, 1367, 1365, - 1360, 1366, 1368, 1363, 1365, 1369, 1366, 1370, 1373, 1372, - 1369, 1362, 1374, 1364, 1375, 1375, 1367, 1376, 1377, 1378, - 1380, 1376, 1368, 1372, 1381, 1379, 1373, 1370, 1382, 1383, - 1374, 1379, 1380, 1384, 1385, 1386, 1377, 1389, 1378, 1387, - 1386, 1394, 1382, 1381, 1383, 1388, 1387, 1390, 1384, 1392, - 1388, 1391, 1391, 1385, 1393, 1389, 1390, 1395, 1395, 1396, - 1397, 1394, 1398, 1393, 1392, 1396, 1397, 1399, 1399, 1400, - 1401, 1402, 1403, 1404, 1405, 1400, 1398, 1403, 1406, 1404, - 1405, 1407, 1407, 1413, 1406, 1412, 1401, 1408, 1408, 1410, + 1351, 1361, 1364, 1365, 1367, 1355, 1369, 1362, 1358, 1360, + 1368, 1363, 1368, 1367, 1366, 1373, 1375, 1364, 1365, 1366, + 1369, 1365, 1366, 1371, 1372, 1374, 1373, 1376, 1372, 1371, + 1374, 1374, 1377, 1378, 1379, 1375, 1380, 1381, 1378, 1379, + 1382, 1383, 1385, 68, 1386, 1382, 1387, 1388, 1388, 1390, + 1377, 1389, 1391, 1376, 1380, 1389, 1385, 1381, 1393, 1392, + 1394, 1383, 1386, 1395, 1387, 1392, 1396, 1390, 1397, 1398, + 1393, 1391, 1402, 1399, 1403, 1400, 1406, 1395, 1399, 1394, + 1401, 1396, 1400, 1397, 1404, 1401, 1405, 1405, 1398, 1407, + 1402, 1406, 1408, 1404, 1410, 1403, 1409, 1409, 1407, 1411, - 1410, 1411, 1402, 1414, 1412, 1411, 1415, 1416, 1419, 1417, - 1420, 1413, 1418, 1418, 1421, 1414, 1417, 1422, 1420, 1421, - 1415, 1423, 1416, 1426, 1424, 1427, 1427, 1425, 1419, 1424, - 1424, 1422, 1425, 1425, 1428, 1429, 1430, 1431, 1432, 1433, - 1423, 1435, 1431, 1426, 1434, 1430, 1436, 1435, 1437, 1438, - 1439, 1436, 1440, 1428, 1429, 1441, 1439, 1432, 1442, 1433, - 1443, 1441, 1434, 1444, 1442, 1445, 1446, 1447, 1437, 1448, - 1452, 1440, 1449, 1450, 1450, 1438, 1453, 1451, 1457, 1443, - 1451, 1447, 1444, 1457, 1445, 1446, 1454, 1449, 1459, 1452, - 1448, 1455, 1455, 1456, 1456, 1453, 1458, 1460, 1454, 1461, + 1410, 1412, 1413, 1413, 1415, 1411, 1414, 1414, 1416, 1417, + 1415, 1418, 1408, 1419, 1420, 1412, 1418, 1421, 1428, 1419, + 1420, 1422, 1422, 1421, 1416, 1423, 1423, 1425, 1425, 1426, + 1417, 1427, 1429, 1426, 1430, 1431, 1428, 1434, 1432, 1435, + 1427, 1433, 1433, 1438, 1429, 1432, 1436, 1435, 1430, 1437, + 1431, 1436, 1441, 1439, 1443, 1440, 1444, 1434, 1439, 1439, + 1440, 1440, 1438, 1437, 1442, 1442, 1446, 1445, 1447, 1448, + 1449, 1446, 1441, 1443, 1450, 1444, 1445, 1451, 1452, 1453, + 1450, 1455, 1451, 1458, 1454, 1456, 1457, 1447, 1449, 1448, + 1454, 1456, 1457, 1459, 1460, 1461, 1462, 1463, 1452, 1469, - 1458, 1459, 1462, 1466, 1462, 1464, 1460, 1467, 1462, 1465, - 1468, 1473, 1461, 1471, 1465, 1469, 1469, 1470, 1466, 1471, - 1472, 1462, 1470, 1464, 1473, 1474, 1468, 1467, 1475, 1476, - 1474, 1477, 1475, 1476, 1478, 1472, 1479, 1480, 1481, 1482, - 1482, 1484, 1486, 1487, 1481, 1479, 1488, 1488, 1487, 1489, - 1490, 1477, 1478, 1492, 1492, 1489, 1496, 1480, 1494, 1484, - 1497, 1494, 1500, 1486, 1495, 1495, 1499, 1501, 1502, 1499, - 1490, 1503, 1496, 1504, 1504, 1505, 1497, 1502, 1506, 1507, - 1508, 1509, 1512, 1500, 1511, 1508, 1513, 1501, 1510, 1510, - 1505, 1503, 1514, 1511, 1515, 1509, 1516, 1516, 1507, 1506, + 1455, 1464, 1458, 1465, 1465, 1453, 1466, 1467, 1468, 1466, + 1462, 1469, 1459, 1460, 1461, 1475, 1464, 1474, 1463, 1470, + 1470, 1471, 1471, 1472, 1475, 1473, 1467, 1468, 1472, 1473, + 1474, 1476, 1477, 1481, 1477, 1479, 1480, 1482, 1477, 1483, + 1485, 1480, 1484, 1484, 1476, 1485, 1486, 1487, 1481, 1489, + 1488, 1477, 1486, 1479, 1489, 1483, 1490, 1482, 1492, 1493, + 1490, 1491, 1487, 1488, 1494, 1491, 1495, 1499, 1496, 1497, + 1497, 1501, 63, 1494, 1496, 1502, 1505, 1493, 1492, 1516, + 1502, 1503, 1503, 1504, 1511, 1499, 1495, 1507, 1507, 1504, + 1509, 1512, 1501, 1509, 1510, 1510, 1505, 1515, 1514, 1516, - 1512, 1513, 1517, 1518, 1519, 1520, 1521, 1521, 1522, 1519, - 1523, 1525, 1522, 1526, 1515, 1528, 1517, 1514, 1524, 1524, - 1520, 1518, 1527, 1529, 1526, 1536, 1527, 1533, 1529, 1535, - 1523, 1531, 1531, 1525, 1528, 1532, 1534, 1537, 1532, 1538, - 1533, 1534, 1539, 1536, 1540, 1535, 1541, 1541, 1542, 47, - 1543, 1537, 1544, 1542, 1545, 1545, 1539, 1546, 1538, 1538, - 1547, 1548, 1549, 1550, 1549, 1547, 1546, 1551, 1550, 1540, - 1543, 1552, 1544, 1551, 1553, 1555, 1556, 1556, 1557, 1558, - 1553, 1548, 1560, 1561, 1564, 1558, 1565, 1560, 1566, 1555, - 1569, 1552, 1562, 1562, 1563, 1563, 1567, 1557, 1564, 1567, + 1511, 1514, 1517, 1518, 1519, 1519, 1520, 1512, 1521, 1522, + 1523, 1517, 1524, 1525, 1525, 1523, 1526, 1527, 1515, 1528, + 1529, 1520, 1530, 1518, 1532, 1526, 1524, 1540, 1522, 1521, + 1531, 1531, 1533, 1535, 1528, 1527, 1534, 1538, 1532, 1536, + 1536, 1534, 1530, 1537, 1541, 1529, 1544, 1537, 1535, 1540, + 1533, 1539, 1539, 1542, 1543, 1545, 1548, 1538, 1543, 1548, + 1545, 1547, 1547, 1541, 1542, 1544, 1549, 1550, 1551, 1552, + 1554, 1553, 1550, 1556, 1555, 1557, 1557, 1558, 1563, 1549, + 1559, 1560, 1558, 1563, 1551, 1553, 1562, 1552, 1555, 1554, + 1554, 1561, 1561, 1564, 1565, 1562, 1565, 1566, 1556, 1567, - 1568, 1568, 1570, 1566, 1565, 1571, 1572, 1561, 1569, 1572, - 1573, 18, 1572, 1574, 1570, 1579, 1573, 1575, 1574, 1577, - 1575, 1578, 1581, 1581, 1572, 1571, 1578, 1580, 1577, 1582, - 1580, 1583, 1590, 1584, 1589, 1582, 1575, 1583, 1584, 1587, - 1579, 1585, 1585, 1586, 1586, 1587, 1588, 1589, 1591, 1592, - 1590, 1588, 1593, 1594, 1595, 1593, 1596, 1597, 1598, 1594, - 1595, 1596, 1602, 1597, 1603, 1599, 1604, 1591, 1601, 1592, - 1599, 1600, 1600, 1601, 1605, 1606, 1607, 1608, 1609, 1610, - 1602, 1598, 1612, 1610, 1603, 1611, 1604, 1611, 1605, 1606, - 1607, 1617, 1614, 1615, 1616, 1608, 1618, 1617, 1619, 1620, + 1559, 1560, 1566, 1568, 1569, 1567, 1571, 1572, 1572, 1573, + 1569, 1574, 1577, 1564, 1576, 1578, 1578, 1574, 1580, 1576, + 1571, 1579, 1579, 1568, 1581, 1582, 1583, 1585, 1573, 1583, + 1584, 1584, 1580, 1587, 1586, 1595, 1577, 1589, 1588, 58, + 1582, 1588, 1581, 1589, 1588, 1585, 1586, 1590, 1591, 1593, + 1594, 1591, 1590, 1587, 1596, 1594, 1588, 1596, 1593, 1598, + 1595, 1597, 1597, 1599, 1603, 1598, 1600, 1591, 1606, 1599, + 1603, 1600, 1601, 1601, 1602, 1602, 1604, 1605, 1607, 1608, + 1609, 1604, 1610, 1609, 1612, 1611, 1606, 1613, 1610, 1612, + 1605, 1611, 1614, 1613, 1618, 1615, 1619, 1607, 1617, 1608, - 1622, 1612, 1625, 1609, 1614, 1615, 1621, 1616, 1624, 1624, - 1626, 1627, 1628, 1628, 1619, 1626, 1618, 1629, 1631, 1620, - 1621, 1622, 1625, 1627, 1630, 1632, 1633, 1635, 1636, 1634, - 1637, 1641, 1629, 1639, 1635, 1633, 1642, 1636, 1630, 1642, - 1636, 1646, 1631, 1632, 1634, 1645, 1637, 1650, 1639, 1643, - 1643, 1644, 1644, 1639, 1649, 1647, 1641, 1645, 1647, 1646, - 1648, 1648, 1652, 1651, 1653, 1652, 1650, 1649, 1651, 1653, - 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1661, 1662, - 1663, 1656, 1660, 1658, 1659, 1664, 1658, 1655, 1665, 1654, - 1666, 1667, 1657, 1663, 1672, 1668, 1667, 1667, 1669, 1662, + 1615, 1616, 1616, 1617, 1620, 1621, 1622, 1623, 1624, 1625, + 1626, 1629, 1618, 1627, 1636, 1614, 1619, 1627, 1638, 1632, + 1622, 1623, 1624, 1620, 1628, 1621, 1628, 1625, 1633, 1630, + 1629, 1632, 1634, 1635, 1636, 1626, 1630, 1637, 1638, 1635, + 1633, 1639, 1640, 1642, 1642, 1634, 1643, 1644, 1645, 1646, + 1646, 1648, 1644, 1637, 1647, 1639, 1649, 1650, 1651, 1652, + 1645, 1653, 1655, 1640, 1654, 1648, 1643, 1651, 1653, 1647, + 1657, 1659, 57, 1654, 1652, 1650, 1654, 1663, 1655, 1660, + 1649, 1664, 1660, 1661, 1661, 1657, 1662, 1662, 1665, 1663, + 1657, 1665, 1666, 1666, 1667, 1668, 1659, 1669, 1670, 1664, - 1668, 1675, 1665, 1664, 1673, 1676, 1666, 1674, 1674, 1679, - 1669, 1677, 1678, 1678, 1676, 1680, 1677, 1675, 1679, 1672, - 1680, 1679, 1673, 1681, 1682, 1683, 1684, 1678, 1686, 1687, - 1688, 1684, 1684, 1689, 1690, 1691, 1692, 1692, 1689, 1699, - 1690, 1681, 1686, 1683, 1687, 1682, 1694, 1695, 1693, 1696, - 1697, 1694, 1688, 1691, 1693, 1696, 1697, 1700, 1701, 1699, - 1702, 1695, 1704, 1703, 1701, 1708, 1703, 1706, 1704, 1709, - 1710, 1700, 1703, 1702, 1711, 1706, 1712, 1713, 1710, 1711, - 1714, 1715, 1716, 1717, 1708, 1712, 1718, 1718, 1709, 1714, - 1713, 1721, 1719, 1720, 1715, 1723, 1716, 1717, 1719, 1720, + 1671, 1670, 1669, 1672, 1673, 1671, 1674, 1667, 1675, 1676, + 1677, 1678, 1679, 1679, 1668, 1674, 1680, 1678, 1676, 1677, + 1673, 1676, 1672, 1682, 1681, 1683, 1684, 1675, 1685, 1690, + 1686, 1687, 1691, 1685, 1685, 1686, 1680, 1681, 1694, 1683, + 1693, 1682, 1684, 1687, 1692, 1692, 1695, 1694, 1696, 1696, + 1691, 1695, 1697, 1698, 1690, 1699, 1693, 1700, 1698, 1701, + 1702, 1697, 1704, 1696, 1697, 1702, 1702, 1705, 1706, 1707, + 1709, 1710, 1710, 1699, 1707, 1708, 1704, 1701, 1700, 1711, + 1713, 1708, 1705, 1717, 1712, 1711, 1714, 1715, 1709, 1712, + 1706, 1718, 1714, 1715, 1713, 1719, 1720, 1721, 1722, 1724, - 1722, 1722, 1724, 1725, 1721, 1726, 1726, 1728, 1718, 1729, - 1727, 1730, 1731, 1728, 1734, 1723, 1733, 1733, 1740, 1736, - 1724, 1735, 1725, 1727, 1736, 1735, 1739, 1730, 1737, 1742, - 1731, 1729, 1738, 1737, 1734, 1739, 1743, 1738, 1745, 1744, - 1742, 1740, 1744, 1746, 1748, 1743, 1747, 1747, 1749, 1750, - 1745, 1751, 1751, 1752, 1753, 1757, 1758, 1754, 1746, 1755, - 1749, 1753, 1761, 1748, 1759, 1760, 1762, 1752, 1750, 1754, - 1759, 1755, 1762, 1772, 1757, 1772, 1758, 1760, 1763, 1763, - 1761, 1764, 1765, 1765, 1764, 1767, 1768, 1769, 1770, 1770, - 1767, 1771, 1774, 1769, 1773, 1768, 1775, 1773, 1776, 1777, + 1721, 1719, 1726, 1717, 1722, 1718, 1721, 1724, 1727, 1720, + 1728, 1729, 1731, 1730, 1732, 1733, 1729, 1734, 1728, 1735, + 1737, 1726, 1730, 1732, 1739, 1731, 1737, 1727, 1733, 1736, + 1736, 1734, 1738, 1735, 1740, 1740, 1741, 1739, 1738, 1742, + 1743, 1744, 1744, 1746, 1747, 1745, 1748, 1749, 1752, 1746, + 1753, 1736, 1751, 1751, 1753, 1754, 1741, 1742, 1745, 1743, + 1754, 1755, 1748, 1759, 1756, 1749, 1747, 1757, 1752, 1756, + 1758, 1761, 1757, 1763, 1762, 1764, 1763, 1765, 1767, 1758, + 1769, 1755, 1761, 1762, 1766, 1766, 1759, 1764, 1768, 1770, + 1770, 1771, 1765, 1776, 1772, 1773, 1774, 1767, 1777, 1769, - 1778, 1779, 1780, 1771, 1783, 1778, 1779, 1781, 1782, 1783, - 1785, 1780, 1774, 1784, 1788, 1786, 1776, 1777, 1775, 1781, - 1786, 1787, 1784, 1782, 1789, 1789, 1787, 1786, 1790, 1788, - 1785, 1791, 1793, 1795, 1790, 1784, 1794, 1796, 1797, 1802, - 1797, 1805, 1798, 1799, 1799, 1800, 1800, 1801, 1801, 1795, - 1806, 1793, 1791, 1803, 1803, 1794, 1798, 1796, 1798, 1802, - 1804, 1804, 1805, 1807, 1807, 1808, 1809, 1810, 1812, 1808, - 1810, 1806, 1809, 1813, 1812, 1814, 1815, 1816, 1817, 1817, - 1816, 1814, 1818, 1819, 1820, 1820, 1822, 1823, 1819, 1821, - 1825, 1813, 1823, 1824, 1824, 1825, 1827, 1826, 1828, 1829, + 1768, 1772, 1779, 1778, 1780, 1771, 1786, 1773, 1774, 1778, + 1781, 1786, 1776, 1791, 1779, 1791, 1781, 1793, 1777, 1782, + 1782, 1783, 1780, 1787, 1783, 1784, 1784, 1788, 1789, 1789, + 1790, 1792, 1787, 1788, 1792, 1794, 1795, 1793, 1796, 1797, + 1798, 1799, 1790, 1800, 1797, 1798, 1801, 1802, 1804, 1803, + 1799, 1807, 1802, 1810, 1795, 1800, 1796, 1794, 1803, 1806, + 1805, 1801, 1808, 1808, 1806, 1805, 1807, 1809, 1804, 1812, + 1813, 1803, 1805, 1809, 1810, 1814, 1815, 1816, 1817, 1816, + 1818, 1818, 1819, 1819, 1820, 1820, 1821, 1824, 1812, 1813, + 1825, 1814, 1817, 1835, 1817, 1838, 1815, 1822, 1822, 1823, - 1830, 1815, 1818, 1826, 1821, 1831, 1832, 1822, 1827, 1827, - 1827, 1831, 1842, 1835, 1836, 1827, 1834, 1829, 1828, 1838, - 1830, 1834, 1834, 1837, 1839, 1837, 1832, 1835, 1840, 1836, - 1838, 1841, 1842, 1843, 1840, 1844, 1844, 1845, 1847, 1839, - 1841, 1846, 1846, 1848, 1849, 1849, 1850, 1850, 1851, 1854, - 1854, 1855, 1856, 1858, 1843, 1861, 1859, 1863, 1847, 1864, - 1860, 1856, 1858, 1845, 1866, 1848, 1860, 1867, 1851, 1862, - 1862, 1861, 1865, 1866, 1864, 1869, 1855, 1859, 1863, 1865, - 1868, 1868, 1870, 1872, 1873, 1874, 1876, 1875, 1872, 1877, - 1873, 1877, 1876, 1867, 1875, 1879, 1880, 1883, 1870, 1881, + 1823, 1826, 1826, 1827, 1828, 1832, 1821, 1827, 1824, 1829, + 1828, 1825, 1829, 1831, 1833, 1838, 1834, 1841, 1835, 1831, + 1833, 1834, 1836, 1832, 1839, 1836, 1837, 1837, 1842, 1839, + 1840, 1840, 1841, 1843, 1844, 1845, 1845, 1846, 1843, 1844, + 1847, 1848, 1846, 1849, 1850, 1851, 1847, 1853, 52, 1842, + 1852, 1857, 1855, 1848, 1848, 1848, 1852, 1855, 1855, 1856, + 1848, 1859, 1850, 1849, 1860, 1851, 1857, 1853, 1858, 1861, + 1858, 1862, 1859, 1856, 1863, 1861, 1864, 1865, 1865, 1860, + 1862, 1866, 1867, 1867, 1868, 1872, 1869, 1870, 1870, 1871, + 1871, 1875, 1875, 1876, 1863, 1880, 1881, 1864, 1882, 1884, - 1881, 1869, 1880, 1882, 1884, 1874, 1883, 1885, 1882, 1886, - 1887, 1888, 1889, 1887, 1879, 1890, 1890, 1891, 1894, 1892, - 1893, 1886, 1897, 1891, 1884, 1892, 1885, 1895, 1898, 1888, - 1899, 1895, 1901, 1894, 1902, 1899, 1900, 1900, 1889, 1904, - 1893, 1905, 1897, 1906, 1906, 1905, 1907, 1895, 1908, 1902, - 1898, 1901, 1907, 1909, 1909, 1910, 1911, 1908, 1904, 1910, - 1912, 1912, 1913, 1914, 1916, 1915, 1917, 1911, 1918, 1916, - 1919, 1920, 1911, 1922, 1923, 1921, 1919, 1914, 1922, 1924, - 1924, 1925, 1925, 1913, 1915, 1928, 1917, 1923, 1918, 1920, - 1921, 1926, 1929, 1930, 1928, 1926, 1931, 1931, 1933, 1933, + 1877, 1879, 1881, 1888, 1868, 1872, 1885, 1866, 1869, 1877, + 1879, 1883, 1883, 1890, 1882, 1886, 1880, 1887, 1876, 1891, + 1884, 1885, 1886, 1889, 1889, 1893, 1887, 1894, 1895, 1888, + 1893, 1896, 1900, 1894, 1897, 1891, 1901, 1904, 1896, 1890, + 1897, 1898, 1901, 1898, 1902, 1902, 1904, 1903, 1895, 1905, + 1907, 1900, 1903, 1906, 1908, 1909, 1910, 1908, 1911, 1911, + 1912, 1913, 1907, 1914, 1915, 1918, 1912, 1913, 1922, 1905, + 1916, 1919, 1906, 1909, 1916, 1920, 1921, 1921, 1925, 1915, + 1920, 1923, 1910, 1914, 1926, 1918, 1934, 1922, 1926, 1928, + 1916, 1927, 1927, 1919, 1929, 1928, 1923, 1925, 1930, 1930, - 1934, 1935, 1938, 1929, 1937, 1934, 1934, 1935, 1929, 1939, - 1937, 1940, 1941, 1930, 1939, 1943, 1944, 1945, 1941, 1946, - 1944, 1948, 1951, 1940, 1947, 1949, 1952, 1943, 1938, 1945, - 1947, 1949, 1950, 1950, 1953, 1954, 1956, 1957, 17, 1953, - 1958, 1951, 1964, 1948, 1946, 1958, 1952, 1954, 1956, 1960, - 1961, 1961, 1960, 1962, 1962, 1965, 1957, 1963, 1963, 1966, - 1968, 1965, 1964, 1967, 1969, 1966, 1968, 1971, 1967, 1974, - 1977, 1973, 1971, 1969, 1973, 1975, 1975, 1978, 1979, 1980, - 1980, 1974, 1977, 1979, 1981, 1982, 1983, 1985, 1985, 1978, - 1982, 1983, 1984, 1981, 1986, 1984, 1987, 1988, 1989, 1990, + 1931, 1932, 1935, 1929, 1931, 1933, 1933, 1934, 1936, 1937, + 1938, 1939, 1932, 1940, 1937, 1941, 1935, 1932, 1943, 1940, + 1942, 1944, 1947, 1943, 1945, 1945, 1947, 1936, 1946, 1946, + 1938, 1939, 1949, 1941, 1944, 1942, 1950, 1951, 1952, 1952, + 1955, 1949, 1954, 1954, 1956, 1955, 1955, 1950, 1958, 1959, + 1956, 1960, 1950, 1961, 1958, 1962, 1960, 1951, 1964, 1965, + 1966, 1962, 1968, 1965, 1970, 1961, 1967, 1967, 1969, 1973, + 1964, 1971, 1966, 1974, 1969, 1959, 1975, 1971, 1972, 1972, + 1976, 1975, 1978, 1979, 1980, 1986, 1970, 1968, 1973, 1980, + 1983, 1983, 1976, 1974, 1978, 1982, 1984, 1984, 1982, 1985, - 1993, 1991, 1992, 1990, 1994, 1987, 1991, 1995, 1992, 1996, - 1998, 1998, 1999, 1994, 1986, 1988, 2001, 1989, 1993, 2000, - 2002, 2002, 1998, 1996, 2003, 1995, 2004, 2005, 2000, 2006, - 1999, 2007, 2012, 2003, 2006, 2012, 2001, 2013, 2004, 2010, - 2010, 2014, 2017, 2016, 2007, 2018, 2019, 2023, 2005, 2020, - 2020, 2018, 2021, 2013, 2021, 2023, 2017, 2014, 2016, 2022, - 2022, 2025, 2025, 2019, 2026, 2026, 2028, 2029, 2030, 2031, - 2032, 2033, 2035, 2029, 2030, 2036, 2031, 2034, 2034, 2041, - 2045, 2035, 2037, 2038, 2039, 2040, 2042, 2043, 2046, 2028, - 2047, 2033, 2032, 2043, 2037, 2038, 2036, 2040, 2049, 2039, + 1985, 1987, 1979, 1988, 1990, 1986, 1989, 1987, 1991, 1988, + 1990, 1989, 1995, 1993, 1996, 1995, 1999, 1991, 1993, 1997, + 1997, 2000, 2001, 2002, 2002, 2003, 1996, 2001, 1999, 2006, + 2004, 2005, 2006, 2000, 2003, 2004, 2005, 2007, 2007, 2008, + 2009, 2012, 2010, 2011, 2014, 2012, 2013, 2015, 2016, 2009, + 2014, 2013, 2017, 2018, 2020, 2020, 2021, 2016, 2023, 2008, + 2010, 2027, 2011, 2022, 2025, 2015, 2020, 2018, 2024, 2024, + 2017, 2026, 2022, 2025, 2021, 2028, 2029, 2035, 2023, 2036, + 2028, 2038, 2027, 2026, 2032, 2032, 2039, 2034, 2040, 2029, + 2034, 2041, 2044, 2035, 2040, 2036, 2038, 2042, 2042, 2043, - 2045, 2042, 2047, 2048, 2048, 2041, 2043, 2050, 2052, 2051, - 2053, 2046, 2051, 2052, 2055, 2056, 2049, 2056, 2057, 2055, - 2058, 2059, 2061, 2063, 2064, 2058, 2065, 2050, 2059, 2067, - 2053, 2061, 2066, 2064, 2066, 2071, 2057, 2068, 2065, 2073, - 2070, 2063, 2070, 2068, 2072, 2072, 2074, 2079, 2067, 2071, - 2075, 2074, 2075, 2076, 2077, 2078, 2080, 2082, 2076, 2077, - 2083, 2081, 2080, 2084, 2087, 2073, 2081, 2079, 2084, 2084, - 2082, 2085, 2083, 2078, 2088, 2089, 2089, 2090, 2090, 2085, - 2091, 2092, 2094, 2087, 2093, 2096, 2097, 2094, 2088, 2095, - 2093, 2095, 2098, 2098, 2097, 2091, 2099, 2100, 2100, 2101, + 2039, 2043, 2045, 2045, 2046, 2048, 2048, 2051, 2041, 2052, + 2044, 2053, 2046, 2049, 2049, 2052, 2055, 2053, 2054, 2056, + 2057, 2058, 2058, 2055, 2059, 2060, 2061, 2062, 2063, 2065, + 2051, 2067, 2054, 2059, 2066, 2064, 2069, 2067, 2061, 2062, + 2057, 2056, 2070, 2063, 2073, 2071, 2060, 2064, 2074, 2066, + 2067, 2072, 2072, 2077, 2076, 2065, 2069, 2071, 2075, 2076, + 2081, 2075, 2073, 2087, 2079, 2070, 2082, 2083, 2074, 2079, + 2080, 2082, 2080, 2077, 2083, 2085, 2088, 2089, 2081, 2091, + 2090, 2087, 2090, 2095, 2085, 2088, 2092, 2097, 2094, 2089, + 2094, 2098, 2092, 2096, 2096, 2100, 2098, 2095, 2091, 2099, - 2101, 2092, 2097, 2096, 2102, 2103, 2104, 2106, 2099, 2107, - 2103, 2107, 2108, 2102, 2110, 2109, 2106, 2112, 2111, 2106, - 2109, 2109, 2114, 2115, 2104, 2116, 2110, 2111, 2115, 2112, - 2116, 2118, 2119, 2108, 2114, 2122, 2120, 2121, 2121, 2123, - 2124, 2125, 2128, 2127, 2118, 2120, 2126, 2128, 2132, 2130, - 2131, 2141, 2119, 2122, 2133, 2142, 2124, 2123, 2127, 2133, - 2126, 2130, 2131, 2135, 2134, 2138, 2125, 2140, 2132, 2134, - 2142, 2138, 2135, 2140, 2141, 2143, 2144, 2145, 2146, 2146, - 2147, 2148, 2148, 2149, 2138, 2151, 2145, 2150, 2154, 2147, - 2151, 2150, 2152, 2143, 2155, 2156, 2160, 0, 2157, 2160, + 2100, 2099, 2101, 2102, 2103, 2104, 2106, 2101, 2107, 2105, + 2108, 2104, 2111, 2097, 2105, 2108, 2108, 2109, 2112, 2106, + 2107, 2102, 2113, 2113, 2103, 2109, 2114, 2114, 2115, 2116, + 2117, 2111, 2112, 2118, 2120, 2119, 2117, 2119, 2118, 2121, + 2122, 2122, 2123, 2115, 2124, 2124, 2128, 2121, 2126, 2116, + 2125, 2125, 2120, 2127, 2123, 2121, 2130, 2126, 2127, 2131, + 2132, 2131, 2134, 2136, 2128, 2130, 2133, 2135, 2130, 2143, + 2138, 2133, 2133, 2139, 2134, 2136, 2135, 2142, 2139, 2140, + 2146, 2132, 2138, 2144, 2140, 2145, 2145, 2147, 2148, 2143, + 2142, 2149, 2144, 2150, 2151, 2152, 2154, 2156, 2146, 2155, - 2155, 2144, 2149, 2157, 2157, 2152, 2158, 2154, 2159, 2162, - 2161, 2180, 2158, 2167, 2159, 2165, 2165, 2156, 2161, 2166, - 2166, 2170, 2167, 2168, 2168, 2169, 2169, 2173, 2171, 2162, - 2172, 2180, 2173, 2170, 2166, 2177, 2172, 2174, 2174, 2175, - 2175, 2177, 2176, 2182, 2179, 2166, 2171, 2176, 2179, 2181, - 2184, 2185, 2187, 2181, 2186, 2188, 2185, 2190, 2189, 2191, - 2188, 2192, 2193, 2182, 2194, 2194, 2192, 2187, 2195, 2197, - 2196, 2198, 2195, 2190, 2197, 2184, 2189, 2186, 2199, 2191, - 2200, 2201, 2202, 2204, 2193, 2196, 2203, 2202, 2205, 2205, - 2207, 2208, 2200, 2209, 2210, 2211, 2199, 2198, 2207, 2203, + 2152, 2157, 2165, 2159, 2148, 2147, 2157, 2150, 2154, 2151, + 2158, 2155, 2159, 2162, 2164, 2158, 2149, 2156, 2166, 2162, + 2164, 2167, 2168, 2170, 2170, 2165, 2169, 2171, 2172, 2172, + 2173, 2174, 2162, 2166, 2175, 2169, 2171, 2176, 2175, 2167, + 2177, 2179, 2176, 2180, 2181, 2187, 2182, 2168, 2173, 2180, + 2174, 2182, 2182, 2177, 2185, 2183, 2184, 2185, 2196, 2186, + 2179, 2183, 2184, 2190, 2190, 2187, 2181, 2186, 2191, 2191, + 2192, 2193, 2193, 2194, 2194, 2195, 2196, 2198, 2197, 2192, + 2199, 2199, 2198, 2191, 2197, 2200, 2200, 2195, 2201, 2202, + 2205, 2207, 2204, 2201, 2191, 2202, 2204, 2206, 2209, 2210, - 2201, 2204, 2212, 2213, 2214, 2215, 2220, 2217, 2512, 2221, - 2208, 2222, 2209, 2222, 2219, 2221, 2214, 2210, 2224, 2211, - 2220, 2212, 2217, 2224, 2213, 2226, 2215, 2219, 2223, 2223, - 2225, 2227, 2512, 2225, 2228, 2229, 2229, 2233, 2226, 2230, - 2230, 2231, 2234, 2231, 2236, 2227, 2247, 2228, 2232, 2232, - 2235, 2235, 2233, 2236, 2242, 2234, 2236, 2237, 2237, 2238, - 2238, 2239, 2241, 2243, 2244, 2247, 2239, 2241, 2245, 2245, - 2246, 2246, 2248, 2248, 2242, 2249, 2244, 2250, 2250, 2251, - 2252, 2253, 2253, 2243, 2255, 2252, 2254, 2254, 2256, 2257, - 2258, 2259, 2263, 2249, 2251, 2261, 2265, 2256, 2255, 2266, + 2212, 2206, 2211, 2213, 2210, 2215, 2214, 2216, 2213, 2217, + 2205, 2207, 2218, 2221, 2217, 2212, 2219, 2219, 2220, 2223, + 2224, 2215, 2220, 2209, 2214, 2211, 2222, 2216, 2221, 2225, + 2226, 2222, 2227, 2228, 2218, 2229, 2232, 2227, 2224, 2230, + 2230, 2225, 2233, 2234, 2232, 2223, 2228, 2235, 2236, 2226, + 2237, 2239, 2238, 2229, 2240, 2245, 2243, 2249, 2241, 2247, + 2246, 2233, 2234, 2239, 2241, 2247, 2250, 2250, 2245, 2237, + 2235, 2243, 2236, 2238, 2246, 2240, 2248, 2249, 2248, 2251, + 2252, 2253, 2254, 2252, 2251, 2255, 2256, 2256, 2257, 2257, + 2258, 2260, 2258, 47, 2253, 2261, 2254, 2269, 2255, 2259, - 2261, 2262, 2262, 2270, 2258, 2266, 2257, 2264, 2264, 2267, - 2259, 2263, 2267, 2271, 2265, 2268, 2268, 2269, 2269, 2272, - 2274, 2272, 2270, 2275, 2276, 2276, 2278, 2279, 2271, 2280, - 2281, 2268, 2282, 2282, 2281, 2274, 2283, 2285, 2284, 2286, - 2288, 2288, 2275, 2284, 2280, 2289, 2278, 2291, 2292, 2290, - 2279, 2293, 2285, 2294, 2286, 2283, 2290, 2295, 2295, 2296, - 2297, 2291, 2297, 2301, 2298, 2289, 2292, 2298, 2296, 2293, - 2300, 2304, 2302, 2303, 2305, 2301, 2300, 2302, 2303, 2294, - 2306, 2307, 2298, 2308, 2298, 2310, 2307, 2305, 2311, 2312, - 2310, 2313, 2314, 2311, 2315, 2316, 2304, 2313, 2314, 2317, + 2259, 2262, 2262, 2263, 2264, 2264, 2260, 2270, 2261, 2265, + 2265, 2266, 2263, 2268, 2271, 2263, 2266, 2269, 2268, 2272, + 2272, 2273, 2273, 2274, 2275, 2275, 2271, 2270, 2276, 2277, + 2277, 2279, 2278, 2280, 2280, 2282, 2279, 2281, 2281, 2283, + 2284, 2285, 2274, 2286, 2290, 2288, 2276, 2278, 2283, 2282, + 2288, 2289, 2289, 2291, 2291, 2285, 2292, 2284, 2293, 2295, + 2295, 2297, 2286, 2290, 2293, 2294, 2296, 2296, 2294, 2298, + 2299, 2301, 2299, 2302, 2292, 2295, 2303, 2303, 2305, 2306, + 2297, 2307, 2310, 2308, 2298, 2311, 2301, 2308, 2309, 2309, + 2311, 2312, 2302, 2313, 2315, 2315, 2307, 2316, 2305, 2318, - 2320, 2306, 2318, 2319, 2312, 2317, 2321, 2318, 2319, 2308, - 2316, 2322, 2323, 2324, 2322, 2315, 2327, 2325, 2326, 2321, - 2330, 2323, 2324, 2328, 2330, 2320, 2325, 2326, 2329, 2328, - 2327, 2332, 2334, 2336, 2329, 2335, 2335, 2337, 2337, 2336, - 2338, 2334, 2339, 2339, 2341, 2340, 2337, 2343, 2347, 2338, - 2340, 2332, 2344, 2345, 2345, 2346, 2350, 2347, 2351, 2349, - 2355, 2356, 2352, 2343, 2341, 2355, 2341, 2357, 2344, 2499, - 2346, 2349, 2350, 2351, 2352, 2354, 2358, 2358, 2354, 2357, - 2499, 2356, 2359, 2359, 2361, 2361, 2362, 2363, 2364, 2362, - 2365, 2366, 2363, 2368, 2364, 2371, 2365, 2367, 2367, 2370, + 2317, 2310, 2306, 2319, 2320, 2321, 2312, 2317, 2313, 2322, + 2322, 2323, 2324, 2318, 2324, 2325, 2328, 2316, 2325, 2327, + 2323, 2319, 2320, 2331, 2329, 2327, 2332, 2330, 2328, 2329, + 2333, 2321, 2330, 2325, 2335, 2325, 2334, 2337, 2338, 2332, + 2339, 2334, 2337, 2338, 2340, 2342, 2341, 2343, 2331, 2345, + 2340, 2333, 2341, 2344, 2345, 2339, 2346, 2347, 2348, 2344, + 2335, 2346, 2343, 2350, 2349, 2351, 2342, 2349, 2352, 2353, + 2354, 2348, 2350, 2355, 2351, 2356, 2357, 2352, 2353, 2355, + 2357, 2356, 2347, 2359, 2354, 2361, 2362, 2363, 2363, 2366, + 2364, 2365, 2365, 2367, 2367, 2362, 2364, 2368, 2366, 2369, - 2366, 2369, 2369, 2372, 2373, 2373, 2374, 2368, 2376, 2371, - 2375, 2370, 2374, 2376, 2378, 2384, 2379, 2382, 2378, 2379, - 2380, 2380, 2372, 2381, 2375, 2383, 2382, 2385, 2381, 2386, - 2386, 2385, 2387, 2389, 2383, 2384, 2390, 2391, 2389, 2392, - 2393, 2394, 2395, 2396, 2393, 2387, 2397, 2395, 2398, 2396, - 2399, 2400, 2397, 2392, 2401, 2402, 2390, 2391, 2405, 2401, - 2404, 2394, 2406, 2414, 2414, 2407, 2398, 2406, 2413, 2399, - 2400, 2407, 2404, 2408, 2405, 2409, 2402, 2409, 2411, 2416, - 2415, 2408, 2413, 2415, 2417, 2417, 2420, 2411, 2421, 2422, - 2420, 2423, 2423, 2424, 2421, 2427, 2427, 2429, 2431, 2435, + 2365, 2371, 2368, 2359, 2372, 2361, 2373, 2373, 2374, 2375, + 2377, 2378, 2380, 2379, 2384, 2386, 2386, 2371, 2375, 2369, + 2372, 2369, 2377, 2374, 2380, 2383, 2382, 2378, 2379, 2382, + 2383, 2385, 2387, 2387, 2384, 2389, 2389, 2390, 2396, 2391, + 2390, 2392, 2393, 2385, 2391, 2394, 2398, 2392, 2393, 2395, + 2395, 2399, 2396, 2400, 2394, 2397, 2397, 2402, 2398, 2401, + 2401, 2403, 2404, 2402, 2406, 2399, 2407, 2404, 2406, 2407, + 2408, 2408, 2400, 2409, 2410, 2403, 2411, 2412, 2409, 2415, + 2413, 2414, 2414, 2410, 2413, 2411, 2417, 2418, 2419, 2420, + 2421, 2417, 2415, 2422, 2421, 2423, 2424, 2412, 2425, 2427, - 2432, 2422, 2424, 2436, 2435, 2416, 2437, 2446, 2438, 2439, - 2440, 2440, 2431, 2438, 2439, 2429, 2432, 2442, 2442, 2444, - 2445, 2445, 2447, 2446, 2450, 2444, 2448, 2437, 2452, 2436, - 2451, 2448, 2456, 2451, 2453, 2454, 2454, 2458, 2459, 2457, - 2452, 2456, 2463, 2450, 2447, 2457, 2453, 2461, 2461, 2462, - 2464, 2469, 2462, 2459, 2470, 2458, 2466, 2466, 2467, 2467, - 2468, 2463, 2471, 2470, 2472, 2468, 2472, 2471, 2464, 2469, - 2473, 2474, 2476, 2477, 2475, 2478, 2479, 2476, 2480, 2480, - 2484, 2479, 2481, 2481, 2473, 2474, 2475, 2482, 2482, 2483, - 2483, 2485, 2484, 2477, 2486, 2478, 2487, 2487, 2489, 2486, + 2423, 2428, 2424, 2420, 2425, 2426, 2426, 2418, 2419, 2429, + 2430, 2431, 2434, 2422, 2435, 2430, 2436, 2427, 2432, 2432, + 2428, 2436, 2441, 2437, 2434, 2438, 2443, 2446, 2429, 2437, + 2435, 2441, 2431, 2438, 2439, 2452, 2439, 2444, 2444, 2445, + 2443, 2450, 2445, 2447, 2447, 2450, 2451, 2452, 2453, 2453, + 2454, 2459, 2451, 2446, 2457, 2457, 2461, 2462, 2465, 2454, + 2466, 2467, 2468, 2465, 2470, 2470, 2469, 2468, 2476, 2459, + 2461, 2469, 2474, 2462, 2472, 2472, 2475, 2475, 2474, 2477, + 2478, 2480, 2467, 2482, 2476, 2478, 2466, 2481, 2484, 2484, + 2481, 2483, 2487, 2486, 2488, 2482, 2489, 2493, 2487, 2494, - 2488, 2488, 2490, 2491, 2492, 2493, 2496, 2494, 2500, 2485, - 2489, 2495, 2495, 2497, 2497, 2491, 2498, 2498, 2502, 2503, - 2500, 2501, 2490, 2494, 2492, 2496, 2493, 2504, 2501, 2505, - 2502, 2506, 2504, 2507, 2507, 2508, 2509, 2510, 2513, 2503, - 2511, 2514, 2516, 2515, 2508, 2515, 2517, 2517, 2522, 2505, - 2518, 2506, 2513, 2511, 2516, 2519, 2520, 2510, 2523, 2518, - 2524, 2525, 2509, 2514, 2525, 2526, 2522, 2527, 2528, 0, - 2519, 2520, 2527, 2528, 2529, 2529, 2530, 2530, 2536, 2526, - 2523, 2531, 2531, 2524, 2533, 2533, 2535, 2535, 2537, 2538, - 2539, 2541, 2542, 2543, 2544, 2545, 2536, 2546, 2547, 2537, + 2480, 2477, 2486, 2483, 2491, 2491, 2492, 2496, 2496, 2492, + 2498, 2489, 2488, 2497, 2497, 2498, 2493, 2494, 2499, 2500, + 2501, 2502, 2505, 2502, 2503, 2501, 2504, 2506, 2500, 2507, + 2508, 2546, 2506, 2546, 2505, 18, 2499, 2509, 2503, 2515, + 2504, 2514, 2509, 2510, 2510, 2511, 2511, 2512, 2512, 2507, + 2508, 2513, 2513, 2514, 2516, 2517, 2517, 2515, 2519, 2516, + 2518, 2518, 2520, 2521, 2522, 2523, 2526, 2524, 2525, 2525, + 2519, 2527, 2527, 2528, 2528, 2521, 2529, 2530, 2532, 2533, + 2535, 2531, 2520, 2524, 2522, 2526, 2523, 2529, 2531, 2530, + 2532, 2534, 2536, 2537, 2537, 2538, 2534, 2539, 2539, 2533, - 2547, 2548, 2549, 2555, 2545, 2539, 2550, 2556, 2538, 2554, - 2542, 2541, 2551, 2551, 2544, 2543, 2556, 2546, 2553, 2553, - 2549, 2548, 2559, 2554, 2550, 2555, 2557, 2557, 2560, 2560, - 2561, 2559, 2562, 2563, 2564, 2565, 2566, 2568, 2571, 2567, - 2563, 2569, 2569, 2570, 2570, 2572, 2573, 2577, 2561, 2564, - 2562, 2576, 2573, 2565, 2566, 2567, 2568, 2576, 2571, 2574, - 2574, 2575, 2575, 2572, 2578, 2577, 2579, 2580, 2581, 2582, - 2583, 2584, 2585, 2581, 2585, 2590, 2584, 2586, 2586, 2578, - 2587, 2580, 2587, 2588, 2588, 2579, 2592, 2593, 2594, 2582, - 2583, 2595, 2596, 2597, 2590, 2592, 2598, 2596, 2597, 2599, + 2535, 2540, 2541, 2542, 2538, 2543, 2544, 2547, 2545, 2548, + 2548, 2550, 2536, 2551, 2549, 2553, 2542, 2554, 2555, 2547, + 2544, 2556, 2541, 2549, 2556, 2576, 2550, 2540, 2551, 2543, + 2545, 2557, 2558, 2553, 2576, 2559, 2567, 2558, 2569, 2554, + 2559, 2555, 2560, 2560, 2568, 2557, 2561, 2561, 2562, 2562, + 2564, 2564, 2566, 2566, 2567, 2568, 2570, 2569, 2572, 2573, + 2574, 2575, 2578, 2577, 2578, 2579, 2580, 2586, 2581, 2582, + 2582, 2570, 2584, 2584, 2585, 2588, 2588, 2573, 2572, 2591, + 2591, 2575, 2574, 2577, 2580, 2579, 2581, 2587, 2585, 2586, + 2590, 2592, 2593, 2594, 2603, 2596, 2587, 2595, 2597, 2590, - 2594, 2602, 2603, 2604, 2604, 2603, 2593, 2605, 2606, 2607, - 2607, 2595, 2608, 2609, 2612, 2610, 2598, 2617, 2599, 2610, - 2613, 2602, 2605, 2608, 2613, 2615, 2606, 2618, 2609, 2612, - 2614, 2614, 2617, 2619, 2620, 2620, 2622, 2623, 2615, 2624, - 2625, 2625, 2626, 2624, 2627, 2627, 2623, 2618, 2622, 2628, - 2629, 2630, 2631, 2619, 2628, 2632, 2633, 2633, 2639, 2629, - 2641, 2626, 2638, 2638, 2631, 2640, 2640, 2630, 2642, 2643, - 2644, 2646, 2646, 2641, 2645, 2632, 2647, 2648, 2643, 2644, - 2639, 2642, 2653, 2645, 2650, 2650, 2654, 2653, 2655, 2656, - 2657, 2654, 2648, 2658, 2656, 2659, 2647, 2660, 2657, 2662, + 2594, 2598, 2599, 17, 2600, 2601, 2601, 2602, 2602, 2592, + 2593, 2600, 2595, 2596, 2603, 2604, 2597, 2598, 2605, 2607, + 2607, 2599, 2608, 2608, 2605, 2609, 2610, 2611, 2612, 2613, + 2614, 2609, 2615, 2604, 2616, 2614, 2617, 2618, 2620, 2618, + 2620, 2617, 2611, 2613, 2610, 2619, 2619, 2612, 2621, 2621, + 2623, 2625, 2615, 2626, 2616, 2627, 2628, 2629, 2630, 2631, + 2625, 2632, 2629, 2630, 2635, 2636, 2638, 2627, 2636, 2623, + 2637, 2637, 2626, 2639, 2640, 2640, 2628, 2641, 2642, 2631, + 2632, 2638, 2643, 2645, 2635, 2646, 2643, 2648, 2641, 2646, + 2650, 2639, 2651, 2642, 2647, 2647, 2652, 2655, 2645, 2656, - 2665, 2663, 2655, 2664, 2659, 2660, 2663, 2669, 2664, 2666, - 2666, 2673, 2658, 2668, 2662, 2665, 2667, 2667, 2668, 2670, - 2670, 2671, 2672, 2674, 2675, 2678, 2669, 2672, 2671, 2673, - 2675, 2676, 2677, 2677, 2679, 2684, 2676, 2680, 2680, 2679, - 2678, 2674, 2681, 2681, 2685, 2685, 2686, 2687, 2684, 2686, - 2688, 2689, 2687, 2687, 2690, 2688, 2689, 2691, 2692, 2693, - 2694, 2695, 2692, 2691, 2693, 2696, 2697, 2701, 2690, 2694, - 2700, 2698, 2699, 2696, 2703, 2700, 2695, 2698, 2699, 2701, - 2704, 2703, 2707, 2705, 2709, 2704, 2705, 2697, 2710, 2709, - 2711, 2712, 2713, 2710, 2707, 2719, 2714, 2715, 2715, 2724, + 2648, 2653, 2653, 2657, 2659, 2650, 2663, 2657, 2656, 2655, + 2658, 2658, 2651, 2660, 2660, 2661, 2652, 2662, 2664, 2665, + 2661, 2672, 2663, 2659, 2666, 2666, 2662, 2671, 2671, 2674, + 2664, 2673, 2673, 2675, 2680, 2676, 2677, 2681, 2678, 2665, + 2679, 2679, 2674, 2672, 2676, 2677, 2675, 2678, 2683, 2683, + 2686, 2687, 2681, 2688, 2680, 2686, 2687, 2689, 2690, 2691, + 2692, 2695, 2689, 2693, 2699, 2697, 2690, 2688, 2698, 2692, + 2697, 2693, 2702, 2698, 2700, 2700, 2695, 2702, 2691, 2699, + 2701, 2701, 2703, 2704, 2704, 2705, 2706, 2707, 2708, 2709, + 0, 2706, 2705, 2710, 2712, 2709, 2711, 2711, 2710, 2713, - 2716, 2713, 2725, 0, 2712, 2714, 2720, 2726, 2711, 2716, - 2721, 2729, 2720, 2719, 2727, 2727, 2721, 2728, 2724, 2730, - 2731, 2733, 2725, 2735, 2728, 2737, 2726, 2740, 2730, 2738, - 2729, 2732, 2732, 2738, 0, 2731, 2739, 2739, 2735, 2743, - 2733, 2741, 2742, 2744, 0, 2737, 2746, 2741, 2742, 2744, - 2745, 2745, 2740, 2747, 2746, 2749, 2750, 2743, 2747, 2752, - 2753, 2755, 2754, 2753, 2749, 2752, 2754, 2756, 2759, 2750, - 2758, 2758, 2760, 2760, 2769, 2755, 2761, 2761, 2763, 2763, - 2764, 2771, 2756, 2765, 2764, 2775, 2759, 2770, 2765, 2767, - 2767, 2772, 2770, 2771, 2769, 2773, 2772, 2772, 2776, 2776, + 2718, 2703, 2714, 2714, 2713, 2707, 2708, 2715, 2715, 2712, + 2719, 2719, 2720, 2718, 2721, 2720, 2722, 2723, 2724, 2721, + 2721, 2722, 2723, 2725, 2726, 2727, 2728, 2729, 2726, 2725, + 2727, 2730, 2724, 2731, 2732, 2728, 2734, 2733, 2735, 2730, + 2732, 2734, 2729, 2733, 2737, 2739, 2741, 2738, 2739, 2745, + 2735, 2737, 2738, 2746, 2731, 2743, 2744, 2759, 2741, 2747, + 2743, 2744, 2748, 2749, 2749, 2750, 2746, 2745, 2747, 2754, + 2751, 2748, 2755, 2756, 2750, 2751, 2759, 2760, 2755, 2756, + 2761, 2762, 2762, 2763, 2764, 2765, 2766, 2754, 2767, 2767, + 2763, 2768, 2770, 2772, 2765, 2775, 2773, 2760, 2778, 2761, - 2778, 2778, 2779, 2779, 2781, 2775, 2780, 2773, 2782, 2780, - 2784, 2784, 2785, 2787, 2788, 2788, 2791, 2781, 2789, 2789, - 2794, 2782, 2790, 2790, 2792, 2792, 2793, 2795, 2796, 2805, - 2785, 2791, 2810, 2787, 2796, 2797, 2797, 2801, 2794, 2793, - 2798, 2795, 2802, 2801, 2798, 2804, 2806, 2802, 2807, 2808, - 2804, 2804, 2805, 2809, 2811, 2808, 2817, 2810, 2811, 2809, - 2812, 2812, 2815, 2820, 2817, 2823, 2806, 2815, 2807, 2818, - 2821, 2824, 2818, 2821, 2822, 2822, 2824, 2825, 2826, 2827, - 2828, 2828, 2823, 2823, 2832, 2829, 2830, 2831, 2820, 2830, - 2837, 2837, 2833, 2827, 2836, 2825, 2845, 2830, 2826, 2829, + 2773, 2766, 2776, 2764, 2774, 2774, 2777, 2770, 2776, 2779, + 2768, 2781, 2777, 2772, 2784, 2779, 2778, 2780, 2780, 2781, + 2775, 2782, 2785, 2784, 2787, 2788, 2782, 2789, 2788, 2790, + 2787, 2789, 2791, 2793, 2793, 2785, 2794, 2795, 2795, 2796, + 2796, 2798, 2798, 2790, 2799, 2800, 2804, 2791, 2799, 2806, + 2800, 2802, 2802, 2805, 2794, 2808, 2810, 2807, 2805, 2811, + 2811, 2806, 2807, 2807, 2813, 2813, 2804, 2808, 2814, 2814, + 2815, 2816, 2817, 2815, 2819, 2819, 2810, 2820, 2822, 2823, + 2823, 2824, 2824, 2828, 2816, 2817, 2825, 2825, 2826, 2827, + 2827, 2829, 2830, 2831, 2840, 2820, 2828, 2837, 2822, 2831, - 2833, 2831, 2834, 2832, 2835, 2838, 2838, 2834, 2834, 2835, - 2835, 2839, 2839, 2836, 2840, 2840, 2841, 2841, 2842, 2843, - 2844, 2846, 2845, 2847, 2843, 2848, 2846, 2849, 2850, 2851, - 2848, 2853, 2853, 2856, 2842, 2871, 2849, 2854, 2854, 2871, - 2844, 2855, 2847, 2859, 2855, 2858, 2858, 2869, 2850, 2851, - 2859, 2856, 2860, 2860, 2861, 2863, 2863, 2864, 2865, 2861, - 2866, 2867, 2870, 2870, 2872, 2869, 2864, 2865, 2873, 2866, - 2867, 2874, 2876, 2872, 2875, 2877, 2878, 2876, 2876, 2879, - 2887, 2883, 2874, 2879, 2888, 2878, 2883, 2873, 2877, 2875, - 2884, 2884, 2886, 2886, 2887, 2889, 2891, 2891, 2892, 2893, + 2832, 2832, 2837, 2826, 2833, 2836, 2830, 2839, 2833, 2829, + 2841, 2836, 2839, 2839, 2842, 2843, 2844, 2840, 2845, 2846, + 2852, 2843, 2844, 2846, 2847, 2847, 2850, 2855, 2852, 2853, + 2841, 2850, 2853, 2856, 2842, 2859, 2856, 2857, 2857, 2858, + 2859, 2860, 2861, 2845, 2862, 2863, 2863, 2864, 2867, 2869, + 2866, 2871, 2855, 2911, 2869, 2869, 2858, 2858, 2862, 2860, + 2865, 2864, 2861, 2865, 2866, 2868, 2880, 2867, 2911, 2870, + 2871, 2865, 2877, 2868, 2870, 2870, 2872, 2872, 2873, 2873, + 2874, 2874, 2875, 2875, 2876, 2876, 2878, 2879, 2877, 2881, + 2882, 2878, 2880, 2883, 2884, 2882, 2885, 2886, 2887, 2884, - 2896, 2897, 2900, 2898, 2901, 2903, 2897, 2892, 2905, 2888, - 2901, 2893, 2898, 2889, 2907, 2908, 2912, 2903, 2910, 2907, - 2908, 2912, 2900, 2909, 2909, 2896, 2913, 2910, 2914, 2905, - 2915, 2915, 2917, 2917, 2915, 2918, 2918, 2919, 2919, 2913, - 2920, 2921, 2914, 2922, 0, 2923, 2925, 2929, 2926, 2920, - 2923, 2927, 2925, 2926, 2928, 2928, 2927, 2930, 2931, 2932, - 2933, 2921, 2922, 2935, 2932, 2929, 2934, 2936, 2936, 2930, - 2938, 2939, 2934, 2942, 2938, 2940, 2939, 2946, 2933, 2931, - 2940, 2941, 2941, 2943, 2944, 2948, 2948, 2950, 2935, 2951, - 2952, 2954, 2942, 2955, 2952, 2953, 2960, 2946, 2943, 2944, + 2889, 2889, 2892, 2881, 2895, 2885, 0, 2879, 2890, 2890, + 2891, 2895, 2883, 2891, 2894, 2894, 2905, 2886, 2887, 2897, + 2892, 2896, 2896, 2900, 2897, 2899, 2899, 2901, 2902, 2903, + 2906, 2906, 2900, 2908, 2905, 2907, 2901, 2902, 2903, 2907, + 2909, 2910, 2908, 2912, 2913, 2914, 2915, 2924, 2912, 2912, + 2915, 2919, 2910, 2923, 2914, 2925, 2919, 2913, 2929, 2909, + 2920, 2920, 2922, 2922, 2927, 2927, 2928, 2923, 2932, 2933, + 2929, 2934, 2924, 2925, 2933, 2928, 2936, 2937, 2939, 2941, + 2934, 2943, 2944, 2937, 2945, 2945, 2943, 2944, 2946, 2948, + 2939, 2949, 2950, 2932, 2948, 2957, 2936, 2946, 2951, 2951, - 2950, 2956, 2951, 2957, 2953, 2958, 2958, 2954, 2957, 2956, - 2959, 2961, 2955, 2963, 2960, 2962, 2962, 2966, 2966, 2959, - 2967, 2967, 2969, 2971, 2971, 2973, 2974, 2980, 2975, 2976, - 2977, 2981, 2963, 2975, 2983, 2977, 2984, 2961, 2979, 2979, - 2981, 2973, 2974, 2969, 2982, 2976, 2987, 2980, 2986, 2986, - 2982, 2988, 2989, 2989, 2992, 2984, 2993, 2983, 2994, 2996, - 2987, 2999, 2993, 2994, 2997, 2997, 2998, 2998, 3000, 3002, - 2988, 3001, 3001, 3003, 2992, 3004, 2999, 3005, 3006, 3008, - 3002, 2996, 3003, 3005, 3007, 3009, 3009, 3010, 3000, 3011, - 3012, 3001, 3011, 3012, 3017, 3004, 3007, 3006, 3018, 3008, + 2941, 2958, 2951, 0, 2949, 2956, 2950, 2953, 2953, 2954, + 2954, 2955, 2955, 2959, 2956, 2957, 2961, 2965, 2959, 2962, + 2958, 2963, 2961, 2967, 2962, 2966, 2963, 2964, 2964, 2968, + 2969, 2971, 2970, 2978, 2968, 2965, 0, 2966, 2970, 2972, + 2972, 2974, 2975, 2979, 2967, 2974, 2976, 2975, 2969, 2977, + 2977, 2976, 2978, 2980, 2982, 2989, 2971, 2986, 2979, 2984, + 2984, 2988, 2987, 2990, 2989, 2988, 2991, 2993, 2980, 2992, + 2986, 2994, 2993, 2996, 2982, 2987, 2997, 2992, 2998, 2990, + 2995, 2995, 2996, 2999, 2999, 2991, 3000, 3003, 3003, 3004, + 3004, 2994, 3006, 3010, 2997, 3008, 3008, 3012, 3011, 3013, - 3013, 3013, 3010, 3019, 3020, 3020, 3017, 3021, 3022, 3019, - 3021, 3023, 3025, 3028, 3022, 3026, 3026, 3025, 3018, 3027, - 3029, 3030, 3031, 3031, 3027, 3033, 3029, 3034, 3035, 3023, - 3036, 3038, 3028, 3037, 3037, 3039, 0, 3033, 3030, 3030, - 3040, 3042, 3042, 3036, 3045, 3034, 3043, 3043, 3051, 3040, - 3038, 3039, 3044, 3035, 3046, 3047, 3047, 3044, 3045, 3046, - 3048, 3048, 3049, 3049, 3050, 3052, 3058, 3053, 3055, 3055, - 3060, 3052, 3053, 3061, 3051, 3062, 3063, 3050, 3064, 3064, - 3066, 3066, 3067, 3068, 3070, 3058, 3069, 3071, 3072, 3072, - 3073, 3073, 3060, 3075, 3062, 3061, 3071, 3076, 3063, 3075, + 3017, 3014, 3012, 3018, 2998, 3000, 3014, 3016, 3016, 3010, + 3019, 3020, 3018, 3006, 3011, 3013, 3019, 3021, 3023, 3023, + 3017, 3024, 3025, 3026, 3026, 3029, 3030, 3033, 3031, 3034, + 3034, 3036, 3030, 3031, 3020, 3024, 3021, 3035, 3035, 3037, + 3039, 3025, 3038, 3038, 3040, 3029, 3036, 3041, 3042, 3033, + 3043, 3039, 3044, 3040, 3042, 3045, 3046, 3046, 3047, 3037, + 3048, 3055, 3038, 3048, 3044, 3049, 3054, 3041, 3049, 3043, + 3050, 3050, 3060, 3047, 3056, 3045, 3057, 3057, 3054, 3058, + 3056, 3055, 3058, 3059, 3063, 3063, 3062, 3064, 3065, 3059, + 3060, 3062, 3064, 3066, 3067, 3068, 3068, 3070, 3071, 3066, - 3069, 3077, 3068, 3081, 3070, 3078, 3082, 3082, 3067, 3085, - 3078, 3084, 3084, 3086, 3085, 3087, 3088, 3076, 3089, 3095, - 3077, 3087, 3090, 3090, 3081, 3091, 3089, 3086, 3088, 3093, - 3091, 3094, 3096, 3093, 3098, 3097, 3094, 3099, 3102, 3095, - 3097, 3101, 3103, 3099, 3104, 3106, 3098, 3113, 0, 3101, - 3107, 3108, 3096, 3109, 3110, 3112, 3115, 3102, 3117, 3110, - 3112, 3115, 3103, 3106, 3104, 3114, 3107, 3113, 3108, 3108, - 3118, 3114, 3119, 3118, 3109, 3122, 3122, 3124, 3117, 3123, - 3123, 3124, 3128, 3128, 3129, 3119, 3130, 3131, 3131, 3129, - 3133, 3133, 3134, 3134, 3138, 3134, 3135, 3135, 3138, 3135, + 3072, 3073, 3074, 3074, 3075, 3076, 3077, 3065, 3081, 3070, + 3082, 3067, 3067, 3081, 3073, 3077, 3071, 3079, 3079, 3080, + 3080, 3076, 3083, 3075, 3082, 3072, 3088, 3083, 3084, 3084, + 3085, 3085, 3086, 3086, 3087, 3087, 3089, 3090, 3096, 3088, + 3091, 3093, 3093, 3090, 3098, 3091, 3099, 3101, 3100, 3102, + 3102, 3104, 3104, 3105, 3106, 3108, 3107, 3096, 3110, 3110, + 3111, 3111, 3089, 3109, 3114, 3113, 3098, 3100, 3099, 3101, + 3107, 3113, 3109, 3106, 3115, 3108, 3116, 3119, 3126, 3105, + 3124, 3116, 3120, 3120, 3114, 3122, 3122, 3123, 3127, 3125, + 3126, 3133, 3123, 3115, 3124, 3125, 3127, 3129, 3119, 3128, - 3136, 3136, 3140, 3137, 3137, 3130, 3137, 3140, 3141, 3142, - 3142, 3143, 3144, 3147, 3148, 3149, 3151, 3141, 3150, 3150, - 3149, 3154, 3157, 3155, 3156, 3158, 3144, 3160, 3156, 3143, - 3155, 3157, 3161, 3147, 3148, 3163, 3151, 3161, 3162, 3162, - 3158, 3164, 3164, 3167, 3163, 3160, 3154, 3165, 3165, 3166, - 3166, 3168, 3169, 3172, 3170, 3173, 3168, 3171, 3167, 3170, - 3170, 3169, 3174, 3171, 3169, 3177, 3175, 3176, 3178, 3178, - 3173, 3175, 3176, 3179, 3180, 3181, 3181, 3183, 3172, 3179, - 3180, 3182, 3182, 3174, 3177, 3184, 3187, 3187, 3189, 3189, - 3184, 3190, 3183, 3193, 3193, 3194, 3194, 3195, 3195, 3202, + 3128, 3131, 3129, 3132, 3134, 3131, 3136, 3135, 3132, 3137, + 3140, 3133, 3135, 3139, 3141, 3137, 3142, 3144, 3136, 3151, + 0, 3139, 3145, 3146, 3134, 3147, 3148, 3150, 3153, 3140, + 3155, 3148, 3150, 3153, 3141, 3144, 3142, 3152, 3145, 3151, + 3146, 3146, 3156, 3152, 3157, 3156, 3147, 3160, 3160, 3162, + 3155, 3161, 3161, 3162, 3167, 3167, 3168, 3157, 3169, 3170, + 3170, 3168, 3172, 3172, 3173, 3173, 3177, 3173, 3174, 3174, + 3177, 3174, 3175, 3175, 3179, 3176, 3176, 3169, 3176, 3179, + 3180, 3181, 3181, 3182, 3183, 3186, 3187, 3188, 3190, 3180, + 3189, 3189, 3188, 3193, 3196, 3194, 3195, 3197, 3183, 3199, - 3190, 3196, 3196, 3198, 3198, 3199, 3199, 3200, 3200, 3201, - 3201, 3204, 3205, 3205, 3206, 3207, 3208, 3210, 3210, 3211, - 3204, 3212, 3212, 3206, 3213, 3202, 3225, 3207, 3214, 3219, - 3215, 3216, 3216, 3217, 3217, 3223, 3208, 3224, 3211, 3213, - 3224, 3214, 3215, 3227, 3219, 3220, 3220, 3226, 3226, 3230, - 3231, 3229, 3225, 3223, 3229, 3230, 3233, 3232, 3234, 3237, - 3238, 3227, 3232, 3235, 3231, 3237, 3241, 3242, 3245, 3238, - 3241, 3255, 3254, 3257, 3255, 3233, 3234, 3254, 3263, 3235, - 3258, 3258, 3242, 3259, 3259, 3266, 3257, 3261, 3261, 3264, - 3268, 3265, 3270, 3277, 3245, 3265, 3271, 3272, 3264, 3274, + 3195, 3182, 3194, 3196, 3200, 3186, 3187, 3202, 3190, 3200, + 3201, 3201, 3197, 3203, 3203, 3206, 3202, 3199, 3193, 3204, + 3204, 3205, 3205, 3207, 3208, 3211, 3209, 3212, 3207, 3210, + 3206, 3209, 3209, 3208, 3213, 3210, 3208, 3216, 3214, 3215, + 3217, 3217, 3212, 3214, 3215, 3218, 3219, 3220, 3220, 3222, + 3211, 3218, 3219, 3221, 3221, 3213, 3216, 3223, 3226, 3226, + 3228, 3228, 3223, 3229, 3222, 3232, 3232, 3233, 3233, 3234, + 3234, 3241, 3229, 3235, 3235, 3237, 3237, 3238, 3238, 3239, + 3239, 3240, 3240, 3243, 3244, 3244, 3245, 3246, 3247, 3249, + 3249, 3250, 3243, 3251, 3251, 3245, 3252, 3241, 3264, 3246, - 3276, 3263, 3272, 3278, 3268, 3266, 3273, 3271, 3273, 3275, - 3275, 3279, 3277, 3276, 3274, 3270, 3280, 3281, 3283, 3282, - 3284, 3278, 3285, 3293, 3286, 3284, 3288, 3279, 3282, 3286, - 3283, 3289, 3281, 3287, 3287, 3294, 3289, 3293, 3295, 3295, - 3296, 3280, 3301, 3285, 3297, 3297, 3288, 3298, 3298, 3296, - 3299, 3299, 3300, 3300, 3302, 3294, 3303, 3304, 3305, 3303, - 3306, 3301, 3304, 3305, 3307, 3308, 3309, 3311, 3313, 3310, - 3318, 3308, 3311, 3323, 3302, 3312, 3312, 3314, 3314, 3307, - 3309, 3310, 3316, 3316, 3317, 3306, 3319, 3319, 3313, 3318, - 3321, 3323, 3326, 3326, 3327, 3327, 3328, 3329, 3332, 3317, + 3253, 3258, 3254, 3255, 3255, 3256, 3256, 3262, 3247, 3263, + 3250, 3252, 3263, 3253, 3254, 3266, 3258, 3259, 3259, 3265, + 3265, 3269, 3270, 3268, 3264, 3262, 3268, 3269, 3272, 3271, + 3273, 3276, 3277, 3266, 3271, 3274, 3270, 3276, 3280, 3281, + 3284, 3277, 3280, 3294, 3293, 3296, 3294, 3272, 3273, 3293, + 3302, 3274, 3297, 3297, 3281, 3298, 3298, 3305, 3296, 3300, + 3300, 3303, 3307, 3304, 3309, 3316, 3284, 3304, 3310, 3311, + 3303, 3313, 3315, 3302, 3311, 3317, 3307, 3305, 3312, 3310, + 3312, 3314, 3314, 3318, 3316, 3315, 3313, 3309, 3319, 3320, + 3322, 3321, 3323, 3317, 3324, 3332, 3325, 3323, 3327, 3318, - 3330, 3331, 3333, 3334, 3328, 3321, 3330, 3331, 3335, 3336, - 3336, 3341, 3332, 3335, 3342, 3333, 3329, 3338, 3338, 3344, - 3345, 3347, 3334, 3348, 3345, 3349, 3350, 3351, 3348, 3352, - 3353, 3354, 3341, 3344, 3342, 3353, 3354, 3355, 3355, 3350, - 3351, 3347, 3358, 3359, 3349, 3360, 3361, 3361, 3352, 3362, - 3363, 3364, 3364, 3365, 3362, 3366, 3363, 3368, 3365, 3369, - 3366, 3359, 3358, 3367, 3360, 3369, 3371, 3371, 3367, 3372, - 3373, 3373, 3376, 3375, 3372, 3377, 3368, 3375, 3378, 3379, - 3380, 3381, 3377, 3382, 3384, 3384, 3380, 3386, 3386, 3388, - 3387, 3376, 3389, 3390, 3388, 3391, 3382, 3378, 3379, 3387, + 3321, 3325, 3322, 3328, 3320, 3326, 3326, 3333, 3328, 3332, + 3334, 3334, 3335, 3319, 3340, 3324, 3336, 3336, 3327, 3337, + 3337, 3335, 3338, 3338, 3339, 3339, 3341, 3333, 3342, 3343, + 3344, 3342, 3345, 3340, 3343, 3344, 3346, 3347, 3348, 3350, + 3352, 3349, 3357, 3347, 3350, 3362, 3341, 3351, 3351, 3353, + 3353, 3346, 3348, 3349, 3355, 3355, 3356, 3345, 3358, 3358, + 3352, 3357, 3360, 3362, 3365, 3365, 3366, 3366, 3367, 3368, + 3371, 3356, 3369, 3370, 3372, 3373, 3367, 3360, 3369, 3370, + 3374, 3375, 3375, 3380, 3371, 3374, 3381, 3372, 3368, 3377, + 3377, 3383, 3384, 3386, 3373, 3387, 3384, 3388, 3389, 3390, - 3381, 3393, 3387, 3392, 3392, 3394, 3393, 3396, 3391, 3397, - 3397, 3389, 3390, 3398, 3399, 3399, 3400, 3400, 3394, 3401, - 3402, 3403, 3404, 3404, 3401, 3405, 3406, 3402, 3406, 3408, - 3405, 3409, 3398, 3396, 3407, 3407, 3408, 3410, 3409, 3411, - 3403, 3412, 3414, 3414, 3411, 3415, 3417, 3418, 3419, 3420, - 3424, 3417, 3418, 3421, 3421, 3425, 3410, 3423, 3423, 0, - 3412, 3426, 3426, 3428, 3415, 3427, 3427, 3419, 3420, 3424, - 3428, 3430, 3430, 3432, 3425, 3431, 3431, 3434, 3437, 3438, - 3432, 3439, 3434, 3437, 3440, 3440, 3441, 3441, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3438, 0, + 3387, 3391, 3392, 3393, 3380, 3383, 3381, 3392, 3393, 3394, + 3394, 3389, 3390, 3386, 3397, 3398, 3388, 3399, 3400, 3400, + 3391, 3401, 3402, 3403, 3403, 3404, 3401, 3405, 3402, 3407, + 3404, 3408, 3405, 3398, 3397, 3406, 3399, 3408, 3410, 3410, + 3406, 3411, 3412, 3412, 3415, 3414, 3411, 3416, 3407, 3414, + 3417, 3418, 3419, 3420, 3416, 3421, 3423, 3423, 3419, 3425, + 3425, 3427, 3426, 3415, 3428, 3429, 3427, 3430, 3421, 3417, + 3418, 3426, 3420, 3432, 3426, 3431, 3431, 3433, 3432, 3435, + 3430, 3436, 3436, 3428, 3429, 3437, 3438, 3438, 3439, 3439, + 3433, 3440, 3441, 3442, 3443, 3443, 3440, 3444, 3445, 3441, - 3439, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3447, 3447, 3447, 3447, 3447, - 3447, 3447, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3449, - 3449, 3449, 3449, 3449, 3449, 3449, 3450, 3450, 3450, 3450, - 3450, 3450, 3450, 3451, 3451, 3451, 3451, 3451, 3451, 3451, - 3453, 3453, 0, 3453, 3453, 3453, 3453, 3454, 3454, 0, - 0, 0, 3454, 3454, 3455, 3455, 0, 0, 3455, 0, - 3455, 3456, 0, 0, 0, 0, 0, 3456, 3457, 3457, - 0, 0, 0, 3457, 3457, 3458, 0, 0, 0, 0, - 0, 3458, 3459, 3459, 0, 3459, 3459, 3459, 3459, 3460, + 3445, 3447, 3444, 3448, 3437, 3435, 3446, 3446, 3447, 3449, + 3448, 3450, 3442, 3451, 3453, 3453, 3450, 3454, 3456, 3457, + 3458, 3459, 3463, 3456, 3457, 3460, 3460, 3464, 3449, 3462, + 3462, 0, 3451, 3465, 3465, 3467, 3454, 3466, 3466, 3458, + 3459, 3463, 3467, 3469, 3469, 3471, 3464, 3470, 3470, 3473, + 3476, 3477, 3471, 3478, 3473, 3476, 3479, 3479, 3480, 3480, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3477, 0, 3478, 3484, 3484, 3484, 3484, 3484, 3484, 3484, + 3485, 3485, 3485, 3485, 3485, 3485, 3485, 3486, 3486, 3486, + 3486, 3486, 3486, 3486, 3487, 3487, 3487, 3487, 3487, 3487, - 0, 0, 0, 0, 0, 3460, 3461, 3461, 0, 0, - 0, 3461, 3461, 3462, 3462, 0, 3462, 3462, 3462, 3462, - 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, - 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, - 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, - 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, - 3444 + 3487, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3489, 3489, + 3489, 3489, 3489, 3489, 3489, 3490, 3490, 3490, 3490, 3490, + 3490, 3490, 3492, 3492, 0, 3492, 3492, 3492, 3492, 3493, + 3493, 0, 0, 0, 3493, 3493, 3494, 3494, 0, 0, + 3494, 0, 3494, 3495, 0, 0, 0, 0, 0, 3495, + 3496, 3496, 0, 0, 0, 3496, 3496, 3497, 0, 0, + 0, 0, 0, 3497, 3498, 3498, 0, 3498, 3498, 3498, + 3498, 3499, 0, 0, 0, 0, 0, 3499, 3500, 3500, + 0, 0, 0, 3500, 3500, 3501, 3501, 0, 3501, 3501, + 3501, 3501, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + + 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + 3483, 3483, 3483 } ; static yy_state_type yy_last_accepting_state; @@ -3255,7 +3285,7 @@ static void config_end_include(void) } #endif -#line 3256 "" +#line 3286 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3264,9 +3294,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3265 "" +#line 3295 "" -#line 3267 "" +#line 3297 "" #define INITIAL 0 #define quotedstring 1 @@ -3490,7 +3520,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3491 "" +#line 3521 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3523,13 +3553,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 >= 3445 ) + if ( yy_current_state >= 3484 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 6721 ); + while ( yy_base[yy_current_state] != 6793 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4354,854 +4384,869 @@ YY_RULE_SETUP case 160: YY_RULE_SETUP #line 374 "./util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } +{ YDVAR(1, VAR_HIDE_HTTP_USER_AGENT) } YY_BREAK case 161: YY_RULE_SETUP #line 375 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } +{ YDVAR(1, VAR_IDENTITY) } YY_BREAK case 162: YY_RULE_SETUP #line 376 "./util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } +{ YDVAR(1, VAR_VERSION) } YY_BREAK case 163: YY_RULE_SETUP #line 377 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } +{ YDVAR(1, VAR_HTTP_USER_AGENT) } YY_BREAK case 164: YY_RULE_SETUP #line 378 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } +{ YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 165: YY_RULE_SETUP #line 379 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 166: YY_RULE_SETUP #line 380 "./util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 167: YY_RULE_SETUP #line 381 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 168: YY_RULE_SETUP #line 382 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 169: YY_RULE_SETUP #line 383 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 170: YY_RULE_SETUP #line 384 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } +{ YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 171: YY_RULE_SETUP #line 385 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } YY_BREAK case 172: YY_RULE_SETUP #line 386 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } +{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } YY_BREAK case 173: YY_RULE_SETUP #line 387 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 174: YY_RULE_SETUP #line 388 "./util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 175: YY_RULE_SETUP #line 389 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 176: YY_RULE_SETUP #line 390 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +{ YDVAR(1, VAR_VAL_MAX_RESTART) } YY_BREAK case 177: YY_RULE_SETUP #line 391 "./util/configlexer.lex" -{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } +{ YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 178: YY_RULE_SETUP #line 392 "./util/configlexer.lex" -{ YDVAR(1, VAR_IGNORE_CD_FLAG) } +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 179: YY_RULE_SETUP #line 393 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED) } +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 180: YY_RULE_SETUP #line 394 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } +{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } YY_BREAK case 181: YY_RULE_SETUP #line 395 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } +{ YDVAR(1, VAR_IGNORE_CD_FLAG) } YY_BREAK case 182: YY_RULE_SETUP #line 396 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED) } YY_BREAK case 183: YY_RULE_SETUP #line 397 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } YY_BREAK case 184: YY_RULE_SETUP #line 398 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } YY_BREAK case 185: YY_RULE_SETUP #line 399 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_DSA) } +{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } YY_BREAK case 186: YY_RULE_SETUP #line 400 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_SHA1) } +{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } YY_BREAK case 187: YY_RULE_SETUP #line 401 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } YY_BREAK case 188: YY_RULE_SETUP #line 402 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_FAKE_DSA) } YY_BREAK case 189: YY_RULE_SETUP #line 403 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_FAKE_SHA1) } YY_BREAK case 190: YY_RULE_SETUP #line 404 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 191: YY_RULE_SETUP #line 405 "./util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 192: YY_RULE_SETUP -#line 407 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } +#line 406 "./util/configlexer.lex" +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 193: YY_RULE_SETUP -#line 408 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_CHECK) } +#line 407 "./util/configlexer.lex" +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 194: YY_RULE_SETUP -#line 409 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } +#line 408 "./util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 195: YY_RULE_SETUP #line 410 "./util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } YY_BREAK case 196: YY_RULE_SETUP #line 411 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +{ YDVAR(1, VAR_ZONEMD_CHECK) } YY_BREAK case 197: YY_RULE_SETUP #line 412 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } YY_BREAK case 198: YY_RULE_SETUP #line 413 "./util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 199: YY_RULE_SETUP #line 414 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 200: YY_RULE_SETUP #line 415 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 201: YY_RULE_SETUP #line 416 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 202: YY_RULE_SETUP #line 417 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 203: YY_RULE_SETUP #line 418 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_REPLIES) } +{ YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 204: YY_RULE_SETUP #line 419 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 205: YY_RULE_SETUP #line 420 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } +{ YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 206: YY_RULE_SETUP #line 421 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_SERVFAIL) } +{ YDVAR(1, VAR_LOG_REPLIES) } YY_BREAK case 207: YY_RULE_SETUP #line 422 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } YY_BREAK case 208: YY_RULE_SETUP #line 423 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } YY_BREAK case 209: YY_RULE_SETUP #line 424 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(1, VAR_LOG_SERVFAIL) } YY_BREAK case 210: YY_RULE_SETUP #line 425 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 211: YY_RULE_SETUP #line 426 "./util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 212: YY_RULE_SETUP #line 427 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 213: YY_RULE_SETUP #line 428 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 214: YY_RULE_SETUP #line 429 "./util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 215: YY_RULE_SETUP #line 430 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 216: YY_RULE_SETUP #line 431 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 217: YY_RULE_SETUP #line 432 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 218: YY_RULE_SETUP #line 433 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 219: YY_RULE_SETUP #line 434 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 220: YY_RULE_SETUP #line 435 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 221: YY_RULE_SETUP #line 436 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 222: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 223: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 224: YY_RULE_SETUP #line 439 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 225: YY_RULE_SETUP #line 440 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 226: YY_RULE_SETUP #line 441 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 227: YY_RULE_SETUP #line 442 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 228: YY_RULE_SETUP #line 443 "./util/configlexer.lex" -{ YDVAR(1, VAR_DYNLIB_FILE) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 229: YY_RULE_SETUP #line 444 "./util/configlexer.lex" -{ YDVAR(0, VAR_DYNLIB) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 230: YY_RULE_SETUP #line 445 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 231: YY_RULE_SETUP #line 446 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(1, VAR_DYNLIB_FILE) } YY_BREAK case 232: YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(0, VAR_DYNLIB) } YY_BREAK case 233: YY_RULE_SETUP #line 448 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 234: YY_RULE_SETUP #line 449 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 235: YY_RULE_SETUP #line 450 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 236: YY_RULE_SETUP #line 451 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 237: YY_RULE_SETUP #line 452 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 238: YY_RULE_SETUP #line 453 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 239: YY_RULE_SETUP #line 454 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 240: YY_RULE_SETUP #line 455 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 241: YY_RULE_SETUP #line 456 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 242: YY_RULE_SETUP #line 457 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 243: YY_RULE_SETUP #line 458 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 244: YY_RULE_SETUP #line 459 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 245: YY_RULE_SETUP #line 460 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 246: YY_RULE_SETUP #line 461 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 247: YY_RULE_SETUP #line 462 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 248: YY_RULE_SETUP #line 463 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 249: YY_RULE_SETUP #line 464 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 250: YY_RULE_SETUP #line 465 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } YY_BREAK case 251: YY_RULE_SETUP #line 466 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 252: YY_RULE_SETUP #line 467 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 253: YY_RULE_SETUP #line 468 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 254: YY_RULE_SETUP -#line 470 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } +#line 469 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 255: YY_RULE_SETUP -#line 472 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 470 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 256: YY_RULE_SETUP -#line 473 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +#line 471 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 257: YY_RULE_SETUP -#line 474 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +#line 473 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 258: YY_RULE_SETUP #line 475 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 259: YY_RULE_SETUP #line 476 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 260: YY_RULE_SETUP -#line 478 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } +#line 477 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 261: YY_RULE_SETUP -#line 480 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } +#line 478 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 262: YY_RULE_SETUP -#line 482 "./util/configlexer.lex" +#line 479 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 263: YY_RULE_SETUP -#line 484 "./util/configlexer.lex" +#line 481 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 264: YY_RULE_SETUP -#line 486 "./util/configlexer.lex" +#line 483 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 265: YY_RULE_SETUP -#line 488 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 485 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 266: YY_RULE_SETUP -#line 489 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +#line 487 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 267: YY_RULE_SETUP -#line 490 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +#line 489 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 268: YY_RULE_SETUP #line 491 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 269: YY_RULE_SETUP #line 492 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 270: YY_RULE_SETUP #line 493 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 271: YY_RULE_SETUP #line 494 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 272: YY_RULE_SETUP #line 495 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 273: YY_RULE_SETUP #line 496 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 274: YY_RULE_SETUP #line 497 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 275: YY_RULE_SETUP #line 498 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 276: YY_RULE_SETUP #line 499 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 277: YY_RULE_SETUP #line 500 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 278: YY_RULE_SETUP #line 501 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 279: YY_RULE_SETUP #line 502 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 280: YY_RULE_SETUP #line 503 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 281: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 282: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 283: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 284: YY_RULE_SETUP #line 507 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 285: YY_RULE_SETUP #line 508 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 286: YY_RULE_SETUP #line 509 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 287: YY_RULE_SETUP #line 510 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 288: YY_RULE_SETUP #line 511 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 289: YY_RULE_SETUP #line 512 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 290: YY_RULE_SETUP #line 513 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 291: YY_RULE_SETUP #line 514 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 292: YY_RULE_SETUP -#line 516 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } +#line 515 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 293: YY_RULE_SETUP -#line 518 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 516 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 294: YY_RULE_SETUP -#line 519 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +#line 517 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 295: YY_RULE_SETUP -#line 520 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES) } +#line 519 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 296: YY_RULE_SETUP #line 521 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 297: YY_RULE_SETUP #line 522 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 298: YY_RULE_SETUP #line 523 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } +{ YDVAR(1, VAR_PAD_RESPONSES) } YY_BREAK case 299: YY_RULE_SETUP #line 524 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } YY_BREAK case 300: YY_RULE_SETUP #line 525 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_PAD_QUERIES) } YY_BREAK case 301: YY_RULE_SETUP #line 526 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } YY_BREAK case 302: YY_RULE_SETUP #line 527 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 303: YY_RULE_SETUP #line 528 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 304: YY_RULE_SETUP #line 529 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 305: YY_RULE_SETUP #line 530 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 306: YY_RULE_SETUP #line 531 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 307: YY_RULE_SETUP #line 532 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 308: YY_RULE_SETUP #line 533 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 309: YY_RULE_SETUP #line 534 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 310: YY_RULE_SETUP #line 535 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 311: YY_RULE_SETUP #line 536 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 312: YY_RULE_SETUP #line 537 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 313: YY_RULE_SETUP #line 538 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 314: YY_RULE_SETUP #line 539 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 315: YY_RULE_SETUP #line 540 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 316: YY_RULE_SETUP #line 541 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 317: YY_RULE_SETUP #line 542 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 318: YY_RULE_SETUP #line 543 "./util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 319: YY_RULE_SETUP #line 544 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 320: YY_RULE_SETUP #line 545 "./util/configlexer.lex" -{ YDVAR(1, VAR_NSID ) } +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } YY_BREAK case 321: -/* rule 321 can match eol */ YY_RULE_SETUP #line 546 "./util/configlexer.lex" +{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } + YY_BREAK +case 322: +YY_RULE_SETUP +#line 547 "./util/configlexer.lex" +{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } + YY_BREAK +case 323: +YY_RULE_SETUP +#line 548 "./util/configlexer.lex" +{ YDVAR(1, VAR_NSID ) } + YY_BREAK +case 324: +/* rule 324 can match eol */ +YY_RULE_SETUP +#line 549 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 322: +case 325: YY_RULE_SETUP -#line 549 "./util/configlexer.lex" +#line 552 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 550 "./util/configlexer.lex" +#line 553 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 323: +case 326: YY_RULE_SETUP -#line 555 "./util/configlexer.lex" +#line 558 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 324: -/* rule 324 can match eol */ +case 327: +/* rule 327 can match eol */ YY_RULE_SETUP -#line 556 "./util/configlexer.lex" +#line 559 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 325: +case 328: YY_RULE_SETUP -#line 558 "./util/configlexer.lex" +#line 561 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5214,34 +5259,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 326: +case 329: YY_RULE_SETUP -#line 570 "./util/configlexer.lex" +#line 573 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 571 "./util/configlexer.lex" +#line 574 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 327: +case 330: YY_RULE_SETUP -#line 576 "./util/configlexer.lex" +#line 579 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 328: -/* rule 328 can match eol */ +case 331: +/* rule 331 can match eol */ YY_RULE_SETUP -#line 577 "./util/configlexer.lex" +#line 580 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 329: +case 332: YY_RULE_SETUP -#line 579 "./util/configlexer.lex" +#line 582 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5254,38 +5299,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 330: +case 333: YY_RULE_SETUP -#line 591 "./util/configlexer.lex" +#line 594 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 593 "./util/configlexer.lex" +#line 596 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 331: -YY_RULE_SETUP -#line 597 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK -case 332: -/* rule 332 can match eol */ -YY_RULE_SETUP -#line 598 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} - YY_BREAK -case 333: -YY_RULE_SETUP -#line 599 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } - YY_BREAK case 334: YY_RULE_SETUP #line 600 "./util/configlexer.lex" +{ LEXOUT(("ISP ")); /* ignore */ } + YY_BREAK +case 335: +/* rule 335 can match eol */ +YY_RULE_SETUP +#line 601 "./util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++;} + YY_BREAK +case 336: +YY_RULE_SETUP +#line 602 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 337: +YY_RULE_SETUP +#line 603 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -5293,27 +5338,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 605 "./util/configlexer.lex" +#line 608 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 335: +case 338: YY_RULE_SETUP -#line 609 "./util/configlexer.lex" +#line 612 "./util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 336: -/* rule 336 can match eol */ +case 339: +/* rule 339 can match eol */ YY_RULE_SETUP -#line 610 "./util/configlexer.lex" +#line 613 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 337: +case 340: YY_RULE_SETUP -#line 612 "./util/configlexer.lex" +#line 615 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -5323,7 +5368,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 618 "./util/configlexer.lex" +#line 621 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -5338,39 +5383,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 338: +case 341: YY_RULE_SETUP -#line 632 "./util/configlexer.lex" +#line 635 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 635 "./util/configlexer.lex" +#line 638 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 339: -YY_RULE_SETUP -#line 639 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK -case 340: -/* rule 340 can match eol */ -YY_RULE_SETUP -#line 640 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } - YY_BREAK -case 341: -YY_RULE_SETUP -#line 641 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } - YY_BREAK case 342: YY_RULE_SETUP #line 642 "./util/configlexer.lex" +{ LEXOUT(("ITSP ")); /* ignore */ } + YY_BREAK +case 343: +/* rule 343 can match eol */ +YY_RULE_SETUP +#line 643 "./util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++; } + YY_BREAK +case 344: +YY_RULE_SETUP +#line 644 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 345: +YY_RULE_SETUP +#line 645 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5379,29 +5424,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 648 "./util/configlexer.lex" +#line 651 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 343: +case 346: YY_RULE_SETUP -#line 652 "./util/configlexer.lex" +#line 655 "./util/configlexer.lex" { LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } YY_BREAK -case 344: -/* rule 344 can match eol */ +case 347: +/* rule 347 can match eol */ YY_RULE_SETUP -#line 653 "./util/configlexer.lex" +#line 656 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 345: +case 348: YY_RULE_SETUP -#line 657 "./util/configlexer.lex" +#line 660 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5410,33 +5455,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 346: +case 349: YY_RULE_SETUP -#line 665 "./util/configlexer.lex" +#line 668 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 347: +case 350: YY_RULE_SETUP -#line 669 "./util/configlexer.lex" +#line 672 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 348: +case 351: YY_RULE_SETUP -#line 673 "./util/configlexer.lex" +#line 676 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 349: +case 352: YY_RULE_SETUP -#line 677 "./util/configlexer.lex" +#line 680 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5437 "" +#line 5482 "" case YY_END_OF_BUFFER: { @@ -5731,7 +5776,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3445 ) + if ( yy_current_state >= 3484 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5759,11 +5804,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3445 ) + if ( yy_current_state >= 3484 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3444); + yy_is_jam = (yy_current_state == 3483); return yy_is_jam ? 0 : yy_current_state; } @@ -6402,6 +6447,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 677 "./util/configlexer.lex" +#line 680 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index e566e1c53..dbfc17d49 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -371,8 +371,10 @@ max-ecs-tree-size-ipv6{COLON} { YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } hide-identity{COLON} { YDVAR(1, VAR_HIDE_IDENTITY) } hide-version{COLON} { YDVAR(1, VAR_HIDE_VERSION) } hide-trustanchor{COLON} { YDVAR(1, VAR_HIDE_TRUSTANCHOR) } +hide-http-user-agent{COLON} { YDVAR(1, VAR_HIDE_HTTP_USER_AGENT) } identity{COLON} { YDVAR(1, VAR_IDENTITY) } version{COLON} { YDVAR(1, VAR_VERSION) } +http-user-agent{COLON} { YDVAR(1, VAR_HTTP_USER_AGENT) } module-config{COLON} { YDVAR(1, VAR_MODULE_CONF) } dlv-anchor{COLON} { YDVAR(1, VAR_DLV_ANCHOR) } dlv-anchor-file{COLON} { YDVAR(1, VAR_DLV_ANCHOR_FILE) } @@ -385,6 +387,7 @@ root-key-sentinel{COLON} { YDVAR(1, VAR_ROOT_KEY_SENTINEL) } val-override-date{COLON} { YDVAR(1, VAR_VAL_OVERRIDE_DATE) } val-sig-skew-min{COLON} { YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } val-sig-skew-max{COLON} { YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +val-max-restart{COLON} { YDVAR(1, VAR_VAL_MAX_RESTART) } val-bogus-ttl{COLON} { YDVAR(1, VAR_BOGUS_TTL) } val-clean-additional{COLON} { YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } val-permissive-mode{COLON} { YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } diff --git a/util/configparser.c b/util/configparser.c index 3f519e9c7..d2fceed4d 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.6.4. */ +/* A Bison parser, made by GNU Bison 3.7.4. */ /* Bison implementation for Yacc-like parsers in C @@ -45,11 +45,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Identify Bison output. */ -#define YYBISON 1 +/* Identify Bison output, and Bison version. */ +#define YYBISON 30704 -/* Bison version. */ -#define YYBISON_VERSION "3.6.4" +/* Bison version string. */ +#define YYBISON_VERSION "3.7.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -119,681 +119,7 @@ extern struct config_parser_state* cfg_parser; # endif # endif -/* Use api.header.include to #include this header - instead of duplicating it here. */ -#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED -# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token kinds. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - YYEMPTY = -2, - YYEOF = 0, /* "end of file" */ - YYerror = 256, /* error */ - YYUNDEF = 257, /* "invalid token" */ - SPACE = 258, /* SPACE */ - LETTER = 259, /* LETTER */ - NEWLINE = 260, /* NEWLINE */ - COMMENT = 261, /* COMMENT */ - COLON = 262, /* COLON */ - ANY = 263, /* ANY */ - ZONESTR = 264, /* ZONESTR */ - STRING_ARG = 265, /* STRING_ARG */ - VAR_FORCE_TOPLEVEL = 266, /* VAR_FORCE_TOPLEVEL */ - VAR_SERVER = 267, /* VAR_SERVER */ - VAR_VERBOSITY = 268, /* VAR_VERBOSITY */ - VAR_NUM_THREADS = 269, /* VAR_NUM_THREADS */ - VAR_PORT = 270, /* VAR_PORT */ - VAR_OUTGOING_RANGE = 271, /* VAR_OUTGOING_RANGE */ - VAR_INTERFACE = 272, /* VAR_INTERFACE */ - VAR_PREFER_IP4 = 273, /* VAR_PREFER_IP4 */ - VAR_DO_IP4 = 274, /* VAR_DO_IP4 */ - VAR_DO_IP6 = 275, /* VAR_DO_IP6 */ - VAR_PREFER_IP6 = 276, /* VAR_PREFER_IP6 */ - VAR_DO_UDP = 277, /* VAR_DO_UDP */ - VAR_DO_TCP = 278, /* VAR_DO_TCP */ - VAR_TCP_MSS = 279, /* VAR_TCP_MSS */ - VAR_OUTGOING_TCP_MSS = 280, /* VAR_OUTGOING_TCP_MSS */ - VAR_TCP_IDLE_TIMEOUT = 281, /* VAR_TCP_IDLE_TIMEOUT */ - VAR_EDNS_TCP_KEEPALIVE = 282, /* VAR_EDNS_TCP_KEEPALIVE */ - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ - VAR_CHROOT = 284, /* VAR_CHROOT */ - VAR_USERNAME = 285, /* VAR_USERNAME */ - VAR_DIRECTORY = 286, /* VAR_DIRECTORY */ - VAR_LOGFILE = 287, /* VAR_LOGFILE */ - VAR_PIDFILE = 288, /* VAR_PIDFILE */ - VAR_MSG_CACHE_SIZE = 289, /* VAR_MSG_CACHE_SIZE */ - VAR_MSG_CACHE_SLABS = 290, /* VAR_MSG_CACHE_SLABS */ - VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD */ - VAR_RRSET_CACHE_SIZE = 292, /* VAR_RRSET_CACHE_SIZE */ - VAR_RRSET_CACHE_SLABS = 293, /* VAR_RRSET_CACHE_SLABS */ - VAR_OUTGOING_NUM_TCP = 294, /* VAR_OUTGOING_NUM_TCP */ - VAR_INFRA_HOST_TTL = 295, /* VAR_INFRA_HOST_TTL */ - VAR_INFRA_LAME_TTL = 296, /* VAR_INFRA_LAME_TTL */ - VAR_INFRA_CACHE_SLABS = 297, /* VAR_INFRA_CACHE_SLABS */ - VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS */ - VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE */ - VAR_NAME = 300, /* VAR_NAME */ - VAR_STUB_ZONE = 301, /* VAR_STUB_ZONE */ - VAR_STUB_HOST = 302, /* VAR_STUB_HOST */ - VAR_STUB_ADDR = 303, /* VAR_STUB_ADDR */ - VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY */ - VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE */ - VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES */ - VAR_FORWARD_ZONE = 307, /* VAR_FORWARD_ZONE */ - VAR_FORWARD_HOST = 308, /* VAR_FORWARD_HOST */ - VAR_FORWARD_ADDR = 309, /* VAR_FORWARD_ADDR */ - VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS */ - VAR_HIDE_IDENTITY = 311, /* VAR_HIDE_IDENTITY */ - VAR_HIDE_VERSION = 312, /* VAR_HIDE_VERSION */ - VAR_IDENTITY = 313, /* VAR_IDENTITY */ - VAR_VERSION = 314, /* VAR_VERSION */ - VAR_HARDEN_GLUE = 315, /* VAR_HARDEN_GLUE */ - VAR_MODULE_CONF = 316, /* VAR_MODULE_CONF */ - VAR_TRUST_ANCHOR_FILE = 317, /* VAR_TRUST_ANCHOR_FILE */ - VAR_TRUST_ANCHOR = 318, /* VAR_TRUST_ANCHOR */ - VAR_VAL_OVERRIDE_DATE = 319, /* VAR_VAL_OVERRIDE_DATE */ - VAR_BOGUS_TTL = 320, /* VAR_BOGUS_TTL */ - VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL */ - VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE */ - VAR_INCOMING_NUM_TCP = 323, /* VAR_INCOMING_NUM_TCP */ - VAR_MSG_BUFFER_SIZE = 324, /* VAR_MSG_BUFFER_SIZE */ - VAR_KEY_CACHE_SIZE = 325, /* VAR_KEY_CACHE_SIZE */ - VAR_KEY_CACHE_SLABS = 326, /* VAR_KEY_CACHE_SLABS */ - VAR_TRUSTED_KEYS_FILE = 327, /* VAR_TRUSTED_KEYS_FILE */ - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ - VAR_USE_SYSLOG = 329, /* VAR_USE_SYSLOG */ - VAR_OUTGOING_INTERFACE = 330, /* VAR_OUTGOING_INTERFACE */ - VAR_ROOT_HINTS = 331, /* VAR_ROOT_HINTS */ - VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST */ - VAR_CACHE_MAX_TTL = 333, /* VAR_CACHE_MAX_TTL */ - VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED */ - VAR_ACCESS_CONTROL = 335, /* VAR_ACCESS_CONTROL */ - VAR_LOCAL_ZONE = 336, /* VAR_LOCAL_ZONE */ - VAR_LOCAL_DATA = 337, /* VAR_LOCAL_DATA */ - VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC */ - VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL */ - VAR_DO_DAEMONIZE = 340, /* VAR_DO_DAEMONIZE */ - VAR_USE_CAPS_FOR_ID = 341, /* VAR_USE_CAPS_FOR_ID */ - VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE */ - VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT */ - VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID */ - VAR_DLV_ANCHOR_FILE = 345, /* VAR_DLV_ANCHOR_FILE */ - VAR_DLV_ANCHOR = 346, /* VAR_DLV_ANCHOR */ - VAR_NEG_CACHE_SIZE = 347, /* VAR_NEG_CACHE_SIZE */ - VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH */ - VAR_PRIVATE_ADDRESS = 349, /* VAR_PRIVATE_ADDRESS */ - VAR_PRIVATE_DOMAIN = 350, /* VAR_PRIVATE_DOMAIN */ - VAR_REMOTE_CONTROL = 351, /* VAR_REMOTE_CONTROL */ - VAR_CONTROL_ENABLE = 352, /* VAR_CONTROL_ENABLE */ - VAR_CONTROL_INTERFACE = 353, /* VAR_CONTROL_INTERFACE */ - VAR_CONTROL_PORT = 354, /* VAR_CONTROL_PORT */ - VAR_SERVER_KEY_FILE = 355, /* VAR_SERVER_KEY_FILE */ - VAR_SERVER_CERT_FILE = 356, /* VAR_SERVER_CERT_FILE */ - VAR_CONTROL_KEY_FILE = 357, /* VAR_CONTROL_KEY_FILE */ - VAR_CONTROL_CERT_FILE = 358, /* VAR_CONTROL_CERT_FILE */ - VAR_CONTROL_USE_CERT = 359, /* VAR_CONTROL_USE_CERT */ - VAR_TCP_REUSE_TIMEOUT = 360, /* VAR_TCP_REUSE_TIMEOUT */ - VAR_MAX_REUSE_TCP_QUERIES = 361, /* VAR_MAX_REUSE_TCP_QUERIES */ - VAR_EXTENDED_STATISTICS = 362, /* VAR_EXTENDED_STATISTICS */ - VAR_LOCAL_DATA_PTR = 363, /* VAR_LOCAL_DATA_PTR */ - VAR_JOSTLE_TIMEOUT = 364, /* VAR_JOSTLE_TIMEOUT */ - VAR_STUB_PRIME = 365, /* VAR_STUB_PRIME */ - VAR_UNWANTED_REPLY_THRESHOLD = 366, /* VAR_UNWANTED_REPLY_THRESHOLD */ - VAR_LOG_TIME_ASCII = 367, /* VAR_LOG_TIME_ASCII */ - VAR_DOMAIN_INSECURE = 368, /* VAR_DOMAIN_INSECURE */ - VAR_PYTHON = 369, /* VAR_PYTHON */ - VAR_PYTHON_SCRIPT = 370, /* VAR_PYTHON_SCRIPT */ - VAR_VAL_SIG_SKEW_MIN = 371, /* VAR_VAL_SIG_SKEW_MIN */ - VAR_VAL_SIG_SKEW_MAX = 372, /* VAR_VAL_SIG_SKEW_MAX */ - VAR_CACHE_MIN_TTL = 373, /* VAR_CACHE_MIN_TTL */ - VAR_VAL_LOG_LEVEL = 374, /* VAR_VAL_LOG_LEVEL */ - VAR_AUTO_TRUST_ANCHOR_FILE = 375, /* VAR_AUTO_TRUST_ANCHOR_FILE */ - VAR_KEEP_MISSING = 376, /* VAR_KEEP_MISSING */ - VAR_ADD_HOLDDOWN = 377, /* VAR_ADD_HOLDDOWN */ - VAR_DEL_HOLDDOWN = 378, /* VAR_DEL_HOLDDOWN */ - VAR_SO_RCVBUF = 379, /* VAR_SO_RCVBUF */ - VAR_EDNS_BUFFER_SIZE = 380, /* VAR_EDNS_BUFFER_SIZE */ - VAR_PREFETCH = 381, /* VAR_PREFETCH */ - VAR_PREFETCH_KEY = 382, /* VAR_PREFETCH_KEY */ - VAR_SO_SNDBUF = 383, /* VAR_SO_SNDBUF */ - VAR_SO_REUSEPORT = 384, /* VAR_SO_REUSEPORT */ - VAR_HARDEN_BELOW_NXDOMAIN = 385, /* VAR_HARDEN_BELOW_NXDOMAIN */ - VAR_IGNORE_CD_FLAG = 386, /* VAR_IGNORE_CD_FLAG */ - VAR_LOG_QUERIES = 387, /* VAR_LOG_QUERIES */ - VAR_LOG_REPLIES = 388, /* VAR_LOG_REPLIES */ - VAR_LOG_LOCAL_ACTIONS = 389, /* VAR_LOG_LOCAL_ACTIONS */ - VAR_TCP_UPSTREAM = 390, /* VAR_TCP_UPSTREAM */ - VAR_SSL_UPSTREAM = 391, /* VAR_SSL_UPSTREAM */ - VAR_TCP_AUTH_QUERY_TIMEOUT = 392, /* VAR_TCP_AUTH_QUERY_TIMEOUT */ - VAR_SSL_SERVICE_KEY = 393, /* VAR_SSL_SERVICE_KEY */ - VAR_SSL_SERVICE_PEM = 394, /* VAR_SSL_SERVICE_PEM */ - VAR_SSL_PORT = 395, /* VAR_SSL_PORT */ - VAR_FORWARD_FIRST = 396, /* VAR_FORWARD_FIRST */ - VAR_STUB_SSL_UPSTREAM = 397, /* VAR_STUB_SSL_UPSTREAM */ - VAR_FORWARD_SSL_UPSTREAM = 398, /* VAR_FORWARD_SSL_UPSTREAM */ - VAR_TLS_CERT_BUNDLE = 399, /* VAR_TLS_CERT_BUNDLE */ - VAR_HTTPS_PORT = 400, /* VAR_HTTPS_PORT */ - VAR_HTTP_ENDPOINT = 401, /* VAR_HTTP_ENDPOINT */ - VAR_HTTP_MAX_STREAMS = 402, /* VAR_HTTP_MAX_STREAMS */ - VAR_HTTP_QUERY_BUFFER_SIZE = 403, /* VAR_HTTP_QUERY_BUFFER_SIZE */ - VAR_HTTP_RESPONSE_BUFFER_SIZE = 404, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ - VAR_HTTP_NODELAY = 405, /* VAR_HTTP_NODELAY */ - VAR_HTTP_NOTLS_DOWNSTREAM = 406, /* VAR_HTTP_NOTLS_DOWNSTREAM */ - VAR_STUB_FIRST = 407, /* VAR_STUB_FIRST */ - VAR_MINIMAL_RESPONSES = 408, /* VAR_MINIMAL_RESPONSES */ - VAR_RRSET_ROUNDROBIN = 409, /* VAR_RRSET_ROUNDROBIN */ - VAR_MAX_UDP_SIZE = 410, /* VAR_MAX_UDP_SIZE */ - VAR_DELAY_CLOSE = 411, /* VAR_DELAY_CLOSE */ - VAR_UDP_CONNECT = 412, /* VAR_UDP_CONNECT */ - VAR_UNBLOCK_LAN_ZONES = 413, /* VAR_UNBLOCK_LAN_ZONES */ - VAR_INSECURE_LAN_ZONES = 414, /* VAR_INSECURE_LAN_ZONES */ - VAR_INFRA_CACHE_MIN_RTT = 415, /* VAR_INFRA_CACHE_MIN_RTT */ - VAR_INFRA_KEEP_PROBING = 416, /* VAR_INFRA_KEEP_PROBING */ - VAR_DNS64_PREFIX = 417, /* VAR_DNS64_PREFIX */ - VAR_DNS64_SYNTHALL = 418, /* VAR_DNS64_SYNTHALL */ - VAR_DNS64_IGNORE_AAAA = 419, /* VAR_DNS64_IGNORE_AAAA */ - VAR_DNSTAP = 420, /* VAR_DNSTAP */ - VAR_DNSTAP_ENABLE = 421, /* VAR_DNSTAP_ENABLE */ - VAR_DNSTAP_SOCKET_PATH = 422, /* VAR_DNSTAP_SOCKET_PATH */ - VAR_DNSTAP_IP = 423, /* VAR_DNSTAP_IP */ - VAR_DNSTAP_TLS = 424, /* VAR_DNSTAP_TLS */ - VAR_DNSTAP_TLS_SERVER_NAME = 425, /* VAR_DNSTAP_TLS_SERVER_NAME */ - VAR_DNSTAP_TLS_CERT_BUNDLE = 426, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 427, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 428, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ - VAR_DNSTAP_SEND_IDENTITY = 429, /* VAR_DNSTAP_SEND_IDENTITY */ - VAR_DNSTAP_SEND_VERSION = 430, /* VAR_DNSTAP_SEND_VERSION */ - VAR_DNSTAP_BIDIRECTIONAL = 431, /* VAR_DNSTAP_BIDIRECTIONAL */ - VAR_DNSTAP_IDENTITY = 432, /* VAR_DNSTAP_IDENTITY */ - VAR_DNSTAP_VERSION = 433, /* VAR_DNSTAP_VERSION */ - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 434, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 435, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 436, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 437, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 438, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 439, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ - VAR_RESPONSE_IP_TAG = 440, /* VAR_RESPONSE_IP_TAG */ - VAR_RESPONSE_IP = 441, /* VAR_RESPONSE_IP */ - VAR_RESPONSE_IP_DATA = 442, /* VAR_RESPONSE_IP_DATA */ - VAR_HARDEN_ALGO_DOWNGRADE = 443, /* VAR_HARDEN_ALGO_DOWNGRADE */ - VAR_IP_TRANSPARENT = 444, /* VAR_IP_TRANSPARENT */ - VAR_IP_DSCP = 445, /* VAR_IP_DSCP */ - VAR_DISABLE_DNSSEC_LAME_CHECK = 446, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ - VAR_IP_RATELIMIT = 447, /* VAR_IP_RATELIMIT */ - VAR_IP_RATELIMIT_SLABS = 448, /* VAR_IP_RATELIMIT_SLABS */ - VAR_IP_RATELIMIT_SIZE = 449, /* VAR_IP_RATELIMIT_SIZE */ - VAR_RATELIMIT = 450, /* VAR_RATELIMIT */ - VAR_RATELIMIT_SLABS = 451, /* VAR_RATELIMIT_SLABS */ - VAR_RATELIMIT_SIZE = 452, /* VAR_RATELIMIT_SIZE */ - VAR_RATELIMIT_FOR_DOMAIN = 453, /* VAR_RATELIMIT_FOR_DOMAIN */ - VAR_RATELIMIT_BELOW_DOMAIN = 454, /* VAR_RATELIMIT_BELOW_DOMAIN */ - VAR_IP_RATELIMIT_FACTOR = 455, /* VAR_IP_RATELIMIT_FACTOR */ - VAR_RATELIMIT_FACTOR = 456, /* VAR_RATELIMIT_FACTOR */ - VAR_SEND_CLIENT_SUBNET = 457, /* VAR_SEND_CLIENT_SUBNET */ - VAR_CLIENT_SUBNET_ZONE = 458, /* VAR_CLIENT_SUBNET_ZONE */ - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 459, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - VAR_CLIENT_SUBNET_OPCODE = 460, /* VAR_CLIENT_SUBNET_OPCODE */ - VAR_MAX_CLIENT_SUBNET_IPV4 = 461, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - VAR_MAX_CLIENT_SUBNET_IPV6 = 462, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - VAR_MIN_CLIENT_SUBNET_IPV4 = 463, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - VAR_MIN_CLIENT_SUBNET_IPV6 = 464, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - VAR_MAX_ECS_TREE_SIZE_IPV4 = 465, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - VAR_MAX_ECS_TREE_SIZE_IPV6 = 466, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - VAR_CAPS_WHITELIST = 467, /* VAR_CAPS_WHITELIST */ - VAR_CACHE_MAX_NEGATIVE_TTL = 468, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - VAR_PERMIT_SMALL_HOLDDOWN = 469, /* VAR_PERMIT_SMALL_HOLDDOWN */ - VAR_QNAME_MINIMISATION = 470, /* VAR_QNAME_MINIMISATION */ - VAR_QNAME_MINIMISATION_STRICT = 471, /* VAR_QNAME_MINIMISATION_STRICT */ - VAR_IP_FREEBIND = 472, /* VAR_IP_FREEBIND */ - VAR_DEFINE_TAG = 473, /* VAR_DEFINE_TAG */ - VAR_LOCAL_ZONE_TAG = 474, /* VAR_LOCAL_ZONE_TAG */ - VAR_ACCESS_CONTROL_TAG = 475, /* VAR_ACCESS_CONTROL_TAG */ - VAR_LOCAL_ZONE_OVERRIDE = 476, /* VAR_LOCAL_ZONE_OVERRIDE */ - VAR_ACCESS_CONTROL_TAG_ACTION = 477, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - VAR_ACCESS_CONTROL_TAG_DATA = 478, /* VAR_ACCESS_CONTROL_TAG_DATA */ - VAR_VIEW = 479, /* VAR_VIEW */ - VAR_ACCESS_CONTROL_VIEW = 480, /* VAR_ACCESS_CONTROL_VIEW */ - VAR_VIEW_FIRST = 481, /* VAR_VIEW_FIRST */ - VAR_SERVE_EXPIRED = 482, /* VAR_SERVE_EXPIRED */ - VAR_SERVE_EXPIRED_TTL = 483, /* VAR_SERVE_EXPIRED_TTL */ - VAR_SERVE_EXPIRED_TTL_RESET = 484, /* VAR_SERVE_EXPIRED_TTL_RESET */ - VAR_SERVE_EXPIRED_REPLY_TTL = 485, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 486, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - VAR_SERVE_ORIGINAL_TTL = 487, /* VAR_SERVE_ORIGINAL_TTL */ - VAR_FAKE_DSA = 488, /* VAR_FAKE_DSA */ - VAR_FAKE_SHA1 = 489, /* VAR_FAKE_SHA1 */ - VAR_LOG_IDENTITY = 490, /* VAR_LOG_IDENTITY */ - VAR_HIDE_TRUSTANCHOR = 491, /* VAR_HIDE_TRUSTANCHOR */ - VAR_TRUST_ANCHOR_SIGNALING = 492, /* VAR_TRUST_ANCHOR_SIGNALING */ - VAR_AGGRESSIVE_NSEC = 493, /* VAR_AGGRESSIVE_NSEC */ - VAR_USE_SYSTEMD = 494, /* VAR_USE_SYSTEMD */ - VAR_SHM_ENABLE = 495, /* VAR_SHM_ENABLE */ - VAR_SHM_KEY = 496, /* VAR_SHM_KEY */ - VAR_ROOT_KEY_SENTINEL = 497, /* VAR_ROOT_KEY_SENTINEL */ - VAR_DNSCRYPT = 498, /* VAR_DNSCRYPT */ - VAR_DNSCRYPT_ENABLE = 499, /* VAR_DNSCRYPT_ENABLE */ - VAR_DNSCRYPT_PORT = 500, /* VAR_DNSCRYPT_PORT */ - VAR_DNSCRYPT_PROVIDER = 501, /* VAR_DNSCRYPT_PROVIDER */ - VAR_DNSCRYPT_SECRET_KEY = 502, /* VAR_DNSCRYPT_SECRET_KEY */ - VAR_DNSCRYPT_PROVIDER_CERT = 503, /* VAR_DNSCRYPT_PROVIDER_CERT */ - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 504, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 505, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 506, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 507, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 508, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - VAR_PAD_RESPONSES = 509, /* VAR_PAD_RESPONSES */ - VAR_PAD_RESPONSES_BLOCK_SIZE = 510, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - VAR_PAD_QUERIES = 511, /* VAR_PAD_QUERIES */ - VAR_PAD_QUERIES_BLOCK_SIZE = 512, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - VAR_IPSECMOD_ENABLED = 513, /* VAR_IPSECMOD_ENABLED */ - VAR_IPSECMOD_HOOK = 514, /* VAR_IPSECMOD_HOOK */ - VAR_IPSECMOD_IGNORE_BOGUS = 515, /* VAR_IPSECMOD_IGNORE_BOGUS */ - VAR_IPSECMOD_MAX_TTL = 516, /* VAR_IPSECMOD_MAX_TTL */ - VAR_IPSECMOD_WHITELIST = 517, /* VAR_IPSECMOD_WHITELIST */ - VAR_IPSECMOD_STRICT = 518, /* VAR_IPSECMOD_STRICT */ - VAR_CACHEDB = 519, /* VAR_CACHEDB */ - VAR_CACHEDB_BACKEND = 520, /* VAR_CACHEDB_BACKEND */ - VAR_CACHEDB_SECRETSEED = 521, /* VAR_CACHEDB_SECRETSEED */ - VAR_CACHEDB_REDISHOST = 522, /* VAR_CACHEDB_REDISHOST */ - VAR_CACHEDB_REDISPORT = 523, /* VAR_CACHEDB_REDISPORT */ - VAR_CACHEDB_REDISTIMEOUT = 524, /* VAR_CACHEDB_REDISTIMEOUT */ - VAR_CACHEDB_REDISEXPIRERECORDS = 525, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 526, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - VAR_FOR_UPSTREAM = 527, /* VAR_FOR_UPSTREAM */ - VAR_AUTH_ZONE = 528, /* VAR_AUTH_ZONE */ - VAR_ZONEFILE = 529, /* VAR_ZONEFILE */ - VAR_MASTER = 530, /* VAR_MASTER */ - VAR_URL = 531, /* VAR_URL */ - VAR_FOR_DOWNSTREAM = 532, /* VAR_FOR_DOWNSTREAM */ - VAR_FALLBACK_ENABLED = 533, /* VAR_FALLBACK_ENABLED */ - VAR_TLS_ADDITIONAL_PORT = 534, /* VAR_TLS_ADDITIONAL_PORT */ - VAR_LOW_RTT = 535, /* VAR_LOW_RTT */ - VAR_LOW_RTT_PERMIL = 536, /* VAR_LOW_RTT_PERMIL */ - VAR_FAST_SERVER_PERMIL = 537, /* VAR_FAST_SERVER_PERMIL */ - VAR_FAST_SERVER_NUM = 538, /* VAR_FAST_SERVER_NUM */ - VAR_ALLOW_NOTIFY = 539, /* VAR_ALLOW_NOTIFY */ - VAR_TLS_WIN_CERT = 540, /* VAR_TLS_WIN_CERT */ - VAR_TCP_CONNECTION_LIMIT = 541, /* VAR_TCP_CONNECTION_LIMIT */ - VAR_FORWARD_NO_CACHE = 542, /* VAR_FORWARD_NO_CACHE */ - VAR_STUB_NO_CACHE = 543, /* VAR_STUB_NO_CACHE */ - VAR_LOG_SERVFAIL = 544, /* VAR_LOG_SERVFAIL */ - VAR_DENY_ANY = 545, /* VAR_DENY_ANY */ - VAR_UNKNOWN_SERVER_TIME_LIMIT = 546, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - VAR_LOG_TAG_QUERYREPLY = 547, /* VAR_LOG_TAG_QUERYREPLY */ - VAR_STREAM_WAIT_SIZE = 548, /* VAR_STREAM_WAIT_SIZE */ - VAR_TLS_CIPHERS = 549, /* VAR_TLS_CIPHERS */ - VAR_TLS_CIPHERSUITES = 550, /* VAR_TLS_CIPHERSUITES */ - VAR_TLS_USE_SNI = 551, /* VAR_TLS_USE_SNI */ - VAR_IPSET = 552, /* VAR_IPSET */ - VAR_IPSET_NAME_V4 = 553, /* VAR_IPSET_NAME_V4 */ - VAR_IPSET_NAME_V6 = 554, /* VAR_IPSET_NAME_V6 */ - VAR_TLS_SESSION_TICKET_KEYS = 555, /* VAR_TLS_SESSION_TICKET_KEYS */ - VAR_RPZ = 556, /* VAR_RPZ */ - VAR_TAGS = 557, /* VAR_TAGS */ - VAR_RPZ_ACTION_OVERRIDE = 558, /* VAR_RPZ_ACTION_OVERRIDE */ - VAR_RPZ_CNAME_OVERRIDE = 559, /* VAR_RPZ_CNAME_OVERRIDE */ - VAR_RPZ_LOG = 560, /* VAR_RPZ_LOG */ - VAR_RPZ_LOG_NAME = 561, /* VAR_RPZ_LOG_NAME */ - VAR_DYNLIB = 562, /* VAR_DYNLIB */ - VAR_DYNLIB_FILE = 563, /* VAR_DYNLIB_FILE */ - VAR_EDNS_CLIENT_STRING = 564, /* VAR_EDNS_CLIENT_STRING */ - VAR_EDNS_CLIENT_STRING_OPCODE = 565, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - VAR_NSID = 566, /* VAR_NSID */ - VAR_ZONEMD_PERMISSIVE_MODE = 567, /* VAR_ZONEMD_PERMISSIVE_MODE */ - VAR_ZONEMD_CHECK = 568, /* VAR_ZONEMD_CHECK */ - VAR_ZONEMD_REJECT_ABSENCE = 569 /* VAR_ZONEMD_REJECT_ABSENCE */ - }; - typedef enum yytokentype yytoken_kind_t; -#endif -/* Token kinds. */ -#define YYEOF 0 -#define YYerror 256 -#define YYUNDEF 257 -#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_CACHE_MIN_TTL 373 -#define VAR_VAL_LOG_LEVEL 374 -#define VAR_AUTO_TRUST_ANCHOR_FILE 375 -#define VAR_KEEP_MISSING 376 -#define VAR_ADD_HOLDDOWN 377 -#define VAR_DEL_HOLDDOWN 378 -#define VAR_SO_RCVBUF 379 -#define VAR_EDNS_BUFFER_SIZE 380 -#define VAR_PREFETCH 381 -#define VAR_PREFETCH_KEY 382 -#define VAR_SO_SNDBUF 383 -#define VAR_SO_REUSEPORT 384 -#define VAR_HARDEN_BELOW_NXDOMAIN 385 -#define VAR_IGNORE_CD_FLAG 386 -#define VAR_LOG_QUERIES 387 -#define VAR_LOG_REPLIES 388 -#define VAR_LOG_LOCAL_ACTIONS 389 -#define VAR_TCP_UPSTREAM 390 -#define VAR_SSL_UPSTREAM 391 -#define VAR_TCP_AUTH_QUERY_TIMEOUT 392 -#define VAR_SSL_SERVICE_KEY 393 -#define VAR_SSL_SERVICE_PEM 394 -#define VAR_SSL_PORT 395 -#define VAR_FORWARD_FIRST 396 -#define VAR_STUB_SSL_UPSTREAM 397 -#define VAR_FORWARD_SSL_UPSTREAM 398 -#define VAR_TLS_CERT_BUNDLE 399 -#define VAR_HTTPS_PORT 400 -#define VAR_HTTP_ENDPOINT 401 -#define VAR_HTTP_MAX_STREAMS 402 -#define VAR_HTTP_QUERY_BUFFER_SIZE 403 -#define VAR_HTTP_RESPONSE_BUFFER_SIZE 404 -#define VAR_HTTP_NODELAY 405 -#define VAR_HTTP_NOTLS_DOWNSTREAM 406 -#define VAR_STUB_FIRST 407 -#define VAR_MINIMAL_RESPONSES 408 -#define VAR_RRSET_ROUNDROBIN 409 -#define VAR_MAX_UDP_SIZE 410 -#define VAR_DELAY_CLOSE 411 -#define VAR_UDP_CONNECT 412 -#define VAR_UNBLOCK_LAN_ZONES 413 -#define VAR_INSECURE_LAN_ZONES 414 -#define VAR_INFRA_CACHE_MIN_RTT 415 -#define VAR_INFRA_KEEP_PROBING 416 -#define VAR_DNS64_PREFIX 417 -#define VAR_DNS64_SYNTHALL 418 -#define VAR_DNS64_IGNORE_AAAA 419 -#define VAR_DNSTAP 420 -#define VAR_DNSTAP_ENABLE 421 -#define VAR_DNSTAP_SOCKET_PATH 422 -#define VAR_DNSTAP_IP 423 -#define VAR_DNSTAP_TLS 424 -#define VAR_DNSTAP_TLS_SERVER_NAME 425 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 426 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 427 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 428 -#define VAR_DNSTAP_SEND_IDENTITY 429 -#define VAR_DNSTAP_SEND_VERSION 430 -#define VAR_DNSTAP_BIDIRECTIONAL 431 -#define VAR_DNSTAP_IDENTITY 432 -#define VAR_DNSTAP_VERSION 433 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 434 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 435 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 436 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 437 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 438 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 439 -#define VAR_RESPONSE_IP_TAG 440 -#define VAR_RESPONSE_IP 441 -#define VAR_RESPONSE_IP_DATA 442 -#define VAR_HARDEN_ALGO_DOWNGRADE 443 -#define VAR_IP_TRANSPARENT 444 -#define VAR_IP_DSCP 445 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 446 -#define VAR_IP_RATELIMIT 447 -#define VAR_IP_RATELIMIT_SLABS 448 -#define VAR_IP_RATELIMIT_SIZE 449 -#define VAR_RATELIMIT 450 -#define VAR_RATELIMIT_SLABS 451 -#define VAR_RATELIMIT_SIZE 452 -#define VAR_RATELIMIT_FOR_DOMAIN 453 -#define VAR_RATELIMIT_BELOW_DOMAIN 454 -#define VAR_IP_RATELIMIT_FACTOR 455 -#define VAR_RATELIMIT_FACTOR 456 -#define VAR_SEND_CLIENT_SUBNET 457 -#define VAR_CLIENT_SUBNET_ZONE 458 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 459 -#define VAR_CLIENT_SUBNET_OPCODE 460 -#define VAR_MAX_CLIENT_SUBNET_IPV4 461 -#define VAR_MAX_CLIENT_SUBNET_IPV6 462 -#define VAR_MIN_CLIENT_SUBNET_IPV4 463 -#define VAR_MIN_CLIENT_SUBNET_IPV6 464 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 465 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 466 -#define VAR_CAPS_WHITELIST 467 -#define VAR_CACHE_MAX_NEGATIVE_TTL 468 -#define VAR_PERMIT_SMALL_HOLDDOWN 469 -#define VAR_QNAME_MINIMISATION 470 -#define VAR_QNAME_MINIMISATION_STRICT 471 -#define VAR_IP_FREEBIND 472 -#define VAR_DEFINE_TAG 473 -#define VAR_LOCAL_ZONE_TAG 474 -#define VAR_ACCESS_CONTROL_TAG 475 -#define VAR_LOCAL_ZONE_OVERRIDE 476 -#define VAR_ACCESS_CONTROL_TAG_ACTION 477 -#define VAR_ACCESS_CONTROL_TAG_DATA 478 -#define VAR_VIEW 479 -#define VAR_ACCESS_CONTROL_VIEW 480 -#define VAR_VIEW_FIRST 481 -#define VAR_SERVE_EXPIRED 482 -#define VAR_SERVE_EXPIRED_TTL 483 -#define VAR_SERVE_EXPIRED_TTL_RESET 484 -#define VAR_SERVE_EXPIRED_REPLY_TTL 485 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 486 -#define VAR_SERVE_ORIGINAL_TTL 487 -#define VAR_FAKE_DSA 488 -#define VAR_FAKE_SHA1 489 -#define VAR_LOG_IDENTITY 490 -#define VAR_HIDE_TRUSTANCHOR 491 -#define VAR_TRUST_ANCHOR_SIGNALING 492 -#define VAR_AGGRESSIVE_NSEC 493 -#define VAR_USE_SYSTEMD 494 -#define VAR_SHM_ENABLE 495 -#define VAR_SHM_KEY 496 -#define VAR_ROOT_KEY_SENTINEL 497 -#define VAR_DNSCRYPT 498 -#define VAR_DNSCRYPT_ENABLE 499 -#define VAR_DNSCRYPT_PORT 500 -#define VAR_DNSCRYPT_PROVIDER 501 -#define VAR_DNSCRYPT_SECRET_KEY 502 -#define VAR_DNSCRYPT_PROVIDER_CERT 503 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 504 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 505 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 506 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 507 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 508 -#define VAR_PAD_RESPONSES 509 -#define VAR_PAD_RESPONSES_BLOCK_SIZE 510 -#define VAR_PAD_QUERIES 511 -#define VAR_PAD_QUERIES_BLOCK_SIZE 512 -#define VAR_IPSECMOD_ENABLED 513 -#define VAR_IPSECMOD_HOOK 514 -#define VAR_IPSECMOD_IGNORE_BOGUS 515 -#define VAR_IPSECMOD_MAX_TTL 516 -#define VAR_IPSECMOD_WHITELIST 517 -#define VAR_IPSECMOD_STRICT 518 -#define VAR_CACHEDB 519 -#define VAR_CACHEDB_BACKEND 520 -#define VAR_CACHEDB_SECRETSEED 521 -#define VAR_CACHEDB_REDISHOST 522 -#define VAR_CACHEDB_REDISPORT 523 -#define VAR_CACHEDB_REDISTIMEOUT 524 -#define VAR_CACHEDB_REDISEXPIRERECORDS 525 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 526 -#define VAR_FOR_UPSTREAM 527 -#define VAR_AUTH_ZONE 528 -#define VAR_ZONEFILE 529 -#define VAR_MASTER 530 -#define VAR_URL 531 -#define VAR_FOR_DOWNSTREAM 532 -#define VAR_FALLBACK_ENABLED 533 -#define VAR_TLS_ADDITIONAL_PORT 534 -#define VAR_LOW_RTT 535 -#define VAR_LOW_RTT_PERMIL 536 -#define VAR_FAST_SERVER_PERMIL 537 -#define VAR_FAST_SERVER_NUM 538 -#define VAR_ALLOW_NOTIFY 539 -#define VAR_TLS_WIN_CERT 540 -#define VAR_TCP_CONNECTION_LIMIT 541 -#define VAR_FORWARD_NO_CACHE 542 -#define VAR_STUB_NO_CACHE 543 -#define VAR_LOG_SERVFAIL 544 -#define VAR_DENY_ANY 545 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 546 -#define VAR_LOG_TAG_QUERYREPLY 547 -#define VAR_STREAM_WAIT_SIZE 548 -#define VAR_TLS_CIPHERS 549 -#define VAR_TLS_CIPHERSUITES 550 -#define VAR_TLS_USE_SNI 551 -#define VAR_IPSET 552 -#define VAR_IPSET_NAME_V4 553 -#define VAR_IPSET_NAME_V6 554 -#define VAR_TLS_SESSION_TICKET_KEYS 555 -#define VAR_RPZ 556 -#define VAR_TAGS 557 -#define VAR_RPZ_ACTION_OVERRIDE 558 -#define VAR_RPZ_CNAME_OVERRIDE 559 -#define VAR_RPZ_LOG 560 -#define VAR_RPZ_LOG_NAME 561 -#define VAR_DYNLIB 562 -#define VAR_DYNLIB_FILE 563 -#define VAR_EDNS_CLIENT_STRING 564 -#define VAR_EDNS_CLIENT_STRING_OPCODE 565 -#define VAR_NSID 566 -#define VAR_ZONEMD_PERMISSIVE_MODE 567 -#define VAR_ZONEMD_CHECK 568 -#define VAR_ZONEMD_REJECT_ABSENCE 569 - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE -{ -#line 66 "./util/configparser.y" - - char* str; - -#line 784 "util/configparser.c" - -}; -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif - - -extern YYSTYPE yylval; - -int yyparse (void); - -#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ +#include "configparser.h" /* Symbol kind. */ enum yysymbol_kind_t { @@ -916,543 +242,549 @@ enum yysymbol_kind_t YYSYMBOL_VAR_PYTHON_SCRIPT = 115, /* VAR_PYTHON_SCRIPT */ YYSYMBOL_VAR_VAL_SIG_SKEW_MIN = 116, /* VAR_VAL_SIG_SKEW_MIN */ YYSYMBOL_VAR_VAL_SIG_SKEW_MAX = 117, /* VAR_VAL_SIG_SKEW_MAX */ - YYSYMBOL_VAR_CACHE_MIN_TTL = 118, /* VAR_CACHE_MIN_TTL */ - YYSYMBOL_VAR_VAL_LOG_LEVEL = 119, /* VAR_VAL_LOG_LEVEL */ - YYSYMBOL_VAR_AUTO_TRUST_ANCHOR_FILE = 120, /* VAR_AUTO_TRUST_ANCHOR_FILE */ - YYSYMBOL_VAR_KEEP_MISSING = 121, /* VAR_KEEP_MISSING */ - YYSYMBOL_VAR_ADD_HOLDDOWN = 122, /* VAR_ADD_HOLDDOWN */ - YYSYMBOL_VAR_DEL_HOLDDOWN = 123, /* VAR_DEL_HOLDDOWN */ - YYSYMBOL_VAR_SO_RCVBUF = 124, /* VAR_SO_RCVBUF */ - YYSYMBOL_VAR_EDNS_BUFFER_SIZE = 125, /* VAR_EDNS_BUFFER_SIZE */ - YYSYMBOL_VAR_PREFETCH = 126, /* VAR_PREFETCH */ - YYSYMBOL_VAR_PREFETCH_KEY = 127, /* VAR_PREFETCH_KEY */ - YYSYMBOL_VAR_SO_SNDBUF = 128, /* VAR_SO_SNDBUF */ - YYSYMBOL_VAR_SO_REUSEPORT = 129, /* VAR_SO_REUSEPORT */ - YYSYMBOL_VAR_HARDEN_BELOW_NXDOMAIN = 130, /* VAR_HARDEN_BELOW_NXDOMAIN */ - YYSYMBOL_VAR_IGNORE_CD_FLAG = 131, /* VAR_IGNORE_CD_FLAG */ - YYSYMBOL_VAR_LOG_QUERIES = 132, /* VAR_LOG_QUERIES */ - YYSYMBOL_VAR_LOG_REPLIES = 133, /* VAR_LOG_REPLIES */ - YYSYMBOL_VAR_LOG_LOCAL_ACTIONS = 134, /* VAR_LOG_LOCAL_ACTIONS */ - YYSYMBOL_VAR_TCP_UPSTREAM = 135, /* VAR_TCP_UPSTREAM */ - YYSYMBOL_VAR_SSL_UPSTREAM = 136, /* VAR_SSL_UPSTREAM */ - YYSYMBOL_VAR_TCP_AUTH_QUERY_TIMEOUT = 137, /* VAR_TCP_AUTH_QUERY_TIMEOUT */ - YYSYMBOL_VAR_SSL_SERVICE_KEY = 138, /* VAR_SSL_SERVICE_KEY */ - YYSYMBOL_VAR_SSL_SERVICE_PEM = 139, /* VAR_SSL_SERVICE_PEM */ - YYSYMBOL_VAR_SSL_PORT = 140, /* VAR_SSL_PORT */ - YYSYMBOL_VAR_FORWARD_FIRST = 141, /* VAR_FORWARD_FIRST */ - YYSYMBOL_VAR_STUB_SSL_UPSTREAM = 142, /* VAR_STUB_SSL_UPSTREAM */ - YYSYMBOL_VAR_FORWARD_SSL_UPSTREAM = 143, /* VAR_FORWARD_SSL_UPSTREAM */ - YYSYMBOL_VAR_TLS_CERT_BUNDLE = 144, /* VAR_TLS_CERT_BUNDLE */ - YYSYMBOL_VAR_HTTPS_PORT = 145, /* VAR_HTTPS_PORT */ - YYSYMBOL_VAR_HTTP_ENDPOINT = 146, /* VAR_HTTP_ENDPOINT */ - YYSYMBOL_VAR_HTTP_MAX_STREAMS = 147, /* VAR_HTTP_MAX_STREAMS */ - YYSYMBOL_VAR_HTTP_QUERY_BUFFER_SIZE = 148, /* VAR_HTTP_QUERY_BUFFER_SIZE */ - YYSYMBOL_VAR_HTTP_RESPONSE_BUFFER_SIZE = 149, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ - YYSYMBOL_VAR_HTTP_NODELAY = 150, /* VAR_HTTP_NODELAY */ - YYSYMBOL_VAR_HTTP_NOTLS_DOWNSTREAM = 151, /* VAR_HTTP_NOTLS_DOWNSTREAM */ - YYSYMBOL_VAR_STUB_FIRST = 152, /* VAR_STUB_FIRST */ - YYSYMBOL_VAR_MINIMAL_RESPONSES = 153, /* VAR_MINIMAL_RESPONSES */ - YYSYMBOL_VAR_RRSET_ROUNDROBIN = 154, /* VAR_RRSET_ROUNDROBIN */ - YYSYMBOL_VAR_MAX_UDP_SIZE = 155, /* VAR_MAX_UDP_SIZE */ - YYSYMBOL_VAR_DELAY_CLOSE = 156, /* VAR_DELAY_CLOSE */ - YYSYMBOL_VAR_UDP_CONNECT = 157, /* VAR_UDP_CONNECT */ - YYSYMBOL_VAR_UNBLOCK_LAN_ZONES = 158, /* VAR_UNBLOCK_LAN_ZONES */ - YYSYMBOL_VAR_INSECURE_LAN_ZONES = 159, /* VAR_INSECURE_LAN_ZONES */ - YYSYMBOL_VAR_INFRA_CACHE_MIN_RTT = 160, /* VAR_INFRA_CACHE_MIN_RTT */ - YYSYMBOL_VAR_INFRA_KEEP_PROBING = 161, /* VAR_INFRA_KEEP_PROBING */ - YYSYMBOL_VAR_DNS64_PREFIX = 162, /* VAR_DNS64_PREFIX */ - YYSYMBOL_VAR_DNS64_SYNTHALL = 163, /* VAR_DNS64_SYNTHALL */ - YYSYMBOL_VAR_DNS64_IGNORE_AAAA = 164, /* VAR_DNS64_IGNORE_AAAA */ - YYSYMBOL_VAR_DNSTAP = 165, /* VAR_DNSTAP */ - YYSYMBOL_VAR_DNSTAP_ENABLE = 166, /* VAR_DNSTAP_ENABLE */ - YYSYMBOL_VAR_DNSTAP_SOCKET_PATH = 167, /* VAR_DNSTAP_SOCKET_PATH */ - YYSYMBOL_VAR_DNSTAP_IP = 168, /* VAR_DNSTAP_IP */ - YYSYMBOL_VAR_DNSTAP_TLS = 169, /* VAR_DNSTAP_TLS */ - YYSYMBOL_VAR_DNSTAP_TLS_SERVER_NAME = 170, /* VAR_DNSTAP_TLS_SERVER_NAME */ - YYSYMBOL_VAR_DNSTAP_TLS_CERT_BUNDLE = 171, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ - YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 172, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ - YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 173, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ - YYSYMBOL_VAR_DNSTAP_SEND_IDENTITY = 174, /* VAR_DNSTAP_SEND_IDENTITY */ - YYSYMBOL_VAR_DNSTAP_SEND_VERSION = 175, /* VAR_DNSTAP_SEND_VERSION */ - YYSYMBOL_VAR_DNSTAP_BIDIRECTIONAL = 176, /* VAR_DNSTAP_BIDIRECTIONAL */ - YYSYMBOL_VAR_DNSTAP_IDENTITY = 177, /* VAR_DNSTAP_IDENTITY */ - YYSYMBOL_VAR_DNSTAP_VERSION = 178, /* VAR_DNSTAP_VERSION */ - YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 179, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 180, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 181, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 182, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 183, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 184, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ - YYSYMBOL_VAR_RESPONSE_IP_TAG = 185, /* VAR_RESPONSE_IP_TAG */ - YYSYMBOL_VAR_RESPONSE_IP = 186, /* VAR_RESPONSE_IP */ - YYSYMBOL_VAR_RESPONSE_IP_DATA = 187, /* VAR_RESPONSE_IP_DATA */ - YYSYMBOL_VAR_HARDEN_ALGO_DOWNGRADE = 188, /* VAR_HARDEN_ALGO_DOWNGRADE */ - YYSYMBOL_VAR_IP_TRANSPARENT = 189, /* VAR_IP_TRANSPARENT */ - YYSYMBOL_VAR_IP_DSCP = 190, /* VAR_IP_DSCP */ - YYSYMBOL_VAR_DISABLE_DNSSEC_LAME_CHECK = 191, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ - YYSYMBOL_VAR_IP_RATELIMIT = 192, /* VAR_IP_RATELIMIT */ - YYSYMBOL_VAR_IP_RATELIMIT_SLABS = 193, /* VAR_IP_RATELIMIT_SLABS */ - YYSYMBOL_VAR_IP_RATELIMIT_SIZE = 194, /* VAR_IP_RATELIMIT_SIZE */ - YYSYMBOL_VAR_RATELIMIT = 195, /* VAR_RATELIMIT */ - YYSYMBOL_VAR_RATELIMIT_SLABS = 196, /* VAR_RATELIMIT_SLABS */ - YYSYMBOL_VAR_RATELIMIT_SIZE = 197, /* VAR_RATELIMIT_SIZE */ - YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 198, /* VAR_RATELIMIT_FOR_DOMAIN */ - YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 199, /* VAR_RATELIMIT_BELOW_DOMAIN */ - YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 200, /* VAR_IP_RATELIMIT_FACTOR */ - YYSYMBOL_VAR_RATELIMIT_FACTOR = 201, /* VAR_RATELIMIT_FACTOR */ - YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 202, /* VAR_SEND_CLIENT_SUBNET */ - YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 203, /* VAR_CLIENT_SUBNET_ZONE */ - YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 204, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 205, /* VAR_CLIENT_SUBNET_OPCODE */ - YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 206, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 207, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 208, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 209, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 210, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 211, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - YYSYMBOL_VAR_CAPS_WHITELIST = 212, /* VAR_CAPS_WHITELIST */ - YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 213, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 214, /* VAR_PERMIT_SMALL_HOLDDOWN */ - YYSYMBOL_VAR_QNAME_MINIMISATION = 215, /* VAR_QNAME_MINIMISATION */ - YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 216, /* VAR_QNAME_MINIMISATION_STRICT */ - YYSYMBOL_VAR_IP_FREEBIND = 217, /* VAR_IP_FREEBIND */ - YYSYMBOL_VAR_DEFINE_TAG = 218, /* VAR_DEFINE_TAG */ - YYSYMBOL_VAR_LOCAL_ZONE_TAG = 219, /* VAR_LOCAL_ZONE_TAG */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 220, /* VAR_ACCESS_CONTROL_TAG */ - YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 221, /* VAR_LOCAL_ZONE_OVERRIDE */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 222, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 223, /* VAR_ACCESS_CONTROL_TAG_DATA */ - YYSYMBOL_VAR_VIEW = 224, /* VAR_VIEW */ - YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 225, /* VAR_ACCESS_CONTROL_VIEW */ - YYSYMBOL_VAR_VIEW_FIRST = 226, /* VAR_VIEW_FIRST */ - YYSYMBOL_VAR_SERVE_EXPIRED = 227, /* VAR_SERVE_EXPIRED */ - YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 228, /* VAR_SERVE_EXPIRED_TTL */ - YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 229, /* VAR_SERVE_EXPIRED_TTL_RESET */ - YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 230, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 231, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 232, /* VAR_SERVE_ORIGINAL_TTL */ - YYSYMBOL_VAR_FAKE_DSA = 233, /* VAR_FAKE_DSA */ - YYSYMBOL_VAR_FAKE_SHA1 = 234, /* VAR_FAKE_SHA1 */ - YYSYMBOL_VAR_LOG_IDENTITY = 235, /* VAR_LOG_IDENTITY */ - YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 236, /* VAR_HIDE_TRUSTANCHOR */ - YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 237, /* VAR_TRUST_ANCHOR_SIGNALING */ - YYSYMBOL_VAR_AGGRESSIVE_NSEC = 238, /* VAR_AGGRESSIVE_NSEC */ - YYSYMBOL_VAR_USE_SYSTEMD = 239, /* VAR_USE_SYSTEMD */ - YYSYMBOL_VAR_SHM_ENABLE = 240, /* VAR_SHM_ENABLE */ - YYSYMBOL_VAR_SHM_KEY = 241, /* VAR_SHM_KEY */ - YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 242, /* VAR_ROOT_KEY_SENTINEL */ - YYSYMBOL_VAR_DNSCRYPT = 243, /* VAR_DNSCRYPT */ - YYSYMBOL_VAR_DNSCRYPT_ENABLE = 244, /* VAR_DNSCRYPT_ENABLE */ - YYSYMBOL_VAR_DNSCRYPT_PORT = 245, /* VAR_DNSCRYPT_PORT */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 246, /* VAR_DNSCRYPT_PROVIDER */ - YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 247, /* VAR_DNSCRYPT_SECRET_KEY */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 248, /* VAR_DNSCRYPT_PROVIDER_CERT */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 249, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 250, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 251, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 252, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 253, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - YYSYMBOL_VAR_PAD_RESPONSES = 254, /* VAR_PAD_RESPONSES */ - YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 255, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - YYSYMBOL_VAR_PAD_QUERIES = 256, /* VAR_PAD_QUERIES */ - YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 257, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - YYSYMBOL_VAR_IPSECMOD_ENABLED = 258, /* VAR_IPSECMOD_ENABLED */ - YYSYMBOL_VAR_IPSECMOD_HOOK = 259, /* VAR_IPSECMOD_HOOK */ - YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 260, /* VAR_IPSECMOD_IGNORE_BOGUS */ - YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 261, /* VAR_IPSECMOD_MAX_TTL */ - YYSYMBOL_VAR_IPSECMOD_WHITELIST = 262, /* VAR_IPSECMOD_WHITELIST */ - YYSYMBOL_VAR_IPSECMOD_STRICT = 263, /* VAR_IPSECMOD_STRICT */ - YYSYMBOL_VAR_CACHEDB = 264, /* VAR_CACHEDB */ - YYSYMBOL_VAR_CACHEDB_BACKEND = 265, /* VAR_CACHEDB_BACKEND */ - YYSYMBOL_VAR_CACHEDB_SECRETSEED = 266, /* VAR_CACHEDB_SECRETSEED */ - YYSYMBOL_VAR_CACHEDB_REDISHOST = 267, /* VAR_CACHEDB_REDISHOST */ - YYSYMBOL_VAR_CACHEDB_REDISPORT = 268, /* VAR_CACHEDB_REDISPORT */ - YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 269, /* VAR_CACHEDB_REDISTIMEOUT */ - YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 270, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 271, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - YYSYMBOL_VAR_FOR_UPSTREAM = 272, /* VAR_FOR_UPSTREAM */ - YYSYMBOL_VAR_AUTH_ZONE = 273, /* VAR_AUTH_ZONE */ - YYSYMBOL_VAR_ZONEFILE = 274, /* VAR_ZONEFILE */ - YYSYMBOL_VAR_MASTER = 275, /* VAR_MASTER */ - YYSYMBOL_VAR_URL = 276, /* VAR_URL */ - YYSYMBOL_VAR_FOR_DOWNSTREAM = 277, /* VAR_FOR_DOWNSTREAM */ - YYSYMBOL_VAR_FALLBACK_ENABLED = 278, /* VAR_FALLBACK_ENABLED */ - YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 279, /* VAR_TLS_ADDITIONAL_PORT */ - YYSYMBOL_VAR_LOW_RTT = 280, /* VAR_LOW_RTT */ - YYSYMBOL_VAR_LOW_RTT_PERMIL = 281, /* VAR_LOW_RTT_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_PERMIL = 282, /* VAR_FAST_SERVER_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_NUM = 283, /* VAR_FAST_SERVER_NUM */ - YYSYMBOL_VAR_ALLOW_NOTIFY = 284, /* VAR_ALLOW_NOTIFY */ - YYSYMBOL_VAR_TLS_WIN_CERT = 285, /* VAR_TLS_WIN_CERT */ - YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 286, /* VAR_TCP_CONNECTION_LIMIT */ - YYSYMBOL_VAR_FORWARD_NO_CACHE = 287, /* VAR_FORWARD_NO_CACHE */ - YYSYMBOL_VAR_STUB_NO_CACHE = 288, /* VAR_STUB_NO_CACHE */ - YYSYMBOL_VAR_LOG_SERVFAIL = 289, /* VAR_LOG_SERVFAIL */ - YYSYMBOL_VAR_DENY_ANY = 290, /* VAR_DENY_ANY */ - YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 291, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 292, /* VAR_LOG_TAG_QUERYREPLY */ - YYSYMBOL_VAR_STREAM_WAIT_SIZE = 293, /* VAR_STREAM_WAIT_SIZE */ - YYSYMBOL_VAR_TLS_CIPHERS = 294, /* VAR_TLS_CIPHERS */ - YYSYMBOL_VAR_TLS_CIPHERSUITES = 295, /* VAR_TLS_CIPHERSUITES */ - YYSYMBOL_VAR_TLS_USE_SNI = 296, /* VAR_TLS_USE_SNI */ - YYSYMBOL_VAR_IPSET = 297, /* VAR_IPSET */ - YYSYMBOL_VAR_IPSET_NAME_V4 = 298, /* VAR_IPSET_NAME_V4 */ - YYSYMBOL_VAR_IPSET_NAME_V6 = 299, /* VAR_IPSET_NAME_V6 */ - YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 300, /* VAR_TLS_SESSION_TICKET_KEYS */ - YYSYMBOL_VAR_RPZ = 301, /* VAR_RPZ */ - YYSYMBOL_VAR_TAGS = 302, /* VAR_TAGS */ - YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 303, /* VAR_RPZ_ACTION_OVERRIDE */ - YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 304, /* VAR_RPZ_CNAME_OVERRIDE */ - YYSYMBOL_VAR_RPZ_LOG = 305, /* VAR_RPZ_LOG */ - YYSYMBOL_VAR_RPZ_LOG_NAME = 306, /* VAR_RPZ_LOG_NAME */ - YYSYMBOL_VAR_DYNLIB = 307, /* VAR_DYNLIB */ - YYSYMBOL_VAR_DYNLIB_FILE = 308, /* VAR_DYNLIB_FILE */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING = 309, /* VAR_EDNS_CLIENT_STRING */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 310, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - YYSYMBOL_VAR_NSID = 311, /* VAR_NSID */ - YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 312, /* VAR_ZONEMD_PERMISSIVE_MODE */ - YYSYMBOL_VAR_ZONEMD_CHECK = 313, /* VAR_ZONEMD_CHECK */ - YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 314, /* VAR_ZONEMD_REJECT_ABSENCE */ - YYSYMBOL_YYACCEPT = 315, /* $accept */ - YYSYMBOL_toplevelvars = 316, /* toplevelvars */ - YYSYMBOL_toplevelvar = 317, /* toplevelvar */ - YYSYMBOL_force_toplevel = 318, /* force_toplevel */ - YYSYMBOL_serverstart = 319, /* serverstart */ - YYSYMBOL_contents_server = 320, /* contents_server */ - YYSYMBOL_content_server = 321, /* content_server */ - YYSYMBOL_stubstart = 322, /* stubstart */ - YYSYMBOL_contents_stub = 323, /* contents_stub */ - YYSYMBOL_content_stub = 324, /* content_stub */ - YYSYMBOL_forwardstart = 325, /* forwardstart */ - YYSYMBOL_contents_forward = 326, /* contents_forward */ - YYSYMBOL_content_forward = 327, /* content_forward */ - YYSYMBOL_viewstart = 328, /* viewstart */ - YYSYMBOL_contents_view = 329, /* contents_view */ - YYSYMBOL_content_view = 330, /* content_view */ - YYSYMBOL_authstart = 331, /* authstart */ - YYSYMBOL_contents_auth = 332, /* contents_auth */ - YYSYMBOL_content_auth = 333, /* content_auth */ - YYSYMBOL_rpz_tag = 334, /* rpz_tag */ - YYSYMBOL_rpz_action_override = 335, /* rpz_action_override */ - YYSYMBOL_rpz_cname_override = 336, /* rpz_cname_override */ - YYSYMBOL_rpz_log = 337, /* rpz_log */ - YYSYMBOL_rpz_log_name = 338, /* rpz_log_name */ - YYSYMBOL_rpzstart = 339, /* rpzstart */ - YYSYMBOL_contents_rpz = 340, /* contents_rpz */ - YYSYMBOL_content_rpz = 341, /* content_rpz */ - YYSYMBOL_server_num_threads = 342, /* server_num_threads */ - YYSYMBOL_server_verbosity = 343, /* server_verbosity */ - YYSYMBOL_server_statistics_interval = 344, /* server_statistics_interval */ - YYSYMBOL_server_statistics_cumulative = 345, /* server_statistics_cumulative */ - YYSYMBOL_server_extended_statistics = 346, /* server_extended_statistics */ - YYSYMBOL_server_shm_enable = 347, /* server_shm_enable */ - YYSYMBOL_server_shm_key = 348, /* server_shm_key */ - YYSYMBOL_server_port = 349, /* server_port */ - YYSYMBOL_server_send_client_subnet = 350, /* server_send_client_subnet */ - YYSYMBOL_server_client_subnet_zone = 351, /* server_client_subnet_zone */ - YYSYMBOL_server_client_subnet_always_forward = 352, /* server_client_subnet_always_forward */ - YYSYMBOL_server_client_subnet_opcode = 353, /* server_client_subnet_opcode */ - YYSYMBOL_server_max_client_subnet_ipv4 = 354, /* server_max_client_subnet_ipv4 */ - YYSYMBOL_server_max_client_subnet_ipv6 = 355, /* server_max_client_subnet_ipv6 */ - YYSYMBOL_server_min_client_subnet_ipv4 = 356, /* server_min_client_subnet_ipv4 */ - YYSYMBOL_server_min_client_subnet_ipv6 = 357, /* server_min_client_subnet_ipv6 */ - YYSYMBOL_server_max_ecs_tree_size_ipv4 = 358, /* server_max_ecs_tree_size_ipv4 */ - YYSYMBOL_server_max_ecs_tree_size_ipv6 = 359, /* server_max_ecs_tree_size_ipv6 */ - YYSYMBOL_server_interface = 360, /* server_interface */ - YYSYMBOL_server_outgoing_interface = 361, /* server_outgoing_interface */ - YYSYMBOL_server_outgoing_range = 362, /* server_outgoing_range */ - YYSYMBOL_server_outgoing_port_permit = 363, /* server_outgoing_port_permit */ - YYSYMBOL_server_outgoing_port_avoid = 364, /* server_outgoing_port_avoid */ - YYSYMBOL_server_outgoing_num_tcp = 365, /* server_outgoing_num_tcp */ - YYSYMBOL_server_incoming_num_tcp = 366, /* server_incoming_num_tcp */ - YYSYMBOL_server_interface_automatic = 367, /* server_interface_automatic */ - YYSYMBOL_server_do_ip4 = 368, /* server_do_ip4 */ - YYSYMBOL_server_do_ip6 = 369, /* server_do_ip6 */ - YYSYMBOL_server_do_udp = 370, /* server_do_udp */ - YYSYMBOL_server_do_tcp = 371, /* server_do_tcp */ - YYSYMBOL_server_prefer_ip4 = 372, /* server_prefer_ip4 */ - YYSYMBOL_server_prefer_ip6 = 373, /* server_prefer_ip6 */ - YYSYMBOL_server_tcp_mss = 374, /* server_tcp_mss */ - YYSYMBOL_server_outgoing_tcp_mss = 375, /* server_outgoing_tcp_mss */ - YYSYMBOL_server_tcp_idle_timeout = 376, /* server_tcp_idle_timeout */ - YYSYMBOL_server_max_reuse_tcp_queries = 377, /* server_max_reuse_tcp_queries */ - YYSYMBOL_server_tcp_reuse_timeout = 378, /* server_tcp_reuse_timeout */ - YYSYMBOL_server_tcp_auth_query_timeout = 379, /* server_tcp_auth_query_timeout */ - YYSYMBOL_server_tcp_keepalive = 380, /* server_tcp_keepalive */ - YYSYMBOL_server_tcp_keepalive_timeout = 381, /* server_tcp_keepalive_timeout */ - YYSYMBOL_server_tcp_upstream = 382, /* server_tcp_upstream */ - YYSYMBOL_server_udp_upstream_without_downstream = 383, /* server_udp_upstream_without_downstream */ - YYSYMBOL_server_ssl_upstream = 384, /* server_ssl_upstream */ - YYSYMBOL_server_ssl_service_key = 385, /* server_ssl_service_key */ - YYSYMBOL_server_ssl_service_pem = 386, /* server_ssl_service_pem */ - YYSYMBOL_server_ssl_port = 387, /* server_ssl_port */ - YYSYMBOL_server_tls_cert_bundle = 388, /* server_tls_cert_bundle */ - YYSYMBOL_server_tls_win_cert = 389, /* server_tls_win_cert */ - YYSYMBOL_server_tls_additional_port = 390, /* server_tls_additional_port */ - YYSYMBOL_server_tls_ciphers = 391, /* server_tls_ciphers */ - YYSYMBOL_server_tls_ciphersuites = 392, /* server_tls_ciphersuites */ - YYSYMBOL_server_tls_session_ticket_keys = 393, /* server_tls_session_ticket_keys */ - YYSYMBOL_server_tls_use_sni = 394, /* server_tls_use_sni */ - YYSYMBOL_server_https_port = 395, /* server_https_port */ - YYSYMBOL_server_http_endpoint = 396, /* server_http_endpoint */ - YYSYMBOL_server_http_max_streams = 397, /* server_http_max_streams */ - YYSYMBOL_server_http_query_buffer_size = 398, /* server_http_query_buffer_size */ - YYSYMBOL_server_http_response_buffer_size = 399, /* server_http_response_buffer_size */ - YYSYMBOL_server_http_nodelay = 400, /* server_http_nodelay */ - YYSYMBOL_server_http_notls_downstream = 401, /* server_http_notls_downstream */ - YYSYMBOL_server_use_systemd = 402, /* server_use_systemd */ - YYSYMBOL_server_do_daemonize = 403, /* server_do_daemonize */ - YYSYMBOL_server_use_syslog = 404, /* server_use_syslog */ - YYSYMBOL_server_log_time_ascii = 405, /* server_log_time_ascii */ - YYSYMBOL_server_log_queries = 406, /* server_log_queries */ - YYSYMBOL_server_log_replies = 407, /* server_log_replies */ - YYSYMBOL_server_log_tag_queryreply = 408, /* server_log_tag_queryreply */ - YYSYMBOL_server_log_servfail = 409, /* server_log_servfail */ - YYSYMBOL_server_log_local_actions = 410, /* server_log_local_actions */ - YYSYMBOL_server_chroot = 411, /* server_chroot */ - YYSYMBOL_server_username = 412, /* server_username */ - YYSYMBOL_server_directory = 413, /* server_directory */ - YYSYMBOL_server_logfile = 414, /* server_logfile */ - YYSYMBOL_server_pidfile = 415, /* server_pidfile */ - YYSYMBOL_server_root_hints = 416, /* server_root_hints */ - YYSYMBOL_server_dlv_anchor_file = 417, /* server_dlv_anchor_file */ - YYSYMBOL_server_dlv_anchor = 418, /* server_dlv_anchor */ - YYSYMBOL_server_auto_trust_anchor_file = 419, /* server_auto_trust_anchor_file */ - YYSYMBOL_server_trust_anchor_file = 420, /* server_trust_anchor_file */ - YYSYMBOL_server_trusted_keys_file = 421, /* server_trusted_keys_file */ - YYSYMBOL_server_trust_anchor = 422, /* server_trust_anchor */ - YYSYMBOL_server_trust_anchor_signaling = 423, /* server_trust_anchor_signaling */ - YYSYMBOL_server_root_key_sentinel = 424, /* server_root_key_sentinel */ - YYSYMBOL_server_domain_insecure = 425, /* server_domain_insecure */ - YYSYMBOL_server_hide_identity = 426, /* server_hide_identity */ - YYSYMBOL_server_hide_version = 427, /* server_hide_version */ - YYSYMBOL_server_hide_trustanchor = 428, /* server_hide_trustanchor */ - YYSYMBOL_server_identity = 429, /* server_identity */ - YYSYMBOL_server_version = 430, /* server_version */ - YYSYMBOL_server_nsid = 431, /* server_nsid */ - YYSYMBOL_server_so_rcvbuf = 432, /* server_so_rcvbuf */ - YYSYMBOL_server_so_sndbuf = 433, /* server_so_sndbuf */ - YYSYMBOL_server_so_reuseport = 434, /* server_so_reuseport */ - YYSYMBOL_server_ip_transparent = 435, /* server_ip_transparent */ - YYSYMBOL_server_ip_freebind = 436, /* server_ip_freebind */ - YYSYMBOL_server_ip_dscp = 437, /* server_ip_dscp */ - YYSYMBOL_server_stream_wait_size = 438, /* server_stream_wait_size */ - YYSYMBOL_server_edns_buffer_size = 439, /* server_edns_buffer_size */ - YYSYMBOL_server_msg_buffer_size = 440, /* server_msg_buffer_size */ - YYSYMBOL_server_msg_cache_size = 441, /* server_msg_cache_size */ - YYSYMBOL_server_msg_cache_slabs = 442, /* server_msg_cache_slabs */ - YYSYMBOL_server_num_queries_per_thread = 443, /* server_num_queries_per_thread */ - YYSYMBOL_server_jostle_timeout = 444, /* server_jostle_timeout */ - YYSYMBOL_server_delay_close = 445, /* server_delay_close */ - YYSYMBOL_server_udp_connect = 446, /* server_udp_connect */ - YYSYMBOL_server_unblock_lan_zones = 447, /* server_unblock_lan_zones */ - YYSYMBOL_server_insecure_lan_zones = 448, /* server_insecure_lan_zones */ - YYSYMBOL_server_rrset_cache_size = 449, /* server_rrset_cache_size */ - YYSYMBOL_server_rrset_cache_slabs = 450, /* server_rrset_cache_slabs */ - YYSYMBOL_server_infra_host_ttl = 451, /* server_infra_host_ttl */ - YYSYMBOL_server_infra_lame_ttl = 452, /* server_infra_lame_ttl */ - YYSYMBOL_server_infra_cache_numhosts = 453, /* server_infra_cache_numhosts */ - YYSYMBOL_server_infra_cache_lame_size = 454, /* server_infra_cache_lame_size */ - YYSYMBOL_server_infra_cache_slabs = 455, /* server_infra_cache_slabs */ - YYSYMBOL_server_infra_cache_min_rtt = 456, /* server_infra_cache_min_rtt */ - YYSYMBOL_server_infra_keep_probing = 457, /* server_infra_keep_probing */ - YYSYMBOL_server_target_fetch_policy = 458, /* server_target_fetch_policy */ - YYSYMBOL_server_harden_short_bufsize = 459, /* server_harden_short_bufsize */ - YYSYMBOL_server_harden_large_queries = 460, /* server_harden_large_queries */ - YYSYMBOL_server_harden_glue = 461, /* server_harden_glue */ - YYSYMBOL_server_harden_dnssec_stripped = 462, /* server_harden_dnssec_stripped */ - YYSYMBOL_server_harden_below_nxdomain = 463, /* server_harden_below_nxdomain */ - YYSYMBOL_server_harden_referral_path = 464, /* server_harden_referral_path */ - YYSYMBOL_server_harden_algo_downgrade = 465, /* server_harden_algo_downgrade */ - YYSYMBOL_server_use_caps_for_id = 466, /* server_use_caps_for_id */ - YYSYMBOL_server_caps_whitelist = 467, /* server_caps_whitelist */ - YYSYMBOL_server_private_address = 468, /* server_private_address */ - YYSYMBOL_server_private_domain = 469, /* server_private_domain */ - YYSYMBOL_server_prefetch = 470, /* server_prefetch */ - YYSYMBOL_server_prefetch_key = 471, /* server_prefetch_key */ - YYSYMBOL_server_deny_any = 472, /* server_deny_any */ - YYSYMBOL_server_unwanted_reply_threshold = 473, /* server_unwanted_reply_threshold */ - YYSYMBOL_server_do_not_query_address = 474, /* server_do_not_query_address */ - YYSYMBOL_server_do_not_query_localhost = 475, /* server_do_not_query_localhost */ - YYSYMBOL_server_access_control = 476, /* server_access_control */ - YYSYMBOL_server_module_conf = 477, /* server_module_conf */ - YYSYMBOL_server_val_override_date = 478, /* server_val_override_date */ - YYSYMBOL_server_val_sig_skew_min = 479, /* server_val_sig_skew_min */ - YYSYMBOL_server_val_sig_skew_max = 480, /* server_val_sig_skew_max */ - YYSYMBOL_server_cache_max_ttl = 481, /* server_cache_max_ttl */ - YYSYMBOL_server_cache_max_negative_ttl = 482, /* server_cache_max_negative_ttl */ - YYSYMBOL_server_cache_min_ttl = 483, /* server_cache_min_ttl */ - YYSYMBOL_server_bogus_ttl = 484, /* server_bogus_ttl */ - YYSYMBOL_server_val_clean_additional = 485, /* server_val_clean_additional */ - YYSYMBOL_server_val_permissive_mode = 486, /* server_val_permissive_mode */ - YYSYMBOL_server_aggressive_nsec = 487, /* server_aggressive_nsec */ - YYSYMBOL_server_ignore_cd_flag = 488, /* server_ignore_cd_flag */ - YYSYMBOL_server_serve_expired = 489, /* server_serve_expired */ - YYSYMBOL_server_serve_expired_ttl = 490, /* server_serve_expired_ttl */ - YYSYMBOL_server_serve_expired_ttl_reset = 491, /* server_serve_expired_ttl_reset */ - YYSYMBOL_server_serve_expired_reply_ttl = 492, /* server_serve_expired_reply_ttl */ - YYSYMBOL_server_serve_expired_client_timeout = 493, /* server_serve_expired_client_timeout */ - YYSYMBOL_server_serve_original_ttl = 494, /* server_serve_original_ttl */ - YYSYMBOL_server_fake_dsa = 495, /* server_fake_dsa */ - YYSYMBOL_server_fake_sha1 = 496, /* server_fake_sha1 */ - YYSYMBOL_server_val_log_level = 497, /* server_val_log_level */ - YYSYMBOL_server_val_nsec3_keysize_iterations = 498, /* server_val_nsec3_keysize_iterations */ - YYSYMBOL_server_zonemd_permissive_mode = 499, /* server_zonemd_permissive_mode */ - YYSYMBOL_server_add_holddown = 500, /* server_add_holddown */ - YYSYMBOL_server_del_holddown = 501, /* server_del_holddown */ - YYSYMBOL_server_keep_missing = 502, /* server_keep_missing */ - YYSYMBOL_server_permit_small_holddown = 503, /* server_permit_small_holddown */ - YYSYMBOL_server_key_cache_size = 504, /* server_key_cache_size */ - YYSYMBOL_server_key_cache_slabs = 505, /* server_key_cache_slabs */ - YYSYMBOL_server_neg_cache_size = 506, /* server_neg_cache_size */ - YYSYMBOL_server_local_zone = 507, /* server_local_zone */ - YYSYMBOL_server_local_data = 508, /* server_local_data */ - YYSYMBOL_server_local_data_ptr = 509, /* server_local_data_ptr */ - YYSYMBOL_server_minimal_responses = 510, /* server_minimal_responses */ - YYSYMBOL_server_rrset_roundrobin = 511, /* server_rrset_roundrobin */ - YYSYMBOL_server_unknown_server_time_limit = 512, /* server_unknown_server_time_limit */ - YYSYMBOL_server_max_udp_size = 513, /* server_max_udp_size */ - YYSYMBOL_server_dns64_prefix = 514, /* server_dns64_prefix */ - YYSYMBOL_server_dns64_synthall = 515, /* server_dns64_synthall */ - YYSYMBOL_server_dns64_ignore_aaaa = 516, /* server_dns64_ignore_aaaa */ - YYSYMBOL_server_define_tag = 517, /* server_define_tag */ - YYSYMBOL_server_local_zone_tag = 518, /* server_local_zone_tag */ - YYSYMBOL_server_access_control_tag = 519, /* server_access_control_tag */ - YYSYMBOL_server_access_control_tag_action = 520, /* server_access_control_tag_action */ - YYSYMBOL_server_access_control_tag_data = 521, /* server_access_control_tag_data */ - YYSYMBOL_server_local_zone_override = 522, /* server_local_zone_override */ - YYSYMBOL_server_access_control_view = 523, /* server_access_control_view */ - YYSYMBOL_server_response_ip_tag = 524, /* server_response_ip_tag */ - YYSYMBOL_server_ip_ratelimit = 525, /* server_ip_ratelimit */ - YYSYMBOL_server_ratelimit = 526, /* server_ratelimit */ - YYSYMBOL_server_ip_ratelimit_size = 527, /* server_ip_ratelimit_size */ - YYSYMBOL_server_ratelimit_size = 528, /* server_ratelimit_size */ - YYSYMBOL_server_ip_ratelimit_slabs = 529, /* server_ip_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_slabs = 530, /* server_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_for_domain = 531, /* server_ratelimit_for_domain */ - YYSYMBOL_server_ratelimit_below_domain = 532, /* server_ratelimit_below_domain */ - YYSYMBOL_server_ip_ratelimit_factor = 533, /* server_ip_ratelimit_factor */ - YYSYMBOL_server_ratelimit_factor = 534, /* server_ratelimit_factor */ - YYSYMBOL_server_low_rtt = 535, /* server_low_rtt */ - YYSYMBOL_server_fast_server_num = 536, /* server_fast_server_num */ - YYSYMBOL_server_fast_server_permil = 537, /* server_fast_server_permil */ - YYSYMBOL_server_qname_minimisation = 538, /* server_qname_minimisation */ - YYSYMBOL_server_qname_minimisation_strict = 539, /* server_qname_minimisation_strict */ - YYSYMBOL_server_pad_responses = 540, /* server_pad_responses */ - YYSYMBOL_server_pad_responses_block_size = 541, /* server_pad_responses_block_size */ - YYSYMBOL_server_pad_queries = 542, /* server_pad_queries */ - YYSYMBOL_server_pad_queries_block_size = 543, /* server_pad_queries_block_size */ - YYSYMBOL_server_ipsecmod_enabled = 544, /* server_ipsecmod_enabled */ - YYSYMBOL_server_ipsecmod_ignore_bogus = 545, /* server_ipsecmod_ignore_bogus */ - YYSYMBOL_server_ipsecmod_hook = 546, /* server_ipsecmod_hook */ - YYSYMBOL_server_ipsecmod_max_ttl = 547, /* server_ipsecmod_max_ttl */ - YYSYMBOL_server_ipsecmod_whitelist = 548, /* server_ipsecmod_whitelist */ - YYSYMBOL_server_ipsecmod_strict = 549, /* server_ipsecmod_strict */ - YYSYMBOL_server_edns_client_string = 550, /* server_edns_client_string */ - YYSYMBOL_server_edns_client_string_opcode = 551, /* server_edns_client_string_opcode */ - YYSYMBOL_stub_name = 552, /* stub_name */ - YYSYMBOL_stub_host = 553, /* stub_host */ - YYSYMBOL_stub_addr = 554, /* stub_addr */ - YYSYMBOL_stub_first = 555, /* stub_first */ - YYSYMBOL_stub_no_cache = 556, /* stub_no_cache */ - YYSYMBOL_stub_ssl_upstream = 557, /* stub_ssl_upstream */ - YYSYMBOL_stub_prime = 558, /* stub_prime */ - YYSYMBOL_forward_name = 559, /* forward_name */ - YYSYMBOL_forward_host = 560, /* forward_host */ - YYSYMBOL_forward_addr = 561, /* forward_addr */ - YYSYMBOL_forward_first = 562, /* forward_first */ - YYSYMBOL_forward_no_cache = 563, /* forward_no_cache */ - YYSYMBOL_forward_ssl_upstream = 564, /* forward_ssl_upstream */ - YYSYMBOL_auth_name = 565, /* auth_name */ - YYSYMBOL_auth_zonefile = 566, /* auth_zonefile */ - YYSYMBOL_auth_master = 567, /* auth_master */ - YYSYMBOL_auth_url = 568, /* auth_url */ - YYSYMBOL_auth_allow_notify = 569, /* auth_allow_notify */ - YYSYMBOL_auth_zonemd_check = 570, /* auth_zonemd_check */ - YYSYMBOL_auth_zonemd_reject_absence = 571, /* auth_zonemd_reject_absence */ - YYSYMBOL_auth_for_downstream = 572, /* auth_for_downstream */ - YYSYMBOL_auth_for_upstream = 573, /* auth_for_upstream */ - YYSYMBOL_auth_fallback_enabled = 574, /* auth_fallback_enabled */ - YYSYMBOL_view_name = 575, /* view_name */ - YYSYMBOL_view_local_zone = 576, /* view_local_zone */ - YYSYMBOL_view_response_ip = 577, /* view_response_ip */ - YYSYMBOL_view_response_ip_data = 578, /* view_response_ip_data */ - YYSYMBOL_view_local_data = 579, /* view_local_data */ - YYSYMBOL_view_local_data_ptr = 580, /* view_local_data_ptr */ - YYSYMBOL_view_first = 581, /* view_first */ - YYSYMBOL_rcstart = 582, /* rcstart */ - YYSYMBOL_contents_rc = 583, /* contents_rc */ - YYSYMBOL_content_rc = 584, /* content_rc */ - YYSYMBOL_rc_control_enable = 585, /* rc_control_enable */ - YYSYMBOL_rc_control_port = 586, /* rc_control_port */ - YYSYMBOL_rc_control_interface = 587, /* rc_control_interface */ - YYSYMBOL_rc_control_use_cert = 588, /* rc_control_use_cert */ - YYSYMBOL_rc_server_key_file = 589, /* rc_server_key_file */ - YYSYMBOL_rc_server_cert_file = 590, /* rc_server_cert_file */ - YYSYMBOL_rc_control_key_file = 591, /* rc_control_key_file */ - YYSYMBOL_rc_control_cert_file = 592, /* rc_control_cert_file */ - YYSYMBOL_dtstart = 593, /* dtstart */ - YYSYMBOL_contents_dt = 594, /* contents_dt */ - YYSYMBOL_content_dt = 595, /* content_dt */ - YYSYMBOL_dt_dnstap_enable = 596, /* dt_dnstap_enable */ - YYSYMBOL_dt_dnstap_bidirectional = 597, /* dt_dnstap_bidirectional */ - YYSYMBOL_dt_dnstap_socket_path = 598, /* dt_dnstap_socket_path */ - YYSYMBOL_dt_dnstap_ip = 599, /* dt_dnstap_ip */ - YYSYMBOL_dt_dnstap_tls = 600, /* dt_dnstap_tls */ - YYSYMBOL_dt_dnstap_tls_server_name = 601, /* dt_dnstap_tls_server_name */ - YYSYMBOL_dt_dnstap_tls_cert_bundle = 602, /* dt_dnstap_tls_cert_bundle */ - YYSYMBOL_dt_dnstap_tls_client_key_file = 603, /* dt_dnstap_tls_client_key_file */ - YYSYMBOL_dt_dnstap_tls_client_cert_file = 604, /* dt_dnstap_tls_client_cert_file */ - YYSYMBOL_dt_dnstap_send_identity = 605, /* dt_dnstap_send_identity */ - YYSYMBOL_dt_dnstap_send_version = 606, /* dt_dnstap_send_version */ - YYSYMBOL_dt_dnstap_identity = 607, /* dt_dnstap_identity */ - YYSYMBOL_dt_dnstap_version = 608, /* dt_dnstap_version */ - YYSYMBOL_dt_dnstap_log_resolver_query_messages = 609, /* dt_dnstap_log_resolver_query_messages */ - YYSYMBOL_dt_dnstap_log_resolver_response_messages = 610, /* dt_dnstap_log_resolver_response_messages */ - YYSYMBOL_dt_dnstap_log_client_query_messages = 611, /* dt_dnstap_log_client_query_messages */ - YYSYMBOL_dt_dnstap_log_client_response_messages = 612, /* dt_dnstap_log_client_response_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 613, /* dt_dnstap_log_forwarder_query_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 614, /* dt_dnstap_log_forwarder_response_messages */ - YYSYMBOL_pythonstart = 615, /* pythonstart */ - YYSYMBOL_contents_py = 616, /* contents_py */ - YYSYMBOL_content_py = 617, /* content_py */ - YYSYMBOL_py_script = 618, /* py_script */ - YYSYMBOL_dynlibstart = 619, /* dynlibstart */ - YYSYMBOL_contents_dl = 620, /* contents_dl */ - YYSYMBOL_content_dl = 621, /* content_dl */ - YYSYMBOL_dl_file = 622, /* dl_file */ - YYSYMBOL_server_disable_dnssec_lame_check = 623, /* server_disable_dnssec_lame_check */ - YYSYMBOL_server_log_identity = 624, /* server_log_identity */ - YYSYMBOL_server_response_ip = 625, /* server_response_ip */ - YYSYMBOL_server_response_ip_data = 626, /* server_response_ip_data */ - YYSYMBOL_dnscstart = 627, /* dnscstart */ - YYSYMBOL_contents_dnsc = 628, /* contents_dnsc */ - YYSYMBOL_content_dnsc = 629, /* content_dnsc */ - YYSYMBOL_dnsc_dnscrypt_enable = 630, /* dnsc_dnscrypt_enable */ - YYSYMBOL_dnsc_dnscrypt_port = 631, /* dnsc_dnscrypt_port */ - YYSYMBOL_dnsc_dnscrypt_provider = 632, /* dnsc_dnscrypt_provider */ - YYSYMBOL_dnsc_dnscrypt_provider_cert = 633, /* dnsc_dnscrypt_provider_cert */ - YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 634, /* dnsc_dnscrypt_provider_cert_rotated */ - YYSYMBOL_dnsc_dnscrypt_secret_key = 635, /* dnsc_dnscrypt_secret_key */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 636, /* dnsc_dnscrypt_shared_secret_cache_size */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 637, /* dnsc_dnscrypt_shared_secret_cache_slabs */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 638, /* dnsc_dnscrypt_nonce_cache_size */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 639, /* dnsc_dnscrypt_nonce_cache_slabs */ - YYSYMBOL_cachedbstart = 640, /* cachedbstart */ - YYSYMBOL_contents_cachedb = 641, /* contents_cachedb */ - YYSYMBOL_content_cachedb = 642, /* content_cachedb */ - YYSYMBOL_cachedb_backend_name = 643, /* cachedb_backend_name */ - YYSYMBOL_cachedb_secret_seed = 644, /* cachedb_secret_seed */ - YYSYMBOL_redis_server_host = 645, /* redis_server_host */ - YYSYMBOL_redis_server_port = 646, /* redis_server_port */ - YYSYMBOL_redis_timeout = 647, /* redis_timeout */ - YYSYMBOL_redis_expire_records = 648, /* redis_expire_records */ - YYSYMBOL_server_tcp_connection_limit = 649, /* server_tcp_connection_limit */ - YYSYMBOL_ipsetstart = 650, /* ipsetstart */ - YYSYMBOL_contents_ipset = 651, /* contents_ipset */ - YYSYMBOL_content_ipset = 652, /* content_ipset */ - YYSYMBOL_ipset_name_v4 = 653, /* ipset_name_v4 */ - YYSYMBOL_ipset_name_v6 = 654 /* ipset_name_v6 */ + 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_HTTPS_PORT = 146, /* VAR_HTTPS_PORT */ + YYSYMBOL_VAR_HTTP_ENDPOINT = 147, /* VAR_HTTP_ENDPOINT */ + YYSYMBOL_VAR_HTTP_MAX_STREAMS = 148, /* VAR_HTTP_MAX_STREAMS */ + YYSYMBOL_VAR_HTTP_QUERY_BUFFER_SIZE = 149, /* VAR_HTTP_QUERY_BUFFER_SIZE */ + YYSYMBOL_VAR_HTTP_RESPONSE_BUFFER_SIZE = 150, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ + YYSYMBOL_VAR_HTTP_NODELAY = 151, /* VAR_HTTP_NODELAY */ + YYSYMBOL_VAR_HTTP_NOTLS_DOWNSTREAM = 152, /* VAR_HTTP_NOTLS_DOWNSTREAM */ + YYSYMBOL_VAR_STUB_FIRST = 153, /* VAR_STUB_FIRST */ + YYSYMBOL_VAR_MINIMAL_RESPONSES = 154, /* VAR_MINIMAL_RESPONSES */ + YYSYMBOL_VAR_RRSET_ROUNDROBIN = 155, /* VAR_RRSET_ROUNDROBIN */ + YYSYMBOL_VAR_MAX_UDP_SIZE = 156, /* VAR_MAX_UDP_SIZE */ + YYSYMBOL_VAR_DELAY_CLOSE = 157, /* VAR_DELAY_CLOSE */ + YYSYMBOL_VAR_UDP_CONNECT = 158, /* VAR_UDP_CONNECT */ + YYSYMBOL_VAR_UNBLOCK_LAN_ZONES = 159, /* VAR_UNBLOCK_LAN_ZONES */ + YYSYMBOL_VAR_INSECURE_LAN_ZONES = 160, /* VAR_INSECURE_LAN_ZONES */ + YYSYMBOL_VAR_INFRA_CACHE_MIN_RTT = 161, /* VAR_INFRA_CACHE_MIN_RTT */ + YYSYMBOL_VAR_INFRA_KEEP_PROBING = 162, /* VAR_INFRA_KEEP_PROBING */ + YYSYMBOL_VAR_DNS64_PREFIX = 163, /* VAR_DNS64_PREFIX */ + YYSYMBOL_VAR_DNS64_SYNTHALL = 164, /* VAR_DNS64_SYNTHALL */ + YYSYMBOL_VAR_DNS64_IGNORE_AAAA = 165, /* VAR_DNS64_IGNORE_AAAA */ + YYSYMBOL_VAR_DNSTAP = 166, /* VAR_DNSTAP */ + YYSYMBOL_VAR_DNSTAP_ENABLE = 167, /* VAR_DNSTAP_ENABLE */ + YYSYMBOL_VAR_DNSTAP_SOCKET_PATH = 168, /* VAR_DNSTAP_SOCKET_PATH */ + YYSYMBOL_VAR_DNSTAP_IP = 169, /* VAR_DNSTAP_IP */ + YYSYMBOL_VAR_DNSTAP_TLS = 170, /* VAR_DNSTAP_TLS */ + YYSYMBOL_VAR_DNSTAP_TLS_SERVER_NAME = 171, /* VAR_DNSTAP_TLS_SERVER_NAME */ + YYSYMBOL_VAR_DNSTAP_TLS_CERT_BUNDLE = 172, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ + YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 173, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ + YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 174, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ + YYSYMBOL_VAR_DNSTAP_SEND_IDENTITY = 175, /* VAR_DNSTAP_SEND_IDENTITY */ + YYSYMBOL_VAR_DNSTAP_SEND_VERSION = 176, /* VAR_DNSTAP_SEND_VERSION */ + YYSYMBOL_VAR_DNSTAP_BIDIRECTIONAL = 177, /* VAR_DNSTAP_BIDIRECTIONAL */ + YYSYMBOL_VAR_DNSTAP_IDENTITY = 178, /* VAR_DNSTAP_IDENTITY */ + YYSYMBOL_VAR_DNSTAP_VERSION = 179, /* VAR_DNSTAP_VERSION */ + YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 180, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 181, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 182, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 183, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 184, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 185, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ + YYSYMBOL_VAR_RESPONSE_IP_TAG = 186, /* VAR_RESPONSE_IP_TAG */ + YYSYMBOL_VAR_RESPONSE_IP = 187, /* VAR_RESPONSE_IP */ + YYSYMBOL_VAR_RESPONSE_IP_DATA = 188, /* VAR_RESPONSE_IP_DATA */ + YYSYMBOL_VAR_HARDEN_ALGO_DOWNGRADE = 189, /* VAR_HARDEN_ALGO_DOWNGRADE */ + YYSYMBOL_VAR_IP_TRANSPARENT = 190, /* VAR_IP_TRANSPARENT */ + YYSYMBOL_VAR_IP_DSCP = 191, /* VAR_IP_DSCP */ + YYSYMBOL_VAR_DISABLE_DNSSEC_LAME_CHECK = 192, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ + YYSYMBOL_VAR_IP_RATELIMIT = 193, /* VAR_IP_RATELIMIT */ + YYSYMBOL_VAR_IP_RATELIMIT_SLABS = 194, /* VAR_IP_RATELIMIT_SLABS */ + YYSYMBOL_VAR_IP_RATELIMIT_SIZE = 195, /* VAR_IP_RATELIMIT_SIZE */ + YYSYMBOL_VAR_RATELIMIT = 196, /* VAR_RATELIMIT */ + YYSYMBOL_VAR_RATELIMIT_SLABS = 197, /* VAR_RATELIMIT_SLABS */ + YYSYMBOL_VAR_RATELIMIT_SIZE = 198, /* VAR_RATELIMIT_SIZE */ + YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 199, /* VAR_RATELIMIT_FOR_DOMAIN */ + YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 200, /* VAR_RATELIMIT_BELOW_DOMAIN */ + YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 201, /* VAR_IP_RATELIMIT_FACTOR */ + YYSYMBOL_VAR_RATELIMIT_FACTOR = 202, /* VAR_RATELIMIT_FACTOR */ + YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 203, /* VAR_SEND_CLIENT_SUBNET */ + YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 204, /* VAR_CLIENT_SUBNET_ZONE */ + YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 205, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 206, /* VAR_CLIENT_SUBNET_OPCODE */ + YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 207, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 208, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 209, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 210, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 211, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 212, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + YYSYMBOL_VAR_CAPS_WHITELIST = 213, /* VAR_CAPS_WHITELIST */ + YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 214, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 215, /* VAR_PERMIT_SMALL_HOLDDOWN */ + YYSYMBOL_VAR_QNAME_MINIMISATION = 216, /* VAR_QNAME_MINIMISATION */ + YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 217, /* VAR_QNAME_MINIMISATION_STRICT */ + YYSYMBOL_VAR_IP_FREEBIND = 218, /* VAR_IP_FREEBIND */ + YYSYMBOL_VAR_DEFINE_TAG = 219, /* VAR_DEFINE_TAG */ + YYSYMBOL_VAR_LOCAL_ZONE_TAG = 220, /* VAR_LOCAL_ZONE_TAG */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 221, /* VAR_ACCESS_CONTROL_TAG */ + YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 222, /* VAR_LOCAL_ZONE_OVERRIDE */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 223, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 224, /* VAR_ACCESS_CONTROL_TAG_DATA */ + YYSYMBOL_VAR_VIEW = 225, /* VAR_VIEW */ + YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 226, /* VAR_ACCESS_CONTROL_VIEW */ + YYSYMBOL_VAR_VIEW_FIRST = 227, /* VAR_VIEW_FIRST */ + YYSYMBOL_VAR_SERVE_EXPIRED = 228, /* VAR_SERVE_EXPIRED */ + YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 229, /* VAR_SERVE_EXPIRED_TTL */ + YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 230, /* VAR_SERVE_EXPIRED_TTL_RESET */ + YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 231, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 232, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 233, /* VAR_SERVE_ORIGINAL_TTL */ + YYSYMBOL_VAR_FAKE_DSA = 234, /* VAR_FAKE_DSA */ + YYSYMBOL_VAR_FAKE_SHA1 = 235, /* VAR_FAKE_SHA1 */ + YYSYMBOL_VAR_LOG_IDENTITY = 236, /* VAR_LOG_IDENTITY */ + YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 237, /* VAR_HIDE_TRUSTANCHOR */ + YYSYMBOL_VAR_HIDE_HTTP_USER_AGENT = 238, /* VAR_HIDE_HTTP_USER_AGENT */ + YYSYMBOL_VAR_HTTP_USER_AGENT = 239, /* VAR_HTTP_USER_AGENT */ + YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 240, /* VAR_TRUST_ANCHOR_SIGNALING */ + YYSYMBOL_VAR_AGGRESSIVE_NSEC = 241, /* VAR_AGGRESSIVE_NSEC */ + YYSYMBOL_VAR_USE_SYSTEMD = 242, /* VAR_USE_SYSTEMD */ + YYSYMBOL_VAR_SHM_ENABLE = 243, /* VAR_SHM_ENABLE */ + YYSYMBOL_VAR_SHM_KEY = 244, /* VAR_SHM_KEY */ + YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 245, /* VAR_ROOT_KEY_SENTINEL */ + YYSYMBOL_VAR_DNSCRYPT = 246, /* VAR_DNSCRYPT */ + YYSYMBOL_VAR_DNSCRYPT_ENABLE = 247, /* VAR_DNSCRYPT_ENABLE */ + YYSYMBOL_VAR_DNSCRYPT_PORT = 248, /* VAR_DNSCRYPT_PORT */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 249, /* VAR_DNSCRYPT_PROVIDER */ + YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 250, /* VAR_DNSCRYPT_SECRET_KEY */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 251, /* VAR_DNSCRYPT_PROVIDER_CERT */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 252, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 253, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 254, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 255, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 256, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + YYSYMBOL_VAR_PAD_RESPONSES = 257, /* VAR_PAD_RESPONSES */ + YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 258, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + YYSYMBOL_VAR_PAD_QUERIES = 259, /* VAR_PAD_QUERIES */ + YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 260, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + YYSYMBOL_VAR_IPSECMOD_ENABLED = 261, /* VAR_IPSECMOD_ENABLED */ + YYSYMBOL_VAR_IPSECMOD_HOOK = 262, /* VAR_IPSECMOD_HOOK */ + YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 263, /* VAR_IPSECMOD_IGNORE_BOGUS */ + YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 264, /* VAR_IPSECMOD_MAX_TTL */ + YYSYMBOL_VAR_IPSECMOD_WHITELIST = 265, /* VAR_IPSECMOD_WHITELIST */ + YYSYMBOL_VAR_IPSECMOD_STRICT = 266, /* VAR_IPSECMOD_STRICT */ + YYSYMBOL_VAR_CACHEDB = 267, /* VAR_CACHEDB */ + YYSYMBOL_VAR_CACHEDB_BACKEND = 268, /* VAR_CACHEDB_BACKEND */ + YYSYMBOL_VAR_CACHEDB_SECRETSEED = 269, /* VAR_CACHEDB_SECRETSEED */ + YYSYMBOL_VAR_CACHEDB_REDISHOST = 270, /* VAR_CACHEDB_REDISHOST */ + YYSYMBOL_VAR_CACHEDB_REDISPORT = 271, /* VAR_CACHEDB_REDISPORT */ + YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 272, /* VAR_CACHEDB_REDISTIMEOUT */ + YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 273, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 274, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + YYSYMBOL_VAR_FOR_UPSTREAM = 275, /* VAR_FOR_UPSTREAM */ + YYSYMBOL_VAR_AUTH_ZONE = 276, /* VAR_AUTH_ZONE */ + YYSYMBOL_VAR_ZONEFILE = 277, /* VAR_ZONEFILE */ + YYSYMBOL_VAR_MASTER = 278, /* VAR_MASTER */ + YYSYMBOL_VAR_URL = 279, /* VAR_URL */ + YYSYMBOL_VAR_FOR_DOWNSTREAM = 280, /* VAR_FOR_DOWNSTREAM */ + YYSYMBOL_VAR_FALLBACK_ENABLED = 281, /* VAR_FALLBACK_ENABLED */ + YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 282, /* VAR_TLS_ADDITIONAL_PORT */ + YYSYMBOL_VAR_LOW_RTT = 283, /* VAR_LOW_RTT */ + YYSYMBOL_VAR_LOW_RTT_PERMIL = 284, /* VAR_LOW_RTT_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_PERMIL = 285, /* VAR_FAST_SERVER_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_NUM = 286, /* VAR_FAST_SERVER_NUM */ + YYSYMBOL_VAR_ALLOW_NOTIFY = 287, /* VAR_ALLOW_NOTIFY */ + YYSYMBOL_VAR_TLS_WIN_CERT = 288, /* VAR_TLS_WIN_CERT */ + YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 289, /* VAR_TCP_CONNECTION_LIMIT */ + YYSYMBOL_VAR_FORWARD_NO_CACHE = 290, /* VAR_FORWARD_NO_CACHE */ + YYSYMBOL_VAR_STUB_NO_CACHE = 291, /* VAR_STUB_NO_CACHE */ + YYSYMBOL_VAR_LOG_SERVFAIL = 292, /* VAR_LOG_SERVFAIL */ + YYSYMBOL_VAR_DENY_ANY = 293, /* VAR_DENY_ANY */ + YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 294, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 295, /* VAR_LOG_TAG_QUERYREPLY */ + YYSYMBOL_VAR_STREAM_WAIT_SIZE = 296, /* VAR_STREAM_WAIT_SIZE */ + YYSYMBOL_VAR_TLS_CIPHERS = 297, /* VAR_TLS_CIPHERS */ + YYSYMBOL_VAR_TLS_CIPHERSUITES = 298, /* VAR_TLS_CIPHERSUITES */ + YYSYMBOL_VAR_TLS_USE_SNI = 299, /* VAR_TLS_USE_SNI */ + YYSYMBOL_VAR_IPSET = 300, /* VAR_IPSET */ + YYSYMBOL_VAR_IPSET_NAME_V4 = 301, /* VAR_IPSET_NAME_V4 */ + YYSYMBOL_VAR_IPSET_NAME_V6 = 302, /* VAR_IPSET_NAME_V6 */ + YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 303, /* VAR_TLS_SESSION_TICKET_KEYS */ + YYSYMBOL_VAR_RPZ = 304, /* VAR_RPZ */ + YYSYMBOL_VAR_TAGS = 305, /* VAR_TAGS */ + YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 306, /* VAR_RPZ_ACTION_OVERRIDE */ + YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 307, /* VAR_RPZ_CNAME_OVERRIDE */ + YYSYMBOL_VAR_RPZ_LOG = 308, /* VAR_RPZ_LOG */ + YYSYMBOL_VAR_RPZ_LOG_NAME = 309, /* VAR_RPZ_LOG_NAME */ + YYSYMBOL_VAR_DYNLIB = 310, /* VAR_DYNLIB */ + YYSYMBOL_VAR_DYNLIB_FILE = 311, /* VAR_DYNLIB_FILE */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING = 312, /* VAR_EDNS_CLIENT_STRING */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 313, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + YYSYMBOL_VAR_NSID = 314, /* VAR_NSID */ + YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 315, /* VAR_ZONEMD_PERMISSIVE_MODE */ + YYSYMBOL_VAR_ZONEMD_CHECK = 316, /* VAR_ZONEMD_CHECK */ + YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 317, /* VAR_ZONEMD_REJECT_ABSENCE */ + YYSYMBOL_YYACCEPT = 318, /* $accept */ + YYSYMBOL_toplevelvars = 319, /* toplevelvars */ + YYSYMBOL_toplevelvar = 320, /* toplevelvar */ + YYSYMBOL_force_toplevel = 321, /* force_toplevel */ + YYSYMBOL_serverstart = 322, /* serverstart */ + YYSYMBOL_contents_server = 323, /* contents_server */ + YYSYMBOL_content_server = 324, /* content_server */ + YYSYMBOL_stubstart = 325, /* stubstart */ + YYSYMBOL_contents_stub = 326, /* contents_stub */ + YYSYMBOL_content_stub = 327, /* content_stub */ + YYSYMBOL_forwardstart = 328, /* forwardstart */ + YYSYMBOL_contents_forward = 329, /* contents_forward */ + YYSYMBOL_content_forward = 330, /* content_forward */ + YYSYMBOL_viewstart = 331, /* viewstart */ + YYSYMBOL_contents_view = 332, /* contents_view */ + YYSYMBOL_content_view = 333, /* content_view */ + YYSYMBOL_authstart = 334, /* authstart */ + YYSYMBOL_contents_auth = 335, /* contents_auth */ + YYSYMBOL_content_auth = 336, /* content_auth */ + YYSYMBOL_rpz_tag = 337, /* rpz_tag */ + YYSYMBOL_rpz_action_override = 338, /* rpz_action_override */ + YYSYMBOL_rpz_cname_override = 339, /* rpz_cname_override */ + YYSYMBOL_rpz_log = 340, /* rpz_log */ + YYSYMBOL_rpz_log_name = 341, /* rpz_log_name */ + YYSYMBOL_rpzstart = 342, /* rpzstart */ + YYSYMBOL_contents_rpz = 343, /* contents_rpz */ + YYSYMBOL_content_rpz = 344, /* content_rpz */ + YYSYMBOL_server_num_threads = 345, /* server_num_threads */ + YYSYMBOL_server_verbosity = 346, /* server_verbosity */ + YYSYMBOL_server_statistics_interval = 347, /* server_statistics_interval */ + YYSYMBOL_server_statistics_cumulative = 348, /* server_statistics_cumulative */ + YYSYMBOL_server_extended_statistics = 349, /* server_extended_statistics */ + YYSYMBOL_server_shm_enable = 350, /* server_shm_enable */ + YYSYMBOL_server_shm_key = 351, /* server_shm_key */ + YYSYMBOL_server_port = 352, /* server_port */ + YYSYMBOL_server_send_client_subnet = 353, /* server_send_client_subnet */ + YYSYMBOL_server_client_subnet_zone = 354, /* server_client_subnet_zone */ + YYSYMBOL_server_client_subnet_always_forward = 355, /* server_client_subnet_always_forward */ + YYSYMBOL_server_client_subnet_opcode = 356, /* server_client_subnet_opcode */ + YYSYMBOL_server_max_client_subnet_ipv4 = 357, /* server_max_client_subnet_ipv4 */ + YYSYMBOL_server_max_client_subnet_ipv6 = 358, /* server_max_client_subnet_ipv6 */ + YYSYMBOL_server_min_client_subnet_ipv4 = 359, /* server_min_client_subnet_ipv4 */ + YYSYMBOL_server_min_client_subnet_ipv6 = 360, /* server_min_client_subnet_ipv6 */ + YYSYMBOL_server_max_ecs_tree_size_ipv4 = 361, /* server_max_ecs_tree_size_ipv4 */ + YYSYMBOL_server_max_ecs_tree_size_ipv6 = 362, /* server_max_ecs_tree_size_ipv6 */ + YYSYMBOL_server_interface = 363, /* server_interface */ + YYSYMBOL_server_outgoing_interface = 364, /* server_outgoing_interface */ + YYSYMBOL_server_outgoing_range = 365, /* server_outgoing_range */ + YYSYMBOL_server_outgoing_port_permit = 366, /* server_outgoing_port_permit */ + YYSYMBOL_server_outgoing_port_avoid = 367, /* server_outgoing_port_avoid */ + YYSYMBOL_server_outgoing_num_tcp = 368, /* server_outgoing_num_tcp */ + YYSYMBOL_server_incoming_num_tcp = 369, /* server_incoming_num_tcp */ + YYSYMBOL_server_interface_automatic = 370, /* server_interface_automatic */ + YYSYMBOL_server_do_ip4 = 371, /* server_do_ip4 */ + YYSYMBOL_server_do_ip6 = 372, /* server_do_ip6 */ + YYSYMBOL_server_do_udp = 373, /* server_do_udp */ + YYSYMBOL_server_do_tcp = 374, /* server_do_tcp */ + YYSYMBOL_server_prefer_ip4 = 375, /* server_prefer_ip4 */ + YYSYMBOL_server_prefer_ip6 = 376, /* server_prefer_ip6 */ + YYSYMBOL_server_tcp_mss = 377, /* server_tcp_mss */ + YYSYMBOL_server_outgoing_tcp_mss = 378, /* server_outgoing_tcp_mss */ + YYSYMBOL_server_tcp_idle_timeout = 379, /* server_tcp_idle_timeout */ + YYSYMBOL_server_max_reuse_tcp_queries = 380, /* server_max_reuse_tcp_queries */ + YYSYMBOL_server_tcp_reuse_timeout = 381, /* server_tcp_reuse_timeout */ + YYSYMBOL_server_tcp_auth_query_timeout = 382, /* server_tcp_auth_query_timeout */ + YYSYMBOL_server_tcp_keepalive = 383, /* server_tcp_keepalive */ + YYSYMBOL_server_tcp_keepalive_timeout = 384, /* server_tcp_keepalive_timeout */ + YYSYMBOL_server_tcp_upstream = 385, /* server_tcp_upstream */ + YYSYMBOL_server_udp_upstream_without_downstream = 386, /* server_udp_upstream_without_downstream */ + YYSYMBOL_server_ssl_upstream = 387, /* server_ssl_upstream */ + YYSYMBOL_server_ssl_service_key = 388, /* server_ssl_service_key */ + YYSYMBOL_server_ssl_service_pem = 389, /* server_ssl_service_pem */ + YYSYMBOL_server_ssl_port = 390, /* server_ssl_port */ + YYSYMBOL_server_tls_cert_bundle = 391, /* server_tls_cert_bundle */ + YYSYMBOL_server_tls_win_cert = 392, /* server_tls_win_cert */ + YYSYMBOL_server_tls_additional_port = 393, /* server_tls_additional_port */ + YYSYMBOL_server_tls_ciphers = 394, /* server_tls_ciphers */ + YYSYMBOL_server_tls_ciphersuites = 395, /* server_tls_ciphersuites */ + YYSYMBOL_server_tls_session_ticket_keys = 396, /* server_tls_session_ticket_keys */ + YYSYMBOL_server_tls_use_sni = 397, /* server_tls_use_sni */ + YYSYMBOL_server_https_port = 398, /* server_https_port */ + YYSYMBOL_server_http_endpoint = 399, /* server_http_endpoint */ + YYSYMBOL_server_http_max_streams = 400, /* server_http_max_streams */ + YYSYMBOL_server_http_query_buffer_size = 401, /* server_http_query_buffer_size */ + YYSYMBOL_server_http_response_buffer_size = 402, /* server_http_response_buffer_size */ + YYSYMBOL_server_http_nodelay = 403, /* server_http_nodelay */ + YYSYMBOL_server_http_notls_downstream = 404, /* server_http_notls_downstream */ + YYSYMBOL_server_use_systemd = 405, /* server_use_systemd */ + YYSYMBOL_server_do_daemonize = 406, /* server_do_daemonize */ + YYSYMBOL_server_use_syslog = 407, /* server_use_syslog */ + YYSYMBOL_server_log_time_ascii = 408, /* server_log_time_ascii */ + YYSYMBOL_server_log_queries = 409, /* server_log_queries */ + YYSYMBOL_server_log_replies = 410, /* server_log_replies */ + YYSYMBOL_server_log_tag_queryreply = 411, /* server_log_tag_queryreply */ + YYSYMBOL_server_log_servfail = 412, /* server_log_servfail */ + YYSYMBOL_server_log_local_actions = 413, /* server_log_local_actions */ + YYSYMBOL_server_chroot = 414, /* server_chroot */ + YYSYMBOL_server_username = 415, /* server_username */ + YYSYMBOL_server_directory = 416, /* server_directory */ + YYSYMBOL_server_logfile = 417, /* server_logfile */ + YYSYMBOL_server_pidfile = 418, /* server_pidfile */ + YYSYMBOL_server_root_hints = 419, /* server_root_hints */ + YYSYMBOL_server_dlv_anchor_file = 420, /* server_dlv_anchor_file */ + YYSYMBOL_server_dlv_anchor = 421, /* server_dlv_anchor */ + YYSYMBOL_server_auto_trust_anchor_file = 422, /* server_auto_trust_anchor_file */ + YYSYMBOL_server_trust_anchor_file = 423, /* server_trust_anchor_file */ + YYSYMBOL_server_trusted_keys_file = 424, /* server_trusted_keys_file */ + YYSYMBOL_server_trust_anchor = 425, /* server_trust_anchor */ + YYSYMBOL_server_trust_anchor_signaling = 426, /* server_trust_anchor_signaling */ + YYSYMBOL_server_root_key_sentinel = 427, /* server_root_key_sentinel */ + YYSYMBOL_server_domain_insecure = 428, /* server_domain_insecure */ + YYSYMBOL_server_hide_identity = 429, /* server_hide_identity */ + YYSYMBOL_server_hide_version = 430, /* server_hide_version */ + YYSYMBOL_server_hide_trustanchor = 431, /* server_hide_trustanchor */ + YYSYMBOL_server_hide_http_user_agent = 432, /* server_hide_http_user_agent */ + YYSYMBOL_server_identity = 433, /* server_identity */ + YYSYMBOL_server_version = 434, /* server_version */ + YYSYMBOL_server_http_user_agent = 435, /* server_http_user_agent */ + YYSYMBOL_server_nsid = 436, /* server_nsid */ + YYSYMBOL_server_so_rcvbuf = 437, /* server_so_rcvbuf */ + YYSYMBOL_server_so_sndbuf = 438, /* server_so_sndbuf */ + YYSYMBOL_server_so_reuseport = 439, /* server_so_reuseport */ + YYSYMBOL_server_ip_transparent = 440, /* server_ip_transparent */ + YYSYMBOL_server_ip_freebind = 441, /* server_ip_freebind */ + YYSYMBOL_server_ip_dscp = 442, /* server_ip_dscp */ + YYSYMBOL_server_stream_wait_size = 443, /* server_stream_wait_size */ + YYSYMBOL_server_edns_buffer_size = 444, /* server_edns_buffer_size */ + YYSYMBOL_server_msg_buffer_size = 445, /* server_msg_buffer_size */ + YYSYMBOL_server_msg_cache_size = 446, /* server_msg_cache_size */ + YYSYMBOL_server_msg_cache_slabs = 447, /* server_msg_cache_slabs */ + YYSYMBOL_server_num_queries_per_thread = 448, /* server_num_queries_per_thread */ + YYSYMBOL_server_jostle_timeout = 449, /* server_jostle_timeout */ + YYSYMBOL_server_delay_close = 450, /* server_delay_close */ + YYSYMBOL_server_udp_connect = 451, /* server_udp_connect */ + YYSYMBOL_server_unblock_lan_zones = 452, /* server_unblock_lan_zones */ + YYSYMBOL_server_insecure_lan_zones = 453, /* server_insecure_lan_zones */ + YYSYMBOL_server_rrset_cache_size = 454, /* server_rrset_cache_size */ + YYSYMBOL_server_rrset_cache_slabs = 455, /* server_rrset_cache_slabs */ + YYSYMBOL_server_infra_host_ttl = 456, /* server_infra_host_ttl */ + YYSYMBOL_server_infra_lame_ttl = 457, /* server_infra_lame_ttl */ + YYSYMBOL_server_infra_cache_numhosts = 458, /* server_infra_cache_numhosts */ + YYSYMBOL_server_infra_cache_lame_size = 459, /* server_infra_cache_lame_size */ + YYSYMBOL_server_infra_cache_slabs = 460, /* server_infra_cache_slabs */ + YYSYMBOL_server_infra_cache_min_rtt = 461, /* server_infra_cache_min_rtt */ + YYSYMBOL_server_infra_keep_probing = 462, /* server_infra_keep_probing */ + YYSYMBOL_server_target_fetch_policy = 463, /* server_target_fetch_policy */ + YYSYMBOL_server_harden_short_bufsize = 464, /* server_harden_short_bufsize */ + YYSYMBOL_server_harden_large_queries = 465, /* server_harden_large_queries */ + YYSYMBOL_server_harden_glue = 466, /* server_harden_glue */ + YYSYMBOL_server_harden_dnssec_stripped = 467, /* server_harden_dnssec_stripped */ + YYSYMBOL_server_harden_below_nxdomain = 468, /* server_harden_below_nxdomain */ + YYSYMBOL_server_harden_referral_path = 469, /* server_harden_referral_path */ + YYSYMBOL_server_harden_algo_downgrade = 470, /* server_harden_algo_downgrade */ + YYSYMBOL_server_use_caps_for_id = 471, /* server_use_caps_for_id */ + YYSYMBOL_server_caps_whitelist = 472, /* server_caps_whitelist */ + YYSYMBOL_server_private_address = 473, /* server_private_address */ + YYSYMBOL_server_private_domain = 474, /* server_private_domain */ + YYSYMBOL_server_prefetch = 475, /* server_prefetch */ + YYSYMBOL_server_prefetch_key = 476, /* server_prefetch_key */ + YYSYMBOL_server_deny_any = 477, /* server_deny_any */ + YYSYMBOL_server_unwanted_reply_threshold = 478, /* server_unwanted_reply_threshold */ + YYSYMBOL_server_do_not_query_address = 479, /* server_do_not_query_address */ + YYSYMBOL_server_do_not_query_localhost = 480, /* server_do_not_query_localhost */ + YYSYMBOL_server_access_control = 481, /* server_access_control */ + YYSYMBOL_server_module_conf = 482, /* server_module_conf */ + YYSYMBOL_server_val_override_date = 483, /* server_val_override_date */ + YYSYMBOL_server_val_sig_skew_min = 484, /* server_val_sig_skew_min */ + YYSYMBOL_server_val_sig_skew_max = 485, /* server_val_sig_skew_max */ + YYSYMBOL_server_val_max_restart = 486, /* server_val_max_restart */ + YYSYMBOL_server_cache_max_ttl = 487, /* server_cache_max_ttl */ + YYSYMBOL_server_cache_max_negative_ttl = 488, /* server_cache_max_negative_ttl */ + YYSYMBOL_server_cache_min_ttl = 489, /* server_cache_min_ttl */ + YYSYMBOL_server_bogus_ttl = 490, /* server_bogus_ttl */ + YYSYMBOL_server_val_clean_additional = 491, /* server_val_clean_additional */ + YYSYMBOL_server_val_permissive_mode = 492, /* server_val_permissive_mode */ + YYSYMBOL_server_aggressive_nsec = 493, /* server_aggressive_nsec */ + YYSYMBOL_server_ignore_cd_flag = 494, /* server_ignore_cd_flag */ + YYSYMBOL_server_serve_expired = 495, /* server_serve_expired */ + YYSYMBOL_server_serve_expired_ttl = 496, /* server_serve_expired_ttl */ + YYSYMBOL_server_serve_expired_ttl_reset = 497, /* server_serve_expired_ttl_reset */ + YYSYMBOL_server_serve_expired_reply_ttl = 498, /* server_serve_expired_reply_ttl */ + YYSYMBOL_server_serve_expired_client_timeout = 499, /* server_serve_expired_client_timeout */ + YYSYMBOL_server_serve_original_ttl = 500, /* server_serve_original_ttl */ + YYSYMBOL_server_fake_dsa = 501, /* server_fake_dsa */ + YYSYMBOL_server_fake_sha1 = 502, /* server_fake_sha1 */ + YYSYMBOL_server_val_log_level = 503, /* server_val_log_level */ + YYSYMBOL_server_val_nsec3_keysize_iterations = 504, /* server_val_nsec3_keysize_iterations */ + YYSYMBOL_server_zonemd_permissive_mode = 505, /* server_zonemd_permissive_mode */ + YYSYMBOL_server_add_holddown = 506, /* server_add_holddown */ + YYSYMBOL_server_del_holddown = 507, /* server_del_holddown */ + YYSYMBOL_server_keep_missing = 508, /* server_keep_missing */ + YYSYMBOL_server_permit_small_holddown = 509, /* server_permit_small_holddown */ + YYSYMBOL_server_key_cache_size = 510, /* server_key_cache_size */ + YYSYMBOL_server_key_cache_slabs = 511, /* server_key_cache_slabs */ + YYSYMBOL_server_neg_cache_size = 512, /* server_neg_cache_size */ + YYSYMBOL_server_local_zone = 513, /* server_local_zone */ + YYSYMBOL_server_local_data = 514, /* server_local_data */ + YYSYMBOL_server_local_data_ptr = 515, /* server_local_data_ptr */ + YYSYMBOL_server_minimal_responses = 516, /* server_minimal_responses */ + YYSYMBOL_server_rrset_roundrobin = 517, /* server_rrset_roundrobin */ + YYSYMBOL_server_unknown_server_time_limit = 518, /* server_unknown_server_time_limit */ + YYSYMBOL_server_max_udp_size = 519, /* server_max_udp_size */ + YYSYMBOL_server_dns64_prefix = 520, /* server_dns64_prefix */ + YYSYMBOL_server_dns64_synthall = 521, /* server_dns64_synthall */ + YYSYMBOL_server_dns64_ignore_aaaa = 522, /* server_dns64_ignore_aaaa */ + YYSYMBOL_server_define_tag = 523, /* server_define_tag */ + YYSYMBOL_server_local_zone_tag = 524, /* server_local_zone_tag */ + YYSYMBOL_server_access_control_tag = 525, /* server_access_control_tag */ + YYSYMBOL_server_access_control_tag_action = 526, /* server_access_control_tag_action */ + YYSYMBOL_server_access_control_tag_data = 527, /* server_access_control_tag_data */ + YYSYMBOL_server_local_zone_override = 528, /* server_local_zone_override */ + YYSYMBOL_server_access_control_view = 529, /* server_access_control_view */ + YYSYMBOL_server_response_ip_tag = 530, /* server_response_ip_tag */ + YYSYMBOL_server_ip_ratelimit = 531, /* server_ip_ratelimit */ + YYSYMBOL_server_ratelimit = 532, /* server_ratelimit */ + YYSYMBOL_server_ip_ratelimit_size = 533, /* server_ip_ratelimit_size */ + YYSYMBOL_server_ratelimit_size = 534, /* server_ratelimit_size */ + YYSYMBOL_server_ip_ratelimit_slabs = 535, /* server_ip_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_slabs = 536, /* server_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_for_domain = 537, /* server_ratelimit_for_domain */ + YYSYMBOL_server_ratelimit_below_domain = 538, /* server_ratelimit_below_domain */ + YYSYMBOL_server_ip_ratelimit_factor = 539, /* server_ip_ratelimit_factor */ + YYSYMBOL_server_ratelimit_factor = 540, /* server_ratelimit_factor */ + YYSYMBOL_server_low_rtt = 541, /* server_low_rtt */ + YYSYMBOL_server_fast_server_num = 542, /* server_fast_server_num */ + YYSYMBOL_server_fast_server_permil = 543, /* server_fast_server_permil */ + YYSYMBOL_server_qname_minimisation = 544, /* server_qname_minimisation */ + YYSYMBOL_server_qname_minimisation_strict = 545, /* server_qname_minimisation_strict */ + YYSYMBOL_server_pad_responses = 546, /* server_pad_responses */ + YYSYMBOL_server_pad_responses_block_size = 547, /* server_pad_responses_block_size */ + YYSYMBOL_server_pad_queries = 548, /* server_pad_queries */ + YYSYMBOL_server_pad_queries_block_size = 549, /* server_pad_queries_block_size */ + YYSYMBOL_server_ipsecmod_enabled = 550, /* server_ipsecmod_enabled */ + YYSYMBOL_server_ipsecmod_ignore_bogus = 551, /* server_ipsecmod_ignore_bogus */ + YYSYMBOL_server_ipsecmod_hook = 552, /* server_ipsecmod_hook */ + YYSYMBOL_server_ipsecmod_max_ttl = 553, /* server_ipsecmod_max_ttl */ + YYSYMBOL_server_ipsecmod_whitelist = 554, /* server_ipsecmod_whitelist */ + YYSYMBOL_server_ipsecmod_strict = 555, /* server_ipsecmod_strict */ + YYSYMBOL_server_edns_client_string = 556, /* server_edns_client_string */ + YYSYMBOL_server_edns_client_string_opcode = 557, /* server_edns_client_string_opcode */ + YYSYMBOL_stub_name = 558, /* stub_name */ + YYSYMBOL_stub_host = 559, /* stub_host */ + YYSYMBOL_stub_addr = 560, /* stub_addr */ + YYSYMBOL_stub_first = 561, /* stub_first */ + YYSYMBOL_stub_no_cache = 562, /* stub_no_cache */ + YYSYMBOL_stub_ssl_upstream = 563, /* stub_ssl_upstream */ + YYSYMBOL_stub_prime = 564, /* stub_prime */ + YYSYMBOL_forward_name = 565, /* forward_name */ + YYSYMBOL_forward_host = 566, /* forward_host */ + YYSYMBOL_forward_addr = 567, /* forward_addr */ + YYSYMBOL_forward_first = 568, /* forward_first */ + YYSYMBOL_forward_no_cache = 569, /* forward_no_cache */ + YYSYMBOL_forward_ssl_upstream = 570, /* forward_ssl_upstream */ + YYSYMBOL_auth_name = 571, /* auth_name */ + YYSYMBOL_auth_zonefile = 572, /* auth_zonefile */ + YYSYMBOL_auth_master = 573, /* auth_master */ + YYSYMBOL_auth_url = 574, /* auth_url */ + YYSYMBOL_auth_allow_notify = 575, /* auth_allow_notify */ + YYSYMBOL_auth_zonemd_check = 576, /* auth_zonemd_check */ + YYSYMBOL_auth_zonemd_reject_absence = 577, /* auth_zonemd_reject_absence */ + YYSYMBOL_auth_for_downstream = 578, /* auth_for_downstream */ + YYSYMBOL_auth_for_upstream = 579, /* auth_for_upstream */ + YYSYMBOL_auth_fallback_enabled = 580, /* auth_fallback_enabled */ + YYSYMBOL_view_name = 581, /* view_name */ + YYSYMBOL_view_local_zone = 582, /* view_local_zone */ + YYSYMBOL_view_response_ip = 583, /* view_response_ip */ + YYSYMBOL_view_response_ip_data = 584, /* view_response_ip_data */ + YYSYMBOL_view_local_data = 585, /* view_local_data */ + YYSYMBOL_view_local_data_ptr = 586, /* view_local_data_ptr */ + YYSYMBOL_view_first = 587, /* view_first */ + YYSYMBOL_rcstart = 588, /* rcstart */ + YYSYMBOL_contents_rc = 589, /* contents_rc */ + YYSYMBOL_content_rc = 590, /* content_rc */ + YYSYMBOL_rc_control_enable = 591, /* rc_control_enable */ + YYSYMBOL_rc_control_port = 592, /* rc_control_port */ + YYSYMBOL_rc_control_interface = 593, /* rc_control_interface */ + YYSYMBOL_rc_control_use_cert = 594, /* rc_control_use_cert */ + YYSYMBOL_rc_server_key_file = 595, /* rc_server_key_file */ + YYSYMBOL_rc_server_cert_file = 596, /* rc_server_cert_file */ + YYSYMBOL_rc_control_key_file = 597, /* rc_control_key_file */ + YYSYMBOL_rc_control_cert_file = 598, /* rc_control_cert_file */ + YYSYMBOL_dtstart = 599, /* dtstart */ + YYSYMBOL_contents_dt = 600, /* contents_dt */ + YYSYMBOL_content_dt = 601, /* content_dt */ + YYSYMBOL_dt_dnstap_enable = 602, /* dt_dnstap_enable */ + YYSYMBOL_dt_dnstap_bidirectional = 603, /* dt_dnstap_bidirectional */ + YYSYMBOL_dt_dnstap_socket_path = 604, /* dt_dnstap_socket_path */ + YYSYMBOL_dt_dnstap_ip = 605, /* dt_dnstap_ip */ + YYSYMBOL_dt_dnstap_tls = 606, /* dt_dnstap_tls */ + YYSYMBOL_dt_dnstap_tls_server_name = 607, /* dt_dnstap_tls_server_name */ + YYSYMBOL_dt_dnstap_tls_cert_bundle = 608, /* dt_dnstap_tls_cert_bundle */ + YYSYMBOL_dt_dnstap_tls_client_key_file = 609, /* dt_dnstap_tls_client_key_file */ + YYSYMBOL_dt_dnstap_tls_client_cert_file = 610, /* dt_dnstap_tls_client_cert_file */ + YYSYMBOL_dt_dnstap_send_identity = 611, /* dt_dnstap_send_identity */ + YYSYMBOL_dt_dnstap_send_version = 612, /* dt_dnstap_send_version */ + YYSYMBOL_dt_dnstap_identity = 613, /* dt_dnstap_identity */ + YYSYMBOL_dt_dnstap_version = 614, /* dt_dnstap_version */ + YYSYMBOL_dt_dnstap_log_resolver_query_messages = 615, /* dt_dnstap_log_resolver_query_messages */ + YYSYMBOL_dt_dnstap_log_resolver_response_messages = 616, /* dt_dnstap_log_resolver_response_messages */ + YYSYMBOL_dt_dnstap_log_client_query_messages = 617, /* dt_dnstap_log_client_query_messages */ + YYSYMBOL_dt_dnstap_log_client_response_messages = 618, /* dt_dnstap_log_client_response_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 619, /* dt_dnstap_log_forwarder_query_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 620, /* dt_dnstap_log_forwarder_response_messages */ + YYSYMBOL_pythonstart = 621, /* pythonstart */ + YYSYMBOL_contents_py = 622, /* contents_py */ + YYSYMBOL_content_py = 623, /* content_py */ + YYSYMBOL_py_script = 624, /* py_script */ + YYSYMBOL_dynlibstart = 625, /* dynlibstart */ + YYSYMBOL_contents_dl = 626, /* contents_dl */ + YYSYMBOL_content_dl = 627, /* content_dl */ + YYSYMBOL_dl_file = 628, /* dl_file */ + YYSYMBOL_server_disable_dnssec_lame_check = 629, /* server_disable_dnssec_lame_check */ + YYSYMBOL_server_log_identity = 630, /* server_log_identity */ + YYSYMBOL_server_response_ip = 631, /* server_response_ip */ + YYSYMBOL_server_response_ip_data = 632, /* server_response_ip_data */ + YYSYMBOL_dnscstart = 633, /* dnscstart */ + YYSYMBOL_contents_dnsc = 634, /* contents_dnsc */ + YYSYMBOL_content_dnsc = 635, /* content_dnsc */ + YYSYMBOL_dnsc_dnscrypt_enable = 636, /* dnsc_dnscrypt_enable */ + YYSYMBOL_dnsc_dnscrypt_port = 637, /* dnsc_dnscrypt_port */ + YYSYMBOL_dnsc_dnscrypt_provider = 638, /* dnsc_dnscrypt_provider */ + YYSYMBOL_dnsc_dnscrypt_provider_cert = 639, /* dnsc_dnscrypt_provider_cert */ + YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 640, /* dnsc_dnscrypt_provider_cert_rotated */ + YYSYMBOL_dnsc_dnscrypt_secret_key = 641, /* dnsc_dnscrypt_secret_key */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 642, /* dnsc_dnscrypt_shared_secret_cache_size */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 643, /* dnsc_dnscrypt_shared_secret_cache_slabs */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 644, /* dnsc_dnscrypt_nonce_cache_size */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 645, /* dnsc_dnscrypt_nonce_cache_slabs */ + YYSYMBOL_cachedbstart = 646, /* cachedbstart */ + YYSYMBOL_contents_cachedb = 647, /* contents_cachedb */ + YYSYMBOL_content_cachedb = 648, /* content_cachedb */ + YYSYMBOL_cachedb_backend_name = 649, /* cachedb_backend_name */ + YYSYMBOL_cachedb_secret_seed = 650, /* cachedb_secret_seed */ + YYSYMBOL_redis_server_host = 651, /* redis_server_host */ + YYSYMBOL_redis_server_port = 652, /* redis_server_port */ + YYSYMBOL_redis_timeout = 653, /* redis_timeout */ + YYSYMBOL_redis_expire_records = 654, /* redis_expire_records */ + YYSYMBOL_server_tcp_connection_limit = 655, /* server_tcp_connection_limit */ + YYSYMBOL_ipsetstart = 656, /* ipsetstart */ + YYSYMBOL_contents_ipset = 657, /* contents_ipset */ + YYSYMBOL_content_ipset = 658, /* content_ipset */ + YYSYMBOL_ipset_name_v4 = 659, /* ipset_name_v4 */ + YYSYMBOL_ipset_name_v6 = 660 /* ipset_name_v6 */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -1762,18 +1094,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 666 +#define YYLAST 672 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 315 +#define YYNTOKENS 318 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 340 +#define YYNNTS 343 /* YYNRULES -- Number of rules. */ -#define YYNRULES 656 +#define YYNRULES 662 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 975 +#define YYNSTATES 984 -#define YYMAXUTOK 569 +/* YYMAXUTOK -- Last valid token kind. */ +#define YYMAXUTOK 572 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1843,79 +1176,81 @@ static const yytype_int16 yytranslate[] = 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314 + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 188, 188, 188, 189, 189, 190, 190, 191, 191, - 191, 192, 192, 193, 193, 194, 194, 195, 197, 203, - 208, 209, 210, 210, 210, 211, 211, 212, 212, 212, - 213, 213, 214, 214, 214, 215, 215, 216, 216, 216, - 217, 217, 217, 218, 218, 219, 219, 220, 220, 221, - 221, 222, 222, 223, 223, 224, 224, 225, 225, 226, - 226, 226, 227, 227, 227, 228, 228, 228, 229, 229, - 230, 230, 231, 231, 232, 232, 233, 233, 233, 234, - 234, 235, 235, 236, 236, 236, 237, 237, 238, 238, - 239, 239, 240, 240, 240, 241, 241, 242, 242, 243, - 243, 244, 244, 245, 245, 246, 246, 246, 247, 247, - 248, 248, 248, 249, 249, 249, 250, 250, 250, 251, - 251, 251, 251, 252, 253, 253, 253, 254, 254, 254, - 255, 255, 256, 256, 257, 257, 257, 258, 258, 258, - 259, 259, 260, 260, 260, 261, 261, 262, 262, 262, - 263, 263, 264, 264, 265, 265, 266, 267, 267, 268, - 268, 269, 269, 270, 271, 271, 272, 272, 273, 273, - 274, 274, 275, 275, 276, 276, 276, 277, 277, 278, - 278, 279, 279, 280, 281, 281, 282, 282, 283, 284, - 284, 285, 285, 286, 286, 287, 287, 288, 288, 288, - 289, 289, 289, 290, 290, 291, 292, 292, 293, 293, - 294, 294, 295, 295, 296, 296, 296, 297, 297, 297, - 298, 298, 298, 299, 299, 300, 300, 301, 301, 302, - 302, 303, 303, 304, 304, 305, 305, 308, 320, 321, - 322, 322, 322, 322, 322, 323, 323, 325, 337, 338, - 339, 339, 339, 339, 340, 340, 342, 356, 357, 358, - 358, 358, 358, 359, 359, 359, 361, 380, 381, 382, - 382, 382, 382, 383, 383, 383, 384, 384, 384, 387, - 406, 423, 431, 441, 449, 466, 467, 468, 468, 468, - 468, 468, 469, 469, 469, 470, 470, 472, 481, 490, - 501, 510, 519, 528, 539, 548, 560, 574, 589, 600, - 617, 634, 651, 668, 683, 698, 711, 726, 735, 744, - 753, 762, 771, 780, 789, 798, 807, 816, 825, 834, - 843, 852, 865, 876, 887, 898, 907, 920, 929, 938, - 947, 954, 961, 970, 977, 986, 994, 1001, 1008, 1016, - 1025, 1033, 1049, 1057, 1065, 1073, 1081, 1089, 1098, 1107, - 1121, 1130, 1139, 1148, 1157, 1166, 1175, 1182, 1189, 1215, - 1223, 1230, 1237, 1244, 1251, 1259, 1267, 1275, 1282, 1293, - 1304, 1311, 1320, 1329, 1338, 1345, 1352, 1368, 1376, 1384, - 1394, 1404, 1414, 1428, 1436, 1449, 1460, 1468, 1481, 1490, - 1499, 1508, 1517, 1527, 1537, 1545, 1558, 1567, 1575, 1584, - 1592, 1605, 1614, 1624, 1631, 1641, 1651, 1661, 1671, 1681, - 1691, 1701, 1711, 1718, 1725, 1732, 1741, 1750, 1759, 1768, - 1775, 1785, 1805, 1812, 1830, 1843, 1856, 1865, 1874, 1883, - 1892, 1902, 1912, 1923, 1932, 1941, 1950, 1959, 1968, 1977, - 1986, 1999, 2012, 2021, 2028, 2037, 2046, 2055, 2064, 2073, - 2081, 2094, 2102, 2147, 2154, 2169, 2179, 2189, 2196, 2203, - 2210, 2219, 2227, 2241, 2262, 2283, 2295, 2307, 2319, 2328, - 2349, 2359, 2368, 2376, 2384, 2397, 2410, 2425, 2440, 2449, - 2458, 2464, 2473, 2482, 2492, 2502, 2512, 2521, 2531, 2540, - 2553, 2566, 2578, 2592, 2604, 2618, 2627, 2639, 2649, 2656, - 2663, 2672, 2681, 2691, 2701, 2711, 2718, 2725, 2734, 2743, - 2753, 2763, 2770, 2777, 2784, 2792, 2802, 2812, 2822, 2832, - 2842, 2852, 2898, 2908, 2916, 2924, 2939, 2948, 2953, 2954, - 2955, 2955, 2955, 2956, 2956, 2956, 2957, 2957, 2959, 2969, - 2978, 2985, 2992, 2999, 3006, 3013, 3020, 3025, 3026, 3027, - 3027, 3027, 3028, 3028, 3028, 3029, 3030, 3030, 3031, 3031, - 3032, 3032, 3033, 3034, 3035, 3036, 3037, 3038, 3040, 3049, - 3059, 3066, 3073, 3082, 3089, 3096, 3103, 3110, 3119, 3128, - 3135, 3142, 3152, 3162, 3172, 3182, 3192, 3202, 3207, 3208, - 3209, 3211, 3217, 3222, 3223, 3224, 3226, 3232, 3242, 3249, - 3258, 3266, 3271, 3272, 3274, 3274, 3274, 3275, 3275, 3276, - 3277, 3278, 3279, 3280, 3282, 3292, 3301, 3308, 3317, 3324, - 3333, 3341, 3354, 3362, 3375, 3380, 3381, 3382, 3382, 3383, - 3383, 3383, 3384, 3386, 3398, 3410, 3422, 3437, 3450, 3463, - 3474, 3479, 3480, 3481, 3481, 3483, 3498 + 0, 190, 190, 190, 191, 191, 192, 192, 193, 193, + 193, 194, 194, 195, 195, 196, 196, 197, 199, 205, + 210, 211, 212, 212, 212, 213, 213, 214, 214, 214, + 215, 215, 216, 216, 216, 217, 217, 218, 218, 218, + 219, 219, 219, 220, 220, 221, 221, 222, 222, 223, + 223, 224, 224, 225, 225, 226, 226, 227, 227, 228, + 228, 228, 229, 229, 230, 230, 230, 231, 231, 231, + 232, 232, 233, 233, 234, 234, 235, 235, 236, 236, + 236, 237, 237, 238, 238, 239, 239, 239, 240, 240, + 241, 241, 242, 242, 243, 243, 243, 244, 244, 245, + 245, 246, 246, 247, 247, 248, 248, 249, 249, 250, + 250, 251, 251, 252, 252, 252, 253, 253, 253, 254, + 254, 254, 255, 255, 255, 255, 256, 257, 257, 257, + 258, 258, 258, 259, 259, 260, 260, 261, 261, 261, + 262, 262, 262, 263, 263, 264, 264, 264, 265, 265, + 266, 266, 266, 267, 267, 268, 268, 269, 269, 270, + 271, 271, 272, 272, 273, 273, 274, 275, 275, 276, + 276, 277, 277, 278, 278, 279, 279, 280, 280, 280, + 281, 281, 282, 282, 283, 283, 284, 285, 285, 286, + 286, 287, 288, 288, 289, 289, 290, 290, 291, 291, + 292, 292, 292, 293, 293, 293, 294, 294, 295, 296, + 296, 297, 297, 298, 298, 299, 299, 300, 300, 300, + 301, 301, 301, 302, 302, 302, 303, 303, 304, 304, + 305, 305, 306, 306, 307, 307, 308, 308, 309, 309, + 312, 324, 325, 326, 326, 326, 326, 326, 327, 327, + 329, 341, 342, 343, 343, 343, 343, 344, 344, 346, + 360, 361, 362, 362, 362, 362, 363, 363, 363, 365, + 384, 385, 386, 386, 386, 386, 387, 387, 387, 388, + 388, 388, 391, 410, 427, 435, 445, 453, 470, 471, + 472, 472, 472, 472, 472, 473, 473, 473, 474, 474, + 476, 485, 494, 505, 514, 523, 532, 543, 552, 564, + 578, 593, 604, 621, 638, 655, 672, 687, 702, 715, + 730, 739, 748, 757, 766, 775, 784, 793, 802, 811, + 820, 829, 838, 847, 856, 869, 880, 891, 902, 911, + 924, 933, 942, 951, 958, 965, 974, 981, 990, 998, + 1005, 1012, 1020, 1029, 1037, 1053, 1061, 1069, 1077, 1085, + 1093, 1102, 1111, 1125, 1134, 1143, 1152, 1161, 1170, 1179, + 1186, 1193, 1219, 1227, 1234, 1241, 1248, 1255, 1263, 1271, + 1279, 1286, 1297, 1308, 1315, 1324, 1333, 1342, 1351, 1358, + 1365, 1372, 1388, 1396, 1404, 1414, 1424, 1434, 1448, 1456, + 1469, 1480, 1488, 1501, 1510, 1519, 1528, 1537, 1547, 1557, + 1565, 1578, 1587, 1595, 1604, 1612, 1625, 1634, 1644, 1651, + 1661, 1671, 1681, 1691, 1701, 1711, 1721, 1731, 1738, 1745, + 1752, 1761, 1770, 1779, 1788, 1795, 1805, 1825, 1832, 1850, + 1863, 1876, 1889, 1898, 1907, 1916, 1925, 1935, 1945, 1956, + 1965, 1974, 1983, 1992, 2001, 2010, 2019, 2032, 2045, 2054, + 2061, 2070, 2079, 2088, 2097, 2106, 2114, 2127, 2135, 2180, + 2187, 2202, 2212, 2222, 2229, 2236, 2243, 2252, 2260, 2274, + 2295, 2316, 2328, 2340, 2352, 2361, 2382, 2392, 2401, 2409, + 2417, 2430, 2443, 2458, 2473, 2482, 2491, 2497, 2506, 2515, + 2525, 2535, 2545, 2554, 2564, 2573, 2586, 2599, 2611, 2625, + 2637, 2651, 2660, 2672, 2682, 2689, 2696, 2705, 2714, 2724, + 2734, 2744, 2751, 2758, 2767, 2776, 2786, 2796, 2803, 2810, + 2817, 2825, 2835, 2845, 2855, 2865, 2875, 2885, 2931, 2941, + 2949, 2957, 2972, 2981, 2986, 2987, 2988, 2988, 2988, 2989, + 2989, 2989, 2990, 2990, 2992, 3002, 3011, 3018, 3025, 3032, + 3039, 3046, 3053, 3058, 3059, 3060, 3060, 3060, 3061, 3061, + 3061, 3062, 3063, 3063, 3064, 3064, 3065, 3065, 3066, 3067, + 3068, 3069, 3070, 3071, 3073, 3082, 3092, 3099, 3106, 3115, + 3122, 3129, 3136, 3143, 3152, 3161, 3168, 3175, 3185, 3195, + 3205, 3215, 3225, 3235, 3240, 3241, 3242, 3244, 3250, 3255, + 3256, 3257, 3259, 3265, 3275, 3282, 3291, 3299, 3304, 3305, + 3307, 3307, 3307, 3308, 3308, 3309, 3310, 3311, 3312, 3313, + 3315, 3325, 3334, 3341, 3350, 3357, 3366, 3374, 3387, 3395, + 3408, 3413, 3414, 3415, 3415, 3416, 3416, 3416, 3417, 3419, + 3431, 3443, 3455, 3470, 3483, 3496, 3507, 3512, 3513, 3514, + 3514, 3516, 3531 }; #endif @@ -1969,14 +1304,14 @@ static const char *const yytname[] = "VAR_LOCAL_DATA_PTR", "VAR_JOSTLE_TIMEOUT", "VAR_STUB_PRIME", "VAR_UNWANTED_REPLY_THRESHOLD", "VAR_LOG_TIME_ASCII", "VAR_DOMAIN_INSECURE", "VAR_PYTHON", "VAR_PYTHON_SCRIPT", - "VAR_VAL_SIG_SKEW_MIN", "VAR_VAL_SIG_SKEW_MAX", "VAR_CACHE_MIN_TTL", - "VAR_VAL_LOG_LEVEL", "VAR_AUTO_TRUST_ANCHOR_FILE", "VAR_KEEP_MISSING", - "VAR_ADD_HOLDDOWN", "VAR_DEL_HOLDDOWN", "VAR_SO_RCVBUF", - "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH", "VAR_PREFETCH_KEY", - "VAR_SO_SNDBUF", "VAR_SO_REUSEPORT", "VAR_HARDEN_BELOW_NXDOMAIN", - "VAR_IGNORE_CD_FLAG", "VAR_LOG_QUERIES", "VAR_LOG_REPLIES", - "VAR_LOG_LOCAL_ACTIONS", "VAR_TCP_UPSTREAM", "VAR_SSL_UPSTREAM", - "VAR_TCP_AUTH_QUERY_TIMEOUT", "VAR_SSL_SERVICE_KEY", + "VAR_VAL_SIG_SKEW_MIN", "VAR_VAL_SIG_SKEW_MAX", "VAR_VAL_MAX_RESTART", + "VAR_CACHE_MIN_TTL", "VAR_VAL_LOG_LEVEL", "VAR_AUTO_TRUST_ANCHOR_FILE", + "VAR_KEEP_MISSING", "VAR_ADD_HOLDDOWN", "VAR_DEL_HOLDDOWN", + "VAR_SO_RCVBUF", "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH", + "VAR_PREFETCH_KEY", "VAR_SO_SNDBUF", "VAR_SO_REUSEPORT", + "VAR_HARDEN_BELOW_NXDOMAIN", "VAR_IGNORE_CD_FLAG", "VAR_LOG_QUERIES", + "VAR_LOG_REPLIES", "VAR_LOG_LOCAL_ACTIONS", "VAR_TCP_UPSTREAM", + "VAR_SSL_UPSTREAM", "VAR_TCP_AUTH_QUERY_TIMEOUT", "VAR_SSL_SERVICE_KEY", "VAR_SSL_SERVICE_PEM", "VAR_SSL_PORT", "VAR_FORWARD_FIRST", "VAR_STUB_SSL_UPSTREAM", "VAR_FORWARD_SSL_UPSTREAM", "VAR_TLS_CERT_BUNDLE", "VAR_HTTPS_PORT", "VAR_HTTP_ENDPOINT", @@ -2020,7 +1355,8 @@ static const char *const yytname[] = "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_TRUST_ANCHOR_SIGNALING", + "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", "VAR_DNSCRYPT_ENABLE", "VAR_DNSCRYPT_PORT", "VAR_DNSCRYPT_PROVIDER", @@ -2093,7 +1429,8 @@ static const char *const yytname[] = "server_trusted_keys_file", "server_trust_anchor", "server_trust_anchor_signaling", "server_root_key_sentinel", "server_domain_insecure", "server_hide_identity", "server_hide_version", - "server_hide_trustanchor", "server_identity", "server_version", + "server_hide_trustanchor", "server_hide_http_user_agent", + "server_identity", "server_version", "server_http_user_agent", "server_nsid", "server_so_rcvbuf", "server_so_sndbuf", "server_so_reuseport", "server_ip_transparent", "server_ip_freebind", "server_ip_dscp", "server_stream_wait_size", "server_edns_buffer_size", @@ -2116,17 +1453,17 @@ static const char *const yytname[] = "server_do_not_query_address", "server_do_not_query_localhost", "server_access_control", "server_module_conf", "server_val_override_date", "server_val_sig_skew_min", - "server_val_sig_skew_max", "server_cache_max_ttl", - "server_cache_max_negative_ttl", "server_cache_min_ttl", - "server_bogus_ttl", "server_val_clean_additional", - "server_val_permissive_mode", "server_aggressive_nsec", - "server_ignore_cd_flag", "server_serve_expired", - "server_serve_expired_ttl", "server_serve_expired_ttl_reset", - "server_serve_expired_reply_ttl", "server_serve_expired_client_timeout", - "server_serve_original_ttl", "server_fake_dsa", "server_fake_sha1", - "server_val_log_level", "server_val_nsec3_keysize_iterations", - "server_zonemd_permissive_mode", "server_add_holddown", - "server_del_holddown", "server_keep_missing", + "server_val_sig_skew_max", "server_val_max_restart", + "server_cache_max_ttl", "server_cache_max_negative_ttl", + "server_cache_min_ttl", "server_bogus_ttl", + "server_val_clean_additional", "server_val_permissive_mode", + "server_aggressive_nsec", "server_ignore_cd_flag", + "server_serve_expired", "server_serve_expired_ttl", + "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl", + "server_serve_expired_client_timeout", "server_serve_original_ttl", + "server_fake_dsa", "server_fake_sha1", "server_val_log_level", + "server_val_nsec3_keysize_iterations", "server_zonemd_permissive_mode", + "server_add_holddown", "server_del_holddown", "server_keep_missing", "server_permit_small_holddown", "server_key_cache_size", "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone", "server_local_data", "server_local_data_ptr", "server_minimal_responses", @@ -2231,11 +1568,11 @@ static const yytype_int16 yytoknum[] = 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, - 565, 566, 567, 568, 569 + 565, 566, 567, 568, 569, 570, 571, 572 }; #endif -#define YYPACT_NINF (-299) +#define YYPACT_NINF (-302) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -2249,104 +1586,105 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -299, 0, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, 295, -43, -38, -42, -44, -28, -29, -148, - -109, -298, -191, -189, -290, 3, 4, 27, 28, 31, + -302, 0, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, 298, -43, -38, -42, -44, -28, -29, -149, + -109, -301, -194, -192, -293, 3, 4, 27, 28, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 53, 54, 55, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 87, 88, 90, 91, - 92, 94, 96, 97, 98, 100, 101, 102, 103, 105, + 80, 81, 82, 83, 84, 85, 87, 88, 89, 91, + 92, 93, 95, 97, 98, 99, 101, 102, 103, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 136, 137, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 156, 157, 158, + 148, 149, 150, 151, 152, 153, 154, 155, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, + 169, 170, 171, 172, 173, 174, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 215, 216, 217, 219, 225, 226, - 227, 228, 229, 231, 232, 234, 240, 241, 242, 243, - 244, 245, 247, 248, 249, 250, 251, 252, 253, 255, - 256, 257, 258, 261, 262, 269, 270, 271, 272, 273, + 210, 211, 212, 213, 214, 216, 217, 218, 219, 220, + 222, 228, 229, 230, 231, 232, 234, 235, 237, 243, + 244, 245, 246, 247, 248, 250, 251, 252, 253, 254, + 255, 256, 258, 259, 260, 261, 264, 265, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 288, 289, 290, 292, 293, 294, 296, - 330, 331, 332, 333, 337, 338, 339, 381, 382, 383, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, 384, 385, 386, 387, - 388, 389, 395, -299, -299, -299, -299, -299, -299, -299, - -299, 399, 400, 426, 427, 428, 437, -299, -299, -299, - -299, -299, -299, -299, 450, 451, 452, 453, 454, 455, - 456, -299, -299, -299, -299, -299, -299, -299, -299, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - 467, 468, 469, 509, 511, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, 528, 529, 530, 531, - 532, 533, 534, 535, -299, -299, -299, -299, -299, -299, - -299, -299, -299, 536, 537, 538, 549, 550, 551, 552, - 553, 554, 555, 557, 558, 559, 560, 561, 562, 563, - 566, 569, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, 572, -299, -299, 573, -299, -299, 582, 583, - 584, 586, 587, 588, 589, 590, 591, 592, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, 593, - 598, 599, 600, 601, 602, -299, -299, -299, -299, -299, - -299, -299, 603, 604, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, 605, 606, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, 607, 608, 609, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, 610, - 611, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - 612, 613, 614, 615, 616, 617, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, 618, -299, - -299, -299, -299, -299, -299, -299, -299, -299, 619, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, 620, -299, -299, 621, - 622, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, 623, 624, 625, -299, -299, -299, -299, - -299, -299, -299, -299, -299 + 284, 285, 286, 287, 288, 289, 291, 292, 293, 295, + 296, 297, 299, 333, 334, 335, 336, 340, 341, 342, + 384, 385, 386, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, 387, 388, 389, 390, 391, 392, 398, -302, + -302, -302, -302, -302, -302, -302, -302, 402, 403, 430, + 431, 432, 441, -302, -302, -302, -302, -302, -302, -302, + 454, 455, 456, 457, 458, 459, 460, -302, -302, -302, + -302, -302, -302, -302, -302, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, 471, 472, 473, 513, + 515, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, 534, 535, 536, 537, 538, 539, 540, 541, + -302, -302, -302, -302, -302, -302, -302, -302, -302, 542, + 543, 544, 555, 556, 557, 558, 559, 560, 561, 563, + 564, 565, 566, 567, 568, 569, 572, 575, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, 578, -302, + -302, 579, -302, -302, 588, 589, 590, 592, 593, 594, + 595, 596, 597, 598, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, 599, 604, 605, 606, 607, + 608, -302, -302, -302, -302, -302, -302, -302, 609, 610, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, 611, 612, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, 613, 614, 615, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, 616, 617, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, 618, 619, 620, + 621, 622, 623, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, 624, -302, -302, + -302, -302, -302, -302, -302, -302, -302, 625, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, 626, -302, -302, 627, 628, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, 629, 630, 631, -302, -302, -302, -302, -302, + -302, -302, -302, -302 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -2354,10 +1692,10 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 2, 0, 1, 18, 19, 237, 247, 537, 597, 556, - 256, 611, 634, 266, 650, 284, 602, 3, 17, 21, - 239, 249, 258, 268, 286, 539, 558, 599, 604, 613, - 636, 652, 4, 5, 6, 10, 14, 15, 8, 9, + 2, 0, 1, 18, 19, 240, 250, 543, 603, 562, + 259, 617, 640, 269, 656, 287, 608, 3, 17, 21, + 242, 252, 261, 271, 289, 545, 564, 605, 610, 619, + 642, 658, 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, @@ -2380,156 +1718,159 @@ 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, - 20, 22, 23, 86, 89, 98, 200, 201, 24, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 37, - 77, 25, 90, 91, 48, 70, 85, 26, 27, 30, - 31, 28, 29, 32, 33, 34, 234, 235, 236, 35, - 36, 121, 212, 122, 124, 125, 126, 214, 219, 215, - 226, 227, 228, 229, 127, 128, 129, 130, 131, 132, - 133, 196, 87, 76, 102, 119, 120, 224, 221, 123, - 38, 39, 40, 41, 42, 78, 92, 93, 108, 64, - 74, 65, 204, 205, 103, 58, 59, 203, 60, 61, - 232, 112, 116, 137, 147, 174, 150, 225, 113, 71, - 43, 44, 45, 100, 138, 139, 140, 141, 46, 47, - 49, 50, 52, 53, 51, 145, 151, 54, 55, 56, - 62, 81, 117, 95, 146, 88, 170, 96, 97, 114, - 115, 222, 101, 57, 79, 82, 63, 66, 104, 105, - 80, 171, 106, 67, 68, 69, 213, 118, 188, 189, - 190, 191, 192, 193, 194, 202, 107, 75, 233, 109, - 110, 111, 172, 72, 73, 94, 83, 84, 99, 134, - 135, 223, 136, 142, 143, 144, 175, 176, 178, 180, - 181, 179, 182, 197, 148, 149, 154, 155, 152, 153, - 156, 157, 159, 158, 216, 218, 217, 173, 183, 184, - 185, 186, 187, 206, 208, 207, 209, 210, 211, 230, - 231, 177, 195, 198, 199, 220, 0, 0, 0, 0, - 0, 0, 0, 238, 240, 241, 242, 244, 245, 246, - 243, 0, 0, 0, 0, 0, 0, 248, 250, 251, - 252, 253, 254, 255, 0, 0, 0, 0, 0, 0, - 0, 257, 259, 260, 263, 264, 261, 265, 262, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 267, - 269, 270, 271, 272, 276, 277, 278, 273, 274, 275, - 0, 0, 0, 0, 0, 289, 293, 294, 295, 296, - 285, 287, 288, 290, 291, 292, 0, 0, 0, 0, - 0, 0, 0, 0, 538, 540, 542, 541, 547, 543, - 544, 545, 546, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 20, 22, 23, 88, 91, 100, 203, + 204, 24, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 37, 79, 25, 92, 93, 48, 72, 87, + 26, 27, 30, 31, 28, 29, 32, 33, 34, 237, + 238, 239, 35, 36, 124, 215, 125, 127, 128, 129, + 217, 222, 218, 229, 230, 231, 232, 130, 131, 132, + 133, 134, 135, 136, 199, 89, 78, 104, 122, 123, + 227, 224, 126, 38, 39, 40, 41, 42, 80, 94, + 95, 111, 66, 76, 67, 207, 208, 105, 58, 59, + 206, 62, 60, 61, 63, 235, 115, 119, 140, 150, + 177, 153, 228, 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, 173, 98, 99, 117, 118, 225, 103, 57, 81, + 84, 65, 68, 106, 107, 108, 82, 174, 109, 69, + 70, 71, 216, 121, 191, 192, 193, 194, 195, 196, + 197, 205, 110, 77, 236, 112, 113, 114, 175, 74, + 75, 96, 85, 86, 101, 137, 138, 226, 139, 145, + 146, 147, 178, 179, 181, 183, 184, 182, 185, 200, + 151, 152, 157, 158, 155, 156, 159, 160, 162, 161, + 219, 221, 220, 176, 186, 187, 188, 189, 190, 209, + 211, 210, 212, 213, 214, 233, 234, 180, 198, 201, + 202, 223, 0, 0, 0, 0, 0, 0, 0, 241, + 243, 244, 245, 247, 248, 249, 246, 0, 0, 0, + 0, 0, 0, 251, 253, 254, 255, 256, 257, 258, + 0, 0, 0, 0, 0, 0, 0, 260, 262, 263, + 266, 267, 264, 268, 265, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 270, 272, 273, 274, 275, + 279, 280, 281, 276, 277, 278, 0, 0, 0, 0, + 0, 292, 296, 297, 298, 299, 288, 290, 291, 293, + 294, 295, 0, 0, 0, 0, 0, 0, 0, 0, + 544, 546, 548, 547, 553, 549, 550, 551, 552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 557, 559, 561, 560, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 0, 598, 600, 0, 603, 605, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 612, 614, - 615, 616, 618, 619, 617, 620, 621, 622, 623, 0, - 0, 0, 0, 0, 0, 635, 637, 638, 639, 640, - 641, 642, 0, 0, 651, 653, 654, 298, 297, 304, - 317, 315, 327, 323, 324, 328, 325, 326, 329, 330, - 331, 335, 336, 366, 367, 368, 369, 370, 396, 397, - 398, 404, 405, 320, 406, 407, 410, 408, 409, 413, - 414, 415, 429, 381, 382, 384, 385, 416, 432, 375, - 377, 433, 439, 440, 441, 321, 395, 459, 460, 376, - 453, 359, 316, 371, 430, 436, 417, 0, 0, 463, - 322, 299, 358, 421, 300, 318, 319, 372, 373, 461, - 419, 423, 424, 333, 332, 301, 464, 399, 428, 360, - 380, 434, 435, 438, 452, 374, 457, 455, 456, 387, - 394, 425, 426, 388, 389, 418, 443, 361, 362, 365, - 337, 339, 334, 340, 341, 342, 343, 350, 351, 352, - 353, 354, 355, 356, 465, 466, 468, 400, 401, 402, - 403, 411, 412, 469, 470, 471, 0, 0, 0, 420, - 390, 392, 607, 480, 484, 482, 481, 485, 483, 0, - 0, 488, 489, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 422, 437, 458, 493, 494, 391, 472, - 0, 0, 0, 0, 0, 0, 444, 445, 446, 447, - 448, 449, 450, 451, 608, 383, 378, 442, 357, 302, - 303, 379, 495, 496, 497, 498, 499, 501, 500, 502, - 503, 504, 338, 345, 490, 492, 491, 344, 0, 364, - 427, 467, 363, 393, 346, 347, 349, 348, 0, 506, - 386, 454, 507, 508, 509, 513, 512, 510, 511, 514, - 515, 516, 517, 519, 518, 530, 0, 534, 535, 0, - 0, 536, 520, 528, 521, 522, 523, 527, 529, 524, - 525, 526, 279, 280, 281, 282, 283, 548, 550, 549, - 552, 553, 554, 555, 551, 578, 580, 581, 582, 583, - 584, 585, 586, 587, 588, 579, 589, 590, 591, 592, - 593, 594, 595, 596, 601, 606, 624, 625, 626, 629, - 627, 628, 630, 631, 632, 633, 643, 644, 645, 646, - 647, 648, 655, 656, 431, 462, 479, 609, 610, 486, - 487, 473, 474, 0, 0, 0, 478, 649, 505, 531, - 532, 533, 477, 475, 476 + 0, 0, 0, 0, 0, 0, 0, 0, 563, 565, + 567, 566, 568, 569, 570, 571, 572, 573, 574, 575, + 576, 577, 578, 579, 580, 581, 582, 583, 0, 604, + 606, 0, 609, 611, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 618, 620, 621, 622, 624, 625, + 623, 626, 627, 628, 629, 0, 0, 0, 0, 0, + 0, 641, 643, 644, 645, 646, 647, 648, 0, 0, + 657, 659, 660, 301, 300, 307, 320, 318, 330, 326, + 327, 331, 328, 329, 332, 333, 334, 338, 339, 369, + 370, 371, 372, 373, 401, 402, 403, 409, 410, 323, + 411, 412, 415, 413, 414, 418, 419, 420, 434, 384, + 385, 388, 389, 421, 437, 378, 380, 438, 445, 446, + 447, 324, 400, 465, 466, 379, 459, 362, 319, 374, + 435, 442, 422, 0, 0, 469, 325, 302, 361, 426, + 303, 321, 322, 375, 376, 467, 424, 428, 429, 336, + 335, 304, 470, 404, 433, 363, 383, 439, 440, 441, + 444, 458, 377, 463, 461, 462, 392, 399, 430, 431, + 393, 394, 423, 449, 364, 365, 368, 340, 342, 337, + 343, 344, 345, 346, 353, 354, 355, 356, 357, 358, + 359, 471, 472, 474, 405, 406, 407, 408, 416, 417, + 475, 476, 477, 0, 0, 0, 425, 395, 397, 613, + 486, 490, 488, 487, 491, 489, 0, 0, 494, 495, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 427, 443, 464, 499, 500, 396, 478, 0, 0, 0, + 0, 0, 0, 450, 451, 452, 453, 454, 455, 456, + 457, 614, 386, 387, 390, 381, 448, 360, 305, 306, + 382, 501, 502, 503, 504, 505, 507, 506, 508, 509, + 510, 341, 348, 496, 498, 497, 347, 0, 367, 432, + 473, 366, 398, 349, 350, 352, 351, 0, 512, 391, + 460, 513, 514, 515, 519, 518, 516, 517, 520, 521, + 522, 523, 525, 524, 536, 0, 540, 541, 0, 0, + 542, 526, 534, 527, 528, 529, 533, 535, 530, 531, + 532, 282, 283, 284, 285, 286, 554, 556, 555, 558, + 559, 560, 561, 557, 584, 586, 587, 588, 589, 590, + 591, 592, 593, 594, 585, 595, 596, 597, 598, 599, + 600, 601, 602, 607, 612, 630, 631, 632, 635, 633, + 634, 636, 637, 638, 639, 649, 650, 651, 652, 653, + 654, 661, 662, 436, 468, 485, 615, 616, 492, 493, + 479, 480, 0, 0, 0, 484, 655, 511, 537, 538, + 539, 483, 481, 482 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - 268, 626, 627, 628, 629, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299 + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, 271, 632, 633, 634, 635, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 17, 18, 19, 32, 260, 20, 33, 483, - 21, 34, 497, 22, 35, 511, 23, 36, 529, 545, - 546, 547, 548, 549, 24, 37, 550, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 470, 484, 485, 486, - 487, 488, 489, 490, 498, 499, 500, 501, 502, 503, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 512, 513, 514, 515, 516, 517, 518, 25, 38, 564, - 565, 566, 567, 568, 569, 570, 571, 572, 26, 39, - 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, - 27, 40, 613, 614, 28, 41, 616, 617, 471, 472, - 473, 474, 29, 42, 628, 629, 630, 631, 632, 633, - 634, 635, 636, 637, 638, 30, 43, 645, 646, 647, - 648, 649, 650, 651, 475, 31, 44, 654, 655, 656 + -1, 1, 17, 18, 19, 32, 263, 20, 33, 489, + 21, 34, 503, 22, 35, 517, 23, 36, 535, 551, + 552, 553, 554, 555, 24, 37, 556, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 490, 491, 492, 493, 494, 495, 496, 504, 505, 506, + 507, 508, 509, 536, 537, 538, 539, 540, 541, 542, + 543, 544, 545, 518, 519, 520, 521, 522, 523, 524, + 25, 38, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 26, 39, 598, 599, 600, 601, 602, 603, 604, + 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, + 615, 616, 617, 27, 40, 619, 620, 28, 41, 622, + 623, 477, 478, 479, 480, 29, 42, 634, 635, 636, + 637, 638, 639, 640, 641, 642, 643, 644, 30, 43, + 651, 652, 653, 654, 655, 656, 657, 481, 31, 44, + 660, 661, 662 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -2537,155 +1878,157 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 2, 519, 476, 504, 477, 478, 612, 491, 652, 653, - 615, 3, 4, 657, 658, 492, 493, 519, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 659, 660, 505, - 506, 661, 662, 663, 664, 665, 5, 666, 667, 668, - 669, 670, 6, 618, 619, 620, 621, 622, 623, 624, - 625, 626, 627, 671, 672, 673, 507, 479, 556, 557, - 558, 559, 560, 561, 562, 563, 639, 640, 641, 642, - 643, 644, 674, 675, 676, 677, 678, 679, 680, 681, - 682, 683, 684, 685, 686, 687, 7, 688, 689, 480, - 690, 691, 692, 494, 693, 495, 694, 695, 696, 481, - 697, 698, 699, 700, 8, 701, 702, 703, 704, 705, - 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, - 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, - 726, 727, 728, 729, 508, 509, 730, 731, 732, 733, - 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, - 744, 745, 746, 747, 748, 9, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 510, 767, 768, 769, 770, 771, - 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, - 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, - 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, - 802, 803, 804, 805, 10, 806, 807, 808, 520, 809, - 521, 522, 523, 524, 525, 810, 811, 812, 813, 814, - 526, 815, 816, 11, 817, 482, 521, 522, 523, 496, - 818, 819, 820, 821, 822, 823, 526, 824, 825, 826, - 827, 828, 829, 830, 12, 831, 832, 833, 834, 527, - 528, 835, 836, 13, 540, 541, 542, 543, 544, 837, - 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, - 848, 849, 850, 851, 852, 853, 854, 14, 855, 856, - 857, 15, 858, 859, 860, 551, 861, 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, - 862, 863, 864, 865, 77, 78, 79, 866, 867, 868, - 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, 869, 870, 871, 872, 873, 874, 875, 876, 877, - 121, 122, 123, 124, 125, 878, 126, 127, 128, 879, - 880, 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, 881, 882, 883, 154, - 155, 156, 157, 158, 159, 160, 161, 884, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, - 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 905, - 213, 906, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 907, 908, - 909, 910, 911, 912, 913, 914, 915, 916, 917, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 918, - 919, 920, 921, 922, 923, 924, 240, 925, 926, 927, - 928, 929, 930, 931, 241, 242, 932, 243, 244, 933, - 245, 246, 934, 935, 247, 248, 249, 250, 251, 252, - 253, 254, 936, 937, 938, 255, 939, 940, 941, 942, - 943, 944, 945, 946, 256, 257, 258, 259, 947, 948, - 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, - 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, - 969, 970, 971, 972, 973, 974, 0, 0, 0, 0, + 2, 525, 482, 510, 483, 484, 618, 497, 658, 659, + 621, 3, 4, 663, 664, 498, 499, 525, 579, 580, + 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, + 591, 592, 593, 594, 595, 596, 597, 665, 666, 511, + 512, 667, 668, 669, 670, 671, 5, 672, 673, 674, + 675, 676, 6, 624, 625, 626, 627, 628, 629, 630, + 631, 632, 633, 677, 678, 679, 513, 485, 562, 563, + 564, 565, 566, 567, 568, 569, 645, 646, 647, 648, + 649, 650, 680, 681, 682, 683, 684, 685, 686, 687, + 688, 689, 690, 691, 692, 693, 7, 694, 695, 696, + 486, 697, 698, 699, 500, 700, 501, 701, 702, 703, + 487, 704, 705, 706, 8, 707, 708, 709, 710, 711, + 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, + 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, + 732, 733, 734, 735, 736, 514, 515, 737, 738, 739, + 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, + 750, 751, 752, 753, 754, 755, 9, 756, 757, 758, + 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, + 769, 770, 771, 772, 773, 516, 774, 775, 776, 777, + 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, + 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, + 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, + 808, 809, 810, 811, 812, 10, 813, 814, 815, 816, + 817, 526, 818, 527, 528, 529, 530, 531, 819, 820, + 821, 822, 823, 532, 824, 825, 11, 826, 488, 527, + 528, 529, 502, 827, 828, 829, 830, 831, 832, 532, + 833, 834, 835, 836, 837, 838, 839, 12, 840, 841, + 842, 843, 533, 534, 844, 845, 13, 546, 547, 548, + 549, 550, 846, 847, 848, 849, 850, 851, 852, 853, + 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, + 14, 864, 865, 866, 15, 867, 868, 869, 557, 870, + 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, 871, 872, 873, 874, 77, 78, 79, + 875, 876, 877, 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, 878, 879, 880, 881, 882, 883, + 884, 885, 886, 121, 122, 123, 124, 125, 887, 126, + 127, 128, 888, 889, 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, + 890, 891, 892, 155, 156, 157, 158, 159, 160, 161, + 162, 893, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 894, 895, 896, 897, 898, 899, + 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, + 910, 911, 912, 913, 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, 914, 214, 915, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 916, 917, 918, 919, 920, 921, + 922, 923, 924, 925, 926, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 927, 928, 929, 930, 931, + 932, 933, 243, 934, 935, 936, 937, 938, 939, 940, + 244, 245, 941, 246, 247, 942, 248, 249, 943, 944, + 250, 251, 252, 253, 254, 255, 256, 257, 945, 946, + 947, 258, 948, 949, 950, 951, 952, 953, 954, 955, + 259, 260, 261, 262, 956, 957, 958, 959, 960, 961, + 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, + 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, + 982, 983, 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, 552, 553, 554, 555 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 558, + 559, 560, 561 }; static const yytype_int16 yycheck[] = { - 0, 45, 45, 45, 47, 48, 115, 45, 298, 299, - 308, 11, 12, 10, 10, 53, 54, 45, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 10, 10, 81, + 0, 45, 45, 45, 47, 48, 115, 45, 301, 302, + 311, 11, 12, 10, 10, 53, 54, 45, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 10, 10, 81, 82, 10, 10, 10, 10, 10, 46, 10, 10, 10, - 10, 10, 52, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 10, 10, 10, 108, 110, 97, 98, - 99, 100, 101, 102, 103, 104, 265, 266, 267, 268, - 269, 270, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 96, 10, 10, 142, - 10, 10, 10, 141, 10, 143, 10, 10, 10, 152, - 10, 10, 10, 10, 114, 10, 10, 10, 10, 10, + 10, 10, 52, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 10, 10, 10, 108, 110, 97, 98, + 99, 100, 101, 102, 103, 104, 268, 269, 270, 271, + 272, 273, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 96, 10, 10, 10, + 143, 10, 10, 10, 142, 10, 144, 10, 10, 10, + 153, 10, 10, 10, 114, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 186, 187, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 187, 188, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 165, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 166, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 226, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 227, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 224, 10, 10, 10, 272, 10, - 274, 275, 276, 277, 278, 10, 10, 10, 10, 10, - 284, 10, 10, 243, 10, 288, 274, 275, 276, 287, - 10, 10, 10, 10, 10, 10, 284, 10, 10, 10, - 10, 10, 10, 10, 264, 10, 10, 10, 10, 313, - 314, 10, 10, 273, 302, 303, 304, 305, 306, 10, + 10, 10, 10, 10, 10, 225, 10, 10, 10, 10, + 10, 275, 10, 277, 278, 279, 280, 281, 10, 10, + 10, 10, 10, 287, 10, 10, 246, 10, 291, 277, + 278, 279, 290, 10, 10, 10, 10, 10, 10, 287, + 10, 10, 10, 10, 10, 10, 10, 267, 10, 10, + 10, 10, 316, 317, 10, 10, 276, 305, 306, 307, + 308, 309, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 297, 10, 10, - 10, 301, 10, 10, 10, 37, 10, 307, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 10, 10, 10, 10, 49, 50, 51, 10, 10, 10, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 105, 106, 107, 108, 109, 10, 111, 112, 113, 10, - 10, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 10, 10, 10, 144, - 145, 146, 147, 148, 149, 150, 151, 10, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 300, 10, 10, 10, 304, 10, 10, 10, 37, 10, + 310, 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, 146, 147, 148, 149, 150, 151, + 152, 10, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 10, 226, 10, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 10, 10, 10, 10, 10, + 10, 10, 274, 10, 10, 10, 10, 10, 10, 10, + 282, 283, 10, 285, 286, 10, 288, 289, 10, 10, + 292, 293, 294, 295, 296, 297, 298, 299, 10, 10, + 10, 303, 10, 10, 10, 10, 10, 10, 10, 10, + 312, 313, 314, 315, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 10, - 225, 10, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 10, - 10, 10, 10, 10, 10, 10, 271, 10, 10, 10, - 10, 10, 10, 10, 279, 280, 10, 282, 283, 10, - 285, 286, 10, 10, 289, 290, 291, 292, 293, 294, - 295, 296, 10, 10, 10, 300, 10, 10, 10, 10, - 10, 10, 10, 10, 309, 310, 311, 312, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, -1, -1, -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, 37, 37, 37, 37 + -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, + 37, 37, 37 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 316, 0, 11, 12, 46, 52, 96, 114, 165, - 224, 243, 264, 273, 297, 301, 307, 317, 318, 319, - 322, 325, 328, 331, 339, 582, 593, 615, 619, 627, - 640, 650, 320, 323, 326, 329, 332, 340, 583, 594, - 616, 620, 628, 641, 651, 13, 14, 15, 16, 17, + 0, 319, 0, 11, 12, 46, 52, 96, 114, 166, + 225, 246, 267, 276, 300, 304, 310, 320, 321, 322, + 325, 328, 331, 334, 342, 588, 599, 621, 625, 633, + 646, 656, 323, 326, 329, 332, 335, 343, 589, 600, + 622, 626, 634, 647, 657, 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, @@ -2696,18 +2039,18 @@ static const yytype_int16 yystos[] = 95, 105, 106, 107, 108, 109, 111, 112, 113, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 144, 145, 146, 147, 148, 149, - 150, 151, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 185, 186, 187, 188, 189, 190, + 137, 138, 139, 140, 141, 145, 146, 147, 148, 149, + 150, 151, 152, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 225, 227, 228, 229, 230, 231, 232, + 221, 222, 223, 224, 226, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 271, 279, 280, 282, 283, 285, 286, 289, 290, 291, - 292, 293, 294, 295, 296, 300, 309, 310, 311, 312, - 321, 342, 343, 344, 345, 346, 347, 348, 349, 350, + 243, 244, 245, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 274, 282, 283, 285, 286, 288, 289, + 292, 293, 294, 295, 296, 297, 298, 299, 303, 312, + 313, 314, 315, 324, 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, @@ -2728,25 +2071,26 @@ static const yytype_int16 yystos[] = 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, 623, 624, 625, 626, 649, 45, 47, 48, 110, - 142, 152, 288, 324, 552, 553, 554, 555, 556, 557, - 558, 45, 53, 54, 141, 143, 287, 327, 559, 560, - 561, 562, 563, 564, 45, 81, 82, 108, 186, 187, - 226, 330, 575, 576, 577, 578, 579, 580, 581, 45, - 272, 274, 275, 276, 277, 278, 284, 313, 314, 333, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 302, 303, 304, 305, 306, 334, 335, 336, 337, 338, - 341, 565, 566, 567, 568, 569, 97, 98, 99, 100, - 101, 102, 103, 104, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 595, 596, 597, 598, 599, 600, 601, 602, + 551, 552, 553, 554, 555, 556, 557, 629, 630, 631, + 632, 655, 45, 47, 48, 110, 143, 153, 291, 327, + 558, 559, 560, 561, 562, 563, 564, 45, 53, 54, + 142, 144, 290, 330, 565, 566, 567, 568, 569, 570, + 45, 81, 82, 108, 187, 188, 227, 333, 581, 582, + 583, 584, 585, 586, 587, 45, 275, 277, 278, 279, + 280, 281, 287, 316, 317, 336, 571, 572, 573, 574, + 575, 576, 577, 578, 579, 580, 305, 306, 307, 308, + 309, 337, 338, 339, 340, 341, 344, 571, 572, 573, + 574, 575, 97, 98, 99, 100, 101, 102, 103, 104, + 590, 591, 592, 593, 594, 595, 596, 597, 598, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, - 613, 614, 115, 617, 618, 308, 621, 622, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 629, 630, - 631, 632, 633, 634, 635, 636, 637, 638, 639, 265, - 266, 267, 268, 269, 270, 642, 643, 644, 645, 646, - 647, 648, 298, 299, 652, 653, 654, 10, 10, 10, + 613, 614, 615, 616, 617, 618, 619, 620, 115, 623, + 624, 311, 627, 628, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 635, 636, 637, 638, 639, 640, + 641, 642, 643, 644, 645, 268, 269, 270, 271, 272, + 273, 648, 649, 650, 651, 652, 653, 654, 301, 302, + 658, 659, 660, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -2778,42 +2122,42 @@ static const yytype_int16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10 + 10, 10, 10, 10 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int16 yyr1[] = { - 0, 315, 316, 316, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 318, 319, - 320, 320, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 322, 323, 323, - 324, 324, 324, 324, 324, 324, 324, 325, 326, 326, - 327, 327, 327, 327, 327, 327, 328, 329, 329, 330, - 330, 330, 330, 330, 330, 330, 331, 332, 332, 333, - 333, 333, 333, 333, 333, 333, 333, 333, 333, 334, - 335, 336, 337, 338, 339, 340, 340, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 342, 343, 344, + 0, 318, 319, 319, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 321, 322, + 323, 323, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 325, 326, 326, 327, 327, 327, 327, 327, 327, 327, + 328, 329, 329, 330, 330, 330, 330, 330, 330, 331, + 332, 332, 333, 333, 333, 333, 333, 333, 333, 334, + 335, 335, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 337, 338, 339, 340, 341, 342, 343, 343, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 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, @@ -2837,19 +2181,20 @@ static const yytype_int16 yyr1[] = 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, 583, - 584, 584, 584, 584, 584, 584, 584, 584, 585, 586, - 587, 588, 589, 590, 591, 592, 593, 594, 594, 595, - 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, - 595, 595, 595, 595, 595, 595, 595, 595, 596, 597, - 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 613, 614, 615, 616, 616, - 617, 618, 619, 620, 620, 621, 622, 623, 624, 625, - 626, 627, 628, 628, 629, 629, 629, 629, 629, 629, - 629, 629, 629, 629, 630, 631, 632, 633, 634, 635, - 636, 637, 638, 639, 640, 641, 641, 642, 642, 642, - 642, 642, 642, 643, 644, 645, 646, 647, 648, 649, - 650, 651, 651, 652, 652, 653, 654 + 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, + 585, 586, 587, 588, 589, 589, 590, 590, 590, 590, + 590, 590, 590, 590, 591, 592, 593, 594, 595, 596, + 597, 598, 599, 600, 600, 601, 601, 601, 601, 601, + 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, + 601, 601, 601, 601, 602, 603, 604, 605, 606, 607, + 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, + 618, 619, 620, 621, 622, 622, 623, 624, 625, 626, + 626, 627, 628, 629, 630, 631, 632, 633, 634, 634, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, + 646, 647, 647, 648, 648, 648, 648, 648, 648, 649, + 650, 651, 652, 653, 654, 655, 656, 657, 657, 658, + 658, 659, 660 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -2878,13 +2223,13 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, - 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 1, 2, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -2898,29 +2243,30 @@ static const yytype_int8 yyr2[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 3, 3, 4, 4, 4, 3, 3, - 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 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, + 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, 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 + 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 }; @@ -3132,7 +2478,7 @@ yydestruct (const char *yymsg, } -/* The lookahead symbol. */ +/* Lookahead token kind. */ int yychar; /* The semantic value of the lookahead symbol. */ @@ -3150,34 +2496,30 @@ int yynerrs; int yyparse (void) { - yy_state_fast_t yystate; + yy_state_fast_t yystate = 0; /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; + int yyerrstatus = 0; - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - - Refer to the stacks through separate pointers, to allow yyoverflow + /* Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* Their size. */ - YYPTRDIFF_T yystacksize; + YYPTRDIFF_T yystacksize = YYINITDEPTH; - /* The state stack. */ + /* The state stack: array, bottom, top. */ yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss; - yy_state_t *yyssp; + yy_state_t *yyss = yyssa; + yy_state_t *yyssp = yyss; - /* The semantic value stack. */ + /* The semantic value stack: array, bottom, top. */ YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp = yyvs; int yyn; /* The return value of yyparse. */ int yyresult; - /* Lookahead token as an internal (translated) token number. */ + /* Lookahead symbol kind. */ yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ @@ -3191,15 +2533,6 @@ yyparse (void) Keep to zero when no symbol should be popped. */ int yylen = 0; - yynerrs = 0; - yystate = 0; - yyerrstatus = 0; - - yystacksize = YYINITDEPTH; - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - - YYDPRINTF ((stderr, "Starting parse\n")); yychar = YYEMPTY; /* Cause a token to be read. */ @@ -3400,24 +2733,24 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 18: -#line 198 "./util/configparser.y" + case 18: /* force_toplevel: VAR_FORCE_TOPLEVEL */ +#line 200 "./util/configparser.y" { OUTYY(("\nP(force-toplevel)\n")); } -#line 3409 "util/configparser.c" +#line 2742 "util/configparser.c" break; - case 19: -#line 204 "./util/configparser.y" + case 19: /* serverstart: VAR_SERVER */ +#line 206 "./util/configparser.y" { OUTYY(("\nP(server:)\n")); } -#line 3417 "util/configparser.c" +#line 2750 "util/configparser.c" break; - case 237: -#line 309 "./util/configparser.y" + case 240: /* stubstart: VAR_STUB_ZONE */ +#line 313 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -3428,11 +2761,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3432 "util/configparser.c" +#line 2765 "util/configparser.c" break; - case 247: -#line 326 "./util/configparser.y" + case 250: /* forwardstart: VAR_FORWARD_ZONE */ +#line 330 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -3443,11 +2776,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3447 "util/configparser.c" +#line 2780 "util/configparser.c" break; - case 256: -#line 343 "./util/configparser.y" + case 259: /* viewstart: VAR_VIEW */ +#line 347 "./util/configparser.y" { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -3460,11 +2793,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3464 "util/configparser.c" +#line 2797 "util/configparser.c" break; - case 266: -#line 362 "./util/configparser.y" + case 269: /* authstart: VAR_AUTH_ZONE */ +#line 366 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -3482,11 +2815,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3486 "util/configparser.c" +#line 2819 "util/configparser.c" break; - case 279: -#line 388 "./util/configparser.y" + case 282: /* rpz_tag: VAR_TAGS STRING_ARG */ +#line 392 "./util/configparser.y" { uint8_t* bitlist; size_t len = 0; @@ -3503,11 +2836,11 @@ yyreduce: } } -#line 3507 "util/configparser.c" +#line 2840 "util/configparser.c" break; - case 280: -#line 407 "./util/configparser.y" + case 283: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */ +#line 411 "./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 && @@ -3522,21 +2855,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 3526 "util/configparser.c" +#line 2859 "util/configparser.c" break; - case 281: -#line 424 "./util/configparser.y" + case 284: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */ +#line 428 "./util/configparser.y" { OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_cname); cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); } -#line 3536 "util/configparser.c" +#line 2869 "util/configparser.c" break; - case 282: -#line 432 "./util/configparser.y" + case 285: /* rpz_log: VAR_RPZ_LOG STRING_ARG */ +#line 436 "./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) @@ -3544,21 +2877,21 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3548 "util/configparser.c" +#line 2881 "util/configparser.c" break; - case 283: -#line 442 "./util/configparser.y" + case 286: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */ +#line 446 "./util/configparser.y" { OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_log_name); cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); } -#line 3558 "util/configparser.c" +#line 2891 "util/configparser.c" break; - case 284: -#line 450 "./util/configparser.y" + case 287: /* rpzstart: VAR_RPZ */ +#line 454 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -3574,11 +2907,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3578 "util/configparser.c" +#line 2911 "util/configparser.c" break; - case 297: -#line 473 "./util/configparser.y" + case 300: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */ +#line 477 "./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) @@ -3586,11 +2919,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3590 "util/configparser.c" +#line 2923 "util/configparser.c" break; - case 298: -#line 482 "./util/configparser.y" + case 301: /* server_verbosity: VAR_VERBOSITY STRING_ARG */ +#line 486 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3598,11 +2931,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3602 "util/configparser.c" +#line 2935 "util/configparser.c" break; - case 299: -#line 491 "./util/configparser.y" + case 302: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */ +#line 495 "./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) @@ -3612,11 +2945,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3616 "util/configparser.c" +#line 2949 "util/configparser.c" break; - case 300: -#line 502 "./util/configparser.y" + case 303: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */ +#line 506 "./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) @@ -3624,11 +2957,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3628 "util/configparser.c" +#line 2961 "util/configparser.c" break; - case 301: -#line 511 "./util/configparser.y" + case 304: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */ +#line 515 "./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) @@ -3636,11 +2969,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3640 "util/configparser.c" +#line 2973 "util/configparser.c" break; - case 302: -#line 520 "./util/configparser.y" + case 305: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */ +#line 524 "./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) @@ -3648,11 +2981,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3652 "util/configparser.c" +#line 2985 "util/configparser.c" break; - case 303: -#line 529 "./util/configparser.y" + case 306: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ +#line 533 "./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) @@ -3662,11 +2995,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3666 "util/configparser.c" +#line 2999 "util/configparser.c" break; - case 304: -#line 540 "./util/configparser.y" + case 307: /* server_port: VAR_PORT STRING_ARG */ +#line 544 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3674,11 +3007,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3678 "util/configparser.c" +#line 3011 "util/configparser.c" break; - case 305: -#line 549 "./util/configparser.y" + case 308: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ +#line 553 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -3689,11 +3022,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3693 "util/configparser.c" +#line 3026 "util/configparser.c" break; - case 306: -#line 561 "./util/configparser.y" + case 309: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ +#line 565 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -3705,11 +3038,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3709 "util/configparser.c" +#line 3042 "util/configparser.c" break; - case 307: -#line 575 "./util/configparser.y" + case 310: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ +#line 579 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3723,11 +3056,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3727 "util/configparser.c" +#line 3060 "util/configparser.c" break; - case 308: -#line 590 "./util/configparser.y" + case 311: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ +#line 594 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3737,11 +3070,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3741 "util/configparser.c" +#line 3074 "util/configparser.c" break; - case 309: -#line 601 "./util/configparser.y" + case 312: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ +#line 605 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3757,11 +3090,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3761 "util/configparser.c" +#line 3094 "util/configparser.c" break; - case 310: -#line 618 "./util/configparser.y" + case 313: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ +#line 622 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3777,11 +3110,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3781 "util/configparser.c" +#line 3114 "util/configparser.c" break; - case 311: -#line 635 "./util/configparser.y" + case 314: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ +#line 639 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3797,11 +3130,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3801 "util/configparser.c" +#line 3134 "util/configparser.c" break; - case 312: -#line 652 "./util/configparser.y" + case 315: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ +#line 656 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3817,11 +3150,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3821 "util/configparser.c" +#line 3154 "util/configparser.c" break; - case 313: -#line 669 "./util/configparser.y" + case 316: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */ +#line 673 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3835,11 +3168,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3839 "util/configparser.c" +#line 3172 "util/configparser.c" break; - case 314: -#line 684 "./util/configparser.y" + case 317: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */ +#line 688 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3853,11 +3186,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3857 "util/configparser.c" +#line 3190 "util/configparser.c" break; - case 315: -#line 699 "./util/configparser.y" + case 318: /* server_interface: VAR_INTERFACE STRING_ARG */ +#line 703 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3869,11 +3202,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3873 "util/configparser.c" +#line 3206 "util/configparser.c" break; - case 316: -#line 712 "./util/configparser.y" + case 319: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ +#line 716 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3887,11 +3220,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3891 "util/configparser.c" +#line 3224 "util/configparser.c" break; - case 317: -#line 727 "./util/configparser.y" + case 320: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ +#line 731 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3899,11 +3232,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3903 "util/configparser.c" +#line 3236 "util/configparser.c" break; - case 318: -#line 736 "./util/configparser.y" + case 321: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ +#line 740 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3911,11 +3244,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3915 "util/configparser.c" +#line 3248 "util/configparser.c" break; - case 319: -#line 745 "./util/configparser.y" + case 322: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ +#line 749 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3923,11 +3256,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3927 "util/configparser.c" +#line 3260 "util/configparser.c" break; - case 320: -#line 754 "./util/configparser.y" + case 323: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ +#line 758 "./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) @@ -3935,11 +3268,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3939 "util/configparser.c" +#line 3272 "util/configparser.c" break; - case 321: -#line 763 "./util/configparser.y" + case 324: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ +#line 767 "./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) @@ -3947,11 +3280,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3951 "util/configparser.c" +#line 3284 "util/configparser.c" break; - case 322: -#line 772 "./util/configparser.y" + case 325: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ +#line 776 "./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) @@ -3959,11 +3292,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3963 "util/configparser.c" +#line 3296 "util/configparser.c" break; - case 323: -#line 781 "./util/configparser.y" + case 326: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ +#line 785 "./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) @@ -3971,11 +3304,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3975 "util/configparser.c" +#line 3308 "util/configparser.c" break; - case 324: -#line 790 "./util/configparser.y" + case 327: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ +#line 794 "./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) @@ -3983,11 +3316,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3987 "util/configparser.c" +#line 3320 "util/configparser.c" break; - case 325: -#line 799 "./util/configparser.y" + case 328: /* server_do_udp: VAR_DO_UDP STRING_ARG */ +#line 803 "./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) @@ -3995,11 +3328,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3999 "util/configparser.c" +#line 3332 "util/configparser.c" break; - case 326: -#line 808 "./util/configparser.y" + case 329: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ +#line 812 "./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) @@ -4007,11 +3340,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4011 "util/configparser.c" +#line 3344 "util/configparser.c" break; - case 327: -#line 817 "./util/configparser.y" + case 330: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ +#line 821 "./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) @@ -4019,11 +3352,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4023 "util/configparser.c" +#line 3356 "util/configparser.c" break; - case 328: -#line 826 "./util/configparser.y" + case 331: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ +#line 830 "./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) @@ -4031,11 +3364,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4035 "util/configparser.c" +#line 3368 "util/configparser.c" break; - case 329: -#line 835 "./util/configparser.y" + case 332: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ +#line 839 "./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) @@ -4043,11 +3376,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4047 "util/configparser.c" +#line 3380 "util/configparser.c" break; - case 330: -#line 844 "./util/configparser.y" + case 333: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ +#line 848 "./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) @@ -4055,11 +3388,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4059 "util/configparser.c" +#line 3392 "util/configparser.c" break; - case 331: -#line 853 "./util/configparser.y" + case 334: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ +#line 857 "./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) @@ -4071,11 +3404,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4075 "util/configparser.c" +#line 3408 "util/configparser.c" break; - case 332: -#line 866 "./util/configparser.y" + case 335: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */ +#line 870 "./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) @@ -4085,11 +3418,11 @@ yyreduce: else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4089 "util/configparser.c" +#line 3422 "util/configparser.c" break; - case 333: -#line 877 "./util/configparser.y" + case 336: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */ +#line 881 "./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) @@ -4099,11 +3432,11 @@ yyreduce: else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4103 "util/configparser.c" +#line 3436 "util/configparser.c" break; - case 334: -#line 888 "./util/configparser.y" + case 337: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG */ +#line 892 "./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) @@ -4113,11 +3446,11 @@ yyreduce: else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4117 "util/configparser.c" +#line 3450 "util/configparser.c" break; - case 335: -#line 899 "./util/configparser.y" + case 338: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ +#line 903 "./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) @@ -4125,11 +3458,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4129 "util/configparser.c" +#line 3462 "util/configparser.c" break; - case 336: -#line 908 "./util/configparser.y" + case 339: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ +#line 912 "./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) @@ -4141,11 +3474,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4145 "util/configparser.c" +#line 3478 "util/configparser.c" break; - case 337: -#line 921 "./util/configparser.y" + case 340: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ +#line 925 "./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) @@ -4153,11 +3486,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4157 "util/configparser.c" +#line 3490 "util/configparser.c" break; - case 338: -#line 930 "./util/configparser.y" + case 341: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ +#line 934 "./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) @@ -4165,11 +3498,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4169 "util/configparser.c" +#line 3502 "util/configparser.c" break; - case 339: -#line 939 "./util/configparser.y" + case 342: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ +#line 943 "./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) @@ -4177,31 +3510,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4181 "util/configparser.c" +#line 3514 "util/configparser.c" break; - case 340: -#line 948 "./util/configparser.y" + case 343: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ +#line 952 "./util/configparser.y" { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 4191 "util/configparser.c" +#line 3524 "util/configparser.c" break; - case 341: -#line 955 "./util/configparser.y" + case 344: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ +#line 959 "./util/configparser.y" { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 4201 "util/configparser.c" +#line 3534 "util/configparser.c" break; - case 342: -#line 962 "./util/configparser.y" + case 345: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ +#line 966 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4209,21 +3542,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4213 "util/configparser.c" +#line 3546 "util/configparser.c" break; - case 343: -#line 971 "./util/configparser.y" + case 346: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ +#line 975 "./util/configparser.y" { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 4223 "util/configparser.c" +#line 3556 "util/configparser.c" break; - case 344: -#line 978 "./util/configparser.y" + case 347: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ +#line 982 "./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) @@ -4231,53 +3564,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4235 "util/configparser.c" +#line 3568 "util/configparser.c" break; - case 345: -#line 987 "./util/configparser.y" + case 348: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ +#line 991 "./util/configparser.y" { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4246 "util/configparser.c" +#line 3579 "util/configparser.c" break; - case 346: -#line 995 "./util/configparser.y" + case 349: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ +#line 999 "./util/configparser.y" { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 4256 "util/configparser.c" +#line 3589 "util/configparser.c" break; - case 347: -#line 1002 "./util/configparser.y" + case 350: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ +#line 1006 "./util/configparser.y" { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 4266 "util/configparser.c" +#line 3599 "util/configparser.c" break; - case 348: -#line 1009 "./util/configparser.y" + case 351: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ +#line 1013 "./util/configparser.y" { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4277 "util/configparser.c" +#line 3610 "util/configparser.c" break; - case 349: -#line 1017 "./util/configparser.y" + case 352: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ +#line 1021 "./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) @@ -4285,11 +3618,11 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4289 "util/configparser.c" +#line 3622 "util/configparser.c" break; - case 350: -#line 1026 "./util/configparser.y" + case 353: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ +#line 1030 "./util/configparser.y" { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4297,11 +3630,11 @@ yyreduce: else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4301 "util/configparser.c" +#line 3634 "util/configparser.c" break; - case 351: -#line 1034 "./util/configparser.y" + case 354: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ +#line 1038 "./util/configparser.y" { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_endpoint); @@ -4317,11 +3650,11 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 4321 "util/configparser.c" +#line 3654 "util/configparser.c" break; - case 352: -#line 1050 "./util/configparser.y" + case 355: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ +#line 1054 "./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) @@ -4329,11 +3662,11 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4333 "util/configparser.c" +#line 3666 "util/configparser.c" break; - case 353: -#line 1058 "./util/configparser.y" + case 356: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ +#line 1062 "./util/configparser.y" { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -4341,11 +3674,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4345 "util/configparser.c" +#line 3678 "util/configparser.c" break; - case 354: -#line 1066 "./util/configparser.y" + case 357: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ +#line 1070 "./util/configparser.y" { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -4353,11 +3686,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4357 "util/configparser.c" +#line 3690 "util/configparser.c" break; - case 355: -#line 1074 "./util/configparser.y" + case 358: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ +#line 1078 "./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) @@ -4365,11 +3698,11 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4369 "util/configparser.c" +#line 3702 "util/configparser.c" break; - case 356: -#line 1082 "./util/configparser.y" + case 359: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ +#line 1086 "./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) @@ -4377,11 +3710,11 @@ yyreduce: else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4381 "util/configparser.c" +#line 3714 "util/configparser.c" break; - case 357: -#line 1090 "./util/configparser.y" + case 360: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ +#line 1094 "./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) @@ -4389,11 +3722,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4393 "util/configparser.c" +#line 3726 "util/configparser.c" break; - case 358: -#line 1099 "./util/configparser.y" + case 361: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ +#line 1103 "./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) @@ -4401,11 +3734,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4405 "util/configparser.c" +#line 3738 "util/configparser.c" break; - case 359: -#line 1108 "./util/configparser.y" + case 362: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ +#line 1112 "./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) @@ -4418,11 +3751,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4422 "util/configparser.c" +#line 3755 "util/configparser.c" break; - case 360: -#line 1122 "./util/configparser.y" + case 363: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ +#line 1126 "./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) @@ -4430,11 +3763,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4434 "util/configparser.c" +#line 3767 "util/configparser.c" break; - case 361: -#line 1131 "./util/configparser.y" + case 364: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ +#line 1135 "./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) @@ -4442,11 +3775,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4446 "util/configparser.c" +#line 3779 "util/configparser.c" break; - case 362: -#line 1140 "./util/configparser.y" + case 365: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ +#line 1144 "./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) @@ -4454,11 +3787,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4458 "util/configparser.c" +#line 3791 "util/configparser.c" break; - case 363: -#line 1149 "./util/configparser.y" + case 366: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ +#line 1153 "./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) @@ -4466,11 +3799,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4470 "util/configparser.c" +#line 3803 "util/configparser.c" break; - case 364: -#line 1158 "./util/configparser.y" + case 367: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ +#line 1162 "./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) @@ -4478,11 +3811,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4482 "util/configparser.c" +#line 3815 "util/configparser.c" break; - case 365: -#line 1167 "./util/configparser.y" + case 368: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ +#line 1171 "./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) @@ -4490,31 +3823,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4494 "util/configparser.c" +#line 3827 "util/configparser.c" break; - case 366: -#line 1176 "./util/configparser.y" + case 369: /* server_chroot: VAR_CHROOT STRING_ARG */ +#line 1180 "./util/configparser.y" { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 4504 "util/configparser.c" +#line 3837 "util/configparser.c" break; - case 367: -#line 1183 "./util/configparser.y" + case 370: /* server_username: VAR_USERNAME STRING_ARG */ +#line 1187 "./util/configparser.y" { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 4514 "util/configparser.c" +#line 3847 "util/configparser.c" break; - case 368: -#line 1190 "./util/configparser.y" + case 371: /* server_directory: VAR_DIRECTORY STRING_ARG */ +#line 1194 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -4539,105 +3872,105 @@ yyreduce: } } } -#line 4543 "util/configparser.c" +#line 3876 "util/configparser.c" break; - case 369: -#line 1216 "./util/configparser.y" + case 372: /* server_logfile: VAR_LOGFILE STRING_ARG */ +#line 1220 "./util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->logfile); cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 4554 "util/configparser.c" +#line 3887 "util/configparser.c" break; - case 370: -#line 1224 "./util/configparser.y" + case 373: /* server_pidfile: VAR_PIDFILE STRING_ARG */ +#line 1228 "./util/configparser.y" { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 4564 "util/configparser.c" +#line 3897 "util/configparser.c" break; - case 371: -#line 1231 "./util/configparser.y" + case 374: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ +#line 1235 "./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))) yyerror("out of memory"); } -#line 4574 "util/configparser.c" +#line 3907 "util/configparser.c" break; - case 372: -#line 1238 "./util/configparser.y" + case 375: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ +#line 1242 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4584 "util/configparser.c" +#line 3917 "util/configparser.c" break; - case 373: -#line 1245 "./util/configparser.y" + case 376: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ +#line 1249 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4594 "util/configparser.c" +#line 3927 "util/configparser.c" break; - case 374: -#line 1252 "./util/configparser.y" + case 377: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ +#line 1256 "./util/configparser.y" { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4605 "util/configparser.c" +#line 3938 "util/configparser.c" break; - case 375: -#line 1260 "./util/configparser.y" + case 378: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ +#line 1264 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4616 "util/configparser.c" +#line 3949 "util/configparser.c" break; - case 376: -#line 1268 "./util/configparser.y" + case 379: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ +#line 1272 "./util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4627 "util/configparser.c" +#line 3960 "util/configparser.c" break; - case 377: -#line 1276 "./util/configparser.y" + case 380: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ +#line 1280 "./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))) yyerror("out of memory"); } -#line 4637 "util/configparser.c" +#line 3970 "util/configparser.c" break; - case 378: -#line 1283 "./util/configparser.y" + case 381: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ +#line 1287 "./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) @@ -4647,11 +3980,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4651 "util/configparser.c" +#line 3984 "util/configparser.c" break; - case 379: -#line 1294 "./util/configparser.y" + case 382: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ +#line 1298 "./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) @@ -4661,21 +3994,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4665 "util/configparser.c" +#line 3998 "util/configparser.c" break; - case 380: -#line 1305 "./util/configparser.y" + case 383: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ +#line 1309 "./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))) yyerror("out of memory"); } -#line 4675 "util/configparser.c" +#line 4008 "util/configparser.c" break; - case 381: -#line 1312 "./util/configparser.y" + case 384: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ +#line 1316 "./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) @@ -4683,11 +4016,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4687 "util/configparser.c" +#line 4020 "util/configparser.c" break; - case 382: -#line 1321 "./util/configparser.y" + case 385: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ +#line 1325 "./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) @@ -4695,11 +4028,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4699 "util/configparser.c" +#line 4032 "util/configparser.c" break; - case 383: -#line 1330 "./util/configparser.y" + case 386: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ +#line 1334 "./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) @@ -4707,31 +4040,53 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4711 "util/configparser.c" +#line 4044 "util/configparser.c" break; - case 384: -#line 1339 "./util/configparser.y" + case 387: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG */ +#line 1343 "./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) + yyerror("expected yes or no."); + else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 4056 "util/configparser.c" + break; + + case 388: /* server_identity: VAR_IDENTITY STRING_ARG */ +#line 1352 "./util/configparser.y" { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 4721 "util/configparser.c" +#line 4066 "util/configparser.c" break; - case 385: -#line 1346 "./util/configparser.y" + case 389: /* server_version: VAR_VERSION STRING_ARG */ +#line 1359 "./util/configparser.y" { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 4731 "util/configparser.c" +#line 4076 "util/configparser.c" break; - case 386: -#line 1353 "./util/configparser.y" + case 390: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG */ +#line 1366 "./util/configparser.y" + { + OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str))); + free(cfg_parser->cfg->http_user_agent); + cfg_parser->cfg->http_user_agent = (yyvsp[0].str); + } +#line 4086 "util/configparser.c" + break; + + case 391: /* server_nsid: VAR_NSID STRING_ARG */ +#line 1373 "./util/configparser.y" { OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->nsid_cfg_str); @@ -4746,33 +4101,33 @@ yyreduce: yyerror("the NSID must be either a hex string or an " "ascii character string prepended with ascii_."); } -#line 4750 "util/configparser.c" +#line 4105 "util/configparser.c" break; - case 387: -#line 1369 "./util/configparser.y" + case 392: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ +#line 1389 "./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)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4761 "util/configparser.c" +#line 4116 "util/configparser.c" break; - case 388: -#line 1377 "./util/configparser.y" + case 393: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ +#line 1397 "./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)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4772 "util/configparser.c" +#line 4127 "util/configparser.c" break; - case 389: -#line 1385 "./util/configparser.y" + case 394: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ +#line 1405 "./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) @@ -4781,11 +4136,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4785 "util/configparser.c" +#line 4140 "util/configparser.c" break; - case 390: -#line 1395 "./util/configparser.y" + case 395: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ +#line 1415 "./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) @@ -4794,11 +4149,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4798 "util/configparser.c" +#line 4153 "util/configparser.c" break; - case 391: -#line 1405 "./util/configparser.y" + case 396: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ +#line 1425 "./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) @@ -4807,11 +4162,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4811 "util/configparser.c" +#line 4166 "util/configparser.c" break; - case 392: -#line 1415 "./util/configparser.y" + case 397: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ +#line 1435 "./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) @@ -4824,22 +4179,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4828 "util/configparser.c" +#line 4183 "util/configparser.c" break; - case 393: -#line 1429 "./util/configparser.y" + case 398: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ +#line 1449 "./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)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4839 "util/configparser.c" +#line 4194 "util/configparser.c" break; - case 394: -#line 1437 "./util/configparser.y" + case 399: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ +#line 1457 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4851,11 +4206,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4855 "util/configparser.c" +#line 4210 "util/configparser.c" break; - case 395: -#line 1450 "./util/configparser.y" + case 400: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ +#line 1470 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4865,22 +4220,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4869 "util/configparser.c" +#line 4224 "util/configparser.c" break; - case 396: -#line 1461 "./util/configparser.y" + case 401: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ +#line 1481 "./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)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4880 "util/configparser.c" +#line 4235 "util/configparser.c" break; - case 397: -#line 1469 "./util/configparser.y" + case 402: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ +#line 1489 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4892,11 +4247,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4896 "util/configparser.c" +#line 4251 "util/configparser.c" break; - case 398: -#line 1482 "./util/configparser.y" + case 403: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ +#line 1502 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4904,11 +4259,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4908 "util/configparser.c" +#line 4263 "util/configparser.c" break; - case 399: -#line 1491 "./util/configparser.y" + case 404: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ +#line 1511 "./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) @@ -4916,11 +4271,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4920 "util/configparser.c" +#line 4275 "util/configparser.c" break; - case 400: -#line 1500 "./util/configparser.y" + case 405: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ +#line 1520 "./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) @@ -4928,11 +4283,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4932 "util/configparser.c" +#line 4287 "util/configparser.c" break; - case 401: -#line 1509 "./util/configparser.y" + case 406: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ +#line 1529 "./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) @@ -4940,11 +4295,11 @@ yyreduce: else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4944 "util/configparser.c" +#line 4299 "util/configparser.c" break; - case 402: -#line 1518 "./util/configparser.y" + case 407: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ +#line 1538 "./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) @@ -4953,11 +4308,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4957 "util/configparser.c" +#line 4312 "util/configparser.c" break; - case 403: -#line 1528 "./util/configparser.y" + case 408: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ +#line 1548 "./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) @@ -4966,22 +4321,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4970 "util/configparser.c" +#line 4325 "util/configparser.c" break; - case 404: -#line 1538 "./util/configparser.y" + case 409: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ +#line 1558 "./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)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4981 "util/configparser.c" +#line 4336 "util/configparser.c" break; - case 405: -#line 1546 "./util/configparser.y" + case 410: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ +#line 1566 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4993,11 +4348,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4997 "util/configparser.c" +#line 4352 "util/configparser.c" break; - case 406: -#line 1559 "./util/configparser.y" + case 411: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ +#line 1579 "./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) @@ -5005,22 +4360,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5009 "util/configparser.c" +#line 4364 "util/configparser.c" break; - case 407: -#line 1568 "./util/configparser.y" + case 412: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ +#line 1588 "./util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5020 "util/configparser.c" +#line 4375 "util/configparser.c" break; - case 408: -#line 1576 "./util/configparser.y" + case 413: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ +#line 1596 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5028,22 +4383,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5032 "util/configparser.c" +#line 4387 "util/configparser.c" break; - case 409: -#line 1585 "./util/configparser.y" + case 414: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ +#line 1605 "./util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5043 "util/configparser.c" +#line 4398 "util/configparser.c" break; - case 410: -#line 1593 "./util/configparser.y" + case 415: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ +#line 1613 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5055,11 +4410,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5059 "util/configparser.c" +#line 4414 "util/configparser.c" break; - case 411: -#line 1606 "./util/configparser.y" + case 416: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ +#line 1626 "./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) @@ -5067,11 +4422,11 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5071 "util/configparser.c" +#line 4426 "util/configparser.c" break; - case 412: -#line 1615 "./util/configparser.y" + case 417: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ +#line 1635 "./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) @@ -5080,21 +4435,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5084 "util/configparser.c" +#line 4439 "util/configparser.c" break; - case 413: -#line 1625 "./util/configparser.y" + case 418: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ +#line 1645 "./util/configparser.y" { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 5094 "util/configparser.c" +#line 4449 "util/configparser.c" break; - case 414: -#line 1632 "./util/configparser.y" + case 419: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ +#line 1652 "./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) @@ -5103,11 +4458,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5107 "util/configparser.c" +#line 4462 "util/configparser.c" break; - case 415: -#line 1642 "./util/configparser.y" + case 420: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ +#line 1662 "./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) @@ -5116,11 +4471,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5120 "util/configparser.c" +#line 4475 "util/configparser.c" break; - case 416: -#line 1652 "./util/configparser.y" + case 421: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ +#line 1672 "./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) @@ -5129,11 +4484,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5133 "util/configparser.c" +#line 4488 "util/configparser.c" break; - case 417: -#line 1662 "./util/configparser.y" + case 422: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ +#line 1682 "./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) @@ -5142,11 +4497,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5146 "util/configparser.c" +#line 4501 "util/configparser.c" break; - case 418: -#line 1672 "./util/configparser.y" + case 423: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ +#line 1692 "./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) @@ -5155,11 +4510,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5159 "util/configparser.c" +#line 4514 "util/configparser.c" break; - case 419: -#line 1682 "./util/configparser.y" + case 424: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ +#line 1702 "./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) @@ -5168,11 +4523,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5172 "util/configparser.c" +#line 4527 "util/configparser.c" break; - case 420: -#line 1692 "./util/configparser.y" + case 425: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ +#line 1712 "./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) @@ -5181,11 +4536,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5185 "util/configparser.c" +#line 4540 "util/configparser.c" break; - case 421: -#line 1702 "./util/configparser.y" + case 426: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ +#line 1722 "./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) @@ -5194,41 +4549,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5198 "util/configparser.c" +#line 4553 "util/configparser.c" break; - case 422: -#line 1712 "./util/configparser.y" + case 427: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ +#line 1732 "./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))) yyerror("out of memory"); } -#line 5208 "util/configparser.c" +#line 4563 "util/configparser.c" break; - case 423: -#line 1719 "./util/configparser.y" + case 428: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ +#line 1739 "./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))) yyerror("out of memory"); } -#line 5218 "util/configparser.c" +#line 4573 "util/configparser.c" break; - case 424: -#line 1726 "./util/configparser.y" + case 429: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ +#line 1746 "./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))) yyerror("out of memory"); } -#line 5228 "util/configparser.c" +#line 4583 "util/configparser.c" break; - case 425: -#line 1733 "./util/configparser.y" + case 430: /* server_prefetch: VAR_PREFETCH STRING_ARG */ +#line 1753 "./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) @@ -5236,11 +4591,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5240 "util/configparser.c" +#line 4595 "util/configparser.c" break; - case 426: -#line 1742 "./util/configparser.y" + case 431: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ +#line 1762 "./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) @@ -5248,11 +4603,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5252 "util/configparser.c" +#line 4607 "util/configparser.c" break; - case 427: -#line 1751 "./util/configparser.y" + case 432: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ +#line 1771 "./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) @@ -5260,11 +4615,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5264 "util/configparser.c" +#line 4619 "util/configparser.c" break; - case 428: -#line 1760 "./util/configparser.y" + case 433: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ +#line 1780 "./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) @@ -5272,21 +4627,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5276 "util/configparser.c" +#line 4631 "util/configparser.c" break; - case 429: -#line 1769 "./util/configparser.y" + case 434: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ +#line 1789 "./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))) yyerror("out of memory"); } -#line 5286 "util/configparser.c" +#line 4641 "util/configparser.c" break; - case 430: -#line 1776 "./util/configparser.y" + case 435: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ +#line 1796 "./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) @@ -5295,11 +4650,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5299 "util/configparser.c" +#line 4654 "util/configparser.c" break; - case 431: -#line 1786 "./util/configparser.y" + case 436: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ +#line 1806 "./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 && @@ -5318,21 +4673,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 5322 "util/configparser.c" +#line 4677 "util/configparser.c" break; - case 432: -#line 1806 "./util/configparser.y" + case 437: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ +#line 1826 "./util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 5332 "util/configparser.c" +#line 4687 "util/configparser.c" break; - case 433: -#line 1813 "./util/configparser.y" + case 438: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ +#line 1833 "./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) { @@ -5349,11 +4704,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5353 "util/configparser.c" +#line 4708 "util/configparser.c" break; - case 434: -#line 1831 "./util/configparser.y" + case 439: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ +#line 1851 "./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) { @@ -5365,11 +4720,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5369 "util/configparser.c" +#line 4724 "util/configparser.c" break; - case 435: -#line 1844 "./util/configparser.y" + case 440: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ +#line 1864 "./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) { @@ -5381,11 +4736,27 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5385 "util/configparser.c" +#line 4740 "util/configparser.c" break; - case 436: -#line 1857 "./util/configparser.y" + case 441: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG */ +#line 1877 "./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) { + cfg_parser->cfg->val_max_restart = 0; + } else { + cfg_parser->cfg->val_max_restart = atoi((yyvsp[0].str)); + if(!cfg_parser->cfg->val_max_restart) + yyerror("number expected"); + } + free((yyvsp[0].str)); + } +#line 4756 "util/configparser.c" + break; + + case 442: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ +#line 1890 "./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) @@ -5393,11 +4764,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5397 "util/configparser.c" +#line 4768 "util/configparser.c" break; - case 437: -#line 1866 "./util/configparser.y" + case 443: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ +#line 1899 "./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) @@ -5405,11 +4776,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5409 "util/configparser.c" +#line 4780 "util/configparser.c" break; - case 438: -#line 1875 "./util/configparser.y" + case 444: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ +#line 1908 "./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) @@ -5417,11 +4788,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5421 "util/configparser.c" +#line 4792 "util/configparser.c" break; - case 439: -#line 1884 "./util/configparser.y" + case 445: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ +#line 1917 "./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) @@ -5429,11 +4800,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5433 "util/configparser.c" +#line 4804 "util/configparser.c" break; - case 440: -#line 1893 "./util/configparser.y" + case 446: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ +#line 1926 "./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) @@ -5442,11 +4813,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5446 "util/configparser.c" +#line 4817 "util/configparser.c" break; - case 441: -#line 1903 "./util/configparser.y" + case 447: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ +#line 1936 "./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) @@ -5455,11 +4826,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5459 "util/configparser.c" +#line 4830 "util/configparser.c" break; - case 442: -#line 1913 "./util/configparser.y" + case 448: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ +#line 1946 "./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) @@ -5469,11 +4840,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5473 "util/configparser.c" +#line 4844 "util/configparser.c" break; - case 443: -#line 1924 "./util/configparser.y" + case 449: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ +#line 1957 "./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) @@ -5481,11 +4852,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5485 "util/configparser.c" +#line 4856 "util/configparser.c" break; - case 444: -#line 1933 "./util/configparser.y" + case 450: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ +#line 1966 "./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) @@ -5493,11 +4864,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5497 "util/configparser.c" +#line 4868 "util/configparser.c" break; - case 445: -#line 1942 "./util/configparser.y" + case 451: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ +#line 1975 "./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) @@ -5505,11 +4876,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5509 "util/configparser.c" +#line 4880 "util/configparser.c" break; - case 446: -#line 1951 "./util/configparser.y" + case 452: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ +#line 1984 "./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) @@ -5517,11 +4888,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5521 "util/configparser.c" +#line 4892 "util/configparser.c" break; - case 447: -#line 1960 "./util/configparser.y" + case 453: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ +#line 1993 "./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) @@ -5529,11 +4900,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5533 "util/configparser.c" +#line 4904 "util/configparser.c" break; - case 448: -#line 1969 "./util/configparser.y" + case 454: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ +#line 2002 "./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) @@ -5541,11 +4912,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5545 "util/configparser.c" +#line 4916 "util/configparser.c" break; - case 449: -#line 1978 "./util/configparser.y" + case 455: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */ +#line 2011 "./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) @@ -5553,11 +4924,11 @@ yyreduce: else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5557 "util/configparser.c" +#line 4928 "util/configparser.c" break; - case 450: -#line 1987 "./util/configparser.y" + case 456: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ +#line 2020 "./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) @@ -5569,11 +4940,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5573 "util/configparser.c" +#line 4944 "util/configparser.c" break; - case 451: -#line 2000 "./util/configparser.y" + case 457: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ +#line 2033 "./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) @@ -5585,11 +4956,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5589 "util/configparser.c" +#line 4960 "util/configparser.c" break; - case 452: -#line 2013 "./util/configparser.y" + case 458: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ +#line 2046 "./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) @@ -5597,21 +4968,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5601 "util/configparser.c" +#line 4972 "util/configparser.c" break; - case 453: -#line 2022 "./util/configparser.y" + case 459: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ +#line 2055 "./util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 5611 "util/configparser.c" +#line 4982 "util/configparser.c" break; - case 454: -#line 2029 "./util/configparser.y" + case 460: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */ +#line 2062 "./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) @@ -5619,11 +4990,11 @@ yyreduce: else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5623 "util/configparser.c" +#line 4994 "util/configparser.c" break; - case 455: -#line 2038 "./util/configparser.y" + case 461: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ +#line 2071 "./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) @@ -5631,11 +5002,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5635 "util/configparser.c" +#line 5006 "util/configparser.c" break; - case 456: -#line 2047 "./util/configparser.y" + case 462: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ +#line 2080 "./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) @@ -5643,11 +5014,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5647 "util/configparser.c" +#line 5018 "util/configparser.c" break; - case 457: -#line 2056 "./util/configparser.y" + case 463: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ +#line 2089 "./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) @@ -5655,11 +5026,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5659 "util/configparser.c" +#line 5030 "util/configparser.c" break; - case 458: -#line 2065 "./util/configparser.y" + case 464: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ +#line 2098 "./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) @@ -5668,22 +5039,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5672 "util/configparser.c" +#line 5043 "util/configparser.c" break; - case 459: -#line 2074 "./util/configparser.y" + case 465: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ +#line 2107 "./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)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5683 "util/configparser.c" +#line 5054 "util/configparser.c" break; - case 460: -#line 2082 "./util/configparser.y" + case 466: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ +#line 2115 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5695,22 +5066,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5699 "util/configparser.c" +#line 5070 "util/configparser.c" break; - case 461: -#line 2095 "./util/configparser.y" + case 467: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ +#line 2128 "./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)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5710 "util/configparser.c" +#line 5081 "util/configparser.c" break; - case 462: -#line 2103 "./util/configparser.y" + case 468: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ +#line 2136 "./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 && @@ -5754,21 +5125,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5758 "util/configparser.c" +#line 5129 "util/configparser.c" break; - case 463: -#line 2148 "./util/configparser.y" + case 469: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ +#line 2181 "./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))) fatal_exit("out of memory adding local-data"); } -#line 5768 "util/configparser.c" +#line 5139 "util/configparser.c" break; - case 464: -#line 2155 "./util/configparser.y" + case 470: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ +#line 2188 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5782,11 +5153,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5786 "util/configparser.c" +#line 5157 "util/configparser.c" break; - case 465: -#line 2170 "./util/configparser.y" + case 471: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ +#line 2203 "./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) @@ -5795,11 +5166,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5799 "util/configparser.c" +#line 5170 "util/configparser.c" break; - case 466: -#line 2180 "./util/configparser.y" + case 472: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ +#line 2213 "./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) @@ -5808,41 +5179,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5812 "util/configparser.c" +#line 5183 "util/configparser.c" break; - case 467: -#line 2190 "./util/configparser.y" + case 473: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ +#line 2223 "./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)); } -#line 5822 "util/configparser.c" +#line 5193 "util/configparser.c" break; - case 468: -#line 2197 "./util/configparser.y" + case 474: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ +#line 2230 "./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)); } -#line 5832 "util/configparser.c" +#line 5203 "util/configparser.c" break; - case 469: -#line 2204 "./util/configparser.y" + case 475: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ +#line 2237 "./util/configparser.y" { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 5842 "util/configparser.c" +#line 5213 "util/configparser.c" break; - case 470: -#line 2211 "./util/configparser.y" + case 476: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ +#line 2244 "./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) @@ -5850,22 +5221,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5854 "util/configparser.c" +#line 5225 "util/configparser.c" break; - case 471: -#line 2220 "./util/configparser.y" + case 477: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ +#line 2253 "./util/configparser.y" { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 5865 "util/configparser.c" +#line 5236 "util/configparser.c" break; - case 472: -#line 2228 "./util/configparser.y" + case 478: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ +#line 2261 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -5878,11 +5249,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5882 "util/configparser.c" +#line 5253 "util/configparser.c" break; - case 473: -#line 2242 "./util/configparser.y" + case 479: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ +#line 2275 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5902,11 +5273,11 @@ yyreduce: } } } -#line 5906 "util/configparser.c" +#line 5277 "util/configparser.c" break; - case 474: -#line 2263 "./util/configparser.y" + case 480: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ +#line 2296 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5926,11 +5297,11 @@ yyreduce: } } } -#line 5930 "util/configparser.c" +#line 5301 "util/configparser.c" break; - case 475: -#line 2284 "./util/configparser.y" + case 481: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ +#line 2317 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, @@ -5941,11 +5312,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5945 "util/configparser.c" +#line 5316 "util/configparser.c" break; - case 476: -#line 2296 "./util/configparser.y" + case 482: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ +#line 2329 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, @@ -5956,11 +5327,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5960 "util/configparser.c" +#line 5331 "util/configparser.c" break; - case 477: -#line 2308 "./util/configparser.y" + case 483: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ +#line 2341 "./util/configparser.y" { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, @@ -5971,11 +5342,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5975 "util/configparser.c" +#line 5346 "util/configparser.c" break; - case 478: -#line 2320 "./util/configparser.y" + case 484: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ +#line 2353 "./util/configparser.y" { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, @@ -5983,11 +5354,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5987 "util/configparser.c" +#line 5358 "util/configparser.c" break; - case 479: -#line 2329 "./util/configparser.y" + case 485: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ +#line 2362 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -6007,11 +5378,11 @@ yyreduce: } } } -#line 6011 "util/configparser.c" +#line 5382 "util/configparser.c" break; - case 480: -#line 2350 "./util/configparser.y" + case 486: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ +#line 2383 "./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) @@ -6019,11 +5390,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6023 "util/configparser.c" +#line 5394 "util/configparser.c" break; - case 481: -#line 2360 "./util/configparser.y" + case 487: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ +#line 2393 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -6031,33 +5402,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6035 "util/configparser.c" +#line 5406 "util/configparser.c" break; - case 482: -#line 2369 "./util/configparser.y" + case 488: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ +#line 2402 "./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)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6046 "util/configparser.c" +#line 5417 "util/configparser.c" break; - case 483: -#line 2377 "./util/configparser.y" + case 489: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ +#line 2410 "./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)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6057 "util/configparser.c" +#line 5428 "util/configparser.c" break; - case 484: -#line 2385 "./util/configparser.y" + case 490: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ +#line 2418 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6069,11 +5440,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6073 "util/configparser.c" +#line 5444 "util/configparser.c" break; - case 485: -#line 2398 "./util/configparser.y" + case 491: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ +#line 2431 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6085,11 +5456,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6089 "util/configparser.c" +#line 5460 "util/configparser.c" break; - case 486: -#line 2411 "./util/configparser.y" + case 492: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ +#line 2444 "./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) { @@ -6103,11 +5474,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 6107 "util/configparser.c" +#line 5478 "util/configparser.c" break; - case 487: -#line 2426 "./util/configparser.y" + case 493: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ +#line 2459 "./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) { @@ -6121,11 +5492,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 6125 "util/configparser.c" +#line 5496 "util/configparser.c" break; - case 488: -#line 2441 "./util/configparser.y" + case 494: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ +#line 2474 "./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) @@ -6133,11 +5504,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6137 "util/configparser.c" +#line 5508 "util/configparser.c" break; - case 489: -#line 2450 "./util/configparser.y" + case 495: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ +#line 2483 "./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) @@ -6145,20 +5516,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6149 "util/configparser.c" +#line 5520 "util/configparser.c" break; - case 490: -#line 2459 "./util/configparser.y" + case 496: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ +#line 2492 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 6158 "util/configparser.c" +#line 5529 "util/configparser.c" break; - case 491: -#line 2465 "./util/configparser.y" + case 497: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ +#line 2498 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -6166,11 +5537,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6170 "util/configparser.c" +#line 5541 "util/configparser.c" break; - case 492: -#line 2474 "./util/configparser.y" + case 498: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ +#line 2507 "./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) @@ -6178,11 +5549,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6182 "util/configparser.c" +#line 5553 "util/configparser.c" break; - case 493: -#line 2483 "./util/configparser.y" + case 499: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ +#line 2516 "./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) @@ -6191,11 +5562,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6195 "util/configparser.c" +#line 5566 "util/configparser.c" break; - case 494: -#line 2493 "./util/configparser.y" + case 500: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ +#line 2526 "./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) @@ -6204,11 +5575,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6208 "util/configparser.c" +#line 5579 "util/configparser.c" break; - case 495: -#line 2503 "./util/configparser.y" + case 501: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ +#line 2536 "./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) @@ -6217,11 +5588,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6221 "util/configparser.c" +#line 5592 "util/configparser.c" break; - case 496: -#line 2513 "./util/configparser.y" + case 502: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ +#line 2546 "./util/configparser.y" { OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6229,11 +5600,11 @@ yyreduce: else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6233 "util/configparser.c" +#line 5604 "util/configparser.c" break; - case 497: -#line 2522 "./util/configparser.y" + case 503: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ +#line 2555 "./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) @@ -6242,11 +5613,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6246 "util/configparser.c" +#line 5617 "util/configparser.c" break; - case 498: -#line 2532 "./util/configparser.y" + case 504: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ +#line 2565 "./util/configparser.y" { OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6254,11 +5625,11 @@ yyreduce: else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6258 "util/configparser.c" +#line 5629 "util/configparser.c" break; - case 499: -#line 2541 "./util/configparser.y" + case 505: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ +#line 2574 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -6270,11 +5641,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6274 "util/configparser.c" +#line 5645 "util/configparser.c" break; - case 500: -#line 2554 "./util/configparser.y" + case 506: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ +#line 2587 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -6286,11 +5657,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6290 "util/configparser.c" +#line 5661 "util/configparser.c" break; - case 501: -#line 2567 "./util/configparser.y" + case 507: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ +#line 2600 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -6301,11 +5672,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6305 "util/configparser.c" +#line 5676 "util/configparser.c" break; - case 502: -#line 2579 "./util/configparser.y" + case 508: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ +#line 2612 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -6318,11 +5689,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6322 "util/configparser.c" +#line 5693 "util/configparser.c" break; - case 503: -#line 2593 "./util/configparser.y" + case 509: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ +#line 2626 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -6333,11 +5704,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6337 "util/configparser.c" +#line 5708 "util/configparser.c" break; - case 504: -#line 2605 "./util/configparser.y" + case 510: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ +#line 2638 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -6350,11 +5721,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6354 "util/configparser.c" +#line 5725 "util/configparser.c" break; - case 505: -#line 2619 "./util/configparser.y" + case 511: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ +#line 2652 "./util/configparser.y" { OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( @@ -6362,11 +5733,11 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-string"); } -#line 6366 "util/configparser.c" +#line 5737 "util/configparser.c" break; - case 506: -#line 2628 "./util/configparser.y" + case 512: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ +#line 2661 "./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) @@ -6377,11 +5748,11 @@ yyreduce: free((yyvsp[0].str)); } -#line 6381 "util/configparser.c" +#line 5752 "util/configparser.c" break; - case 507: -#line 2640 "./util/configparser.y" + case 513: /* stub_name: VAR_NAME STRING_ARG */ +#line 2673 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -6390,31 +5761,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 6394 "util/configparser.c" +#line 5765 "util/configparser.c" break; - case 508: -#line 2650 "./util/configparser.y" + case 514: /* stub_host: VAR_STUB_HOST STRING_ARG */ +#line 2683 "./util/configparser.y" { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6404 "util/configparser.c" +#line 5775 "util/configparser.c" break; - case 509: -#line 2657 "./util/configparser.y" + case 515: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ +#line 2690 "./util/configparser.y" { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6414 "util/configparser.c" +#line 5785 "util/configparser.c" break; - case 510: -#line 2664 "./util/configparser.y" + case 516: /* stub_first: VAR_STUB_FIRST STRING_ARG */ +#line 2697 "./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) @@ -6422,11 +5793,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6426 "util/configparser.c" +#line 5797 "util/configparser.c" break; - case 511: -#line 2673 "./util/configparser.y" + case 517: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ +#line 2706 "./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) @@ -6434,11 +5805,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6438 "util/configparser.c" +#line 5809 "util/configparser.c" break; - case 512: -#line 2682 "./util/configparser.y" + case 518: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ +#line 2715 "./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) @@ -6447,11 +5818,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6451 "util/configparser.c" +#line 5822 "util/configparser.c" break; - case 513: -#line 2692 "./util/configparser.y" + case 519: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ +#line 2725 "./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) @@ -6460,11 +5831,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6464 "util/configparser.c" +#line 5835 "util/configparser.c" break; - case 514: -#line 2702 "./util/configparser.y" + case 520: /* forward_name: VAR_NAME STRING_ARG */ +#line 2735 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -6473,31 +5844,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 6477 "util/configparser.c" +#line 5848 "util/configparser.c" break; - case 515: -#line 2712 "./util/configparser.y" + case 521: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ +#line 2745 "./util/configparser.y" { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6487 "util/configparser.c" +#line 5858 "util/configparser.c" break; - case 516: -#line 2719 "./util/configparser.y" + case 522: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ +#line 2752 "./util/configparser.y" { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6497 "util/configparser.c" +#line 5868 "util/configparser.c" break; - case 517: -#line 2726 "./util/configparser.y" + case 523: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ +#line 2759 "./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) @@ -6505,11 +5876,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6509 "util/configparser.c" +#line 5880 "util/configparser.c" break; - case 518: -#line 2735 "./util/configparser.y" + case 524: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ +#line 2768 "./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) @@ -6517,11 +5888,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6521 "util/configparser.c" +#line 5892 "util/configparser.c" break; - case 519: -#line 2744 "./util/configparser.y" + case 525: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ +#line 2777 "./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) @@ -6530,11 +5901,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6534 "util/configparser.c" +#line 5905 "util/configparser.c" break; - case 520: -#line 2754 "./util/configparser.y" + case 526: /* auth_name: VAR_NAME STRING_ARG */ +#line 2787 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -6543,52 +5914,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 6547 "util/configparser.c" +#line 5918 "util/configparser.c" break; - case 521: -#line 2764 "./util/configparser.y" + case 527: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ +#line 2797 "./util/configparser.y" { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 6557 "util/configparser.c" +#line 5928 "util/configparser.c" break; - case 522: -#line 2771 "./util/configparser.y" + case 528: /* auth_master: VAR_MASTER STRING_ARG */ +#line 2804 "./util/configparser.y" { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6567 "util/configparser.c" +#line 5938 "util/configparser.c" break; - case 523: -#line 2778 "./util/configparser.y" + case 529: /* auth_url: VAR_URL STRING_ARG */ +#line 2811 "./util/configparser.y" { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6577 "util/configparser.c" +#line 5948 "util/configparser.c" break; - case 524: -#line 2785 "./util/configparser.y" + case 530: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ +#line 2818 "./util/configparser.y" { OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6588 "util/configparser.c" +#line 5959 "util/configparser.c" break; - case 525: -#line 2793 "./util/configparser.y" + case 531: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */ +#line 2826 "./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) @@ -6597,11 +5968,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6601 "util/configparser.c" +#line 5972 "util/configparser.c" break; - case 526: -#line 2803 "./util/configparser.y" + case 532: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ +#line 2836 "./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) @@ -6610,11 +5981,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6614 "util/configparser.c" +#line 5985 "util/configparser.c" break; - case 527: -#line 2813 "./util/configparser.y" + case 533: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ +#line 2846 "./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) @@ -6623,11 +5994,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6627 "util/configparser.c" +#line 5998 "util/configparser.c" break; - case 528: -#line 2823 "./util/configparser.y" + case 534: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ +#line 2856 "./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) @@ -6636,11 +6007,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6640 "util/configparser.c" +#line 6011 "util/configparser.c" break; - case 529: -#line 2833 "./util/configparser.y" + case 535: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ +#line 2866 "./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) @@ -6649,11 +6020,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6653 "util/configparser.c" +#line 6024 "util/configparser.c" break; - case 530: -#line 2843 "./util/configparser.y" + case 536: /* view_name: VAR_NAME STRING_ARG */ +#line 2876 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -6662,11 +6033,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 6666 "util/configparser.c" +#line 6037 "util/configparser.c" break; - case 531: -#line 2853 "./util/configparser.y" + case 537: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ +#line 2886 "./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 && @@ -6711,11 +6082,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 6715 "util/configparser.c" +#line 6086 "util/configparser.c" break; - case 532: -#line 2899 "./util/configparser.y" + case 538: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ +#line 2932 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6724,33 +6095,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 6728 "util/configparser.c" +#line 6099 "util/configparser.c" break; - case 533: -#line 2909 "./util/configparser.y" + case 539: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ +#line 2942 "./util/configparser.y" { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6739 "util/configparser.c" +#line 6110 "util/configparser.c" break; - case 534: -#line 2917 "./util/configparser.y" + case 540: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ +#line 2950 "./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))) { fatal_exit("out of memory adding local-data"); } } -#line 6750 "util/configparser.c" +#line 6121 "util/configparser.c" break; - case 535: -#line 2925 "./util/configparser.y" + case 541: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ +#line 2958 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -6764,11 +6135,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6768 "util/configparser.c" +#line 6139 "util/configparser.c" break; - case 536: -#line 2940 "./util/configparser.y" + case 542: /* view_first: VAR_VIEW_FIRST STRING_ARG */ +#line 2973 "./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) @@ -6776,19 +6147,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6780 "util/configparser.c" +#line 6151 "util/configparser.c" break; - case 537: -#line 2949 "./util/configparser.y" + case 543: /* rcstart: VAR_REMOTE_CONTROL */ +#line 2982 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 6788 "util/configparser.c" +#line 6159 "util/configparser.c" break; - case 548: -#line 2960 "./util/configparser.y" + case 554: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ +#line 2993 "./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) @@ -6797,11 +6168,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6801 "util/configparser.c" +#line 6172 "util/configparser.c" break; - case 549: -#line 2970 "./util/configparser.y" + case 555: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ +#line 3003 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6809,79 +6180,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6813 "util/configparser.c" +#line 6184 "util/configparser.c" break; - case 550: -#line 2979 "./util/configparser.y" + case 556: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ +#line 3012 "./util/configparser.y" { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6823 "util/configparser.c" +#line 6194 "util/configparser.c" break; - case 551: -#line 2986 "./util/configparser.y" + case 557: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ +#line 3019 "./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)); } -#line 6833 "util/configparser.c" +#line 6204 "util/configparser.c" break; - case 552: -#line 2993 "./util/configparser.y" + case 558: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ +#line 3026 "./util/configparser.y" { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 6843 "util/configparser.c" +#line 6214 "util/configparser.c" break; - case 553: -#line 3000 "./util/configparser.y" + case 559: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ +#line 3033 "./util/configparser.y" { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 6853 "util/configparser.c" +#line 6224 "util/configparser.c" break; - case 554: -#line 3007 "./util/configparser.y" + case 560: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ +#line 3040 "./util/configparser.y" { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 6863 "util/configparser.c" +#line 6234 "util/configparser.c" break; - case 555: -#line 3014 "./util/configparser.y" + case 561: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ +#line 3047 "./util/configparser.y" { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 6873 "util/configparser.c" +#line 6244 "util/configparser.c" break; - case 556: -#line 3021 "./util/configparser.y" + case 562: /* dtstart: VAR_DNSTAP */ +#line 3054 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 6881 "util/configparser.c" +#line 6252 "util/configparser.c" break; - case 578: -#line 3041 "./util/configparser.y" + case 584: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ +#line 3074 "./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) @@ -6889,11 +6260,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6893 "util/configparser.c" +#line 6264 "util/configparser.c" break; - case 579: -#line 3050 "./util/configparser.y" + case 585: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ +#line 3083 "./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) @@ -6902,31 +6273,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6906 "util/configparser.c" +#line 6277 "util/configparser.c" break; - case 580: -#line 3060 "./util/configparser.y" + case 586: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ +#line 3093 "./util/configparser.y" { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 6916 "util/configparser.c" +#line 6287 "util/configparser.c" break; - case 581: -#line 3067 "./util/configparser.y" + case 587: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ +#line 3100 "./util/configparser.y" { OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_ip); cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); } -#line 6926 "util/configparser.c" +#line 6297 "util/configparser.c" break; - case 582: -#line 3074 "./util/configparser.y" + case 588: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ +#line 3107 "./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) @@ -6934,51 +6305,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6938 "util/configparser.c" +#line 6309 "util/configparser.c" break; - case 583: -#line 3083 "./util/configparser.y" + case 589: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ +#line 3116 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_server_name); cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); } -#line 6948 "util/configparser.c" +#line 6319 "util/configparser.c" break; - case 584: -#line 3090 "./util/configparser.y" + case 590: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ +#line 3123 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_cert_bundle); cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); } -#line 6958 "util/configparser.c" +#line 6329 "util/configparser.c" break; - case 585: -#line 3097 "./util/configparser.y" + case 591: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ +#line 3130 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_key_file); cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); } -#line 6968 "util/configparser.c" +#line 6339 "util/configparser.c" break; - case 586: -#line 3104 "./util/configparser.y" + case 592: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ +#line 3137 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_cert_file); cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); } -#line 6978 "util/configparser.c" +#line 6349 "util/configparser.c" break; - case 587: -#line 3111 "./util/configparser.y" + case 593: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ +#line 3144 "./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) @@ -6986,11 +6357,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6990 "util/configparser.c" +#line 6361 "util/configparser.c" break; - case 588: -#line 3120 "./util/configparser.y" + case 594: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ +#line 3153 "./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) @@ -6998,31 +6369,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7002 "util/configparser.c" +#line 6373 "util/configparser.c" break; - case 589: -#line 3129 "./util/configparser.y" + case 595: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ +#line 3162 "./util/configparser.y" { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 7012 "util/configparser.c" +#line 6383 "util/configparser.c" break; - case 590: -#line 3136 "./util/configparser.y" + case 596: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ +#line 3169 "./util/configparser.y" { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 7022 "util/configparser.c" +#line 6393 "util/configparser.c" break; - case 591: -#line 3143 "./util/configparser.y" + case 597: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ +#line 3176 "./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) @@ -7031,11 +6402,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7035 "util/configparser.c" +#line 6406 "util/configparser.c" break; - case 592: -#line 3153 "./util/configparser.y" + case 598: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ +#line 3186 "./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) @@ -7044,11 +6415,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7048 "util/configparser.c" +#line 6419 "util/configparser.c" break; - case 593: -#line 3163 "./util/configparser.y" + case 599: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ +#line 3196 "./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) @@ -7057,11 +6428,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7061 "util/configparser.c" +#line 6432 "util/configparser.c" break; - case 594: -#line 3173 "./util/configparser.y" + case 600: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ +#line 3206 "./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) @@ -7070,11 +6441,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7074 "util/configparser.c" +#line 6445 "util/configparser.c" break; - case 595: -#line 3183 "./util/configparser.y" + case 601: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ +#line 3216 "./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) @@ -7083,11 +6454,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7087 "util/configparser.c" +#line 6458 "util/configparser.c" break; - case 596: -#line 3193 "./util/configparser.y" + case 602: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ +#line 3226 "./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) @@ -7096,47 +6467,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7100 "util/configparser.c" +#line 6471 "util/configparser.c" break; - case 597: -#line 3203 "./util/configparser.y" + case 603: /* pythonstart: VAR_PYTHON */ +#line 3236 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 7108 "util/configparser.c" +#line 6479 "util/configparser.c" break; - case 601: -#line 3212 "./util/configparser.y" + case 607: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ +#line 3245 "./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))) yyerror("out of memory"); } -#line 7118 "util/configparser.c" +#line 6489 "util/configparser.c" break; - case 602: -#line 3218 "./util/configparser.y" + case 608: /* dynlibstart: VAR_DYNLIB */ +#line 3251 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); } -#line 7126 "util/configparser.c" +#line 6497 "util/configparser.c" break; - case 606: -#line 3227 "./util/configparser.y" + case 612: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ +#line 3260 "./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))) yyerror("out of memory"); } -#line 7136 "util/configparser.c" +#line 6507 "util/configparser.c" break; - case 607: -#line 3233 "./util/configparser.y" + case 613: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ +#line 3266 "./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) @@ -7145,21 +6516,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7149 "util/configparser.c" +#line 6520 "util/configparser.c" break; - case 608: -#line 3243 "./util/configparser.y" + case 614: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ +#line 3276 "./util/configparser.y" { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 7159 "util/configparser.c" +#line 6530 "util/configparser.c" break; - case 609: -#line 3250 "./util/configparser.y" + case 615: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ +#line 3283 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -7167,30 +6538,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 7171 "util/configparser.c" +#line 6542 "util/configparser.c" break; - case 610: -#line 3259 "./util/configparser.y" + case 616: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ +#line 3292 "./util/configparser.y" { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 7182 "util/configparser.c" +#line 6553 "util/configparser.c" break; - case 611: -#line 3267 "./util/configparser.y" + case 617: /* dnscstart: VAR_DNSCRYPT */ +#line 3300 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 7190 "util/configparser.c" +#line 6561 "util/configparser.c" break; - case 624: -#line 3283 "./util/configparser.y" + case 630: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ +#line 3316 "./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) @@ -7198,11 +6569,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7202 "util/configparser.c" +#line 6573 "util/configparser.c" break; - case 625: -#line 3293 "./util/configparser.y" + case 631: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ +#line 3326 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -7210,21 +6581,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 7214 "util/configparser.c" +#line 6585 "util/configparser.c" break; - case 626: -#line 3302 "./util/configparser.y" + case 632: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ +#line 3335 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 7224 "util/configparser.c" +#line 6595 "util/configparser.c" break; - case 627: -#line 3309 "./util/configparser.y" + case 633: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ +#line 3342 "./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))) @@ -7232,21 +6603,21 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 7236 "util/configparser.c" +#line 6607 "util/configparser.c" break; - case 628: -#line 3318 "./util/configparser.y" + case 634: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ +#line 3351 "./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))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 7246 "util/configparser.c" +#line 6617 "util/configparser.c" break; - case 629: -#line 3325 "./util/configparser.y" + case 635: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ +#line 3358 "./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))) @@ -7254,22 +6625,22 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 7258 "util/configparser.c" +#line 6629 "util/configparser.c" break; - case 630: -#line 3334 "./util/configparser.y" + case 636: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ +#line 3367 "./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)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 7269 "util/configparser.c" +#line 6640 "util/configparser.c" break; - case 631: -#line 3342 "./util/configparser.y" + case 637: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ +#line 3375 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -7281,22 +6652,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 7285 "util/configparser.c" +#line 6656 "util/configparser.c" break; - case 632: -#line 3355 "./util/configparser.y" + case 638: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ +#line 3388 "./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)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 7296 "util/configparser.c" +#line 6667 "util/configparser.c" break; - case 633: -#line 3363 "./util/configparser.y" + case 639: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ +#line 3396 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -7308,19 +6679,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 7312 "util/configparser.c" +#line 6683 "util/configparser.c" break; - case 634: -#line 3376 "./util/configparser.y" + case 640: /* cachedbstart: VAR_CACHEDB */ +#line 3409 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 7320 "util/configparser.c" +#line 6691 "util/configparser.c" break; - case 643: -#line 3387 "./util/configparser.y" + case 649: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ +#line 3420 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -7331,11 +6702,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7335 "util/configparser.c" +#line 6706 "util/configparser.c" break; - case 644: -#line 3399 "./util/configparser.y" + case 650: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ +#line 3432 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -7346,11 +6717,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7350 "util/configparser.c" +#line 6721 "util/configparser.c" break; - case 645: -#line 3411 "./util/configparser.y" + case 651: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ +#line 3444 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -7361,11 +6732,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7365 "util/configparser.c" +#line 6736 "util/configparser.c" break; - case 646: -#line 3423 "./util/configparser.y" + case 652: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ +#line 3456 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -7379,11 +6750,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7383 "util/configparser.c" +#line 6754 "util/configparser.c" break; - case 647: -#line 3438 "./util/configparser.y" + case 653: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ +#line 3471 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -7395,11 +6766,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7399 "util/configparser.c" +#line 6770 "util/configparser.c" break; - case 648: -#line 3451 "./util/configparser.y" + case 654: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ +#line 3484 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -7411,11 +6782,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7415 "util/configparser.c" +#line 6786 "util/configparser.c" break; - case 649: -#line 3464 "./util/configparser.y" + case 655: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ +#line 3497 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -7425,19 +6796,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 7429 "util/configparser.c" +#line 6800 "util/configparser.c" break; - case 650: -#line 3475 "./util/configparser.y" + case 656: /* ipsetstart: VAR_IPSET */ +#line 3508 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 7437 "util/configparser.c" +#line 6808 "util/configparser.c" break; - case 655: -#line 3484 "./util/configparser.y" + case 661: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ +#line 3517 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -7451,11 +6822,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7455 "util/configparser.c" +#line 6826 "util/configparser.c" break; - case 656: -#line 3499 "./util/configparser.y" + case 662: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ +#line 3532 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -7469,11 +6840,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7473 "util/configparser.c" +#line 6844 "util/configparser.c" break; -#line 7477 "util/configparser.c" +#line 6848 "util/configparser.c" default: break; } @@ -7633,13 +7004,13 @@ yyabortlab: yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; - /* Fall through. */ + goto yyreturn; #endif -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ +/*-------------------------------------------------------. +| yyreturn -- parsing is finished, clean up and return. | +`-------------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { @@ -7667,7 +7038,7 @@ yyreturn: return yyresult; } -#line 3513 "./util/configparser.y" +#line 3546 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index aa54b9a17..721a02414 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.6.4. */ +/* A Bison parser, made by GNU Bison 3.7.4. */ /* Bison interface for Yacc-like parsers in C @@ -169,207 +169,211 @@ extern int yydebug; VAR_PYTHON_SCRIPT = 370, /* VAR_PYTHON_SCRIPT */ VAR_VAL_SIG_SKEW_MIN = 371, /* VAR_VAL_SIG_SKEW_MIN */ VAR_VAL_SIG_SKEW_MAX = 372, /* VAR_VAL_SIG_SKEW_MAX */ - VAR_CACHE_MIN_TTL = 373, /* VAR_CACHE_MIN_TTL */ - VAR_VAL_LOG_LEVEL = 374, /* VAR_VAL_LOG_LEVEL */ - VAR_AUTO_TRUST_ANCHOR_FILE = 375, /* VAR_AUTO_TRUST_ANCHOR_FILE */ - VAR_KEEP_MISSING = 376, /* VAR_KEEP_MISSING */ - VAR_ADD_HOLDDOWN = 377, /* VAR_ADD_HOLDDOWN */ - VAR_DEL_HOLDDOWN = 378, /* VAR_DEL_HOLDDOWN */ - VAR_SO_RCVBUF = 379, /* VAR_SO_RCVBUF */ - VAR_EDNS_BUFFER_SIZE = 380, /* VAR_EDNS_BUFFER_SIZE */ - VAR_PREFETCH = 381, /* VAR_PREFETCH */ - VAR_PREFETCH_KEY = 382, /* VAR_PREFETCH_KEY */ - VAR_SO_SNDBUF = 383, /* VAR_SO_SNDBUF */ - VAR_SO_REUSEPORT = 384, /* VAR_SO_REUSEPORT */ - VAR_HARDEN_BELOW_NXDOMAIN = 385, /* VAR_HARDEN_BELOW_NXDOMAIN */ - VAR_IGNORE_CD_FLAG = 386, /* VAR_IGNORE_CD_FLAG */ - VAR_LOG_QUERIES = 387, /* VAR_LOG_QUERIES */ - VAR_LOG_REPLIES = 388, /* VAR_LOG_REPLIES */ - VAR_LOG_LOCAL_ACTIONS = 389, /* VAR_LOG_LOCAL_ACTIONS */ - VAR_TCP_UPSTREAM = 390, /* VAR_TCP_UPSTREAM */ - VAR_SSL_UPSTREAM = 391, /* VAR_SSL_UPSTREAM */ - VAR_TCP_AUTH_QUERY_TIMEOUT = 392, /* VAR_TCP_AUTH_QUERY_TIMEOUT */ - VAR_SSL_SERVICE_KEY = 393, /* VAR_SSL_SERVICE_KEY */ - VAR_SSL_SERVICE_PEM = 394, /* VAR_SSL_SERVICE_PEM */ - VAR_SSL_PORT = 395, /* VAR_SSL_PORT */ - VAR_FORWARD_FIRST = 396, /* VAR_FORWARD_FIRST */ - VAR_STUB_SSL_UPSTREAM = 397, /* VAR_STUB_SSL_UPSTREAM */ - VAR_FORWARD_SSL_UPSTREAM = 398, /* VAR_FORWARD_SSL_UPSTREAM */ - VAR_TLS_CERT_BUNDLE = 399, /* VAR_TLS_CERT_BUNDLE */ - VAR_HTTPS_PORT = 400, /* VAR_HTTPS_PORT */ - VAR_HTTP_ENDPOINT = 401, /* VAR_HTTP_ENDPOINT */ - VAR_HTTP_MAX_STREAMS = 402, /* VAR_HTTP_MAX_STREAMS */ - VAR_HTTP_QUERY_BUFFER_SIZE = 403, /* VAR_HTTP_QUERY_BUFFER_SIZE */ - VAR_HTTP_RESPONSE_BUFFER_SIZE = 404, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ - VAR_HTTP_NODELAY = 405, /* VAR_HTTP_NODELAY */ - VAR_HTTP_NOTLS_DOWNSTREAM = 406, /* VAR_HTTP_NOTLS_DOWNSTREAM */ - VAR_STUB_FIRST = 407, /* VAR_STUB_FIRST */ - VAR_MINIMAL_RESPONSES = 408, /* VAR_MINIMAL_RESPONSES */ - VAR_RRSET_ROUNDROBIN = 409, /* VAR_RRSET_ROUNDROBIN */ - VAR_MAX_UDP_SIZE = 410, /* VAR_MAX_UDP_SIZE */ - VAR_DELAY_CLOSE = 411, /* VAR_DELAY_CLOSE */ - VAR_UDP_CONNECT = 412, /* VAR_UDP_CONNECT */ - VAR_UNBLOCK_LAN_ZONES = 413, /* VAR_UNBLOCK_LAN_ZONES */ - VAR_INSECURE_LAN_ZONES = 414, /* VAR_INSECURE_LAN_ZONES */ - VAR_INFRA_CACHE_MIN_RTT = 415, /* VAR_INFRA_CACHE_MIN_RTT */ - VAR_INFRA_KEEP_PROBING = 416, /* VAR_INFRA_KEEP_PROBING */ - VAR_DNS64_PREFIX = 417, /* VAR_DNS64_PREFIX */ - VAR_DNS64_SYNTHALL = 418, /* VAR_DNS64_SYNTHALL */ - VAR_DNS64_IGNORE_AAAA = 419, /* VAR_DNS64_IGNORE_AAAA */ - VAR_DNSTAP = 420, /* VAR_DNSTAP */ - VAR_DNSTAP_ENABLE = 421, /* VAR_DNSTAP_ENABLE */ - VAR_DNSTAP_SOCKET_PATH = 422, /* VAR_DNSTAP_SOCKET_PATH */ - VAR_DNSTAP_IP = 423, /* VAR_DNSTAP_IP */ - VAR_DNSTAP_TLS = 424, /* VAR_DNSTAP_TLS */ - VAR_DNSTAP_TLS_SERVER_NAME = 425, /* VAR_DNSTAP_TLS_SERVER_NAME */ - VAR_DNSTAP_TLS_CERT_BUNDLE = 426, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 427, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 428, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ - VAR_DNSTAP_SEND_IDENTITY = 429, /* VAR_DNSTAP_SEND_IDENTITY */ - VAR_DNSTAP_SEND_VERSION = 430, /* VAR_DNSTAP_SEND_VERSION */ - VAR_DNSTAP_BIDIRECTIONAL = 431, /* VAR_DNSTAP_BIDIRECTIONAL */ - VAR_DNSTAP_IDENTITY = 432, /* VAR_DNSTAP_IDENTITY */ - VAR_DNSTAP_VERSION = 433, /* VAR_DNSTAP_VERSION */ - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 434, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 435, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 436, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 437, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 438, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 439, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ - VAR_RESPONSE_IP_TAG = 440, /* VAR_RESPONSE_IP_TAG */ - VAR_RESPONSE_IP = 441, /* VAR_RESPONSE_IP */ - VAR_RESPONSE_IP_DATA = 442, /* VAR_RESPONSE_IP_DATA */ - VAR_HARDEN_ALGO_DOWNGRADE = 443, /* VAR_HARDEN_ALGO_DOWNGRADE */ - VAR_IP_TRANSPARENT = 444, /* VAR_IP_TRANSPARENT */ - VAR_IP_DSCP = 445, /* VAR_IP_DSCP */ - VAR_DISABLE_DNSSEC_LAME_CHECK = 446, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ - VAR_IP_RATELIMIT = 447, /* VAR_IP_RATELIMIT */ - VAR_IP_RATELIMIT_SLABS = 448, /* VAR_IP_RATELIMIT_SLABS */ - VAR_IP_RATELIMIT_SIZE = 449, /* VAR_IP_RATELIMIT_SIZE */ - VAR_RATELIMIT = 450, /* VAR_RATELIMIT */ - VAR_RATELIMIT_SLABS = 451, /* VAR_RATELIMIT_SLABS */ - VAR_RATELIMIT_SIZE = 452, /* VAR_RATELIMIT_SIZE */ - VAR_RATELIMIT_FOR_DOMAIN = 453, /* VAR_RATELIMIT_FOR_DOMAIN */ - VAR_RATELIMIT_BELOW_DOMAIN = 454, /* VAR_RATELIMIT_BELOW_DOMAIN */ - VAR_IP_RATELIMIT_FACTOR = 455, /* VAR_IP_RATELIMIT_FACTOR */ - VAR_RATELIMIT_FACTOR = 456, /* VAR_RATELIMIT_FACTOR */ - VAR_SEND_CLIENT_SUBNET = 457, /* VAR_SEND_CLIENT_SUBNET */ - VAR_CLIENT_SUBNET_ZONE = 458, /* VAR_CLIENT_SUBNET_ZONE */ - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 459, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - VAR_CLIENT_SUBNET_OPCODE = 460, /* VAR_CLIENT_SUBNET_OPCODE */ - VAR_MAX_CLIENT_SUBNET_IPV4 = 461, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - VAR_MAX_CLIENT_SUBNET_IPV6 = 462, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - VAR_MIN_CLIENT_SUBNET_IPV4 = 463, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - VAR_MIN_CLIENT_SUBNET_IPV6 = 464, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - VAR_MAX_ECS_TREE_SIZE_IPV4 = 465, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - VAR_MAX_ECS_TREE_SIZE_IPV6 = 466, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - VAR_CAPS_WHITELIST = 467, /* VAR_CAPS_WHITELIST */ - VAR_CACHE_MAX_NEGATIVE_TTL = 468, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - VAR_PERMIT_SMALL_HOLDDOWN = 469, /* VAR_PERMIT_SMALL_HOLDDOWN */ - VAR_QNAME_MINIMISATION = 470, /* VAR_QNAME_MINIMISATION */ - VAR_QNAME_MINIMISATION_STRICT = 471, /* VAR_QNAME_MINIMISATION_STRICT */ - VAR_IP_FREEBIND = 472, /* VAR_IP_FREEBIND */ - VAR_DEFINE_TAG = 473, /* VAR_DEFINE_TAG */ - VAR_LOCAL_ZONE_TAG = 474, /* VAR_LOCAL_ZONE_TAG */ - VAR_ACCESS_CONTROL_TAG = 475, /* VAR_ACCESS_CONTROL_TAG */ - VAR_LOCAL_ZONE_OVERRIDE = 476, /* VAR_LOCAL_ZONE_OVERRIDE */ - VAR_ACCESS_CONTROL_TAG_ACTION = 477, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - VAR_ACCESS_CONTROL_TAG_DATA = 478, /* VAR_ACCESS_CONTROL_TAG_DATA */ - VAR_VIEW = 479, /* VAR_VIEW */ - VAR_ACCESS_CONTROL_VIEW = 480, /* VAR_ACCESS_CONTROL_VIEW */ - VAR_VIEW_FIRST = 481, /* VAR_VIEW_FIRST */ - VAR_SERVE_EXPIRED = 482, /* VAR_SERVE_EXPIRED */ - VAR_SERVE_EXPIRED_TTL = 483, /* VAR_SERVE_EXPIRED_TTL */ - VAR_SERVE_EXPIRED_TTL_RESET = 484, /* VAR_SERVE_EXPIRED_TTL_RESET */ - VAR_SERVE_EXPIRED_REPLY_TTL = 485, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 486, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - VAR_SERVE_ORIGINAL_TTL = 487, /* VAR_SERVE_ORIGINAL_TTL */ - VAR_FAKE_DSA = 488, /* VAR_FAKE_DSA */ - VAR_FAKE_SHA1 = 489, /* VAR_FAKE_SHA1 */ - VAR_LOG_IDENTITY = 490, /* VAR_LOG_IDENTITY */ - VAR_HIDE_TRUSTANCHOR = 491, /* VAR_HIDE_TRUSTANCHOR */ - VAR_TRUST_ANCHOR_SIGNALING = 492, /* VAR_TRUST_ANCHOR_SIGNALING */ - VAR_AGGRESSIVE_NSEC = 493, /* VAR_AGGRESSIVE_NSEC */ - VAR_USE_SYSTEMD = 494, /* VAR_USE_SYSTEMD */ - VAR_SHM_ENABLE = 495, /* VAR_SHM_ENABLE */ - VAR_SHM_KEY = 496, /* VAR_SHM_KEY */ - VAR_ROOT_KEY_SENTINEL = 497, /* VAR_ROOT_KEY_SENTINEL */ - VAR_DNSCRYPT = 498, /* VAR_DNSCRYPT */ - VAR_DNSCRYPT_ENABLE = 499, /* VAR_DNSCRYPT_ENABLE */ - VAR_DNSCRYPT_PORT = 500, /* VAR_DNSCRYPT_PORT */ - VAR_DNSCRYPT_PROVIDER = 501, /* VAR_DNSCRYPT_PROVIDER */ - VAR_DNSCRYPT_SECRET_KEY = 502, /* VAR_DNSCRYPT_SECRET_KEY */ - VAR_DNSCRYPT_PROVIDER_CERT = 503, /* VAR_DNSCRYPT_PROVIDER_CERT */ - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 504, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 505, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 506, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 507, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 508, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - VAR_PAD_RESPONSES = 509, /* VAR_PAD_RESPONSES */ - VAR_PAD_RESPONSES_BLOCK_SIZE = 510, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - VAR_PAD_QUERIES = 511, /* VAR_PAD_QUERIES */ - VAR_PAD_QUERIES_BLOCK_SIZE = 512, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - VAR_IPSECMOD_ENABLED = 513, /* VAR_IPSECMOD_ENABLED */ - VAR_IPSECMOD_HOOK = 514, /* VAR_IPSECMOD_HOOK */ - VAR_IPSECMOD_IGNORE_BOGUS = 515, /* VAR_IPSECMOD_IGNORE_BOGUS */ - VAR_IPSECMOD_MAX_TTL = 516, /* VAR_IPSECMOD_MAX_TTL */ - VAR_IPSECMOD_WHITELIST = 517, /* VAR_IPSECMOD_WHITELIST */ - VAR_IPSECMOD_STRICT = 518, /* VAR_IPSECMOD_STRICT */ - VAR_CACHEDB = 519, /* VAR_CACHEDB */ - VAR_CACHEDB_BACKEND = 520, /* VAR_CACHEDB_BACKEND */ - VAR_CACHEDB_SECRETSEED = 521, /* VAR_CACHEDB_SECRETSEED */ - VAR_CACHEDB_REDISHOST = 522, /* VAR_CACHEDB_REDISHOST */ - VAR_CACHEDB_REDISPORT = 523, /* VAR_CACHEDB_REDISPORT */ - VAR_CACHEDB_REDISTIMEOUT = 524, /* VAR_CACHEDB_REDISTIMEOUT */ - VAR_CACHEDB_REDISEXPIRERECORDS = 525, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 526, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - VAR_FOR_UPSTREAM = 527, /* VAR_FOR_UPSTREAM */ - VAR_AUTH_ZONE = 528, /* VAR_AUTH_ZONE */ - VAR_ZONEFILE = 529, /* VAR_ZONEFILE */ - VAR_MASTER = 530, /* VAR_MASTER */ - VAR_URL = 531, /* VAR_URL */ - VAR_FOR_DOWNSTREAM = 532, /* VAR_FOR_DOWNSTREAM */ - VAR_FALLBACK_ENABLED = 533, /* VAR_FALLBACK_ENABLED */ - VAR_TLS_ADDITIONAL_PORT = 534, /* VAR_TLS_ADDITIONAL_PORT */ - VAR_LOW_RTT = 535, /* VAR_LOW_RTT */ - VAR_LOW_RTT_PERMIL = 536, /* VAR_LOW_RTT_PERMIL */ - VAR_FAST_SERVER_PERMIL = 537, /* VAR_FAST_SERVER_PERMIL */ - VAR_FAST_SERVER_NUM = 538, /* VAR_FAST_SERVER_NUM */ - VAR_ALLOW_NOTIFY = 539, /* VAR_ALLOW_NOTIFY */ - VAR_TLS_WIN_CERT = 540, /* VAR_TLS_WIN_CERT */ - VAR_TCP_CONNECTION_LIMIT = 541, /* VAR_TCP_CONNECTION_LIMIT */ - VAR_FORWARD_NO_CACHE = 542, /* VAR_FORWARD_NO_CACHE */ - VAR_STUB_NO_CACHE = 543, /* VAR_STUB_NO_CACHE */ - VAR_LOG_SERVFAIL = 544, /* VAR_LOG_SERVFAIL */ - VAR_DENY_ANY = 545, /* VAR_DENY_ANY */ - VAR_UNKNOWN_SERVER_TIME_LIMIT = 546, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - VAR_LOG_TAG_QUERYREPLY = 547, /* VAR_LOG_TAG_QUERYREPLY */ - VAR_STREAM_WAIT_SIZE = 548, /* VAR_STREAM_WAIT_SIZE */ - VAR_TLS_CIPHERS = 549, /* VAR_TLS_CIPHERS */ - VAR_TLS_CIPHERSUITES = 550, /* VAR_TLS_CIPHERSUITES */ - VAR_TLS_USE_SNI = 551, /* VAR_TLS_USE_SNI */ - VAR_IPSET = 552, /* VAR_IPSET */ - VAR_IPSET_NAME_V4 = 553, /* VAR_IPSET_NAME_V4 */ - VAR_IPSET_NAME_V6 = 554, /* VAR_IPSET_NAME_V6 */ - VAR_TLS_SESSION_TICKET_KEYS = 555, /* VAR_TLS_SESSION_TICKET_KEYS */ - VAR_RPZ = 556, /* VAR_RPZ */ - VAR_TAGS = 557, /* VAR_TAGS */ - VAR_RPZ_ACTION_OVERRIDE = 558, /* VAR_RPZ_ACTION_OVERRIDE */ - VAR_RPZ_CNAME_OVERRIDE = 559, /* VAR_RPZ_CNAME_OVERRIDE */ - VAR_RPZ_LOG = 560, /* VAR_RPZ_LOG */ - VAR_RPZ_LOG_NAME = 561, /* VAR_RPZ_LOG_NAME */ - VAR_DYNLIB = 562, /* VAR_DYNLIB */ - VAR_DYNLIB_FILE = 563, /* VAR_DYNLIB_FILE */ - VAR_EDNS_CLIENT_STRING = 564, /* VAR_EDNS_CLIENT_STRING */ - VAR_EDNS_CLIENT_STRING_OPCODE = 565, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - VAR_NSID = 566, /* VAR_NSID */ - VAR_ZONEMD_PERMISSIVE_MODE = 567, /* VAR_ZONEMD_PERMISSIVE_MODE */ - VAR_ZONEMD_CHECK = 568, /* VAR_ZONEMD_CHECK */ - VAR_ZONEMD_REJECT_ABSENCE = 569 /* VAR_ZONEMD_REJECT_ABSENCE */ + 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_HTTPS_PORT = 401, /* VAR_HTTPS_PORT */ + VAR_HTTP_ENDPOINT = 402, /* VAR_HTTP_ENDPOINT */ + VAR_HTTP_MAX_STREAMS = 403, /* VAR_HTTP_MAX_STREAMS */ + VAR_HTTP_QUERY_BUFFER_SIZE = 404, /* VAR_HTTP_QUERY_BUFFER_SIZE */ + VAR_HTTP_RESPONSE_BUFFER_SIZE = 405, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ + VAR_HTTP_NODELAY = 406, /* VAR_HTTP_NODELAY */ + VAR_HTTP_NOTLS_DOWNSTREAM = 407, /* VAR_HTTP_NOTLS_DOWNSTREAM */ + VAR_STUB_FIRST = 408, /* VAR_STUB_FIRST */ + VAR_MINIMAL_RESPONSES = 409, /* VAR_MINIMAL_RESPONSES */ + VAR_RRSET_ROUNDROBIN = 410, /* VAR_RRSET_ROUNDROBIN */ + VAR_MAX_UDP_SIZE = 411, /* VAR_MAX_UDP_SIZE */ + VAR_DELAY_CLOSE = 412, /* VAR_DELAY_CLOSE */ + VAR_UDP_CONNECT = 413, /* VAR_UDP_CONNECT */ + VAR_UNBLOCK_LAN_ZONES = 414, /* VAR_UNBLOCK_LAN_ZONES */ + VAR_INSECURE_LAN_ZONES = 415, /* VAR_INSECURE_LAN_ZONES */ + VAR_INFRA_CACHE_MIN_RTT = 416, /* VAR_INFRA_CACHE_MIN_RTT */ + VAR_INFRA_KEEP_PROBING = 417, /* VAR_INFRA_KEEP_PROBING */ + VAR_DNS64_PREFIX = 418, /* VAR_DNS64_PREFIX */ + VAR_DNS64_SYNTHALL = 419, /* VAR_DNS64_SYNTHALL */ + VAR_DNS64_IGNORE_AAAA = 420, /* VAR_DNS64_IGNORE_AAAA */ + VAR_DNSTAP = 421, /* VAR_DNSTAP */ + VAR_DNSTAP_ENABLE = 422, /* VAR_DNSTAP_ENABLE */ + VAR_DNSTAP_SOCKET_PATH = 423, /* VAR_DNSTAP_SOCKET_PATH */ + VAR_DNSTAP_IP = 424, /* VAR_DNSTAP_IP */ + VAR_DNSTAP_TLS = 425, /* VAR_DNSTAP_TLS */ + VAR_DNSTAP_TLS_SERVER_NAME = 426, /* VAR_DNSTAP_TLS_SERVER_NAME */ + VAR_DNSTAP_TLS_CERT_BUNDLE = 427, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 428, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 429, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ + VAR_DNSTAP_SEND_IDENTITY = 430, /* VAR_DNSTAP_SEND_IDENTITY */ + VAR_DNSTAP_SEND_VERSION = 431, /* VAR_DNSTAP_SEND_VERSION */ + VAR_DNSTAP_BIDIRECTIONAL = 432, /* VAR_DNSTAP_BIDIRECTIONAL */ + VAR_DNSTAP_IDENTITY = 433, /* VAR_DNSTAP_IDENTITY */ + VAR_DNSTAP_VERSION = 434, /* VAR_DNSTAP_VERSION */ + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 435, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 436, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 437, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 438, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 439, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 440, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ + VAR_RESPONSE_IP_TAG = 441, /* VAR_RESPONSE_IP_TAG */ + VAR_RESPONSE_IP = 442, /* VAR_RESPONSE_IP */ + VAR_RESPONSE_IP_DATA = 443, /* VAR_RESPONSE_IP_DATA */ + VAR_HARDEN_ALGO_DOWNGRADE = 444, /* VAR_HARDEN_ALGO_DOWNGRADE */ + VAR_IP_TRANSPARENT = 445, /* VAR_IP_TRANSPARENT */ + VAR_IP_DSCP = 446, /* VAR_IP_DSCP */ + VAR_DISABLE_DNSSEC_LAME_CHECK = 447, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ + VAR_IP_RATELIMIT = 448, /* VAR_IP_RATELIMIT */ + VAR_IP_RATELIMIT_SLABS = 449, /* VAR_IP_RATELIMIT_SLABS */ + VAR_IP_RATELIMIT_SIZE = 450, /* VAR_IP_RATELIMIT_SIZE */ + VAR_RATELIMIT = 451, /* VAR_RATELIMIT */ + VAR_RATELIMIT_SLABS = 452, /* VAR_RATELIMIT_SLABS */ + VAR_RATELIMIT_SIZE = 453, /* VAR_RATELIMIT_SIZE */ + VAR_RATELIMIT_FOR_DOMAIN = 454, /* VAR_RATELIMIT_FOR_DOMAIN */ + VAR_RATELIMIT_BELOW_DOMAIN = 455, /* VAR_RATELIMIT_BELOW_DOMAIN */ + VAR_IP_RATELIMIT_FACTOR = 456, /* VAR_IP_RATELIMIT_FACTOR */ + VAR_RATELIMIT_FACTOR = 457, /* VAR_RATELIMIT_FACTOR */ + VAR_SEND_CLIENT_SUBNET = 458, /* VAR_SEND_CLIENT_SUBNET */ + VAR_CLIENT_SUBNET_ZONE = 459, /* VAR_CLIENT_SUBNET_ZONE */ + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 460, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + VAR_CLIENT_SUBNET_OPCODE = 461, /* VAR_CLIENT_SUBNET_OPCODE */ + VAR_MAX_CLIENT_SUBNET_IPV4 = 462, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + VAR_MAX_CLIENT_SUBNET_IPV6 = 463, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + VAR_MIN_CLIENT_SUBNET_IPV4 = 464, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + VAR_MIN_CLIENT_SUBNET_IPV6 = 465, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + VAR_MAX_ECS_TREE_SIZE_IPV4 = 466, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + VAR_MAX_ECS_TREE_SIZE_IPV6 = 467, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + VAR_CAPS_WHITELIST = 468, /* VAR_CAPS_WHITELIST */ + VAR_CACHE_MAX_NEGATIVE_TTL = 469, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + VAR_PERMIT_SMALL_HOLDDOWN = 470, /* VAR_PERMIT_SMALL_HOLDDOWN */ + VAR_QNAME_MINIMISATION = 471, /* VAR_QNAME_MINIMISATION */ + VAR_QNAME_MINIMISATION_STRICT = 472, /* VAR_QNAME_MINIMISATION_STRICT */ + VAR_IP_FREEBIND = 473, /* VAR_IP_FREEBIND */ + VAR_DEFINE_TAG = 474, /* VAR_DEFINE_TAG */ + VAR_LOCAL_ZONE_TAG = 475, /* VAR_LOCAL_ZONE_TAG */ + VAR_ACCESS_CONTROL_TAG = 476, /* VAR_ACCESS_CONTROL_TAG */ + VAR_LOCAL_ZONE_OVERRIDE = 477, /* VAR_LOCAL_ZONE_OVERRIDE */ + VAR_ACCESS_CONTROL_TAG_ACTION = 478, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + VAR_ACCESS_CONTROL_TAG_DATA = 479, /* VAR_ACCESS_CONTROL_TAG_DATA */ + VAR_VIEW = 480, /* VAR_VIEW */ + VAR_ACCESS_CONTROL_VIEW = 481, /* VAR_ACCESS_CONTROL_VIEW */ + VAR_VIEW_FIRST = 482, /* VAR_VIEW_FIRST */ + VAR_SERVE_EXPIRED = 483, /* VAR_SERVE_EXPIRED */ + VAR_SERVE_EXPIRED_TTL = 484, /* VAR_SERVE_EXPIRED_TTL */ + VAR_SERVE_EXPIRED_TTL_RESET = 485, /* VAR_SERVE_EXPIRED_TTL_RESET */ + VAR_SERVE_EXPIRED_REPLY_TTL = 486, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 487, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + VAR_SERVE_ORIGINAL_TTL = 488, /* VAR_SERVE_ORIGINAL_TTL */ + VAR_FAKE_DSA = 489, /* VAR_FAKE_DSA */ + VAR_FAKE_SHA1 = 490, /* VAR_FAKE_SHA1 */ + VAR_LOG_IDENTITY = 491, /* VAR_LOG_IDENTITY */ + VAR_HIDE_TRUSTANCHOR = 492, /* VAR_HIDE_TRUSTANCHOR */ + VAR_HIDE_HTTP_USER_AGENT = 493, /* VAR_HIDE_HTTP_USER_AGENT */ + VAR_HTTP_USER_AGENT = 494, /* VAR_HTTP_USER_AGENT */ + VAR_TRUST_ANCHOR_SIGNALING = 495, /* VAR_TRUST_ANCHOR_SIGNALING */ + VAR_AGGRESSIVE_NSEC = 496, /* VAR_AGGRESSIVE_NSEC */ + VAR_USE_SYSTEMD = 497, /* VAR_USE_SYSTEMD */ + VAR_SHM_ENABLE = 498, /* VAR_SHM_ENABLE */ + VAR_SHM_KEY = 499, /* VAR_SHM_KEY */ + VAR_ROOT_KEY_SENTINEL = 500, /* VAR_ROOT_KEY_SENTINEL */ + VAR_DNSCRYPT = 501, /* VAR_DNSCRYPT */ + VAR_DNSCRYPT_ENABLE = 502, /* VAR_DNSCRYPT_ENABLE */ + VAR_DNSCRYPT_PORT = 503, /* VAR_DNSCRYPT_PORT */ + VAR_DNSCRYPT_PROVIDER = 504, /* VAR_DNSCRYPT_PROVIDER */ + VAR_DNSCRYPT_SECRET_KEY = 505, /* VAR_DNSCRYPT_SECRET_KEY */ + VAR_DNSCRYPT_PROVIDER_CERT = 506, /* VAR_DNSCRYPT_PROVIDER_CERT */ + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 507, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 508, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 509, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 510, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 511, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + VAR_PAD_RESPONSES = 512, /* VAR_PAD_RESPONSES */ + VAR_PAD_RESPONSES_BLOCK_SIZE = 513, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + VAR_PAD_QUERIES = 514, /* VAR_PAD_QUERIES */ + VAR_PAD_QUERIES_BLOCK_SIZE = 515, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + VAR_IPSECMOD_ENABLED = 516, /* VAR_IPSECMOD_ENABLED */ + VAR_IPSECMOD_HOOK = 517, /* VAR_IPSECMOD_HOOK */ + VAR_IPSECMOD_IGNORE_BOGUS = 518, /* VAR_IPSECMOD_IGNORE_BOGUS */ + VAR_IPSECMOD_MAX_TTL = 519, /* VAR_IPSECMOD_MAX_TTL */ + VAR_IPSECMOD_WHITELIST = 520, /* VAR_IPSECMOD_WHITELIST */ + VAR_IPSECMOD_STRICT = 521, /* VAR_IPSECMOD_STRICT */ + VAR_CACHEDB = 522, /* VAR_CACHEDB */ + VAR_CACHEDB_BACKEND = 523, /* VAR_CACHEDB_BACKEND */ + VAR_CACHEDB_SECRETSEED = 524, /* VAR_CACHEDB_SECRETSEED */ + VAR_CACHEDB_REDISHOST = 525, /* VAR_CACHEDB_REDISHOST */ + VAR_CACHEDB_REDISPORT = 526, /* VAR_CACHEDB_REDISPORT */ + VAR_CACHEDB_REDISTIMEOUT = 527, /* VAR_CACHEDB_REDISTIMEOUT */ + VAR_CACHEDB_REDISEXPIRERECORDS = 528, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 529, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + VAR_FOR_UPSTREAM = 530, /* VAR_FOR_UPSTREAM */ + VAR_AUTH_ZONE = 531, /* VAR_AUTH_ZONE */ + VAR_ZONEFILE = 532, /* VAR_ZONEFILE */ + VAR_MASTER = 533, /* VAR_MASTER */ + VAR_URL = 534, /* VAR_URL */ + VAR_FOR_DOWNSTREAM = 535, /* VAR_FOR_DOWNSTREAM */ + VAR_FALLBACK_ENABLED = 536, /* VAR_FALLBACK_ENABLED */ + VAR_TLS_ADDITIONAL_PORT = 537, /* VAR_TLS_ADDITIONAL_PORT */ + VAR_LOW_RTT = 538, /* VAR_LOW_RTT */ + VAR_LOW_RTT_PERMIL = 539, /* VAR_LOW_RTT_PERMIL */ + VAR_FAST_SERVER_PERMIL = 540, /* VAR_FAST_SERVER_PERMIL */ + VAR_FAST_SERVER_NUM = 541, /* VAR_FAST_SERVER_NUM */ + VAR_ALLOW_NOTIFY = 542, /* VAR_ALLOW_NOTIFY */ + VAR_TLS_WIN_CERT = 543, /* VAR_TLS_WIN_CERT */ + VAR_TCP_CONNECTION_LIMIT = 544, /* VAR_TCP_CONNECTION_LIMIT */ + VAR_FORWARD_NO_CACHE = 545, /* VAR_FORWARD_NO_CACHE */ + VAR_STUB_NO_CACHE = 546, /* VAR_STUB_NO_CACHE */ + VAR_LOG_SERVFAIL = 547, /* VAR_LOG_SERVFAIL */ + VAR_DENY_ANY = 548, /* VAR_DENY_ANY */ + VAR_UNKNOWN_SERVER_TIME_LIMIT = 549, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + VAR_LOG_TAG_QUERYREPLY = 550, /* VAR_LOG_TAG_QUERYREPLY */ + VAR_STREAM_WAIT_SIZE = 551, /* VAR_STREAM_WAIT_SIZE */ + VAR_TLS_CIPHERS = 552, /* VAR_TLS_CIPHERS */ + VAR_TLS_CIPHERSUITES = 553, /* VAR_TLS_CIPHERSUITES */ + VAR_TLS_USE_SNI = 554, /* VAR_TLS_USE_SNI */ + VAR_IPSET = 555, /* VAR_IPSET */ + VAR_IPSET_NAME_V4 = 556, /* VAR_IPSET_NAME_V4 */ + VAR_IPSET_NAME_V6 = 557, /* VAR_IPSET_NAME_V6 */ + VAR_TLS_SESSION_TICKET_KEYS = 558, /* VAR_TLS_SESSION_TICKET_KEYS */ + VAR_RPZ = 559, /* VAR_RPZ */ + VAR_TAGS = 560, /* VAR_TAGS */ + VAR_RPZ_ACTION_OVERRIDE = 561, /* VAR_RPZ_ACTION_OVERRIDE */ + VAR_RPZ_CNAME_OVERRIDE = 562, /* VAR_RPZ_CNAME_OVERRIDE */ + VAR_RPZ_LOG = 563, /* VAR_RPZ_LOG */ + VAR_RPZ_LOG_NAME = 564, /* VAR_RPZ_LOG_NAME */ + VAR_DYNLIB = 565, /* VAR_DYNLIB */ + VAR_DYNLIB_FILE = 566, /* VAR_DYNLIB_FILE */ + VAR_EDNS_CLIENT_STRING = 567, /* VAR_EDNS_CLIENT_STRING */ + VAR_EDNS_CLIENT_STRING_OPCODE = 568, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + VAR_NSID = 569, /* VAR_NSID */ + VAR_ZONEMD_PERMISSIVE_MODE = 570, /* VAR_ZONEMD_PERMISSIVE_MODE */ + VAR_ZONEMD_CHECK = 571, /* VAR_ZONEMD_CHECK */ + VAR_ZONEMD_REJECT_ABSENCE = 572 /* VAR_ZONEMD_REJECT_ABSENCE */ }; typedef enum yytokentype yytoken_kind_t; #endif /* Token kinds. */ +#define YYEMPTY -2 #define YYEOF 0 #define YYerror 256 #define YYUNDEF 257 @@ -488,203 +492,206 @@ extern int yydebug; #define VAR_PYTHON_SCRIPT 370 #define VAR_VAL_SIG_SKEW_MIN 371 #define VAR_VAL_SIG_SKEW_MAX 372 -#define VAR_CACHE_MIN_TTL 373 -#define VAR_VAL_LOG_LEVEL 374 -#define VAR_AUTO_TRUST_ANCHOR_FILE 375 -#define VAR_KEEP_MISSING 376 -#define VAR_ADD_HOLDDOWN 377 -#define VAR_DEL_HOLDDOWN 378 -#define VAR_SO_RCVBUF 379 -#define VAR_EDNS_BUFFER_SIZE 380 -#define VAR_PREFETCH 381 -#define VAR_PREFETCH_KEY 382 -#define VAR_SO_SNDBUF 383 -#define VAR_SO_REUSEPORT 384 -#define VAR_HARDEN_BELOW_NXDOMAIN 385 -#define VAR_IGNORE_CD_FLAG 386 -#define VAR_LOG_QUERIES 387 -#define VAR_LOG_REPLIES 388 -#define VAR_LOG_LOCAL_ACTIONS 389 -#define VAR_TCP_UPSTREAM 390 -#define VAR_SSL_UPSTREAM 391 -#define VAR_TCP_AUTH_QUERY_TIMEOUT 392 -#define VAR_SSL_SERVICE_KEY 393 -#define VAR_SSL_SERVICE_PEM 394 -#define VAR_SSL_PORT 395 -#define VAR_FORWARD_FIRST 396 -#define VAR_STUB_SSL_UPSTREAM 397 -#define VAR_FORWARD_SSL_UPSTREAM 398 -#define VAR_TLS_CERT_BUNDLE 399 -#define VAR_HTTPS_PORT 400 -#define VAR_HTTP_ENDPOINT 401 -#define VAR_HTTP_MAX_STREAMS 402 -#define VAR_HTTP_QUERY_BUFFER_SIZE 403 -#define VAR_HTTP_RESPONSE_BUFFER_SIZE 404 -#define VAR_HTTP_NODELAY 405 -#define VAR_HTTP_NOTLS_DOWNSTREAM 406 -#define VAR_STUB_FIRST 407 -#define VAR_MINIMAL_RESPONSES 408 -#define VAR_RRSET_ROUNDROBIN 409 -#define VAR_MAX_UDP_SIZE 410 -#define VAR_DELAY_CLOSE 411 -#define VAR_UDP_CONNECT 412 -#define VAR_UNBLOCK_LAN_ZONES 413 -#define VAR_INSECURE_LAN_ZONES 414 -#define VAR_INFRA_CACHE_MIN_RTT 415 -#define VAR_INFRA_KEEP_PROBING 416 -#define VAR_DNS64_PREFIX 417 -#define VAR_DNS64_SYNTHALL 418 -#define VAR_DNS64_IGNORE_AAAA 419 -#define VAR_DNSTAP 420 -#define VAR_DNSTAP_ENABLE 421 -#define VAR_DNSTAP_SOCKET_PATH 422 -#define VAR_DNSTAP_IP 423 -#define VAR_DNSTAP_TLS 424 -#define VAR_DNSTAP_TLS_SERVER_NAME 425 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 426 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 427 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 428 -#define VAR_DNSTAP_SEND_IDENTITY 429 -#define VAR_DNSTAP_SEND_VERSION 430 -#define VAR_DNSTAP_BIDIRECTIONAL 431 -#define VAR_DNSTAP_IDENTITY 432 -#define VAR_DNSTAP_VERSION 433 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 434 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 435 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 436 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 437 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 438 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 439 -#define VAR_RESPONSE_IP_TAG 440 -#define VAR_RESPONSE_IP 441 -#define VAR_RESPONSE_IP_DATA 442 -#define VAR_HARDEN_ALGO_DOWNGRADE 443 -#define VAR_IP_TRANSPARENT 444 -#define VAR_IP_DSCP 445 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 446 -#define VAR_IP_RATELIMIT 447 -#define VAR_IP_RATELIMIT_SLABS 448 -#define VAR_IP_RATELIMIT_SIZE 449 -#define VAR_RATELIMIT 450 -#define VAR_RATELIMIT_SLABS 451 -#define VAR_RATELIMIT_SIZE 452 -#define VAR_RATELIMIT_FOR_DOMAIN 453 -#define VAR_RATELIMIT_BELOW_DOMAIN 454 -#define VAR_IP_RATELIMIT_FACTOR 455 -#define VAR_RATELIMIT_FACTOR 456 -#define VAR_SEND_CLIENT_SUBNET 457 -#define VAR_CLIENT_SUBNET_ZONE 458 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 459 -#define VAR_CLIENT_SUBNET_OPCODE 460 -#define VAR_MAX_CLIENT_SUBNET_IPV4 461 -#define VAR_MAX_CLIENT_SUBNET_IPV6 462 -#define VAR_MIN_CLIENT_SUBNET_IPV4 463 -#define VAR_MIN_CLIENT_SUBNET_IPV6 464 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 465 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 466 -#define VAR_CAPS_WHITELIST 467 -#define VAR_CACHE_MAX_NEGATIVE_TTL 468 -#define VAR_PERMIT_SMALL_HOLDDOWN 469 -#define VAR_QNAME_MINIMISATION 470 -#define VAR_QNAME_MINIMISATION_STRICT 471 -#define VAR_IP_FREEBIND 472 -#define VAR_DEFINE_TAG 473 -#define VAR_LOCAL_ZONE_TAG 474 -#define VAR_ACCESS_CONTROL_TAG 475 -#define VAR_LOCAL_ZONE_OVERRIDE 476 -#define VAR_ACCESS_CONTROL_TAG_ACTION 477 -#define VAR_ACCESS_CONTROL_TAG_DATA 478 -#define VAR_VIEW 479 -#define VAR_ACCESS_CONTROL_VIEW 480 -#define VAR_VIEW_FIRST 481 -#define VAR_SERVE_EXPIRED 482 -#define VAR_SERVE_EXPIRED_TTL 483 -#define VAR_SERVE_EXPIRED_TTL_RESET 484 -#define VAR_SERVE_EXPIRED_REPLY_TTL 485 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 486 -#define VAR_SERVE_ORIGINAL_TTL 487 -#define VAR_FAKE_DSA 488 -#define VAR_FAKE_SHA1 489 -#define VAR_LOG_IDENTITY 490 -#define VAR_HIDE_TRUSTANCHOR 491 -#define VAR_TRUST_ANCHOR_SIGNALING 492 -#define VAR_AGGRESSIVE_NSEC 493 -#define VAR_USE_SYSTEMD 494 -#define VAR_SHM_ENABLE 495 -#define VAR_SHM_KEY 496 -#define VAR_ROOT_KEY_SENTINEL 497 -#define VAR_DNSCRYPT 498 -#define VAR_DNSCRYPT_ENABLE 499 -#define VAR_DNSCRYPT_PORT 500 -#define VAR_DNSCRYPT_PROVIDER 501 -#define VAR_DNSCRYPT_SECRET_KEY 502 -#define VAR_DNSCRYPT_PROVIDER_CERT 503 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 504 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 505 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 506 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 507 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 508 -#define VAR_PAD_RESPONSES 509 -#define VAR_PAD_RESPONSES_BLOCK_SIZE 510 -#define VAR_PAD_QUERIES 511 -#define VAR_PAD_QUERIES_BLOCK_SIZE 512 -#define VAR_IPSECMOD_ENABLED 513 -#define VAR_IPSECMOD_HOOK 514 -#define VAR_IPSECMOD_IGNORE_BOGUS 515 -#define VAR_IPSECMOD_MAX_TTL 516 -#define VAR_IPSECMOD_WHITELIST 517 -#define VAR_IPSECMOD_STRICT 518 -#define VAR_CACHEDB 519 -#define VAR_CACHEDB_BACKEND 520 -#define VAR_CACHEDB_SECRETSEED 521 -#define VAR_CACHEDB_REDISHOST 522 -#define VAR_CACHEDB_REDISPORT 523 -#define VAR_CACHEDB_REDISTIMEOUT 524 -#define VAR_CACHEDB_REDISEXPIRERECORDS 525 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 526 -#define VAR_FOR_UPSTREAM 527 -#define VAR_AUTH_ZONE 528 -#define VAR_ZONEFILE 529 -#define VAR_MASTER 530 -#define VAR_URL 531 -#define VAR_FOR_DOWNSTREAM 532 -#define VAR_FALLBACK_ENABLED 533 -#define VAR_TLS_ADDITIONAL_PORT 534 -#define VAR_LOW_RTT 535 -#define VAR_LOW_RTT_PERMIL 536 -#define VAR_FAST_SERVER_PERMIL 537 -#define VAR_FAST_SERVER_NUM 538 -#define VAR_ALLOW_NOTIFY 539 -#define VAR_TLS_WIN_CERT 540 -#define VAR_TCP_CONNECTION_LIMIT 541 -#define VAR_FORWARD_NO_CACHE 542 -#define VAR_STUB_NO_CACHE 543 -#define VAR_LOG_SERVFAIL 544 -#define VAR_DENY_ANY 545 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 546 -#define VAR_LOG_TAG_QUERYREPLY 547 -#define VAR_STREAM_WAIT_SIZE 548 -#define VAR_TLS_CIPHERS 549 -#define VAR_TLS_CIPHERSUITES 550 -#define VAR_TLS_USE_SNI 551 -#define VAR_IPSET 552 -#define VAR_IPSET_NAME_V4 553 -#define VAR_IPSET_NAME_V6 554 -#define VAR_TLS_SESSION_TICKET_KEYS 555 -#define VAR_RPZ 556 -#define VAR_TAGS 557 -#define VAR_RPZ_ACTION_OVERRIDE 558 -#define VAR_RPZ_CNAME_OVERRIDE 559 -#define VAR_RPZ_LOG 560 -#define VAR_RPZ_LOG_NAME 561 -#define VAR_DYNLIB 562 -#define VAR_DYNLIB_FILE 563 -#define VAR_EDNS_CLIENT_STRING 564 -#define VAR_EDNS_CLIENT_STRING_OPCODE 565 -#define VAR_NSID 566 -#define VAR_ZONEMD_PERMISSIVE_MODE 567 -#define VAR_ZONEMD_CHECK 568 -#define VAR_ZONEMD_REJECT_ABSENCE 569 +#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_HTTPS_PORT 401 +#define VAR_HTTP_ENDPOINT 402 +#define VAR_HTTP_MAX_STREAMS 403 +#define VAR_HTTP_QUERY_BUFFER_SIZE 404 +#define VAR_HTTP_RESPONSE_BUFFER_SIZE 405 +#define VAR_HTTP_NODELAY 406 +#define VAR_HTTP_NOTLS_DOWNSTREAM 407 +#define VAR_STUB_FIRST 408 +#define VAR_MINIMAL_RESPONSES 409 +#define VAR_RRSET_ROUNDROBIN 410 +#define VAR_MAX_UDP_SIZE 411 +#define VAR_DELAY_CLOSE 412 +#define VAR_UDP_CONNECT 413 +#define VAR_UNBLOCK_LAN_ZONES 414 +#define VAR_INSECURE_LAN_ZONES 415 +#define VAR_INFRA_CACHE_MIN_RTT 416 +#define VAR_INFRA_KEEP_PROBING 417 +#define VAR_DNS64_PREFIX 418 +#define VAR_DNS64_SYNTHALL 419 +#define VAR_DNS64_IGNORE_AAAA 420 +#define VAR_DNSTAP 421 +#define VAR_DNSTAP_ENABLE 422 +#define VAR_DNSTAP_SOCKET_PATH 423 +#define VAR_DNSTAP_IP 424 +#define VAR_DNSTAP_TLS 425 +#define VAR_DNSTAP_TLS_SERVER_NAME 426 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 427 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 428 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 429 +#define VAR_DNSTAP_SEND_IDENTITY 430 +#define VAR_DNSTAP_SEND_VERSION 431 +#define VAR_DNSTAP_BIDIRECTIONAL 432 +#define VAR_DNSTAP_IDENTITY 433 +#define VAR_DNSTAP_VERSION 434 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 435 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 436 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 437 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 438 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 439 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 440 +#define VAR_RESPONSE_IP_TAG 441 +#define VAR_RESPONSE_IP 442 +#define VAR_RESPONSE_IP_DATA 443 +#define VAR_HARDEN_ALGO_DOWNGRADE 444 +#define VAR_IP_TRANSPARENT 445 +#define VAR_IP_DSCP 446 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 447 +#define VAR_IP_RATELIMIT 448 +#define VAR_IP_RATELIMIT_SLABS 449 +#define VAR_IP_RATELIMIT_SIZE 450 +#define VAR_RATELIMIT 451 +#define VAR_RATELIMIT_SLABS 452 +#define VAR_RATELIMIT_SIZE 453 +#define VAR_RATELIMIT_FOR_DOMAIN 454 +#define VAR_RATELIMIT_BELOW_DOMAIN 455 +#define VAR_IP_RATELIMIT_FACTOR 456 +#define VAR_RATELIMIT_FACTOR 457 +#define VAR_SEND_CLIENT_SUBNET 458 +#define VAR_CLIENT_SUBNET_ZONE 459 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 460 +#define VAR_CLIENT_SUBNET_OPCODE 461 +#define VAR_MAX_CLIENT_SUBNET_IPV4 462 +#define VAR_MAX_CLIENT_SUBNET_IPV6 463 +#define VAR_MIN_CLIENT_SUBNET_IPV4 464 +#define VAR_MIN_CLIENT_SUBNET_IPV6 465 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 466 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 467 +#define VAR_CAPS_WHITELIST 468 +#define VAR_CACHE_MAX_NEGATIVE_TTL 469 +#define VAR_PERMIT_SMALL_HOLDDOWN 470 +#define VAR_QNAME_MINIMISATION 471 +#define VAR_QNAME_MINIMISATION_STRICT 472 +#define VAR_IP_FREEBIND 473 +#define VAR_DEFINE_TAG 474 +#define VAR_LOCAL_ZONE_TAG 475 +#define VAR_ACCESS_CONTROL_TAG 476 +#define VAR_LOCAL_ZONE_OVERRIDE 477 +#define VAR_ACCESS_CONTROL_TAG_ACTION 478 +#define VAR_ACCESS_CONTROL_TAG_DATA 479 +#define VAR_VIEW 480 +#define VAR_ACCESS_CONTROL_VIEW 481 +#define VAR_VIEW_FIRST 482 +#define VAR_SERVE_EXPIRED 483 +#define VAR_SERVE_EXPIRED_TTL 484 +#define VAR_SERVE_EXPIRED_TTL_RESET 485 +#define VAR_SERVE_EXPIRED_REPLY_TTL 486 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 487 +#define VAR_SERVE_ORIGINAL_TTL 488 +#define VAR_FAKE_DSA 489 +#define VAR_FAKE_SHA1 490 +#define VAR_LOG_IDENTITY 491 +#define VAR_HIDE_TRUSTANCHOR 492 +#define VAR_HIDE_HTTP_USER_AGENT 493 +#define VAR_HTTP_USER_AGENT 494 +#define VAR_TRUST_ANCHOR_SIGNALING 495 +#define VAR_AGGRESSIVE_NSEC 496 +#define VAR_USE_SYSTEMD 497 +#define VAR_SHM_ENABLE 498 +#define VAR_SHM_KEY 499 +#define VAR_ROOT_KEY_SENTINEL 500 +#define VAR_DNSCRYPT 501 +#define VAR_DNSCRYPT_ENABLE 502 +#define VAR_DNSCRYPT_PORT 503 +#define VAR_DNSCRYPT_PROVIDER 504 +#define VAR_DNSCRYPT_SECRET_KEY 505 +#define VAR_DNSCRYPT_PROVIDER_CERT 506 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 507 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 508 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 509 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 510 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 511 +#define VAR_PAD_RESPONSES 512 +#define VAR_PAD_RESPONSES_BLOCK_SIZE 513 +#define VAR_PAD_QUERIES 514 +#define VAR_PAD_QUERIES_BLOCK_SIZE 515 +#define VAR_IPSECMOD_ENABLED 516 +#define VAR_IPSECMOD_HOOK 517 +#define VAR_IPSECMOD_IGNORE_BOGUS 518 +#define VAR_IPSECMOD_MAX_TTL 519 +#define VAR_IPSECMOD_WHITELIST 520 +#define VAR_IPSECMOD_STRICT 521 +#define VAR_CACHEDB 522 +#define VAR_CACHEDB_BACKEND 523 +#define VAR_CACHEDB_SECRETSEED 524 +#define VAR_CACHEDB_REDISHOST 525 +#define VAR_CACHEDB_REDISPORT 526 +#define VAR_CACHEDB_REDISTIMEOUT 527 +#define VAR_CACHEDB_REDISEXPIRERECORDS 528 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 529 +#define VAR_FOR_UPSTREAM 530 +#define VAR_AUTH_ZONE 531 +#define VAR_ZONEFILE 532 +#define VAR_MASTER 533 +#define VAR_URL 534 +#define VAR_FOR_DOWNSTREAM 535 +#define VAR_FALLBACK_ENABLED 536 +#define VAR_TLS_ADDITIONAL_PORT 537 +#define VAR_LOW_RTT 538 +#define VAR_LOW_RTT_PERMIL 539 +#define VAR_FAST_SERVER_PERMIL 540 +#define VAR_FAST_SERVER_NUM 541 +#define VAR_ALLOW_NOTIFY 542 +#define VAR_TLS_WIN_CERT 543 +#define VAR_TCP_CONNECTION_LIMIT 544 +#define VAR_FORWARD_NO_CACHE 545 +#define VAR_STUB_NO_CACHE 546 +#define VAR_LOG_SERVFAIL 547 +#define VAR_DENY_ANY 548 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 549 +#define VAR_LOG_TAG_QUERYREPLY 550 +#define VAR_STREAM_WAIT_SIZE 551 +#define VAR_TLS_CIPHERS 552 +#define VAR_TLS_CIPHERSUITES 553 +#define VAR_TLS_USE_SNI 554 +#define VAR_IPSET 555 +#define VAR_IPSET_NAME_V4 556 +#define VAR_IPSET_NAME_V6 557 +#define VAR_TLS_SESSION_TICKET_KEYS 558 +#define VAR_RPZ 559 +#define VAR_TAGS 560 +#define VAR_RPZ_ACTION_OVERRIDE 561 +#define VAR_RPZ_CNAME_OVERRIDE 562 +#define VAR_RPZ_LOG 563 +#define VAR_RPZ_LOG_NAME 564 +#define VAR_DYNLIB 565 +#define VAR_DYNLIB_FILE 566 +#define VAR_EDNS_CLIENT_STRING 567 +#define VAR_EDNS_CLIENT_STRING_OPCODE 568 +#define VAR_NSID 569 +#define VAR_ZONEMD_PERMISSIVE_MODE 570 +#define VAR_ZONEMD_CHECK 571 +#define VAR_ZONEMD_REJECT_ABSENCE 572 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -694,7 +701,7 @@ union YYSTYPE char* str; -#line 698 "util/configparser.h" +#line 705 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index 2418f7c74..e22d48d41 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -104,13 +104,14 @@ extern struct config_parser_state* cfg_parser; %token VAR_EXTENDED_STATISTICS VAR_LOCAL_DATA_PTR VAR_JOSTLE_TIMEOUT %token VAR_STUB_PRIME VAR_UNWANTED_REPLY_THRESHOLD VAR_LOG_TIME_ASCII %token VAR_DOMAIN_INSECURE VAR_PYTHON VAR_PYTHON_SCRIPT VAR_VAL_SIG_SKEW_MIN -%token VAR_VAL_SIG_SKEW_MAX VAR_CACHE_MIN_TTL VAR_VAL_LOG_LEVEL -%token VAR_AUTO_TRUST_ANCHOR_FILE VAR_KEEP_MISSING VAR_ADD_HOLDDOWN -%token VAR_DEL_HOLDDOWN VAR_SO_RCVBUF VAR_EDNS_BUFFER_SIZE VAR_PREFETCH -%token VAR_PREFETCH_KEY VAR_SO_SNDBUF VAR_SO_REUSEPORT VAR_HARDEN_BELOW_NXDOMAIN -%token VAR_IGNORE_CD_FLAG VAR_LOG_QUERIES VAR_LOG_REPLIES VAR_LOG_LOCAL_ACTIONS -%token VAR_TCP_UPSTREAM VAR_SSL_UPSTREAM VAR_TCP_AUTH_QUERY_TIMEOUT -%token VAR_SSL_SERVICE_KEY VAR_SSL_SERVICE_PEM VAR_SSL_PORT VAR_FORWARD_FIRST +%token VAR_VAL_SIG_SKEW_MAX VAR_VAL_MAX_RESTART VAR_CACHE_MIN_TTL +%token VAR_VAL_LOG_LEVEL VAR_AUTO_TRUST_ANCHOR_FILE VAR_KEEP_MISSING +%token VAR_ADD_HOLDDOWN VAR_DEL_HOLDDOWN VAR_SO_RCVBUF VAR_EDNS_BUFFER_SIZE +%token VAR_PREFETCH VAR_PREFETCH_KEY VAR_SO_SNDBUF VAR_SO_REUSEPORT +%token VAR_HARDEN_BELOW_NXDOMAIN VAR_IGNORE_CD_FLAG VAR_LOG_QUERIES +%token VAR_LOG_REPLIES VAR_LOG_LOCAL_ACTIONS VAR_TCP_UPSTREAM +%token VAR_SSL_UPSTREAM VAR_TCP_AUTH_QUERY_TIMEOUT VAR_SSL_SERVICE_KEY +%token VAR_SSL_SERVICE_PEM VAR_SSL_PORT VAR_FORWARD_FIRST %token VAR_STUB_SSL_UPSTREAM VAR_FORWARD_SSL_UPSTREAM VAR_TLS_CERT_BUNDLE %token VAR_HTTPS_PORT VAR_HTTP_ENDPOINT VAR_HTTP_MAX_STREAMS %token VAR_HTTP_QUERY_BUFFER_SIZE VAR_HTTP_RESPONSE_BUFFER_SIZE @@ -153,6 +154,7 @@ extern struct config_parser_state* cfg_parser; %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_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 %token VAR_SHM_ENABLE VAR_SHM_KEY VAR_ROOT_KEY_SENTINEL %token VAR_DNSCRYPT VAR_DNSCRYPT_ENABLE VAR_DNSCRYPT_PORT VAR_DNSCRYPT_PROVIDER @@ -224,6 +226,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_harden_short_bufsize | server_harden_large_queries | server_do_not_query_address | server_hide_identity | server_hide_version | server_identity | server_version | + server_hide_http_user_agent | server_http_user_agent | server_harden_glue | server_module_conf | server_trust_anchor_file | server_trust_anchor | server_val_override_date | server_bogus_ttl | server_val_clean_additional | server_val_permissive_mode | @@ -243,8 +246,9 @@ content_server: server_num_threads | server_verbosity | server_port | server_local_data_ptr | server_jostle_timeout | server_unwanted_reply_threshold | server_log_time_ascii | server_domain_insecure | server_val_sig_skew_min | - server_val_sig_skew_max | server_cache_min_ttl | server_val_log_level | - server_auto_trust_anchor_file | server_add_holddown | + server_val_sig_skew_max | server_val_max_restart | + server_cache_min_ttl | server_val_log_level | + server_auto_trust_anchor_file | server_add_holddown | server_del_holddown | server_keep_missing | server_so_rcvbuf | server_edns_buffer_size | server_prefetch | server_prefetch_key | server_so_sndbuf | server_harden_below_nxdomain | server_ignore_cd_flag | @@ -1335,6 +1339,15 @@ server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG free($2); } ; +server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG + { + OUTYY(("P(server_hide_user_agent:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->hide_http_user_agent = (strcmp($2, "yes")==0); + free($2); + } + ; server_identity: VAR_IDENTITY STRING_ARG { OUTYY(("P(server_identity:%s)\n", $2)); @@ -1349,6 +1362,13 @@ server_version: VAR_VERSION STRING_ARG cfg_parser->cfg->version = $2; } ; +server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG + { + OUTYY(("P(server_http_user_agent:%s)\n", $2)); + free(cfg_parser->cfg->http_user_agent); + cfg_parser->cfg->http_user_agent = $2; + } + ; server_nsid: VAR_NSID STRING_ARG { OUTYY(("P(server_nsid:%s)\n", $2)); @@ -1853,6 +1873,19 @@ server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG free($2); } ; +server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG + { + OUTYY(("P(server_val_max_restart:%s)\n", $2)); + if(*$2 == '\0' || strcmp($2, "0") == 0) { + cfg_parser->cfg->val_max_restart = 0; + } else { + cfg_parser->cfg->val_max_restart = atoi($2); + if(!cfg_parser->cfg->val_max_restart) + yyerror("number expected"); + } + free($2); + } + ; server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG { OUTYY(("P(server_cache_max_ttl:%s)\n", $2)); diff --git a/util/data/msgreply.c b/util/data/msgreply.c index 546e3607f..96f344137 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -355,7 +355,10 @@ parse_create_rrset(sldns_buffer* pkt, struct rrset_parse* pset, return 0; /* copy & decompress */ if(!parse_rr_copy(pkt, pset, *data)) { - if(!region) free(*data); + if(!region) { + free(*data); + *data = NULL; + } return 0; } return 1; @@ -420,8 +423,13 @@ parse_copy_decompress_rrset(sldns_buffer* pkt, struct msg_parse* msg, pk->rk.type = htons(pset->type); pk->rk.rrset_class = pset->rrset_class; /** read data part. */ - if(!parse_create_rrset(pkt, pset, &data, region)) + if(!parse_create_rrset(pkt, pset, &data, region)) { + if(!region) { + free(pk->rk.dname); + pk->rk.dname = NULL; + } return 0; + } pk->entry.data = (void*)data; pk->entry.key = (void*)pk; pk->entry.hash = pset->hash; diff --git a/util/iana_ports.inc b/util/iana_ports.inc index 60bf59115..b93af015d 100644 --- a/util/iana_ports.inc +++ b/util/iana_ports.inc @@ -4244,6 +4244,7 @@ 5504, 5505, 5506, +5540, 5553, 5554, 5555, @@ -5377,6 +5378,7 @@ 30999, 31016, 31029, +31337, 31416, 31457, 31620, diff --git a/util/netevent.c b/util/netevent.c index ede19726a..11c642a2b 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -1214,7 +1214,7 @@ ssl_handshake(struct comm_point* c) int r; if(c->ssl_shake_state == comm_ssl_shake_hs_read) { /* read condition satisfied back to writing */ - comm_point_listen_for_rw(c, 1, 1); + comm_point_listen_for_rw(c, 0, 1); c->ssl_shake_state = comm_ssl_shake_none; return 1; } @@ -1271,7 +1271,11 @@ ssl_handshake(struct comm_point* c) if((SSL_get_verify_mode(c->ssl)&SSL_VERIFY_PEER)) { /* verification */ if(SSL_get_verify_result(c->ssl) == X509_V_OK) { +#ifdef HAVE_SSL_GET1_PEER_CERTIFICATE + X509* x = SSL_get1_peer_certificate(c->ssl); +#else X509* x = SSL_get_peer_certificate(c->ssl); +#endif if(!x) { log_addr(VERB_ALGO, "SSL connection failed: " "no certificate", @@ -1297,7 +1301,11 @@ ssl_handshake(struct comm_point* c) #endif X509_free(x); } else { +#ifdef HAVE_SSL_GET1_PEER_CERTIFICATE + X509* x = SSL_get1_peer_certificate(c->ssl); +#else X509* x = SSL_get_peer_certificate(c->ssl); +#endif if(x) { log_cert(VERB_ALGO, "peer certificate", x); X509_free(x); @@ -1333,7 +1341,7 @@ ssl_handshake(struct comm_point* c) if(c->ssl_shake_state != comm_ssl_shake_read) comm_point_listen_for_rw(c, 1, 0); } else { - comm_point_listen_for_rw(c, 1, 1); + comm_point_listen_for_rw(c, 0, 1); } c->ssl_shake_state = comm_ssl_shake_none; return 1; @@ -1364,7 +1372,9 @@ ssl_handle_read(struct comm_point* c) return tcp_req_info_handle_read_close(c->tcp_req_info); return 0; /* shutdown, closed */ } else if(want == SSL_ERROR_WANT_READ) { +#ifdef USE_WINSOCK ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_READ); +#endif return 1; /* read more later */ } else if(want == SSL_ERROR_WANT_WRITE) { c->ssl_shake_state = comm_ssl_shake_hs_write; @@ -1412,7 +1422,9 @@ ssl_handle_read(struct comm_point* c) return tcp_req_info_handle_read_close(c->tcp_req_info); return 0; /* shutdown, closed */ } else if(want == SSL_ERROR_WANT_READ) { +#ifdef USE_WINSOCK ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_READ); +#endif return 1; /* read more later */ } else if(want == SSL_ERROR_WANT_WRITE) { c->ssl_shake_state = comm_ssl_shake_hs_write; @@ -1505,7 +1517,9 @@ ssl_handle_write(struct comm_point* c) comm_point_listen_for_rw(c, 1, 0); return 1; /* wait for read condition */ } else if(want == SSL_ERROR_WANT_WRITE) { +#ifdef USE_WINSOCK ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_WRITE); +#endif return 1; /* write more later */ } else if(want == SSL_ERROR_SYSCALL) { #ifdef EPIPE @@ -1555,7 +1569,9 @@ ssl_handle_write(struct comm_point* c) comm_point_listen_for_rw(c, 1, 0); return 1; /* wait for read condition */ } else if(want == SSL_ERROR_WANT_WRITE) { +#ifdef USE_WINSOCK ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_WRITE); +#endif return 1; /* write more later */ } else if(want == SSL_ERROR_SYSCALL) { #ifdef EPIPE @@ -1711,7 +1727,8 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok) (int)sldns_buffer_limit(c->buffer)); } - log_assert(sldns_buffer_remaining(c->buffer) > 0); + if(sldns_buffer_remaining(c->buffer) == 0) + log_err("in comm_point_tcp_handle_read buffer_remaining is not > 0 as expected, continuing with (harmless) 0 length recv"); r = recv(fd, (void*)sldns_buffer_current(c->buffer), sldns_buffer_remaining(c->buffer), 0); if(r == 0) { @@ -3940,11 +3957,13 @@ comm_point_close(struct comm_point* c) /* close fd after removing from event lists, or epoll.. is messed up */ if(c->fd != -1 && !c->do_not_close) { +#ifdef USE_WINSOCK if(c->type == comm_tcp || c->type == comm_http) { /* delete sticky events for the fd, it gets closed */ ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_READ); ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_WRITE); } +#endif verbose(VERB_ALGO, "close fd %d", c->fd); sock_close(c->fd); } @@ -4045,7 +4064,6 @@ comm_point_send_reply(struct comm_reply *repinfo) } repinfo->c->h2_stream = NULL; repinfo->c->tcp_is_reading = 0; - sldns_buffer_clear(repinfo->c->buffer); comm_point_stop_listening(repinfo->c); comm_point_start_listening(repinfo->c, -1, adjusted_tcp_timeout(repinfo->c)); diff --git a/util/shm_side/shm_main.c b/util/shm_side/shm_main.c index af8c5bcf3..51039abf3 100644 --- a/util/shm_side/shm_main.c +++ b/util/shm_side/shm_main.c @@ -130,6 +130,7 @@ int shm_main_init(struct daemon* daemon) /* Just release memory unused */ free(daemon->shm_info); + daemon->shm_info = NULL; return 0; } @@ -143,6 +144,7 @@ int shm_main_init(struct daemon* daemon) /* Just release memory unused */ free(daemon->shm_info); + daemon->shm_info = NULL; return 0; } @@ -156,6 +158,7 @@ int shm_main_init(struct daemon* daemon) /* Just release memory unused */ free(daemon->shm_info); + daemon->shm_info = NULL; return 0; } @@ -170,6 +173,7 @@ int shm_main_init(struct daemon* daemon) /* Just release memory unused */ free(daemon->shm_info); + daemon->shm_info = NULL; return 0; } @@ -210,6 +214,8 @@ void shm_main_shutdown(struct daemon* daemon) if (daemon->shm_info->ptr_arr) shmdt(daemon->shm_info->ptr_arr); + free(daemon->shm_info); + daemon->shm_info = NULL; #else (void)daemon; #endif /* HAVE_SHMGET */ diff --git a/util/ub_event_pluggable.c b/util/ub_event_pluggable.c index 235bba6ba..4280d4db1 100644 --- a/util/ub_event_pluggable.c +++ b/util/ub_event_pluggable.c @@ -666,7 +666,8 @@ ub_winsock_tcp_wouldblock(struct ub_event* ev, int eventbits) fptr_ok(ev->vmt != &default_event_vmt || ev->vmt->winsock_tcp_wouldblock == my_winsock_tcp_wouldblock); - (*ev->vmt->winsock_tcp_wouldblock)(ev, eventbits); + if (ev->vmt->winsock_tcp_wouldblock) + (*ev->vmt->winsock_tcp_wouldblock)(ev, eventbits); } } diff --git a/validator/autotrust.c b/validator/autotrust.c index adf836754..9643a3ddb 100644 --- a/validator/autotrust.c +++ b/validator/autotrust.c @@ -1077,6 +1077,17 @@ trustanchor_state2str(autr_state_type s) return " UNKNOWN "; } +/** ctime r for autotrust */ +static char* autr_ctime_r(time_t* t, char* s) +{ + ctime_r(t, s); +#ifdef USE_WINSOCK + if(strlen(s) > 10 && s[7]==' ' && s[8]=='0') + s[8]=' '; /* fix error in windows ctime */ +#endif + return s; +} + /** print ID to file */ static int print_id(FILE* out, char* fname, uint8_t* nm, size_t nmlen, uint16_t dclass) @@ -1123,13 +1134,13 @@ autr_write_contents(FILE* out, char* fn, struct trust_anchor* tp) } if(fprintf(out, ";;last_queried: %u ;;%s", (unsigned int)tp->autr->last_queried, - ctime_r(&(tp->autr->last_queried), tmi)) < 0 || + autr_ctime_r(&(tp->autr->last_queried), tmi)) < 0 || fprintf(out, ";;last_success: %u ;;%s", (unsigned int)tp->autr->last_success, - ctime_r(&(tp->autr->last_success), tmi)) < 0 || + autr_ctime_r(&(tp->autr->last_success), tmi)) < 0 || fprintf(out, ";;next_probe_time: %u ;;%s", (unsigned int)tp->autr->next_probe_time, - ctime_r(&(tp->autr->next_probe_time), tmi)) < 0 || + autr_ctime_r(&(tp->autr->next_probe_time), tmi)) < 0 || fprintf(out, ";;query_failed: %d\n", (int)tp->autr->query_failed)<0 || fprintf(out, ";;query_interval: %d\n", (int)tp->autr->query_interval) < 0 || @@ -1160,7 +1171,7 @@ autr_write_contents(FILE* out, char* fn, struct trust_anchor* tp) ";;lastchange=%u ;;%s", str, (int)ta->s, trustanchor_state2str(ta->s), (int)ta->pending_count, (unsigned int)ta->last_change, - ctime_r(&(ta->last_change), tmi)) < 0) { + autr_ctime_r(&(ta->last_change), tmi)) < 0) { log_err("could not write to %s: %s", fn, strerror(errno)); free(str); return 0; @@ -2264,7 +2275,7 @@ autr_debug_print_ta(struct autr_ta* ta) return; } if(str[0]) str[strlen(str)-1]=0; /* remove newline */ - ctime_r(&ta->last_change, buf); + (void)autr_ctime_r(&ta->last_change, buf); if(buf[0]) buf[strlen(buf)-1]=0; /* remove newline */ log_info("[%s] %s ;;state:%d ;;pending_count:%d%s%s last:%s", trustanchor_state2str(ta->s), str, ta->s, ta->pending_count, @@ -2291,13 +2302,13 @@ autr_debug_print_tp(struct trust_anchor* tp) log_packed_rrset(NO_VERBOSE, "DNSKEY:", tp->dnskey_rrset); } log_info("file %s", tp->autr->file); - ctime_r(&tp->autr->last_queried, buf); + (void)autr_ctime_r(&tp->autr->last_queried, buf); if(buf[0]) buf[strlen(buf)-1]=0; /* remove newline */ log_info("last_queried: %u %s", (unsigned)tp->autr->last_queried, buf); - ctime_r(&tp->autr->last_success, buf); + (void)autr_ctime_r(&tp->autr->last_success, buf); if(buf[0]) buf[strlen(buf)-1]=0; /* remove newline */ log_info("last_success: %u %s", (unsigned)tp->autr->last_success, buf); - ctime_r(&tp->autr->next_probe_time, buf); + (void)autr_ctime_r(&tp->autr->next_probe_time, buf); if(buf[0]) buf[strlen(buf)-1]=0; /* remove newline */ log_info("next_probe_time: %u %s", (unsigned)tp->autr->next_probe_time, buf); diff --git a/validator/val_nsec.c b/validator/val_nsec.c index 032d2ae03..a4e5b3137 100644 --- a/validator/val_nsec.c +++ b/validator/val_nsec.c @@ -180,6 +180,7 @@ nsec_verify_rrset(struct module_env* env, struct val_env* ve, { struct packed_rrset_data* d = (struct packed_rrset_data*) nsec->entry.data; + if(!d) return 0; if(d->security == sec_status_secure) return 1; rrset_check_sec_status(env->rrset_cache, nsec, *env->now); diff --git a/validator/val_secalgo.c b/validator/val_secalgo.c index a4d020143..7abf66f01 100644 --- a/validator/val_secalgo.c +++ b/validator/val_secalgo.c @@ -513,29 +513,13 @@ static int setup_key_digest(int algo, EVP_PKEY** evp_key, const EVP_MD** digest_type, unsigned char* key, size_t keylen) { -#if defined(USE_DSA) && defined(USE_SHA1) - DSA* dsa; -#endif - RSA* rsa; - switch(algo) { #if defined(USE_DSA) && defined(USE_SHA1) case LDNS_DSA: case LDNS_DSA_NSEC3: - *evp_key = EVP_PKEY_new(); + *evp_key = sldns_key_dsa2pkey_raw(key, keylen); if(!*evp_key) { - log_err("verify: malloc failure in crypto"); - return 0; - } - dsa = sldns_key_buf2dsa_raw(key, keylen); - if(!dsa) { - verbose(VERB_QUERY, "verify: " - "sldns_key_buf2dsa_raw failed"); - return 0; - } - if(EVP_PKEY_assign_DSA(*evp_key, dsa) == 0) { - verbose(VERB_QUERY, "verify: " - "EVP_PKEY_assign_DSA failed"); + verbose(VERB_QUERY, "verify: sldns_key_dsa2pkey failed"); return 0; } #ifdef HAVE_EVP_DSS1 @@ -558,20 +542,9 @@ setup_key_digest(int algo, EVP_PKEY** evp_key, const EVP_MD** digest_type, #if defined(HAVE_EVP_SHA512) && defined(USE_SHA2) case LDNS_RSASHA512: #endif - *evp_key = EVP_PKEY_new(); + *evp_key = sldns_key_rsa2pkey_raw(key, keylen); if(!*evp_key) { - log_err("verify: malloc failure in crypto"); - return 0; - } - rsa = sldns_key_buf2rsa_raw(key, keylen); - if(!rsa) { - verbose(VERB_QUERY, "verify: " - "sldns_key_buf2rsa_raw SHA failed"); - return 0; - } - if(EVP_PKEY_assign_RSA(*evp_key, rsa) == 0) { - verbose(VERB_QUERY, "verify: " - "EVP_PKEY_assign_RSA SHA failed"); + verbose(VERB_QUERY, "verify: sldns_key_rsa2pkey SHA failed"); return 0; } @@ -595,20 +568,9 @@ setup_key_digest(int algo, EVP_PKEY** evp_key, const EVP_MD** digest_type, #endif /* defined(USE_SHA1) || (defined(HAVE_EVP_SHA256) && defined(USE_SHA2)) || (defined(HAVE_EVP_SHA512) && defined(USE_SHA2)) */ case LDNS_RSAMD5: - *evp_key = EVP_PKEY_new(); + *evp_key = sldns_key_rsa2pkey_raw(key, keylen); if(!*evp_key) { - log_err("verify: malloc failure in crypto"); - return 0; - } - rsa = sldns_key_buf2rsa_raw(key, keylen); - if(!rsa) { - verbose(VERB_QUERY, "verify: " - "sldns_key_buf2rsa_raw MD5 failed"); - return 0; - } - if(EVP_PKEY_assign_RSA(*evp_key, rsa) == 0) { - verbose(VERB_QUERY, "verify: " - "EVP_PKEY_assign_RSA MD5 failed"); + verbose(VERB_QUERY, "verify: sldns_key_rsa2pkey MD5 failed"); return 0; } *digest_type = EVP_md5(); diff --git a/validator/validator.c b/validator/validator.c index e12180b4b..d4d48d956 100644 --- a/validator/validator.c +++ b/validator/validator.c @@ -137,6 +137,7 @@ val_apply_cfg(struct module_env* env, struct val_env* val_env, val_env->date_override = cfg->val_date_override; val_env->skew_min = cfg->val_sig_skew_min; val_env->skew_max = cfg->val_sig_skew_max; + val_env->max_restart = cfg->val_max_restart; c = cfg_count_numbers(cfg->val_nsec3_key_iterations); if(c < 1 || (c&1)) { log_err("validator: unparseable or odd nsec3 key " @@ -1487,7 +1488,7 @@ processInit(struct module_qstate* qstate, struct val_qstate* vq, enum val_classification subtype = val_classify_response( qstate->query_flags, &qstate->qinfo, &vq->qchase, vq->orig_msg->rep, vq->rrset_skip); - if(vq->restart_count > VAL_MAX_RESTART_COUNT) { + if(vq->restart_count > ve->max_restart) { verbose(VERB_ALGO, "restart count exceeded"); return val_error(qstate, id); } @@ -1640,7 +1641,7 @@ processInit(struct module_qstate* qstate, struct val_qstate* vq, errinf(qstate, key_entry_get_reason(vq->key_entry)); } /* no retries, stop bothering the authority until timeout */ - vq->restart_count = VAL_MAX_RESTART_COUNT; + vq->restart_count = ve->max_restart; vq->chase_reply->security = sec_status_bogus; vq->state = VAL_FINISHED_STATE; return 1; @@ -1848,7 +1849,7 @@ processValidate(struct module_qstate* qstate, struct val_qstate* vq, LDNS_RR_TYPE_DNSKEY, vq->key_entry->key_class); vq->chase_reply->security = sec_status_bogus; errinf(qstate, "while building chain of trust"); - if(vq->restart_count >= VAL_MAX_RESTART_COUNT) + if(vq->restart_count >= ve->max_restart) key_cache_insert(ve->kcache, vq->key_entry, qstate); return 1; } @@ -2064,7 +2065,7 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq, * endless bogus revalidation */ if(vq->orig_msg->rep->security == sec_status_bogus) { /* see if we can try again to fetch data */ - if(vq->restart_count < VAL_MAX_RESTART_COUNT) { + if(vq->restart_count < ve->max_restart) { int restart_count = vq->restart_count+1; verbose(VERB_ALGO, "validation failed, " "blacklist and retry to fetch data"); @@ -2605,6 +2606,7 @@ 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) { + struct val_env* ve = (struct val_env*)qstate->env->modinfo[id]; struct key_entry_key* dske = NULL; uint8_t* olds = vq->empty_DS_name; vq->empty_DS_name = NULL; @@ -2638,7 +2640,7 @@ process_ds_response(struct module_qstate* qstate, struct val_qstate* vq, vq->chain_blacklist = NULL; /* fresh blacklist for next part*/ /* Keep the forState.state on FINDKEY. */ } else if(key_entry_isbad(dske) - && vq->restart_count < VAL_MAX_RESTART_COUNT) { + && vq->restart_count < ve->max_restart) { vq->empty_DS_name = olds; val_blacklist(&vq->chain_blacklist, qstate->region, origin, 1); qstate->errinf = NULL; @@ -2691,7 +2693,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 < VAL_MAX_RESTART_COUNT) { + if(vq->restart_count < ve->max_restart) { val_blacklist(&vq->chain_blacklist, qstate->region, origin, 1); qstate->errinf = NULL; @@ -2730,7 +2732,7 @@ process_dnskey_response(struct module_qstate* qstate, struct val_qstate* vq, * state. */ if(!key_entry_isgood(vq->key_entry)) { if(key_entry_isbad(vq->key_entry)) { - if(vq->restart_count < VAL_MAX_RESTART_COUNT) { + if(vq->restart_count < ve->max_restart) { val_blacklist(&vq->chain_blacklist, qstate->region, origin, 1); qstate->errinf = NULL; @@ -2807,7 +2809,7 @@ process_prime_response(struct module_qstate* qstate, struct val_qstate* vq, lock_basic_unlock(&ta->lock); if(vq->key_entry) { if(key_entry_isbad(vq->key_entry) - && vq->restart_count < VAL_MAX_RESTART_COUNT) { + && vq->restart_count < ve->max_restart) { val_blacklist(&vq->chain_blacklist, qstate->region, origin, 1); qstate->errinf = NULL; diff --git a/validator/validator.h b/validator/validator.h index 35da1920a..a928e10a6 100644 --- a/validator/validator.h +++ b/validator/validator.h @@ -64,9 +64,6 @@ struct config_strlist; */ #define BOGUS_KEY_TTL 60 /* seconds */ -/** max number of query restarts, number of IPs to probe */ -#define VAL_MAX_RESTART_COUNT 5 - /** Root key sentinel is ta preamble */ #define SENTINEL_IS "root-key-sentinel-is-ta-" /** Root key sentinel is not ta preamble */ @@ -95,6 +92,9 @@ struct val_env { /** clock skew max for signatures */ int32_t skew_max; + /** max number of query restarts, number of IPs to probe */ + int32_t max_restart; + /** TTL for bogus data; used instead of untrusted TTL from data. * Bogus data will not be verified more often than this interval. * seconds. */