[Feature][ZXW-88]merge P50 version
Only Configure: No
Affected branch: master
Affected module: unknown
Is it affected on both ZXIC and MTK: only ZXIC
Self-test: Yes
Doc Update: No
Change-Id: I34667719d9e0e7e29e8e4368848601cde0a48408
diff --git a/ap/lib/libcurl/curl-7.86.0/src/CMakeLists.txt b/ap/lib/libcurl/curl-7.86.0/src/CMakeLists.txt
new file mode 100755
index 0000000..bf8ce7a
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/CMakeLists.txt
@@ -0,0 +1,114 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+set(EXE_NAME curl)
+
+if(USE_MANUAL)
+ # Use the C locale to ensure that only ASCII characters appear in the
+ # embedded text. NROFF and MANOPT are set in the parent CMakeLists.txt
+ add_custom_command(
+ OUTPUT tool_hugehelp.c
+ COMMAND ${CMAKE_COMMAND} -E echo "#include \"tool_setup.h\"" > tool_hugehelp.c
+ COMMAND ${CMAKE_COMMAND} -E echo "#ifndef HAVE_LIBZ" >> tool_hugehelp.c
+ COMMAND env LC_ALL=C "${NROFF}" ${NROFF_MANOPT}
+ "${CURL_BINARY_DIR}/docs/curl.1" |
+ "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl" >> tool_hugehelp.c
+ COMMAND ${CMAKE_COMMAND} -E echo "#else" >> tool_hugehelp.c
+ COMMAND env LC_ALL=C "${NROFF}" ${NROFF_MANOPT}
+ "${CURL_BINARY_DIR}/docs/curl.1" |
+ "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl" -c >> tool_hugehelp.c
+ COMMAND ${CMAKE_COMMAND} -E echo "#endif /* HAVE_LIBZ */" >> tool_hugehelp.c
+ DEPENDS
+ generate-curl.1
+ "${CURL_BINARY_DIR}/docs/curl.1"
+ "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl"
+ "${CMAKE_CURRENT_SOURCE_DIR}/tool_hugehelp.h"
+ VERBATIM)
+else()
+ add_custom_command(
+ OUTPUT tool_hugehelp.c
+ COMMAND ${CMAKE_COMMAND} -E echo "#include \"tool_hugehelp.h\"" > tool_hugehelp.c
+ DEPENDS
+ "${CMAKE_CURRENT_SOURCE_DIR}/tool_hugehelp.h"
+ VERBATIM)
+
+endif()
+
+transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
+include(${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake)
+
+if(WIN32)
+ list(APPEND CURL_FILES curl.rc)
+endif()
+
+# CURL_FILES comes from Makefile.inc
+add_executable(
+ ${EXE_NAME}
+ ${CURL_FILES}
+ )
+
+add_executable(
+ ${PROJECT_NAME}::${EXE_NAME}
+ ALIAS ${EXE_NAME}
+ )
+
+if(CURL_HAS_LTO)
+ set_target_properties(${EXE_NAME} PROPERTIES
+ INTERPROCEDURAL_OPTIMIZATION_RELEASE TRUE
+ INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO TRUE)
+endif()
+
+if(ENABLE_UNICODE AND MINGW)
+ target_link_libraries(${EXE_NAME} -municode)
+ # GCC doesn't know about wmain
+ set_source_files_properties(tool_main.c PROPERTIES COMPILE_FLAGS "-Wno-missing-prototypes -Wno-missing-declarations")
+endif()
+
+source_group("curlX source files" FILES ${CURLX_CFILES})
+source_group("curl source files" FILES ${CURL_CFILES})
+source_group("curl header files" FILES ${CURL_HFILES})
+
+include_directories(
+ ${CURL_SOURCE_DIR}/lib # To be able to reach "curl_setup_once.h"
+ ${CURL_BINARY_DIR}/lib # To be able to reach "curl_config.h"
+ ${CURL_BINARY_DIR}/include # To be able to reach "curl/curl.h"
+ # This is needed as tool_hugehelp.c is generated in the binary dir
+ ${CURL_SOURCE_DIR}/src # To be able to reach "tool_hugehelp.h"
+ )
+
+#Build curl executable
+target_link_libraries(${EXE_NAME} libcurl ${CURL_LIBS})
+
+################################################################################
+
+#SET_TARGET_PROPERTIES(${EXE_NAME} ARCHIVE_OUTPUT_DIRECTORY "blah blah blah")
+#SET_TARGET_PROPERTIES(${EXE_NAME} RUNTIME_OUTPUT_DIRECTORY "blah blah blah")
+#SET_TARGET_PROPERTIES(${EXE_NAME} LIBRARY_OUTPUT_DIRECTORY "blah blah blah")
+
+#INCLUDE(ModuleInstall OPTIONAL)
+
+install(TARGETS ${EXE_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR})
+export(TARGETS ${EXE_NAME}
+ FILE ${PROJECT_BINARY_DIR}/curl-target.cmake
+ NAMESPACE ${PROJECT_NAME}::
+)
diff --git a/ap/lib/libcurl/curl-7.86.0/src/Makefile.am b/ap/lib/libcurl/curl-7.86.0/src/Makefile.am
new file mode 100755
index 0000000..d9180b0
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/Makefile.am
@@ -0,0 +1,163 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+AUTOMAKE_OPTIONS = foreign nostdinc
+
+# remove targets if the command fails
+.DELETE_ON_ERROR:
+
+# Specify our include paths here, and do it relative to $(top_srcdir) and
+# $(top_builddir), to ensure that these paths which belong to the library
+# being currently built and tested are searched before the library which
+# might possibly already be installed in the system.
+#
+# $(top_srcdir)/include is for libcurl's external include files
+# $(top_builddir)/lib is for libcurl's generated lib/curl_config.h file
+# $(top_builddir)/src is for curl's generated src/curl_config.h file
+# $(top_srcdir)/lib for libcurl's lib/curl_setup.h and other "borrowed" files
+# $(top_srcdir)/src is for curl's src/tool_setup.h and "curl-private" files
+
+AM_CPPFLAGS = -I$(top_srcdir)/include \
+ -I$(top_builddir)/lib \
+ -I$(top_builddir)/src \
+ -I$(top_srcdir)/lib \
+ -I$(top_srcdir)/src
+
+bin_PROGRAMS = curl
+
+SUBDIRS = ../docs
+
+if USE_CPPFLAG_CURL_STATICLIB
+AM_CPPFLAGS += -DCURL_STATICLIB
+endif
+
+include Makefile.inc
+
+# CURL_FILES comes from Makefile.inc
+curl_SOURCES = $(CURL_FILES)
+if OS_WINDOWS
+curl_SOURCES += $(CURL_RCFILES)
+$(CURL_RCFILES): tool_version.h
+endif
+
+# This might hold -Werror
+CFLAGS += @CURL_CFLAG_EXTRAS@
+
+# Prevent LIBS from being used for all link targets
+LIBS = $(BLANK_AT_MAKETIME)
+
+if USE_EXPLICIT_LIB_DEPS
+curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBCURL_LIBS@
+else
+curl_LDADD = $(top_builddir)/lib/libcurl.la @NSS_LIBS@ @SSL_LIBS@ @ZLIB_LIBS@ @CURL_NETWORK_AND_TIME_LIBS@
+endif
+
+# if unit tests are enabled, build a static library to link them with
+if BUILD_UNITTESTS
+noinst_LTLIBRARIES = libcurltool.la
+libcurltool_la_CPPFLAGS = $(AM_CPPFLAGS) \
+ -DCURL_STATICLIB -DUNITTESTS
+libcurltool_la_CFLAGS =
+libcurltool_la_LDFLAGS = -static $(LINKFLAGS)
+libcurltool_la_SOURCES = $(CURL_FILES)
+endif
+
+CLEANFILES = tool_hugehelp.c
+# Use the C locale to ensure that only ASCII characters appear in the
+# embedded text.
+NROFF=env LC_ALL=C @NROFF@ @MANOPT@ # figured out by the configure script
+
+EXTRA_DIST = mkhelp.pl makefile.dj \
+ Makefile.m32 makefile.amiga curl.rc Makefile.inc CMakeLists.txt
+
+# Use absolute directory to disable VPATH
+MANPAGE=$(abs_top_builddir)/docs/curl.1
+MKHELP=$(top_srcdir)/src/mkhelp.pl
+HUGE=tool_hugehelp.c
+
+HUGECMD = $(HUGEIT_$(V))
+HUGEIT_0 = @echo " HUGE " $@;
+HUGEIT_1 =
+HUGEIT_ = $(HUGEIT_0)
+
+CHECKSRC = $(CS_$(V))
+CS_0 = @echo " RUN " $@;
+CS_1 =
+CS_ = $(CS_0)
+
+if USE_MANUAL
+# Here are the stuff to create a built-in manual
+
+$(MANPAGE):
+ cd $(top_builddir)/docs && $(MAKE)
+
+if HAVE_LIBZ
+# This generates the tool_hugehelp.c file in both uncompressed and
+# compressed formats.
+$(HUGE): $(MANPAGE) $(MKHELP)
+ $(HUGECMD) (echo '#include "tool_setup.h"' > $(HUGE); \
+ echo '#ifndef HAVE_LIBZ' >> $(HUGE); \
+ $(NROFF) $(MANPAGE) | $(PERL) $(MKHELP) >> $(HUGE); \
+ echo '#else' >> $(HUGE); \
+ $(NROFF) $(MANPAGE) | $(PERL) $(MKHELP) -c >> $(HUGE); \
+ echo '#endif /* HAVE_LIBZ */' >> $(HUGE) )
+else # HAVE_LIBZ
+# This generates the tool_hugehelp.c file uncompressed only
+$(HUGE): $(MANPAGE) $(MKHELP)
+ $(HUGECMD)(echo '#include "tool_setup.h"' > $(HUGE); \
+ $(NROFF) $(MANPAGE) | $(PERL) $(MKHELP) >> $(HUGE) )
+endif
+
+else # USE_MANUAL
+# built-in manual has been disabled, make a blank file
+$(HUGE):
+ echo '#include "tool_hugehelp.h"' >> $(HUGE)
+endif
+
+# ignore tool_hugehelp.c since it is generated source code and it plays
+# by slightly different rules!
+checksrc:
+ $(CHECKSRC)(@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(srcdir) \
+ -W$(srcdir)/tool_hugehelp.c $(srcdir)/*.[ch])
+
+if CURLDEBUG
+# for debug builds, we scan the sources on all regular make invokes
+all-local: checksrc
+endif
+
+# disable the tests that are mostly causing false positives
+TIDYFLAGS=-checks=-clang-analyzer-security.insecureAPI.strcpy,-clang-analyzer-optin.performance.Padding,-clang-analyzer-valist.Uninitialized,-clang-analyzer-core.NonNullParamChecker,-clang-analyzer-core.NullDereference
+
+TIDY:=clang-tidy
+
+tidy:
+ $(TIDY) $(CURL_CFILES) $(TIDYFLAGS) -- $(curl_CPPFLAGS) $(CPPFLAGS) -DHAVE_CONFIG_H
+
+listhelp:
+ (cd $(top_srcdir)/docs/cmdline-opts && ./gen.pl listhelp *.d) > tool_listhelp.c
+
+if OS_WINDOWS
+# Warning is "normal": libtool: error: ignoring unknown tag RC
+.rc.o:
+ $(LIBTOOL) --tag=RC --mode=compile $(RC) -I$(top_srcdir)/include -DCURL_EMBED_MANIFEST $(RCFLAGS) -i $< -o $@
+endif
diff --git a/ap/lib/libcurl/curl-7.86.0/src/Makefile.in b/ap/lib/libcurl/curl-7.86.0/src/Makefile.in
new file mode 100755
index 0000000..652e6be
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/Makefile.in
@@ -0,0 +1,2007 @@
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+# ./src/Makefile.inc
+# Using the backslash as line continuation character might be problematic with
+# some make flavours. If we ever want to change this in a portable manner then
+# we should consider this idea :
+# CSRC1 = file1.c file2.c file3.c
+# CSRC2 = file4.c file5.c file6.c
+# CSOURCES = $(CSRC1) $(CSRC2)
+
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+bin_PROGRAMS = curl$(EXEEXT)
+@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_1 = -DCURL_STATICLIB
+@OS_WINDOWS_TRUE@am__append_2 = $(CURL_RCFILES)
+subdir = src
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
+ $(top_srcdir)/m4/curl-bearssl.m4 \
+ $(top_srcdir)/m4/curl-compilers.m4 \
+ $(top_srcdir)/m4/curl-confopts.m4 \
+ $(top_srcdir)/m4/curl-functions.m4 \
+ $(top_srcdir)/m4/curl-gnutls.m4 \
+ $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
+ $(top_srcdir)/m4/curl-openssl.m4 \
+ $(top_srcdir)/m4/curl-override.m4 \
+ $(top_srcdir)/m4/curl-reentrant.m4 \
+ $(top_srcdir)/m4/curl-rustls.m4 \
+ $(top_srcdir)/m4/curl-schannel.m4 \
+ $(top_srcdir)/m4/curl-sectransp.m4 \
+ $(top_srcdir)/m4/curl-sysconfig.m4 \
+ $(top_srcdir)/m4/curl-wolfssl.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/xc-am-iface.m4 \
+ $(top_srcdir)/m4/xc-cc-check.m4 \
+ $(top_srcdir)/m4/xc-lt-iface.m4 \
+ $(top_srcdir)/m4/xc-translit.m4 \
+ $(top_srcdir)/m4/xc-val-flgs.m4 \
+ $(top_srcdir)/m4/zz40-xc-ovr.m4 \
+ $(top_srcdir)/m4/zz50-xc-ovr.m4 \
+ $(top_srcdir)/m4/zz60-xc-ovr.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/curl_config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)"
+PROGRAMS = $(bin_PROGRAMS)
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libcurltool_la_LIBADD =
+am__libcurltool_la_SOURCES_DIST = slist_wc.c tool_binmode.c \
+ tool_bname.c tool_cb_dbg.c tool_cb_hdr.c tool_cb_prg.c \
+ tool_cb_rea.c tool_cb_see.c tool_cb_wrt.c tool_cfgable.c \
+ tool_dirhie.c tool_doswin.c tool_easysrc.c tool_filetime.c \
+ tool_findfile.c tool_formparse.c tool_getparam.c \
+ tool_getpass.c tool_help.c tool_helpers.c tool_hugehelp.c \
+ tool_libinfo.c tool_listhelp.c tool_main.c tool_msgs.c \
+ tool_operate.c tool_operhlp.c tool_panykey.c tool_paramhlp.c \
+ tool_parsecfg.c tool_progress.c tool_strdup.c tool_setopt.c \
+ tool_sleep.c tool_urlglob.c tool_util.c tool_vms.c \
+ tool_writeout.c tool_writeout_json.c tool_xattr.c \
+ ../lib/strtoofft.c ../lib/timediff.c ../lib/nonblock.c \
+ ../lib/warnless.c ../lib/curl_multibyte.c \
+ ../lib/version_win32.c ../lib/dynbuf.c slist_wc.h \
+ tool_binmode.h tool_bname.h tool_cb_dbg.h tool_cb_hdr.h \
+ tool_cb_prg.h tool_cb_rea.h tool_cb_see.h tool_cb_wrt.h \
+ tool_cfgable.h tool_dirhie.h tool_doswin.h tool_easysrc.h \
+ tool_filetime.h tool_findfile.h tool_formparse.h \
+ tool_getparam.h tool_getpass.h tool_help.h tool_helpers.h \
+ tool_hugehelp.h tool_libinfo.h tool_main.h tool_msgs.h \
+ tool_operate.h tool_operhlp.h tool_panykey.h tool_paramhlp.h \
+ tool_parsecfg.h tool_progress.h tool_sdecls.h tool_setopt.h \
+ tool_setup.h tool_sleep.h tool_strdup.h tool_urlglob.h \
+ tool_util.h tool_version.h tool_vms.h tool_writeout.h \
+ tool_writeout_json.h tool_xattr.h
+am__objects_1 = libcurltool_la-slist_wc.lo \
+ libcurltool_la-tool_binmode.lo libcurltool_la-tool_bname.lo \
+ libcurltool_la-tool_cb_dbg.lo libcurltool_la-tool_cb_hdr.lo \
+ libcurltool_la-tool_cb_prg.lo libcurltool_la-tool_cb_rea.lo \
+ libcurltool_la-tool_cb_see.lo libcurltool_la-tool_cb_wrt.lo \
+ libcurltool_la-tool_cfgable.lo libcurltool_la-tool_dirhie.lo \
+ libcurltool_la-tool_doswin.lo libcurltool_la-tool_easysrc.lo \
+ libcurltool_la-tool_filetime.lo \
+ libcurltool_la-tool_findfile.lo \
+ libcurltool_la-tool_formparse.lo \
+ libcurltool_la-tool_getparam.lo libcurltool_la-tool_getpass.lo \
+ libcurltool_la-tool_help.lo libcurltool_la-tool_helpers.lo \
+ libcurltool_la-tool_hugehelp.lo libcurltool_la-tool_libinfo.lo \
+ libcurltool_la-tool_listhelp.lo libcurltool_la-tool_main.lo \
+ libcurltool_la-tool_msgs.lo libcurltool_la-tool_operate.lo \
+ libcurltool_la-tool_operhlp.lo libcurltool_la-tool_panykey.lo \
+ libcurltool_la-tool_paramhlp.lo \
+ libcurltool_la-tool_parsecfg.lo \
+ libcurltool_la-tool_progress.lo libcurltool_la-tool_strdup.lo \
+ libcurltool_la-tool_setopt.lo libcurltool_la-tool_sleep.lo \
+ libcurltool_la-tool_urlglob.lo libcurltool_la-tool_util.lo \
+ libcurltool_la-tool_vms.lo libcurltool_la-tool_writeout.lo \
+ libcurltool_la-tool_writeout_json.lo \
+ libcurltool_la-tool_xattr.lo
+am__dirstamp = $(am__leading_dot)dirstamp
+am__objects_2 = ../lib/libcurltool_la-strtoofft.lo \
+ ../lib/libcurltool_la-timediff.lo \
+ ../lib/libcurltool_la-nonblock.lo \
+ ../lib/libcurltool_la-warnless.lo \
+ ../lib/libcurltool_la-curl_multibyte.lo \
+ ../lib/libcurltool_la-version_win32.lo \
+ ../lib/libcurltool_la-dynbuf.lo
+am__objects_3 =
+am__objects_4 = $(am__objects_1) $(am__objects_2) $(am__objects_3)
+@BUILD_UNITTESTS_TRUE@am_libcurltool_la_OBJECTS = $(am__objects_4)
+libcurltool_la_OBJECTS = $(am_libcurltool_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+libcurltool_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libcurltool_la_CFLAGS) $(CFLAGS) $(libcurltool_la_LDFLAGS) \
+ $(LDFLAGS) -o $@
+@BUILD_UNITTESTS_TRUE@am_libcurltool_la_rpath =
+am__curl_SOURCES_DIST = slist_wc.c tool_binmode.c tool_bname.c \
+ tool_cb_dbg.c tool_cb_hdr.c tool_cb_prg.c tool_cb_rea.c \
+ tool_cb_see.c tool_cb_wrt.c tool_cfgable.c tool_dirhie.c \
+ tool_doswin.c tool_easysrc.c tool_filetime.c tool_findfile.c \
+ tool_formparse.c tool_getparam.c tool_getpass.c tool_help.c \
+ tool_helpers.c tool_hugehelp.c tool_libinfo.c tool_listhelp.c \
+ tool_main.c tool_msgs.c tool_operate.c tool_operhlp.c \
+ tool_panykey.c tool_paramhlp.c tool_parsecfg.c tool_progress.c \
+ tool_strdup.c tool_setopt.c tool_sleep.c tool_urlglob.c \
+ tool_util.c tool_vms.c tool_writeout.c tool_writeout_json.c \
+ tool_xattr.c ../lib/strtoofft.c ../lib/timediff.c \
+ ../lib/nonblock.c ../lib/warnless.c ../lib/curl_multibyte.c \
+ ../lib/version_win32.c ../lib/dynbuf.c slist_wc.h \
+ tool_binmode.h tool_bname.h tool_cb_dbg.h tool_cb_hdr.h \
+ tool_cb_prg.h tool_cb_rea.h tool_cb_see.h tool_cb_wrt.h \
+ tool_cfgable.h tool_dirhie.h tool_doswin.h tool_easysrc.h \
+ tool_filetime.h tool_findfile.h tool_formparse.h \
+ tool_getparam.h tool_getpass.h tool_help.h tool_helpers.h \
+ tool_hugehelp.h tool_libinfo.h tool_main.h tool_msgs.h \
+ tool_operate.h tool_operhlp.h tool_panykey.h tool_paramhlp.h \
+ tool_parsecfg.h tool_progress.h tool_sdecls.h tool_setopt.h \
+ tool_setup.h tool_sleep.h tool_strdup.h tool_urlglob.h \
+ tool_util.h tool_version.h tool_vms.h tool_writeout.h \
+ tool_writeout_json.h tool_xattr.h curl.rc
+am__objects_5 = slist_wc.$(OBJEXT) tool_binmode.$(OBJEXT) \
+ tool_bname.$(OBJEXT) tool_cb_dbg.$(OBJEXT) \
+ tool_cb_hdr.$(OBJEXT) tool_cb_prg.$(OBJEXT) \
+ tool_cb_rea.$(OBJEXT) tool_cb_see.$(OBJEXT) \
+ tool_cb_wrt.$(OBJEXT) tool_cfgable.$(OBJEXT) \
+ tool_dirhie.$(OBJEXT) tool_doswin.$(OBJEXT) \
+ tool_easysrc.$(OBJEXT) tool_filetime.$(OBJEXT) \
+ tool_findfile.$(OBJEXT) tool_formparse.$(OBJEXT) \
+ tool_getparam.$(OBJEXT) tool_getpass.$(OBJEXT) \
+ tool_help.$(OBJEXT) tool_helpers.$(OBJEXT) \
+ tool_hugehelp.$(OBJEXT) tool_libinfo.$(OBJEXT) \
+ tool_listhelp.$(OBJEXT) tool_main.$(OBJEXT) \
+ tool_msgs.$(OBJEXT) tool_operate.$(OBJEXT) \
+ tool_operhlp.$(OBJEXT) tool_panykey.$(OBJEXT) \
+ tool_paramhlp.$(OBJEXT) tool_parsecfg.$(OBJEXT) \
+ tool_progress.$(OBJEXT) tool_strdup.$(OBJEXT) \
+ tool_setopt.$(OBJEXT) tool_sleep.$(OBJEXT) \
+ tool_urlglob.$(OBJEXT) tool_util.$(OBJEXT) tool_vms.$(OBJEXT) \
+ tool_writeout.$(OBJEXT) tool_writeout_json.$(OBJEXT) \
+ tool_xattr.$(OBJEXT)
+am__objects_6 = ../lib/strtoofft.$(OBJEXT) ../lib/timediff.$(OBJEXT) \
+ ../lib/nonblock.$(OBJEXT) ../lib/warnless.$(OBJEXT) \
+ ../lib/curl_multibyte.$(OBJEXT) ../lib/version_win32.$(OBJEXT) \
+ ../lib/dynbuf.$(OBJEXT)
+am__objects_7 = $(am__objects_5) $(am__objects_6) $(am__objects_3)
+am__objects_8 = curl.$(OBJEXT)
+@OS_WINDOWS_TRUE@am__objects_9 = $(am__objects_8)
+am_curl_OBJECTS = $(am__objects_7) $(am__objects_9)
+curl_OBJECTS = $(am_curl_OBJECTS)
+@USE_EXPLICIT_LIB_DEPS_FALSE@curl_DEPENDENCIES = \
+@USE_EXPLICIT_LIB_DEPS_FALSE@ $(top_builddir)/lib/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@curl_DEPENDENCIES = \
+@USE_EXPLICIT_LIB_DEPS_TRUE@ $(top_builddir)/lib/libcurl.la
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES =
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = ../lib/$(DEPDIR)/curl_multibyte.Po \
+ ../lib/$(DEPDIR)/dynbuf.Po \
+ ../lib/$(DEPDIR)/libcurltool_la-curl_multibyte.Plo \
+ ../lib/$(DEPDIR)/libcurltool_la-dynbuf.Plo \
+ ../lib/$(DEPDIR)/libcurltool_la-nonblock.Plo \
+ ../lib/$(DEPDIR)/libcurltool_la-strtoofft.Plo \
+ ../lib/$(DEPDIR)/libcurltool_la-timediff.Plo \
+ ../lib/$(DEPDIR)/libcurltool_la-version_win32.Plo \
+ ../lib/$(DEPDIR)/libcurltool_la-warnless.Plo \
+ ../lib/$(DEPDIR)/nonblock.Po ../lib/$(DEPDIR)/strtoofft.Po \
+ ../lib/$(DEPDIR)/timediff.Po ../lib/$(DEPDIR)/version_win32.Po \
+ ../lib/$(DEPDIR)/warnless.Po \
+ ./$(DEPDIR)/libcurltool_la-slist_wc.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_binmode.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_bname.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_cb_dbg.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_cb_hdr.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_cb_prg.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_cb_rea.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_cb_see.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_cb_wrt.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_cfgable.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_dirhie.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_doswin.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_easysrc.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_filetime.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_findfile.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_formparse.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_getparam.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_getpass.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_help.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_helpers.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_hugehelp.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_libinfo.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_listhelp.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_main.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_msgs.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_operate.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_operhlp.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_panykey.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_paramhlp.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_parsecfg.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_progress.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_setopt.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_sleep.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_strdup.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_urlglob.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_util.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_vms.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_writeout.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_writeout_json.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_xattr.Plo \
+ ./$(DEPDIR)/slist_wc.Po ./$(DEPDIR)/tool_binmode.Po \
+ ./$(DEPDIR)/tool_bname.Po ./$(DEPDIR)/tool_cb_dbg.Po \
+ ./$(DEPDIR)/tool_cb_hdr.Po ./$(DEPDIR)/tool_cb_prg.Po \
+ ./$(DEPDIR)/tool_cb_rea.Po ./$(DEPDIR)/tool_cb_see.Po \
+ ./$(DEPDIR)/tool_cb_wrt.Po ./$(DEPDIR)/tool_cfgable.Po \
+ ./$(DEPDIR)/tool_dirhie.Po ./$(DEPDIR)/tool_doswin.Po \
+ ./$(DEPDIR)/tool_easysrc.Po ./$(DEPDIR)/tool_filetime.Po \
+ ./$(DEPDIR)/tool_findfile.Po ./$(DEPDIR)/tool_formparse.Po \
+ ./$(DEPDIR)/tool_getparam.Po ./$(DEPDIR)/tool_getpass.Po \
+ ./$(DEPDIR)/tool_help.Po ./$(DEPDIR)/tool_helpers.Po \
+ ./$(DEPDIR)/tool_hugehelp.Po ./$(DEPDIR)/tool_libinfo.Po \
+ ./$(DEPDIR)/tool_listhelp.Po ./$(DEPDIR)/tool_main.Po \
+ ./$(DEPDIR)/tool_msgs.Po ./$(DEPDIR)/tool_operate.Po \
+ ./$(DEPDIR)/tool_operhlp.Po ./$(DEPDIR)/tool_panykey.Po \
+ ./$(DEPDIR)/tool_paramhlp.Po ./$(DEPDIR)/tool_parsecfg.Po \
+ ./$(DEPDIR)/tool_progress.Po ./$(DEPDIR)/tool_setopt.Po \
+ ./$(DEPDIR)/tool_sleep.Po ./$(DEPDIR)/tool_strdup.Po \
+ ./$(DEPDIR)/tool_urlglob.Po ./$(DEPDIR)/tool_util.Po \
+ ./$(DEPDIR)/tool_vms.Po ./$(DEPDIR)/tool_writeout.Po \
+ ./$(DEPDIR)/tool_writeout_json.Po ./$(DEPDIR)/tool_xattr.Po
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libcurltool_la_SOURCES) $(curl_SOURCES)
+DIST_SOURCES = $(am__libcurltool_la_SOURCES_DIST) \
+ $(am__curl_SOURCES_DIST)
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ distdir distdir-am
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.inc \
+ $(top_srcdir)/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AR_FLAGS = @AR_FLAGS@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BLANK_AT_MAKETIME = @BLANK_AT_MAKETIME@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+
+# This might hold -Werror
+CFLAGS = @CFLAGS@ @CURL_CFLAG_EXTRAS@
+CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@
+CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPFLAG_CURL_STATICLIB = @CPPFLAG_CURL_STATICLIB@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
+CURLVERSION = @CURLVERSION@
+CURL_CA_BUNDLE = @CURL_CA_BUNDLE@
+CURL_CFLAG_EXTRAS = @CURL_CFLAG_EXTRAS@
+CURL_DISABLE_DICT = @CURL_DISABLE_DICT@
+CURL_DISABLE_FILE = @CURL_DISABLE_FILE@
+CURL_DISABLE_FTP = @CURL_DISABLE_FTP@
+CURL_DISABLE_GOPHER = @CURL_DISABLE_GOPHER@
+CURL_DISABLE_HTTP = @CURL_DISABLE_HTTP@
+CURL_DISABLE_IMAP = @CURL_DISABLE_IMAP@
+CURL_DISABLE_LDAP = @CURL_DISABLE_LDAP@
+CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
+CURL_DISABLE_MQTT = @CURL_DISABLE_MQTT@
+CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
+CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
+CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
+CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
+CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
+CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
+CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
+CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
+CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
+CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_SHARED = @ENABLE_SHARED@
+ENABLE_STATIC = @ENABLE_STATIC@
+ETAGS = @ETAGS@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+FILECMD = @FILECMD@
+FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
+GCOV = @GCOV@
+GREP = @GREP@
+HAVE_BROTLI = @HAVE_BROTLI@
+HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
+HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
+HAVE_LIBZ = @HAVE_LIBZ@
+HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
+HAVE_PROTO_BSDSOCKET_H = @HAVE_PROTO_BSDSOCKET_H@
+HAVE_ZSTD = @HAVE_ZSTD@
+IDN_ENABLED = @IDN_ENABLED@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+IPV6_ENABLED = @IPV6_ENABLED@
+LCOV = @LCOV@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBCURL_LIBS = @LIBCURL_LIBS@
+LIBCURL_NO_SHARED = @LIBCURL_NO_SHARED@
+LIBOBJS = @LIBOBJS@
+
+# Prevent LIBS from being used for all link targets
+LIBS = $(BLANK_AT_MAKETIME)
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MANOPT = @MANOPT@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+# Use the C locale to ensure that only ASCII characters appear in the
+# embedded text.
+NROFF = env LC_ALL=C @NROFF@ @MANOPT@ # figured out by the configure script
+NSS_LIBS = @NSS_LIBS@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKGADD_NAME = @PKGADD_NAME@
+PKGADD_PKG = @PKGADD_PKG@
+PKGADD_VENDOR = @PKGADD_VENDOR@
+PKGCONFIG = @PKGCONFIG@
+RANDOM_FILE = @RANDOM_FILE@
+RANLIB = @RANLIB@
+RC = @RC@
+REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SSL_BACKENDS = @SSL_BACKENDS@
+SSL_ENABLED = @SSL_ENABLED@
+SSL_LIBS = @SSL_LIBS@
+STRIP = @STRIP@
+SUPPORT_FEATURES = @SUPPORT_FEATURES@
+SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
+USE_ARES = @USE_ARES@
+USE_BEARSSL = @USE_BEARSSL@
+USE_GNUTLS = @USE_GNUTLS@
+USE_HYPER = @USE_HYPER@
+USE_LIBRTMP = @USE_LIBRTMP@
+USE_LIBSSH = @USE_LIBSSH@
+USE_LIBSSH2 = @USE_LIBSSH2@
+USE_MBEDTLS = @USE_MBEDTLS@
+USE_MSH3 = @USE_MSH3@
+USE_NGHTTP2 = @USE_NGHTTP2@
+USE_NGHTTP3 = @USE_NGHTTP3@
+USE_NGTCP2 = @USE_NGTCP2@
+USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@
+USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
+USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
+USE_NSS = @USE_NSS@
+USE_OPENLDAP = @USE_OPENLDAP@
+USE_QUICHE = @USE_QUICHE@
+USE_RUSTLS = @USE_RUSTLS@
+USE_SCHANNEL = @USE_SCHANNEL@
+USE_SECTRANSP = @USE_SECTRANSP@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
+USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@
+USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@
+USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@
+USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
+USE_WOLFSSH = @USE_WOLFSSH@
+USE_WOLFSSL = @USE_WOLFSSL@
+VERSION = @VERSION@
+VERSIONNUM = @VERSIONNUM@
+ZLIB_LIBS = @ZLIB_LIBS@
+ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+libext = @libext@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+AUTOMAKE_OPTIONS = foreign nostdinc
+
+# Specify our include paths here, and do it relative to $(top_srcdir) and
+# $(top_builddir), to ensure that these paths which belong to the library
+# being currently built and tested are searched before the library which
+# might possibly already be installed in the system.
+#
+# $(top_srcdir)/include is for libcurl's external include files
+# $(top_builddir)/lib is for libcurl's generated lib/curl_config.h file
+# $(top_builddir)/src is for curl's generated src/curl_config.h file
+# $(top_srcdir)/lib for libcurl's lib/curl_setup.h and other "borrowed" files
+# $(top_srcdir)/src is for curl's src/tool_setup.h and "curl-private" files
+AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/lib \
+ -I$(top_builddir)/src -I$(top_srcdir)/lib -I$(top_srcdir)/src \
+ $(am__append_1)
+SUBDIRS = ../docs
+
+# libcurl has sources that provide functions named curlx_* that aren't part of
+# the official API, but we re-use the code here to avoid duplication.
+CURLX_CFILES = \
+ ../lib/strtoofft.c \
+ ../lib/timediff.c \
+ ../lib/nonblock.c \
+ ../lib/warnless.c \
+ ../lib/curl_multibyte.c \
+ ../lib/version_win32.c \
+ ../lib/dynbuf.c
+
+CURLX_HFILES = \
+ ../lib/curl_setup.h \
+ ../lib/strtoofft.h \
+ ../lib/timediff.h \
+ ../lib/nonblock.h \
+ ../lib/warnless.h \
+ ../lib/curl_ctype.h \
+ ../lib/curl_multibyte.h \
+ ../lib/version_win32.h \
+ ../lib/dynbuf.h
+
+CURL_CFILES = \
+ slist_wc.c \
+ tool_binmode.c \
+ tool_bname.c \
+ tool_cb_dbg.c \
+ tool_cb_hdr.c \
+ tool_cb_prg.c \
+ tool_cb_rea.c \
+ tool_cb_see.c \
+ tool_cb_wrt.c \
+ tool_cfgable.c \
+ tool_dirhie.c \
+ tool_doswin.c \
+ tool_easysrc.c \
+ tool_filetime.c \
+ tool_findfile.c \
+ tool_formparse.c \
+ tool_getparam.c \
+ tool_getpass.c \
+ tool_help.c \
+ tool_helpers.c \
+ tool_hugehelp.c \
+ tool_libinfo.c \
+ tool_listhelp.c \
+ tool_main.c \
+ tool_msgs.c \
+ tool_operate.c \
+ tool_operhlp.c \
+ tool_panykey.c \
+ tool_paramhlp.c \
+ tool_parsecfg.c \
+ tool_progress.c \
+ tool_strdup.c \
+ tool_setopt.c \
+ tool_sleep.c \
+ tool_urlglob.c \
+ tool_util.c \
+ tool_vms.c \
+ tool_writeout.c \
+ tool_writeout_json.c \
+ tool_xattr.c
+
+CURL_HFILES = \
+ slist_wc.h \
+ tool_binmode.h \
+ tool_bname.h \
+ tool_cb_dbg.h \
+ tool_cb_hdr.h \
+ tool_cb_prg.h \
+ tool_cb_rea.h \
+ tool_cb_see.h \
+ tool_cb_wrt.h \
+ tool_cfgable.h \
+ tool_dirhie.h \
+ tool_doswin.h \
+ tool_easysrc.h \
+ tool_filetime.h \
+ tool_findfile.h \
+ tool_formparse.h \
+ tool_getparam.h \
+ tool_getpass.h \
+ tool_help.h \
+ tool_helpers.h \
+ tool_hugehelp.h \
+ tool_libinfo.h \
+ tool_main.h \
+ tool_msgs.h \
+ tool_operate.h \
+ tool_operhlp.h \
+ tool_panykey.h \
+ tool_paramhlp.h \
+ tool_parsecfg.h \
+ tool_progress.h \
+ tool_sdecls.h \
+ tool_setopt.h \
+ tool_setup.h \
+ tool_sleep.h \
+ tool_strdup.h \
+ tool_urlglob.h \
+ tool_util.h \
+ tool_version.h \
+ tool_vms.h \
+ tool_writeout.h \
+ tool_writeout_json.h \
+ tool_xattr.h
+
+CURL_RCFILES = curl.rc
+
+# curl_SOURCES is special and gets assigned in src/Makefile.am
+CURL_FILES = $(CURL_CFILES) $(CURLX_CFILES) $(CURL_HFILES)
+
+# CURL_FILES comes from Makefile.inc
+curl_SOURCES = $(CURL_FILES) $(am__append_2)
+@USE_EXPLICIT_LIB_DEPS_FALSE@curl_LDADD = $(top_builddir)/lib/libcurl.la @NSS_LIBS@ @SSL_LIBS@ @ZLIB_LIBS@ @CURL_NETWORK_AND_TIME_LIBS@
+@USE_EXPLICIT_LIB_DEPS_TRUE@curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBCURL_LIBS@
+
+# if unit tests are enabled, build a static library to link them with
+@BUILD_UNITTESTS_TRUE@noinst_LTLIBRARIES = libcurltool.la
+@BUILD_UNITTESTS_TRUE@libcurltool_la_CPPFLAGS = $(AM_CPPFLAGS) \
+@BUILD_UNITTESTS_TRUE@ -DCURL_STATICLIB -DUNITTESTS
+
+@BUILD_UNITTESTS_TRUE@libcurltool_la_CFLAGS =
+@BUILD_UNITTESTS_TRUE@libcurltool_la_LDFLAGS = -static $(LINKFLAGS)
+@BUILD_UNITTESTS_TRUE@libcurltool_la_SOURCES = $(CURL_FILES)
+CLEANFILES = tool_hugehelp.c
+EXTRA_DIST = mkhelp.pl makefile.dj \
+ Makefile.m32 makefile.amiga curl.rc Makefile.inc CMakeLists.txt
+
+
+# Use absolute directory to disable VPATH
+MANPAGE = $(abs_top_builddir)/docs/curl.1
+MKHELP = $(top_srcdir)/src/mkhelp.pl
+HUGE = tool_hugehelp.c
+HUGECMD = $(HUGEIT_$(V))
+HUGEIT_0 = @echo " HUGE " $@;
+HUGEIT_1 =
+HUGEIT_ = $(HUGEIT_0)
+CHECKSRC = $(CS_$(V))
+CS_0 = @echo " RUN " $@;
+CS_1 =
+CS_ = $(CS_0)
+
+# disable the tests that are mostly causing false positives
+TIDYFLAGS = -checks=-clang-analyzer-security.insecureAPI.strcpy,-clang-analyzer-optin.performance.Padding,-clang-analyzer-valist.Uninitialized,-clang-analyzer-core.NonNullParamChecker,-clang-analyzer-core.NullDereference
+TIDY := clang-tidy
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj .rc
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Makefile.inc $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
+ esac;
+$(srcdir)/Makefile.inc $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+ while read p p1; do if test -f $$p \
+ || test -f $$p1 \
+ ; then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n;h' \
+ -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) files[d] = files[d] " " $$1; \
+ else { print "f", $$3 "/" $$4, $$1; } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+ -e 's/$$/$(EXEEXT)/' \
+ `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+ @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+../lib/$(am__dirstamp):
+ @$(MKDIR_P) ../lib
+ @: > ../lib/$(am__dirstamp)
+../lib/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) ../lib/$(DEPDIR)
+ @: > ../lib/$(DEPDIR)/$(am__dirstamp)
+../lib/libcurltool_la-strtoofft.lo: ../lib/$(am__dirstamp) \
+ ../lib/$(DEPDIR)/$(am__dirstamp)
+../lib/libcurltool_la-timediff.lo: ../lib/$(am__dirstamp) \
+ ../lib/$(DEPDIR)/$(am__dirstamp)
+../lib/libcurltool_la-nonblock.lo: ../lib/$(am__dirstamp) \
+ ../lib/$(DEPDIR)/$(am__dirstamp)
+../lib/libcurltool_la-warnless.lo: ../lib/$(am__dirstamp) \
+ ../lib/$(DEPDIR)/$(am__dirstamp)
+../lib/libcurltool_la-curl_multibyte.lo: ../lib/$(am__dirstamp) \
+ ../lib/$(DEPDIR)/$(am__dirstamp)
+../lib/libcurltool_la-version_win32.lo: ../lib/$(am__dirstamp) \
+ ../lib/$(DEPDIR)/$(am__dirstamp)
+../lib/libcurltool_la-dynbuf.lo: ../lib/$(am__dirstamp) \
+ ../lib/$(DEPDIR)/$(am__dirstamp)
+
+libcurltool.la: $(libcurltool_la_OBJECTS) $(libcurltool_la_DEPENDENCIES) $(EXTRA_libcurltool_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libcurltool_la_LINK) $(am_libcurltool_la_rpath) $(libcurltool_la_OBJECTS) $(libcurltool_la_LIBADD) $(LIBS)
+../lib/strtoofft.$(OBJEXT): ../lib/$(am__dirstamp) \
+ ../lib/$(DEPDIR)/$(am__dirstamp)
+../lib/timediff.$(OBJEXT): ../lib/$(am__dirstamp) \
+ ../lib/$(DEPDIR)/$(am__dirstamp)
+../lib/nonblock.$(OBJEXT): ../lib/$(am__dirstamp) \
+ ../lib/$(DEPDIR)/$(am__dirstamp)
+../lib/warnless.$(OBJEXT): ../lib/$(am__dirstamp) \
+ ../lib/$(DEPDIR)/$(am__dirstamp)
+../lib/curl_multibyte.$(OBJEXT): ../lib/$(am__dirstamp) \
+ ../lib/$(DEPDIR)/$(am__dirstamp)
+../lib/version_win32.$(OBJEXT): ../lib/$(am__dirstamp) \
+ ../lib/$(DEPDIR)/$(am__dirstamp)
+../lib/dynbuf.$(OBJEXT): ../lib/$(am__dirstamp) \
+ ../lib/$(DEPDIR)/$(am__dirstamp)
+
+curl$(EXEEXT): $(curl_OBJECTS) $(curl_DEPENDENCIES) $(EXTRA_curl_DEPENDENCIES)
+ @rm -f curl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(curl_OBJECTS) $(curl_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+ -rm -f ../lib/*.$(OBJEXT)
+ -rm -f ../lib/*.lo
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/dynbuf.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-curl_multibyte.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-dynbuf.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-nonblock.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-strtoofft.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-timediff.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-version_win32.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-warnless.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/nonblock.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/strtoofft.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/version_win32.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-slist_wc.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_binmode.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_bname.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_cb_dbg.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_cb_hdr.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_cb_prg.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_cb_rea.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_cb_see.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_cb_wrt.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_cfgable.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_dirhie.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_doswin.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_easysrc.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_filetime.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_findfile.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_formparse.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_getparam.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_getpass.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_help.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_helpers.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_hugehelp.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_libinfo.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_listhelp.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_main.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_msgs.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_operate.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_operhlp.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_panykey.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_paramhlp.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_parsecfg.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_progress.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_setopt.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_sleep.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_strdup.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_urlglob.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_util.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_vms.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_writeout.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_writeout_json.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_xattr.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slist_wc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_binmode.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_bname.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_cb_dbg.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_cb_hdr.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_cb_prg.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_cb_rea.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_cb_see.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_cb_wrt.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_cfgable.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_dirhie.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_doswin.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_easysrc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_filetime.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_findfile.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_formparse.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_getparam.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_getpass.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_help.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_helpers.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_hugehelp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_libinfo.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_listhelp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_main.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_msgs.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_operate.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_operhlp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_panykey.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_paramhlp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_parsecfg.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_progress.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_setopt.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_sleep.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_strdup.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_urlglob.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_util.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_vms.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_writeout.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_writeout_json.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_xattr.Po@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+ @$(MKDIR_P) $(@D)
+ @echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libcurltool_la-slist_wc.lo: slist_wc.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-slist_wc.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-slist_wc.Tpo -c -o libcurltool_la-slist_wc.lo `test -f 'slist_wc.c' || echo '$(srcdir)/'`slist_wc.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-slist_wc.Tpo $(DEPDIR)/libcurltool_la-slist_wc.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='slist_wc.c' object='libcurltool_la-slist_wc.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-slist_wc.lo `test -f 'slist_wc.c' || echo '$(srcdir)/'`slist_wc.c
+
+libcurltool_la-tool_binmode.lo: tool_binmode.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_binmode.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_binmode.Tpo -c -o libcurltool_la-tool_binmode.lo `test -f 'tool_binmode.c' || echo '$(srcdir)/'`tool_binmode.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_binmode.Tpo $(DEPDIR)/libcurltool_la-tool_binmode.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_binmode.c' object='libcurltool_la-tool_binmode.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_binmode.lo `test -f 'tool_binmode.c' || echo '$(srcdir)/'`tool_binmode.c
+
+libcurltool_la-tool_bname.lo: tool_bname.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_bname.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_bname.Tpo -c -o libcurltool_la-tool_bname.lo `test -f 'tool_bname.c' || echo '$(srcdir)/'`tool_bname.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_bname.Tpo $(DEPDIR)/libcurltool_la-tool_bname.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_bname.c' object='libcurltool_la-tool_bname.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_bname.lo `test -f 'tool_bname.c' || echo '$(srcdir)/'`tool_bname.c
+
+libcurltool_la-tool_cb_dbg.lo: tool_cb_dbg.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_cb_dbg.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_cb_dbg.Tpo -c -o libcurltool_la-tool_cb_dbg.lo `test -f 'tool_cb_dbg.c' || echo '$(srcdir)/'`tool_cb_dbg.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_cb_dbg.Tpo $(DEPDIR)/libcurltool_la-tool_cb_dbg.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_cb_dbg.c' object='libcurltool_la-tool_cb_dbg.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_cb_dbg.lo `test -f 'tool_cb_dbg.c' || echo '$(srcdir)/'`tool_cb_dbg.c
+
+libcurltool_la-tool_cb_hdr.lo: tool_cb_hdr.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_cb_hdr.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_cb_hdr.Tpo -c -o libcurltool_la-tool_cb_hdr.lo `test -f 'tool_cb_hdr.c' || echo '$(srcdir)/'`tool_cb_hdr.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_cb_hdr.Tpo $(DEPDIR)/libcurltool_la-tool_cb_hdr.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_cb_hdr.c' object='libcurltool_la-tool_cb_hdr.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_cb_hdr.lo `test -f 'tool_cb_hdr.c' || echo '$(srcdir)/'`tool_cb_hdr.c
+
+libcurltool_la-tool_cb_prg.lo: tool_cb_prg.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_cb_prg.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_cb_prg.Tpo -c -o libcurltool_la-tool_cb_prg.lo `test -f 'tool_cb_prg.c' || echo '$(srcdir)/'`tool_cb_prg.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_cb_prg.Tpo $(DEPDIR)/libcurltool_la-tool_cb_prg.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_cb_prg.c' object='libcurltool_la-tool_cb_prg.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_cb_prg.lo `test -f 'tool_cb_prg.c' || echo '$(srcdir)/'`tool_cb_prg.c
+
+libcurltool_la-tool_cb_rea.lo: tool_cb_rea.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_cb_rea.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_cb_rea.Tpo -c -o libcurltool_la-tool_cb_rea.lo `test -f 'tool_cb_rea.c' || echo '$(srcdir)/'`tool_cb_rea.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_cb_rea.Tpo $(DEPDIR)/libcurltool_la-tool_cb_rea.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_cb_rea.c' object='libcurltool_la-tool_cb_rea.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_cb_rea.lo `test -f 'tool_cb_rea.c' || echo '$(srcdir)/'`tool_cb_rea.c
+
+libcurltool_la-tool_cb_see.lo: tool_cb_see.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_cb_see.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_cb_see.Tpo -c -o libcurltool_la-tool_cb_see.lo `test -f 'tool_cb_see.c' || echo '$(srcdir)/'`tool_cb_see.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_cb_see.Tpo $(DEPDIR)/libcurltool_la-tool_cb_see.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_cb_see.c' object='libcurltool_la-tool_cb_see.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_cb_see.lo `test -f 'tool_cb_see.c' || echo '$(srcdir)/'`tool_cb_see.c
+
+libcurltool_la-tool_cb_wrt.lo: tool_cb_wrt.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_cb_wrt.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_cb_wrt.Tpo -c -o libcurltool_la-tool_cb_wrt.lo `test -f 'tool_cb_wrt.c' || echo '$(srcdir)/'`tool_cb_wrt.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_cb_wrt.Tpo $(DEPDIR)/libcurltool_la-tool_cb_wrt.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_cb_wrt.c' object='libcurltool_la-tool_cb_wrt.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_cb_wrt.lo `test -f 'tool_cb_wrt.c' || echo '$(srcdir)/'`tool_cb_wrt.c
+
+libcurltool_la-tool_cfgable.lo: tool_cfgable.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_cfgable.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_cfgable.Tpo -c -o libcurltool_la-tool_cfgable.lo `test -f 'tool_cfgable.c' || echo '$(srcdir)/'`tool_cfgable.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_cfgable.Tpo $(DEPDIR)/libcurltool_la-tool_cfgable.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_cfgable.c' object='libcurltool_la-tool_cfgable.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_cfgable.lo `test -f 'tool_cfgable.c' || echo '$(srcdir)/'`tool_cfgable.c
+
+libcurltool_la-tool_dirhie.lo: tool_dirhie.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_dirhie.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_dirhie.Tpo -c -o libcurltool_la-tool_dirhie.lo `test -f 'tool_dirhie.c' || echo '$(srcdir)/'`tool_dirhie.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_dirhie.Tpo $(DEPDIR)/libcurltool_la-tool_dirhie.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_dirhie.c' object='libcurltool_la-tool_dirhie.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_dirhie.lo `test -f 'tool_dirhie.c' || echo '$(srcdir)/'`tool_dirhie.c
+
+libcurltool_la-tool_doswin.lo: tool_doswin.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_doswin.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_doswin.Tpo -c -o libcurltool_la-tool_doswin.lo `test -f 'tool_doswin.c' || echo '$(srcdir)/'`tool_doswin.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_doswin.Tpo $(DEPDIR)/libcurltool_la-tool_doswin.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_doswin.c' object='libcurltool_la-tool_doswin.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_doswin.lo `test -f 'tool_doswin.c' || echo '$(srcdir)/'`tool_doswin.c
+
+libcurltool_la-tool_easysrc.lo: tool_easysrc.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_easysrc.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_easysrc.Tpo -c -o libcurltool_la-tool_easysrc.lo `test -f 'tool_easysrc.c' || echo '$(srcdir)/'`tool_easysrc.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_easysrc.Tpo $(DEPDIR)/libcurltool_la-tool_easysrc.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_easysrc.c' object='libcurltool_la-tool_easysrc.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_easysrc.lo `test -f 'tool_easysrc.c' || echo '$(srcdir)/'`tool_easysrc.c
+
+libcurltool_la-tool_filetime.lo: tool_filetime.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_filetime.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_filetime.Tpo -c -o libcurltool_la-tool_filetime.lo `test -f 'tool_filetime.c' || echo '$(srcdir)/'`tool_filetime.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_filetime.Tpo $(DEPDIR)/libcurltool_la-tool_filetime.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_filetime.c' object='libcurltool_la-tool_filetime.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_filetime.lo `test -f 'tool_filetime.c' || echo '$(srcdir)/'`tool_filetime.c
+
+libcurltool_la-tool_findfile.lo: tool_findfile.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_findfile.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_findfile.Tpo -c -o libcurltool_la-tool_findfile.lo `test -f 'tool_findfile.c' || echo '$(srcdir)/'`tool_findfile.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_findfile.Tpo $(DEPDIR)/libcurltool_la-tool_findfile.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_findfile.c' object='libcurltool_la-tool_findfile.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_findfile.lo `test -f 'tool_findfile.c' || echo '$(srcdir)/'`tool_findfile.c
+
+libcurltool_la-tool_formparse.lo: tool_formparse.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_formparse.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_formparse.Tpo -c -o libcurltool_la-tool_formparse.lo `test -f 'tool_formparse.c' || echo '$(srcdir)/'`tool_formparse.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_formparse.Tpo $(DEPDIR)/libcurltool_la-tool_formparse.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_formparse.c' object='libcurltool_la-tool_formparse.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_formparse.lo `test -f 'tool_formparse.c' || echo '$(srcdir)/'`tool_formparse.c
+
+libcurltool_la-tool_getparam.lo: tool_getparam.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_getparam.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_getparam.Tpo -c -o libcurltool_la-tool_getparam.lo `test -f 'tool_getparam.c' || echo '$(srcdir)/'`tool_getparam.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_getparam.Tpo $(DEPDIR)/libcurltool_la-tool_getparam.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_getparam.c' object='libcurltool_la-tool_getparam.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_getparam.lo `test -f 'tool_getparam.c' || echo '$(srcdir)/'`tool_getparam.c
+
+libcurltool_la-tool_getpass.lo: tool_getpass.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_getpass.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_getpass.Tpo -c -o libcurltool_la-tool_getpass.lo `test -f 'tool_getpass.c' || echo '$(srcdir)/'`tool_getpass.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_getpass.Tpo $(DEPDIR)/libcurltool_la-tool_getpass.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_getpass.c' object='libcurltool_la-tool_getpass.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_getpass.lo `test -f 'tool_getpass.c' || echo '$(srcdir)/'`tool_getpass.c
+
+libcurltool_la-tool_help.lo: tool_help.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_help.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_help.Tpo -c -o libcurltool_la-tool_help.lo `test -f 'tool_help.c' || echo '$(srcdir)/'`tool_help.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_help.Tpo $(DEPDIR)/libcurltool_la-tool_help.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_help.c' object='libcurltool_la-tool_help.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_help.lo `test -f 'tool_help.c' || echo '$(srcdir)/'`tool_help.c
+
+libcurltool_la-tool_helpers.lo: tool_helpers.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_helpers.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_helpers.Tpo -c -o libcurltool_la-tool_helpers.lo `test -f 'tool_helpers.c' || echo '$(srcdir)/'`tool_helpers.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_helpers.Tpo $(DEPDIR)/libcurltool_la-tool_helpers.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_helpers.c' object='libcurltool_la-tool_helpers.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_helpers.lo `test -f 'tool_helpers.c' || echo '$(srcdir)/'`tool_helpers.c
+
+libcurltool_la-tool_hugehelp.lo: tool_hugehelp.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_hugehelp.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_hugehelp.Tpo -c -o libcurltool_la-tool_hugehelp.lo `test -f 'tool_hugehelp.c' || echo '$(srcdir)/'`tool_hugehelp.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_hugehelp.Tpo $(DEPDIR)/libcurltool_la-tool_hugehelp.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_hugehelp.c' object='libcurltool_la-tool_hugehelp.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_hugehelp.lo `test -f 'tool_hugehelp.c' || echo '$(srcdir)/'`tool_hugehelp.c
+
+libcurltool_la-tool_libinfo.lo: tool_libinfo.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_libinfo.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_libinfo.Tpo -c -o libcurltool_la-tool_libinfo.lo `test -f 'tool_libinfo.c' || echo '$(srcdir)/'`tool_libinfo.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_libinfo.Tpo $(DEPDIR)/libcurltool_la-tool_libinfo.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_libinfo.c' object='libcurltool_la-tool_libinfo.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_libinfo.lo `test -f 'tool_libinfo.c' || echo '$(srcdir)/'`tool_libinfo.c
+
+libcurltool_la-tool_listhelp.lo: tool_listhelp.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_listhelp.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_listhelp.Tpo -c -o libcurltool_la-tool_listhelp.lo `test -f 'tool_listhelp.c' || echo '$(srcdir)/'`tool_listhelp.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_listhelp.Tpo $(DEPDIR)/libcurltool_la-tool_listhelp.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_listhelp.c' object='libcurltool_la-tool_listhelp.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_listhelp.lo `test -f 'tool_listhelp.c' || echo '$(srcdir)/'`tool_listhelp.c
+
+libcurltool_la-tool_main.lo: tool_main.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_main.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_main.Tpo -c -o libcurltool_la-tool_main.lo `test -f 'tool_main.c' || echo '$(srcdir)/'`tool_main.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_main.Tpo $(DEPDIR)/libcurltool_la-tool_main.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_main.c' object='libcurltool_la-tool_main.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_main.lo `test -f 'tool_main.c' || echo '$(srcdir)/'`tool_main.c
+
+libcurltool_la-tool_msgs.lo: tool_msgs.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_msgs.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_msgs.Tpo -c -o libcurltool_la-tool_msgs.lo `test -f 'tool_msgs.c' || echo '$(srcdir)/'`tool_msgs.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_msgs.Tpo $(DEPDIR)/libcurltool_la-tool_msgs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_msgs.c' object='libcurltool_la-tool_msgs.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_msgs.lo `test -f 'tool_msgs.c' || echo '$(srcdir)/'`tool_msgs.c
+
+libcurltool_la-tool_operate.lo: tool_operate.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_operate.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_operate.Tpo -c -o libcurltool_la-tool_operate.lo `test -f 'tool_operate.c' || echo '$(srcdir)/'`tool_operate.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_operate.Tpo $(DEPDIR)/libcurltool_la-tool_operate.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_operate.c' object='libcurltool_la-tool_operate.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_operate.lo `test -f 'tool_operate.c' || echo '$(srcdir)/'`tool_operate.c
+
+libcurltool_la-tool_operhlp.lo: tool_operhlp.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_operhlp.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_operhlp.Tpo -c -o libcurltool_la-tool_operhlp.lo `test -f 'tool_operhlp.c' || echo '$(srcdir)/'`tool_operhlp.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_operhlp.Tpo $(DEPDIR)/libcurltool_la-tool_operhlp.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_operhlp.c' object='libcurltool_la-tool_operhlp.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_operhlp.lo `test -f 'tool_operhlp.c' || echo '$(srcdir)/'`tool_operhlp.c
+
+libcurltool_la-tool_panykey.lo: tool_panykey.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_panykey.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_panykey.Tpo -c -o libcurltool_la-tool_panykey.lo `test -f 'tool_panykey.c' || echo '$(srcdir)/'`tool_panykey.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_panykey.Tpo $(DEPDIR)/libcurltool_la-tool_panykey.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_panykey.c' object='libcurltool_la-tool_panykey.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_panykey.lo `test -f 'tool_panykey.c' || echo '$(srcdir)/'`tool_panykey.c
+
+libcurltool_la-tool_paramhlp.lo: tool_paramhlp.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_paramhlp.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_paramhlp.Tpo -c -o libcurltool_la-tool_paramhlp.lo `test -f 'tool_paramhlp.c' || echo '$(srcdir)/'`tool_paramhlp.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_paramhlp.Tpo $(DEPDIR)/libcurltool_la-tool_paramhlp.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_paramhlp.c' object='libcurltool_la-tool_paramhlp.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_paramhlp.lo `test -f 'tool_paramhlp.c' || echo '$(srcdir)/'`tool_paramhlp.c
+
+libcurltool_la-tool_parsecfg.lo: tool_parsecfg.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_parsecfg.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_parsecfg.Tpo -c -o libcurltool_la-tool_parsecfg.lo `test -f 'tool_parsecfg.c' || echo '$(srcdir)/'`tool_parsecfg.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_parsecfg.Tpo $(DEPDIR)/libcurltool_la-tool_parsecfg.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_parsecfg.c' object='libcurltool_la-tool_parsecfg.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_parsecfg.lo `test -f 'tool_parsecfg.c' || echo '$(srcdir)/'`tool_parsecfg.c
+
+libcurltool_la-tool_progress.lo: tool_progress.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_progress.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_progress.Tpo -c -o libcurltool_la-tool_progress.lo `test -f 'tool_progress.c' || echo '$(srcdir)/'`tool_progress.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_progress.Tpo $(DEPDIR)/libcurltool_la-tool_progress.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_progress.c' object='libcurltool_la-tool_progress.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_progress.lo `test -f 'tool_progress.c' || echo '$(srcdir)/'`tool_progress.c
+
+libcurltool_la-tool_strdup.lo: tool_strdup.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_strdup.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_strdup.Tpo -c -o libcurltool_la-tool_strdup.lo `test -f 'tool_strdup.c' || echo '$(srcdir)/'`tool_strdup.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_strdup.Tpo $(DEPDIR)/libcurltool_la-tool_strdup.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_strdup.c' object='libcurltool_la-tool_strdup.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_strdup.lo `test -f 'tool_strdup.c' || echo '$(srcdir)/'`tool_strdup.c
+
+libcurltool_la-tool_setopt.lo: tool_setopt.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_setopt.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_setopt.Tpo -c -o libcurltool_la-tool_setopt.lo `test -f 'tool_setopt.c' || echo '$(srcdir)/'`tool_setopt.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_setopt.Tpo $(DEPDIR)/libcurltool_la-tool_setopt.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_setopt.c' object='libcurltool_la-tool_setopt.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_setopt.lo `test -f 'tool_setopt.c' || echo '$(srcdir)/'`tool_setopt.c
+
+libcurltool_la-tool_sleep.lo: tool_sleep.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_sleep.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_sleep.Tpo -c -o libcurltool_la-tool_sleep.lo `test -f 'tool_sleep.c' || echo '$(srcdir)/'`tool_sleep.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_sleep.Tpo $(DEPDIR)/libcurltool_la-tool_sleep.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_sleep.c' object='libcurltool_la-tool_sleep.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_sleep.lo `test -f 'tool_sleep.c' || echo '$(srcdir)/'`tool_sleep.c
+
+libcurltool_la-tool_urlglob.lo: tool_urlglob.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_urlglob.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_urlglob.Tpo -c -o libcurltool_la-tool_urlglob.lo `test -f 'tool_urlglob.c' || echo '$(srcdir)/'`tool_urlglob.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_urlglob.Tpo $(DEPDIR)/libcurltool_la-tool_urlglob.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_urlglob.c' object='libcurltool_la-tool_urlglob.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_urlglob.lo `test -f 'tool_urlglob.c' || echo '$(srcdir)/'`tool_urlglob.c
+
+libcurltool_la-tool_util.lo: tool_util.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_util.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_util.Tpo -c -o libcurltool_la-tool_util.lo `test -f 'tool_util.c' || echo '$(srcdir)/'`tool_util.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_util.Tpo $(DEPDIR)/libcurltool_la-tool_util.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_util.c' object='libcurltool_la-tool_util.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_util.lo `test -f 'tool_util.c' || echo '$(srcdir)/'`tool_util.c
+
+libcurltool_la-tool_vms.lo: tool_vms.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_vms.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_vms.Tpo -c -o libcurltool_la-tool_vms.lo `test -f 'tool_vms.c' || echo '$(srcdir)/'`tool_vms.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_vms.Tpo $(DEPDIR)/libcurltool_la-tool_vms.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_vms.c' object='libcurltool_la-tool_vms.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_vms.lo `test -f 'tool_vms.c' || echo '$(srcdir)/'`tool_vms.c
+
+libcurltool_la-tool_writeout.lo: tool_writeout.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_writeout.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_writeout.Tpo -c -o libcurltool_la-tool_writeout.lo `test -f 'tool_writeout.c' || echo '$(srcdir)/'`tool_writeout.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_writeout.Tpo $(DEPDIR)/libcurltool_la-tool_writeout.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_writeout.c' object='libcurltool_la-tool_writeout.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_writeout.lo `test -f 'tool_writeout.c' || echo '$(srcdir)/'`tool_writeout.c
+
+libcurltool_la-tool_writeout_json.lo: tool_writeout_json.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_writeout_json.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_writeout_json.Tpo -c -o libcurltool_la-tool_writeout_json.lo `test -f 'tool_writeout_json.c' || echo '$(srcdir)/'`tool_writeout_json.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_writeout_json.Tpo $(DEPDIR)/libcurltool_la-tool_writeout_json.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_writeout_json.c' object='libcurltool_la-tool_writeout_json.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_writeout_json.lo `test -f 'tool_writeout_json.c' || echo '$(srcdir)/'`tool_writeout_json.c
+
+libcurltool_la-tool_xattr.lo: tool_xattr.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_xattr.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_xattr.Tpo -c -o libcurltool_la-tool_xattr.lo `test -f 'tool_xattr.c' || echo '$(srcdir)/'`tool_xattr.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_xattr.Tpo $(DEPDIR)/libcurltool_la-tool_xattr.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_xattr.c' object='libcurltool_la-tool_xattr.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_xattr.lo `test -f 'tool_xattr.c' || echo '$(srcdir)/'`tool_xattr.c
+
+../lib/libcurltool_la-strtoofft.lo: ../lib/strtoofft.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT ../lib/libcurltool_la-strtoofft.lo -MD -MP -MF ../lib/$(DEPDIR)/libcurltool_la-strtoofft.Tpo -c -o ../lib/libcurltool_la-strtoofft.lo `test -f '../lib/strtoofft.c' || echo '$(srcdir)/'`../lib/strtoofft.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/libcurltool_la-strtoofft.Tpo ../lib/$(DEPDIR)/libcurltool_la-strtoofft.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../lib/strtoofft.c' object='../lib/libcurltool_la-strtoofft.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o ../lib/libcurltool_la-strtoofft.lo `test -f '../lib/strtoofft.c' || echo '$(srcdir)/'`../lib/strtoofft.c
+
+../lib/libcurltool_la-timediff.lo: ../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT ../lib/libcurltool_la-timediff.lo -MD -MP -MF ../lib/$(DEPDIR)/libcurltool_la-timediff.Tpo -c -o ../lib/libcurltool_la-timediff.lo `test -f '../lib/timediff.c' || echo '$(srcdir)/'`../lib/timediff.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/libcurltool_la-timediff.Tpo ../lib/$(DEPDIR)/libcurltool_la-timediff.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../lib/timediff.c' object='../lib/libcurltool_la-timediff.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o ../lib/libcurltool_la-timediff.lo `test -f '../lib/timediff.c' || echo '$(srcdir)/'`../lib/timediff.c
+
+../lib/libcurltool_la-nonblock.lo: ../lib/nonblock.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT ../lib/libcurltool_la-nonblock.lo -MD -MP -MF ../lib/$(DEPDIR)/libcurltool_la-nonblock.Tpo -c -o ../lib/libcurltool_la-nonblock.lo `test -f '../lib/nonblock.c' || echo '$(srcdir)/'`../lib/nonblock.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/libcurltool_la-nonblock.Tpo ../lib/$(DEPDIR)/libcurltool_la-nonblock.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../lib/nonblock.c' object='../lib/libcurltool_la-nonblock.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o ../lib/libcurltool_la-nonblock.lo `test -f '../lib/nonblock.c' || echo '$(srcdir)/'`../lib/nonblock.c
+
+../lib/libcurltool_la-warnless.lo: ../lib/warnless.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT ../lib/libcurltool_la-warnless.lo -MD -MP -MF ../lib/$(DEPDIR)/libcurltool_la-warnless.Tpo -c -o ../lib/libcurltool_la-warnless.lo `test -f '../lib/warnless.c' || echo '$(srcdir)/'`../lib/warnless.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/libcurltool_la-warnless.Tpo ../lib/$(DEPDIR)/libcurltool_la-warnless.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../lib/warnless.c' object='../lib/libcurltool_la-warnless.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o ../lib/libcurltool_la-warnless.lo `test -f '../lib/warnless.c' || echo '$(srcdir)/'`../lib/warnless.c
+
+../lib/libcurltool_la-curl_multibyte.lo: ../lib/curl_multibyte.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT ../lib/libcurltool_la-curl_multibyte.lo -MD -MP -MF ../lib/$(DEPDIR)/libcurltool_la-curl_multibyte.Tpo -c -o ../lib/libcurltool_la-curl_multibyte.lo `test -f '../lib/curl_multibyte.c' || echo '$(srcdir)/'`../lib/curl_multibyte.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/libcurltool_la-curl_multibyte.Tpo ../lib/$(DEPDIR)/libcurltool_la-curl_multibyte.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../lib/curl_multibyte.c' object='../lib/libcurltool_la-curl_multibyte.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o ../lib/libcurltool_la-curl_multibyte.lo `test -f '../lib/curl_multibyte.c' || echo '$(srcdir)/'`../lib/curl_multibyte.c
+
+../lib/libcurltool_la-version_win32.lo: ../lib/version_win32.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT ../lib/libcurltool_la-version_win32.lo -MD -MP -MF ../lib/$(DEPDIR)/libcurltool_la-version_win32.Tpo -c -o ../lib/libcurltool_la-version_win32.lo `test -f '../lib/version_win32.c' || echo '$(srcdir)/'`../lib/version_win32.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/libcurltool_la-version_win32.Tpo ../lib/$(DEPDIR)/libcurltool_la-version_win32.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../lib/version_win32.c' object='../lib/libcurltool_la-version_win32.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o ../lib/libcurltool_la-version_win32.lo `test -f '../lib/version_win32.c' || echo '$(srcdir)/'`../lib/version_win32.c
+
+../lib/libcurltool_la-dynbuf.lo: ../lib/dynbuf.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT ../lib/libcurltool_la-dynbuf.lo -MD -MP -MF ../lib/$(DEPDIR)/libcurltool_la-dynbuf.Tpo -c -o ../lib/libcurltool_la-dynbuf.lo `test -f '../lib/dynbuf.c' || echo '$(srcdir)/'`../lib/dynbuf.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/libcurltool_la-dynbuf.Tpo ../lib/$(DEPDIR)/libcurltool_la-dynbuf.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../lib/dynbuf.c' object='../lib/libcurltool_la-dynbuf.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o ../lib/libcurltool_la-dynbuf.lo `test -f '../lib/dynbuf.c' || echo '$(srcdir)/'`../lib/dynbuf.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+ -rm -rf ../lib/.libs ../lib/_libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+@CURLDEBUG_FALSE@all-local:
+all-am: Makefile $(PROGRAMS) $(LTLIBRARIES) all-local
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(bindir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -rm -f ../lib/$(DEPDIR)/$(am__dirstamp)
+ -rm -f ../lib/$(am__dirstamp)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool \
+ clean-noinstLTLIBRARIES mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f ../lib/$(DEPDIR)/curl_multibyte.Po
+ -rm -f ../lib/$(DEPDIR)/dynbuf.Po
+ -rm -f ../lib/$(DEPDIR)/libcurltool_la-curl_multibyte.Plo
+ -rm -f ../lib/$(DEPDIR)/libcurltool_la-dynbuf.Plo
+ -rm -f ../lib/$(DEPDIR)/libcurltool_la-nonblock.Plo
+ -rm -f ../lib/$(DEPDIR)/libcurltool_la-strtoofft.Plo
+ -rm -f ../lib/$(DEPDIR)/libcurltool_la-timediff.Plo
+ -rm -f ../lib/$(DEPDIR)/libcurltool_la-version_win32.Plo
+ -rm -f ../lib/$(DEPDIR)/libcurltool_la-warnless.Plo
+ -rm -f ../lib/$(DEPDIR)/nonblock.Po
+ -rm -f ../lib/$(DEPDIR)/strtoofft.Po
+ -rm -f ../lib/$(DEPDIR)/timediff.Po
+ -rm -f ../lib/$(DEPDIR)/version_win32.Po
+ -rm -f ../lib/$(DEPDIR)/warnless.Po
+ -rm -f ./$(DEPDIR)/libcurltool_la-slist_wc.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_binmode.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_bname.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_cb_dbg.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_cb_hdr.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_cb_prg.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_cb_rea.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_cb_see.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_cb_wrt.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_cfgable.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_dirhie.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_doswin.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_easysrc.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_filetime.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_findfile.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_formparse.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_getparam.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_getpass.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_help.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_helpers.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_hugehelp.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_libinfo.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_listhelp.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_main.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_msgs.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_operate.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_operhlp.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_panykey.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_paramhlp.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_parsecfg.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_progress.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_setopt.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_sleep.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_strdup.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_urlglob.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_util.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_vms.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_writeout.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_writeout_json.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_xattr.Plo
+ -rm -f ./$(DEPDIR)/slist_wc.Po
+ -rm -f ./$(DEPDIR)/tool_binmode.Po
+ -rm -f ./$(DEPDIR)/tool_bname.Po
+ -rm -f ./$(DEPDIR)/tool_cb_dbg.Po
+ -rm -f ./$(DEPDIR)/tool_cb_hdr.Po
+ -rm -f ./$(DEPDIR)/tool_cb_prg.Po
+ -rm -f ./$(DEPDIR)/tool_cb_rea.Po
+ -rm -f ./$(DEPDIR)/tool_cb_see.Po
+ -rm -f ./$(DEPDIR)/tool_cb_wrt.Po
+ -rm -f ./$(DEPDIR)/tool_cfgable.Po
+ -rm -f ./$(DEPDIR)/tool_dirhie.Po
+ -rm -f ./$(DEPDIR)/tool_doswin.Po
+ -rm -f ./$(DEPDIR)/tool_easysrc.Po
+ -rm -f ./$(DEPDIR)/tool_filetime.Po
+ -rm -f ./$(DEPDIR)/tool_findfile.Po
+ -rm -f ./$(DEPDIR)/tool_formparse.Po
+ -rm -f ./$(DEPDIR)/tool_getparam.Po
+ -rm -f ./$(DEPDIR)/tool_getpass.Po
+ -rm -f ./$(DEPDIR)/tool_help.Po
+ -rm -f ./$(DEPDIR)/tool_helpers.Po
+ -rm -f ./$(DEPDIR)/tool_hugehelp.Po
+ -rm -f ./$(DEPDIR)/tool_libinfo.Po
+ -rm -f ./$(DEPDIR)/tool_listhelp.Po
+ -rm -f ./$(DEPDIR)/tool_main.Po
+ -rm -f ./$(DEPDIR)/tool_msgs.Po
+ -rm -f ./$(DEPDIR)/tool_operate.Po
+ -rm -f ./$(DEPDIR)/tool_operhlp.Po
+ -rm -f ./$(DEPDIR)/tool_panykey.Po
+ -rm -f ./$(DEPDIR)/tool_paramhlp.Po
+ -rm -f ./$(DEPDIR)/tool_parsecfg.Po
+ -rm -f ./$(DEPDIR)/tool_progress.Po
+ -rm -f ./$(DEPDIR)/tool_setopt.Po
+ -rm -f ./$(DEPDIR)/tool_sleep.Po
+ -rm -f ./$(DEPDIR)/tool_strdup.Po
+ -rm -f ./$(DEPDIR)/tool_urlglob.Po
+ -rm -f ./$(DEPDIR)/tool_util.Po
+ -rm -f ./$(DEPDIR)/tool_vms.Po
+ -rm -f ./$(DEPDIR)/tool_writeout.Po
+ -rm -f ./$(DEPDIR)/tool_writeout_json.Po
+ -rm -f ./$(DEPDIR)/tool_xattr.Po
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f ../lib/$(DEPDIR)/curl_multibyte.Po
+ -rm -f ../lib/$(DEPDIR)/dynbuf.Po
+ -rm -f ../lib/$(DEPDIR)/libcurltool_la-curl_multibyte.Plo
+ -rm -f ../lib/$(DEPDIR)/libcurltool_la-dynbuf.Plo
+ -rm -f ../lib/$(DEPDIR)/libcurltool_la-nonblock.Plo
+ -rm -f ../lib/$(DEPDIR)/libcurltool_la-strtoofft.Plo
+ -rm -f ../lib/$(DEPDIR)/libcurltool_la-timediff.Plo
+ -rm -f ../lib/$(DEPDIR)/libcurltool_la-version_win32.Plo
+ -rm -f ../lib/$(DEPDIR)/libcurltool_la-warnless.Plo
+ -rm -f ../lib/$(DEPDIR)/nonblock.Po
+ -rm -f ../lib/$(DEPDIR)/strtoofft.Po
+ -rm -f ../lib/$(DEPDIR)/timediff.Po
+ -rm -f ../lib/$(DEPDIR)/version_win32.Po
+ -rm -f ../lib/$(DEPDIR)/warnless.Po
+ -rm -f ./$(DEPDIR)/libcurltool_la-slist_wc.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_binmode.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_bname.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_cb_dbg.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_cb_hdr.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_cb_prg.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_cb_rea.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_cb_see.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_cb_wrt.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_cfgable.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_dirhie.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_doswin.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_easysrc.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_filetime.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_findfile.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_formparse.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_getparam.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_getpass.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_help.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_helpers.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_hugehelp.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_libinfo.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_listhelp.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_main.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_msgs.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_operate.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_operhlp.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_panykey.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_paramhlp.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_parsecfg.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_progress.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_setopt.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_sleep.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_strdup.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_urlglob.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_util.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_vms.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_writeout.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_writeout_json.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_xattr.Plo
+ -rm -f ./$(DEPDIR)/slist_wc.Po
+ -rm -f ./$(DEPDIR)/tool_binmode.Po
+ -rm -f ./$(DEPDIR)/tool_bname.Po
+ -rm -f ./$(DEPDIR)/tool_cb_dbg.Po
+ -rm -f ./$(DEPDIR)/tool_cb_hdr.Po
+ -rm -f ./$(DEPDIR)/tool_cb_prg.Po
+ -rm -f ./$(DEPDIR)/tool_cb_rea.Po
+ -rm -f ./$(DEPDIR)/tool_cb_see.Po
+ -rm -f ./$(DEPDIR)/tool_cb_wrt.Po
+ -rm -f ./$(DEPDIR)/tool_cfgable.Po
+ -rm -f ./$(DEPDIR)/tool_dirhie.Po
+ -rm -f ./$(DEPDIR)/tool_doswin.Po
+ -rm -f ./$(DEPDIR)/tool_easysrc.Po
+ -rm -f ./$(DEPDIR)/tool_filetime.Po
+ -rm -f ./$(DEPDIR)/tool_findfile.Po
+ -rm -f ./$(DEPDIR)/tool_formparse.Po
+ -rm -f ./$(DEPDIR)/tool_getparam.Po
+ -rm -f ./$(DEPDIR)/tool_getpass.Po
+ -rm -f ./$(DEPDIR)/tool_help.Po
+ -rm -f ./$(DEPDIR)/tool_helpers.Po
+ -rm -f ./$(DEPDIR)/tool_hugehelp.Po
+ -rm -f ./$(DEPDIR)/tool_libinfo.Po
+ -rm -f ./$(DEPDIR)/tool_listhelp.Po
+ -rm -f ./$(DEPDIR)/tool_main.Po
+ -rm -f ./$(DEPDIR)/tool_msgs.Po
+ -rm -f ./$(DEPDIR)/tool_operate.Po
+ -rm -f ./$(DEPDIR)/tool_operhlp.Po
+ -rm -f ./$(DEPDIR)/tool_panykey.Po
+ -rm -f ./$(DEPDIR)/tool_paramhlp.Po
+ -rm -f ./$(DEPDIR)/tool_parsecfg.Po
+ -rm -f ./$(DEPDIR)/tool_progress.Po
+ -rm -f ./$(DEPDIR)/tool_setopt.Po
+ -rm -f ./$(DEPDIR)/tool_sleep.Po
+ -rm -f ./$(DEPDIR)/tool_strdup.Po
+ -rm -f ./$(DEPDIR)/tool_urlglob.Po
+ -rm -f ./$(DEPDIR)/tool_util.Po
+ -rm -f ./$(DEPDIR)/tool_vms.Po
+ -rm -f ./$(DEPDIR)/tool_writeout.Po
+ -rm -f ./$(DEPDIR)/tool_writeout_json.Po
+ -rm -f ./$(DEPDIR)/tool_xattr.Po
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS
+
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
+ am--depfiles check check-am clean clean-binPROGRAMS \
+ clean-generic clean-libtool clean-noinstLTLIBRARIES \
+ cscopelist-am ctags ctags-am distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-binPROGRAMS install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
+ uninstall-am uninstall-binPROGRAMS
+
+.PRECIOUS: Makefile
+
+
+# remove targets if the command fails
+.DELETE_ON_ERROR:
+@OS_WINDOWS_TRUE@$(CURL_RCFILES): tool_version.h
+
+# Here are the stuff to create a built-in manual
+
+@USE_MANUAL_TRUE@$(MANPAGE):
+@USE_MANUAL_TRUE@ cd $(top_builddir)/docs && $(MAKE)
+
+# This generates the tool_hugehelp.c file in both uncompressed and
+# compressed formats.
+@HAVE_LIBZ_TRUE@@USE_MANUAL_TRUE@$(HUGE): $(MANPAGE) $(MKHELP)
+@HAVE_LIBZ_TRUE@@USE_MANUAL_TRUE@ $(HUGECMD) (echo '#include "tool_setup.h"' > $(HUGE); \
+@HAVE_LIBZ_TRUE@@USE_MANUAL_TRUE@ echo '#ifndef HAVE_LIBZ' >> $(HUGE); \
+@HAVE_LIBZ_TRUE@@USE_MANUAL_TRUE@ $(NROFF) $(MANPAGE) | $(PERL) $(MKHELP) >> $(HUGE); \
+@HAVE_LIBZ_TRUE@@USE_MANUAL_TRUE@ echo '#else' >> $(HUGE); \
+@HAVE_LIBZ_TRUE@@USE_MANUAL_TRUE@ $(NROFF) $(MANPAGE) | $(PERL) $(MKHELP) -c >> $(HUGE); \
+@HAVE_LIBZ_TRUE@@USE_MANUAL_TRUE@ echo '#endif /* HAVE_LIBZ */' >> $(HUGE) )
+# This generates the tool_hugehelp.c file uncompressed only
+@HAVE_LIBZ_FALSE@@USE_MANUAL_TRUE@$(HUGE): $(MANPAGE) $(MKHELP)
+@HAVE_LIBZ_FALSE@@USE_MANUAL_TRUE@ $(HUGECMD)(echo '#include "tool_setup.h"' > $(HUGE); \
+@HAVE_LIBZ_FALSE@@USE_MANUAL_TRUE@ $(NROFF) $(MANPAGE) | $(PERL) $(MKHELP) >> $(HUGE) )
+
+# built-in manual has been disabled, make a blank file
+@USE_MANUAL_FALSE@$(HUGE):
+@USE_MANUAL_FALSE@ echo '#include "tool_hugehelp.h"' >> $(HUGE)
+
+# ignore tool_hugehelp.c since it is generated source code and it plays
+# by slightly different rules!
+checksrc:
+ $(CHECKSRC)(@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(srcdir) \
+ -W$(srcdir)/tool_hugehelp.c $(srcdir)/*.[ch])
+
+# for debug builds, we scan the sources on all regular make invokes
+@CURLDEBUG_TRUE@all-local: checksrc
+
+tidy:
+ $(TIDY) $(CURL_CFILES) $(TIDYFLAGS) -- $(curl_CPPFLAGS) $(CPPFLAGS) -DHAVE_CONFIG_H
+
+listhelp:
+ (cd $(top_srcdir)/docs/cmdline-opts && ./gen.pl listhelp *.d) > tool_listhelp.c
+
+# Warning is "normal": libtool: error: ignoring unknown tag RC
+@OS_WINDOWS_TRUE@.rc.o:
+@OS_WINDOWS_TRUE@ $(LIBTOOL) --tag=RC --mode=compile $(RC) -I$(top_srcdir)/include -DCURL_EMBED_MANIFEST $(RCFLAGS) -i $< -o $@
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/ap/lib/libcurl/curl-7.86.0/src/Makefile.inc b/ap/lib/libcurl/curl-7.86.0/src/Makefile.inc
new file mode 100755
index 0000000..bdf663f
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/Makefile.inc
@@ -0,0 +1,143 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+# ./src/Makefile.inc
+# Using the backslash as line continuation character might be problematic with
+# some make flavours. If we ever want to change this in a portable manner then
+# we should consider this idea :
+# CSRC1 = file1.c file2.c file3.c
+# CSRC2 = file4.c file5.c file6.c
+# CSOURCES = $(CSRC1) $(CSRC2)
+
+# libcurl has sources that provide functions named curlx_* that aren't part of
+# the official API, but we re-use the code here to avoid duplication.
+CURLX_CFILES = \
+ ../lib/strtoofft.c \
+ ../lib/timediff.c \
+ ../lib/nonblock.c \
+ ../lib/warnless.c \
+ ../lib/curl_multibyte.c \
+ ../lib/version_win32.c \
+ ../lib/dynbuf.c
+
+CURLX_HFILES = \
+ ../lib/curl_setup.h \
+ ../lib/strtoofft.h \
+ ../lib/timediff.h \
+ ../lib/nonblock.h \
+ ../lib/warnless.h \
+ ../lib/curl_ctype.h \
+ ../lib/curl_multibyte.h \
+ ../lib/version_win32.h \
+ ../lib/dynbuf.h
+
+CURL_CFILES = \
+ slist_wc.c \
+ tool_binmode.c \
+ tool_bname.c \
+ tool_cb_dbg.c \
+ tool_cb_hdr.c \
+ tool_cb_prg.c \
+ tool_cb_rea.c \
+ tool_cb_see.c \
+ tool_cb_wrt.c \
+ tool_cfgable.c \
+ tool_dirhie.c \
+ tool_doswin.c \
+ tool_easysrc.c \
+ tool_filetime.c \
+ tool_findfile.c \
+ tool_formparse.c \
+ tool_getparam.c \
+ tool_getpass.c \
+ tool_help.c \
+ tool_helpers.c \
+ tool_hugehelp.c \
+ tool_libinfo.c \
+ tool_listhelp.c \
+ tool_main.c \
+ tool_msgs.c \
+ tool_operate.c \
+ tool_operhlp.c \
+ tool_panykey.c \
+ tool_paramhlp.c \
+ tool_parsecfg.c \
+ tool_progress.c \
+ tool_strdup.c \
+ tool_setopt.c \
+ tool_sleep.c \
+ tool_urlglob.c \
+ tool_util.c \
+ tool_vms.c \
+ tool_writeout.c \
+ tool_writeout_json.c \
+ tool_xattr.c
+
+CURL_HFILES = \
+ slist_wc.h \
+ tool_binmode.h \
+ tool_bname.h \
+ tool_cb_dbg.h \
+ tool_cb_hdr.h \
+ tool_cb_prg.h \
+ tool_cb_rea.h \
+ tool_cb_see.h \
+ tool_cb_wrt.h \
+ tool_cfgable.h \
+ tool_dirhie.h \
+ tool_doswin.h \
+ tool_easysrc.h \
+ tool_filetime.h \
+ tool_findfile.h \
+ tool_formparse.h \
+ tool_getparam.h \
+ tool_getpass.h \
+ tool_help.h \
+ tool_helpers.h \
+ tool_hugehelp.h \
+ tool_libinfo.h \
+ tool_main.h \
+ tool_msgs.h \
+ tool_operate.h \
+ tool_operhlp.h \
+ tool_panykey.h \
+ tool_paramhlp.h \
+ tool_parsecfg.h \
+ tool_progress.h \
+ tool_sdecls.h \
+ tool_setopt.h \
+ tool_setup.h \
+ tool_sleep.h \
+ tool_strdup.h \
+ tool_urlglob.h \
+ tool_util.h \
+ tool_version.h \
+ tool_vms.h \
+ tool_writeout.h \
+ tool_writeout_json.h \
+ tool_xattr.h
+
+CURL_RCFILES = curl.rc
+
+# curl_SOURCES is special and gets assigned in src/Makefile.am
+CURL_FILES = $(CURL_CFILES) $(CURLX_CFILES) $(CURL_HFILES)
diff --git a/ap/lib/libcurl/curl-7.86.0/src/Makefile.m32 b/ap/lib/libcurl/curl-7.86.0/src/Makefile.m32
new file mode 100755
index 0000000..096e093
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/Makefile.m32
@@ -0,0 +1,72 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1999 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+#***************************************************************************
+
+# See usage in lib/Makefile.m32
+
+PROOT := ..
+
+RCFLAGS += -DCURL_EMBED_MANIFEST
+CPPFLAGS += -I$(PROOT)/lib
+LDFLAGS += -L$(PROOT)/lib
+LIBS += -lcurl
+
+ifneq ($(findstring -dyn,$(CFG)),)
+ curl_DEPENDENCIES := $(PROOT)/lib/libcurl$(CURL_DLL_SUFFIX).dll
+ curl_DEPENDENCIES += $(PROOT)/lib/libcurl.dll.a
+ DYN := 1
+else
+ curl_DEPENDENCIES := $(PROOT)/lib/libcurl.a
+ CPPFLAGS += -DCURL_STATICLIB
+ LDFLAGS += -static
+endif
+
+### Sources and targets
+
+# Provides CURL_CFILES, CURLX_CFILES, CURL_RCFILES
+include Makefile.inc
+
+TARGETS := curl.exe
+
+curl_OBJECTS := $(patsubst %.c,%.o,$(strip $(CURL_CFILES)))
+curl_OBJECTS += $(patsubst %.c,%.o,$(notdir $(strip $(CURLX_CFILES))))
+curl_OBJECTS += $(patsubst %.rc,%.res,$(strip $(CURL_RCFILES)))
+vpath %.c $(PROOT)/lib
+
+TOCLEAN := $(curl_OBJECTS)
+ifneq ($(wildcard tool_hugehelp.c.cvs),)
+TOCLEAN += tool_hugehelp.c
+endif
+
+### Local rules
+
+$(TARGETS): $(curl_OBJECTS) $(curl_DEPENDENCIES)
+ $(CC) $(LDFLAGS) $(CURL_LDFLAGS_BIN) -o $@ $(curl_OBJECTS) $(LIBS)
+
+tool_hugehelp.c:
+ @echo Creating $@
+ @$(call COPY, $@.cvs, $@)
+
+### Global script
+
+include $(PROOT)/lib/Makefile.m32
diff --git a/ap/lib/libcurl/curl-7.86.0/src/curl.rc b/ap/lib/libcurl/curl-7.86.0/src/curl.rc
new file mode 100755
index 0000000..b0e3287
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/curl.rc
@@ -0,0 +1,113 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include <winver.h>
+#include "tool_version.h"
+
+LANGUAGE 0, 0
+
+#define RC_VERSION CURL_VERSION_MAJOR, CURL_VERSION_MINOR, CURL_VERSION_PATCH, 0
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION RC_VERSION
+ PRODUCTVERSION RC_VERSION
+ FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
+#if defined(DEBUGBUILD) || defined(_DEBUG)
+ FILEFLAGS VS_FF_DEBUG
+#else
+ FILEFLAGS 0L
+#endif
+ FILEOS VOS__WINDOWS32
+ FILETYPE VFT_APP
+ FILESUBTYPE 0L
+
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "CompanyName", "curl, https://curl.se/\0"
+ VALUE "FileDescription", "The curl executable\0"
+ VALUE "FileVersion", CURL_VERSION "\0"
+ VALUE "InternalName", "curl\0"
+ VALUE "OriginalFilename", "curl.exe\0"
+ VALUE "ProductName", "The curl executable\0"
+ VALUE "ProductVersion", CURL_VERSION "\0"
+ VALUE "LegalCopyright", "\xa9 " CURL_COPYRIGHT "\0" /* a9: Copyright symbol */
+ VALUE "License", "https://curl.se/docs/copyright.html\0"
+ END
+ END
+
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+END
+
+/* Manifest */
+
+#if defined(CURL_EMBED_MANIFEST)
+
+/* String escaping rules:
+ https://msdn.microsoft.com/library/aa381050
+ Application Manifest doc, including the list of 'supportedOS Id's:
+ https://msdn.microsoft.com/library/aa374191 */
+
+#ifndef CREATEPROCESS_MANIFEST_RESOURCE_ID
+#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1
+#endif
+#ifndef RT_MANIFEST
+#define RT_MANIFEST 24
+#endif
+
+#define _STR(macro) _STR_(macro)
+#define _STR_(macro) #macro
+
+CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST
+BEGIN
+ "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>"
+ "<assembly xmlns=""urn:schemas-microsoft-com:asm.v1"" manifestVersion=""1.0"">"
+ "<assemblyIdentity name=""The curl executable"" version="""
+ _STR(LIBCURL_VERSION_MAJOR) "."
+ _STR(LIBCURL_VERSION_MINOR) "."
+ _STR(LIBCURL_VERSION_PATCH) ".0"" type=""win32""/>"
+ "<compatibility xmlns=""urn:schemas-microsoft-com:compatibility.v1"">"
+ "<application>"
+ "<supportedOS Id=""{e2011457-1546-43c5-a5fe-008deee3d3f0}""/>" /* Vista / Server 2008 */
+ "<supportedOS Id=""{35138b9a-5d96-4fbd-8e2d-a2440225f93a}""/>" /* 7 / Server 2008 R2 */
+ "<supportedOS Id=""{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}""/>" /* 8 / Server 2012 */
+ "<supportedOS Id=""{1f676c76-80e1-4239-95bb-83d0f6d0da78}""/>" /* 8.1 / Server 2012 R2 */
+ "<supportedOS Id=""{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}""/>" /* 10 / Server 2016 */
+ "</application>"
+ "</compatibility>"
+ "<trustInfo xmlns=""urn:schemas-microsoft-com:asm.v3"">"
+ "<security>"
+ "<requestedPrivileges>"
+ "<requestedExecutionLevel level=""asInvoker"" uiAccess=""false""/>"
+ "</requestedPrivileges>"
+ "</security>"
+ "</trustInfo>"
+ "</assembly>"
+END
+
+#endif
diff --git a/ap/lib/libcurl/curl-7.86.0/src/makefile.amiga b/ap/lib/libcurl/curl-7.86.0/src/makefile.amiga
new file mode 100755
index 0000000..9aac7a0
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/makefile.amiga
@@ -0,0 +1,52 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+#
+# curl Makefile for AmigaOS ...
+#
+
+# change the follow to where you have the AmiTCP SDK v4.3 includes:
+
+ATCPSDKI= /GG/netinclude
+
+
+CC = m68k-amigaos-gcc
+CFLAGS = -I$(ATCPSDKI) -m68020-60 -O2 -msoft-float -noixemul -g -I. -I../include -W -Wall -DUSE_OPENSSL -DHAVE_LIBZ
+LIBS = ../lib/libcurl.a -lssl -lcrypto -lz
+MANPAGE = ../docs/curl.1
+README = ../docs/MANUAL
+MKHELP = ../src/mkhelp.pl
+
+include Makefile.inc
+
+OBJS = $(CURL_CFILES:.c=.o) $(CURLX_CFILES:.c=.o)
+
+all: tool_hugehelp.c $(OBJS)
+ $(CC) $(CFLAGS) -o curl $(OBJS) $(LIBS) -Wl,-Map,curl.map,--cref
+
+tool_hugehelp.c: $(README) $(MANPAGE) mkhelp.pl
+ rm -f tool_hugehelp.c
+ /bin/nroff -man $(MANPAGE) | /bin/perl $(MKHELP) -c $(README) > tool_hugehelp.c
+
+install:
+ $(INSTALL) -c curl /c/curl
diff --git a/ap/lib/libcurl/curl-7.86.0/src/makefile.dj b/ap/lib/libcurl/curl-7.86.0/src/makefile.dj
new file mode 100755
index 0000000..84c127b
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/makefile.dj
@@ -0,0 +1,101 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 2003 - 2022, Gisle Vanem <gvanem@yahoo.no>.
+# Copyright (C) 2003 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+#***************************************************************************
+
+#
+# Adapted for djgpp2 / Watt-32 / DOS
+#
+
+DEPEND_PREREQ = # tool_hugehelp.c
+
+TOPDIR = ..
+
+vpath %.c ../lib
+
+include ../packages/DOS/common.dj
+include Makefile.inc
+
+CSOURCES = $(CURL_CFILES) $(CURLX_CFILES)
+
+ifeq ($(USE_OPENSSL),1)
+ EX_LIBS += $(OPENSSL_LIBS)
+endif
+
+ifeq ($(USE_ARES),1)
+ EX_LIBS += $(ARES_ROOT)/libcares.a
+endif
+
+ifeq ($(USE_ZLIB),1)
+ EX_LIBS += $(ZLIB_ROOT)/libz.a
+ CFLAGS += -DUSE_MANUAL
+endif
+
+ifeq ($(USE_IDNA),1)
+ EX_LIBS += $(LIBIDN_ROOT)/lib/dj_obj/libidn.a -liconv
+endif
+
+EX_LIBS += $(WATT32_ROOT)/lib/libwatt.a
+
+PROGRAM = curl.exe
+OBJECTS = $(addprefix $(OBJ_DIR)/, $(notdir $(CSOURCES:.c=.o)))
+
+all: $(OBJ_DIR) $(PROGRAM)
+ @echo Welcome to curl
+
+$(PROGRAM): $(OBJECTS) ../lib/libcurl.a
+ $(CC) -o $@ $^ $(LDFLAGS) $(EX_LIBS)
+
+#
+# groff 1.18+ requires "-P -c"
+# If 'USE_ZLIB = 1', create a compressed help-file.
+#
+ifeq ($(USE_ZLIB),1)
+ COMPRESS_OPT = -c
+endif
+
+tool_hugehelp.c: ../docs/curl.1 mkhelp.pl Makefile.dj
+ groff -Tascii -man $< | perl -w mkhelp.pl $(COMPRESS_OPT) $< > $@
+
+# clean generated files
+#
+genclean:
+ - $(DELETE) tool_hugehelp.c
+
+# clean object files and subdir
+#
+objclean: genclean
+ - $(DELETE) $(OBJ_DIR)$(DS)*.o
+ - $(RMDIR) $(OBJ_DIR)
+
+# clean without removing built program
+#
+clean: objclean
+ - $(DELETE) depend.dj
+
+# clean everything
+#
+realclean vclean: clean
+ - $(DELETE) $(PROGRAM)
+
+-include depend.dj
diff --git a/ap/lib/libcurl/curl-7.86.0/src/mkhelp.pl b/ap/lib/libcurl/curl-7.86.0/src/mkhelp.pl
new file mode 100755
index 0000000..bf146d7
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/mkhelp.pl
@@ -0,0 +1,233 @@
+#!/usr/bin/env perl
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+# SPDX-License-Identifier: curl
+#
+###########################################################################
+
+# Yeah, I know, probably 1000 other persons already wrote a script like
+# this, but I'll tell ya:
+
+# THEY DON'T FIT ME :-)
+
+# Get readme file as parameter:
+
+if($ARGV[0] eq "-c") {
+ $c=1;
+ shift @ARGV;
+}
+
+push @out, " _ _ ____ _\n";
+push @out, " Project ___| | | | _ \\| |\n";
+push @out, " / __| | | | |_) | |\n";
+push @out, " | (__| |_| | _ <| |___\n";
+push @out, " \\___|\\___/|_| \\_\\_____|\n";
+
+my $olen=0;
+while (<STDIN>) {
+ my $line = $_;
+
+ # this should be removed:
+ $line =~ s/(.|_)//g;
+
+ # remove trailing CR from line. msysgit checks out files as line+CRLF
+ $line =~ s/\r$//;
+
+ if($line =~ /^([ \t]*\n|curl)/i) {
+ # cut off headers and empty lines
+ $wline++; # count number of cut off lines
+ next;
+ }
+
+ my $text = $line;
+ $text =~ s/^\s+//g; # cut off preceding...
+ $text =~ s/\s+$//g; # and trailing whitespaces
+
+ $tlen = length($text);
+
+ if($wline && ($olen == $tlen)) {
+ # if the previous line with contents was exactly as long as
+ # this line, then we ignore the newlines!
+
+ # We do this magic because a header may abort a paragraph at
+ # any line, but we don't want that to be noticed in the output
+ # here
+ $wline=0;
+ }
+ $olen = $tlen;
+
+ if($wline) {
+ # we only make one empty line max
+ $wline = 0;
+ push @out, "\n";
+ }
+ push @out, $line;
+}
+push @out, "\n"; # just an extra newline
+
+print <<HEAD
+/*
+ * NEVER EVER edit this manually, fix the mkhelp.pl script instead!
+ */
+#ifdef USE_MANUAL
+#include "tool_hugehelp.h"
+HEAD
+ ;
+if($c) {
+ # If compression requested, check that the Gzip module is available
+ # or else disable compression
+ $c = eval
+ {
+ require IO::Compress::Gzip;
+ IO::Compress::Gzip->import();
+ 1;
+ };
+ print STDERR "Warning: compression requested but Gzip is not available\n" if (!$c)
+}
+
+if($c)
+{
+ my $content = join("", @out);
+ my $gzippedContent;
+ IO::Compress::Gzip::gzip(
+ \$content, \$gzippedContent, Level => 9, TextFlag => 1, Time=>0) or die "gzip failed:";
+ $gzip = length($content);
+ $gzipped = length($gzippedContent);
+
+ print <<HEAD
+#include <zlib.h>
+#include "memdebug.h" /* keep this as LAST include */
+static const unsigned char hugehelpgz[] = {
+ /* This mumbo-jumbo is the huge help text compressed with gzip.
+ Thanks to this operation, the size of this data shrank from $gzip
+ to $gzipped bytes. You can disable the use of compressed help
+ texts by NOT passing -c to the mkhelp.pl tool. */
+HEAD
+;
+
+ my $c=0;
+ print " ";
+ for(split(//, $gzippedContent)) {
+ my $num=ord($_);
+ printf(" 0x%02x,", 0+$num);
+ if(!(++$c % 12)) {
+ print "\n ";
+ }
+ }
+ print "\n};\n";
+
+ print <<EOF
+#define BUF_SIZE 0x10000
+static voidpf zalloc_func(voidpf opaque, unsigned int items, unsigned int size)
+{
+ (void) opaque;
+ /* not a typo, keep it calloc() */
+ return (voidpf) calloc(items, size);
+}
+static void zfree_func(voidpf opaque, voidpf ptr)
+{
+ (void) opaque;
+ free(ptr);
+}
+/* Decompress and send to stdout a gzip-compressed buffer */
+void hugehelp(void)
+{
+ unsigned char* buf;
+ int status,headerlen;
+ z_stream z;
+
+ /* Make sure no gzip options are set */
+ if (hugehelpgz[3] & 0xfe)
+ return;
+
+ headerlen = 10;
+ memset(&z, 0, sizeof(z_stream));
+ z.zalloc = (alloc_func)zalloc_func;
+ z.zfree = (free_func)zfree_func;
+ z.avail_in = (unsigned int)(sizeof(hugehelpgz) - headerlen);
+ z.next_in = (unsigned char *)hugehelpgz + headerlen;
+
+ if (inflateInit2(&z, -MAX_WBITS) != Z_OK)
+ return;
+
+ buf = malloc(BUF_SIZE);
+ if (buf) {
+ while(1) {
+ z.avail_out = BUF_SIZE;
+ z.next_out = buf;
+ status = inflate(&z, Z_SYNC_FLUSH);
+ if (status == Z_OK || status == Z_STREAM_END) {
+ fwrite(buf, BUF_SIZE - z.avail_out, 1, stdout);
+ if (status == Z_STREAM_END)
+ break;
+ }
+ else
+ break; /* Error */
+ }
+ free(buf);
+ }
+ inflateEnd(&z);
+}
+EOF
+ ;
+foot();
+exit;
+}
+else {
+ print <<HEAD
+void hugehelp(void)
+{
+ fputs(
+HEAD
+ ;
+}
+
+$outsize=0;
+for(@out) {
+ chop;
+
+ $new = $_;
+
+ $outsize += length($new)+1; # one for the newline
+
+ $new =~ s/\\/\\\\/g;
+ $new =~ s/\"/\\\"/g;
+
+ # gcc 2.96 claims ISO C89 only is required to support 509 letter strings
+ if($outsize > 500) {
+ # terminate and make another fputs() call here
+ print ", stdout);\n fputs(\n";
+ $outsize=length($new)+1;
+ }
+ printf("\"%s\\n\"\n", $new);
+
+}
+
+print ", stdout) ;\n}\n";
+
+foot();
+
+sub foot {
+ print <<FOOT
+#endif /* USE_MANUAL */
+FOOT
+ ;
+}
diff --git a/ap/lib/libcurl/curl-7.86.0/src/slist_wc.c b/ap/lib/libcurl/curl-7.86.0/src/slist_wc.c
new file mode 100755
index 0000000..68021e6
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/slist_wc.c
@@ -0,0 +1,74 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+
+#include "tool_setup.h"
+
+#ifndef CURL_DISABLE_LIBCURL_OPTION
+
+#include "slist_wc.h"
+
+/* The last #include files should be: */
+#include "memdebug.h"
+
+/*
+ * slist_wc_append() appends a string to the linked list. This function can be
+ * used as an initialization function as well as an append function.
+ */
+struct slist_wc *slist_wc_append(struct slist_wc *list,
+ const char *data)
+{
+ struct curl_slist *new_item = curl_slist_append(NULL, data);
+
+ if(!new_item)
+ return NULL;
+
+ if(!list) {
+ list = malloc(sizeof(struct slist_wc));
+
+ if(!list) {
+ curl_slist_free_all(new_item);
+ return NULL;
+ }
+
+ list->first = new_item;
+ list->last = new_item;
+ return list;
+ }
+
+ list->last->next = new_item;
+ list->last = list->last->next;
+ return list;
+}
+
+/* be nice and clean up resources */
+void slist_wc_free_all(struct slist_wc *list)
+{
+ if(!list)
+ return;
+
+ curl_slist_free_all(list->first);
+ free(list);
+}
+
+#endif /* CURL_DISABLE_LIBCURL_OPTION */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/slist_wc.h b/ap/lib/libcurl/curl-7.86.0/src/slist_wc.h
new file mode 100755
index 0000000..e309fd5
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/slist_wc.h
@@ -0,0 +1,57 @@
+#ifndef HEADER_CURL_SLIST_WC_H
+#define HEADER_CURL_SLIST_WC_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+
+#include "tool_setup.h"
+#ifndef CURL_DISABLE_LIBCURL_OPTION
+
+/* linked-list structure with last node cache for easysrc */
+struct slist_wc {
+ struct curl_slist *first;
+ struct curl_slist *last;
+};
+
+/*
+ * NAME curl_slist_wc_append()
+ *
+ * DESCRIPTION
+ *
+ * Appends a string to a linked list. If no list exists, it will be created
+ * first. Returns the new list, after appending.
+ */
+struct slist_wc *slist_wc_append(struct slist_wc *, const char *);
+
+/*
+ * NAME curl_slist_free_all()
+ *
+ * DESCRIPTION
+ *
+ * free a previously built curl_slist_wc.
+ */
+void slist_wc_free_all(struct slist_wc *);
+
+#endif /* CURL_DISABLE_LIBCURL_OPTION */
+
+#endif /* HEADER_CURL_SLIST_WC_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_binmode.c b/ap/lib/libcurl/curl-7.86.0/src/tool_binmode.c
new file mode 100755
index 0000000..68c6c36
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_binmode.c
@@ -0,0 +1,53 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#ifdef HAVE_SETMODE
+
+#ifdef HAVE_IO_H
+# include <io.h>
+#endif
+
+#ifdef HAVE_FCNTL_H
+# include <fcntl.h>
+#endif
+
+#include "tool_binmode.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+void set_binmode(FILE *stream)
+{
+#ifdef O_BINARY
+# ifdef __HIGHC__
+ _setmode(stream, O_BINARY);
+# else
+ (void)setmode(fileno(stream), O_BINARY);
+# endif
+#else
+ (void)stream;
+#endif
+}
+
+#endif /* HAVE_SETMODE */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_binmode.h b/ap/lib/libcurl/curl-7.86.0/src/tool_binmode.h
new file mode 100755
index 0000000..0b3d24b
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_binmode.h
@@ -0,0 +1,38 @@
+#ifndef HEADER_CURL_TOOL_BINMODE_H
+#define HEADER_CURL_TOOL_BINMODE_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#ifdef HAVE_SETMODE
+
+void set_binmode(FILE *stream);
+
+#else
+
+#define set_binmode(x) Curl_nop_stmt
+
+#endif /* HAVE_SETMODE */
+
+#endif /* HEADER_CURL_TOOL_BINMODE_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_bname.c b/ap/lib/libcurl/curl-7.86.0/src/tool_bname.c
new file mode 100755
index 0000000..e70f7d7
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_bname.c
@@ -0,0 +1,51 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#include "tool_bname.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+#ifndef HAVE_BASENAME
+
+char *tool_basename(char *path)
+{
+ char *s1;
+ char *s2;
+
+ s1 = strrchr(path, '/');
+ s2 = strrchr(path, '\\');
+
+ if(s1 && s2) {
+ path = (s1 > s2) ? s1 + 1 : s2 + 1;
+ }
+ else if(s1)
+ path = s1 + 1;
+ else if(s2)
+ path = s2 + 1;
+
+ return path;
+}
+
+#endif /* HAVE_BASENAME */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_bname.h b/ap/lib/libcurl/curl-7.86.0/src/tool_bname.h
new file mode 100755
index 0000000..0efd7f1
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_bname.h
@@ -0,0 +1,36 @@
+#ifndef HEADER_CURL_TOOL_BNAME_H
+#define HEADER_CURL_TOOL_BNAME_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#ifndef HAVE_BASENAME
+
+char *tool_basename(char *path);
+
+#define basename(x) tool_basename((x))
+
+#endif /* HAVE_BASENAME */
+
+#endif /* HEADER_CURL_TOOL_BNAME_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_cb_dbg.c b/ap/lib/libcurl/curl-7.86.0/src/tool_cb_dbg.c
new file mode 100755
index 0000000..c1dba85
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_cb_dbg.c
@@ -0,0 +1,248 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_msgs.h"
+#include "tool_cb_dbg.h"
+#include "tool_util.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+static void dump(const char *timebuf, const char *text,
+ FILE *stream, const unsigned char *ptr, size_t size,
+ trace tracetype, curl_infotype infotype);
+
+/*
+** callback for CURLOPT_DEBUGFUNCTION
+*/
+
+int tool_debug_cb(CURL *handle, curl_infotype type,
+ char *data, size_t size,
+ void *userdata)
+{
+ struct OperationConfig *operation = userdata;
+ struct GlobalConfig *config = operation->global;
+ FILE *output = config->errors;
+ const char *text;
+ struct timeval tv;
+ char timebuf[20];
+ time_t secs;
+
+ (void)handle; /* not used */
+
+ if(config->tracetime) {
+ struct tm *now;
+ static time_t epoch_offset;
+ static int known_offset;
+ tv = tvnow();
+ if(!known_offset) {
+ epoch_offset = time(NULL) - tv.tv_sec;
+ known_offset = 1;
+ }
+ secs = epoch_offset + tv.tv_sec;
+ /* !checksrc! disable BANNEDFUNC 1 */
+ now = localtime(&secs); /* not thread safe but we don't care */
+ msnprintf(timebuf, sizeof(timebuf), "%02d:%02d:%02d.%06ld ",
+ now->tm_hour, now->tm_min, now->tm_sec, (long)tv.tv_usec);
+ }
+ else
+ timebuf[0] = 0;
+
+ if(!config->trace_stream) {
+ /* open for append */
+ if(!strcmp("-", config->trace_dump))
+ config->trace_stream = stdout;
+ else if(!strcmp("%", config->trace_dump))
+ /* Ok, this is somewhat hackish but we do it undocumented for now */
+ config->trace_stream = config->errors; /* aka stderr */
+ else {
+ config->trace_stream = fopen(config->trace_dump, FOPEN_WRITETEXT);
+ config->trace_fopened = TRUE;
+ }
+ }
+
+ if(config->trace_stream)
+ output = config->trace_stream;
+
+ if(!output) {
+ warnf(config, "Failed to create/open output");
+ return 0;
+ }
+
+ if(config->tracetype == TRACE_PLAIN) {
+ /*
+ * This is the trace look that is similar to what libcurl makes on its
+ * own.
+ */
+ static const char * const s_infotype[] = {
+ "*", "<", ">", "{", "}", "{", "}"
+ };
+ static bool newl = FALSE;
+ static bool traced_data = FALSE;
+
+ switch(type) {
+ case CURLINFO_HEADER_OUT:
+ if(size > 0) {
+ size_t st = 0;
+ size_t i;
+ for(i = 0; i < size - 1; i++) {
+ if(data[i] == '\n') { /* LF */
+ if(!newl) {
+ fprintf(output, "%s%s ", timebuf, s_infotype[type]);
+ }
+ (void)fwrite(data + st, i - st + 1, 1, output);
+ st = i + 1;
+ newl = FALSE;
+ }
+ }
+ if(!newl)
+ fprintf(output, "%s%s ", timebuf, s_infotype[type]);
+ (void)fwrite(data + st, i - st + 1, 1, output);
+ }
+ newl = (size && (data[size - 1] != '\n')) ? TRUE : FALSE;
+ traced_data = FALSE;
+ break;
+ case CURLINFO_TEXT:
+ case CURLINFO_HEADER_IN:
+ if(!newl)
+ fprintf(output, "%s%s ", timebuf, s_infotype[type]);
+ (void)fwrite(data, size, 1, output);
+ newl = (size && (data[size - 1] != '\n')) ? TRUE : FALSE;
+ traced_data = FALSE;
+ break;
+ case CURLINFO_DATA_OUT:
+ case CURLINFO_DATA_IN:
+ case CURLINFO_SSL_DATA_IN:
+ case CURLINFO_SSL_DATA_OUT:
+ if(!traced_data) {
+ /* if the data is output to a tty and we're sending this debug trace
+ to stderr or stdout, we don't display the alert about the data not
+ being shown as the data _is_ shown then just not via this
+ function */
+ if(!config->isatty || ((output != stderr) && (output != stdout))) {
+ if(!newl)
+ fprintf(output, "%s%s ", timebuf, s_infotype[type]);
+ fprintf(output, "[%zu bytes data]\n", size);
+ newl = FALSE;
+ traced_data = TRUE;
+ }
+ }
+ break;
+ default: /* nada */
+ newl = FALSE;
+ traced_data = FALSE;
+ break;
+ }
+
+ return 0;
+ }
+
+ switch(type) {
+ case CURLINFO_TEXT:
+ fprintf(output, "%s== Info: %.*s", timebuf, (int)size, data);
+ /* FALLTHROUGH */
+ default: /* in case a new one is introduced to shock us */
+ return 0;
+
+ case CURLINFO_HEADER_OUT:
+ text = "=> Send header";
+ break;
+ case CURLINFO_DATA_OUT:
+ text = "=> Send data";
+ break;
+ case CURLINFO_HEADER_IN:
+ text = "<= Recv header";
+ break;
+ case CURLINFO_DATA_IN:
+ text = "<= Recv data";
+ break;
+ case CURLINFO_SSL_DATA_IN:
+ text = "<= Recv SSL data";
+ break;
+ case CURLINFO_SSL_DATA_OUT:
+ text = "=> Send SSL data";
+ break;
+ }
+
+ dump(timebuf, text, output, (unsigned char *) data, size, config->tracetype,
+ type);
+ return 0;
+}
+
+static void dump(const char *timebuf, const char *text,
+ FILE *stream, const unsigned char *ptr, size_t size,
+ trace tracetype, curl_infotype infotype)
+{
+ size_t i;
+ size_t c;
+
+ unsigned int width = 0x10;
+
+ if(tracetype == TRACE_ASCII)
+ /* without the hex output, we can fit more on screen */
+ width = 0x40;
+
+ fprintf(stream, "%s%s, %zu bytes (0x%zx)\n", timebuf, text, size, size);
+
+ for(i = 0; i < size; i += width) {
+
+ fprintf(stream, "%04zx: ", i);
+
+ if(tracetype == TRACE_BIN) {
+ /* hex not disabled, show it */
+ for(c = 0; c < width; c++)
+ if(i + c < size)
+ fprintf(stream, "%02x ", ptr[i + c]);
+ else
+ fputs(" ", stream);
+ }
+
+ for(c = 0; (c < width) && (i + c < size); c++) {
+ /* check for 0D0A; if found, skip past and start a new line of output */
+ if((tracetype == TRACE_ASCII) &&
+ (i + c + 1 < size) && (ptr[i + c] == 0x0D) &&
+ (ptr[i + c + 1] == 0x0A)) {
+ i += (c + 2 - width);
+ break;
+ }
+ (void)infotype;
+ fprintf(stream, "%c", ((ptr[i + c] >= 0x20) && (ptr[i + c] < 0x7F)) ?
+ ptr[i + c] : UNPRINTABLE_CHAR);
+ /* check again for 0D0A, to avoid an extra \n if it's at width */
+ if((tracetype == TRACE_ASCII) &&
+ (i + c + 2 < size) && (ptr[i + c + 1] == 0x0D) &&
+ (ptr[i + c + 2] == 0x0A)) {
+ i += (c + 3 - width);
+ break;
+ }
+ }
+ fputc('\n', stream); /* newline */
+ }
+ fflush(stream);
+}
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_cb_dbg.h b/ap/lib/libcurl/curl-7.86.0/src/tool_cb_dbg.h
new file mode 100755
index 0000000..bc69e56
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_cb_dbg.h
@@ -0,0 +1,36 @@
+#ifndef HEADER_CURL_TOOL_CB_DBG_H
+#define HEADER_CURL_TOOL_CB_DBG_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+/*
+** callback for CURLOPT_DEBUGFUNCTION
+*/
+
+int tool_debug_cb(CURL *handle, curl_infotype type,
+ char *data, size_t size,
+ void *userdata);
+
+#endif /* HEADER_CURL_TOOL_CB_DBG_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_cb_hdr.c b/ap/lib/libcurl/curl-7.86.0/src/tool_cb_hdr.c
new file mode 100755
index 0000000..23700de
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_cb_hdr.c
@@ -0,0 +1,417 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#include "strcase.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_doswin.h"
+#include "tool_msgs.h"
+#include "tool_cb_hdr.h"
+#include "tool_cb_wrt.h"
+#include "tool_operate.h"
+#include "tool_libinfo.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+static char *parse_filename(const char *ptr, size_t len);
+
+#ifdef WIN32
+#define BOLD
+#define BOLDOFF
+#else
+#define BOLD "\x1b[1m"
+/* Switch off bold by setting "all attributes off" since the explicit
+ bold-off code (21) isn't supported everywhere - like in the mac
+ Terminal. */
+#define BOLDOFF "\x1b[0m"
+/* OSC 8 hyperlink escape sequence */
+#define LINK "\x1b]8;;"
+#define LINKST "\x1b\\"
+#define LINKOFF LINK LINKST
+#endif
+
+#ifdef LINK
+static void write_linked_location(CURL *curl, const char *location,
+ size_t loclen, FILE *stream);
+#endif
+
+/*
+** callback for CURLOPT_HEADERFUNCTION
+*/
+
+size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata)
+{
+ struct per_transfer *per = userdata;
+ struct HdrCbData *hdrcbdata = &per->hdrcbdata;
+ struct OutStruct *outs = &per->outs;
+ struct OutStruct *heads = &per->heads;
+ struct OutStruct *etag_save = &per->etag_save;
+ const char *str = ptr;
+ const size_t cb = size * nmemb;
+ const char *end = (char *)ptr + cb;
+ const char *scheme = NULL;
+
+ /*
+ * Once that libcurl has called back tool_header_cb() the returned value
+ * is checked against the amount that was intended to be written, if
+ * it does not match then it fails with CURLE_WRITE_ERROR. So at this
+ * point returning a value different from sz*nmemb indicates failure.
+ */
+ size_t failure = (size && nmemb) ? 0 : 1;
+
+ if(!per->config)
+ return failure;
+
+#ifdef DEBUGBUILD
+ if(size * nmemb > (size_t)CURL_MAX_HTTP_HEADER) {
+ warnf(per->config->global, "Header data exceeds single call write "
+ "limit!\n");
+ return failure;
+ }
+#endif
+
+ /*
+ * Write header data when curl option --dump-header (-D) is given.
+ */
+
+ if(per->config->headerfile && heads->stream) {
+ size_t rc = fwrite(ptr, size, nmemb, heads->stream);
+ if(rc != cb)
+ return rc;
+ /* flush the stream to send off what we got earlier */
+ (void)fflush(heads->stream);
+ }
+
+ /*
+ * Write etag to file when --etag-save option is given.
+ */
+ if(per->config->etag_save_file && etag_save->stream) {
+ /* match only header that start with etag (case insensitive) */
+ if(curl_strnequal(str, "etag:", 5)) {
+ const char *etag_h = &str[5];
+ const char *eot = end - 1;
+ if(*eot == '\n') {
+ while(ISBLANK(*etag_h) && (etag_h < eot))
+ etag_h++;
+ while(ISSPACE(*eot))
+ eot--;
+
+ if(eot >= etag_h) {
+ size_t etag_length = eot - etag_h + 1;
+ fwrite(etag_h, size, etag_length, etag_save->stream);
+ /* terminate with newline */
+ fputc('\n', etag_save->stream);
+ (void)fflush(etag_save->stream);
+ }
+ }
+ }
+ }
+
+ /*
+ * This callback sets the filename where output shall be written when
+ * curl options --remote-name (-O) and --remote-header-name (-J) have
+ * been simultaneously given and additionally server returns an HTTP
+ * Content-Disposition header specifying a filename property.
+ */
+
+ curl_easy_getinfo(per->curl, CURLINFO_SCHEME, &scheme);
+ scheme = proto_token(scheme);
+ if(hdrcbdata->honor_cd_filename &&
+ (cb > 20) && checkprefix("Content-disposition:", str) &&
+ (scheme == proto_http || scheme == proto_https)) {
+ const char *p = str + 20;
+
+ /* look for the 'filename=' parameter
+ (encoded filenames (*=) are not supported) */
+ for(;;) {
+ char *filename;
+ size_t len;
+
+ while(*p && (p < end) && !ISALPHA(*p))
+ p++;
+ if(p > end - 9)
+ break;
+
+ if(memcmp(p, "filename=", 9)) {
+ /* no match, find next parameter */
+ while((p < end) && (*p != ';'))
+ p++;
+ continue;
+ }
+ p += 9;
+
+ /* this expression below typecasts 'cb' only to avoid
+ warning: signed and unsigned type in conditional expression
+ */
+ len = (ssize_t)cb - (p - str);
+ filename = parse_filename(p, len);
+ if(filename) {
+ if(outs->stream) {
+ /* indication of problem, get out! */
+ free(filename);
+ return failure;
+ }
+
+ outs->is_cd_filename = TRUE;
+ outs->s_isreg = TRUE;
+ outs->fopened = FALSE;
+ outs->filename = filename;
+ outs->alloc_filename = TRUE;
+ hdrcbdata->honor_cd_filename = FALSE; /* done now! */
+ if(!tool_create_output_file(outs, per->config))
+ return failure;
+ }
+ break;
+ }
+ if(!outs->stream && !tool_create_output_file(outs, per->config))
+ return failure;
+ }
+ if(hdrcbdata->config->writeout) {
+ char *value = memchr(ptr, ':', cb);
+ if(value) {
+ if(per->was_last_header_empty)
+ per->num_headers = 0;
+ per->was_last_header_empty = FALSE;
+ per->num_headers++;
+ }
+ else if(ptr[0] == '\r' || ptr[0] == '\n')
+ per->was_last_header_empty = TRUE;
+ }
+ if(hdrcbdata->config->show_headers &&
+ (scheme == proto_http || scheme == proto_https ||
+ scheme == proto_rtsp || scheme == proto_file)) {
+ /* bold headers only for selected protocols */
+ char *value = NULL;
+
+ if(!outs->stream && !tool_create_output_file(outs, per->config))
+ return failure;
+
+ if(hdrcbdata->global->isatty && hdrcbdata->global->styled_output)
+ value = memchr(ptr, ':', cb);
+ if(value) {
+ size_t namelen = value - ptr;
+ fprintf(outs->stream, BOLD "%.*s" BOLDOFF ":", namelen, ptr);
+#ifndef LINK
+ fwrite(&value[1], cb - namelen - 1, 1, outs->stream);
+#else
+ if(curl_strnequal("Location", ptr, namelen)) {
+ write_linked_location(per->curl, &value[1], cb - namelen - 1,
+ outs->stream);
+ }
+ else
+ fwrite(&value[1], cb - namelen - 1, 1, outs->stream);
+#endif
+ }
+ else
+ /* not "handled", just show it */
+ fwrite(ptr, cb, 1, outs->stream);
+ }
+ return cb;
+}
+
+/*
+ * Copies a file name part and returns an ALLOCATED data buffer.
+ */
+static char *parse_filename(const char *ptr, size_t len)
+{
+ char *copy;
+ char *p;
+ char *q;
+ char stop = '\0';
+
+ /* simple implementation of strndup() */
+ copy = malloc(len + 1);
+ if(!copy)
+ return NULL;
+ memcpy(copy, ptr, len);
+ copy[len] = '\0';
+
+ p = copy;
+ if(*p == '\'' || *p == '"') {
+ /* store the starting quote */
+ stop = *p;
+ p++;
+ }
+ else
+ stop = ';';
+
+ /* scan for the end letter and stop there */
+ q = strchr(p, stop);
+ if(q)
+ *q = '\0';
+
+ /* if the filename contains a path, only use filename portion */
+ q = strrchr(p, '/');
+ if(q) {
+ p = q + 1;
+ if(!*p) {
+ Curl_safefree(copy);
+ return NULL;
+ }
+ }
+
+ /* If the filename contains a backslash, only use filename portion. The idea
+ is that even systems that don't handle backslashes as path separators
+ probably want the path removed for convenience. */
+ q = strrchr(p, '\\');
+ if(q) {
+ p = q + 1;
+ if(!*p) {
+ Curl_safefree(copy);
+ return NULL;
+ }
+ }
+
+ /* make sure the file name doesn't end in \r or \n */
+ q = strchr(p, '\r');
+ if(q)
+ *q = '\0';
+
+ q = strchr(p, '\n');
+ if(q)
+ *q = '\0';
+
+ if(copy != p)
+ memmove(copy, p, strlen(p) + 1);
+
+#if defined(MSDOS) || defined(WIN32)
+ {
+ char *sanitized;
+ SANITIZEcode sc = sanitize_file_name(&sanitized, copy, 0);
+ Curl_safefree(copy);
+ if(sc)
+ return NULL;
+ copy = sanitized;
+ }
+#endif /* MSDOS || WIN32 */
+
+ /* in case we built debug enabled, we allow an environment variable
+ * named CURL_TESTDIR to prefix the given file name to put it into a
+ * specific directory
+ */
+#ifdef DEBUGBUILD
+ {
+ char *tdir = curlx_getenv("CURL_TESTDIR");
+ if(tdir) {
+ char buffer[512]; /* suitably large */
+ msnprintf(buffer, sizeof(buffer), "%s/%s", tdir, copy);
+ Curl_safefree(copy);
+ copy = strdup(buffer); /* clone the buffer, we don't use the libcurl
+ aprintf() or similar since we want to use the
+ same memory code as the "real" parse_filename
+ function */
+ curl_free(tdir);
+ }
+ }
+#endif
+
+ return copy;
+}
+
+#ifdef LINK
+/*
+ * Treat the Location: header specially, by writing a special escape
+ * sequence that adds a hyperlink to the displayed text. This makes
+ * the absolute URL of the redirect clickable in supported terminals,
+ * which couldn't happen otherwise for relative URLs. The Location:
+ * header is supposed to always be absolute so this theoretically
+ * shouldn't be needed but the real world returns plenty of relative
+ * URLs here.
+ */
+static
+void write_linked_location(CURL *curl, const char *location, size_t loclen,
+ FILE *stream) {
+ /* This would so simple if CURLINFO_REDIRECT_URL were available here */
+ CURLU *u = NULL;
+ char *copyloc = NULL, *locurl = NULL, *scheme = NULL, *finalurl = NULL;
+ const char *loc = location;
+ size_t llen = loclen;
+
+ /* Strip leading whitespace of the redirect URL */
+ while(llen && *loc == ' ') {
+ ++loc;
+ --llen;
+ }
+
+ /* Strip the trailing end-of-line characters, normally "\r\n" */
+ while(llen && (loc[llen-1] == '\n' || loc[llen-1] == '\r'))
+ --llen;
+
+ /* CURLU makes it easy to handle the relative URL case */
+ u = curl_url();
+ if(!u)
+ goto locout;
+
+ /* Create a NUL-terminated and whitespace-stripped copy of Location: */
+ copyloc = malloc(llen + 1);
+ if(!copyloc)
+ goto locout;
+ memcpy(copyloc, loc, llen);
+ copyloc[llen] = 0;
+
+ /* The original URL to use as a base for a relative redirect URL */
+ if(curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &locurl))
+ goto locout;
+ if(curl_url_set(u, CURLUPART_URL, locurl, 0))
+ goto locout;
+
+ /* Redirected location. This can be either absolute or relative. */
+ if(curl_url_set(u, CURLUPART_URL, copyloc, 0))
+ goto locout;
+
+ if(curl_url_get(u, CURLUPART_URL, &finalurl, CURLU_NO_DEFAULT_PORT))
+ goto locout;
+
+ if(curl_url_get(u, CURLUPART_SCHEME, &scheme, 0))
+ goto locout;
+
+ if(!strcmp("http", scheme) ||
+ !strcmp("https", scheme) ||
+ !strcmp("ftp", scheme) ||
+ !strcmp("ftps", scheme)) {
+ fprintf(stream, LINK "%s" LINKST "%.*s" LINKOFF,
+ finalurl, loclen, location);
+ goto locdone;
+ }
+
+ /* Not a "safe" URL: don't linkify it */
+
+locout:
+ /* Write the normal output in case of error or unsafe */
+ fwrite(location, loclen, 1, stream);
+
+locdone:
+ if(u) {
+ curl_free(finalurl);
+ curl_free(scheme);
+ curl_url_cleanup(u);
+ free(copyloc);
+ }
+}
+#endif
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_cb_hdr.h b/ap/lib/libcurl/curl-7.86.0/src/tool_cb_hdr.h
new file mode 100755
index 0000000..01175bb
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_cb_hdr.h
@@ -0,0 +1,58 @@
+#ifndef HEADER_CURL_TOOL_CB_HDR_H
+#define HEADER_CURL_TOOL_CB_HDR_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+/*
+ * curl operates using a single HdrCbData struct variable, a
+ * pointer to this is passed as userdata pointer to tool_header_cb.
+ *
+ * 'outs' member is a pointer to the OutStruct variable used to keep
+ * track of information relative to curl's output writing.
+ *
+ * 'heads' member is a pointer to the OutStruct variable used to keep
+ * track of information relative to header response writing.
+ *
+ * 'honor_cd_filename' member is TRUE when tool_header_cb is allowed
+ * to honor Content-Disposition filename property and accordingly
+ * set 'outs' filename, otherwise FALSE;
+ */
+
+struct HdrCbData {
+ struct GlobalConfig *global;
+ struct OperationConfig *config;
+ struct OutStruct *outs;
+ struct OutStruct *heads;
+ struct OutStruct *etag_save;
+ bool honor_cd_filename;
+};
+
+/*
+** callback for CURLOPT_HEADERFUNCTION
+*/
+
+size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata);
+
+#endif /* HEADER_CURL_TOOL_CB_HDR_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_cb_prg.c b/ap/lib/libcurl/curl-7.86.0/src/tool_cb_prg.c
new file mode 100755
index 0000000..3532c31
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_cb_prg.c
@@ -0,0 +1,280 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#ifdef HAVE_SYS_IOCTL_H
+#include <sys/ioctl.h>
+#endif
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_cb_prg.h"
+#include "tool_util.h"
+#include "tool_operate.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+#ifdef HAVE_TERMIOS_H
+# include <termios.h>
+#elif defined(HAVE_TERMIO_H)
+# include <termio.h>
+#endif
+
+/* 200 values generated by this perl code:
+
+ my $pi = 3.1415;
+ foreach my $i (1 .. 200) {
+ printf "%d, ", sin($i/200 * 2 * $pi) * 500000 + 500000;
+ }
+*/
+static const unsigned int sinus[] = {
+ 515704, 531394, 547052, 562664, 578214, 593687, 609068, 624341, 639491,
+ 654504, 669364, 684057, 698568, 712883, 726989, 740870, 754513, 767906,
+ 781034, 793885, 806445, 818704, 830647, 842265, 853545, 864476, 875047,
+ 885248, 895069, 904500, 913532, 922156, 930363, 938145, 945495, 952406,
+ 958870, 964881, 970434, 975522, 980141, 984286, 987954, 991139, 993840,
+ 996054, 997778, 999011, 999752, 999999, 999754, 999014, 997783, 996060,
+ 993848, 991148, 987964, 984298, 980154, 975536, 970449, 964898, 958888,
+ 952426, 945516, 938168, 930386, 922180, 913558, 904527, 895097, 885277,
+ 875077, 864507, 853577, 842299, 830682, 818739, 806482, 793922, 781072,
+ 767945, 754553, 740910, 727030, 712925, 698610, 684100, 669407, 654548,
+ 639536, 624386, 609113, 593733, 578260, 562710, 547098, 531440, 515751,
+ 500046, 484341, 468651, 452993, 437381, 421830, 406357, 390976, 375703,
+ 360552, 345539, 330679, 315985, 301474, 287158, 273052, 259170, 245525,
+ 232132, 219003, 206152, 193590, 181331, 169386, 157768, 146487, 135555,
+ 124983, 114781, 104959, 95526, 86493, 77868, 69660, 61876, 54525, 47613,
+ 41147, 35135, 29581, 24491, 19871, 15724, 12056, 8868, 6166, 3951, 2225,
+ 990, 248, 0, 244, 982, 2212, 3933, 6144, 8842, 12025, 15690, 19832, 24448,
+ 29534, 35084, 41092, 47554, 54462, 61809, 69589, 77794, 86415, 95445,
+ 104873, 114692, 124891, 135460, 146389, 157667, 169282, 181224, 193480,
+ 206039, 218888, 232015, 245406, 259048, 272928, 287032, 301346, 315856,
+ 330548, 345407, 360419, 375568, 390841, 406221, 421693, 437243, 452854,
+ 468513, 484202, 499907
+};
+
+static void fly(struct ProgressData *bar, bool moved)
+{
+ char buf[256];
+ int pos;
+ int check = bar->width - 2;
+
+ msnprintf(buf, sizeof(buf), "%*s\r", bar->width-1, " ");
+ memcpy(&buf[bar->bar], "-=O=-", 5);
+
+ pos = sinus[bar->tick%200] / (1000000 / check);
+ buf[pos] = '#';
+ pos = sinus[(bar->tick + 5)%200] / (1000000 / check);
+ buf[pos] = '#';
+ pos = sinus[(bar->tick + 10)%200] / (1000000 / check);
+ buf[pos] = '#';
+ pos = sinus[(bar->tick + 15)%200] / (1000000 / check);
+ buf[pos] = '#';
+
+ fputs(buf, bar->out);
+ bar->tick += 2;
+ if(bar->tick >= 200)
+ bar->tick -= 200;
+
+ bar->bar += (moved?bar->barmove:0);
+ if(bar->bar >= (bar->width - 6)) {
+ bar->barmove = -1;
+ bar->bar = bar->width - 6;
+ }
+ else if(bar->bar < 0) {
+ bar->barmove = 1;
+ bar->bar = 0;
+ }
+}
+
+/*
+** callback for CURLOPT_XFERINFOFUNCTION
+*/
+
+#define MAX_BARLENGTH 256
+
+#if (SIZEOF_CURL_OFF_T == 4)
+# define CURL_OFF_T_MAX CURL_OFF_T_C(0x7FFFFFFF)
+#else
+ /* assume SIZEOF_CURL_OFF_T == 8 */
+# define CURL_OFF_T_MAX CURL_OFF_T_C(0x7FFFFFFFFFFFFFFF)
+#endif
+
+int tool_progress_cb(void *clientp,
+ curl_off_t dltotal, curl_off_t dlnow,
+ curl_off_t ultotal, curl_off_t ulnow)
+{
+ struct timeval now = tvnow();
+ struct per_transfer *per = clientp;
+ struct OperationConfig *config = per->config;
+ struct ProgressData *bar = &per->progressbar;
+ curl_off_t total;
+ curl_off_t point;
+
+ /* Calculate expected transfer size. initial_size can be less than zero when
+ indicating that we are expecting to get the filesize from the remote */
+ if(bar->initial_size < 0) {
+ if(dltotal || ultotal)
+ total = dltotal + ultotal;
+ else
+ total = CURL_OFF_T_MAX;
+ }
+ else if((CURL_OFF_T_MAX - bar->initial_size) < (dltotal + ultotal))
+ total = CURL_OFF_T_MAX;
+ else
+ total = dltotal + ultotal + bar->initial_size;
+
+ /* Calculate the current progress. initial_size can be less than zero when
+ indicating that we are expecting to get the filesize from the remote */
+ if(bar->initial_size < 0) {
+ if(dltotal || ultotal)
+ point = dlnow + ulnow;
+ else
+ point = CURL_OFF_T_MAX;
+ }
+ else if((CURL_OFF_T_MAX - bar->initial_size) < (dlnow + ulnow))
+ point = CURL_OFF_T_MAX;
+ else
+ point = dlnow + ulnow + bar->initial_size;
+
+ if(bar->calls) {
+ /* after first call... */
+ if(total) {
+ /* we know the total data to get... */
+ if(bar->prev == point)
+ /* progress didn't change since last invoke */
+ return 0;
+ else if((tvdiff(now, bar->prevtime) < 100L) && point < total)
+ /* limit progress-bar updating to 10 Hz except when we're at 100% */
+ return 0;
+ }
+ else {
+ /* total is unknown */
+ if(tvdiff(now, bar->prevtime) < 100L)
+ /* limit progress-bar updating to 10 Hz */
+ return 0;
+ fly(bar, point != bar->prev);
+ }
+ }
+
+ /* simply count invokes */
+ bar->calls++;
+
+ if((total > 0) && (point != bar->prev)) {
+ char line[MAX_BARLENGTH + 1];
+ char format[40];
+ double frac;
+ double percent;
+ int barwidth;
+ int num;
+ if(point > total)
+ /* we have got more than the expected total! */
+ total = point;
+
+ frac = (double)point / (double)total;
+ percent = frac * 100.0;
+ barwidth = bar->width - 7;
+ num = (int) (((double)barwidth) * frac);
+ if(num > MAX_BARLENGTH)
+ num = MAX_BARLENGTH;
+ memset(line, '#', num);
+ line[num] = '\0';
+ msnprintf(format, sizeof(format), "\r%%-%ds %%5.1f%%%%", barwidth);
+ fprintf(bar->out, format, line, percent);
+ }
+ fflush(bar->out);
+ bar->prev = point;
+ bar->prevtime = now;
+
+ if(config->readbusy) {
+ config->readbusy = FALSE;
+ curl_easy_pause(per->curl, CURLPAUSE_CONT);
+ }
+
+ return 0;
+}
+
+void progressbarinit(struct ProgressData *bar,
+ struct OperationConfig *config)
+{
+ char *colp;
+ memset(bar, 0, sizeof(struct ProgressData));
+
+ /* pass the resume from value through to the progress function so it can
+ * display progress towards total file not just the part that's left. */
+ if(config->use_resume)
+ bar->initial_size = config->resume_from;
+
+ colp = curlx_getenv("COLUMNS");
+ if(colp) {
+ char *endptr;
+ long num = strtol(colp, &endptr, 10);
+ if((endptr != colp) && (endptr == colp + strlen(colp)) && (num > 20) &&
+ (num < 10000))
+ bar->width = (int)num;
+ curl_free(colp);
+ }
+
+ if(!bar->width) {
+ int cols = 0;
+
+#ifdef TIOCGSIZE
+ struct ttysize ts;
+ if(!ioctl(STDIN_FILENO, TIOCGSIZE, &ts))
+ cols = ts.ts_cols;
+#elif defined(TIOCGWINSZ)
+ struct winsize ts;
+ if(!ioctl(STDIN_FILENO, TIOCGWINSZ, &ts))
+ cols = ts.ws_col;
+#elif defined(WIN32)
+ {
+ HANDLE stderr_hnd = GetStdHandle(STD_ERROR_HANDLE);
+ CONSOLE_SCREEN_BUFFER_INFO console_info;
+
+ if((stderr_hnd != INVALID_HANDLE_VALUE) &&
+ GetConsoleScreenBufferInfo(stderr_hnd, &console_info)) {
+ /*
+ * Do not use +1 to get the true screen-width since writing a
+ * character at the right edge will cause a line wrap.
+ */
+ cols = (int)
+ (console_info.srWindow.Right - console_info.srWindow.Left);
+ }
+ }
+#endif /* TIOCGSIZE */
+ if(cols > 20)
+ bar->width = cols;
+ }
+
+ if(!bar->width)
+ bar->width = 79;
+ else if(bar->width > MAX_BARLENGTH)
+ bar->width = MAX_BARLENGTH;
+
+ bar->out = config->global->errors;
+ bar->tick = 150;
+ bar->barmove = 1;
+}
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_cb_prg.h b/ap/lib/libcurl/curl-7.86.0/src/tool_cb_prg.h
new file mode 100755
index 0000000..7d8fbae
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_cb_prg.h
@@ -0,0 +1,54 @@
+#ifndef HEADER_CURL_TOOL_CB_PRG_H
+#define HEADER_CURL_TOOL_CB_PRG_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#define CURL_PROGRESS_STATS 0 /* default progress display */
+#define CURL_PROGRESS_BAR 1
+
+struct ProgressData {
+ int calls;
+ curl_off_t prev;
+ struct timeval prevtime;
+ int width;
+ FILE *out; /* where to write everything to */
+ curl_off_t initial_size;
+ unsigned int tick;
+ int bar;
+ int barmove;
+};
+
+void progressbarinit(struct ProgressData *bar,
+ struct OperationConfig *config);
+
+/*
+** callback for CURLOPT_PROGRESSFUNCTION
+*/
+
+int tool_progress_cb(void *clientp,
+ curl_off_t dltotal, curl_off_t dlnow,
+ curl_off_t ultotal, curl_off_t ulnow);
+
+#endif /* HEADER_CURL_TOOL_CB_PRG_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_cb_rea.c b/ap/lib/libcurl/curl-7.86.0/src/tool_cb_rea.c
new file mode 100755
index 0000000..4aed55c
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_cb_rea.c
@@ -0,0 +1,81 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_cb_rea.h"
+#include "tool_operate.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+/*
+** callback for CURLOPT_READFUNCTION
+*/
+
+size_t tool_read_cb(char *buffer, size_t sz, size_t nmemb, void *userdata)
+{
+ ssize_t rc;
+ struct InStruct *in = userdata;
+
+ rc = read(in->fd, buffer, sz*nmemb);
+ if(rc < 0) {
+ if(errno == EAGAIN) {
+ errno = 0;
+ in->config->readbusy = TRUE;
+ return CURL_READFUNC_PAUSE;
+ }
+ /* since size_t is unsigned we can't return negative values fine */
+ rc = 0;
+ }
+ in->config->readbusy = FALSE;
+ return (size_t)rc;
+}
+
+/*
+** callback for CURLOPT_XFERINFOFUNCTION used to unpause busy reads
+*/
+
+int tool_readbusy_cb(void *clientp,
+ curl_off_t dltotal, curl_off_t dlnow,
+ curl_off_t ultotal, curl_off_t ulnow)
+{
+ struct per_transfer *per = clientp;
+ struct OperationConfig *config = per->config;
+
+ (void)dltotal; /* unused */
+ (void)dlnow; /* unused */
+ (void)ultotal; /* unused */
+ (void)ulnow; /* unused */
+
+ if(config->readbusy) {
+ config->readbusy = FALSE;
+ curl_easy_pause(per->curl, CURLPAUSE_CONT);
+ }
+
+ return per->noprogress? 0 : CURL_PROGRESSFUNC_CONTINUE;
+}
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_cb_rea.h b/ap/lib/libcurl/curl-7.86.0/src/tool_cb_rea.h
new file mode 100755
index 0000000..81b5f87
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_cb_rea.h
@@ -0,0 +1,42 @@
+#ifndef HEADER_CURL_TOOL_CB_REA_H
+#define HEADER_CURL_TOOL_CB_REA_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+/*
+** callback for CURLOPT_READFUNCTION
+*/
+
+size_t tool_read_cb(char *buffer, size_t sz, size_t nmemb, void *userdata);
+
+/*
+** callback for CURLOPT_XFERINFOFUNCTION used to unpause busy reads
+*/
+
+int tool_readbusy_cb(void *clientp,
+ curl_off_t dltotal, curl_off_t dlnow,
+ curl_off_t ultotal, curl_off_t ulnow);
+
+#endif /* HEADER_CURL_TOOL_CB_REA_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_cb_see.c b/ap/lib/libcurl/curl-7.86.0/src/tool_cb_see.c
new file mode 100755
index 0000000..d24d526
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_cb_see.c
@@ -0,0 +1,135 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_cb_see.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+/* OUR_MAX_SEEK_L has 'long' data type, OUR_MAX_SEEK_O has 'curl_off_t,
+ both represent the same value. Maximum offset used here when we lseek
+ using a 'long' data type offset */
+
+#define OUR_MAX_SEEK_L 2147483647L - 1L
+#define OUR_MAX_SEEK_O CURL_OFF_T_C(0x7FFFFFFF) - CURL_OFF_T_C(0x1)
+
+/*
+** callback for CURLOPT_SEEKFUNCTION
+**
+** Notice that this is not supposed to return the resulting offset. This
+** shall only return CURL_SEEKFUNC_* return codes.
+*/
+
+int tool_seek_cb(void *userdata, curl_off_t offset, int whence)
+{
+ struct InStruct *in = userdata;
+
+#if(SIZEOF_CURL_OFF_T > SIZEOF_OFF_T) && !defined(USE_WIN32_LARGE_FILES)
+
+ /* The offset check following here is only interesting if curl_off_t is
+ larger than off_t and we are not using the WIN32 large file support
+ macros that provide the support to do 64bit seeks correctly */
+
+ if(offset > OUR_MAX_SEEK_O) {
+ /* Some precaution code to work around problems with different data sizes
+ to allow seeking >32bit even if off_t is 32bit. Should be very rare and
+ is really valid on weirdo-systems. */
+ curl_off_t left = offset;
+
+ if(whence != SEEK_SET)
+ /* this code path doesn't support other types */
+ return CURL_SEEKFUNC_FAIL;
+
+ if(LSEEK_ERROR == lseek(in->fd, 0, SEEK_SET))
+ /* couldn't rewind to beginning */
+ return CURL_SEEKFUNC_FAIL;
+
+ while(left) {
+ long step = (left > OUR_MAX_SEEK_O) ? OUR_MAX_SEEK_L : (long)left;
+ if(LSEEK_ERROR == lseek(in->fd, step, SEEK_CUR))
+ /* couldn't seek forwards the desired amount */
+ return CURL_SEEKFUNC_FAIL;
+ left -= step;
+ }
+ return CURL_SEEKFUNC_OK;
+ }
+#endif
+
+ if(LSEEK_ERROR == lseek(in->fd, offset, whence))
+ /* couldn't rewind, the reason is in errno but errno is just not portable
+ enough and we don't actually care that much why we failed. We'll let
+ libcurl know that it may try other means if it wants to. */
+ return CURL_SEEKFUNC_CANTSEEK;
+
+ return CURL_SEEKFUNC_OK;
+}
+
+#ifdef USE_TOOL_FTRUNCATE
+
+#ifdef __BORLANDC__
+/* 64-bit lseek-like function unavailable */
+# define _lseeki64(hnd,ofs,whence) lseek(hnd,ofs,whence)
+#endif
+
+#ifdef __POCC__
+# if(__POCC__ < 450)
+/* 64-bit lseek-like function unavailable */
+# define _lseeki64(hnd,ofs,whence) _lseek(hnd,ofs,whence)
+# else
+# undef _lseeki64
+# define _lseeki64(hnd,ofs,whence) _lseek64(hnd,ofs,whence)
+# endif
+#endif
+
+#ifdef _WIN32_WCE
+/* 64-bit lseek-like function unavailable */
+# undef _lseeki64
+# define _lseeki64(hnd,ofs,whence) lseek(hnd,ofs,whence)
+# undef _get_osfhandle
+# define _get_osfhandle(fd) (fd)
+#endif
+
+/*
+ * Truncate a file handle at a 64-bit position 'where'.
+ */
+
+int tool_ftruncate64(int fd, curl_off_t where)
+{
+ intptr_t handle = _get_osfhandle(fd);
+
+ if(_lseeki64(fd, where, SEEK_SET) < 0)
+ return -1;
+
+ if(!SetEndOfFile((HANDLE)handle))
+ return -1;
+
+ return 0;
+}
+
+#endif /* USE_TOOL_FTRUNCATE */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_cb_see.h b/ap/lib/libcurl/curl-7.86.0/src/tool_cb_see.h
new file mode 100755
index 0000000..4af0b0a
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_cb_see.h
@@ -0,0 +1,46 @@
+#ifndef HEADER_CURL_TOOL_CB_SEE_H
+#define HEADER_CURL_TOOL_CB_SEE_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#if defined(WIN32) && !defined(HAVE_FTRUNCATE)
+
+int tool_ftruncate64(int fd, curl_off_t where);
+
+#undef ftruncate
+#define ftruncate(fd,where) tool_ftruncate64(fd,where)
+
+#define HAVE_FTRUNCATE 1
+#define USE_TOOL_FTRUNCATE 1
+
+#endif /* WIN32 && ! HAVE_FTRUNCATE */
+
+/*
+** callback for CURLOPT_SEEKFUNCTION
+*/
+
+int tool_seek_cb(void *userdata, curl_off_t offset, int whence);
+
+#endif /* HEADER_CURL_TOOL_CB_SEE_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_cb_wrt.c b/ap/lib/libcurl/curl-7.86.0/src/tool_cb_wrt.c
new file mode 100755
index 0000000..c9d1dbd
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_cb_wrt.c
@@ -0,0 +1,296 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#ifdef HAVE_FCNTL_H
+/* for open() */
+#include <fcntl.h>
+#endif
+
+#include <sys/stat.h>
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_msgs.h"
+#include "tool_cb_wrt.h"
+#include "tool_operate.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+#ifdef WIN32
+#define OPENMODE S_IREAD | S_IWRITE
+#else
+#define OPENMODE S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH
+#endif
+
+/* create/open a local file for writing, return TRUE on success */
+bool tool_create_output_file(struct OutStruct *outs,
+ struct OperationConfig *config)
+{
+ struct GlobalConfig *global;
+ FILE *file = NULL;
+ char *fname = outs->filename;
+ char *aname = NULL;
+ DEBUGASSERT(outs);
+ DEBUGASSERT(config);
+ global = config->global;
+ if(!fname || !*fname) {
+ warnf(global, "Remote filename has no length!\n");
+ return FALSE;
+ }
+
+ if(config->output_dir && outs->is_cd_filename) {
+ aname = aprintf("%s/%s", config->output_dir, fname);
+ if(!aname) {
+ errorf(global, "out of memory\n");
+ return FALSE;
+ }
+ fname = aname;
+ }
+
+ if(config->file_clobber_mode == CLOBBER_ALWAYS ||
+ (config->file_clobber_mode == CLOBBER_DEFAULT &&
+ !outs->is_cd_filename)) {
+ /* open file for writing */
+ file = fopen(fname, "wb");
+ }
+ else {
+ int fd;
+ do {
+ fd = open(fname, O_CREAT | O_WRONLY | O_EXCL | O_BINARY, OPENMODE);
+ /* Keep retrying in the hope that it isn't interrupted sometime */
+ } while(fd == -1 && errno == EINTR);
+ if(config->file_clobber_mode == CLOBBER_NEVER && fd == -1) {
+ int next_num = 1;
+ size_t len = strlen(fname);
+ size_t newlen = len + 13; /* nul + 1-11 digits + dot */
+ char *newname;
+ /* Guard against wraparound in new filename */
+ if(newlen < len) {
+ free(aname);
+ errorf(global, "overflow in filename generation\n");
+ return FALSE;
+ }
+ newname = malloc(newlen);
+ if(!newname) {
+ errorf(global, "out of memory\n");
+ free(aname);
+ return FALSE;
+ }
+ memcpy(newname, fname, len);
+ newname[len] = '.';
+ while(fd == -1 && /* haven't successfully opened a file */
+ (errno == EEXIST || errno == EISDIR) &&
+ /* because we keep having files that already exist */
+ next_num < 100 /* and we haven't reached the retry limit */ ) {
+ curlx_msnprintf(newname + len + 1, 12, "%d", next_num);
+ next_num++;
+ do {
+ fd = open(newname, O_CREAT | O_WRONLY | O_EXCL | O_BINARY, OPENMODE);
+ /* Keep retrying in the hope that it isn't interrupted sometime */
+ } while(fd == -1 && errno == EINTR);
+ }
+ outs->filename = newname; /* remember the new one */
+ outs->alloc_filename = TRUE;
+ }
+ /* An else statement to not overwrite existing files and not retry with
+ new numbered names (which would cover
+ config->file_clobber_mode == CLOBBER_DEFAULT && outs->is_cd_filename)
+ is not needed because we would have failed earlier, in the while loop
+ and `fd` would now be -1 */
+ if(fd != -1) {
+ file = fdopen(fd, "wb");
+ if(!file)
+ close(fd);
+ }
+ }
+
+ if(!file) {
+ warnf(global, "Failed to open the file %s: %s\n", fname,
+ strerror(errno));
+ free(aname);
+ return FALSE;
+ }
+ free(aname);
+ outs->s_isreg = TRUE;
+ outs->fopened = TRUE;
+ outs->stream = file;
+ outs->bytes = 0;
+ outs->init = 0;
+ return TRUE;
+}
+
+/*
+** callback for CURLOPT_WRITEFUNCTION
+*/
+
+size_t tool_write_cb(char *buffer, size_t sz, size_t nmemb, void *userdata)
+{
+ size_t rc;
+ struct per_transfer *per = userdata;
+ struct OutStruct *outs = &per->outs;
+ struct OperationConfig *config = per->config;
+ size_t bytes = sz * nmemb;
+ bool is_tty = config->global->isatty;
+#ifdef WIN32
+ CONSOLE_SCREEN_BUFFER_INFO console_info;
+ intptr_t fhnd;
+#endif
+
+ /*
+ * Once that libcurl has called back tool_write_cb() the returned value
+ * is checked against the amount that was intended to be written, if
+ * it does not match then it fails with CURLE_WRITE_ERROR. So at this
+ * point returning a value different from sz*nmemb indicates failure.
+ */
+ const size_t failure = bytes ? 0 : 1;
+
+#ifdef DEBUGBUILD
+ {
+ char *tty = curlx_getenv("CURL_ISATTY");
+ if(tty) {
+ is_tty = TRUE;
+ curl_free(tty);
+ }
+ }
+
+ if(config->show_headers) {
+ if(bytes > (size_t)CURL_MAX_HTTP_HEADER) {
+ warnf(config->global, "Header data size exceeds single call write "
+ "limit!\n");
+ return failure;
+ }
+ }
+ else {
+ if(bytes > (size_t)CURL_MAX_WRITE_SIZE) {
+ warnf(config->global, "Data size exceeds single call write limit!\n");
+ return failure;
+ }
+ }
+
+ {
+ /* Some internal congruency checks on received OutStruct */
+ bool check_fails = FALSE;
+ if(outs->filename) {
+ /* regular file */
+ if(!*outs->filename)
+ check_fails = TRUE;
+ if(!outs->s_isreg)
+ check_fails = TRUE;
+ if(outs->fopened && !outs->stream)
+ check_fails = TRUE;
+ if(!outs->fopened && outs->stream)
+ check_fails = TRUE;
+ if(!outs->fopened && outs->bytes)
+ check_fails = TRUE;
+ }
+ else {
+ /* standard stream */
+ if(!outs->stream || outs->s_isreg || outs->fopened)
+ check_fails = TRUE;
+ if(outs->alloc_filename || outs->is_cd_filename || outs->init)
+ check_fails = TRUE;
+ }
+ if(check_fails) {
+ warnf(config->global, "Invalid output struct data for write callback\n");
+ return failure;
+ }
+ }
+#endif
+
+ if(!outs->stream && !tool_create_output_file(outs, per->config))
+ return failure;
+
+ if(is_tty && (outs->bytes < 2000) && !config->terminal_binary_ok) {
+ /* binary output to terminal? */
+ if(memchr(buffer, 0, bytes)) {
+ warnf(config->global, "Binary output can mess up your terminal. "
+ "Use \"--output -\" to tell curl to output it to your terminal "
+ "anyway, or consider \"--output <FILE>\" to save to a file.\n");
+ config->synthetic_error = TRUE;
+ return failure;
+ }
+ }
+
+#ifdef WIN32
+ fhnd = _get_osfhandle(fileno(outs->stream));
+ if(isatty(fileno(outs->stream)) &&
+ GetConsoleScreenBufferInfo((HANDLE)fhnd, &console_info)) {
+ DWORD in_len = (DWORD)(sz * nmemb);
+ wchar_t* wc_buf;
+ DWORD wc_len;
+
+ /* calculate buffer size for wide characters */
+ wc_len = MultiByteToWideChar(CP_UTF8, 0, buffer, in_len, NULL, 0);
+ wc_buf = (wchar_t*) malloc(wc_len * sizeof(wchar_t));
+ if(!wc_buf)
+ return failure;
+
+ /* calculate buffer size for multi-byte characters */
+ wc_len = MultiByteToWideChar(CP_UTF8, 0, buffer, in_len, wc_buf, wc_len);
+ if(!wc_len) {
+ free(wc_buf);
+ return failure;
+ }
+
+ if(!WriteConsoleW(
+ (HANDLE) fhnd,
+ wc_buf,
+ wc_len,
+ &wc_len,
+ NULL)) {
+ free(wc_buf);
+ return failure;
+ }
+ free(wc_buf);
+ rc = bytes;
+ }
+ else
+#endif
+ rc = fwrite(buffer, sz, nmemb, outs->stream);
+
+ if(bytes == rc)
+ /* we added this amount of data to the output */
+ outs->bytes += bytes;
+
+ if(config->readbusy) {
+ config->readbusy = FALSE;
+ curl_easy_pause(per->curl, CURLPAUSE_CONT);
+ }
+
+ if(config->nobuffer) {
+ /* output buffering disabled */
+ int res = fflush(outs->stream);
+ if(res)
+ return failure;
+ }
+
+ return rc;
+}
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_cb_wrt.h b/ap/lib/libcurl/curl-7.86.0/src/tool_cb_wrt.h
new file mode 100755
index 0000000..0cbbcee
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_cb_wrt.h
@@ -0,0 +1,38 @@
+#ifndef HEADER_CURL_TOOL_CB_WRT_H
+#define HEADER_CURL_TOOL_CB_WRT_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+/*
+** callback for CURLOPT_WRITEFUNCTION
+*/
+
+size_t tool_write_cb(char *buffer, size_t sz, size_t nmemb, void *userdata);
+
+/* create a local file for writing, return TRUE on success */
+bool tool_create_output_file(struct OutStruct *outs,
+ struct OperationConfig *config);
+
+#endif /* HEADER_CURL_TOOL_CB_WRT_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_cfgable.c b/ap/lib/libcurl/curl-7.86.0/src/tool_cfgable.c
new file mode 100755
index 0000000..eccb3bc
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_cfgable.c
@@ -0,0 +1,188 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#include "tool_cfgable.h"
+#include "tool_main.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+void config_init(struct OperationConfig *config)
+{
+ memset(config, 0, sizeof(struct OperationConfig));
+
+ config->postfieldsize = -1;
+ config->use_httpget = FALSE;
+ config->create_dirs = FALSE;
+ config->maxredirs = DEFAULT_MAXREDIRS;
+ config->proto_present = FALSE;
+ config->proto_redir_present = FALSE;
+ config->proto_default = NULL;
+ config->tcp_nodelay = TRUE; /* enabled by default */
+ config->happy_eyeballs_timeout_ms = CURL_HET_DEFAULT;
+ config->http09_allowed = FALSE;
+ config->ftp_skip_ip = TRUE;
+ config->file_clobber_mode = CLOBBER_DEFAULT;
+}
+
+static void free_config_fields(struct OperationConfig *config)
+{
+ struct getout *urlnode;
+
+ Curl_safefree(config->useragent);
+ Curl_safefree(config->altsvc);
+ Curl_safefree(config->hsts);
+ curl_slist_free_all(config->cookies);
+ Curl_safefree(config->cookiejar);
+ curl_slist_free_all(config->cookiefiles);
+
+ Curl_safefree(config->postfields);
+ Curl_safefree(config->referer);
+
+ Curl_safefree(config->headerfile);
+ Curl_safefree(config->ftpport);
+ Curl_safefree(config->iface);
+
+ Curl_safefree(config->range);
+
+ Curl_safefree(config->userpwd);
+ Curl_safefree(config->tls_username);
+ Curl_safefree(config->tls_password);
+ Curl_safefree(config->tls_authtype);
+ Curl_safefree(config->proxy_tls_username);
+ Curl_safefree(config->proxy_tls_password);
+ Curl_safefree(config->proxy_tls_authtype);
+ Curl_safefree(config->proxyuserpwd);
+ Curl_safefree(config->proxy);
+
+ Curl_safefree(config->dns_ipv6_addr);
+ Curl_safefree(config->dns_ipv4_addr);
+ Curl_safefree(config->dns_interface);
+ Curl_safefree(config->dns_servers);
+
+ Curl_safefree(config->noproxy);
+
+ Curl_safefree(config->mail_from);
+ curl_slist_free_all(config->mail_rcpt);
+ Curl_safefree(config->mail_auth);
+
+ Curl_safefree(config->netrc_file);
+ Curl_safefree(config->output_dir);
+
+ urlnode = config->url_list;
+ while(urlnode) {
+ struct getout *next = urlnode->next;
+ Curl_safefree(urlnode->url);
+ Curl_safefree(urlnode->outfile);
+ Curl_safefree(urlnode->infile);
+ Curl_safefree(urlnode);
+ urlnode = next;
+ }
+ config->url_list = NULL;
+ config->url_last = NULL;
+ config->url_get = NULL;
+ config->url_out = NULL;
+
+ Curl_safefree(config->doh_url);
+ Curl_safefree(config->cipher_list);
+ Curl_safefree(config->proxy_cipher_list);
+ Curl_safefree(config->cert);
+ Curl_safefree(config->proxy_cert);
+ Curl_safefree(config->cert_type);
+ Curl_safefree(config->proxy_cert_type);
+ Curl_safefree(config->cacert);
+ Curl_safefree(config->login_options);
+ Curl_safefree(config->proxy_cacert);
+ Curl_safefree(config->capath);
+ Curl_safefree(config->proxy_capath);
+ Curl_safefree(config->crlfile);
+ Curl_safefree(config->pinnedpubkey);
+ Curl_safefree(config->proxy_pinnedpubkey);
+ Curl_safefree(config->proxy_crlfile);
+ Curl_safefree(config->key);
+ Curl_safefree(config->proxy_key);
+ Curl_safefree(config->key_type);
+ Curl_safefree(config->proxy_key_type);
+ Curl_safefree(config->key_passwd);
+ Curl_safefree(config->proxy_key_passwd);
+ Curl_safefree(config->pubkey);
+ Curl_safefree(config->hostpubmd5);
+ Curl_safefree(config->hostpubsha256);
+ Curl_safefree(config->engine);
+ Curl_safefree(config->etag_save_file);
+ Curl_safefree(config->etag_compare_file);
+ Curl_safefree(config->request_target);
+ Curl_safefree(config->customrequest);
+ Curl_safefree(config->krblevel);
+
+ Curl_safefree(config->oauth_bearer);
+ Curl_safefree(config->sasl_authzid);
+
+ Curl_safefree(config->unix_socket_path);
+ Curl_safefree(config->writeout);
+ Curl_safefree(config->proto_default);
+
+ curl_slist_free_all(config->quote);
+ curl_slist_free_all(config->postquote);
+ curl_slist_free_all(config->prequote);
+
+ curl_slist_free_all(config->headers);
+ curl_slist_free_all(config->proxyheaders);
+
+ curl_mime_free(config->mimepost);
+ config->mimepost = NULL;
+ tool_mime_free(config->mimeroot);
+ config->mimeroot = NULL;
+ config->mimecurrent = NULL;
+
+ curl_slist_free_all(config->telnet_options);
+ curl_slist_free_all(config->resolve);
+ curl_slist_free_all(config->connect_to);
+
+ Curl_safefree(config->preproxy);
+ Curl_safefree(config->proxy_service_name);
+ Curl_safefree(config->service_name);
+
+ Curl_safefree(config->ftp_account);
+ Curl_safefree(config->ftp_alternative_to_user);
+
+ Curl_safefree(config->aws_sigv4);
+ Curl_safefree(config->proto_str);
+ Curl_safefree(config->proto_redir_str);
+}
+
+void config_free(struct OperationConfig *config)
+{
+ struct OperationConfig *last = config;
+
+ /* Free each of the structures in reverse order */
+ while(last) {
+ struct OperationConfig *prev = last->prev;
+
+ free_config_fields(last);
+ free(last);
+
+ last = prev;
+ }
+}
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_cfgable.h b/ap/lib/libcurl/curl-7.86.0/src/tool_cfgable.h
new file mode 100755
index 0000000..c26cddd
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_cfgable.h
@@ -0,0 +1,337 @@
+#ifndef HEADER_CURL_TOOL_CFGABLE_H
+#define HEADER_CURL_TOOL_CFGABLE_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+#include "tool_sdecls.h"
+#include "tool_urlglob.h"
+#include "tool_formparse.h"
+
+struct GlobalConfig;
+
+struct State {
+ struct getout *urlnode;
+ struct URLGlob *inglob;
+ struct URLGlob *urls;
+ char *outfiles;
+ char *httpgetfields;
+ char *uploadfile;
+ unsigned long infilenum; /* number of files to upload */
+ unsigned long up; /* upload file counter within a single upload glob */
+ unsigned long urlnum; /* how many iterations this single URL has with ranges
+ etc */
+ unsigned long li;
+};
+
+struct OperationConfig {
+ bool remote_time;
+ char *useragent;
+ struct curl_slist *cookies; /* cookies to serialize into a single line */
+ char *cookiejar; /* write to this file */
+ struct curl_slist *cookiefiles; /* file(s) to load cookies from */
+ char *altsvc; /* alt-svc cache file name */
+ char *hsts; /* HSTS cache file name */
+ bool cookiesession; /* new session? */
+ bool encoding; /* Accept-Encoding please */
+ bool tr_encoding; /* Transfer-Encoding please */
+ unsigned long authtype; /* auth bitmask */
+ bool use_resume;
+ bool resume_from_current;
+ bool disable_epsv;
+ bool disable_eprt;
+ bool ftp_pret;
+ char *proto_str;
+ bool proto_present;
+ char *proto_redir_str;
+ bool proto_redir_present;
+ char *proto_default;
+ curl_off_t resume_from;
+ char *postfields;
+ curl_off_t postfieldsize;
+ char *referer;
+ double timeout;
+ double connecttimeout;
+ long maxredirs;
+ curl_off_t max_filesize;
+ char *output_dir;
+ char *headerfile;
+ char *ftpport;
+ char *iface;
+ long localport;
+ long localportrange;
+ unsigned short porttouse;
+ char *range;
+ long low_speed_limit;
+ long low_speed_time;
+ char *dns_servers; /* dot notation: 1.1.1.1;2.2.2.2 */
+ char *dns_interface; /* interface name */
+ char *dns_ipv4_addr; /* dot notation */
+ char *dns_ipv6_addr; /* dot notation */
+ char *userpwd;
+ char *login_options;
+ char *tls_username;
+ char *tls_password;
+ char *tls_authtype;
+ char *proxy_tls_username;
+ char *proxy_tls_password;
+ char *proxy_tls_authtype;
+ char *proxyuserpwd;
+ char *proxy;
+ int proxyver; /* set to CURLPROXY_HTTP* define */
+ char *noproxy;
+ char *mail_from;
+ struct curl_slist *mail_rcpt;
+ char *mail_auth;
+ bool mail_rcpt_allowfails; /* --mail-rcpt-allowfails */
+ char *sasl_authzid; /* Authorization identity (identity to use) */
+ bool sasl_ir; /* Enable/disable SASL initial response */
+ bool proxytunnel;
+ bool ftp_append; /* APPE on ftp */
+ bool use_ascii; /* select ascii or text transfer */
+ bool autoreferer; /* automatically set referer */
+ bool failonerror; /* fail on (HTTP) errors */
+ bool failwithbody; /* fail on (HTTP) errors but still store body */
+ bool show_headers; /* show headers to data output */
+ bool no_body; /* don't get the body */
+ bool dirlistonly; /* only get the FTP dir list */
+ bool followlocation; /* follow http redirects */
+ bool unrestricted_auth; /* Continue to send authentication (user+password)
+ when following ocations, even when hostname
+ changed */
+ bool netrc_opt;
+ bool netrc;
+ char *netrc_file;
+ struct getout *url_list; /* point to the first node */
+ struct getout *url_last; /* point to the last/current node */
+ struct getout *url_get; /* point to the node to fill in URL */
+ struct getout *url_out; /* point to the node to fill in outfile */
+ struct getout *url_ul; /* point to the node to fill in upload */
+ char *doh_url;
+ char *cipher_list;
+ char *proxy_cipher_list;
+ char *cipher13_list;
+ char *proxy_cipher13_list;
+ char *cert;
+ char *proxy_cert;
+ char *cert_type;
+ char *proxy_cert_type;
+ char *cacert;
+ char *proxy_cacert;
+ char *capath;
+ char *proxy_capath;
+ char *crlfile;
+ char *proxy_crlfile;
+ char *pinnedpubkey;
+ char *proxy_pinnedpubkey;
+ char *key;
+ char *proxy_key;
+ char *key_type;
+ char *proxy_key_type;
+ char *key_passwd;
+ char *proxy_key_passwd;
+ char *pubkey;
+ char *hostpubmd5;
+ char *hostpubsha256;
+ char *engine;
+ char *etag_save_file;
+ char *etag_compare_file;
+ bool crlf;
+ char *customrequest;
+ char *ssl_ec_curves;
+ char *krblevel;
+ char *request_target;
+ long httpversion;
+ bool http09_allowed;
+ bool nobuffer;
+ bool readbusy; /* set when reading input returns EAGAIN */
+ bool globoff;
+ bool use_httpget;
+ bool insecure_ok; /* set TRUE to allow insecure SSL connects */
+ bool doh_insecure_ok; /* set TRUE to allow insecure SSL connects
+ for DoH */
+ bool proxy_insecure_ok; /* set TRUE to allow insecure SSL connects
+ for proxy */
+ bool terminal_binary_ok;
+ bool verifystatus;
+ bool doh_verifystatus;
+ bool create_dirs;
+ bool ftp_create_dirs;
+ bool ftp_skip_ip;
+ bool proxynegotiate;
+ bool proxyntlm;
+ bool proxydigest;
+ bool proxybasic;
+ bool proxyanyauth;
+ bool jsoned; /* added json content-type */
+ char *writeout; /* %-styled format string to output */
+ struct curl_slist *quote;
+ struct curl_slist *postquote;
+ struct curl_slist *prequote;
+ long ssl_version;
+ long ssl_version_max;
+ long proxy_ssl_version;
+ long ip_version;
+ long create_file_mode; /* CURLOPT_NEW_FILE_PERMS */
+ curl_TimeCond timecond;
+ curl_off_t condtime;
+ struct curl_slist *headers;
+ struct curl_slist *proxyheaders;
+ struct tool_mime *mimeroot;
+ struct tool_mime *mimecurrent;
+ curl_mime *mimepost;
+ struct curl_slist *telnet_options;
+ struct curl_slist *resolve;
+ struct curl_slist *connect_to;
+ HttpReq httpreq;
+
+ /* for bandwidth limiting features: */
+ curl_off_t sendpersecond; /* send to peer */
+ curl_off_t recvpersecond; /* receive from peer */
+
+ bool ftp_ssl;
+ bool ftp_ssl_reqd;
+ bool ftp_ssl_control;
+ bool ftp_ssl_ccc;
+ int ftp_ssl_ccc_mode;
+ char *preproxy;
+ int socks5_gssapi_nec; /* The NEC reference server does not protect the
+ encryption type exchange */
+ unsigned long socks5_auth;/* auth bitmask for socks5 proxies */
+ char *proxy_service_name; /* set authentication service name for HTTP and
+ SOCKS5 proxies */
+ char *service_name; /* set authentication service name for DIGEST-MD5,
+ Kerberos 5 and SPNEGO */
+
+ bool tcp_nodelay;
+ bool tcp_fastopen;
+ long req_retry; /* number of retries */
+ bool retry_all_errors; /* retry on any error */
+ bool retry_connrefused; /* set connection refused as a transient error */
+ long retry_delay; /* delay between retries (in seconds) */
+ long retry_maxtime; /* maximum time to keep retrying */
+
+ char *ftp_account; /* for ACCT */
+ char *ftp_alternative_to_user; /* send command if USER/PASS fails */
+ int ftp_filemethod;
+ long mime_options; /* Mime option flags. */
+ long tftp_blksize; /* TFTP BLKSIZE option */
+ bool tftp_no_options; /* do not send TFTP options requests */
+ bool ignorecl; /* --ignore-content-length */
+ bool disable_sessionid;
+
+ bool raw;
+ bool post301;
+ bool post302;
+ bool post303;
+ bool nokeepalive; /* for keepalive needs */
+ long alivetime;
+ bool content_disposition; /* use Content-disposition filename */
+
+ int default_node_flags; /* default flags to search for each 'node', which
+ is basically each given URL to transfer */
+
+ bool xattr; /* store metadata in extended attributes */
+ long gssapi_delegation;
+ bool ssl_allow_beast; /* allow this SSL vulnerability */
+ bool proxy_ssl_allow_beast; /* allow this SSL vulnerability for proxy*/
+
+ bool ssl_no_revoke; /* disable SSL certificate revocation checks */
+ /*bool proxy_ssl_no_revoke; */
+
+ bool ssl_revoke_best_effort; /* ignore SSL revocation offline/missing
+ revocation list errors */
+
+ bool native_ca_store; /* use the native os ca store */
+ bool ssl_auto_client_cert; /* automatically locate and use a client
+ certificate for authentication (Schannel) */
+ bool proxy_ssl_auto_client_cert; /* proxy version of ssl_auto_client_cert */
+ char *oauth_bearer; /* OAuth 2.0 bearer token */
+ bool noalpn; /* enable/disable TLS ALPN extension */
+ char *unix_socket_path; /* path to Unix domain socket */
+ bool abstract_unix_socket; /* path to an abstract Unix domain socket */
+ bool falsestart;
+ bool path_as_is;
+ double expect100timeout;
+ bool suppress_connect_headers; /* suppress proxy CONNECT response headers
+ from user callbacks */
+ bool synthetic_error; /* if TRUE, this is tool-internal error */
+ bool ssh_compression; /* enable/disable SSH compression */
+ long happy_eyeballs_timeout_ms; /* happy eyeballs timeout in milliseconds.
+ 0 is valid. default: CURL_HET_DEFAULT. */
+ bool haproxy_protocol; /* whether to send HAProxy protocol v1 */
+ bool disallow_username_in_url; /* disallow usernames in URLs */
+ char *aws_sigv4;
+ enum {
+ CLOBBER_DEFAULT, /* Provides compatibility with previous versions of curl,
+ by using the default behavior for -o, -O, and -J.
+ If those options would have overwritten files, like
+ -o and -O would, then overwrite them. In the case of
+ -J, this will not overwrite any files. */
+ CLOBBER_NEVER, /* If the file exists, always fail */
+ CLOBBER_ALWAYS /* If the file exists, always overwrite it */
+ } file_clobber_mode;
+ struct GlobalConfig *global;
+ struct OperationConfig *prev;
+ struct OperationConfig *next; /* Always last in the struct */
+ struct State state; /* for create_transfer() */
+ bool rm_partial; /* on error, remove partially written output
+ files */
+};
+
+struct GlobalConfig {
+ int showerror; /* -1 == unset, default => show errors
+ 0 => -s is used to NOT show errors
+ 1 => -S has been used to show errors */
+ bool mute; /* don't show messages, --silent given */
+ bool noprogress; /* don't show progress bar --silent given */
+ bool isatty; /* Updated internally if output is a tty */
+ FILE *errors; /* Error stream, defaults to stderr */
+ bool errors_fopened; /* Whether error stream isn't stderr */
+ char *trace_dump; /* file to dump the network trace to */
+ FILE *trace_stream;
+ bool trace_fopened;
+ trace tracetype;
+ bool tracetime; /* include timestamp? */
+ int progressmode; /* CURL_PROGRESS_BAR / CURL_PROGRESS_STATS */
+ char *libcurl; /* Output libcurl code to this file name */
+ bool fail_early; /* exit on first transfer error */
+ bool styled_output; /* enable fancy output style detection */
+ long ms_per_transfer; /* start next transfer after (at least) this
+ many milliseconds */
+#ifdef CURLDEBUG
+ bool test_event_based;
+#endif
+ bool parallel;
+ long parallel_max;
+ bool parallel_connect;
+ char *help_category; /* The help category, if set */
+ struct OperationConfig *first;
+ struct OperationConfig *current;
+ struct OperationConfig *last; /* Always last in the struct */
+};
+
+void config_init(struct OperationConfig *config);
+void config_free(struct OperationConfig *config);
+
+#endif /* HEADER_CURL_TOOL_CFGABLE_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_dirhie.c b/ap/lib/libcurl/curl-7.86.0/src/tool_dirhie.c
new file mode 100755
index 0000000..1b6ac17
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_dirhie.c
@@ -0,0 +1,172 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#include <sys/stat.h>
+
+#ifdef WIN32
+# include <direct.h>
+#endif
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_dirhie.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+#ifdef NETWARE
+# ifndef __NOVELL_LIBC__
+# define mkdir mkdir_510
+# endif
+#endif
+
+#if defined(WIN32) || (defined(MSDOS) && !defined(__DJGPP__))
+# define mkdir(x,y) (mkdir)((x))
+# ifndef F_OK
+# define F_OK 0
+# endif
+#endif
+
+static void show_dir_errno(FILE *errors, const char *name)
+{
+ switch(errno) {
+#ifdef EACCES
+ case EACCES:
+ fprintf(errors, "You don't have permission to create %s.\n", name);
+ break;
+#endif
+#ifdef ENAMETOOLONG
+ case ENAMETOOLONG:
+ fprintf(errors, "The directory name %s is too long.\n", name);
+ break;
+#endif
+#ifdef EROFS
+ case EROFS:
+ fprintf(errors, "%s resides on a read-only file system.\n", name);
+ break;
+#endif
+#ifdef ENOSPC
+ case ENOSPC:
+ fprintf(errors, "No space left on the file system that will "
+ "contain the directory %s.\n", name);
+ break;
+#endif
+#ifdef EDQUOT
+ case EDQUOT:
+ fprintf(errors, "Cannot create directory %s because you "
+ "exceeded your quota.\n", name);
+ break;
+#endif
+ default :
+ fprintf(errors, "Error creating directory %s.\n", name);
+ break;
+ }
+}
+
+/*
+ * Create the needed directory hierarchy recursively in order to save
+ * multi-GETs in file output, ie:
+ * curl "http://my.site/dir[1-5]/file[1-5].txt" -o "dir#1/file#2.txt"
+ * should create all the dir* automagically
+ */
+
+#if defined(WIN32) || defined(__DJGPP__)
+/* systems that may use either or when specifying a path */
+#define PATH_DELIMITERS "\\/"
+#else
+#define PATH_DELIMITERS DIR_CHAR
+#endif
+
+
+CURLcode create_dir_hierarchy(const char *outfile, FILE *errors)
+{
+ char *tempdir;
+ char *tempdir2;
+ char *outdup;
+ char *dirbuildup;
+ CURLcode result = CURLE_OK;
+ size_t outlen;
+
+ outlen = strlen(outfile);
+ outdup = strdup(outfile);
+ if(!outdup)
+ return CURLE_OUT_OF_MEMORY;
+
+ dirbuildup = malloc(outlen + 1);
+ if(!dirbuildup) {
+ Curl_safefree(outdup);
+ return CURLE_OUT_OF_MEMORY;
+ }
+ dirbuildup[0] = '\0';
+
+ /* Allow strtok() here since this isn't used threaded */
+ /* !checksrc! disable BANNEDFUNC 2 */
+ tempdir = strtok(outdup, PATH_DELIMITERS);
+
+ while(tempdir) {
+ bool skip = false;
+ tempdir2 = strtok(NULL, PATH_DELIMITERS);
+ /* since strtok returns a token for the last word even
+ if not ending with DIR_CHAR, we need to prune it */
+ if(tempdir2) {
+ size_t dlen = strlen(dirbuildup);
+ if(dlen)
+ msnprintf(&dirbuildup[dlen], outlen - dlen, "%s%s", DIR_CHAR, tempdir);
+ else {
+ if(outdup == tempdir) {
+#if defined(MSDOS) || defined(WIN32)
+ /* Skip creating a drive's current directory.
+ It may seem as though that would harmlessly fail but it could be
+ a corner case if X: did not exist, since we would be creating it
+ erroneously.
+ eg if outfile is X:\foo\bar\filename then don't mkdir X:
+ This logic takes into account unsupported drives !:, 1:, etc. */
+ char *p = strchr(tempdir, ':');
+ if(p && !p[1])
+ skip = true;
+#endif
+ /* the output string doesn't start with a separator */
+ strcpy(dirbuildup, tempdir);
+ }
+ else
+ msnprintf(dirbuildup, outlen, "%s%s", DIR_CHAR, tempdir);
+ }
+ /* Create directory. Ignore access denied error to allow traversal. */
+ if(!skip && (-1 == mkdir(dirbuildup, (mode_t)0000750)) &&
+ (errno != EACCES) && (errno != EEXIST)) {
+ show_dir_errno(errors, dirbuildup);
+ result = CURLE_WRITE_ERROR;
+ break; /* get out of loop */
+ }
+ }
+ tempdir = tempdir2;
+ }
+
+ Curl_safefree(dirbuildup);
+ Curl_safefree(outdup);
+
+ return result;
+}
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_dirhie.h b/ap/lib/libcurl/curl-7.86.0/src/tool_dirhie.h
new file mode 100755
index 0000000..954f3e2
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_dirhie.h
@@ -0,0 +1,30 @@
+#ifndef HEADER_CURL_TOOL_DIRHIE_H
+#define HEADER_CURL_TOOL_DIRHIE_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+CURLcode create_dir_hierarchy(const char *outfile, FILE *errors);
+
+#endif /* HEADER_CURL_TOOL_DIRHIE_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_doswin.c b/ap/lib/libcurl/curl-7.86.0/src/tool_doswin.c
new file mode 100755
index 0000000..d8695e9
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_doswin.c
@@ -0,0 +1,787 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#if defined(MSDOS) || defined(WIN32)
+
+#if defined(HAVE_LIBGEN_H) && defined(HAVE_BASENAME)
+# include <libgen.h>
+#endif
+
+#ifdef WIN32
+# include <stdlib.h>
+# include <tlhelp32.h>
+# include "tool_cfgable.h"
+# include "tool_libinfo.h"
+#endif
+
+#include "tool_bname.h"
+#include "tool_doswin.h"
+
+#include "curlx.h"
+#include "memdebug.h" /* keep this as LAST include */
+
+#ifdef WIN32
+# undef PATH_MAX
+# define PATH_MAX MAX_PATH
+#endif
+
+#ifndef S_ISCHR
+# ifdef S_IFCHR
+# define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
+# else
+# define S_ISCHR(m) (0) /* cannot tell if file is a device */
+# endif
+#endif
+
+#ifdef WIN32
+# define _use_lfn(f) (1) /* long file names always available */
+#elif !defined(__DJGPP__) || (__DJGPP__ < 2) /* DJGPP 2.0 has _use_lfn() */
+# define _use_lfn(f) (0) /* long file names never available */
+#elif defined(__DJGPP__)
+# include <fcntl.h> /* _use_lfn(f) prototype */
+#endif
+
+#ifndef UNITTESTS
+static SANITIZEcode truncate_dryrun(const char *path,
+ const size_t truncate_pos);
+#ifdef MSDOS
+static SANITIZEcode msdosify(char **const sanitized, const char *file_name,
+ int flags);
+#endif
+static SANITIZEcode rename_if_reserved_dos_device_name(char **const sanitized,
+ const char *file_name,
+ int flags);
+#endif /* !UNITTESTS (static declarations used if no unit tests) */
+
+
+/*
+Sanitize a file or path name.
+
+All banned characters are replaced by underscores, for example:
+f?*foo => f__foo
+f:foo::$DATA => f_foo__$DATA
+f:\foo:bar => f__foo_bar
+f:\foo:bar => f:\foo:bar (flag SANITIZE_ALLOW_PATH)
+
+This function was implemented according to the guidelines in 'Naming Files,
+Paths, and Namespaces' section 'Naming Conventions'.
+https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247.aspx
+
+Flags
+-----
+SANITIZE_ALLOW_COLONS: Allow colons.
+Without this flag colons are sanitized.
+
+SANITIZE_ALLOW_PATH: Allow path separators and colons.
+Without this flag path separators and colons are sanitized.
+
+SANITIZE_ALLOW_RESERVED: Allow reserved device names.
+Without this flag a reserved device name is renamed (COM1 => _COM1) unless it's
+in a UNC prefixed path.
+
+SANITIZE_ALLOW_TRUNCATE: Allow truncating a long filename.
+Without this flag if the sanitized filename or path will be too long an error
+occurs. With this flag the filename --and not any other parts of the path-- may
+be truncated to at least a single character. A filename followed by an
+alternate data stream (ADS) cannot be truncated in any case.
+
+Success: (SANITIZE_ERR_OK) *sanitized points to a sanitized copy of file_name.
+Failure: (!= SANITIZE_ERR_OK) *sanitized is NULL.
+*/
+SANITIZEcode sanitize_file_name(char **const sanitized, const char *file_name,
+ int flags)
+{
+ char *p, *target;
+ size_t len;
+ SANITIZEcode sc;
+ size_t max_sanitized_len;
+
+ if(!sanitized)
+ return SANITIZE_ERR_BAD_ARGUMENT;
+
+ *sanitized = NULL;
+
+ if(!file_name)
+ return SANITIZE_ERR_BAD_ARGUMENT;
+
+ if((flags & SANITIZE_ALLOW_PATH)) {
+#ifndef MSDOS
+ if(file_name[0] == '\\' && file_name[1] == '\\')
+ /* UNC prefixed path \\ (eg \\?\C:\foo) */
+ max_sanitized_len = 32767-1;
+ else
+#endif
+ max_sanitized_len = PATH_MAX-1;
+ }
+ else
+ /* The maximum length of a filename.
+ FILENAME_MAX is often the same as PATH_MAX, in other words it is 260 and
+ does not discount the path information therefore we shouldn't use it. */
+ max_sanitized_len = (PATH_MAX-1 > 255) ? 255 : PATH_MAX-1;
+
+ len = strlen(file_name);
+ if(len > max_sanitized_len) {
+ if(!(flags & SANITIZE_ALLOW_TRUNCATE) ||
+ truncate_dryrun(file_name, max_sanitized_len))
+ return SANITIZE_ERR_INVALID_PATH;
+
+ len = max_sanitized_len;
+ }
+
+ target = malloc(len + 1);
+ if(!target)
+ return SANITIZE_ERR_OUT_OF_MEMORY;
+
+ strncpy(target, file_name, len);
+ target[len] = '\0';
+
+#ifndef MSDOS
+ if((flags & SANITIZE_ALLOW_PATH) && !strncmp(target, "\\\\?\\", 4))
+ /* Skip the literal path prefix \\?\ */
+ p = target + 4;
+ else
+#endif
+ p = target;
+
+ /* replace control characters and other banned characters */
+ for(; *p; ++p) {
+ const char *banned;
+
+ if((1 <= *p && *p <= 31) ||
+ (!(flags & (SANITIZE_ALLOW_COLONS|SANITIZE_ALLOW_PATH)) && *p == ':') ||
+ (!(flags & SANITIZE_ALLOW_PATH) && (*p == '/' || *p == '\\'))) {
+ *p = '_';
+ continue;
+ }
+
+ for(banned = "|<>\"?*"; *banned; ++banned) {
+ if(*p == *banned) {
+ *p = '_';
+ break;
+ }
+ }
+ }
+
+ /* remove trailing spaces and periods if not allowing paths */
+ if(!(flags & SANITIZE_ALLOW_PATH) && len) {
+ char *clip = NULL;
+
+ p = &target[len];
+ do {
+ --p;
+ if(*p != ' ' && *p != '.')
+ break;
+ clip = p;
+ } while(p != target);
+
+ if(clip) {
+ *clip = '\0';
+ len = clip - target;
+ }
+ }
+
+#ifdef MSDOS
+ sc = msdosify(&p, target, flags);
+ free(target);
+ if(sc)
+ return sc;
+ target = p;
+ len = strlen(target);
+
+ if(len > max_sanitized_len) {
+ free(target);
+ return SANITIZE_ERR_INVALID_PATH;
+ }
+#endif
+
+ if(!(flags & SANITIZE_ALLOW_RESERVED)) {
+ sc = rename_if_reserved_dos_device_name(&p, target, flags);
+ free(target);
+ if(sc)
+ return sc;
+ target = p;
+ len = strlen(target);
+
+ if(len > max_sanitized_len) {
+ free(target);
+ return SANITIZE_ERR_INVALID_PATH;
+ }
+ }
+
+ *sanitized = target;
+ return SANITIZE_ERR_OK;
+}
+
+
+/*
+Test if truncating a path to a file will leave at least a single character in
+the filename. Filenames suffixed by an alternate data stream can't be
+truncated. This performs a dry run, nothing is modified.
+
+Good truncate_pos 9: C:\foo\bar => C:\foo\ba
+Good truncate_pos 6: C:\foo => C:\foo
+Good truncate_pos 5: C:\foo => C:\fo
+Bad* truncate_pos 5: C:foo => C:foo
+Bad truncate_pos 5: C:\foo:ads => C:\fo
+Bad truncate_pos 9: C:\foo:ads => C:\foo:ad
+Bad truncate_pos 5: C:\foo\bar => C:\fo
+Bad truncate_pos 5: C:\foo\ => C:\fo
+Bad truncate_pos 7: C:\foo\ => C:\foo\
+Error truncate_pos 7: C:\foo => (pos out of range)
+Bad truncate_pos 1: C:\foo\ => C
+
+* C:foo is ambiguous, C could end up being a drive or file therefore something
+ like C:superlongfilename can't be truncated.
+
+Returns
+SANITIZE_ERR_OK: Good -- 'path' can be truncated
+SANITIZE_ERR_INVALID_PATH: Bad -- 'path' cannot be truncated
+!= SANITIZE_ERR_OK && != SANITIZE_ERR_INVALID_PATH: Error
+*/
+SANITIZEcode truncate_dryrun(const char *path, const size_t truncate_pos)
+{
+ size_t len;
+
+ if(!path)
+ return SANITIZE_ERR_BAD_ARGUMENT;
+
+ len = strlen(path);
+
+ if(truncate_pos > len)
+ return SANITIZE_ERR_BAD_ARGUMENT;
+
+ if(!len || !truncate_pos)
+ return SANITIZE_ERR_INVALID_PATH;
+
+ if(strpbrk(&path[truncate_pos - 1], "\\/:"))
+ return SANITIZE_ERR_INVALID_PATH;
+
+ /* C:\foo can be truncated but C:\foo:ads can't */
+ if(truncate_pos > 1) {
+ const char *p = &path[truncate_pos - 1];
+ do {
+ --p;
+ if(*p == ':')
+ return SANITIZE_ERR_INVALID_PATH;
+ } while(p != path && *p != '\\' && *p != '/');
+ }
+
+ return SANITIZE_ERR_OK;
+}
+
+/* The functions msdosify, rename_if_dos_device_name and __crt0_glob_function
+ * were taken with modification from the DJGPP port of tar 1.12. They use
+ * algorithms originally from DJTAR.
+ */
+
+/*
+Extra sanitization MSDOS for file_name.
+
+This is a supporting function for sanitize_file_name.
+
+Warning: This is an MSDOS legacy function and was purposely written in a way
+that some path information may pass through. For example drive letter names
+(C:, D:, etc) are allowed to pass through. For sanitizing a filename use
+sanitize_file_name.
+
+Success: (SANITIZE_ERR_OK) *sanitized points to a sanitized copy of file_name.
+Failure: (!= SANITIZE_ERR_OK) *sanitized is NULL.
+*/
+#if defined(MSDOS) || defined(UNITTESTS)
+SANITIZEcode msdosify(char **const sanitized, const char *file_name,
+ int flags)
+{
+ char dos_name[PATH_MAX];
+ static const char illegal_chars_dos[] = ".+, ;=[]" /* illegal in DOS */
+ "|<>/\\\":?*"; /* illegal in DOS & W95 */
+ static const char *illegal_chars_w95 = &illegal_chars_dos[8];
+ int idx, dot_idx;
+ const char *s = file_name;
+ char *d = dos_name;
+ const char *const dlimit = dos_name + sizeof(dos_name) - 1;
+ const char *illegal_aliens = illegal_chars_dos;
+ size_t len = sizeof(illegal_chars_dos) - 1;
+
+ if(!sanitized)
+ return SANITIZE_ERR_BAD_ARGUMENT;
+
+ *sanitized = NULL;
+
+ if(!file_name)
+ return SANITIZE_ERR_BAD_ARGUMENT;
+
+ if(strlen(file_name) > PATH_MAX-1 &&
+ (!(flags & SANITIZE_ALLOW_TRUNCATE) ||
+ truncate_dryrun(file_name, PATH_MAX-1)))
+ return SANITIZE_ERR_INVALID_PATH;
+
+ /* Support for Windows 9X VFAT systems, when available. */
+ if(_use_lfn(file_name)) {
+ illegal_aliens = illegal_chars_w95;
+ len -= (illegal_chars_w95 - illegal_chars_dos);
+ }
+
+ /* Get past the drive letter, if any. */
+ if(s[0] >= 'A' && s[0] <= 'z' && s[1] == ':') {
+ *d++ = *s++;
+ *d = ((flags & (SANITIZE_ALLOW_COLONS|SANITIZE_ALLOW_PATH))) ? ':' : '_';
+ ++d, ++s;
+ }
+
+ for(idx = 0, dot_idx = -1; *s && d < dlimit; s++, d++) {
+ if(memchr(illegal_aliens, *s, len)) {
+
+ if((flags & (SANITIZE_ALLOW_COLONS|SANITIZE_ALLOW_PATH)) && *s == ':')
+ *d = ':';
+ else if((flags & SANITIZE_ALLOW_PATH) && (*s == '/' || *s == '\\'))
+ *d = *s;
+ /* Dots are special: DOS doesn't allow them as the leading character,
+ and a file name cannot have more than a single dot. We leave the
+ first non-leading dot alone, unless it comes too close to the
+ beginning of the name: we want sh.lex.c to become sh_lex.c, not
+ sh.lex-c. */
+ else if(*s == '.') {
+ if((flags & SANITIZE_ALLOW_PATH) && idx == 0 &&
+ (s[1] == '/' || s[1] == '\\' ||
+ (s[1] == '.' && (s[2] == '/' || s[2] == '\\')))) {
+ /* Copy "./" and "../" verbatim. */
+ *d++ = *s++;
+ if(d == dlimit)
+ break;
+ if(*s == '.') {
+ *d++ = *s++;
+ if(d == dlimit)
+ break;
+ }
+ *d = *s;
+ }
+ else if(idx == 0)
+ *d = '_';
+ else if(dot_idx >= 0) {
+ if(dot_idx < 5) { /* 5 is a heuristic ad-hoc'ery */
+ d[dot_idx - idx] = '_'; /* replace previous dot */
+ *d = '.';
+ }
+ else
+ *d = '-';
+ }
+ else
+ *d = '.';
+
+ if(*s == '.')
+ dot_idx = idx;
+ }
+ else if(*s == '+' && s[1] == '+') {
+ if(idx - 2 == dot_idx) { /* .c++, .h++ etc. */
+ *d++ = 'x';
+ if(d == dlimit)
+ break;
+ *d = 'x';
+ }
+ else {
+ /* libg++ etc. */
+ if(dlimit - d < 4) {
+ *d++ = 'x';
+ if(d == dlimit)
+ break;
+ *d = 'x';
+ }
+ else {
+ memcpy(d, "plus", 4);
+ d += 3;
+ }
+ }
+ s++;
+ idx++;
+ }
+ else
+ *d = '_';
+ }
+ else
+ *d = *s;
+ if(*s == '/' || *s == '\\') {
+ idx = 0;
+ dot_idx = -1;
+ }
+ else
+ idx++;
+ }
+ *d = '\0';
+
+ if(*s) {
+ /* dos_name is truncated, check that truncation requirements are met,
+ specifically truncating a filename suffixed by an alternate data stream
+ or truncating the entire filename is not allowed. */
+ if(!(flags & SANITIZE_ALLOW_TRUNCATE) || strpbrk(s, "\\/:") ||
+ truncate_dryrun(dos_name, d - dos_name))
+ return SANITIZE_ERR_INVALID_PATH;
+ }
+
+ *sanitized = strdup(dos_name);
+ return (*sanitized ? SANITIZE_ERR_OK : SANITIZE_ERR_OUT_OF_MEMORY);
+}
+#endif /* MSDOS || UNITTESTS */
+
+/*
+Rename file_name if it's a reserved dos device name.
+
+This is a supporting function for sanitize_file_name.
+
+Warning: This is an MSDOS legacy function and was purposely written in a way
+that some path information may pass through. For example drive letter names
+(C:, D:, etc) are allowed to pass through. For sanitizing a filename use
+sanitize_file_name.
+
+Success: (SANITIZE_ERR_OK) *sanitized points to a sanitized copy of file_name.
+Failure: (!= SANITIZE_ERR_OK) *sanitized is NULL.
+*/
+SANITIZEcode rename_if_reserved_dos_device_name(char **const sanitized,
+ const char *file_name,
+ int flags)
+{
+ /* We could have a file whose name is a device on MS-DOS. Trying to
+ * retrieve such a file would fail at best and wedge us at worst. We need
+ * to rename such files. */
+ char *p, *base;
+ char fname[PATH_MAX];
+#ifdef MSDOS
+ struct_stat st_buf;
+#endif
+
+ if(!sanitized)
+ return SANITIZE_ERR_BAD_ARGUMENT;
+
+ *sanitized = NULL;
+
+ if(!file_name)
+ return SANITIZE_ERR_BAD_ARGUMENT;
+
+ /* Ignore UNC prefixed paths, they are allowed to contain a reserved name. */
+#ifndef MSDOS
+ if((flags & SANITIZE_ALLOW_PATH) &&
+ file_name[0] == '\\' && file_name[1] == '\\') {
+ size_t len = strlen(file_name);
+ *sanitized = malloc(len + 1);
+ if(!*sanitized)
+ return SANITIZE_ERR_OUT_OF_MEMORY;
+ strncpy(*sanitized, file_name, len + 1);
+ return SANITIZE_ERR_OK;
+ }
+#endif
+
+ if(strlen(file_name) > PATH_MAX-1 &&
+ (!(flags & SANITIZE_ALLOW_TRUNCATE) ||
+ truncate_dryrun(file_name, PATH_MAX-1)))
+ return SANITIZE_ERR_INVALID_PATH;
+
+ strncpy(fname, file_name, PATH_MAX-1);
+ fname[PATH_MAX-1] = '\0';
+ base = basename(fname);
+
+ /* Rename reserved device names that are known to be accessible without \\.\
+ Examples: CON => _CON, CON.EXT => CON_EXT, CON:ADS => CON_ADS
+ https://support.microsoft.com/en-us/kb/74496
+ https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247.aspx
+ */
+ for(p = fname; p; p = (p == fname && fname != base ? base : NULL)) {
+ size_t p_len;
+ int x = (curl_strnequal(p, "CON", 3) ||
+ curl_strnequal(p, "PRN", 3) ||
+ curl_strnequal(p, "AUX", 3) ||
+ curl_strnequal(p, "NUL", 3)) ? 3 :
+ (curl_strnequal(p, "CLOCK$", 6)) ? 6 :
+ (curl_strnequal(p, "COM", 3) || curl_strnequal(p, "LPT", 3)) ?
+ (('1' <= p[3] && p[3] <= '9') ? 4 : 3) : 0;
+
+ if(!x)
+ continue;
+
+ /* the devices may be accessible with an extension or ADS, for
+ example CON.AIR and 'CON . AIR' and CON:AIR access console */
+
+ for(; p[x] == ' '; ++x)
+ ;
+
+ if(p[x] == '.') {
+ p[x] = '_';
+ continue;
+ }
+ else if(p[x] == ':') {
+ if(!(flags & (SANITIZE_ALLOW_COLONS|SANITIZE_ALLOW_PATH))) {
+ p[x] = '_';
+ continue;
+ }
+ ++x;
+ }
+ else if(p[x]) /* no match */
+ continue;
+
+ /* p points to 'CON' or 'CON ' or 'CON:', etc */
+ p_len = strlen(p);
+
+ /* Prepend a '_' */
+ if(strlen(fname) == PATH_MAX-1) {
+ --p_len;
+ if(!(flags & SANITIZE_ALLOW_TRUNCATE) || truncate_dryrun(p, p_len))
+ return SANITIZE_ERR_INVALID_PATH;
+ p[p_len] = '\0';
+ }
+ memmove(p + 1, p, p_len + 1);
+ p[0] = '_';
+ ++p_len;
+
+ /* if fname was just modified then the basename pointer must be updated */
+ if(p == fname)
+ base = basename(fname);
+ }
+
+ /* This is the legacy portion from rename_if_dos_device_name that checks for
+ reserved device names. It only works on MSDOS. On Windows XP the stat
+ check errors with EINVAL if the device name is reserved. On Windows
+ Vista/7/8 it sets mode S_IFREG (regular file or device). According to MSDN
+ stat doc the latter behavior is correct, but that doesn't help us identify
+ whether it's a reserved device name and not a regular file name. */
+#ifdef MSDOS
+ if(base && ((stat(base, &st_buf)) == 0) && (S_ISCHR(st_buf.st_mode))) {
+ /* Prepend a '_' */
+ size_t blen = strlen(base);
+ if(blen) {
+ if(strlen(fname) == PATH_MAX-1) {
+ --blen;
+ if(!(flags & SANITIZE_ALLOW_TRUNCATE) || truncate_dryrun(base, blen))
+ return SANITIZE_ERR_INVALID_PATH;
+ base[blen] = '\0';
+ }
+ memmove(base + 1, base, blen + 1);
+ base[0] = '_';
+ }
+ }
+#endif
+
+ *sanitized = strdup(fname);
+ return (*sanitized ? SANITIZE_ERR_OK : SANITIZE_ERR_OUT_OF_MEMORY);
+}
+
+#if defined(MSDOS) && (defined(__DJGPP__) || defined(__GO32__))
+
+/*
+ * Disable program default argument globbing. We do it on our own.
+ */
+char **__crt0_glob_function(char *arg)
+{
+ (void)arg;
+ return (char **)0;
+}
+
+#endif /* MSDOS && (__DJGPP__ || __GO32__) */
+
+#ifdef WIN32
+
+/*
+ * Function to find CACert bundle on a Win32 platform using SearchPath.
+ * (SearchPath is already declared via inclusions done in setup header file)
+ * (Use the ASCII version instead of the unicode one!)
+ * The order of the directories it searches is:
+ * 1. application's directory
+ * 2. current working directory
+ * 3. Windows System directory (e.g. C:\windows\system32)
+ * 4. Windows Directory (e.g. C:\windows)
+ * 5. all directories along %PATH%
+ *
+ * For WinXP and later search order actually depends on registry value:
+ * HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\SafeProcessSearchMode
+ */
+
+CURLcode FindWin32CACert(struct OperationConfig *config,
+ curl_sslbackend backend,
+ const TCHAR *bundle_file)
+{
+ CURLcode result = CURLE_OK;
+
+ /* Search and set cert file only if libcurl supports SSL.
+ *
+ * If Schannel is the selected SSL backend then these locations are
+ * ignored. We allow setting CA location for schannel only when explicitly
+ * specified by the user via CURLOPT_CAINFO / --cacert.
+ */
+ if((curlinfo->features & CURL_VERSION_SSL) &&
+ backend != CURLSSLBACKEND_SCHANNEL) {
+
+ DWORD res_len;
+ TCHAR buf[PATH_MAX];
+ TCHAR *ptr = NULL;
+
+ buf[0] = TEXT('\0');
+
+ res_len = SearchPath(NULL, bundle_file, NULL, PATH_MAX, buf, &ptr);
+ if(res_len > 0) {
+ char *mstr = curlx_convert_tchar_to_UTF8(buf);
+ Curl_safefree(config->cacert);
+ if(mstr)
+ config->cacert = strdup(mstr);
+ curlx_unicodefree(mstr);
+ if(!config->cacert)
+ result = CURLE_OUT_OF_MEMORY;
+ }
+ }
+
+ return result;
+}
+
+
+/* Get a list of all loaded modules with full paths.
+ * Returns slist on success or NULL on error.
+ */
+struct curl_slist *GetLoadedModulePaths(void)
+{
+ HANDLE hnd = INVALID_HANDLE_VALUE;
+ MODULEENTRY32 mod = {0};
+ struct curl_slist *slist = NULL;
+
+ mod.dwSize = sizeof(MODULEENTRY32);
+
+ do {
+ hnd = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, 0);
+ } while(hnd == INVALID_HANDLE_VALUE && GetLastError() == ERROR_BAD_LENGTH);
+
+ if(hnd == INVALID_HANDLE_VALUE)
+ goto error;
+
+ if(!Module32First(hnd, &mod))
+ goto error;
+
+ do {
+ char *path; /* points to stack allocated buffer */
+ struct curl_slist *temp;
+
+#ifdef UNICODE
+ /* sizeof(mod.szExePath) is the max total bytes of wchars. the max total
+ bytes of multibyte chars won't be more than twice that. */
+ char buffer[sizeof(mod.szExePath) * 2];
+ if(!WideCharToMultiByte(CP_ACP, 0, mod.szExePath, -1,
+ buffer, sizeof(buffer), NULL, NULL))
+ goto error;
+ path = buffer;
+#else
+ path = mod.szExePath;
+#endif
+ temp = curl_slist_append(slist, path);
+ if(!temp)
+ goto error;
+ slist = temp;
+ } while(Module32Next(hnd, &mod));
+
+ goto cleanup;
+
+error:
+ curl_slist_free_all(slist);
+ slist = NULL;
+cleanup:
+ if(hnd != INVALID_HANDLE_VALUE)
+ CloseHandle(hnd);
+ return slist;
+}
+
+/* The terminal settings to restore on exit */
+static struct TerminalSettings {
+ HANDLE hStdOut;
+ DWORD dwOutputMode;
+ LONG valid;
+} TerminalSettings;
+
+#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
+#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
+#endif
+
+static void restore_terminal(void)
+{
+ if(InterlockedExchange(&TerminalSettings.valid, (LONG)FALSE))
+ SetConsoleMode(TerminalSettings.hStdOut, TerminalSettings.dwOutputMode);
+}
+
+/* This is the console signal handler.
+ * The system calls it in a separate thread.
+ */
+static BOOL WINAPI signal_handler(DWORD type)
+{
+ if(type == CTRL_C_EVENT || type == CTRL_BREAK_EVENT)
+ restore_terminal();
+ return FALSE;
+}
+
+static void init_terminal(void)
+{
+ TerminalSettings.hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
+ /*
+ * Enable VT (Virtual Terminal) output.
+ * Note: VT mode flag can be set on any version of Windows, but VT
+ * processing only performed on Win10 >= Creators Update)
+ */
+ if((TerminalSettings.hStdOut != INVALID_HANDLE_VALUE) &&
+ GetConsoleMode(TerminalSettings.hStdOut,
+ &TerminalSettings.dwOutputMode) &&
+ !(TerminalSettings.dwOutputMode &
+ ENABLE_VIRTUAL_TERMINAL_PROCESSING)) {
+ /* The signal handler is set before attempting to change the console mode
+ because otherwise a signal would not be caught after the change but
+ before the handler was installed. */
+ (void)InterlockedExchange(&TerminalSettings.valid, (LONG)TRUE);
+ if(SetConsoleCtrlHandler(signal_handler, TRUE)) {
+ if(SetConsoleMode(TerminalSettings.hStdOut,
+ (TerminalSettings.dwOutputMode |
+ ENABLE_VIRTUAL_TERMINAL_PROCESSING))) {
+ atexit(restore_terminal);
+ }
+ else {
+ SetConsoleCtrlHandler(signal_handler, FALSE);
+ (void)InterlockedExchange(&TerminalSettings.valid, (LONG)FALSE);
+ }
+ }
+ }
+}
+
+LARGE_INTEGER tool_freq;
+bool tool_isVistaOrGreater;
+
+CURLcode win32_init(void)
+{
+ /* curlx_verify_windows_version must be called during init at least once
+ because it has its own initialization routine. */
+ if(curlx_verify_windows_version(6, 0, 0, PLATFORM_WINNT,
+ VERSION_GREATER_THAN_EQUAL))
+ tool_isVistaOrGreater = true;
+ else
+ tool_isVistaOrGreater = false;
+
+ QueryPerformanceFrequency(&tool_freq);
+
+ init_terminal();
+
+ return CURLE_OK;
+}
+
+#endif /* WIN32 */
+
+#endif /* MSDOS || WIN32 */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_doswin.h b/ap/lib/libcurl/curl-7.86.0/src/tool_doswin.h
new file mode 100755
index 0000000..ff9bad9
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_doswin.h
@@ -0,0 +1,72 @@
+#ifndef HEADER_CURL_TOOL_DOSWIN_H
+#define HEADER_CURL_TOOL_DOSWIN_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#if defined(MSDOS) || defined(WIN32)
+
+#define SANITIZE_ALLOW_COLONS (1<<0) /* Allow colons */
+#define SANITIZE_ALLOW_PATH (1<<1) /* Allow path separators and colons */
+#define SANITIZE_ALLOW_RESERVED (1<<2) /* Allow reserved device names */
+#define SANITIZE_ALLOW_TRUNCATE (1<<3) /* Allow truncating a long filename */
+
+typedef enum {
+ SANITIZE_ERR_OK = 0, /* 0 - OK */
+ SANITIZE_ERR_INVALID_PATH, /* 1 - the path is invalid */
+ SANITIZE_ERR_BAD_ARGUMENT, /* 2 - bad function parameter */
+ SANITIZE_ERR_OUT_OF_MEMORY, /* 3 - out of memory */
+ SANITIZE_ERR_LAST /* never use! */
+} SANITIZEcode;
+
+SANITIZEcode sanitize_file_name(char **const sanitized, const char *file_name,
+ int flags);
+#ifdef UNITTESTS
+SANITIZEcode truncate_dryrun(const char *path, const size_t truncate_pos);
+SANITIZEcode msdosify(char **const sanitized, const char *file_name,
+ int flags);
+SANITIZEcode rename_if_reserved_dos_device_name(char **const sanitized,
+ const char *file_name,
+ int flags);
+#endif /* UNITTESTS */
+
+#if defined(MSDOS) && (defined(__DJGPP__) || defined(__GO32__))
+
+char **__crt0_glob_function(char *arg);
+
+#endif /* MSDOS && (__DJGPP__ || __GO32__) */
+
+#ifdef WIN32
+
+CURLcode FindWin32CACert(struct OperationConfig *config,
+ curl_sslbackend backend,
+ const TCHAR *bundle_file);
+struct curl_slist *GetLoadedModulePaths(void);
+CURLcode win32_init(void);
+
+#endif /* WIN32 */
+
+#endif /* MSDOS || WIN32 */
+
+#endif /* HEADER_CURL_TOOL_DOSWIN_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_easysrc.c b/ap/lib/libcurl/curl-7.86.0/src/tool_easysrc.c
new file mode 100755
index 0000000..e653b31
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_easysrc.c
@@ -0,0 +1,238 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#include "slist_wc.h"
+
+#ifndef CURL_DISABLE_LIBCURL_OPTION
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_easysrc.h"
+#include "tool_msgs.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+/* global variable definitions, for easy-interface source code generation */
+
+struct slist_wc *easysrc_decl = NULL; /* Variable declarations */
+struct slist_wc *easysrc_data = NULL; /* Build slists, forms etc. */
+struct slist_wc *easysrc_code = NULL; /* Setopt calls */
+struct slist_wc *easysrc_toohard = NULL; /* Unconvertible setopt */
+struct slist_wc *easysrc_clean = NULL; /* Clean up allocated data */
+int easysrc_mime_count = 0;
+int easysrc_slist_count = 0;
+
+static const char *const srchead[]={
+ "/********* Sample code generated by the curl command line tool **********",
+ " * All curl_easy_setopt() options are documented at:",
+ " * https://curl.se/libcurl/c/curl_easy_setopt.html",
+ " ************************************************************************/",
+ "#include <curl/curl.h>",
+ "",
+ "int main(int argc, char *argv[])",
+ "{",
+ " CURLcode ret;",
+ " CURL *hnd;",
+ NULL
+};
+/* easysrc_decl declarations come here */
+/* easysrc_data initialization come here */
+/* easysrc_code statements come here */
+static const char *const srchard[]={
+ "/* Here is a list of options the curl code used that cannot get generated",
+ " as source easily. You may choose to either not use them or implement",
+ " them yourself.",
+ "",
+ NULL
+};
+static const char *const srcend[]={
+ "",
+ " return (int)ret;",
+ "}",
+ "/**** End of sample code ****/",
+ NULL
+};
+
+/* Clean up all source code if we run out of memory */
+static void easysrc_free(void)
+{
+ slist_wc_free_all(easysrc_decl);
+ easysrc_decl = NULL;
+ slist_wc_free_all(easysrc_data);
+ easysrc_data = NULL;
+ slist_wc_free_all(easysrc_code);
+ easysrc_code = NULL;
+ slist_wc_free_all(easysrc_toohard);
+ easysrc_toohard = NULL;
+ slist_wc_free_all(easysrc_clean);
+ easysrc_clean = NULL;
+}
+
+/* Add a source line to the main code or remarks */
+CURLcode easysrc_add(struct slist_wc **plist, const char *line)
+{
+ CURLcode ret = CURLE_OK;
+ struct slist_wc *list = slist_wc_append(*plist, line);
+ if(!list) {
+ easysrc_free();
+ ret = CURLE_OUT_OF_MEMORY;
+ }
+ else
+ *plist = list;
+ return ret;
+}
+
+CURLcode easysrc_addf(struct slist_wc **plist, const char *fmt, ...)
+{
+ CURLcode ret;
+ char *bufp;
+ va_list ap;
+ va_start(ap, fmt);
+ bufp = curlx_mvaprintf(fmt, ap);
+ va_end(ap);
+ if(!bufp) {
+ ret = CURLE_OUT_OF_MEMORY;
+ }
+ else {
+ ret = easysrc_add(plist, bufp);
+ curl_free(bufp);
+ }
+ return ret;
+}
+
+#define CHKRET(v) do {CURLcode ret = (v); if(ret) return ret;} while(0)
+
+CURLcode easysrc_init(void)
+{
+ CHKRET(easysrc_add(&easysrc_code,
+ "hnd = curl_easy_init();"));
+ return CURLE_OK;
+}
+
+CURLcode easysrc_perform(void)
+{
+ /* Note any setopt calls which we could not convert */
+ if(easysrc_toohard) {
+ int i;
+ struct curl_slist *ptr;
+ const char *c;
+ CHKRET(easysrc_add(&easysrc_code, ""));
+ /* Preamble comment */
+ for(i = 0; ((c = srchard[i]) != NULL); i++)
+ CHKRET(easysrc_add(&easysrc_code, c));
+ /* Each unconverted option */
+ if(easysrc_toohard) {
+ for(ptr = easysrc_toohard->first; ptr; ptr = ptr->next)
+ CHKRET(easysrc_add(&easysrc_code, ptr->data));
+ }
+ CHKRET(easysrc_add(&easysrc_code, ""));
+ CHKRET(easysrc_add(&easysrc_code, "*/"));
+
+ slist_wc_free_all(easysrc_toohard);
+ easysrc_toohard = NULL;
+ }
+
+ CHKRET(easysrc_add(&easysrc_code, ""));
+ CHKRET(easysrc_add(&easysrc_code, "ret = curl_easy_perform(hnd);"));
+ CHKRET(easysrc_add(&easysrc_code, ""));
+
+ return CURLE_OK;
+}
+
+CURLcode easysrc_cleanup(void)
+{
+ CHKRET(easysrc_add(&easysrc_code, "curl_easy_cleanup(hnd);"));
+ CHKRET(easysrc_add(&easysrc_code, "hnd = NULL;"));
+
+ return CURLE_OK;
+}
+
+void dumpeasysrc(struct GlobalConfig *config)
+{
+ struct curl_slist *ptr;
+ char *o = config->libcurl;
+
+ FILE *out;
+ bool fopened = FALSE;
+ if(strcmp(o, "-")) {
+ out = fopen(o, FOPEN_WRITETEXT);
+ fopened = TRUE;
+ }
+ else
+ out = stdout;
+ if(!out)
+ warnf(config, "Failed to open %s to write libcurl code!\n", o);
+ else {
+ int i;
+ const char *c;
+
+ for(i = 0; ((c = srchead[i]) != NULL); i++)
+ fprintf(out, "%s\n", c);
+
+ /* Declare variables used for complex setopt values */
+ if(easysrc_decl) {
+ for(ptr = easysrc_decl->first; ptr; ptr = ptr->next)
+ fprintf(out, " %s\n", ptr->data);
+ }
+
+ /* Set up complex values for setopt calls */
+ if(easysrc_data) {
+ fprintf(out, "\n");
+
+ for(ptr = easysrc_data->first; ptr; ptr = ptr->next)
+ fprintf(out, " %s\n", ptr->data);
+ }
+
+ fprintf(out, "\n");
+ if(easysrc_code) {
+ for(ptr = easysrc_code->first; ptr; ptr = ptr->next) {
+ if(ptr->data[0]) {
+ fprintf(out, " %s\n", ptr->data);
+ }
+ else {
+ fprintf(out, "\n");
+ }
+ }
+ }
+
+ if(easysrc_clean) {
+ for(ptr = easysrc_clean->first; ptr; ptr = ptr->next)
+ fprintf(out, " %s\n", ptr->data);
+ }
+
+ for(i = 0; ((c = srcend[i]) != NULL); i++)
+ fprintf(out, "%s\n", c);
+
+ if(fopened)
+ fclose(out);
+ }
+
+ easysrc_free();
+}
+
+#endif /* CURL_DISABLE_LIBCURL_OPTION */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_easysrc.h b/ap/lib/libcurl/curl-7.86.0/src/tool_easysrc.h
new file mode 100755
index 0000000..ec2fdd2
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_easysrc.h
@@ -0,0 +1,58 @@
+#ifndef HEADER_CURL_TOOL_EASYSRC_H
+#define HEADER_CURL_TOOL_EASYSRC_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+#ifndef CURL_DISABLE_LIBCURL_OPTION
+
+/* global variable declarations, for easy-interface source code generation */
+
+extern struct slist_wc *easysrc_decl; /* Variable declarations */
+extern struct slist_wc *easysrc_data; /* Build slists, forms etc. */
+extern struct slist_wc *easysrc_code; /* Setopt calls etc. */
+extern struct slist_wc *easysrc_toohard; /* Unconvertible setopt */
+extern struct slist_wc *easysrc_clean; /* Clean up (reverse order) */
+
+extern int easysrc_mime_count; /* Number of curl_mime variables */
+extern int easysrc_slist_count; /* Number of curl_slist variables */
+
+extern CURLcode easysrc_init(void);
+extern CURLcode easysrc_add(struct slist_wc **plist, const char *bupf);
+extern CURLcode easysrc_addf(struct slist_wc **plist,
+ const char *fmt, ...);
+extern CURLcode easysrc_perform(void);
+extern CURLcode easysrc_cleanup(void);
+
+void dumpeasysrc(struct GlobalConfig *config);
+
+#else /* CURL_DISABLE_LIBCURL_OPTION is defined */
+
+#define easysrc_init() CURLE_OK
+#define easysrc_cleanup()
+#define dumpeasysrc(x)
+#define easysrc_perform(x) CURLE_OK
+
+#endif /* CURL_DISABLE_LIBCURL_OPTION */
+
+#endif /* HEADER_CURL_TOOL_EASYSRC_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_filetime.c b/ap/lib/libcurl/curl-7.86.0/src/tool_filetime.c
new file mode 100755
index 0000000..c095a49
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_filetime.c
@@ -0,0 +1,155 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_filetime.h"
+#include "tool_cfgable.h"
+#include "tool_msgs.h"
+#include "curlx.h"
+
+#ifdef HAVE_UTIME_H
+# include <utime.h>
+#elif defined(HAVE_SYS_UTIME_H)
+# include <sys/utime.h>
+#endif
+
+curl_off_t getfiletime(const char *filename, struct GlobalConfig *global)
+{
+ curl_off_t result = -1;
+
+/* Windows stat() may attempt to adjust the unix GMT file time by a daylight
+ saving time offset and since it's GMT that is bad behavior. When we have
+ access to a 64-bit type we can bypass stat and get the times directly. */
+#if defined(WIN32) && (SIZEOF_CURL_OFF_T >= 8)
+ HANDLE hfile;
+ TCHAR *tchar_filename = curlx_convert_UTF8_to_tchar((char *)filename);
+
+ hfile = CreateFile(tchar_filename, FILE_READ_ATTRIBUTES,
+ (FILE_SHARE_READ | FILE_SHARE_WRITE |
+ FILE_SHARE_DELETE),
+ NULL, OPEN_EXISTING, 0, NULL);
+ curlx_unicodefree(tchar_filename);
+ if(hfile != INVALID_HANDLE_VALUE) {
+ FILETIME ft;
+ if(GetFileTime(hfile, NULL, NULL, &ft)) {
+ curl_off_t converted = (curl_off_t)ft.dwLowDateTime
+ | ((curl_off_t)ft.dwHighDateTime) << 32;
+
+ if(converted < CURL_OFF_T_C(116444736000000000)) {
+ warnf(global, "Failed to get filetime: underflow\n");
+ }
+ else {
+ result = (converted - CURL_OFF_T_C(116444736000000000)) / 10000000;
+ }
+ }
+ else {
+ warnf(global, "Failed to get filetime: "
+ "GetFileTime failed: GetLastError %u\n",
+ (unsigned int)GetLastError());
+ }
+ CloseHandle(hfile);
+ }
+ else if(GetLastError() != ERROR_FILE_NOT_FOUND) {
+ warnf(global, "Failed to get filetime: "
+ "CreateFile failed: GetLastError %u\n",
+ (unsigned int)GetLastError());
+ }
+#else
+ struct_stat statbuf;
+ if(-1 != stat(filename, &statbuf)) {
+ result = (curl_off_t)statbuf.st_mtime;
+ }
+ else if(errno != ENOENT) {
+ warnf(global, "Failed to get filetime: %s\n", strerror(errno));
+ }
+#endif
+ return result;
+}
+
+#if defined(HAVE_UTIME) || defined(HAVE_UTIMES) || \
+ (defined(WIN32) && (SIZEOF_CURL_OFF_T >= 8))
+void setfiletime(curl_off_t filetime, const char *filename,
+ struct GlobalConfig *global)
+{
+ if(filetime >= 0) {
+/* Windows utime() may attempt to adjust the unix GMT file time by a daylight
+ saving time offset and since it's GMT that is bad behavior. When we have
+ access to a 64-bit type we can bypass utime and set the times directly. */
+#if defined(WIN32) && (SIZEOF_CURL_OFF_T >= 8)
+ HANDLE hfile;
+ TCHAR *tchar_filename = curlx_convert_UTF8_to_tchar((char *)filename);
+
+ /* 910670515199 is the maximum unix filetime that can be used as a
+ Windows FILETIME without overflow: 30827-12-31T23:59:59. */
+ if(filetime > CURL_OFF_T_C(910670515199)) {
+ warnf(global, "Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
+ " on outfile: overflow\n", filetime);
+ curlx_unicodefree(tchar_filename);
+ return;
+ }
+
+ hfile = CreateFile(tchar_filename, FILE_WRITE_ATTRIBUTES,
+ (FILE_SHARE_READ | FILE_SHARE_WRITE |
+ FILE_SHARE_DELETE),
+ NULL, OPEN_EXISTING, 0, NULL);
+ curlx_unicodefree(tchar_filename);
+ if(hfile != INVALID_HANDLE_VALUE) {
+ curl_off_t converted = ((curl_off_t)filetime * 10000000) +
+ CURL_OFF_T_C(116444736000000000);
+ FILETIME ft;
+ ft.dwLowDateTime = (DWORD)(converted & 0xFFFFFFFF);
+ ft.dwHighDateTime = (DWORD)(converted >> 32);
+ if(!SetFileTime(hfile, NULL, &ft, &ft)) {
+ warnf(global, "Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
+ " on outfile: SetFileTime failed: GetLastError %u\n",
+ filetime, (unsigned int)GetLastError());
+ }
+ CloseHandle(hfile);
+ }
+ else {
+ warnf(global, "Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
+ " on outfile: CreateFile failed: GetLastError %u\n",
+ filetime, (unsigned int)GetLastError());
+ }
+
+#elif defined(HAVE_UTIMES)
+ struct timeval times[2];
+ times[0].tv_sec = times[1].tv_sec = (time_t)filetime;
+ times[0].tv_usec = times[1].tv_usec = 0;
+ if(utimes(filename, times)) {
+ warnf(global, "Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
+ " on '%s': %s\n", filetime, filename, strerror(errno));
+ }
+
+#elif defined(HAVE_UTIME)
+ struct utimbuf times;
+ times.actime = (time_t)filetime;
+ times.modtime = (time_t)filetime;
+ if(utime(filename, ×)) {
+ warnf(global, "Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
+ " on '%s': %s\n", filetime, filename, strerror(errno));
+ }
+#endif
+ }
+}
+#endif /* defined(HAVE_UTIME) || defined(HAVE_UTIMES) || \
+ (defined(WIN32) && (SIZEOF_CURL_OFF_T >= 8)) */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_filetime.h b/ap/lib/libcurl/curl-7.86.0/src/tool_filetime.h
new file mode 100755
index 0000000..3d88d89
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_filetime.h
@@ -0,0 +1,41 @@
+#ifndef HEADER_CURL_TOOL_FILETIME_H
+#define HEADER_CURL_TOOL_FILETIME_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+struct GlobalConfig;
+
+curl_off_t getfiletime(const char *filename, struct GlobalConfig *global);
+
+#if defined(HAVE_UTIME) || defined(HAVE_UTIMES) || \
+ (defined(WIN32) && (SIZEOF_CURL_OFF_T >= 8))
+void setfiletime(curl_off_t filetime, const char *filename,
+ struct GlobalConfig *global);
+#else
+#define setfiletime(a,b,c) Curl_nop_stmt
+#endif /* defined(HAVE_UTIME) || defined(HAVE_UTIMES) || \
+ (defined(WIN32) && (SIZEOF_CURL_OFF_T >= 8)) */
+
+#endif /* HEADER_CURL_TOOL_FILETIME_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_findfile.c b/ap/lib/libcurl/curl-7.86.0/src/tool_findfile.c
new file mode 100755
index 0000000..51a45ff
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_findfile.c
@@ -0,0 +1,157 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#ifdef HAVE_PWD_H
+# undef __NO_NET_API /* required for building for AmigaOS */
+# include <pwd.h>
+#endif
+
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
+#include <curl/mprintf.h>
+
+#include "tool_findfile.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+struct finder {
+ const char *env;
+ const char *append;
+ bool withoutdot;
+};
+
+/* The order of the variables below is important, as the index number is used
+ in the findfile() function */
+static const struct finder list[] = {
+ { "CURL_HOME", NULL, FALSE },
+ { "XDG_CONFIG_HOME", NULL, FALSE }, /* index == 1, used in the code */
+ { "HOME", NULL, FALSE },
+#ifdef WIN32
+ { "USERPROFILE", NULL, FALSE },
+ { "APPDATA", NULL, FALSE },
+ { "USERPROFILE", "\\Application Data", FALSE},
+#endif
+ /* these are for .curlrc if XDG_CONFIG_HOME is not defined */
+ { "CURL_HOME", "/.config", TRUE },
+ { "HOME", "/.config", TRUE },
+
+ { NULL, NULL, FALSE }
+};
+
+static char *checkhome(const char *home, const char *fname, bool dotscore)
+{
+ const char pref[2] = { '.', '_' };
+ int i;
+ for(i = 0; i < (dotscore ? 2 : 1); i++) {
+ char *c;
+ if(dotscore)
+ c = curl_maprintf("%s" DIR_CHAR "%c%s", home, pref[i], &fname[1]);
+ else
+ c = curl_maprintf("%s" DIR_CHAR "%s", home, fname);
+ if(c) {
+ int fd = open(c, O_RDONLY);
+ if(fd >= 0) {
+ char *path = strdup(c);
+ close(fd);
+ curl_free(c);
+ return path;
+ }
+ curl_free(c);
+ }
+ }
+ return NULL;
+}
+
+/*
+ * findfile() - return the full path name of the file.
+ *
+ * If 'dotscore' is TRUE, then check for the file first with a leading dot
+ * and then with a leading underscore.
+ *
+ * 1. Iterate over the environment variables in order, and if set, check for
+ * the given file to be accessed there, then it is a match.
+ * 2. Non-windows: try getpwuid
+ */
+char *findfile(const char *fname, int dotscore)
+{
+ int i;
+ bool xdg = FALSE;
+ DEBUGASSERT(fname && fname[0]);
+ DEBUGASSERT((dotscore != 1) || (fname[0] == '.'));
+
+ if(!fname[0])
+ return NULL;
+
+ for(i = 0; list[i].env; i++) {
+ char *home = curl_getenv(list[i].env);
+ if(home) {
+ char *path;
+ const char *filename = fname;
+ if(i == 1 /* XDG_CONFIG_HOME */)
+ xdg = TRUE;
+ if(!home[0]) {
+ curl_free(home);
+ continue;
+ }
+ if(list[i].append) {
+ char *c = curl_maprintf("%s%s", home, list[i].append);
+ curl_free(home);
+ if(!c)
+ return NULL;
+ home = c;
+ }
+ if(list[i].withoutdot) {
+ if(!dotscore || xdg) {
+ /* this is not looking for .curlrc, or the XDG_CONFIG_HOME was
+ defined so we skip the extended check */
+ curl_free(home);
+ continue;
+ }
+ filename++; /* move past the leading dot */
+ dotscore = 0; /* disable it for this check */
+ }
+ path = checkhome(home, filename, dotscore ? dotscore - 1 : 0);
+ curl_free(home);
+ if(path)
+ return path;
+ }
+ }
+#if defined(HAVE_GETPWUID) && defined(HAVE_GETEUID)
+ {
+ struct passwd *pw = getpwuid(geteuid());
+ if(pw) {
+ char *home = pw->pw_dir;
+ if(home && home[0])
+ return checkhome(home, fname, FALSE);
+ }
+ }
+#endif /* PWD-stuff */
+ return NULL;
+}
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_findfile.h b/ap/lib/libcurl/curl-7.86.0/src/tool_findfile.h
new file mode 100755
index 0000000..5bae579
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_findfile.h
@@ -0,0 +1,36 @@
+#ifndef HEADER_CURL_TOOL_HOMEDIR_H
+#define HEADER_CURL_TOOL_HOMEDIR_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#ifdef WIN32
+#define CURLRC_DOTSCORE 2 /* look for underscore-prefixed name too */
+#else
+#define CURLRC_DOTSCORE 1 /* regular .curlrc check */
+#endif
+
+char *findfile(const char *fname, int dotscore);
+
+#endif /* HEADER_CURL_TOOL_HOMEDIR_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_formparse.c b/ap/lib/libcurl/curl-7.86.0/src/tool_formparse.c
new file mode 100755
index 0000000..d4fc651
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_formparse.c
@@ -0,0 +1,907 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#include "strcase.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_msgs.h"
+#include "tool_binmode.h"
+#include "tool_getparam.h"
+#include "tool_paramhlp.h"
+#include "tool_formparse.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+/* tool_mime functions. */
+static struct tool_mime *tool_mime_new(struct tool_mime *parent,
+ toolmimekind kind)
+{
+ struct tool_mime *m = (struct tool_mime *) calloc(1, sizeof(*m));
+
+ if(m) {
+ m->kind = kind;
+ m->parent = parent;
+ if(parent) {
+ m->prev = parent->subparts;
+ parent->subparts = m;
+ }
+ }
+ return m;
+}
+
+static struct tool_mime *tool_mime_new_parts(struct tool_mime *parent)
+{
+ return tool_mime_new(parent, TOOLMIME_PARTS);
+}
+
+static struct tool_mime *tool_mime_new_data(struct tool_mime *parent,
+ char *data)
+{
+ struct tool_mime *m = NULL;
+
+ data = strdup(data);
+ if(data) {
+ m = tool_mime_new(parent, TOOLMIME_DATA);
+ if(!m)
+ free(data);
+ else
+ m->data = data;
+ }
+ return m;
+}
+
+static struct tool_mime *tool_mime_new_filedata(struct tool_mime *parent,
+ const char *filename,
+ bool isremotefile,
+ CURLcode *errcode)
+{
+ CURLcode result = CURLE_OK;
+ struct tool_mime *m = NULL;
+
+ *errcode = CURLE_OUT_OF_MEMORY;
+ if(strcmp(filename, "-")) {
+ /* This is a normal file. */
+ char *filedup = strdup(filename);
+ if(filedup) {
+ m = tool_mime_new(parent, TOOLMIME_FILE);
+ if(!m)
+ free(filedup);
+ else {
+ m->data = filedup;
+ if(!isremotefile)
+ m->kind = TOOLMIME_FILEDATA;
+ *errcode = CURLE_OK;
+ }
+ }
+ }
+ else { /* Standard input. */
+ int fd = fileno(stdin);
+ char *data = NULL;
+ curl_off_t size;
+ curl_off_t origin;
+ struct_stat sbuf;
+
+ set_binmode(stdin);
+ origin = ftell(stdin);
+ /* If stdin is a regular file, do not buffer data but read it
+ when needed. */
+ if(fd >= 0 && origin >= 0 && !fstat(fd, &sbuf) &&
+#ifdef __VMS
+ sbuf.st_fab_rfm != FAB$C_VAR && sbuf.st_fab_rfm != FAB$C_VFC &&
+#endif
+ S_ISREG(sbuf.st_mode)) {
+ size = sbuf.st_size - origin;
+ if(size < 0)
+ size = 0;
+ }
+ else { /* Not suitable for direct use, buffer stdin data. */
+ size_t stdinsize = 0;
+
+ switch(file2memory(&data, &stdinsize, stdin)) {
+ case PARAM_NO_MEM:
+ return m;
+ case PARAM_READ_ERROR:
+ result = CURLE_READ_ERROR;
+ break;
+ default:
+ if(!stdinsize) {
+ /* Zero-length data has been freed. Re-create it. */
+ data = strdup("");
+ if(!data)
+ return m;
+ }
+ break;
+ }
+ size = curlx_uztoso(stdinsize);
+ origin = 0;
+ }
+ m = tool_mime_new(parent, TOOLMIME_STDIN);
+ if(!m)
+ Curl_safefree(data);
+ else {
+ m->data = data;
+ m->origin = origin;
+ m->size = size;
+ m->curpos = 0;
+ if(!isremotefile)
+ m->kind = TOOLMIME_STDINDATA;
+ *errcode = result;
+ }
+ }
+ return m;
+}
+
+void tool_mime_free(struct tool_mime *mime)
+{
+ if(mime) {
+ if(mime->subparts)
+ tool_mime_free(mime->subparts);
+ if(mime->prev)
+ tool_mime_free(mime->prev);
+ Curl_safefree(mime->name);
+ Curl_safefree(mime->filename);
+ Curl_safefree(mime->type);
+ Curl_safefree(mime->encoder);
+ Curl_safefree(mime->data);
+ curl_slist_free_all(mime->headers);
+ free(mime);
+ }
+}
+
+
+/* Mime part callbacks for stdin. */
+size_t tool_mime_stdin_read(char *buffer,
+ size_t size, size_t nitems, void *arg)
+{
+ struct tool_mime *sip = (struct tool_mime *) arg;
+ curl_off_t bytesleft;
+ (void) size; /* Always 1: ignored. */
+
+ if(sip->size >= 0) {
+ if(sip->curpos >= sip->size)
+ return 0; /* At eof. */
+ bytesleft = sip->size - sip->curpos;
+ if(curlx_uztoso(nitems) > bytesleft)
+ nitems = curlx_sotouz(bytesleft);
+ }
+ if(nitems) {
+ if(sip->data) {
+ /* Return data from memory. */
+ memcpy(buffer, sip->data + curlx_sotouz(sip->curpos), nitems);
+ }
+ else {
+ /* Read from stdin. */
+ nitems = fread(buffer, 1, nitems, stdin);
+ if(ferror(stdin)) {
+ /* Show error only once. */
+ if(sip->config) {
+ warnf(sip->config, "stdin: %s\n", strerror(errno));
+ sip->config = NULL;
+ }
+ return CURL_READFUNC_ABORT;
+ }
+ }
+ sip->curpos += curlx_uztoso(nitems);
+ }
+ return nitems;
+}
+
+int tool_mime_stdin_seek(void *instream, curl_off_t offset, int whence)
+{
+ struct tool_mime *sip = (struct tool_mime *) instream;
+
+ switch(whence) {
+ case SEEK_CUR:
+ offset += sip->curpos;
+ break;
+ case SEEK_END:
+ offset += sip->size;
+ break;
+ }
+ if(offset < 0)
+ return CURL_SEEKFUNC_CANTSEEK;
+ if(!sip->data) {
+ if(fseek(stdin, (long) (offset + sip->origin), SEEK_SET))
+ return CURL_SEEKFUNC_CANTSEEK;
+ }
+ sip->curpos = offset;
+ return CURL_SEEKFUNC_OK;
+}
+
+/* Translate an internal mime tree into a libcurl mime tree. */
+
+static CURLcode tool2curlparts(CURL *curl, struct tool_mime *m,
+ curl_mime *mime)
+{
+ CURLcode ret = CURLE_OK;
+ curl_mimepart *part = NULL;
+ curl_mime *submime = NULL;
+ const char *filename = NULL;
+
+ if(m) {
+ ret = tool2curlparts(curl, m->prev, mime);
+ if(!ret) {
+ part = curl_mime_addpart(mime);
+ if(!part)
+ ret = CURLE_OUT_OF_MEMORY;
+ }
+ if(!ret) {
+ filename = m->filename;
+ switch(m->kind) {
+ case TOOLMIME_PARTS:
+ ret = tool2curlmime(curl, m, &submime);
+ if(!ret) {
+ ret = curl_mime_subparts(part, submime);
+ if(ret)
+ curl_mime_free(submime);
+ }
+ break;
+
+ case TOOLMIME_DATA:
+ ret = curl_mime_data(part, m->data, CURL_ZERO_TERMINATED);
+ break;
+
+ case TOOLMIME_FILE:
+ case TOOLMIME_FILEDATA:
+ ret = curl_mime_filedata(part, m->data);
+ if(!ret && m->kind == TOOLMIME_FILEDATA && !filename)
+ ret = curl_mime_filename(part, NULL);
+ break;
+
+ case TOOLMIME_STDIN:
+ if(!filename)
+ filename = "-";
+ /* FALLTHROUGH */
+ case TOOLMIME_STDINDATA:
+ ret = curl_mime_data_cb(part, m->size,
+ (curl_read_callback) tool_mime_stdin_read,
+ (curl_seek_callback) tool_mime_stdin_seek,
+ NULL, m);
+ break;
+
+ default:
+ /* Other cases not possible in this context. */
+ break;
+ }
+ }
+ if(!ret && filename)
+ ret = curl_mime_filename(part, filename);
+ if(!ret)
+ ret = curl_mime_type(part, m->type);
+ if(!ret)
+ ret = curl_mime_headers(part, m->headers, 0);
+ if(!ret)
+ ret = curl_mime_encoder(part, m->encoder);
+ if(!ret)
+ ret = curl_mime_name(part, m->name);
+ }
+ return ret;
+}
+
+CURLcode tool2curlmime(CURL *curl, struct tool_mime *m, curl_mime **mime)
+{
+ CURLcode ret = CURLE_OK;
+
+ *mime = curl_mime_init(curl);
+ if(!*mime)
+ ret = CURLE_OUT_OF_MEMORY;
+ else
+ ret = tool2curlparts(curl, m->subparts, *mime);
+ if(ret) {
+ curl_mime_free(*mime);
+ *mime = NULL;
+ }
+ return ret;
+}
+
+/*
+ * helper function to get a word from form param
+ * after call get_parm_word, str either point to string end
+ * or point to any of end chars.
+ */
+static char *get_param_word(struct OperationConfig *config, char **str,
+ char **end_pos, char endchar)
+{
+ char *ptr = *str;
+ /* the first non-space char is here */
+ char *word_begin = ptr;
+ char *ptr2;
+ char *escape = NULL;
+
+ if(*ptr == '"') {
+ ++ptr;
+ while(*ptr) {
+ if(*ptr == '\\') {
+ if(ptr[1] == '\\' || ptr[1] == '"') {
+ /* remember the first escape position */
+ if(!escape)
+ escape = ptr;
+ /* skip escape of back-slash or double-quote */
+ ptr += 2;
+ continue;
+ }
+ }
+ if(*ptr == '"') {
+ bool trailing_data = FALSE;
+ *end_pos = ptr;
+ if(escape) {
+ /* has escape, we restore the unescaped string here */
+ ptr = ptr2 = escape;
+ do {
+ if(*ptr == '\\' && (ptr[1] == '\\' || ptr[1] == '"'))
+ ++ptr;
+ *ptr2++ = *ptr++;
+ }
+ while(ptr < *end_pos);
+ *end_pos = ptr2;
+ }
+ ++ptr;
+ while(*ptr && *ptr != ';' && *ptr != endchar) {
+ if(!ISSPACE(*ptr))
+ trailing_data = TRUE;
+ ++ptr;
+ }
+ if(trailing_data)
+ warnf(config->global, "Trailing data after quoted form parameter\n");
+ *str = ptr;
+ return word_begin + 1;
+ }
+ ++ptr;
+ }
+ /* end quote is missing, treat it as non-quoted. */
+ ptr = word_begin;
+ }
+
+ while(*ptr && *ptr != ';' && *ptr != endchar)
+ ++ptr;
+ *str = *end_pos = ptr;
+ return word_begin;
+}
+
+/* Append slist item and return -1 if failed. */
+static int slist_append(struct curl_slist **plist, const char *data)
+{
+ struct curl_slist *s = curl_slist_append(*plist, data);
+
+ if(!s)
+ return -1;
+
+ *plist = s;
+ return 0;
+}
+
+/* Read headers from a file and append to list. */
+static int read_field_headers(struct OperationConfig *config,
+ const char *filename, FILE *fp,
+ struct curl_slist **pheaders)
+{
+ size_t hdrlen = 0;
+ size_t pos = 0;
+ bool incomment = FALSE;
+ int lineno = 1;
+ char hdrbuf[999] = ""; /* Max. header length + 1. */
+
+ for(;;) {
+ int c = getc(fp);
+ if(c == EOF || (!pos && !ISSPACE(c))) {
+ /* Strip and flush the current header. */
+ while(hdrlen && ISSPACE(hdrbuf[hdrlen - 1]))
+ hdrlen--;
+ if(hdrlen) {
+ hdrbuf[hdrlen] = '\0';
+ if(slist_append(pheaders, hdrbuf)) {
+ fprintf(config->global->errors,
+ "Out of memory for field headers!\n");
+ return -1;
+ }
+ hdrlen = 0;
+ }
+ }
+
+ switch(c) {
+ case EOF:
+ if(ferror(fp)) {
+ fprintf(config->global->errors,
+ "Header file %s read error: %s\n", filename, strerror(errno));
+ return -1;
+ }
+ return 0; /* Done. */
+ case '\r':
+ continue; /* Ignore. */
+ case '\n':
+ pos = 0;
+ incomment = FALSE;
+ lineno++;
+ continue;
+ case '#':
+ if(!pos)
+ incomment = TRUE;
+ break;
+ }
+
+ pos++;
+ if(!incomment) {
+ if(hdrlen == sizeof(hdrbuf) - 1) {
+ warnf(config->global, "File %s line %d: header too long (truncated)\n",
+ filename, lineno);
+ c = ' ';
+ }
+ if(hdrlen <= sizeof(hdrbuf) - 1)
+ hdrbuf[hdrlen++] = (char) c;
+ }
+ }
+ /* NOTREACHED */
+}
+
+static int get_param_part(struct OperationConfig *config, char endchar,
+ char **str, char **pdata, char **ptype,
+ char **pfilename, char **pencoder,
+ struct curl_slist **pheaders)
+{
+ char *p = *str;
+ char *type = NULL;
+ char *filename = NULL;
+ char *encoder = NULL;
+ char *endpos;
+ char *tp;
+ char sep;
+ char type_major[128] = "";
+ char type_minor[128] = "";
+ char *endct = NULL;
+ struct curl_slist *headers = NULL;
+
+ if(ptype)
+ *ptype = NULL;
+ if(pfilename)
+ *pfilename = NULL;
+ if(pheaders)
+ *pheaders = NULL;
+ if(pencoder)
+ *pencoder = NULL;
+ while(ISSPACE(*p))
+ p++;
+ tp = p;
+ *pdata = get_param_word(config, &p, &endpos, endchar);
+ /* If not quoted, strip trailing spaces. */
+ if(*pdata == tp)
+ while(endpos > *pdata && ISSPACE(endpos[-1]))
+ endpos--;
+ sep = *p;
+ *endpos = '\0';
+ while(sep == ';') {
+ while(p++ && ISSPACE(*p))
+ ;
+
+ if(!endct && checkprefix("type=", p)) {
+ for(p += 5; ISSPACE(*p); p++)
+ ;
+ /* set type pointer */
+ type = p;
+
+ /* verify that this is a fine type specifier */
+ if(2 != sscanf(type, "%127[^/ ]/%127[^;, \n]", type_major, type_minor)) {
+ warnf(config->global, "Illegally formatted content-type field!\n");
+ curl_slist_free_all(headers);
+ return -1; /* illegal content-type syntax! */
+ }
+
+ /* now point beyond the content-type specifier */
+ p = type + strlen(type_major) + strlen(type_minor) + 1;
+ for(endct = p; *p && *p != ';' && *p != endchar; p++)
+ if(!ISSPACE(*p))
+ endct = p + 1;
+ sep = *p;
+ }
+ else if(checkprefix("filename=", p)) {
+ if(endct) {
+ *endct = '\0';
+ endct = NULL;
+ }
+ for(p += 9; ISSPACE(*p); p++)
+ ;
+ tp = p;
+ filename = get_param_word(config, &p, &endpos, endchar);
+ /* If not quoted, strip trailing spaces. */
+ if(filename == tp)
+ while(endpos > filename && ISSPACE(endpos[-1]))
+ endpos--;
+ sep = *p;
+ *endpos = '\0';
+ }
+ else if(checkprefix("headers=", p)) {
+ if(endct) {
+ *endct = '\0';
+ endct = NULL;
+ }
+ p += 8;
+ if(*p == '@' || *p == '<') {
+ char *hdrfile;
+ FILE *fp;
+ /* Read headers from a file. */
+
+ do {
+ p++;
+ } while(ISSPACE(*p));
+ tp = p;
+ hdrfile = get_param_word(config, &p, &endpos, endchar);
+ /* If not quoted, strip trailing spaces. */
+ if(hdrfile == tp)
+ while(endpos > hdrfile && ISSPACE(endpos[-1]))
+ endpos--;
+ sep = *p;
+ *endpos = '\0';
+ fp = fopen(hdrfile, FOPEN_READTEXT);
+ if(!fp)
+ warnf(config->global, "Cannot read from %s: %s\n", hdrfile,
+ strerror(errno));
+ else {
+ int i = read_field_headers(config, hdrfile, fp, &headers);
+
+ fclose(fp);
+ if(i) {
+ curl_slist_free_all(headers);
+ return -1;
+ }
+ }
+ }
+ else {
+ char *hdr;
+
+ while(ISSPACE(*p))
+ p++;
+ tp = p;
+ hdr = get_param_word(config, &p, &endpos, endchar);
+ /* If not quoted, strip trailing spaces. */
+ if(hdr == tp)
+ while(endpos > hdr && ISSPACE(endpos[-1]))
+ endpos--;
+ sep = *p;
+ *endpos = '\0';
+ if(slist_append(&headers, hdr)) {
+ fprintf(config->global->errors, "Out of memory for field header!\n");
+ curl_slist_free_all(headers);
+ return -1;
+ }
+ }
+ }
+ else if(checkprefix("encoder=", p)) {
+ if(endct) {
+ *endct = '\0';
+ endct = NULL;
+ }
+ for(p += 8; ISSPACE(*p); p++)
+ ;
+ tp = p;
+ encoder = get_param_word(config, &p, &endpos, endchar);
+ /* If not quoted, strip trailing spaces. */
+ if(encoder == tp)
+ while(endpos > encoder && ISSPACE(endpos[-1]))
+ endpos--;
+ sep = *p;
+ *endpos = '\0';
+ }
+ else if(endct) {
+ /* This is part of content type. */
+ for(endct = p; *p && *p != ';' && *p != endchar; p++)
+ if(!ISSPACE(*p))
+ endct = p + 1;
+ sep = *p;
+ }
+ else {
+ /* unknown prefix, skip to next block */
+ char *unknown = get_param_word(config, &p, &endpos, endchar);
+
+ sep = *p;
+ *endpos = '\0';
+ if(*unknown)
+ warnf(config->global, "skip unknown form field: %s\n", unknown);
+ }
+ }
+
+ /* Terminate content type. */
+ if(endct)
+ *endct = '\0';
+
+ if(ptype)
+ *ptype = type;
+ else if(type)
+ warnf(config->global, "Field content type not allowed here: %s\n", type);
+
+ if(pfilename)
+ *pfilename = filename;
+ else if(filename)
+ warnf(config->global,
+ "Field file name not allowed here: %s\n", filename);
+
+ if(pencoder)
+ *pencoder = encoder;
+ else if(encoder)
+ warnf(config->global,
+ "Field encoder not allowed here: %s\n", encoder);
+
+ if(pheaders)
+ *pheaders = headers;
+ else if(headers) {
+ warnf(config->global,
+ "Field headers not allowed here: %s\n", headers->data);
+ curl_slist_free_all(headers);
+ }
+
+ *str = p;
+ return sep & 0xFF;
+}
+
+
+/***************************************************************************
+ *
+ * formparse()
+ *
+ * Reads a 'name=value' parameter and builds the appropriate linked list.
+ *
+ * If the value is of the form '<filename', field data is read from the
+ * given file.
+
+ * Specify files to upload with 'name=@filename', or 'name=@"filename"'
+ * in case the filename contain ',' or ';'. Supports specified
+ * given Content-Type of the files. Such as ';type=<content-type>'.
+ *
+ * If literal_value is set, any initial '@' or '<' in the value string
+ * loses its special meaning, as does any embedded ';type='.
+ *
+ * You may specify more than one file for a single name (field). Specify
+ * multiple files by writing it like:
+ *
+ * 'name=@filename,filename2,filename3'
+ *
+ * or use double-quotes quote the filename:
+ *
+ * 'name=@"filename","filename2","filename3"'
+ *
+ * If you want content-types specified for each too, write them like:
+ *
+ * 'name=@filename;type=image/gif,filename2,filename3'
+ *
+ * If you want custom headers added for a single part, write them in a separate
+ * file and do like this:
+ *
+ * 'name=foo;headers=@headerfile' or why not
+ * 'name=@filemame;headers=@headerfile'
+ *
+ * To upload a file, but to fake the file name that will be included in the
+ * formpost, do like this:
+ *
+ * 'name=@filename;filename=/dev/null' or quote the faked filename like:
+ * 'name=@filename;filename="play, play, and play.txt"'
+ *
+ * If filename/path contains ',' or ';', it must be quoted by double-quotes,
+ * else curl will fail to figure out the correct filename. if the filename
+ * tobe quoted contains '"' or '\', '"' and '\' must be escaped by backslash.
+ *
+ ***************************************************************************/
+
+#define SET_TOOL_MIME_PTR(m, field) \
+ do { \
+ if(field) { \
+ (m)->field = strdup(field); \
+ if(!(m)->field) \
+ goto fail; \
+ } \
+ } while(0)
+
+int formparse(struct OperationConfig *config,
+ const char *input,
+ struct tool_mime **mimeroot,
+ struct tool_mime **mimecurrent,
+ bool literal_value)
+{
+ /* input MUST be a string in the format 'name=contents' and we'll
+ build a linked list with the info */
+ char *name = NULL;
+ char *contents = NULL;
+ char *contp;
+ char *data;
+ char *type = NULL;
+ char *filename = NULL;
+ char *encoder = NULL;
+ struct curl_slist *headers = NULL;
+ struct tool_mime *part = NULL;
+ CURLcode res;
+ int err = 1;
+
+ /* Allocate the main mime structure if needed. */
+ if(!*mimecurrent) {
+ *mimeroot = tool_mime_new_parts(NULL);
+ if(!*mimeroot)
+ goto fail;
+ *mimecurrent = *mimeroot;
+ }
+
+ /* Make a copy we can overwrite. */
+ contents = strdup(input);
+ if(!contents)
+ goto fail;
+
+ /* Scan for the end of the name. */
+ contp = strchr(contents, '=');
+ if(contp) {
+ int sep = '\0';
+ if(contp > contents)
+ name = contents;
+ *contp++ = '\0';
+
+ if(*contp == '(' && !literal_value) {
+ /* Starting a multipart. */
+ sep = get_param_part(config, '\0',
+ &contp, &data, &type, NULL, NULL, &headers);
+ if(sep < 0)
+ goto fail;
+ part = tool_mime_new_parts(*mimecurrent);
+ if(!part)
+ goto fail;
+ *mimecurrent = part;
+ part->headers = headers;
+ headers = NULL;
+ SET_TOOL_MIME_PTR(part, type);
+ }
+ else if(!name && !strcmp(contp, ")") && !literal_value) {
+ /* Ending a multipart. */
+ if(*mimecurrent == *mimeroot) {
+ warnf(config->global, "no multipart to terminate!\n");
+ goto fail;
+ }
+ *mimecurrent = (*mimecurrent)->parent;
+ }
+ else if('@' == contp[0] && !literal_value) {
+
+ /* we use the @-letter to indicate file name(s) */
+
+ struct tool_mime *subparts = NULL;
+
+ do {
+ /* since this was a file, it may have a content-type specifier
+ at the end too, or a filename. Or both. */
+ ++contp;
+ sep = get_param_part(config, ',', &contp,
+ &data, &type, &filename, &encoder, &headers);
+ if(sep < 0) {
+ goto fail;
+ }
+
+ /* now contp point to comma or string end.
+ If more files to come, make sure we have multiparts. */
+ if(!subparts) {
+ if(sep != ',') /* If there is a single file. */
+ subparts = *mimecurrent;
+ else {
+ subparts = tool_mime_new_parts(*mimecurrent);
+ if(!subparts)
+ goto fail;
+ }
+ }
+
+ /* Store that file in a part. */
+ part = tool_mime_new_filedata(subparts, data, TRUE, &res);
+ if(!part)
+ goto fail;
+ part->headers = headers;
+ headers = NULL;
+ part->config = config->global;
+ if(res == CURLE_READ_ERROR) {
+ /* An error occurred while reading stdin: if read has started,
+ issue the error now. Else, delay it until processed by
+ libcurl. */
+ if(part->size > 0) {
+ warnf(config->global,
+ "error while reading standard input\n");
+ goto fail;
+ }
+ Curl_safefree(part->data);
+ part->data = NULL;
+ part->size = -1;
+ res = CURLE_OK;
+ }
+ SET_TOOL_MIME_PTR(part, filename);
+ SET_TOOL_MIME_PTR(part, type);
+ SET_TOOL_MIME_PTR(part, encoder);
+
+ /* *contp could be '\0', so we just check with the delimiter */
+ } while(sep); /* loop if there's another file name */
+ part = (*mimecurrent)->subparts; /* Set name on group. */
+ }
+ else {
+ if(*contp == '<' && !literal_value) {
+ ++contp;
+ sep = get_param_part(config, '\0', &contp,
+ &data, &type, NULL, &encoder, &headers);
+ if(sep < 0)
+ goto fail;
+
+ part = tool_mime_new_filedata(*mimecurrent, data, FALSE,
+ &res);
+ if(!part)
+ goto fail;
+ part->headers = headers;
+ headers = NULL;
+ part->config = config->global;
+ if(res == CURLE_READ_ERROR) {
+ /* An error occurred while reading stdin: if read has started,
+ issue the error now. Else, delay it until processed by
+ libcurl. */
+ if(part->size > 0) {
+ warnf(config->global,
+ "error while reading standard input\n");
+ goto fail;
+ }
+ Curl_safefree(part->data);
+ part->data = NULL;
+ part->size = -1;
+ res = CURLE_OK;
+ }
+ }
+ else {
+ if(literal_value)
+ data = contp;
+ else {
+ sep = get_param_part(config, '\0', &contp,
+ &data, &type, &filename, &encoder, &headers);
+ if(sep < 0)
+ goto fail;
+ }
+
+ part = tool_mime_new_data(*mimecurrent, data);
+ if(!part)
+ goto fail;
+ part->headers = headers;
+ headers = NULL;
+ }
+
+ SET_TOOL_MIME_PTR(part, filename);
+ SET_TOOL_MIME_PTR(part, type);
+ SET_TOOL_MIME_PTR(part, encoder);
+
+ if(sep) {
+ *contp = (char) sep;
+ warnf(config->global,
+ "garbage at end of field specification: %s\n", contp);
+ }
+ }
+
+ /* Set part name. */
+ SET_TOOL_MIME_PTR(part, name);
+ }
+ else {
+ warnf(config->global, "Illegally formatted input field!\n");
+ goto fail;
+ }
+ err = 0;
+ fail:
+ Curl_safefree(contents);
+ curl_slist_free_all(headers);
+ return err;
+}
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_formparse.h b/ap/lib/libcurl/curl-7.86.0/src/tool_formparse.h
new file mode 100755
index 0000000..8c0461c
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_formparse.h
@@ -0,0 +1,73 @@
+#ifndef HEADER_CURL_TOOL_FORMPARSE_H
+#define HEADER_CURL_TOOL_FORMPARSE_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+/* Private structure for mime/parts. */
+
+typedef enum {
+ TOOLMIME_NONE = 0,
+ TOOLMIME_PARTS,
+ TOOLMIME_DATA,
+ TOOLMIME_FILE,
+ TOOLMIME_FILEDATA,
+ TOOLMIME_STDIN,
+ TOOLMIME_STDINDATA
+} toolmimekind;
+
+struct tool_mime {
+ /* Structural fields. */
+ toolmimekind kind; /* Part kind. */
+ struct tool_mime *parent; /* Parent item. */
+ struct tool_mime *prev; /* Previous sibling (reverse order link). */
+ /* Common fields. */
+ char *data; /* Actual data or data filename. */
+ char *name; /* Part name. */
+ char *filename; /* Part's filename. */
+ char *type; /* Part's mime type. */
+ char *encoder; /* Part's requested encoding. */
+ struct curl_slist *headers; /* User-defined headers. */
+ /* TOOLMIME_PARTS fields. */
+ struct tool_mime *subparts; /* Part's subparts. */
+ /* TOOLMIME_STDIN/TOOLMIME_STDINDATA fields. */
+ curl_off_t origin; /* Stdin read origin offset. */
+ curl_off_t size; /* Stdin data size. */
+ curl_off_t curpos; /* Stdin current read position. */
+ struct GlobalConfig *config; /* For access from callback. */
+};
+
+size_t tool_mime_stdin_read(char *buffer,
+ size_t size, size_t nitems, void *arg);
+int tool_mime_stdin_seek(void *instream, curl_off_t offset, int whence);
+
+int formparse(struct OperationConfig *config,
+ const char *input,
+ struct tool_mime **mimeroot,
+ struct tool_mime **mimecurrent,
+ bool literal_value);
+CURLcode tool2curlmime(CURL *curl, struct tool_mime *m, curl_mime **mime);
+void tool_mime_free(struct tool_mime *mime);
+
+#endif /* HEADER_CURL_TOOL_FORMPARSE_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_getparam.c b/ap/lib/libcurl/curl-7.86.0/src/tool_getparam.c
new file mode 100755
index 0000000..af4b3a6
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_getparam.c
@@ -0,0 +1,2552 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#include "strcase.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_binmode.h"
+#include "tool_cfgable.h"
+#include "tool_cb_prg.h"
+#include "tool_filetime.h"
+#include "tool_formparse.h"
+#include "tool_getparam.h"
+#include "tool_helpers.h"
+#include "tool_libinfo.h"
+#include "tool_msgs.h"
+#include "tool_paramhlp.h"
+#include "tool_parsecfg.h"
+#include "tool_main.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+#ifdef MSDOS
+# define USE_WATT32
+#endif
+
+#define GetStr(str,val) do { \
+ if(*(str)) { \
+ free(*(str)); \
+ *(str) = NULL; \
+ } \
+ if((val)) { \
+ *(str) = strdup((val)); \
+ if(!(*(str))) \
+ return PARAM_NO_MEM; \
+ } \
+} while(0)
+
+struct LongShort {
+ const char *letter; /* short name option */
+ const char *lname; /* long name option */
+ enum {
+ ARG_NONE, /* stand-alone but not a boolean */
+ ARG_BOOL, /* accepts a --no-[name] prefix */
+ ARG_STRING, /* requires an argument */
+ ARG_FILENAME /* requires an argument, usually a file name */
+ } desc;
+};
+
+static const struct LongShort aliases[]= {
+ /* 'letter' strings with more than one character have *no* short option to
+ mention. */
+ {"*@", "url", ARG_STRING},
+ {"*4", "dns-ipv4-addr", ARG_STRING},
+ {"*6", "dns-ipv6-addr", ARG_STRING},
+ {"*a", "random-file", ARG_FILENAME},
+ {"*b", "egd-file", ARG_STRING},
+ {"*B", "oauth2-bearer", ARG_STRING},
+ {"*c", "connect-timeout", ARG_STRING},
+ {"*C", "doh-url" , ARG_STRING},
+ {"*d", "ciphers", ARG_STRING},
+ {"*D", "dns-interface", ARG_STRING},
+ {"*e", "disable-epsv", ARG_BOOL},
+ {"*f", "disallow-username-in-url", ARG_BOOL},
+ {"*E", "epsv", ARG_BOOL},
+ /* 'epsv' made like this to make --no-epsv and --epsv to work
+ although --disable-epsv is the documented option */
+ {"*F", "dns-servers", ARG_STRING},
+ {"*g", "trace", ARG_FILENAME},
+ {"*G", "npn", ARG_BOOL},
+ {"*h", "trace-ascii", ARG_FILENAME},
+ {"*H", "alpn", ARG_BOOL},
+ {"*i", "limit-rate", ARG_STRING},
+ {"*I", "rate", ARG_STRING},
+ {"*j", "compressed", ARG_BOOL},
+ {"*J", "tr-encoding", ARG_BOOL},
+ {"*k", "digest", ARG_BOOL},
+ {"*l", "negotiate", ARG_BOOL},
+ {"*m", "ntlm", ARG_BOOL},
+ {"*M", "ntlm-wb", ARG_BOOL},
+ {"*n", "basic", ARG_BOOL},
+ {"*o", "anyauth", ARG_BOOL},
+#ifdef USE_WATT32
+ {"*p", "wdebug", ARG_BOOL},
+#endif
+ {"*q", "ftp-create-dirs", ARG_BOOL},
+ {"*r", "create-dirs", ARG_BOOL},
+ {"*R", "create-file-mode", ARG_STRING},
+ {"*s", "max-redirs", ARG_STRING},
+ {"*t", "proxy-ntlm", ARG_BOOL},
+ {"*u", "crlf", ARG_BOOL},
+ {"*v", "stderr", ARG_FILENAME},
+ {"*V", "aws-sigv4", ARG_STRING},
+ {"*w", "interface", ARG_STRING},
+ {"*x", "krb", ARG_STRING},
+ {"*x", "krb4", ARG_STRING},
+ /* 'krb4' is the previous name */
+ {"*X", "haproxy-protocol", ARG_BOOL},
+ {"*y", "max-filesize", ARG_STRING},
+ {"*z", "disable-eprt", ARG_BOOL},
+ {"*Z", "eprt", ARG_BOOL},
+ /* 'eprt' made like this to make --no-eprt and --eprt to work
+ although --disable-eprt is the documented option */
+ {"*~", "xattr", ARG_BOOL},
+ {"$a", "ftp-ssl", ARG_BOOL},
+ /* 'ftp-ssl' deprecated name since 7.20.0 */
+ {"$a", "ssl", ARG_BOOL},
+ /* 'ssl' new option name in 7.20.0, previously this was ftp-ssl */
+ {"$b", "ftp-pasv", ARG_BOOL},
+ {"$c", "socks5", ARG_STRING},
+ {"$d", "tcp-nodelay", ARG_BOOL},
+ {"$e", "proxy-digest", ARG_BOOL},
+ {"$f", "proxy-basic", ARG_BOOL},
+ {"$g", "retry", ARG_STRING},
+ {"$V", "retry-connrefused", ARG_BOOL},
+ {"$h", "retry-delay", ARG_STRING},
+ {"$i", "retry-max-time", ARG_STRING},
+ {"$k", "proxy-negotiate", ARG_BOOL},
+ {"$l", "form-escape", ARG_BOOL},
+ {"$m", "ftp-account", ARG_STRING},
+ {"$n", "proxy-anyauth", ARG_BOOL},
+ {"$o", "trace-time", ARG_BOOL},
+ {"$p", "ignore-content-length", ARG_BOOL},
+ {"$q", "ftp-skip-pasv-ip", ARG_BOOL},
+ {"$r", "ftp-method", ARG_STRING},
+ {"$s", "local-port", ARG_STRING},
+ {"$t", "socks4", ARG_STRING},
+ {"$T", "socks4a", ARG_STRING},
+ {"$u", "ftp-alternative-to-user", ARG_STRING},
+ {"$v", "ftp-ssl-reqd", ARG_BOOL},
+ /* 'ftp-ssl-reqd' deprecated name since 7.20.0 */
+ {"$v", "ssl-reqd", ARG_BOOL},
+ /* 'ssl-reqd' new in 7.20.0, previously this was ftp-ssl-reqd */
+ {"$w", "sessionid", ARG_BOOL},
+ /* 'sessionid' listed as --no-sessionid in the help */
+ {"$x", "ftp-ssl-control", ARG_BOOL},
+ {"$y", "ftp-ssl-ccc", ARG_BOOL},
+ {"$j", "ftp-ssl-ccc-mode", ARG_STRING},
+ {"$z", "libcurl", ARG_STRING},
+ {"$#", "raw", ARG_BOOL},
+ {"$0", "post301", ARG_BOOL},
+ {"$1", "keepalive", ARG_BOOL},
+ /* 'keepalive' listed as --no-keepalive in the help */
+ {"$2", "socks5-hostname", ARG_STRING},
+ {"$3", "keepalive-time", ARG_STRING},
+ {"$4", "post302", ARG_BOOL},
+ {"$5", "noproxy", ARG_STRING},
+ {"$7", "socks5-gssapi-nec", ARG_BOOL},
+ {"$8", "proxy1.0", ARG_STRING},
+ {"$9", "tftp-blksize", ARG_STRING},
+ {"$A", "mail-from", ARG_STRING},
+ {"$B", "mail-rcpt", ARG_STRING},
+ {"$C", "ftp-pret", ARG_BOOL},
+ {"$D", "proto", ARG_STRING},
+ {"$E", "proto-redir", ARG_STRING},
+ {"$F", "resolve", ARG_STRING},
+ {"$G", "delegation", ARG_STRING},
+ {"$H", "mail-auth", ARG_STRING},
+ {"$I", "post303", ARG_BOOL},
+ {"$J", "metalink", ARG_BOOL},
+ {"$6", "sasl-authzid", ARG_STRING},
+ {"$K", "sasl-ir", ARG_BOOL },
+ {"$L", "test-event", ARG_BOOL},
+ {"$M", "unix-socket", ARG_FILENAME},
+ {"$N", "path-as-is", ARG_BOOL},
+ {"$O", "socks5-gssapi-service", ARG_STRING},
+ /* 'socks5-gssapi-service' merged with'proxy-service-name' and
+ deprecated since 7.49.0 */
+ {"$O", "proxy-service-name", ARG_STRING},
+ {"$P", "service-name", ARG_STRING},
+ {"$Q", "proto-default", ARG_STRING},
+ {"$R", "expect100-timeout", ARG_STRING},
+ {"$S", "tftp-no-options", ARG_BOOL},
+ {"$U", "connect-to", ARG_STRING},
+ {"$W", "abstract-unix-socket", ARG_FILENAME},
+ {"$X", "tls-max", ARG_STRING},
+ {"$Y", "suppress-connect-headers", ARG_BOOL},
+ {"$Z", "compressed-ssh", ARG_BOOL},
+ {"$~", "happy-eyeballs-timeout-ms", ARG_STRING},
+ {"$!", "retry-all-errors", ARG_BOOL},
+ {"0", "http1.0", ARG_NONE},
+ {"01", "http1.1", ARG_NONE},
+ {"02", "http2", ARG_NONE},
+ {"03", "http2-prior-knowledge", ARG_NONE},
+ {"04", "http3", ARG_NONE},
+ {"09", "http0.9", ARG_BOOL},
+ {"1", "tlsv1", ARG_NONE},
+ {"10", "tlsv1.0", ARG_NONE},
+ {"11", "tlsv1.1", ARG_NONE},
+ {"12", "tlsv1.2", ARG_NONE},
+ {"13", "tlsv1.3", ARG_NONE},
+ {"1A", "tls13-ciphers", ARG_STRING},
+ {"1B", "proxy-tls13-ciphers", ARG_STRING},
+ {"2", "sslv2", ARG_NONE},
+ {"3", "sslv3", ARG_NONE},
+ {"4", "ipv4", ARG_NONE},
+ {"6", "ipv6", ARG_NONE},
+ {"a", "append", ARG_BOOL},
+ {"A", "user-agent", ARG_STRING},
+ {"b", "cookie", ARG_STRING},
+ {"ba", "alt-svc", ARG_STRING},
+ {"bb", "hsts", ARG_STRING},
+ {"B", "use-ascii", ARG_BOOL},
+ {"c", "cookie-jar", ARG_STRING},
+ {"C", "continue-at", ARG_STRING},
+ {"d", "data", ARG_STRING},
+ {"dr", "data-raw", ARG_STRING},
+ {"da", "data-ascii", ARG_STRING},
+ {"db", "data-binary", ARG_STRING},
+ {"de", "data-urlencode", ARG_STRING},
+ {"df", "json", ARG_STRING},
+ {"D", "dump-header", ARG_FILENAME},
+ {"e", "referer", ARG_STRING},
+ {"E", "cert", ARG_FILENAME},
+ {"Ea", "cacert", ARG_FILENAME},
+ {"Eb", "cert-type", ARG_STRING},
+ {"Ec", "key", ARG_FILENAME},
+ {"Ed", "key-type", ARG_STRING},
+ {"Ee", "pass", ARG_STRING},
+ {"Ef", "engine", ARG_STRING},
+ {"Eg", "capath", ARG_FILENAME},
+ {"Eh", "pubkey", ARG_STRING},
+ {"Ei", "hostpubmd5", ARG_STRING},
+ {"EF", "hostpubsha256", ARG_STRING},
+ {"Ej", "crlfile", ARG_FILENAME},
+ {"Ek", "tlsuser", ARG_STRING},
+ {"El", "tlspassword", ARG_STRING},
+ {"Em", "tlsauthtype", ARG_STRING},
+ {"En", "ssl-allow-beast", ARG_BOOL},
+ {"Eo", "ssl-auto-client-cert", ARG_BOOL},
+ {"EO", "proxy-ssl-auto-client-cert", ARG_BOOL},
+ {"Ep", "pinnedpubkey", ARG_STRING},
+ {"EP", "proxy-pinnedpubkey", ARG_STRING},
+ {"Eq", "cert-status", ARG_BOOL},
+ {"EQ", "doh-cert-status", ARG_BOOL},
+ {"Er", "false-start", ARG_BOOL},
+ {"Es", "ssl-no-revoke", ARG_BOOL},
+ {"ES", "ssl-revoke-best-effort", ARG_BOOL},
+ {"Et", "tcp-fastopen", ARG_BOOL},
+ {"Eu", "proxy-tlsuser", ARG_STRING},
+ {"Ev", "proxy-tlspassword", ARG_STRING},
+ {"Ew", "proxy-tlsauthtype", ARG_STRING},
+ {"Ex", "proxy-cert", ARG_FILENAME},
+ {"Ey", "proxy-cert-type", ARG_STRING},
+ {"Ez", "proxy-key", ARG_FILENAME},
+ {"E0", "proxy-key-type", ARG_STRING},
+ {"E1", "proxy-pass", ARG_STRING},
+ {"E2", "proxy-ciphers", ARG_STRING},
+ {"E3", "proxy-crlfile", ARG_FILENAME},
+ {"E4", "proxy-ssl-allow-beast", ARG_BOOL},
+ {"E5", "login-options", ARG_STRING},
+ {"E6", "proxy-cacert", ARG_FILENAME},
+ {"E7", "proxy-capath", ARG_FILENAME},
+ {"E8", "proxy-insecure", ARG_BOOL},
+ {"E9", "proxy-tlsv1", ARG_NONE},
+ {"EA", "socks5-basic", ARG_BOOL},
+ {"EB", "socks5-gssapi", ARG_BOOL},
+ {"EC", "etag-save", ARG_FILENAME},
+ {"ED", "etag-compare", ARG_FILENAME},
+ {"EE", "curves", ARG_STRING},
+ {"f", "fail", ARG_BOOL},
+ {"fa", "fail-early", ARG_BOOL},
+ {"fb", "styled-output", ARG_BOOL},
+ {"fc", "mail-rcpt-allowfails", ARG_BOOL},
+ {"fd", "fail-with-body", ARG_BOOL},
+ {"fe", "remove-on-error", ARG_BOOL},
+ {"F", "form", ARG_STRING},
+ {"Fs", "form-string", ARG_STRING},
+ {"g", "globoff", ARG_BOOL},
+ {"G", "get", ARG_NONE},
+ {"Ga", "request-target", ARG_STRING},
+ {"h", "help", ARG_BOOL},
+ {"H", "header", ARG_STRING},
+ {"Hp", "proxy-header", ARG_STRING},
+ {"i", "include", ARG_BOOL},
+ {"I", "head", ARG_BOOL},
+ {"j", "junk-session-cookies", ARG_BOOL},
+ {"J", "remote-header-name", ARG_BOOL},
+ {"k", "insecure", ARG_BOOL},
+ {"kd", "doh-insecure", ARG_BOOL},
+ {"K", "config", ARG_FILENAME},
+ {"l", "list-only", ARG_BOOL},
+ {"L", "location", ARG_BOOL},
+ {"Lt", "location-trusted", ARG_BOOL},
+ {"m", "max-time", ARG_STRING},
+ {"M", "manual", ARG_BOOL},
+ {"n", "netrc", ARG_BOOL},
+ {"no", "netrc-optional", ARG_BOOL},
+ {"ne", "netrc-file", ARG_FILENAME},
+ {"N", "buffer", ARG_BOOL},
+ /* 'buffer' listed as --no-buffer in the help */
+ {"o", "output", ARG_FILENAME},
+ {"O", "remote-name", ARG_BOOL},
+ {"Oa", "remote-name-all", ARG_BOOL},
+ {"Ob", "output-dir", ARG_STRING},
+ {"Oc", "clobber", ARG_BOOL},
+ {"p", "proxytunnel", ARG_BOOL},
+ {"P", "ftp-port", ARG_STRING},
+ {"q", "disable", ARG_BOOL},
+ {"Q", "quote", ARG_STRING},
+ {"r", "range", ARG_STRING},
+ {"R", "remote-time", ARG_BOOL},
+ {"s", "silent", ARG_BOOL},
+ {"S", "show-error", ARG_BOOL},
+ {"t", "telnet-option", ARG_STRING},
+ {"T", "upload-file", ARG_FILENAME},
+ {"u", "user", ARG_STRING},
+ {"U", "proxy-user", ARG_STRING},
+ {"v", "verbose", ARG_BOOL},
+ {"V", "version", ARG_BOOL},
+ {"w", "write-out", ARG_STRING},
+ {"x", "proxy", ARG_STRING},
+ {"xa", "preproxy", ARG_STRING},
+ {"X", "request", ARG_STRING},
+ {"Y", "speed-limit", ARG_STRING},
+ {"y", "speed-time", ARG_STRING},
+ {"z", "time-cond", ARG_STRING},
+ {"Z", "parallel", ARG_BOOL},
+ {"Zb", "parallel-max", ARG_STRING},
+ {"Zc", "parallel-immediate", ARG_BOOL},
+ {"#", "progress-bar", ARG_BOOL},
+ {"#m", "progress-meter", ARG_BOOL},
+ {":", "next", ARG_NONE},
+};
+
+/* Split the argument of -E to 'certname' and 'passphrase' separated by colon.
+ * We allow ':' and '\' to be escaped by '\' so that we can use certificate
+ * nicknames containing ':'. See <https://sourceforge.net/p/curl/bugs/1196/>
+ * for details. */
+#ifndef UNITTESTS
+static
+#endif
+void parse_cert_parameter(const char *cert_parameter,
+ char **certname,
+ char **passphrase)
+{
+ size_t param_length = strlen(cert_parameter);
+ size_t span;
+ const char *param_place = NULL;
+ char *certname_place = NULL;
+ *certname = NULL;
+ *passphrase = NULL;
+
+ /* most trivial assumption: cert_parameter is empty */
+ if(param_length == 0)
+ return;
+
+ /* next less trivial: cert_parameter starts 'pkcs11:' and thus
+ * looks like a RFC7512 PKCS#11 URI which can be used as-is.
+ * Also if cert_parameter contains no colon nor backslash, this
+ * means no passphrase was given and no characters escaped */
+ if(curl_strnequal(cert_parameter, "pkcs11:", 7) ||
+ !strpbrk(cert_parameter, ":\\")) {
+ *certname = strdup(cert_parameter);
+ return;
+ }
+ /* deal with escaped chars; find unescaped colon if it exists */
+ certname_place = malloc(param_length + 1);
+ if(!certname_place)
+ return;
+
+ *certname = certname_place;
+ param_place = cert_parameter;
+ while(*param_place) {
+ span = strcspn(param_place, ":\\");
+ strncpy(certname_place, param_place, span);
+ param_place += span;
+ certname_place += span;
+ /* we just ate all the non-special chars. now we're on either a special
+ * char or the end of the string. */
+ switch(*param_place) {
+ case '\0':
+ break;
+ case '\\':
+ param_place++;
+ switch(*param_place) {
+ case '\0':
+ *certname_place++ = '\\';
+ break;
+ case '\\':
+ *certname_place++ = '\\';
+ param_place++;
+ break;
+ case ':':
+ *certname_place++ = ':';
+ param_place++;
+ break;
+ default:
+ *certname_place++ = '\\';
+ *certname_place++ = *param_place;
+ param_place++;
+ break;
+ }
+ break;
+ case ':':
+ /* Since we live in a world of weirdness and confusion, the win32
+ dudes can use : when using drive letters and thus c:\file:password
+ needs to work. In order not to break compatibility, we still use : as
+ separator, but we try to detect when it is used for a file name! On
+ windows. */
+#ifdef WIN32
+ if((param_place == &cert_parameter[1]) &&
+ (cert_parameter[2] == '\\' || cert_parameter[2] == '/') &&
+ (ISALPHA(cert_parameter[0])) ) {
+ /* colon in the second column, followed by a backslash, and the
+ first character is an alphabetic letter:
+
+ this is a drive letter colon */
+ *certname_place++ = ':';
+ param_place++;
+ break;
+ }
+#endif
+ /* escaped colons and Windows drive letter colons were handled
+ * above; if we're still here, this is a separating colon */
+ param_place++;
+ if(*param_place) {
+ *passphrase = strdup(param_place);
+ }
+ goto done;
+ }
+ }
+done:
+ *certname_place = '\0';
+}
+
+/* Replace (in-place) '%20' by '+' according to RFC1866 */
+static size_t replace_url_encoded_space_by_plus(char *url)
+{
+ size_t orig_len = strlen(url);
+ size_t orig_index = 0;
+ size_t new_index = 0;
+
+ while(orig_index < orig_len) {
+ if((url[orig_index] == '%') &&
+ (url[orig_index + 1] == '2') &&
+ (url[orig_index + 2] == '0')) {
+ url[new_index] = '+';
+ orig_index += 3;
+ }
+ else{
+ if(new_index != orig_index) {
+ url[new_index] = url[orig_index];
+ }
+ orig_index++;
+ }
+ new_index++;
+ }
+
+ url[new_index] = 0; /* terminate string */
+
+ return new_index; /* new size */
+}
+
+static void
+GetFileAndPassword(char *nextarg, char **file, char **password)
+{
+ char *certname, *passphrase;
+ parse_cert_parameter(nextarg, &certname, &passphrase);
+ Curl_safefree(*file);
+ *file = certname;
+ if(passphrase) {
+ Curl_safefree(*password);
+ *password = passphrase;
+ }
+}
+
+/* Get a size parameter for '--limit-rate' or '--max-filesize'.
+ * We support a 'G', 'M' or 'K' suffix too.
+ */
+static ParameterError GetSizeParameter(struct GlobalConfig *global,
+ const char *arg,
+ const char *which,
+ curl_off_t *value_out)
+{
+ char *unit;
+ curl_off_t value;
+
+ if(curlx_strtoofft(arg, &unit, 0, &value)) {
+ warnf(global, "invalid number specified for %s\n", which);
+ return PARAM_BAD_USE;
+ }
+
+ if(!*unit)
+ unit = (char *)"b";
+ else if(strlen(unit) > 1)
+ unit = (char *)"w"; /* unsupported */
+
+ switch(*unit) {
+ case 'G':
+ case 'g':
+ if(value > (CURL_OFF_T_MAX / (1024*1024*1024)))
+ return PARAM_NUMBER_TOO_LARGE;
+ value *= 1024*1024*1024;
+ break;
+ case 'M':
+ case 'm':
+ if(value > (CURL_OFF_T_MAX / (1024*1024)))
+ return PARAM_NUMBER_TOO_LARGE;
+ value *= 1024*1024;
+ break;
+ case 'K':
+ case 'k':
+ if(value > (CURL_OFF_T_MAX / 1024))
+ return PARAM_NUMBER_TOO_LARGE;
+ value *= 1024;
+ break;
+ case 'b':
+ case 'B':
+ /* for plain bytes, leave as-is */
+ break;
+ default:
+ warnf(global, "unsupported %s unit. Use G, M, K or B!\n", which);
+ return PARAM_BAD_USE;
+ }
+ *value_out = value;
+ return PARAM_OK;
+}
+
+#ifdef HAVE_WRITABLE_ARGV
+static void cleanarg(argv_item_t str)
+{
+ /* now that GetStr has copied the contents of nextarg, wipe the next
+ * argument out so that the username:password isn't displayed in the
+ * system process list */
+ if(str) {
+ size_t len = strlen(str);
+ memset(str, ' ', len);
+ }
+}
+#else
+#define cleanarg(x)
+#endif
+
+/* --data-urlencode */
+static ParameterError data_urlencode(struct GlobalConfig *global,
+ char *nextarg,
+ char **postp,
+ size_t *lenp)
+{
+ /* [name]=[content], we encode the content part only
+ * [name]@[file name]
+ *
+ * Case 2: we first load the file using that name and then encode
+ * the content.
+ */
+ ParameterError err;
+ const char *p = strchr(nextarg, '=');
+ size_t nlen;
+ char is_file;
+ char *postdata = NULL;
+ size_t size = 0;
+ if(!p)
+ /* there was no '=' letter, check for a '@' instead */
+ p = strchr(nextarg, '@');
+ if(p) {
+ nlen = p - nextarg; /* length of the name part */
+ is_file = *p++; /* pass the separator */
+ }
+ else {
+ /* neither @ nor =, so no name and it isn't a file */
+ nlen = is_file = 0;
+ p = nextarg;
+ }
+ if('@' == is_file) {
+ FILE *file;
+ /* a '@' letter, it means that a file name or - (stdin) follows */
+ if(!strcmp("-", p)) {
+ file = stdin;
+ set_binmode(stdin);
+ }
+ else {
+ file = fopen(p, "rb");
+ if(!file)
+ warnf(global,
+ "Couldn't read data from file \"%s\", this makes "
+ "an empty POST.\n", nextarg);
+ }
+
+ err = file2memory(&postdata, &size, file);
+
+ if(file && (file != stdin))
+ fclose(file);
+ if(err)
+ return err;
+ }
+ else {
+ GetStr(&postdata, p);
+ if(postdata)
+ size = strlen(postdata);
+ }
+
+ if(!postdata) {
+ /* no data from the file, point to a zero byte string to make this
+ get sent as a POST anyway */
+ postdata = strdup("");
+ if(!postdata)
+ return PARAM_NO_MEM;
+ size = 0;
+ }
+ else {
+ char *enc = curl_easy_escape(NULL, postdata, (int)size);
+ Curl_safefree(postdata); /* no matter if it worked or not */
+ if(enc) {
+ /* replace (in-place) '%20' by '+' according to RFC1866 */
+ size_t enclen = replace_url_encoded_space_by_plus(enc);
+ /* now make a string with the name from above and append the
+ encoded string */
+ size_t outlen = nlen + enclen + 2;
+ char *n = malloc(outlen);
+ if(!n) {
+ curl_free(enc);
+ return PARAM_NO_MEM;
+ }
+ if(nlen > 0) { /* only append '=' if we have a name */
+ msnprintf(n, outlen, "%.*s=%s", (int)nlen, nextarg, enc);
+ size = outlen-1;
+ }
+ else {
+ strcpy(n, enc);
+ size = outlen-2; /* since no '=' was inserted */
+ }
+ curl_free(enc);
+ postdata = n;
+ }
+ else
+ return PARAM_NO_MEM;
+ }
+ *postp = postdata;
+ *lenp = size;
+ return PARAM_OK;
+}
+
+
+ParameterError getparameter(const char *flag, /* f or -long-flag */
+ char *nextarg, /* NULL if unset */
+ bool *usedarg, /* set to TRUE if the arg
+ has been used */
+ struct GlobalConfig *global,
+ struct OperationConfig *config)
+{
+ char letter;
+ char subletter = '\0'; /* subletters can only occur on long options */
+ int rc;
+ const char *parse = NULL;
+ unsigned int j;
+ time_t now;
+ int hit = -1;
+ bool longopt = FALSE;
+ bool singleopt = FALSE; /* when true means '-o foo' used '-ofoo' */
+ ParameterError err;
+ bool toggle = TRUE; /* how to switch boolean options, on or off. Controlled
+ by using --OPTION or --no-OPTION */
+#ifdef HAVE_WRITABLE_ARGV
+ argv_item_t clearthis = NULL;
+#endif
+
+ static const char *redir_protos[] = {
+ "http",
+ "https",
+ "ftp",
+ "ftps",
+ NULL
+ };
+
+ *usedarg = FALSE; /* default is that we don't use the arg */
+
+ if(('-' != flag[0]) || ('-' == flag[1])) {
+ /* this should be a long name */
+ const char *word = ('-' == flag[0]) ? flag + 2 : flag;
+ size_t fnam = strlen(word);
+ int numhits = 0;
+ bool noflagged = FALSE;
+
+ if(!strncmp(word, "no-", 3)) {
+ /* disable this option but ignore the "no-" part when looking for it */
+ word += 3;
+ toggle = FALSE;
+ noflagged = TRUE;
+ }
+
+ for(j = 0; j < sizeof(aliases)/sizeof(aliases[0]); j++) {
+ if(curl_strnequal(aliases[j].lname, word, fnam)) {
+ longopt = TRUE;
+ numhits++;
+ if(curl_strequal(aliases[j].lname, word)) {
+ parse = aliases[j].letter;
+ hit = j;
+ numhits = 1; /* a single unique hit */
+ break;
+ }
+ parse = aliases[j].letter;
+ hit = j;
+ }
+ }
+ if(numhits > 1) {
+ /* this is at least the second match! */
+ return PARAM_OPTION_AMBIGUOUS;
+ }
+ if(hit < 0) {
+ return PARAM_OPTION_UNKNOWN;
+ }
+ if(noflagged && (aliases[hit].desc != ARG_BOOL))
+ /* --no- prefixed an option that isn't boolean! */
+ return PARAM_NO_NOT_BOOLEAN;
+ }
+ else {
+ flag++; /* prefixed with one dash, pass it */
+ hit = -1;
+ parse = flag;
+ }
+
+ do {
+ /* we can loop here if we have multiple single-letters */
+
+ if(!longopt) {
+ letter = (char)*parse;
+ subletter = '\0';
+ }
+ else {
+ letter = parse[0];
+ subletter = parse[1];
+ }
+
+ if(hit < 0) {
+ for(j = 0; j < sizeof(aliases)/sizeof(aliases[0]); j++) {
+ if(letter == aliases[j].letter[0]) {
+ hit = j;
+ break;
+ }
+ }
+ if(hit < 0) {
+ return PARAM_OPTION_UNKNOWN;
+ }
+ }
+
+ if(aliases[hit].desc >= ARG_STRING) {
+ /* this option requires an extra parameter */
+ if(!longopt && parse[1]) {
+ nextarg = (char *)&parse[1]; /* this is the actual extra parameter */
+#ifdef HAVE_WRITABLE_ARGV
+ clearthis = nextarg;
+#endif
+ singleopt = TRUE; /* don't loop anymore after this */
+ }
+ else if(!nextarg)
+ return PARAM_REQUIRES_PARAMETER;
+ else
+ *usedarg = TRUE; /* mark it as used */
+
+ if((aliases[hit].desc == ARG_FILENAME) &&
+ (nextarg[0] == '-') && nextarg[1]) {
+ /* if the file name looks like a command line option */
+ warnf(global, "The file name argument '%s' looks like a flag.\n",
+ nextarg);
+ }
+ }
+ else if((aliases[hit].desc == ARG_NONE) && !toggle)
+ return PARAM_NO_PREFIX;
+
+ switch(letter) {
+ case '*': /* options without a short option */
+ switch(subletter) {
+ case '4': /* --dns-ipv4-addr */
+ if(!curlinfo->ares_num) /* c-ares is needed for this */
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ /* addr in dot notation */
+ GetStr(&config->dns_ipv4_addr, nextarg);
+ break;
+ case '6': /* --dns-ipv6-addr */
+ if(!curlinfo->ares_num) /* c-ares is needed for this */
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ /* addr in dot notation */
+ GetStr(&config->dns_ipv6_addr, nextarg);
+ break;
+ case 'a': /* random-file */
+ break;
+ case 'b': /* egd-file */
+ break;
+ case 'B': /* OAuth 2.0 bearer token */
+ GetStr(&config->oauth_bearer, nextarg);
+ cleanarg(clearthis);
+ config->authtype |= CURLAUTH_BEARER;
+ break;
+ case 'c': /* connect-timeout */
+ err = str2udouble(&config->connecttimeout, nextarg,
+ (double)LONG_MAX/1000);
+ if(err)
+ return err;
+ break;
+ case 'C': /* doh-url */
+ GetStr(&config->doh_url, nextarg);
+ if(config->doh_url && !config->doh_url[0])
+ /* if given a blank string, we make it NULL again */
+ Curl_safefree(config->doh_url);
+ break;
+ case 'd': /* ciphers */
+ GetStr(&config->cipher_list, nextarg);
+ break;
+ case 'D': /* --dns-interface */
+ if(!curlinfo->ares_num) /* c-ares is needed for this */
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ /* interface name */
+ GetStr(&config->dns_interface, nextarg);
+ break;
+ case 'e': /* --disable-epsv */
+ config->disable_epsv = toggle;
+ break;
+ case 'f': /* --disallow-username-in-url */
+ config->disallow_username_in_url = toggle;
+ break;
+ case 'E': /* --epsv */
+ config->disable_epsv = (!toggle)?TRUE:FALSE;
+ break;
+ case 'F': /* --dns-servers */
+ if(!curlinfo->ares_num) /* c-ares is needed for this */
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ /* IP addrs of DNS servers */
+ GetStr(&config->dns_servers, nextarg);
+ break;
+ case 'g': /* --trace */
+ GetStr(&global->trace_dump, nextarg);
+ if(global->tracetype && (global->tracetype != TRACE_BIN))
+ warnf(global, "--trace overrides an earlier trace/verbose option\n");
+ global->tracetype = TRACE_BIN;
+ break;
+ case 'G': /* --npn */
+ warnf(global, "--npn is no longer supported\n");
+ break;
+ case 'h': /* --trace-ascii */
+ GetStr(&global->trace_dump, nextarg);
+ if(global->tracetype && (global->tracetype != TRACE_ASCII))
+ warnf(global,
+ "--trace-ascii overrides an earlier trace/verbose option\n");
+ global->tracetype = TRACE_ASCII;
+ break;
+ case 'H': /* --alpn */
+ config->noalpn = (!toggle)?TRUE:FALSE;
+ break;
+ case 'i': /* --limit-rate */
+ {
+ curl_off_t value;
+ ParameterError pe = GetSizeParameter(global, nextarg, "rate", &value);
+
+ if(pe != PARAM_OK)
+ return pe;
+ config->recvpersecond = value;
+ config->sendpersecond = value;
+ }
+ break;
+ case 'I': /* --rate (request rate) */
+ {
+ /* support a few different suffixes, extract the suffix first, then
+ get the number and convert to per hour.
+ /s == per second
+ /m == per minute
+ /h == per hour (default)
+ /d == per day (24 hours)
+ */
+ char *div = strchr(nextarg, '/');
+ char number[26];
+ long denominator;
+ long numerator = 60*60*1000; /* default per hour */
+ size_t numlen = div ? (size_t)(div - nextarg) : strlen(nextarg);
+ if(numlen > sizeof(number)-1)
+ return PARAM_NUMBER_TOO_LARGE;
+ strncpy(number, nextarg, numlen);
+ number[numlen] = 0;
+ err = str2unum(&denominator, number);
+ if(err)
+ return err;
+ if(denominator < 1)
+ return PARAM_BAD_USE;
+ if(div) {
+ char unit = div[1];
+ switch(unit) {
+ case 's': /* per second */
+ numerator = 1000;
+ break;
+ case 'm': /* per minute */
+ numerator = 60*1000;
+ break;
+ case 'h': /* per hour */
+ break;
+ case 'd': /* per day */
+ numerator = 24*60*60*1000;
+ break;
+ default:
+ errorf(global, "unsupported --rate unit\n");
+ return PARAM_BAD_USE;
+ }
+ }
+ global->ms_per_transfer = numerator/denominator;
+ }
+ break;
+
+ case 'j': /* --compressed */
+ if(toggle &&
+ !(curlinfo->features & (CURL_VERSION_LIBZ |
+ CURL_VERSION_BROTLI | CURL_VERSION_ZSTD)))
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ config->encoding = toggle;
+ break;
+
+ case 'J': /* --tr-encoding */
+ config->tr_encoding = toggle;
+ break;
+
+ case 'k': /* --digest */
+ if(toggle)
+ config->authtype |= CURLAUTH_DIGEST;
+ else
+ config->authtype &= ~CURLAUTH_DIGEST;
+ break;
+
+ case 'l': /* --negotiate */
+ if(toggle) {
+ if(curlinfo->features & CURL_VERSION_SPNEGO)
+ config->authtype |= CURLAUTH_NEGOTIATE;
+ else
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ }
+ else
+ config->authtype &= ~CURLAUTH_NEGOTIATE;
+ break;
+
+ case 'm': /* --ntlm */
+ if(toggle) {
+ if(curlinfo->features & CURL_VERSION_NTLM)
+ config->authtype |= CURLAUTH_NTLM;
+ else
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ }
+ else
+ config->authtype &= ~CURLAUTH_NTLM;
+ break;
+
+ case 'M': /* --ntlm-wb */
+ if(toggle) {
+ if(curlinfo->features & CURL_VERSION_NTLM_WB)
+ config->authtype |= CURLAUTH_NTLM_WB;
+ else
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ }
+ else
+ config->authtype &= ~CURLAUTH_NTLM_WB;
+ break;
+
+ case 'n': /* --basic for completeness */
+ if(toggle)
+ config->authtype |= CURLAUTH_BASIC;
+ else
+ config->authtype &= ~CURLAUTH_BASIC;
+ break;
+
+ case 'o': /* --anyauth, let libcurl pick it */
+ if(toggle)
+ config->authtype = CURLAUTH_ANY;
+ /* --no-anyauth simply doesn't touch it */
+ break;
+
+#ifdef USE_WATT32
+ case 'p': /* --wdebug */
+ dbug_init();
+ break;
+#endif
+ case 'q': /* --ftp-create-dirs */
+ config->ftp_create_dirs = toggle;
+ break;
+
+ case 'r': /* --create-dirs */
+ config->create_dirs = toggle;
+ break;
+
+ case 'R': /* --create-file-mode */
+ err = oct2nummax(&config->create_file_mode, nextarg, 0777);
+ if(err)
+ return err;
+ break;
+
+ case 's': /* --max-redirs */
+ /* specified max no of redirects (http(s)), this accepts -1 as a
+ special condition */
+ err = str2num(&config->maxredirs, nextarg);
+ if(err)
+ return err;
+ if(config->maxredirs < -1)
+ return PARAM_BAD_NUMERIC;
+ break;
+
+ case 't': /* --proxy-ntlm */
+ if(curlinfo->features & CURL_VERSION_NTLM)
+ config->proxyntlm = toggle;
+ else
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ break;
+
+ case 'u': /* --crlf */
+ /* LF -> CRLF conversion? */
+ config->crlf = toggle;
+ break;
+
+ case 'V': /* --aws-sigv4 */
+ config->authtype |= CURLAUTH_AWS_SIGV4;
+ GetStr(&config->aws_sigv4, nextarg);
+ break;
+
+ case 'v': /* --stderr */
+ if(strcmp(nextarg, "-")) {
+ FILE *newfile = fopen(nextarg, FOPEN_WRITETEXT);
+ if(!newfile)
+ warnf(global, "Failed to open %s!\n", nextarg);
+ else {
+ if(global->errors_fopened)
+ fclose(global->errors);
+ global->errors = newfile;
+ global->errors_fopened = TRUE;
+ }
+ }
+ else
+ global->errors = stdout;
+ break;
+ case 'w': /* --interface */
+ /* interface */
+ GetStr(&config->iface, nextarg);
+ break;
+ case 'x': /* --krb */
+ /* kerberos level string */
+ if(curlinfo->features & CURL_VERSION_SPNEGO)
+ GetStr(&config->krblevel, nextarg);
+ else
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ break;
+ case 'X': /* --haproxy-protocol */
+ config->haproxy_protocol = toggle;
+ break;
+ case 'y': /* --max-filesize */
+ {
+ curl_off_t value;
+ ParameterError pe =
+ GetSizeParameter(global, nextarg, "max-filesize", &value);
+
+ if(pe != PARAM_OK)
+ return pe;
+ config->max_filesize = value;
+ }
+ break;
+ case 'z': /* --disable-eprt */
+ config->disable_eprt = toggle;
+ break;
+ case 'Z': /* --eprt */
+ config->disable_eprt = (!toggle)?TRUE:FALSE;
+ break;
+ case '~': /* --xattr */
+ config->xattr = toggle;
+ break;
+ case '@': /* the URL! */
+ {
+ struct getout *url;
+
+ if(!config->url_get)
+ config->url_get = config->url_list;
+
+ if(config->url_get) {
+ /* there's a node here, if it already is filled-in continue to find
+ an "empty" node */
+ while(config->url_get && (config->url_get->flags & GETOUT_URL))
+ config->url_get = config->url_get->next;
+ }
+
+ /* now there might or might not be an available node to fill in! */
+
+ if(config->url_get)
+ /* existing node */
+ url = config->url_get;
+ else
+ /* there was no free node, create one! */
+ config->url_get = url = new_getout(config);
+
+ if(!url)
+ return PARAM_NO_MEM;
+
+ /* fill in the URL */
+ GetStr(&url->url, nextarg);
+ url->flags |= GETOUT_URL;
+ }
+ }
+ break;
+ case '$': /* more options without a short option */
+ switch(subletter) {
+ case 'a': /* --ssl */
+ if(toggle && !(curlinfo->features & CURL_VERSION_SSL))
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ config->ftp_ssl = toggle;
+ if(config->ftp_ssl)
+ warnf(global,
+ "--ssl is an insecure option, consider --ssl-reqd instead\n");
+ break;
+ case 'b': /* --ftp-pasv */
+ Curl_safefree(config->ftpport);
+ break;
+ case 'c': /* --socks5 specifies a socks5 proxy to use, and resolves
+ the name locally and passes on the resolved address */
+ GetStr(&config->proxy, nextarg);
+ config->proxyver = CURLPROXY_SOCKS5;
+ break;
+ case 't': /* --socks4 specifies a socks4 proxy to use */
+ GetStr(&config->proxy, nextarg);
+ config->proxyver = CURLPROXY_SOCKS4;
+ break;
+ case 'T': /* --socks4a specifies a socks4a proxy to use */
+ GetStr(&config->proxy, nextarg);
+ config->proxyver = CURLPROXY_SOCKS4A;
+ break;
+ case '2': /* --socks5-hostname specifies a socks5 proxy and enables name
+ resolving with the proxy */
+ GetStr(&config->proxy, nextarg);
+ config->proxyver = CURLPROXY_SOCKS5_HOSTNAME;
+ break;
+ case 'd': /* --tcp-nodelay option */
+ config->tcp_nodelay = toggle;
+ break;
+ case 'e': /* --proxy-digest */
+ config->proxydigest = toggle;
+ break;
+ case 'f': /* --proxy-basic */
+ config->proxybasic = toggle;
+ break;
+ case 'g': /* --retry */
+ err = str2unum(&config->req_retry, nextarg);
+ if(err)
+ return err;
+ break;
+ case 'V': /* --retry-connrefused */
+ config->retry_connrefused = toggle;
+ break;
+ case 'h': /* --retry-delay */
+ err = str2unummax(&config->retry_delay, nextarg, LONG_MAX/1000);
+ if(err)
+ return err;
+ break;
+ case 'i': /* --retry-max-time */
+ err = str2unummax(&config->retry_maxtime, nextarg, LONG_MAX/1000);
+ if(err)
+ return err;
+ break;
+ case '!': /* --retry-all-errors */
+ config->retry_all_errors = toggle;
+ break;
+
+ case 'k': /* --proxy-negotiate */
+ if(curlinfo->features & CURL_VERSION_SPNEGO)
+ config->proxynegotiate = toggle;
+ else
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ break;
+
+ case 'l': /* --form-escape */
+ config->mime_options &= ~CURLMIMEOPT_FORMESCAPE;
+ if(toggle)
+ config->mime_options |= CURLMIMEOPT_FORMESCAPE;
+ break;
+
+ case 'm': /* --ftp-account */
+ GetStr(&config->ftp_account, nextarg);
+ break;
+ case 'n': /* --proxy-anyauth */
+ config->proxyanyauth = toggle;
+ break;
+ case 'o': /* --trace-time */
+ global->tracetime = toggle;
+ break;
+ case 'p': /* --ignore-content-length */
+ config->ignorecl = toggle;
+ break;
+ case 'q': /* --ftp-skip-pasv-ip */
+ config->ftp_skip_ip = toggle;
+ break;
+ case 'r': /* --ftp-method (undocumented at this point) */
+ config->ftp_filemethod = ftpfilemethod(config, nextarg);
+ break;
+ case 's': { /* --local-port */
+ /* 16bit base 10 is 5 digits, but we allow 6 so that this catches
+ overflows, not just truncates */
+ char lrange[7]="";
+ char *p = nextarg;
+ while(ISDIGIT(*p))
+ p++;
+ if(*p) {
+ /* if there's anything more than a plain decimal number */
+ rc = sscanf(p, " - %6s", lrange);
+ *p = 0; /* null-terminate to make str2unum() work below */
+ }
+ else
+ rc = 0;
+
+ err = str2unum(&config->localport, nextarg);
+ if(err || (config->localport > 65535))
+ return PARAM_BAD_USE;
+ if(!rc)
+ config->localportrange = 1; /* default number of ports to try */
+ else {
+ err = str2unum(&config->localportrange, lrange);
+ if(err || (config->localportrange > 65535))
+ return PARAM_BAD_USE;
+ config->localportrange -= (config->localport-1);
+ if(config->localportrange < 1)
+ return PARAM_BAD_USE;
+ }
+ break;
+ }
+ case 'u': /* --ftp-alternative-to-user */
+ GetStr(&config->ftp_alternative_to_user, nextarg);
+ break;
+ case 'v': /* --ssl-reqd */
+ if(toggle && !(curlinfo->features & CURL_VERSION_SSL))
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ config->ftp_ssl_reqd = toggle;
+ break;
+ case 'w': /* --no-sessionid */
+ config->disable_sessionid = (!toggle)?TRUE:FALSE;
+ break;
+ case 'x': /* --ftp-ssl-control */
+ if(toggle && !(curlinfo->features & CURL_VERSION_SSL))
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ config->ftp_ssl_control = toggle;
+ break;
+ case 'y': /* --ftp-ssl-ccc */
+ config->ftp_ssl_ccc = toggle;
+ if(!config->ftp_ssl_ccc_mode)
+ config->ftp_ssl_ccc_mode = CURLFTPSSL_CCC_PASSIVE;
+ break;
+ case 'j': /* --ftp-ssl-ccc-mode */
+ config->ftp_ssl_ccc = TRUE;
+ config->ftp_ssl_ccc_mode = ftpcccmethod(config, nextarg);
+ break;
+ case 'z': /* --libcurl */
+#ifdef CURL_DISABLE_LIBCURL_OPTION
+ warnf(global,
+ "--libcurl option was disabled at build-time!\n");
+ return PARAM_OPTION_UNKNOWN;
+#else
+ GetStr(&global->libcurl, nextarg);
+ break;
+#endif
+ case '#': /* --raw */
+ config->raw = toggle;
+ break;
+ case '0': /* --post301 */
+ config->post301 = toggle;
+ break;
+ case '1': /* --no-keepalive */
+ config->nokeepalive = (!toggle)?TRUE:FALSE;
+ break;
+ case '3': /* --keepalive-time */
+ err = str2unum(&config->alivetime, nextarg);
+ if(err)
+ return err;
+ break;
+ case '4': /* --post302 */
+ config->post302 = toggle;
+ break;
+ case 'I': /* --post303 */
+ config->post303 = toggle;
+ break;
+ case '5': /* --noproxy */
+ /* This specifies the noproxy list */
+ GetStr(&config->noproxy, nextarg);
+ break;
+ case '7': /* --socks5-gssapi-nec*/
+ config->socks5_gssapi_nec = toggle;
+ break;
+ case '8': /* --proxy1.0 */
+ /* http 1.0 proxy */
+ GetStr(&config->proxy, nextarg);
+ config->proxyver = CURLPROXY_HTTP_1_0;
+ break;
+ case '9': /* --tftp-blksize */
+ err = str2unum(&config->tftp_blksize, nextarg);
+ if(err)
+ return err;
+ break;
+ case 'A': /* --mail-from */
+ GetStr(&config->mail_from, nextarg);
+ break;
+ case 'B': /* --mail-rcpt */
+ /* append receiver to a list */
+ err = add2list(&config->mail_rcpt, nextarg);
+ if(err)
+ return err;
+ break;
+ case 'C': /* --ftp-pret */
+ config->ftp_pret = toggle;
+ break;
+ case 'D': /* --proto */
+ config->proto_present = TRUE;
+ err = proto2num(config, built_in_protos, &config->proto_str, nextarg);
+ if(err)
+ return err;
+ break;
+ case 'E': /* --proto-redir */
+ config->proto_redir_present = TRUE;
+ if(proto2num(config, redir_protos, &config->proto_redir_str, nextarg))
+ return PARAM_BAD_USE;
+ break;
+ case 'F': /* --resolve */
+ err = add2list(&config->resolve, nextarg);
+ if(err)
+ return err;
+ break;
+ case 'G': /* --delegation LEVEL */
+ config->gssapi_delegation = delegation(config, nextarg);
+ break;
+ case 'H': /* --mail-auth */
+ GetStr(&config->mail_auth, nextarg);
+ break;
+ case 'J': /* --metalink */
+ errorf(global, "--metalink is disabled\n");
+ return PARAM_BAD_USE;
+ case '6': /* --sasl-authzid */
+ GetStr(&config->sasl_authzid, nextarg);
+ break;
+ case 'K': /* --sasl-ir */
+ config->sasl_ir = toggle;
+ break;
+ case 'L': /* --test-event */
+#ifdef CURLDEBUG
+ global->test_event_based = toggle;
+#else
+ warnf(global, "--test-event is ignored unless a debug build!\n");
+#endif
+ break;
+ case 'M': /* --unix-socket */
+ config->abstract_unix_socket = FALSE;
+ GetStr(&config->unix_socket_path, nextarg);
+ break;
+ case 'N': /* --path-as-is */
+ config->path_as_is = toggle;
+ break;
+ case 'O': /* --proxy-service-name */
+ GetStr(&config->proxy_service_name, nextarg);
+ break;
+ case 'P': /* --service-name */
+ GetStr(&config->service_name, nextarg);
+ break;
+ case 'Q': /* --proto-default */
+ GetStr(&config->proto_default, nextarg);
+ err = check_protocol(config->proto_default);
+ if(err)
+ return err;
+ break;
+ case 'R': /* --expect100-timeout */
+ err = str2udouble(&config->expect100timeout, nextarg,
+ (double)LONG_MAX/1000);
+ if(err)
+ return err;
+ break;
+ case 'S': /* --tftp-no-options */
+ config->tftp_no_options = toggle;
+ break;
+ case 'U': /* --connect-to */
+ err = add2list(&config->connect_to, nextarg);
+ if(err)
+ return err;
+ break;
+ case 'W': /* --abstract-unix-socket */
+ config->abstract_unix_socket = TRUE;
+ GetStr(&config->unix_socket_path, nextarg);
+ break;
+ case 'X': /* --tls-max */
+ err = str2tls_max(&config->ssl_version_max, nextarg);
+ if(err)
+ return err;
+ break;
+ case 'Y': /* --suppress-connect-headers */
+ config->suppress_connect_headers = toggle;
+ break;
+ case 'Z': /* --compressed-ssh */
+ config->ssh_compression = toggle;
+ break;
+ case '~': /* --happy-eyeballs-timeout-ms */
+ err = str2unum(&config->happy_eyeballs_timeout_ms, nextarg);
+ if(err)
+ return err;
+ /* 0 is a valid value for this timeout */
+ break;
+ }
+ break;
+ case '#':
+ switch(subletter) {
+ case 'm': /* --progress-meter */
+ global->noprogress = !toggle;
+ break;
+ default: /* --progress-bar */
+ global->progressmode =
+ toggle ? CURL_PROGRESS_BAR : CURL_PROGRESS_STATS;
+ break;
+ }
+ break;
+ case ':': /* --next */
+ return PARAM_NEXT_OPERATION;
+ case '0': /* --http* options */
+ switch(subletter) {
+ case '\0':
+ /* HTTP version 1.0 */
+ config->httpversion = CURL_HTTP_VERSION_1_0;
+ break;
+ case '1':
+ /* HTTP version 1.1 */
+ config->httpversion = CURL_HTTP_VERSION_1_1;
+ break;
+ case '2':
+ /* HTTP version 2.0 */
+ config->httpversion = CURL_HTTP_VERSION_2_0;
+ break;
+ case '3': /* --http2-prior-knowledge */
+ /* HTTP version 2.0 over clean TCP*/
+ config->httpversion = CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE;
+ break;
+ case '4': /* --http3 */
+ /* HTTP version 3 go over QUIC - at once */
+ if(curlinfo->features & CURL_VERSION_HTTP3)
+ config->httpversion = CURL_HTTP_VERSION_3;
+ else
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ break;
+ case '9':
+ /* Allow HTTP/0.9 responses! */
+ config->http09_allowed = toggle;
+ break;
+ }
+ break;
+ case '1': /* --tlsv1* options */
+ switch(subletter) {
+ case '\0':
+ /* TLS version 1.x */
+ config->ssl_version = CURL_SSLVERSION_TLSv1;
+ break;
+ case '0':
+ /* TLS version 1.0 */
+ config->ssl_version = CURL_SSLVERSION_TLSv1_0;
+ break;
+ case '1':
+ /* TLS version 1.1 */
+ config->ssl_version = CURL_SSLVERSION_TLSv1_1;
+ break;
+ case '2':
+ /* TLS version 1.2 */
+ config->ssl_version = CURL_SSLVERSION_TLSv1_2;
+ break;
+ case '3':
+ /* TLS version 1.3 */
+ config->ssl_version = CURL_SSLVERSION_TLSv1_3;
+ break;
+ case 'A': /* --tls13-ciphers */
+ GetStr(&config->cipher13_list, nextarg);
+ break;
+ case 'B': /* --proxy-tls13-ciphers */
+ GetStr(&config->proxy_cipher13_list, nextarg);
+ break;
+ }
+ break;
+ case '2':
+ /* SSL version 2 */
+ warnf(global, "Ignores instruction to use SSLv2\n");
+ break;
+ case '3':
+ /* SSL version 3 */
+ warnf(global, "Ignores instruction to use SSLv3\n");
+ break;
+ case '4':
+ /* IPv4 */
+ config->ip_version = CURL_IPRESOLVE_V4;
+ break;
+ case '6':
+ /* IPv6 */
+ config->ip_version = CURL_IPRESOLVE_V6;
+ break;
+ case 'a':
+ /* This makes the FTP sessions use APPE instead of STOR */
+ config->ftp_append = toggle;
+ break;
+ case 'A':
+ /* This specifies the User-Agent name */
+ GetStr(&config->useragent, nextarg);
+ break;
+ case 'b':
+ switch(subletter) {
+ case 'a': /* --alt-svc */
+ if(curlinfo->features & CURL_VERSION_ALTSVC)
+ GetStr(&config->altsvc, nextarg);
+ else
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ break;
+ case 'b': /* --hsts */
+ if(curlinfo->features & CURL_VERSION_HSTS)
+ GetStr(&config->hsts, nextarg);
+ else
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ break;
+ default: /* --cookie string coming up: */
+ if(nextarg[0] == '@') {
+ nextarg++;
+ }
+ else if(strchr(nextarg, '=')) {
+ /* A cookie string must have a =-letter */
+ err = add2list(&config->cookies, nextarg);
+ if(err)
+ return err;
+ break;
+ }
+ /* We have a cookie file to read from! */
+ err = add2list(&config->cookiefiles, nextarg);
+ if(err)
+ return err;
+ }
+ break;
+ case 'B':
+ /* use ASCII/text when transferring */
+ config->use_ascii = toggle;
+ break;
+ case 'c':
+ /* get the file name to dump all cookies in */
+ GetStr(&config->cookiejar, nextarg);
+ break;
+ case 'C':
+ /* This makes us continue an ftp transfer at given position */
+ if(strcmp(nextarg, "-")) {
+ err = str2offset(&config->resume_from, nextarg);
+ if(err)
+ return err;
+ config->resume_from_current = FALSE;
+ }
+ else {
+ config->resume_from_current = TRUE;
+ config->resume_from = 0;
+ }
+ config->use_resume = TRUE;
+ break;
+ case 'd':
+ /* postfield data */
+ {
+ char *postdata = NULL;
+ FILE *file;
+ size_t size = 0;
+ bool raw_mode = (subletter == 'r');
+
+ if(subletter == 'e') { /* --data-urlencode */
+ err = data_urlencode(global, nextarg, &postdata, &size);
+ if(err)
+ return err;
+ }
+ else if('@' == *nextarg && !raw_mode) {
+ /* the data begins with a '@' letter, it means that a file name
+ or - (stdin) follows */
+ nextarg++; /* pass the @ */
+
+ if(!strcmp("-", nextarg)) {
+ file = stdin;
+ if(subletter == 'b') /* forced data-binary */
+ set_binmode(stdin);
+ }
+ else {
+ file = fopen(nextarg, "rb");
+ if(!file)
+ warnf(global, "Couldn't read data from file \"%s\", this makes "
+ "an empty POST.\n", nextarg);
+ }
+
+ if((subletter == 'b') || /* --data-binary */
+ (subletter == 'f') /* --json */)
+ /* forced binary */
+ err = file2memory(&postdata, &size, file);
+ else {
+ err = file2string(&postdata, file);
+ if(postdata)
+ size = strlen(postdata);
+ }
+
+ if(file && (file != stdin))
+ fclose(file);
+ if(err)
+ return err;
+
+ if(!postdata) {
+ /* no data from the file, point to a zero byte string to make this
+ get sent as a POST anyway */
+ postdata = strdup("");
+ if(!postdata)
+ return PARAM_NO_MEM;
+ }
+ }
+ else {
+ GetStr(&postdata, nextarg);
+ if(postdata)
+ size = strlen(postdata);
+ }
+ if(subletter == 'f')
+ config->jsoned = TRUE;
+
+ if(config->postfields) {
+ /* we already have a string, we append this one with a separating
+ &-letter */
+ char *oldpost = config->postfields;
+ curl_off_t oldlen = config->postfieldsize;
+ curl_off_t newlen = oldlen + curlx_uztoso(size) + 2;
+ config->postfields = malloc((size_t)newlen);
+ if(!config->postfields) {
+ Curl_safefree(oldpost);
+ Curl_safefree(postdata);
+ return PARAM_NO_MEM;
+ }
+ memcpy(config->postfields, oldpost, (size_t)oldlen);
+ if(subletter != 'f') {
+ /* skip this treatment for --json */
+ /* use byte value 0x26 for '&' to accommodate non-ASCII platforms */
+ config->postfields[oldlen] = '\x26';
+ memcpy(&config->postfields[oldlen + 1], postdata, size);
+ config->postfields[oldlen + 1 + size] = '\0';
+ config->postfieldsize += size + 1;
+ }
+ else {
+ memcpy(&config->postfields[oldlen], postdata, size);
+ config->postfields[oldlen + size] = '\0';
+ config->postfieldsize += size;
+ }
+ Curl_safefree(oldpost);
+ Curl_safefree(postdata);
+ }
+ else {
+ config->postfields = postdata;
+ config->postfieldsize = curlx_uztoso(size);
+ }
+ }
+ /*
+ We can't set the request type here, as this data might be used in
+ a simple GET if -G is used. Already or soon.
+
+ if(SetHTTPrequest(HTTPREQ_SIMPLEPOST, &config->httpreq)) {
+ Curl_safefree(postdata);
+ return PARAM_BAD_USE;
+ }
+ */
+ break;
+ case 'D':
+ /* dump-header to given file name */
+ GetStr(&config->headerfile, nextarg);
+ break;
+ case 'e':
+ {
+ char *ptr = strstr(nextarg, ";auto");
+ if(ptr) {
+ /* Automatic referer requested, this may be combined with a
+ set initial one */
+ config->autoreferer = TRUE;
+ *ptr = 0; /* null-terminate here */
+ }
+ else
+ config->autoreferer = FALSE;
+ ptr = *nextarg ? nextarg : NULL;
+ GetStr(&config->referer, ptr);
+ }
+ break;
+ case 'E':
+ switch(subletter) {
+ case '\0': /* certificate file */
+ cleanarg(clearthis);
+ GetFileAndPassword(nextarg, &config->cert, &config->key_passwd);
+ break;
+ case 'a': /* CA info PEM file */
+ GetStr(&config->cacert, nextarg);
+ break;
+ case 'b': /* cert file type */
+ GetStr(&config->cert_type, nextarg);
+ break;
+ case 'c': /* private key file */
+ GetStr(&config->key, nextarg);
+ break;
+ case 'd': /* private key file type */
+ GetStr(&config->key_type, nextarg);
+ break;
+ case 'e': /* private key passphrase */
+ GetStr(&config->key_passwd, nextarg);
+ cleanarg(clearthis);
+ break;
+ case 'f': /* crypto engine */
+ GetStr(&config->engine, nextarg);
+ if(config->engine && curl_strequal(config->engine, "list"))
+ return PARAM_ENGINES_REQUESTED;
+ break;
+ case 'g': /* CA cert directory */
+ GetStr(&config->capath, nextarg);
+ break;
+ case 'h': /* --pubkey public key file */
+ GetStr(&config->pubkey, nextarg);
+ break;
+ case 'i': /* --hostpubmd5 md5 of the host public key */
+ GetStr(&config->hostpubmd5, nextarg);
+ if(!config->hostpubmd5 || strlen(config->hostpubmd5) != 32)
+ return PARAM_BAD_USE;
+ break;
+ case 'F': /* --hostpubsha256 sha256 of the host public key */
+ GetStr(&config->hostpubsha256, nextarg);
+ break;
+ case 'j': /* CRL file */
+ GetStr(&config->crlfile, nextarg);
+ break;
+ case 'k': /* TLS username */
+ if(!(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)) {
+ cleanarg(clearthis);
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ }
+ GetStr(&config->tls_username, nextarg);
+ cleanarg(clearthis);
+ break;
+ case 'l': /* TLS password */
+ if(!(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)) {
+ cleanarg(clearthis);
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ }
+ GetStr(&config->tls_password, nextarg);
+ cleanarg(clearthis);
+ break;
+ case 'm': /* TLS authentication type */
+ if(curlinfo->features & CURL_VERSION_TLSAUTH_SRP) {
+ GetStr(&config->tls_authtype, nextarg);
+ if(!curl_strequal(config->tls_authtype, "SRP"))
+ return PARAM_LIBCURL_DOESNT_SUPPORT; /* only support TLS-SRP */
+ }
+ else
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ break;
+ case 'n': /* no empty SSL fragments, --ssl-allow-beast */
+ if(curlinfo->features & CURL_VERSION_SSL)
+ config->ssl_allow_beast = toggle;
+ break;
+
+ case 'o': /* --ssl-auto-client-cert */
+ if(curlinfo->features & CURL_VERSION_SSL)
+ config->ssl_auto_client_cert = toggle;
+ break;
+
+ case 'O': /* --proxy-ssl-auto-client-cert */
+ if(curlinfo->features & CURL_VERSION_SSL)
+ config->proxy_ssl_auto_client_cert = toggle;
+ break;
+
+ case 'p': /* Pinned public key DER file */
+ GetStr(&config->pinnedpubkey, nextarg);
+ break;
+
+ case 'P': /* proxy pinned public key */
+ GetStr(&config->proxy_pinnedpubkey, nextarg);
+ break;
+
+ case 'q': /* --cert-status */
+ config->verifystatus = TRUE;
+ break;
+
+ case 'Q': /* --doh-cert-status */
+ config->doh_verifystatus = TRUE;
+ break;
+
+ case 'r': /* --false-start */
+ config->falsestart = TRUE;
+ break;
+
+ case 's': /* --ssl-no-revoke */
+ if(curlinfo->features & CURL_VERSION_SSL)
+ config->ssl_no_revoke = TRUE;
+ break;
+
+ case 'S': /* --ssl-revoke-best-effort */
+ if(curlinfo->features & CURL_VERSION_SSL)
+ config->ssl_revoke_best_effort = TRUE;
+ break;
+
+ case 't': /* --tcp-fastopen */
+ config->tcp_fastopen = TRUE;
+ break;
+
+ case 'u': /* TLS username for proxy */
+ cleanarg(clearthis);
+ if(!(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)) {
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ }
+ GetStr(&config->proxy_tls_username, nextarg);
+ break;
+
+ case 'v': /* TLS password for proxy */
+ cleanarg(clearthis);
+ if(!(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)) {
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ }
+ GetStr(&config->proxy_tls_password, nextarg);
+ break;
+
+ case 'w': /* TLS authentication type for proxy */
+ if(curlinfo->features & CURL_VERSION_TLSAUTH_SRP) {
+ GetStr(&config->proxy_tls_authtype, nextarg);
+ if(!curl_strequal(config->proxy_tls_authtype, "SRP"))
+ return PARAM_LIBCURL_DOESNT_SUPPORT; /* only support TLS-SRP */
+ }
+ else
+ return PARAM_LIBCURL_DOESNT_SUPPORT;
+ break;
+
+ case 'x': /* certificate file for proxy */
+ cleanarg(clearthis);
+ GetFileAndPassword(nextarg, &config->proxy_cert,
+ &config->proxy_key_passwd);
+ break;
+
+ case 'y': /* cert file type for proxy */
+ GetStr(&config->proxy_cert_type, nextarg);
+ break;
+
+ case 'z': /* private key file for proxy */
+ GetStr(&config->proxy_key, nextarg);
+ break;
+
+ case '0': /* private key file type for proxy */
+ GetStr(&config->proxy_key_type, nextarg);
+ break;
+
+ case '1': /* private key passphrase for proxy */
+ GetStr(&config->proxy_key_passwd, nextarg);
+ cleanarg(clearthis);
+ break;
+
+ case '2': /* ciphers for proxy */
+ GetStr(&config->proxy_cipher_list, nextarg);
+ break;
+
+ case '3': /* CRL file for proxy */
+ GetStr(&config->proxy_crlfile, nextarg);
+ break;
+
+ case '4': /* no empty SSL fragments for proxy */
+ if(curlinfo->features & CURL_VERSION_SSL)
+ config->proxy_ssl_allow_beast = toggle;
+ break;
+
+ case '5': /* --login-options */
+ GetStr(&config->login_options, nextarg);
+ break;
+
+ case '6': /* CA info PEM file for proxy */
+ GetStr(&config->proxy_cacert, nextarg);
+ break;
+
+ case '7': /* CA cert directory for proxy */
+ GetStr(&config->proxy_capath, nextarg);
+ break;
+
+ case '8': /* allow insecure SSL connects for proxy */
+ config->proxy_insecure_ok = toggle;
+ break;
+
+ case '9': /* --proxy-tlsv1 */
+ /* TLS version 1 for proxy */
+ config->proxy_ssl_version = CURL_SSLVERSION_TLSv1;
+ break;
+
+ case 'A':
+ /* --socks5-basic */
+ if(toggle)
+ config->socks5_auth |= CURLAUTH_BASIC;
+ else
+ config->socks5_auth &= ~CURLAUTH_BASIC;
+ break;
+
+ case 'B':
+ /* --socks5-gssapi */
+ if(toggle)
+ config->socks5_auth |= CURLAUTH_GSSAPI;
+ else
+ config->socks5_auth &= ~CURLAUTH_GSSAPI;
+ break;
+
+ case 'C':
+ GetStr(&config->etag_save_file, nextarg);
+ break;
+
+ case 'D':
+ GetStr(&config->etag_compare_file, nextarg);
+ break;
+
+ case 'E':
+ GetStr(&config->ssl_ec_curves, nextarg);
+ break;
+
+ default: /* unknown flag */
+ return PARAM_OPTION_UNKNOWN;
+ }
+ break;
+ case 'f':
+ switch(subletter) {
+ case 'a': /* --fail-early */
+ global->fail_early = toggle;
+ break;
+ case 'b': /* --styled-output */
+ global->styled_output = toggle;
+ break;
+ case 'c': /* --mail-rcpt-allowfails */
+ config->mail_rcpt_allowfails = toggle;
+ break;
+ case 'd': /* --fail-with-body */
+ config->failwithbody = toggle;
+ break;
+ case 'e': /* --remove-on-error */
+ config->rm_partial = toggle;
+ break;
+ default: /* --fail (hard on errors) */
+ config->failonerror = toggle;
+ break;
+ }
+ if(config->failonerror && config->failwithbody) {
+ errorf(config->global, "You must select either --fail or "
+ "--fail-with-body, not both.\n");
+ return PARAM_BAD_USE;
+ }
+ break;
+ case 'F':
+ /* "form data" simulation, this is a little advanced so lets do our best
+ to sort this out slowly and carefully */
+ if(formparse(config,
+ nextarg,
+ &config->mimeroot,
+ &config->mimecurrent,
+ (subletter == 's')?TRUE:FALSE)) /* 's' is literal string */
+ return PARAM_BAD_USE;
+ if(SetHTTPrequest(config, HTTPREQ_MIMEPOST, &config->httpreq))
+ return PARAM_BAD_USE;
+ break;
+
+ case 'g': /* g disables URLglobbing */
+ config->globoff = toggle;
+ break;
+
+ case 'G': /* HTTP GET */
+ if(subletter == 'a') { /* --request-target */
+ GetStr(&config->request_target, nextarg);
+ }
+ else
+ config->use_httpget = TRUE;
+ break;
+
+ case 'h': /* h for help */
+ if(toggle) {
+ if(nextarg) {
+ global->help_category = strdup(nextarg);
+ if(!global->help_category)
+ return PARAM_NO_MEM;
+ }
+ return PARAM_HELP_REQUESTED;
+ }
+ /* we now actually support --no-help too! */
+ break;
+ case 'H':
+ /* A custom header to append to a list */
+ if(nextarg[0] == '@') {
+ /* read many headers from a file or stdin */
+ char *string;
+ size_t len;
+ bool use_stdin = !strcmp(&nextarg[1], "-");
+ FILE *file = use_stdin?stdin:fopen(&nextarg[1], FOPEN_READTEXT);
+ if(!file)
+ warnf(global, "Failed to open %s!\n", &nextarg[1]);
+ else {
+ err = file2memory(&string, &len, file);
+ if(!err && string) {
+ /* Allow strtok() here since this isn't used threaded */
+ /* !checksrc! disable BANNEDFUNC 2 */
+ char *h = strtok(string, "\r\n");
+ while(h) {
+ if(subletter == 'p') /* --proxy-header */
+ err = add2list(&config->proxyheaders, h);
+ else
+ err = add2list(&config->headers, h);
+ if(err)
+ break;
+ h = strtok(NULL, "\r\n");
+ }
+ free(string);
+ }
+ if(!use_stdin)
+ fclose(file);
+ if(err)
+ return err;
+ }
+ }
+ else {
+ if(subletter == 'p') /* --proxy-header */
+ err = add2list(&config->proxyheaders, nextarg);
+ else
+ err = add2list(&config->headers, nextarg);
+ if(err)
+ return err;
+ }
+ break;
+ case 'i':
+ config->show_headers = toggle; /* show the headers as well in the
+ general output stream */
+ break;
+ case 'j':
+ config->cookiesession = toggle;
+ break;
+ case 'I': /* --head */
+ config->no_body = toggle;
+ config->show_headers = toggle;
+ if(SetHTTPrequest(config,
+ (config->no_body)?HTTPREQ_HEAD:HTTPREQ_GET,
+ &config->httpreq))
+ return PARAM_BAD_USE;
+ break;
+ case 'J': /* --remote-header-name */
+ config->content_disposition = toggle;
+ break;
+ case 'k': /* allow insecure SSL connects */
+ if(subletter == 'd') /* --doh-insecure */
+ config->doh_insecure_ok = toggle;
+ else
+ config->insecure_ok = toggle;
+ break;
+ case 'K': /* parse config file */
+ if(parseconfig(nextarg, global)) {
+ errorf(global, "cannot read config from '%s'\n", nextarg);
+ return PARAM_READ_ERROR;
+ }
+ break;
+ case 'l':
+ config->dirlistonly = toggle; /* only list the names of the FTP dir */
+ break;
+ case 'L':
+ config->followlocation = toggle; /* Follow Location: HTTP headers */
+ switch(subletter) {
+ case 't':
+ /* Continue to send authentication (user+password) when following
+ * locations, even when hostname changed */
+ config->unrestricted_auth = toggle;
+ break;
+ }
+ break;
+ case 'm':
+ /* specified max time */
+ err = str2udouble(&config->timeout, nextarg, (double)LONG_MAX/1000);
+ if(err)
+ return err;
+ break;
+ case 'M': /* M for manual, huge help */
+ if(toggle) { /* --no-manual shows no manual... */
+#ifndef USE_MANUAL
+ warnf(global,
+ "built-in manual was disabled at build-time!\n");
+#endif
+ return PARAM_MANUAL_REQUESTED;
+ }
+ break;
+ case 'n':
+ switch(subletter) {
+ case 'o': /* use .netrc or URL */
+ config->netrc_opt = toggle;
+ break;
+ case 'e': /* netrc-file */
+ GetStr(&config->netrc_file, nextarg);
+ break;
+ default:
+ /* pick info from .netrc, if this is used for http, curl will
+ automatically enforce user+password with the request */
+ config->netrc = toggle;
+ break;
+ }
+ break;
+ case 'N':
+ /* disable the output I/O buffering. note that the option is called
+ --buffer but is mostly used in the negative form: --no-buffer */
+ config->nobuffer = longopt ? !toggle : TRUE;
+ break;
+ case 'O': /* --remote-name */
+ if(subletter == 'a') { /* --remote-name-all */
+ config->default_node_flags = toggle?GETOUT_USEREMOTE:0;
+ break;
+ }
+ else if(subletter == 'b') { /* --output-dir */
+ GetStr(&config->output_dir, nextarg);
+ break;
+ }
+ else if(subletter == 'c') { /* --clobber / --no-clobber */
+ config->file_clobber_mode = toggle ? CLOBBER_ALWAYS : CLOBBER_NEVER;
+ break;
+ }
+ /* FALLTHROUGH */
+ case 'o': /* --output */
+ /* output file */
+ {
+ struct getout *url;
+ if(!config->url_out)
+ config->url_out = config->url_list;
+ if(config->url_out) {
+ /* there's a node here, if it already is filled-in continue to find
+ an "empty" node */
+ while(config->url_out && (config->url_out->flags & GETOUT_OUTFILE))
+ config->url_out = config->url_out->next;
+ }
+
+ /* now there might or might not be an available node to fill in! */
+
+ if(config->url_out)
+ /* existing node */
+ url = config->url_out;
+ else
+ /* there was no free node, create one! */
+ config->url_out = url = new_getout(config);
+
+ if(!url)
+ return PARAM_NO_MEM;
+
+ /* fill in the outfile */
+ if('o' == letter) {
+ if(!*nextarg) {
+ warnf(global, "output file name has no length\n");
+ return PARAM_BAD_USE;
+ }
+ GetStr(&url->outfile, nextarg);
+ url->flags &= ~GETOUT_USEREMOTE; /* switch off */
+ }
+ else {
+ url->outfile = NULL; /* leave it */
+ if(toggle)
+ url->flags |= GETOUT_USEREMOTE; /* switch on */
+ else
+ url->flags &= ~GETOUT_USEREMOTE; /* switch off */
+ }
+ url->flags |= GETOUT_OUTFILE;
+ }
+ break;
+ case 'P':
+ /* This makes the FTP sessions use PORT instead of PASV */
+ /* use <eth0> or <192.168.10.10> style addresses. Anything except
+ this will make us try to get the "default" address.
+ NOTE: this is a changed behavior since the released 4.1!
+ */
+ GetStr(&config->ftpport, nextarg);
+ break;
+ case 'p':
+ /* proxy tunnel for non-http protocols */
+ config->proxytunnel = toggle;
+ break;
+
+ case 'q': /* if used first, already taken care of, we do it like
+ this so we don't cause an error! */
+ break;
+ case 'Q':
+ /* QUOTE command to send to FTP server */
+ switch(nextarg[0]) {
+ case '-':
+ /* prefixed with a dash makes it a POST TRANSFER one */
+ nextarg++;
+ err = add2list(&config->postquote, nextarg);
+ break;
+ case '+':
+ /* prefixed with a plus makes it a just-before-transfer one */
+ nextarg++;
+ err = add2list(&config->prequote, nextarg);
+ break;
+ default:
+ err = add2list(&config->quote, nextarg);
+ break;
+ }
+ if(err)
+ return err;
+ break;
+ case 'r':
+ /* Specifying a range WITHOUT A DASH will create an illegal HTTP range
+ (and won't actually be range by definition). The man page previously
+ claimed that to be a good way, why this code is added to work-around
+ it. */
+ if(ISDIGIT(*nextarg) && !strchr(nextarg, '-')) {
+ char buffer[32];
+ curl_off_t off;
+ if(curlx_strtoofft(nextarg, NULL, 10, &off)) {
+ warnf(global, "unsupported range point\n");
+ return PARAM_BAD_USE;
+ }
+ warnf(global,
+ "A specified range MUST include at least one dash (-). "
+ "Appending one for you!\n");
+ msnprintf(buffer, sizeof(buffer), "%" CURL_FORMAT_CURL_OFF_T "-", off);
+ Curl_safefree(config->range);
+ config->range = strdup(buffer);
+ if(!config->range)
+ return PARAM_NO_MEM;
+ }
+ else {
+ /* byte range requested */
+ const char *tmp_range = nextarg;
+ while(*tmp_range != '\0') {
+ if(!ISDIGIT(*tmp_range) && *tmp_range != '-' && *tmp_range != ',') {
+ warnf(global, "Invalid character is found in given range. "
+ "A specified range MUST have only digits in "
+ "\'start\'-\'stop\'. The server's response to this "
+ "request is uncertain.\n");
+ break;
+ }
+ tmp_range++;
+ }
+ GetStr(&config->range, nextarg);
+ }
+ break;
+ case 'R':
+ /* use remote file's time */
+ config->remote_time = toggle;
+ break;
+ case 's':
+ /* don't show progress meter, don't show errors : */
+ if(toggle)
+ global->mute = global->noprogress = TRUE;
+ else
+ global->mute = global->noprogress = FALSE;
+ if(global->showerror < 0)
+ /* if still on the default value, set showerror to the reverse of
+ toggle. This is to allow -S and -s to be used in an independent
+ order but still have the same effect. */
+ global->showerror = (!toggle)?TRUE:FALSE; /* toggle off */
+ break;
+ case 'S':
+ /* show errors */
+ global->showerror = toggle?1:0; /* toggle on if used with -s */
+ break;
+ case 't':
+ /* Telnet options */
+ err = add2list(&config->telnet_options, nextarg);
+ if(err)
+ return err;
+ break;
+ case 'T':
+ /* we are uploading */
+ {
+ struct getout *url;
+ if(!config->url_ul)
+ config->url_ul = config->url_list;
+ if(config->url_ul) {
+ /* there's a node here, if it already is filled-in continue to find
+ an "empty" node */
+ while(config->url_ul && (config->url_ul->flags & GETOUT_UPLOAD))
+ config->url_ul = config->url_ul->next;
+ }
+
+ /* now there might or might not be an available node to fill in! */
+
+ if(config->url_ul)
+ /* existing node */
+ url = config->url_ul;
+ else
+ /* there was no free node, create one! */
+ config->url_ul = url = new_getout(config);
+
+ if(!url)
+ return PARAM_NO_MEM;
+
+ url->flags |= GETOUT_UPLOAD; /* mark -T used */
+ if(!*nextarg)
+ url->flags |= GETOUT_NOUPLOAD;
+ else {
+ /* "-" equals stdin, but keep the string around for now */
+ GetStr(&url->infile, nextarg);
+ }
+ }
+ break;
+ case 'u':
+ /* user:password */
+ GetStr(&config->userpwd, nextarg);
+ cleanarg(clearthis);
+ break;
+ case 'U':
+ /* Proxy user:password */
+ GetStr(&config->proxyuserpwd, nextarg);
+ cleanarg(clearthis);
+ break;
+ case 'v':
+ if(toggle) {
+ /* the '%' thing here will cause the trace get sent to stderr */
+ Curl_safefree(global->trace_dump);
+ global->trace_dump = strdup("%");
+ if(!global->trace_dump)
+ return PARAM_NO_MEM;
+ if(global->tracetype && (global->tracetype != TRACE_PLAIN))
+ warnf(global,
+ "-v, --verbose overrides an earlier trace/verbose option\n");
+ global->tracetype = TRACE_PLAIN;
+ }
+ else
+ /* verbose is disabled here */
+ global->tracetype = TRACE_NONE;
+ break;
+ case 'V':
+ if(toggle) /* --no-version yields no output! */
+ return PARAM_VERSION_INFO_REQUESTED;
+ break;
+
+ case 'w':
+ /* get the output string */
+ if('@' == *nextarg) {
+ /* the data begins with a '@' letter, it means that a file name
+ or - (stdin) follows */
+ FILE *file;
+ const char *fname;
+ nextarg++; /* pass the @ */
+ if(!strcmp("-", nextarg)) {
+ fname = "<stdin>";
+ file = stdin;
+ }
+ else {
+ fname = nextarg;
+ file = fopen(nextarg, FOPEN_READTEXT);
+ }
+ Curl_safefree(config->writeout);
+ err = file2string(&config->writeout, file);
+ if(file && (file != stdin))
+ fclose(file);
+ if(err)
+ return err;
+ if(!config->writeout)
+ warnf(global, "Failed to read %s", fname);
+ }
+ else
+ GetStr(&config->writeout, nextarg);
+ break;
+ case 'x':
+ switch(subletter) {
+ case 'a': /* --preproxy */
+ GetStr(&config->preproxy, nextarg);
+ break;
+ default:
+ /* --proxy */
+ GetStr(&config->proxy, nextarg);
+ config->proxyver = CURLPROXY_HTTP;
+ break;
+ }
+ break;
+ case 'X':
+ /* set custom request */
+ GetStr(&config->customrequest, nextarg);
+ break;
+ case 'y':
+ /* low speed time */
+ err = str2unum(&config->low_speed_time, nextarg);
+ if(err)
+ return err;
+ if(!config->low_speed_limit)
+ config->low_speed_limit = 1;
+ break;
+ case 'Y':
+ /* low speed limit */
+ err = str2unum(&config->low_speed_limit, nextarg);
+ if(err)
+ return err;
+ if(!config->low_speed_time)
+ config->low_speed_time = 30;
+ break;
+ case 'Z':
+ switch(subletter) {
+ case '\0': /* --parallel */
+ global->parallel = toggle;
+ break;
+ case 'b': /* --parallel-max */
+ err = str2unum(&global->parallel_max, nextarg);
+ if(err)
+ return err;
+ if(global->parallel_max > MAX_PARALLEL)
+ global->parallel_max = MAX_PARALLEL;
+ else if(global->parallel_max < 1)
+ global->parallel_max = PARALLEL_DEFAULT;
+ break;
+ case 'c': /* --parallel-connect */
+ global->parallel_connect = toggle;
+ break;
+ }
+ break;
+ case 'z': /* time condition coming up */
+ switch(*nextarg) {
+ case '+':
+ nextarg++;
+ /* FALLTHROUGH */
+ default:
+ /* If-Modified-Since: (section 14.28 in RFC2068) */
+ config->timecond = CURL_TIMECOND_IFMODSINCE;
+ break;
+ case '-':
+ /* If-Unmodified-Since: (section 14.24 in RFC2068) */
+ config->timecond = CURL_TIMECOND_IFUNMODSINCE;
+ nextarg++;
+ break;
+ case '=':
+ /* Last-Modified: (section 14.29 in RFC2068) */
+ config->timecond = CURL_TIMECOND_LASTMOD;
+ nextarg++;
+ break;
+ }
+ now = time(NULL);
+ config->condtime = (curl_off_t)curl_getdate(nextarg, &now);
+ if(-1 == config->condtime) {
+ /* now let's see if it is a file name to get the time from instead! */
+ curl_off_t filetime = getfiletime(nextarg, global);
+ if(filetime >= 0) {
+ /* pull the time out from the file */
+ config->condtime = filetime;
+ }
+ else {
+ /* failed, remove time condition */
+ config->timecond = CURL_TIMECOND_NONE;
+ warnf(global,
+ "Illegal date format for -z, --time-cond (and not "
+ "a file name). Disabling time condition. "
+ "See curl_getdate(3) for valid date syntax.\n");
+ }
+ }
+ break;
+ default: /* unknown flag */
+ return PARAM_OPTION_UNKNOWN;
+ }
+ hit = -1;
+
+ } while(!longopt && !singleopt && *++parse && !*usedarg);
+
+ return PARAM_OK;
+}
+
+ParameterError parse_args(struct GlobalConfig *global, int argc,
+ argv_item_t argv[])
+{
+ int i;
+ bool stillflags;
+ char *orig_opt = NULL;
+ ParameterError result = PARAM_OK;
+ struct OperationConfig *config = global->first;
+
+ for(i = 1, stillflags = TRUE; i < argc && !result; i++) {
+ orig_opt = curlx_convert_tchar_to_UTF8(argv[i]);
+ if(!orig_opt)
+ return PARAM_NO_MEM;
+
+ if(stillflags && ('-' == orig_opt[0])) {
+ bool passarg;
+
+ if(!strcmp("--", orig_opt))
+ /* This indicates the end of the flags and thus enables the
+ following (URL) argument to start with -. */
+ stillflags = FALSE;
+ else {
+ char *nextarg = NULL;
+ if(i < (argc - 1)) {
+ nextarg = curlx_convert_tchar_to_UTF8(argv[i + 1]);
+ if(!nextarg) {
+ curlx_unicodefree(orig_opt);
+ return PARAM_NO_MEM;
+ }
+ }
+
+ result = getparameter(orig_opt, nextarg, &passarg,
+ global, config);
+
+ curlx_unicodefree(nextarg);
+ config = global->last;
+ if(result == PARAM_NEXT_OPERATION) {
+ /* Reset result as PARAM_NEXT_OPERATION is only used here and not
+ returned from this function */
+ result = PARAM_OK;
+
+ if(config->url_list && config->url_list->url) {
+ /* Allocate the next config */
+ config->next = malloc(sizeof(struct OperationConfig));
+ if(config->next) {
+ /* Initialise the newly created config */
+ config_init(config->next);
+
+ /* Set the global config pointer */
+ config->next->global = global;
+
+ /* Update the last config pointer */
+ global->last = config->next;
+
+ /* Move onto the new config */
+ config->next->prev = config;
+ config = config->next;
+ }
+ else
+ result = PARAM_NO_MEM;
+ }
+ }
+ else if(!result && passarg)
+ i++; /* we're supposed to skip this */
+ }
+ }
+ else {
+ bool used;
+
+ /* Just add the URL please */
+ result = getparameter("--url", orig_opt, &used, global, config);
+ }
+
+ if(!result)
+ curlx_unicodefree(orig_opt);
+ }
+
+ if(!result && config->content_disposition) {
+ if(config->show_headers)
+ result = PARAM_CONTDISP_SHOW_HEADER;
+ else if(config->resume_from_current)
+ result = PARAM_CONTDISP_RESUME_FROM;
+ }
+
+ if(result && result != PARAM_HELP_REQUESTED &&
+ result != PARAM_MANUAL_REQUESTED &&
+ result != PARAM_VERSION_INFO_REQUESTED &&
+ result != PARAM_ENGINES_REQUESTED) {
+ const char *reason = param2text(result);
+
+ if(orig_opt && strcmp(":", orig_opt))
+ helpf(global->errors, "option %s: %s\n", orig_opt, reason);
+ else
+ helpf(global->errors, "%s\n", reason);
+ }
+
+ curlx_unicodefree(orig_opt);
+ return result;
+}
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_getparam.h b/ap/lib/libcurl/curl-7.86.0/src/tool_getparam.h
new file mode 100755
index 0000000..3eb1773
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_getparam.h
@@ -0,0 +1,71 @@
+#ifndef HEADER_CURL_TOOL_GETPARAM_H
+#define HEADER_CURL_TOOL_GETPARAM_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+typedef enum {
+ PARAM_OK = 0,
+ PARAM_OPTION_AMBIGUOUS,
+ PARAM_OPTION_UNKNOWN,
+ PARAM_REQUIRES_PARAMETER,
+ PARAM_BAD_USE,
+ PARAM_HELP_REQUESTED,
+ PARAM_MANUAL_REQUESTED,
+ PARAM_VERSION_INFO_REQUESTED,
+ PARAM_ENGINES_REQUESTED,
+ PARAM_GOT_EXTRA_PARAMETER,
+ PARAM_BAD_NUMERIC,
+ PARAM_NEGATIVE_NUMERIC,
+ PARAM_LIBCURL_DOESNT_SUPPORT,
+ PARAM_LIBCURL_UNSUPPORTED_PROTOCOL,
+ PARAM_NO_MEM,
+ PARAM_NEXT_OPERATION,
+ PARAM_NO_PREFIX,
+ PARAM_NUMBER_TOO_LARGE,
+ PARAM_NO_NOT_BOOLEAN,
+ PARAM_CONTDISP_SHOW_HEADER, /* --include and --remote-header-name */
+ PARAM_CONTDISP_RESUME_FROM, /* --continue-at and --remote-header-name */
+ PARAM_READ_ERROR,
+ PARAM_LAST
+} ParameterError;
+
+struct GlobalConfig;
+struct OperationConfig;
+
+ParameterError getparameter(const char *flag, char *nextarg,
+ bool *usedarg,
+ struct GlobalConfig *global,
+ struct OperationConfig *operation);
+
+#ifdef UNITTESTS
+void parse_cert_parameter(const char *cert_parameter,
+ char **certname,
+ char **passphrase);
+#endif
+
+ParameterError parse_args(struct GlobalConfig *config, int argc,
+ argv_item_t argv[]);
+
+#endif /* HEADER_CURL_TOOL_GETPARAM_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_getpass.c b/ap/lib/libcurl/curl-7.86.0/src/tool_getpass.c
new file mode 100755
index 0000000..c959c5a
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_getpass.c
@@ -0,0 +1,254 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#if defined(__AMIGA__) && !defined(__amigaos4__)
+# undef HAVE_TERMIOS_H
+#endif
+
+#ifndef HAVE_GETPASS_R
+/* this file is only for systems without getpass_r() */
+
+#ifdef HAVE_FCNTL_H
+# include <fcntl.h>
+#endif
+
+#ifdef HAVE_TERMIOS_H
+# include <termios.h>
+#elif defined(HAVE_TERMIO_H)
+# include <termio.h>
+#endif
+
+#ifdef __VMS
+# include descrip
+# include starlet
+# include iodef
+#endif
+
+#ifdef WIN32
+# include <conio.h>
+#endif
+
+#ifdef NETWARE
+# ifdef __NOVELL_LIBC__
+# include <screen.h>
+# else
+# include <nwconio.h>
+# endif
+#endif
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include "tool_getpass.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+#ifdef __VMS
+/* VMS implementation */
+char *getpass_r(const char *prompt, char *buffer, size_t buflen)
+{
+ long sts;
+ short chan;
+
+ /* MSK, 23-JAN-2004, iosbdef.h wasn't in VAX V7.2 or CC 6.4 */
+ /* distribution so I created this. May revert back later to */
+ /* struct _iosb iosb; */
+ struct _iosb
+ {
+ short int iosb$w_status; /* status */
+ short int iosb$w_bcnt; /* byte count */
+ int unused; /* unused */
+ } iosb;
+
+ $DESCRIPTOR(ttdesc, "TT");
+
+ buffer[0] = '\0';
+ sts = sys$assign(&ttdesc, &chan, 0, 0);
+ if(sts & 1) {
+ sts = sys$qiow(0, chan,
+ IO$_READPROMPT | IO$M_NOECHO,
+ &iosb, 0, 0, buffer, buflen, 0, 0,
+ prompt, strlen(prompt));
+
+ if((sts & 1) && (iosb.iosb$w_status & 1))
+ buffer[iosb.iosb$w_bcnt] = '\0';
+
+ sys$dassgn(chan);
+ }
+ return buffer; /* we always return success */
+}
+#define DONE
+#endif /* __VMS */
+
+#if defined(WIN32)
+
+char *getpass_r(const char *prompt, char *buffer, size_t buflen)
+{
+ size_t i;
+ fputs(prompt, stderr);
+
+ for(i = 0; i < buflen; i++) {
+ buffer[i] = (char)getch();
+ if(buffer[i] == '\r' || buffer[i] == '\n') {
+ buffer[i] = '\0';
+ break;
+ }
+ else
+ if(buffer[i] == '\b')
+ /* remove this letter and if this is not the first key, remove the
+ previous one as well */
+ i = i - (i >= 1 ? 2 : 1);
+ }
+ /* since echo is disabled, print a newline */
+ fputs("\n", stderr);
+ /* if user didn't hit ENTER, terminate buffer */
+ if(i == buflen)
+ buffer[buflen-1] = '\0';
+
+ return buffer; /* we always return success */
+}
+#define DONE
+#endif /* WIN32 */
+
+#ifdef NETWARE
+/* NetWare implementation */
+#ifdef __NOVELL_LIBC__
+char *getpass_r(const char *prompt, char *buffer, size_t buflen)
+{
+ return getpassword(prompt, buffer, buflen);
+}
+#else
+char *getpass_r(const char *prompt, char *buffer, size_t buflen)
+{
+ size_t i = 0;
+
+ printf("%s", prompt);
+ do {
+ buffer[i++] = getch();
+ if(buffer[i-1] == '\b') {
+ /* remove this letter and if this is not the first key,
+ remove the previous one as well */
+ if(i > 1) {
+ printf("\b \b");
+ i = i - 2;
+ }
+ else {
+ RingTheBell();
+ i = i - 1;
+ }
+ }
+ else if(buffer[i-1] != 13)
+ putchar('*');
+
+ } while((buffer[i-1] != 13) && (i < buflen));
+ buffer[i-1] = '\0';
+ printf("\r\n");
+ return buffer;
+}
+#endif /* __NOVELL_LIBC__ */
+#define DONE
+#endif /* NETWARE */
+
+#ifndef DONE /* not previously provided */
+
+#ifdef HAVE_TERMIOS_H
+# define struct_term struct termios
+#elif defined(HAVE_TERMIO_H)
+# define struct_term struct termio
+#else
+# undef struct_term
+#endif
+
+static bool ttyecho(bool enable, int fd)
+{
+#ifdef struct_term
+ static struct_term withecho;
+ static struct_term noecho;
+#endif
+ if(!enable) {
+ /* disable echo by extracting the current 'withecho' mode and remove the
+ ECHO bit and set back the struct */
+#ifdef HAVE_TERMIOS_H
+ tcgetattr(fd, &withecho);
+ noecho = withecho;
+ noecho.c_lflag &= ~ECHO;
+ tcsetattr(fd, TCSANOW, &noecho);
+#elif defined(HAVE_TERMIO_H)
+ ioctl(fd, TCGETA, &withecho);
+ noecho = withecho;
+ noecho.c_lflag &= ~ECHO;
+ ioctl(fd, TCSETA, &noecho);
+#else
+ /* neither HAVE_TERMIO_H nor HAVE_TERMIOS_H, we can't disable echo! */
+ (void)fd;
+ return FALSE; /* not disabled */
+#endif
+ return TRUE; /* disabled */
+ }
+ /* re-enable echo, assumes we disabled it before (and set the structs we
+ now use to reset the terminal status) */
+#ifdef HAVE_TERMIOS_H
+ tcsetattr(fd, TCSAFLUSH, &withecho);
+#elif defined(HAVE_TERMIO_H)
+ ioctl(fd, TCSETA, &withecho);
+#else
+ return FALSE; /* not enabled */
+#endif
+ return TRUE; /* enabled */
+}
+
+char *getpass_r(const char *prompt, /* prompt to display */
+ char *password, /* buffer to store password in */
+ size_t buflen) /* size of buffer to store password in */
+{
+ ssize_t nread;
+ bool disabled;
+ int fd = open("/dev/tty", O_RDONLY);
+ if(-1 == fd)
+ fd = STDIN_FILENO; /* use stdin if the tty couldn't be used */
+
+ disabled = ttyecho(FALSE, fd); /* disable terminal echo */
+
+ fputs(prompt, stderr);
+ nread = read(fd, password, buflen);
+ if(nread > 0)
+ password[--nread] = '\0'; /* null-terminate where enter is stored */
+ else
+ password[0] = '\0'; /* got nothing */
+
+ if(disabled) {
+ /* if echo actually was disabled, add a newline */
+ fputs("\n", stderr);
+ (void)ttyecho(TRUE, fd); /* enable echo */
+ }
+
+ if(STDIN_FILENO != fd)
+ close(fd);
+
+ return password; /* return pointer to buffer */
+}
+
+#endif /* DONE */
+#endif /* HAVE_GETPASS_R */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_getpass.h b/ap/lib/libcurl/curl-7.86.0/src/tool_getpass.h
new file mode 100755
index 0000000..01dc464
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_getpass.h
@@ -0,0 +1,38 @@
+#ifndef HEADER_CURL_TOOL_GETPASS_H
+#define HEADER_CURL_TOOL_GETPASS_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#ifndef HAVE_GETPASS_R
+/* If there's a system-provided function named like this, we trust it is
+ also found in one of the standard headers. */
+
+/*
+ * Returning NULL will abort the continued operation!
+ */
+char *getpass_r(const char *prompt, char *buffer, size_t buflen);
+#endif
+
+#endif /* HEADER_CURL_TOOL_GETPASS_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_help.c b/ap/lib/libcurl/curl-7.86.0/src/tool_help.c
new file mode 100755
index 0000000..65a1f43
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_help.c
@@ -0,0 +1,253 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_panykey.h"
+#include "tool_help.h"
+#include "tool_libinfo.h"
+#include "tool_util.h"
+#include "tool_version.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+#ifdef MSDOS
+# define USE_WATT32
+#endif
+
+struct category_descriptors {
+ const char *opt;
+ const char *desc;
+ curlhelp_t category;
+};
+
+static const struct category_descriptors categories[] = {
+ {"auth", "Different types of authentication methods", CURLHELP_AUTH},
+ {"connection", "Low level networking operations",
+ CURLHELP_CONNECTION},
+ {"curl", "The command line tool itself", CURLHELP_CURL},
+ {"dns", "General DNS options", CURLHELP_DNS},
+ {"file", "FILE protocol options", CURLHELP_FILE},
+ {"ftp", "FTP protocol options", CURLHELP_FTP},
+ {"http", "HTTP and HTTPS protocol options", CURLHELP_HTTP},
+ {"imap", "IMAP protocol options", CURLHELP_IMAP},
+ /* important is left out because it is the default help page */
+ {"misc", "Options that don't fit into any other category", CURLHELP_MISC},
+ {"output", "Filesystem output", CURLHELP_OUTPUT},
+ {"pop3", "POP3 protocol options", CURLHELP_POP3},
+ {"post", "HTTP Post specific options", CURLHELP_POST},
+ {"proxy", "All options related to proxies", CURLHELP_PROXY},
+ {"scp", "SCP protocol options", CURLHELP_SCP},
+ {"sftp", "SFTP protocol options", CURLHELP_SFTP},
+ {"smtp", "SMTP protocol options", CURLHELP_SMTP},
+ {"ssh", "SSH protocol options", CURLHELP_SSH},
+ {"telnet", "TELNET protocol options", CURLHELP_TELNET},
+ {"tftp", "TFTP protocol options", CURLHELP_TFTP},
+ {"tls", "All TLS/SSL related options", CURLHELP_TLS},
+ {"upload", "All options for uploads",
+ CURLHELP_UPLOAD},
+ {"verbose", "Options related to any kind of command line output of curl",
+ CURLHELP_VERBOSE},
+ {NULL, NULL, CURLHELP_HIDDEN}
+};
+
+extern const struct helptxt helptext[];
+
+struct feat {
+ const char *name;
+ int bitmask;
+};
+
+static const struct feat feats[] = {
+ {"AsynchDNS", CURL_VERSION_ASYNCHDNS},
+ {"Debug", CURL_VERSION_DEBUG},
+ {"TrackMemory", CURL_VERSION_CURLDEBUG},
+ {"IDN", CURL_VERSION_IDN},
+ {"IPv6", CURL_VERSION_IPV6},
+ {"Largefile", CURL_VERSION_LARGEFILE},
+ {"Unicode", CURL_VERSION_UNICODE},
+ {"SSPI", CURL_VERSION_SSPI},
+ {"GSS-API", CURL_VERSION_GSSAPI},
+ {"Kerberos", CURL_VERSION_KERBEROS5},
+ {"SPNEGO", CURL_VERSION_SPNEGO},
+ {"NTLM", CURL_VERSION_NTLM},
+ {"NTLM_WB", CURL_VERSION_NTLM_WB},
+ {"SSL", CURL_VERSION_SSL},
+ {"libz", CURL_VERSION_LIBZ},
+ {"brotli", CURL_VERSION_BROTLI},
+ {"zstd", CURL_VERSION_ZSTD},
+ {"CharConv", CURL_VERSION_CONV},
+ {"TLS-SRP", CURL_VERSION_TLSAUTH_SRP},
+ {"HTTP2", CURL_VERSION_HTTP2},
+ {"HTTP3", CURL_VERSION_HTTP3},
+ {"UnixSockets", CURL_VERSION_UNIX_SOCKETS},
+ {"HTTPS-proxy", CURL_VERSION_HTTPS_PROXY},
+ {"MultiSSL", CURL_VERSION_MULTI_SSL},
+ {"PSL", CURL_VERSION_PSL},
+ {"alt-svc", CURL_VERSION_ALTSVC},
+ {"HSTS", CURL_VERSION_HSTS},
+ {"gsasl", CURL_VERSION_GSASL},
+ {"threadsafe", CURL_VERSION_THREADSAFE},
+};
+
+static void print_category(curlhelp_t category)
+{
+ unsigned int i;
+ size_t longopt = 5;
+ size_t longdesc = 5;
+
+ for(i = 0; helptext[i].opt; ++i) {
+ size_t len;
+ if(!(helptext[i].categories & category))
+ continue;
+ len = strlen(helptext[i].opt);
+ if(len > longopt)
+ longopt = len;
+ len = strlen(helptext[i].desc);
+ if(len > longdesc)
+ longdesc = len;
+ }
+ if(longopt + longdesc > 80)
+ longopt = 80 - longdesc;
+
+ for(i = 0; helptext[i].opt; ++i)
+ if(helptext[i].categories & category) {
+ printf(" %-*s %s\n", (int)longopt, helptext[i].opt, helptext[i].desc);
+ }
+}
+
+/* Prints category if found. If not, it returns 1 */
+static int get_category_content(const char *category)
+{
+ unsigned int i;
+ for(i = 0; categories[i].opt; ++i)
+ if(curl_strequal(categories[i].opt, category)) {
+ printf("%s: %s\n", categories[i].opt, categories[i].desc);
+ print_category(categories[i].category);
+ return 0;
+ }
+ return 1;
+}
+
+/* Prints all categories and their description */
+static void get_categories(void)
+{
+ unsigned int i;
+ for(i = 0; categories[i].opt; ++i)
+ printf(" %-11s %s\n", categories[i].opt, categories[i].desc);
+}
+
+
+void tool_help(char *category)
+{
+ puts("Usage: curl [options...] <url>");
+ /* If no category was provided */
+ if(!category) {
+ const char *category_note = "\nThis is not the full help, this "
+ "menu is stripped into categories.\nUse \"--help category\" to get "
+ "an overview of all categories.\nFor all options use the manual"
+ " or \"--help all\".";
+ print_category(CURLHELP_IMPORTANT);
+ puts(category_note);
+ }
+ /* Lets print everything if "all" was provided */
+ else if(curl_strequal(category, "all"))
+ /* Print everything except hidden */
+ print_category(~(CURLHELP_HIDDEN));
+ /* Lets handle the string "category" differently to not print an errormsg */
+ else if(curl_strequal(category, "category"))
+ get_categories();
+ /* Otherwise print category and handle the case if the cat was not found */
+ else if(get_category_content(category)) {
+ puts("Invalid category provided, here is a list of all categories:\n");
+ get_categories();
+ }
+ free(category);
+}
+
+
+void tool_version_info(void)
+{
+ const char *const *proto;
+
+ printf(CURL_ID "%s\n", curl_version());
+#ifdef CURL_PATCHSTAMP
+ printf("Release-Date: %s, security patched: %s\n",
+ LIBCURL_TIMESTAMP, CURL_PATCHSTAMP);
+#else
+ printf("Release-Date: %s\n", LIBCURL_TIMESTAMP);
+#endif
+ if(curlinfo->protocols) {
+ printf("Protocols: ");
+ for(proto = curlinfo->protocols; *proto; ++proto) {
+ /* Special case: do not list rtmp?* protocols.
+ They may only appear together with "rtmp" */
+ if(!curl_strnequal(*proto, "rtmp", 4) || !proto[0][4])
+ printf("%s ", *proto);
+ }
+ puts(""); /* newline */
+ }
+ if(curlinfo->features) {
+ char *featp[ sizeof(feats) / sizeof(feats[0]) + 1];
+ size_t numfeat = 0;
+ unsigned int i;
+ printf("Features:");
+ for(i = 0; i < sizeof(feats)/sizeof(feats[0]); i++) {
+ if(curlinfo->features & feats[i].bitmask)
+ featp[numfeat++] = (char *)feats[i].name;
+ }
+ qsort(&featp[0], numfeat, sizeof(char *), struplocompare4sort);
+ for(i = 0; i< numfeat; i++)
+ printf(" %s", featp[i]);
+ puts(""); /* newline */
+ }
+ if(strcmp(CURL_VERSION, curlinfo->version)) {
+ printf("WARNING: curl and libcurl versions do not match. "
+ "Functionality may be affected.\n");
+ }
+}
+
+void tool_list_engines(void)
+{
+ CURL *curl = curl_easy_init();
+ struct curl_slist *engines = NULL;
+
+ /* Get the list of engines */
+ curl_easy_getinfo(curl, CURLINFO_SSL_ENGINES, &engines);
+
+ puts("Build-time engines:");
+ if(engines) {
+ for(; engines; engines = engines->next)
+ printf(" %s\n", engines->data);
+ }
+ else {
+ puts(" <none>");
+ }
+
+ /* Cleanup the list of engines */
+ curl_slist_free_all(engines);
+ curl_easy_cleanup(curl);
+}
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_help.h b/ap/lib/libcurl/curl-7.86.0/src/tool_help.h
new file mode 100755
index 0000000..6fe244e
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_help.h
@@ -0,0 +1,74 @@
+#ifndef HEADER_CURL_TOOL_HELP_H
+#define HEADER_CURL_TOOL_HELP_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+void tool_help(char *category);
+void tool_list_engines(void);
+void tool_version_info(void);
+
+typedef unsigned int curlhelp_t;
+
+struct helptxt {
+ const char *opt;
+ const char *desc;
+ curlhelp_t categories;
+};
+
+/*
+ * The bitmask output is generated with the following command
+ ------------------------------------------------------------
+ cd $srcroot/docs/cmdline-opts
+ ./gen.pl listcats *.d
+ */
+
+#define CURLHELP_HIDDEN 1u << 0u
+#define CURLHELP_AUTH 1u << 1u
+#define CURLHELP_CONNECTION 1u << 2u
+#define CURLHELP_CURL 1u << 3u
+#define CURLHELP_DNS 1u << 4u
+#define CURLHELP_FILE 1u << 5u
+#define CURLHELP_FTP 1u << 6u
+#define CURLHELP_HTTP 1u << 7u
+#define CURLHELP_IMAP 1u << 8u
+#define CURLHELP_IMPORTANT 1u << 9u
+#define CURLHELP_MISC 1u << 10u
+#define CURLHELP_OUTPUT 1u << 11u
+#define CURLHELP_POP3 1u << 12u
+#define CURLHELP_POST 1u << 13u
+#define CURLHELP_PROXY 1u << 14u
+#define CURLHELP_SCP 1u << 15u
+#define CURLHELP_SFTP 1u << 16u
+#define CURLHELP_SMTP 1u << 17u
+#define CURLHELP_SSH 1u << 18u
+#define CURLHELP_TELNET 1u << 19u
+#define CURLHELP_TFTP 1u << 20u
+#define CURLHELP_TLS 1u << 21u
+#define CURLHELP_UPLOAD 1u << 22u
+#define CURLHELP_VERBOSE 1u << 23u
+
+extern const struct helptxt helptext[];
+
+#endif /* HEADER_CURL_TOOL_HELP_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_helpers.c b/ap/lib/libcurl/curl-7.86.0/src/tool_helpers.c
new file mode 100755
index 0000000..3b2fe9d
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_helpers.c
@@ -0,0 +1,132 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#include "strcase.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_msgs.h"
+#include "tool_getparam.h"
+#include "tool_helpers.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+/*
+** Helper functions that are used from more than one source file.
+*/
+
+const char *param2text(int res)
+{
+ ParameterError error = (ParameterError)res;
+ switch(error) {
+ case PARAM_GOT_EXTRA_PARAMETER:
+ return "had unsupported trailing garbage";
+ case PARAM_OPTION_UNKNOWN:
+ return "is unknown";
+ case PARAM_OPTION_AMBIGUOUS:
+ return "is ambiguous";
+ case PARAM_REQUIRES_PARAMETER:
+ return "requires parameter";
+ case PARAM_BAD_USE:
+ return "is badly used here";
+ case PARAM_BAD_NUMERIC:
+ return "expected a proper numerical parameter";
+ case PARAM_NEGATIVE_NUMERIC:
+ return "expected a positive numerical parameter";
+ case PARAM_LIBCURL_DOESNT_SUPPORT:
+ return "the installed libcurl version doesn't support this";
+ case PARAM_LIBCURL_UNSUPPORTED_PROTOCOL:
+ return "a specified protocol is unsupported by libcurl";
+ case PARAM_NO_MEM:
+ return "out of memory";
+ case PARAM_NO_PREFIX:
+ return "the given option can't be reversed with a --no- prefix";
+ case PARAM_NUMBER_TOO_LARGE:
+ return "too large number";
+ case PARAM_NO_NOT_BOOLEAN:
+ return "used '--no-' for option that isn't a boolean";
+ case PARAM_CONTDISP_SHOW_HEADER:
+ return "showing headers and --remote-header-name cannot be combined";
+ case PARAM_CONTDISP_RESUME_FROM:
+ return "--continue-at and --remote-header-name cannot be combined";
+ case PARAM_READ_ERROR:
+ return "error encountered when reading a file";
+ default:
+ return "unknown error";
+ }
+}
+
+int SetHTTPrequest(struct OperationConfig *config, HttpReq req, HttpReq *store)
+{
+ /* this mirrors the HttpReq enum in tool_sdecls.h */
+ const char *reqname[]= {
+ "", /* unspec */
+ "GET (-G, --get)",
+ "HEAD (-I, --head)",
+ "multipart formpost (-F, --form)",
+ "POST (-d, --data)",
+ "PUT (-T, --upload-file)"
+ };
+
+ if((*store == HTTPREQ_UNSPEC) ||
+ (*store == req)) {
+ *store = req;
+ return 0;
+ }
+ warnf(config->global, "You can only select one HTTP request method! "
+ "You asked for both %s and %s.\n",
+ reqname[req], reqname[*store]);
+
+ return 1;
+}
+
+void customrequest_helper(struct OperationConfig *config, HttpReq req,
+ char *method)
+{
+ /* this mirrors the HttpReq enum in tool_sdecls.h */
+ const char *dflt[]= {
+ "GET",
+ "GET",
+ "HEAD",
+ "POST",
+ "POST",
+ "PUT"
+ };
+
+ if(!method)
+ ;
+ else if(curl_strequal(method, dflt[req])) {
+ notef(config->global, "Unnecessary use of -X or --request, %s is already "
+ "inferred.\n", dflt[req]);
+ }
+ else if(curl_strequal(method, "head")) {
+ warnf(config->global,
+ "Setting custom HTTP method to HEAD with -X/--request may not work "
+ "the way you want. Consider using -I/--head instead.\n");
+ }
+}
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_helpers.h b/ap/lib/libcurl/curl-7.86.0/src/tool_helpers.h
new file mode 100755
index 0000000..cdc8410
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_helpers.h
@@ -0,0 +1,36 @@
+#ifndef HEADER_CURL_TOOL_HELPERS_H
+#define HEADER_CURL_TOOL_HELPERS_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+const char *param2text(int res);
+
+int SetHTTPrequest(struct OperationConfig *config, HttpReq req,
+ HttpReq *store);
+
+void customrequest_helper(struct OperationConfig *config, HttpReq req,
+ char *method);
+
+#endif /* HEADER_CURL_TOOL_HELPERS_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_hugehelp.c b/ap/lib/libcurl/curl-7.86.0/src/tool_hugehelp.c
new file mode 100755
index 0000000..b1c2113
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_hugehelp.c
@@ -0,0 +1,12248 @@
+#include "tool_setup.h"
+#ifndef HAVE_LIBZ
+/*
+ * NEVER EVER edit this manually, fix the mkhelp.pl script instead!
+ */
+#ifdef USE_MANUAL
+#include "tool_hugehelp.h"
+void hugehelp(void)
+{
+ fputs(
+" _ _ ____ _\n"
+" Project ___| | | | _ \\| |\n"
+" / __| | | | |_) | |\n"
+" | (__| |_| | _ <| |___\n"
+" \\___|\\___/|_| \\_\\_____|\n"
+"\n"
+"NAME\n"
+" curl - transfer a URL\n"
+"\n"
+"SYNOPSIS\n"
+" curl [options / URLs]\n"
+"\n"
+"DESCRIPTION\n"
+" curl is a tool for transferring data from or to a server. It supports\n"
+" these protocols: DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS,\n"
+, stdout);
+ fputs(
+" IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP,\n"
+" SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. The command is\n"
+" designed to work without user interaction.\n"
+"\n"
+" curl offers a busload of useful tricks like proxy support, user authen-\n"
+" tication, FTP upload, HTTP post, SSL connections, cookies, file trans-\n"
+" fer resume and more. As you will see below, the number of features will\n"
+" make your head spin.\n"
+"\n"
+, stdout);
+ fputs(
+" curl is powered by libcurl for all transfer-related features. See\n"
+" libcurl(3) for details.\n"
+"\n"
+"URL\n"
+" The URL syntax is protocol-dependent. You find a detailed description\n"
+" in RFC 3986.\n"
+"\n"
+" You can specify multiple URLs or parts of URLs by writing part sets\n"
+" within braces and quoting the URL as in:\n"
+"\n"
+" \"http://site.{one,two,three}.com\"\n"
+"\n"
+" or you can get sequences of alphanumeric series by using [] as in:\n"
+"\n"
+, stdout);
+ fputs(
+" \"ftp://ftp.example.com/file[1-100].txt\"\n"
+"\n"
+" \"ftp://ftp.example.com/file[001-100].txt\" (with leading zeros)\n"
+"\n"
+" \"ftp://ftp.example.com/file[a-z].txt\"\n"
+"\n"
+" Nested sequences are not supported, but you can use several ones next\n"
+" to each other:\n"
+"\n"
+" \"http://example.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html\"\n"
+"\n"
+" You can specify any amount of URLs on the command line. They will be\n"
+, stdout);
+ fputs(
+" fetched in a sequential manner in the specified order. You can specify\n"
+" command line options and URLs mixed and in any order on the command\n"
+" line.\n"
+"\n"
+" You can specify a step counter for the ranges to get every Nth number\n"
+" or letter:\n"
+"\n"
+" \"http://example.com/file[1-100:10].txt\"\n"
+"\n"
+" \"http://example.com/file[a-z:2].txt\"\n"
+"\n"
+" When using [] or {} sequences when invoked from a command line prompt,\n"
+, stdout);
+ fputs(
+" you probably have to put the full URL within double quotes to avoid the\n"
+" shell from interfering with it. This also goes for other characters\n"
+" treated special, like for example '&', '?' and '*'.\n"
+"\n"
+" Provide the IPv6 zone index in the URL with an escaped percentage sign\n"
+" and the interface name. Like in\n"
+"\n"
+" \"http://[fe80::3%25eth0]/\"\n"
+"\n"
+" If you specify URL without protocol:// prefix, curl will attempt to\n"
+, stdout);
+ fputs(
+" guess what protocol you might want. It will then default to HTTP but\n"
+" try other protocols based on often-used host name prefixes. For exam-\n"
+" ple, for host names starting with \"ftp.\" curl will assume you want to\n"
+" speak FTP.\n"
+"\n"
+" curl will do its best to use what you pass to it as a URL. It is not\n"
+" trying to validate it as a syntactically correct URL by any means but\n"
+" is fairly liberal with what it accepts.\n"
+"\n"
+, stdout);
+ fputs(
+" curl will attempt to re-use connections for multiple file transfers, so\n"
+" that getting many files from the same server will not do multiple con-\n"
+" nects / handshakes. This improves speed. Of course this is only done on\n"
+" files specified on a single command line and cannot be used between\n"
+" separate curl invocations.\n"
+"\n"
+"OUTPUT\n"
+" If not told otherwise, curl writes the received data to stdout. It can\n"
+, stdout);
+ fputs(
+" be instructed to instead save that data into a local file, using the\n"
+" --output or --remote-name options. If curl is given multiple URLs to\n"
+" transfer on the command line, it similarly needs multiple options for\n"
+" where to save them.\n"
+"\n"
+" curl does not parse or otherwise \"understand\" the content it gets or\n"
+" writes as output. It does no encoding or decoding, unless explicitly\n"
+" asked to with dedicated command line options.\n"
+"\n"
+"PROTOCOLS\n"
+, stdout);
+ fputs(
+" curl supports numerous protocols, or put in URL terms: schemes. Your\n"
+" particular build may not support them all.\n"
+"\n"
+" DICT Lets you lookup words using online dictionaries.\n"
+"\n"
+" FILE Read or write local files. curl does not support accessing\n"
+" file:// URL remotely, but when running on Microsoft Windows us-\n"
+" ing the native UNC approach will work.\n"
+"\n"
+" FTP(S) curl supports the File Transfer Protocol with a lot of tweaks\n"
+, stdout);
+ fputs(
+" and levers. With or without using TLS.\n"
+"\n"
+" GOPHER(S)\n"
+" Retrieve files.\n"
+"\n"
+" HTTP(S)\n"
+" curl supports HTTP with numerous options and variations. It can\n"
+" speak HTTP version 0.9, 1.0, 1.1, 2 and 3 depending on build op-\n"
+" tions and the correct command line options.\n"
+"\n"
+" IMAP(S)\n"
+" Using the mail reading protocol, curl can \"download\" emails for\n"
+" you. With or without using TLS.\n"
+"\n"
+" LDAP(S)\n"
+, stdout);
+ fputs(
+" curl can do directory lookups for you, with or without TLS.\n"
+"\n"
+" MQTT curl supports MQTT version 3. Downloading over MQTT equals \"sub-\n"
+" scribe\" to a topic while uploading/posting equals \"publish\" on a\n"
+" topic. MQTT over TLS is not supported (yet).\n"
+"\n"
+" POP3(S)\n"
+" Downloading from a pop3 server means getting a mail. With or\n"
+" without using TLS.\n"
+"\n"
+" RTMP(S)\n"
+, stdout);
+ fputs(
+" The Realtime Messaging Protocol is primarily used to server\n"
+" streaming media and curl can download it.\n"
+"\n"
+" RTSP curl supports RTSP 1.0 downloads.\n"
+"\n"
+" SCP curl supports SSH version 2 scp transfers.\n"
+"\n"
+" SFTP curl supports SFTP (draft 5) done over SSH version 2.\n"
+"\n"
+" SMB(S) curl supports SMB version 1 for upload and download.\n"
+"\n"
+" SMTP(S)\n"
+" Uploading contents to an SMTP server means sending an email.\n"
+, stdout);
+ fputs(
+" With or without TLS.\n"
+"\n"
+" TELNET Telling curl to fetch a telnet URL starts an interactive session\n"
+" where it sends what it reads on stdin and outputs what the\n"
+" server sends it.\n"
+"\n"
+" TFTP curl can do TFTP downloads and uploads.\n"
+"\n"
+"PROGRESS METER\n"
+" curl normally displays a progress meter during operations, indicating\n"
+" the amount of transferred data, transfer speeds and estimated time\n"
+, stdout);
+ fputs(
+" left, etc. The progress meter displays number of bytes and the speeds\n"
+" are in bytes per second. The suffixes (k, M, G, T, P) are 1024 based.\n"
+" For example 1k is 1024 bytes. 1M is 1048576 bytes.\n"
+"\n"
+" curl displays this data to the terminal by default, so if you invoke\n"
+" curl to do an operation and it is about to write data to the terminal,\n"
+" it disables the progress meter as otherwise it would mess up the output\n"
+, stdout);
+ fputs(
+" mixing progress meter and response data.\n"
+"\n"
+" If you want a progress meter for HTTP POST or PUT requests, you need to\n"
+" redirect the response output to a file, using shell redirect (>),\n"
+" --output or similar.\n"
+"\n"
+" This does not apply to FTP upload as that operation does not spit out\n"
+" any response data to the terminal.\n"
+"\n"
+" If you prefer a progress \"bar\" instead of the regular meter,\n"
+, stdout);
+ fputs(
+" --progress-bar is your friend. You can also disable the progress meter\n"
+" completely with the --silent option.\n"
+"\n"
+"OPTIONS\n"
+" Options start with one or two dashes. Many of the options require an\n"
+" additional value next to them.\n"
+"\n"
+" The short \"single-dash\" form of the options, -d for example, may be\n"
+" used with or without a space between it and its value, although a space\n"
+" is a recommended separator. The long \"double-dash\" form, --data for ex-\n"
+, stdout);
+ fputs(
+" ample, requires a space between it and its value.\n"
+"\n"
+" Short version options that do not need any additional values can be\n"
+" used immediately next to each other, like for example you can specify\n"
+" all the options -O, -L and -v at once as -OLv.\n"
+"\n"
+" In general, all boolean options are enabled with --option and yet again\n"
+" disabled with --no-option. That is, you use the same option name but\n"
+, stdout);
+ fputs(
+" prefix it with \"no-\". However, in this list we mostly only list and\n"
+" show the --option version of them.\n"
+"\n"
+" --abstract-unix-socket <path>\n"
+" (HTTP) Connect through an abstract Unix domain socket, instead\n"
+" of using the network. Note: netstat shows the path of an ab-\n"
+" stract socket prefixed with '@', however the <path> argument\n"
+" should not have this leading character.\n"
+"\n"
+, stdout);
+ fputs(
+" If --abstract-unix-socket is provided several times, the last\n"
+" set value will be used.\n"
+"\n"
+" Example:\n"
+" curl --abstract-unix-socket socketpath https://example.com\n"
+"\n"
+" See also --unix-socket. Added in 7.53.0.\n"
+"\n"
+" --alt-svc <file name>\n"
+" (HTTPS) This option enables the alt-svc parser in curl. If the\n"
+" file name points to an existing alt-svc cache file, that will be\n"
+, stdout);
+ fputs(
+" used. After a completed transfer, the cache will be saved to the\n"
+" file name again if it has been modified.\n"
+"\n"
+" Specify a \"\" file name (zero length) to avoid loading/saving and\n"
+" make curl just handle the cache in memory.\n"
+"\n"
+" If this option is used several times, curl will load contents\n"
+" from all the files but the last one will be used for saving.\n"
+"\n"
+" --alt-svc can be used several times in a command line\n"
+"\n"
+, stdout);
+ fputs(
+" Example:\n"
+" curl --alt-svc svc.txt https://example.com\n"
+"\n"
+" See also --resolve and --connect-to. Added in 7.64.1.\n"
+"\n"
+" --anyauth\n"
+" (HTTP) Tells curl to figure out authentication method by itself,\n"
+" and use the most secure one the remote site claims to support.\n"
+" This is done by first doing a request and checking the response-\n"
+" headers, thus possibly inducing an extra network round-trip.\n"
+, stdout);
+ fputs(
+" This is used instead of setting a specific authentication\n"
+" method, which you can do with --basic, --digest, --ntlm, and\n"
+" --negotiate.\n"
+"\n"
+" Using --anyauth is not recommended if you do uploads from stdin,\n"
+" since it may require data to be sent twice and then the client\n"
+" must be able to rewind. If the need should arise when uploading\n"
+" from stdin, the upload operation will fail.\n"
+"\n"
+, stdout);
+ fputs(
+" Used together with -u, --user.\n"
+"\n"
+" Providing --anyauth multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
+" curl --anyauth --user me:pwd https://example.com\n"
+"\n"
+" See also --proxy-anyauth, --basic and --digest.\n"
+"\n"
+" -a, --append\n"
+" (FTP SFTP) When used in an upload, this makes curl append to the\n"
+" target file instead of overwriting it. If the remote file does\n"
+, stdout);
+ fputs(
+" not exist, it will be created. Note that this flag is ignored by\n"
+" some SFTP servers (including OpenSSH).\n"
+"\n"
+" Providing --append multiple times has no extra effect. Disable\n"
+" it again with --no-append.\n"
+"\n"
+" Example:\n"
+" curl --upload-file local --append ftp://example.com/\n"
+"\n"
+" See also -r, --range and -C, --continue-at.\n"
+"\n"
+" --aws-sigv4 <provider1[:provider2[:region[:service]]]>\n"
+, stdout);
+ fputs(
+" Use AWS V4 signature authentication in the transfer.\n"
+"\n"
+" The provider argument is a string that is used by the algorithm\n"
+" when creating outgoing authentication headers.\n"
+"\n"
+" The region argument is a string that points to a geographic area\n"
+" of a resources collection (region-code) when the region name is\n"
+" omitted from the endpoint.\n"
+"\n"
+" The service argument is a string that points to a function pro-\n"
+, stdout);
+ fputs(
+" vided by a cloud (service-code) when the service name is omitted\n"
+" from the endpoint.\n"
+"\n"
+" If --aws-sigv4 is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --aws-sigv4 \"aws:amz:east-2:es\" --user \"key:secret\" https://example.com\n"
+"\n"
+" See also --basic and -u, --user. Added in 7.75.0.\n"
+"\n"
+" --basic\n"
+" (HTTP) Tells curl to use HTTP Basic authentication with the re-\n"
+, stdout);
+ fputs(
+" mote host. This is the default and this option is usually point-\n"
+" less, unless you use it to override a previously set option that\n"
+" sets a different authentication method (such as --ntlm, --di-\n"
+" gest, or --negotiate).\n"
+"\n"
+" Used together with -u, --user.\n"
+"\n"
+" Providing --basic multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
+" curl -u name:password --basic https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also --proxy-basic.\n"
+"\n"
+" --cacert <file>\n"
+" (TLS) Tells curl to use the specified certificate file to verify\n"
+" the peer. The file may contain multiple CA certificates. The\n"
+" certificate(s) must be in PEM format. Normally curl is built to\n"
+" use a default file for this, so this option is typically used to\n"
+" alter that default file.\n"
+"\n"
+" curl recognizes the environment variable named 'CURL_CA_BUNDLE'\n"
+, stdout);
+ fputs(
+" if it is set, and uses the given path as a path to a CA cert\n"
+" bundle. This option overrides that variable.\n"
+"\n"
+" The windows version of curl will automatically look for a CA\n"
+" certs file named 'curl-ca-bundle.crt', either in the same direc-\n"
+" tory as curl.exe, or in the Current Working Directory, or in any\n"
+" folder along your PATH.\n"
+"\n"
+" If curl is built against the NSS SSL library, the NSS PEM\n"
+, stdout);
+ fputs(
+" PKCS#11 module (libnsspem.so) needs to be available for this op-\n"
+" tion to work properly.\n"
+"\n"
+" (iOS and macOS only) If curl is built against Secure Transport,\n"
+" then this option is supported for backward compatibility with\n"
+" other SSL engines, but it should not be set. If the option is\n"
+" not set, then curl will use the certificates in the system and\n"
+, stdout);
+ fputs(
+" user Keychain to verify the peer, which is the preferred method\n"
+" of verifying the peer's certificate chain.\n"
+"\n"
+" (Schannel only) This option is supported for Schannel in Windows\n"
+" 7 or later with libcurl 7.60 or later. This option is supported\n"
+" for backward compatibility with other SSL engines; instead it is\n"
+" recommended to use Windows' store of root certificates (the de-\n"
+" fault for Schannel).\n"
+"\n"
+, stdout);
+ fputs(
+" If --cacert is provided several times, the last set value will\n"
+" be used.\n"
+" Example:\n"
+" curl --cacert CA-file.txt https://example.com\n"
+"\n"
+" See also --capath and -k, --insecure.\n"
+"\n"
+" --capath <dir>\n"
+" (TLS) Tells curl to use the specified certificate directory to\n"
+" verify the peer. Multiple paths can be provided by separating\n"
+" them with \":\" (e.g. \"path1:path2:path3\"). The certificates must\n"
+, stdout);
+ fputs(
+" be in PEM format, and if curl is built against OpenSSL, the di-\n"
+" rectory must have been processed using the c_rehash utility sup-\n"
+" plied with OpenSSL. Using --capath can allow OpenSSL-powered\n"
+" curl to make SSL-connections much more efficiently than using\n"
+" --cacert if the --cacert file contains many CA certificates.\n"
+"\n"
+" If this option is set, the default capath value will be ignored.\n"
+, stdout);
+ fputs(
+" If --capath is provided several times, the last set value will\n"
+" be used.\n"
+" Example:\n"
+" curl --capath /local/directory https://example.com\n"
+"\n"
+" See also --cacert and -k, --insecure.\n"
+"\n"
+" --cert-status\n"
+" (TLS) Tells curl to verify the status of the server certificate\n"
+" by using the Certificate Status Request (aka. OCSP stapling) TLS\n"
+" extension.\n"
+"\n"
+, stdout);
+ fputs(
+" If this option is enabled and the server sends an invalid (e.g.\n"
+" expired) response, if the response suggests that the server cer-\n"
+" tificate has been revoked, or no response at all is received,\n"
+" the verification fails.\n"
+"\n"
+" This is currently only implemented in the OpenSSL, GnuTLS and\n"
+" NSS backends.\n"
+"\n"
+" Providing --cert-status multiple times has no extra effect.\n"
+, stdout);
+ fputs(
+" Disable it again with --no-cert-status.\n"
+"\n"
+" Example:\n"
+" curl --cert-status https://example.com\n"
+"\n"
+" See also --pinnedpubkey. Added in 7.41.0.\n"
+"\n"
+" --cert-type <type>\n"
+" (TLS) Tells curl what type the provided client certificate is\n"
+" using. PEM, DER, ENG and P12 are recognized types.\n"
+"\n"
+" The default type depends on the TLS backend and is usually PEM,\n"
+, stdout);
+ fputs(
+" however for Secure Transport and Schannel it is P12. If --cert\n"
+" is a pkcs11: URI then ENG is the default type.\n"
+"\n"
+" If --cert-type is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --cert-type PEM --cert file https://example.com\n"
+"\n"
+" See also -E, --cert, --key and --key-type.\n"
+"\n"
+" -E, --cert <certificate[:password]>\n"
+, stdout);
+ fputs(
+" (TLS) Tells curl to use the specified client certificate file\n"
+" when getting a file with HTTPS, FTPS or another SSL-based proto-\n"
+" col. The certificate must be in PKCS#12 format if using Secure\n"
+" Transport, or PEM format if using any other engine. If the op-\n"
+" tional password is not specified, it will be queried for on the\n"
+" terminal. Note that this option assumes a certificate file that\n"
+, stdout);
+ fputs(
+" is the private key and the client certificate concatenated. See\n"
+" --cert and --key to specify them independently.\n"
+"\n"
+" In the <certificate> portion of the argument, you must escape\n"
+" the character \":\" as \"\\:\" so that it is not recognized as the\n"
+" password delimiter. Similarly, you must escape the character \"\\\"\n"
+" as \"\\\\\" so that it is not recognized as an escape character.\n"
+"\n"
+, stdout);
+ fputs(
+" If curl is built against the NSS SSL library then this option\n"
+" can tell curl the nickname of the certificate to use within the\n"
+" NSS database defined by the environment variable SSL_DIR (or by\n"
+" default /etc/pki/nssdb). If the NSS PEM PKCS#11 module (lib-\n"
+" nsspem.so) is available then PEM files may be loaded.\n"
+"\n"
+" If you provide a path relative to the current directory, you\n"
+, stdout);
+ fputs(
+" must prefix the path with \"./\" in order to avoid confusion with\n"
+" an NSS database nickname.\n"
+"\n"
+" If curl is built against OpenSSL library, and the engine pkcs11\n"
+" is available, then a PKCS#11 URI (RFC 7512) can be used to spec-\n"
+" ify a certificate located in a PKCS#11 device. A string begin-\n"
+" ning with \"pkcs11:\" will be interpreted as a PKCS#11 URI. If a\n"
+, stdout);
+ fputs(
+" PKCS#11 URI is provided, then the --engine option will be set as\n"
+" \"pkcs11\" if none was provided and the --cert-type option will be\n"
+" set as \"ENG\" if none was provided.\n"
+"\n"
+" (iOS and macOS only) If curl is built against Secure Transport,\n"
+" then the certificate string can either be the name of a certifi-\n"
+" cate/private key in the system or user keychain, or the path to\n"
+, stdout);
+ fputs(
+" a PKCS#12-encoded certificate and private key. If you want to\n"
+" use a file from the current directory, please precede it with\n"
+" \"./\" prefix, in order to avoid confusion with a nickname.\n"
+"\n"
+" (Schannel only) Client certificates must be specified by a path\n"
+" expression to a certificate store. (Loading PFX is not sup-\n"
+" ported; you can import it to a store first). You can use \"<store\n"
+, stdout);
+ fputs(
+" location>\\<store name>\\<thumbprint>\" to refer to a certificate\n"
+" in the system certificates store, for example, \"Curren-\n"
+" tUser\\MY\\934a7ac6f8a5d579285a74fa61e19f23ddfe8d7a\". Thumbprint\n"
+" is usually a SHA-1 hex string which you can see in certificate\n"
+" details. Following store locations are supported: CurrentUser,\n"
+" LocalMachine, CurrentService, Services, CurrentUserGroupPolicy,\n"
+, stdout);
+ fputs(
+" LocalMachineGroupPolicy, LocalMachineEnterprise.\n"
+"\n"
+" If --cert is provided several times, the last set value will be\n"
+" used.\n"
+"\n"
+" Example:\n"
+" curl --cert certfile --key keyfile https://example.com\n"
+"\n"
+" See also --cert-type, --key and --key-type.\n"
+"\n"
+" --ciphers <list of ciphers>\n"
+" (TLS) Specifies which ciphers to use in the connection. The list\n"
+, stdout);
+ fputs(
+" of ciphers must specify valid ciphers. Read up on SSL cipher\n"
+" list details on this URL:\n"
+"\n"
+" https://curl.se/docs/ssl-ciphers.html\n"
+"\n"
+" If --ciphers is provided several times, the last set value will\n"
+" be used.\n"
+" Example:\n"
+" curl --ciphers ECDHE-ECDSA-AES256-CCM8 https://example.com\n"
+"\n"
+" See also --tlsv1.3.\n"
+"\n"
+" --compressed-ssh\n"
+, stdout);
+ fputs(
+" (SCP SFTP) Enables built-in SSH compression. This is a request,\n"
+" not an order; the server may or may not do it.\n"
+"\n"
+" Providing --compressed-ssh multiple times has no extra effect.\n"
+" Disable it again with --no-compressed-ssh.\n"
+"\n"
+" Example:\n"
+" curl --compressed-ssh sftp://example.com/\n"
+"\n"
+" See also --compressed. Added in 7.56.0.\n"
+"\n"
+" --compressed\n"
+, stdout);
+ fputs(
+" (HTTP) Request a compressed response using one of the algorithms\n"
+" curl supports, and automatically decompress the content. Headers\n"
+" are not modified.\n"
+"\n"
+" If this option is used and the server sends an unsupported en-\n"
+" coding, curl will report an error. This is a request, not an or-\n"
+" der; the server may or may not deliver data compressed.\n"
+"\n"
+" Providing --compressed multiple times has no extra effect. Dis-\n"
+, stdout);
+ fputs(
+" able it again with --no-compressed.\n"
+"\n"
+" Example:\n"
+" curl --compressed https://example.com\n"
+"\n"
+" See also --compressed-ssh.\n"
+"\n"
+" -K, --config <file>\n"
+" Specify a text file to read curl arguments from. The command\n"
+" line arguments found in the text file will be used as if they\n"
+" were provided on the command line.\n"
+"\n"
+" Options and their parameters must be specified on the same line\n"
+, stdout);
+ fputs(
+" in the file, separated by whitespace, colon, or the equals sign.\n"
+" Long option names can optionally be given in the config file\n"
+" without the initial double dashes and if so, the colon or equals\n"
+" characters can be used as separators. If the option is specified\n"
+" with one or two dashes, there can be no colon or equals charac-\n"
+" ter between the option and its parameter.\n"
+"\n"
+, stdout);
+ fputs(
+" If the parameter contains whitespace (or starts with : or =),\n"
+" the parameter must be enclosed within quotes. Within double\n"
+" quotes, the following escape sequences are available: \\\\, \\\",\n"
+" \\t, \\n, \\r and \\v. A backslash preceding any other letter is ig-\n"
+" nored.\n"
+"\n"
+" If the first column of a config line is a '#' character, the\n"
+" rest of the line will be treated as a comment.\n"
+"\n"
+, stdout);
+ fputs(
+" Only write one option per physical line in the config file.\n"
+"\n"
+" Specify the filename to --config as '-' to make curl read the\n"
+" file from stdin.\n"
+"\n"
+" Note that to be able to specify a URL in the config file, you\n"
+" need to specify it using the --url option, and not by simply\n"
+" writing the URL on its own line. So, it could look similar to\n"
+" this:\n"
+"\n"
+" url = \"https://curl.se/docs/\"\n"
+"\n"
+, stdout);
+ fputs(
+" # --- Example file ---\n"
+" # this is a comment\n"
+" url = \"example.com\"\n"
+" output = \"curlhere.html\"\n"
+" user-agent = \"superagent/1.0\"\n"
+"\n"
+" # and fetch another URL too\n"
+" url = \"example.com/docs/manpage.html\"\n"
+" -O\n"
+" referer = \"http://nowhereatall.example.com/\"\n"
+" # --- End of example file ---\n"
+"\n"
+" When curl is invoked, it (unless --disable is used) checks for a\n"
+, stdout);
+ fputs(
+" default config file and uses it if found, even when --config is\n"
+" used. The default config file is checked for in the following\n"
+" places in this order:\n"
+"\n"
+" 1) \"$CURL_HOME/.curlrc\"\n"
+"\n"
+" 2) \"$XDG_CONFIG_HOME/.curlrc\" (Added in 7.73.0)\n"
+"\n"
+" 3) \"$HOME/.curlrc\"\n"
+"\n"
+" 4) Windows: \"%USERPROFILE%\\.curlrc\"\n"
+"\n"
+" 5) Windows: \"%APPDATA%\\.curlrc\"\n"
+"\n"
+" 6) Windows: \"%USERPROFILE%\\Application Data\\.curlrc\"\n"
+"\n"
+, stdout);
+ fputs(
+" 7) Non-Windows: use getpwuid to find the home directory\n"
+"\n"
+" 8) On Windows, if it finds no .curlrc file in the sequence de-\n"
+" scribed above, it checks for one in the same dir the curl exe-\n"
+" cutable is placed.\n"
+"\n"
+" On Windows two filenames are checked per location: .curlrc and\n"
+" _curlrc, preferring the former. Older versions on Windows\n"
+" checked for _curlrc only.\n"
+"\n"
+, stdout);
+ fputs(
+" --config can be used several times in a command line\n"
+"\n"
+" Example:\n"
+" curl --config file.txt https://example.com\n"
+"\n"
+" See also -q, --disable.\n"
+"\n"
+" --connect-timeout <fractional seconds>\n"
+" Maximum time in seconds that you allow curl's connection to\n"
+" take. This only limits the connection phase, so if curl con-\n"
+" nects within the given period it will continue - if not it will\n"
+, stdout);
+ fputs(
+" exit. Since version 7.32.0, this option accepts decimal values.\n"
+" If --connect-timeout is provided several times, the last set\n"
+" value will be used.\n"
+"\n"
+" Examples:\n"
+" curl --connect-timeout 20 https://example.com\n"
+" curl --connect-timeout 3.14 https://example.com\n"
+"\n"
+" See also -m, --max-time.\n"
+"\n"
+" --connect-to <HOST1:PORT1:HOST2:PORT2>\n"
+"\n"
+, stdout);
+ fputs(
+" For a request to the given HOST1:PORT1 pair, connect to\n"
+" HOST2:PORT2 instead. This option is suitable to direct requests\n"
+" at a specific server, e.g. at a specific cluster node in a clus-\n"
+" ter of servers. This option is only used to establish the net-\n"
+" work connection. It does NOT affect the hostname/port that is\n"
+" used for TLS/SSL (e.g. SNI, certificate verification) or for the\n"
+, stdout);
+ fputs(
+" application protocols. \"HOST1\" and \"PORT1\" may be the empty\n"
+" string, meaning \"any host/port\". \"HOST2\" and \"PORT2\" may also be\n"
+" the empty string, meaning \"use the request's original\n"
+" host/port\".\n"
+"\n"
+" A \"host\" specified to this option is compared as a string, so it\n"
+" needs to match the name used in request URL. It can be either\n"
+, stdout);
+ fputs(
+" numerical such as \"127.0.0.1\" or the full host name such as \"ex-\n"
+" ample.org\".\n"
+"\n"
+" --connect-to can be used several times in a command line\n"
+"\n"
+" Example:\n"
+" curl --connect-to example.com:443:example.net:8443 https://example.com\n"
+"\n"
+" See also --resolve and -H, --header. Added in 7.49.0.\n"
+"\n"
+" -C, --continue-at <offset>\n"
+" Continue/Resume a previous file transfer at the given offset.\n"
+, stdout);
+ fputs(
+" The given offset is the exact number of bytes that will be\n"
+" skipped, counting from the beginning of the source file before\n"
+" it is transferred to the destination. If used with uploads, the\n"
+" FTP server command SIZE will not be used by curl.\n"
+"\n"
+" Use \"-C -\" to tell curl to automatically find out where/how to\n"
+" resume the transfer. It then uses the given output/input files\n"
+" to figure that out.\n"
+"\n"
+, stdout);
+ fputs(
+" If --continue-at is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Examples:\n"
+" curl -C - https://example.com\n"
+" curl -C 400 https://example.com\n"
+"\n"
+" See also -r, --range.\n"
+"\n"
+" -c, --cookie-jar <filename>\n"
+" (HTTP) Specify to which file you want curl to write all cookies\n"
+" after a completed operation. Curl writes all cookies from its\n"
+, stdout);
+ fputs(
+" in-memory cookie storage to the given file at the end of opera-\n"
+" tions. If no cookies are known, no data will be written. The\n"
+" file will be written using the Netscape cookie file format. If\n"
+" you set the file name to a single dash, \"-\", the cookies will be\n"
+" written to stdout.\n"
+"\n"
+" This command line option will activate the cookie engine that\n"
+, stdout);
+ fputs(
+" makes curl record and use cookies. Another way to activate it is\n"
+" to use the --cookie option.\n"
+"\n"
+" If the cookie jar cannot be created or written to, the whole\n"
+" curl operation will not fail or even report an error clearly.\n"
+" Using --verbose will get a warning displayed, but that is the\n"
+" only visible feedback you get about this possibly lethal situa-\n"
+" tion.\n"
+"\n"
+, stdout);
+ fputs(
+" If --cookie-jar is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Examples:\n"
+" curl -c store-here.txt https://example.com\n"
+" curl -c store-here.txt -b read-these https://example.com\n"
+"\n"
+" See also -b, --cookie.\n"
+"\n"
+" -b, --cookie <data|filename>\n"
+" (HTTP) Pass the data to the HTTP server in the Cookie header. It\n"
+" is supposedly the data previously received from the server in a\n"
+, stdout);
+ fputs(
+" \"Set-Cookie:\" line. The data should be in the format\n"
+" \"NAME1=VALUE1; NAME2=VALUE2\". This makes curl use the cookie\n"
+" header with this content explicitly in all outgoing request(s).\n"
+" If multiple requests are done due to authentication, followed\n"
+" redirects or similar, they will all get this cookie passed on.\n"
+"\n"
+" If no '=' symbol is used in the argument, it is instead treated\n"
+, stdout);
+ fputs(
+" as a filename to read previously stored cookie from. This option\n"
+" also activates the cookie engine which will make curl record in-\n"
+" coming cookies, which may be handy if you are using this in com-\n"
+" bination with the --location option or do multiple URL transfers\n"
+" on the same invoke. If the file name is exactly a minus (\"-\"),\n"
+" curl will instead read the contents from stdin.\n"
+"\n"
+, stdout);
+ fputs(
+" The file format of the file to read cookies from should be plain\n"
+" HTTP headers (Set-Cookie style) or the Netscape/Mozilla cookie\n"
+" file format.\n"
+"\n"
+" The file specified with --cookie is only used as input. No cook-\n"
+" ies will be written to the file. To store cookies, use the\n"
+" --cookie-jar option.\n"
+"\n"
+" If you use the Set-Cookie file format and do not specify a do-\n"
+, stdout);
+ fputs(
+" main then the cookie is not sent since the domain will never\n"
+" match. To address this, set a domain in Set-Cookie line (doing\n"
+" that will include sub-domains) or preferably: use the Netscape\n"
+" format.\n"
+"\n"
+" Users often want to both read cookies from a file and write up-\n"
+" dated cookies back to a file, so using both --cookie and\n"
+" --cookie-jar in the same command line is common.\n"
+"\n"
+, stdout);
+ fputs(
+" --cookie can be used several times in a command line\n"
+"\n"
+" Examples:\n"
+" curl -b cookiefile https://example.com\n"
+" curl -b cookiefile -c cookiefile https://example.com\n"
+"\n"
+" See also -c, --cookie-jar and -j, --junk-session-cookies.\n"
+"\n"
+" --create-dirs\n"
+" When used in conjunction with the --output option, curl will\n"
+" create the necessary local directory hierarchy as needed. This\n"
+, stdout);
+ fputs(
+" option creates the directories mentioned with the --output op-\n"
+" tion, nothing else. If the --output file name uses no directory,\n"
+" or if the directories it mentions already exist, no directories\n"
+" will be created.\n"
+"\n"
+" Created dirs are made with mode 0750 on unix style file systems.\n"
+" To create remote directories when using FTP or SFTP, try --ftp-\n"
+" create-dirs.\n"
+"\n"
+, stdout);
+ fputs(
+" Providing --create-dirs multiple times has no extra effect.\n"
+" Disable it again with --no-create-dirs.\n"
+"\n"
+" Example:\n"
+" curl --create-dirs --output local/dir/file https://example.com\n"
+"\n"
+" See also --ftp-create-dirs and --output-dir.\n"
+"\n"
+" --create-file-mode <mode>\n"
+" (SFTP SCP FILE) When curl is used to create files remotely using\n"
+" one of the supported protocols, this option allows the user to\n"
+, stdout);
+ fputs(
+" set which 'mode' to set on the file at creation time, instead of\n"
+" the default 0644.\n"
+"\n"
+" This option takes an octal number as argument.\n"
+"\n"
+" If --create-file-mode is provided several times, the last set\n"
+" value will be used.\n"
+"\n"
+" Example:\n"
+" curl --create-file-mode 0777 -T localfile sftp://example.com/new\n"
+"\n"
+" See also --ftp-create-dirs. Added in 7.75.0.\n"
+"\n"
+, stdout);
+ fputs(
+" --crlf (FTP SMTP) Convert LF to CRLF in upload. Useful for MVS\n"
+" (OS/390).\n"
+"\n"
+" (SMTP added in 7.40.0)\n"
+"\n"
+" Providing --crlf multiple times has no extra effect. Disable it\n"
+" again with --no-crlf.\n"
+"\n"
+" Example:\n"
+" curl --crlf -T file ftp://example.com/\n"
+"\n"
+" See also -B, --use-ascii.\n"
+"\n"
+" --crlfile <file>\n"
+" (TLS) Provide a file using PEM format with a Certificate Revoca-\n"
+, stdout);
+ fputs(
+" tion List that may specify peer certificates that are to be con-\n"
+" sidered revoked.\n"
+"\n"
+" If --crlfile is provided several times, the last set value will\n"
+" be used.\n"
+" Example:\n"
+" curl --crlfile rejects.txt https://example.com\n"
+"\n"
+" See also --cacert and --capath.\n"
+"\n"
+" --curves <algorithm list>\n"
+" (TLS) Tells curl to request specific curves to use during SSL\n"
+, stdout);
+ fputs(
+" session establishment according to RFC 8422, 5.1. Multiple al-\n"
+" gorithms can be provided by separating them with \":\" (e.g.\n"
+" \"X25519:P-521\"). The parameter is available identically in the\n"
+" \"openssl s_client/s_server\" utilities.\n"
+"\n"
+" --curves allows a OpenSSL powered curl to make SSL-connections\n"
+" with exactly the (EC) curve requested by the client, avoiding\n"
+, stdout);
+ fputs(
+" nontransparent client/server negotiations.\n"
+"\n"
+" If this option is set, the default curves list built into\n"
+" openssl will be ignored.\n"
+"\n"
+" If --curves is provided several times, the last set value will\n"
+" be used.\n"
+" Example:\n"
+" curl --curves X25519 https://example.com\n"
+"\n"
+" See also --ciphers. Added in 7.73.0.\n"
+"\n"
+" --data-ascii <data>\n"
+" (HTTP) This is just an alias for -d, --data.\n"
+"\n"
+, stdout);
+ fputs(
+" --data-ascii can be used several times in a command line\n"
+"\n"
+" Example:\n"
+" curl --data-ascii @file https://example.com\n"
+"\n"
+" See also --data-binary, --data-raw and --data-urlencode.\n"
+"\n"
+" --data-binary <data>\n"
+" (HTTP) This posts data exactly as specified with no extra pro-\n"
+" cessing whatsoever.\n"
+"\n"
+" If you start the data with the letter @, the rest should be a\n"
+, stdout);
+ fputs(
+" filename. Data is posted in a similar manner as --data does, ex-\n"
+" cept that newlines and carriage returns are preserved and con-\n"
+" versions are never done.\n"
+"\n"
+" Like --data the default content-type sent to the server is ap-\n"
+" plication/x-www-form-urlencoded. If you want the data to be\n"
+" treated as arbitrary binary data by the server then set the con-\n"
+, stdout);
+ fputs(
+" tent-type to octet-stream: -H \"Content-Type: application/octet-\n"
+" stream\".\n"
+"\n"
+" If this option is used several times, the ones following the\n"
+" first will append data as described in -d, --data.\n"
+"\n"
+" --data-binary can be used several times in a command line\n"
+"\n"
+" Example:\n"
+" curl --data-binary @filename https://example.com\n"
+"\n"
+" See also --data-ascii.\n"
+"\n"
+" --data-raw <data>\n"
+, stdout);
+ fputs(
+" (HTTP) This posts data similarly to --data but without the spe-\n"
+" cial interpretation of the @ character.\n"
+"\n"
+" --data-raw can be used several times in a command line\n"
+"\n"
+" Examples:\n"
+" curl --data-raw \"hello\" https://example.com\n"
+" curl --data-raw \"@at@at@\" https://example.com\n"
+"\n"
+" See also -d, --data. Added in 7.43.0.\n"
+"\n"
+" --data-urlencode <data>\n"
+, stdout);
+ fputs(
+" (HTTP) This posts data, similar to the other --data options with\n"
+" the exception that this performs URL-encoding.\n"
+"\n"
+" To be CGI-compliant, the <data> part should begin with a name\n"
+" followed by a separator and a content specification. The <data>\n"
+" part can be passed to curl using one of the following syntaxes:\n"
+"\n"
+" content\n"
+" This will make curl URL-encode the content and pass that\n"
+, stdout);
+ fputs(
+" on. Just be careful so that the content does not contain\n"
+" any = or @ symbols, as that will then make the syntax\n"
+" match one of the other cases below!\n"
+"\n"
+" =content\n"
+" This will make curl URL-encode the content and pass that\n"
+" on. The preceding = symbol is not included in the data.\n"
+"\n"
+" name=content\n"
+, stdout);
+ fputs(
+" This will make curl URL-encode the content part and pass\n"
+" that on. Note that the name part is expected to be URL-\n"
+" encoded already.\n"
+"\n"
+" @filename\n"
+" This will make curl load data from the given file (in-\n"
+" cluding any newlines), URL-encode that data and pass it\n"
+" on in the POST.\n"
+"\n"
+" name@filename\n"
+, stdout);
+ fputs(
+" This will make curl load data from the given file (in-\n"
+" cluding any newlines), URL-encode that data and pass it\n"
+" on in the POST. The name part gets an equal sign ap-\n"
+" pended, resulting in name=urlencoded-file-content. Note\n"
+" that the name is expected to be URL-encoded already.\n"
+"\n"
+" --data-urlencode can be used several times in a command line\n"
+"\n"
+" Examples:\n"
+, stdout);
+ fputs(
+" curl --data-urlencode name=val https://example.com\n"
+" curl --data-urlencode =encodethis https://example.com\n"
+" curl --data-urlencode name@file https://example.com\n"
+" curl --data-urlencode @fileonly https://example.com\n"
+"\n"
+" See also -d, --data and --data-raw.\n"
+"\n"
+" -d, --data <data>\n"
+" (HTTP MQTT) Sends the specified data in a POST request to the\n"
+" HTTP server, in the same way that a browser does when a user has\n"
+, stdout);
+ fputs(
+" filled in an HTML form and presses the submit button. This will\n"
+" cause curl to pass the data to the server using the content-type\n"
+" application/x-www-form-urlencoded. Compare to -F, --form.\n"
+"\n"
+" --data-raw is almost the same but does not have a special inter-\n"
+" pretation of the @ character. To post data purely binary, you\n"
+" should instead use the --data-binary option. To URL-encode the\n"
+, stdout);
+ fputs(
+" value of a form field you may use --data-urlencode.\n"
+"\n"
+" If any of these options is used more than once on the same com-\n"
+" mand line, the data pieces specified will be merged with a sepa-\n"
+" rating &-symbol. Thus, using '-d name=daniel -d skill=lousy'\n"
+" would generate a post chunk that looks like\n"
+" 'name=daniel&skill=lousy'.\n"
+"\n"
+, stdout);
+ fputs(
+" If you start the data with the letter @, the rest should be a\n"
+" file name to read the data from, or - if you want curl to read\n"
+" the data from stdin. Posting data from a file named 'foobar'\n"
+" would thus be done with -d, --data @foobar. When --data is told\n"
+" to read from a file like that, carriage returns and newlines\n"
+" will be stripped out. If you do not want the @ character to have\n"
+, stdout);
+ fputs(
+" a special interpretation use --data-raw instead.\n"
+"\n"
+" --data can be used several times in a command line\n"
+"\n"
+" Examples:\n"
+" curl -d \"name=curl\" https://example.com\n"
+" curl -d \"name=curl\" -d \"tool=cmdline\" https://example.com\n"
+" curl -d @filename https://example.com\n"
+"\n"
+" See also --data-binary, --data-urlencode and --data-raw. This\n"
+" option is mutually exclusive to -F, --form and -I, --head and\n"
+, stdout);
+ fputs(
+" -T, --upload-file.\n"
+"\n"
+" --delegation <LEVEL>\n"
+" (GSS/kerberos) Set LEVEL to tell the server what it is allowed\n"
+" to delegate when it comes to user credentials.\n"
+"\n"
+" none Do not allow any delegation.\n"
+"\n"
+" policy Delegates if and only if the OK-AS-DELEGATE flag is set\n"
+" in the Kerberos service ticket, which is a matter of\n"
+" realm policy.\n"
+"\n"
+, stdout);
+ fputs(
+" always Unconditionally allow the server to delegate.\n"
+"\n"
+" If --delegation is provided several times, the last set value will be\n"
+" used.\n"
+"\n"
+" Example:\n"
+" curl --delegation \"none\" https://example.com\n"
+"\n"
+" See also -k, --insecure and --ssl.\n"
+"\n"
+" --digest\n"
+" (HTTP) Enables HTTP Digest authentication. This is an authenti-\n"
+" cation scheme that prevents the password from being sent over\n"
+, stdout);
+ fputs(
+" the wire in clear text. Use this in combination with the normal\n"
+" --user option to set user name and password.\n"
+"\n"
+" Providing --digest multiple times has no extra effect. Disable\n"
+" it again with --no-digest.\n"
+"\n"
+" Example:\n"
+" curl -u name:password --digest https://example.com\n"
+"\n"
+" See also -u, --user, --proxy-digest and --anyauth. This option\n"
+, stdout);
+ fputs(
+" is mutually exclusive to --basic and --ntlm and --negotiate.\n"
+"\n"
+" --disable-eprt\n"
+" (FTP) Tell curl to disable the use of the EPRT and LPRT commands\n"
+" when doing active FTP transfers. Curl will normally always first\n"
+" attempt to use EPRT, then LPRT before using PORT, but with this\n"
+" option, it will use PORT right away. EPRT and LPRT are exten-\n"
+" sions to the original FTP protocol, and may not work on all\n"
+, stdout);
+ fputs(
+" servers, but they enable more functionality in a better way than\n"
+" the traditional PORT command.\n"
+"\n"
+" --eprt can be used to explicitly enable EPRT again and --no-eprt\n"
+" is an alias for --disable-eprt.\n"
+"\n"
+" If the server is accessed using IPv6, this option will have no\n"
+" effect as EPRT is necessary then.\n"
+"\n"
+" Disabling EPRT only changes the active behavior. If you want to\n"
+, stdout);
+ fputs(
+" switch to passive mode you need to not use --ftp-port or force\n"
+" it with --ftp-pasv.\n"
+"\n"
+" Providing --disable-eprt multiple times has no extra effect.\n"
+" Disable it again with --no-disable-eprt.\n"
+"\n"
+" Example:\n"
+" curl --disable-eprt ftp://example.com/\n"
+"\n"
+" See also --disable-epsv and -P, --ftp-port.\n"
+"\n"
+" --disable-epsv\n"
+" (FTP) Tell curl to disable the use of the EPSV command when do-\n"
+, stdout);
+ fputs(
+" ing passive FTP transfers. Curl will normally always first at-\n"
+" tempt to use EPSV before PASV, but with this option, it will not\n"
+" try using EPSV.\n"
+"\n"
+" --epsv can be used to explicitly enable EPSV again and --no-epsv\n"
+" is an alias for --disable-epsv.\n"
+"\n"
+" If the server is an IPv6 host, this option will have no effect\n"
+" as EPSV is necessary then.\n"
+"\n"
+, stdout);
+ fputs(
+" Disabling EPSV only changes the passive behavior. If you want to\n"
+" switch to active mode you need to use -P, --ftp-port.\n"
+"\n"
+" Providing --disable-epsv multiple times has no extra effect.\n"
+" Disable it again with --no-disable-epsv.\n"
+"\n"
+" Example:\n"
+" curl --disable-epsv ftp://example.com/\n"
+"\n"
+" See also --disable-eprt and -P, --ftp-port.\n"
+"\n"
+" -q, --disable\n"
+, stdout);
+ fputs(
+" If used as the first parameter on the command line, the curlrc\n"
+" config file will not be read and used. See the --config for de-\n"
+" tails on the default config file search path.\n"
+"\n"
+" Providing --disable multiple times has no extra effect. Disable\n"
+" it again with --no-disable.\n"
+"\n"
+" Example:\n"
+" curl -q https://example.com\n"
+"\n"
+" See also -K, --config.\n"
+"\n"
+" --disallow-username-in-url\n"
+, stdout);
+ fputs(
+" (HTTP) This tells curl to exit if passed a URL containing a\n"
+" username. This is probably most useful when the URL is being\n"
+" provided at runtime or similar.\n"
+"\n"
+" Providing --disallow-username-in-url multiple times has no extra\n"
+" effect. Disable it again with --no-disallow-username-in-url.\n"
+"\n"
+" Example:\n"
+" curl --disallow-username-in-url https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also --proto. Added in 7.61.0.\n"
+"\n"
+" --dns-interface <interface>\n"
+" (DNS) Tell curl to send outgoing DNS requests through <inter-\n"
+" face>. This option is a counterpart to --interface (which does\n"
+" not affect DNS). The supplied string must be an interface name\n"
+" (not an address).\n"
+"\n"
+" If --dns-interface is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --dns-interface eth0 https://example.com\n"
+"\n"
+" See also --dns-ipv4-addr and --dns-ipv6-addr. --dns-interface\n"
+" requires that the underlying libcurl was built to support c-\n"
+" ares. Added in 7.33.0.\n"
+"\n"
+" --dns-ipv4-addr <address>\n"
+" (DNS) Tell curl to bind to <ip-address> when making IPv4 DNS re-\n"
+" quests, so that the DNS requests originate from this address.\n"
+, stdout);
+ fputs(
+" The argument should be a single IPv4 address.\n"
+"\n"
+" If --dns-ipv4-addr is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --dns-ipv4-addr 10.1.2.3 https://example.com\n"
+"\n"
+" See also --dns-interface and --dns-ipv6-addr. --dns-ipv4-addr\n"
+" requires that the underlying libcurl was built to support c-\n"
+" ares. Added in 7.33.0.\n"
+"\n"
+" --dns-ipv6-addr <address>\n"
+, stdout);
+ fputs(
+" (DNS) Tell curl to bind to <ip-address> when making IPv6 DNS re-\n"
+" quests, so that the DNS requests originate from this address.\n"
+" The argument should be a single IPv6 address.\n"
+"\n"
+" If --dns-ipv6-addr is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --dns-ipv6-addr 2a04:4e42::561 https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also --dns-interface and --dns-ipv4-addr. --dns-ipv6-addr\n"
+" requires that the underlying libcurl was built to support c-\n"
+" ares. Added in 7.33.0.\n"
+"\n"
+" --dns-servers <addresses>\n"
+" Set the list of DNS servers to be used instead of the system de-\n"
+" fault. The list of IP addresses should be separated with com-\n"
+" mas. Port numbers may also optionally be given as :<port-number>\n"
+, stdout);
+ fputs(
+" after each IP address.\n"
+"\n"
+" If --dns-servers is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --dns-servers 192.168.0.1,192.168.0.2 https://example.com\n"
+"\n"
+" See also --dns-interface and --dns-ipv4-addr. --dns-servers re-\n"
+" quires that the underlying libcurl was built to support c-ares.\n"
+" Added in 7.33.0.\n"
+"\n"
+" --doh-cert-status\n"
+, stdout);
+ fputs(
+" Same as --cert-status but used for DoH (DNS-over-HTTPS).\n"
+"\n"
+" Providing --doh-cert-status multiple times has no extra effect.\n"
+" Disable it again with --no-doh-cert-status.\n"
+"\n"
+" Example:\n"
+" curl --doh-cert-status --doh-url https://doh.example https://example.com\n"
+"\n"
+" See also --doh-insecure. Added in 7.76.0.\n"
+"\n"
+" --doh-insecure\n"
+" Same as --insecure but used for DoH (DNS-over-HTTPS).\n"
+"\n"
+, stdout);
+ fputs(
+" Providing --doh-insecure multiple times has no extra effect.\n"
+" Disable it again with --no-doh-insecure.\n"
+"\n"
+" Example:\n"
+" curl --doh-insecure --doh-url https://doh.example https://example.com\n"
+"\n"
+" See also --doh-url. Added in 7.76.0.\n"
+"\n"
+" --doh-url <URL>\n"
+" Specifies which DNS-over-HTTPS (DoH) server to use to resolve\n"
+" hostnames, instead of using the default name resolver mechanism.\n"
+, stdout);
+ fputs(
+" The URL must be HTTPS.\n"
+"\n"
+" Some SSL options that you set for your transfer will apply to\n"
+" DoH since the name lookups take place over SSL. However, the\n"
+" certificate verification settings are not inherited and can be\n"
+" controlled separately via --doh-insecure and --doh-cert-status.\n"
+"\n"
+" This option is unset if an empty string \"\" is used as the URL.\n"
+" (Added in 7.85.0)\n"
+"\n"
+, stdout);
+ fputs(
+" If --doh-url is provided several times, the last set value will\n"
+" be used.\n"
+" Example:\n"
+" curl --doh-url https://doh.example https://example.com\n"
+"\n"
+" See also --doh-insecure. Added in 7.62.0.\n"
+"\n"
+" -D, --dump-header <filename>\n"
+" (HTTP FTP) Write the received protocol headers to the specified\n"
+" file. If no headers are received, the use of this option will\n"
+" create an empty file.\n"
+"\n"
+, stdout);
+ fputs(
+" When used in FTP, the FTP server response lines are considered\n"
+" being \"headers\" and thus are saved there.\n"
+"\n"
+" If --dump-header is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --dump-header store.txt https://example.com\n"
+"\n"
+" See also -o, --output.\n"
+"\n"
+" --egd-file <file>\n"
+" (TLS) Deprecated option. This option is ignored by curl since\n"
+, stdout);
+ fputs(
+" 7.84.0. Prior to that it only had an effect on curl if built to\n"
+" use old versions of OpenSSL.\n"
+"\n"
+" Specify the path name to the Entropy Gathering Daemon socket.\n"
+" The socket is used to seed the random engine for SSL connec-\n"
+" tions.\n"
+"\n"
+" If --egd-file is provided several times, the last set value will\n"
+" be used.\n"
+" Example:\n"
+" curl --egd-file /random/here https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also --random-file.\n"
+"\n"
+" --engine <name>\n"
+" (TLS) Select the OpenSSL crypto engine to use for cipher opera-\n"
+" tions. Use --engine list to print a list of build-time supported\n"
+" engines. Note that not all (and possibly none) of the engines\n"
+" may be available at runtime.\n"
+"\n"
+" If --engine is provided several times, the last set value will\n"
+" be used.\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --engine flavor https://example.com\n"
+"\n"
+" See also --ciphers and --curves.\n"
+"\n"
+" --etag-compare <file>\n"
+" (HTTP) This option makes a conditional HTTP request for the spe-\n"
+" cific ETag read from the given file by sending a custom If-None-\n"
+" Match header using the stored ETag.\n"
+"\n"
+" For correct results, make sure that the specified file contains\n"
+, stdout);
+ fputs(
+" only a single line with the desired ETag. An empty file is\n"
+" parsed as an empty ETag.\n"
+"\n"
+" Use the option --etag-save to first save the ETag from a re-\n"
+" sponse, and then use this option to compare against the saved\n"
+" ETag in a subsequent request.\n"
+"\n"
+" If --etag-compare is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --etag-compare etag.txt https://example.com\n"
+"\n"
+" See also --etag-save and -z, --time-cond. Added in 7.68.0.\n"
+"\n"
+" --etag-save <file>\n"
+" (HTTP) This option saves an HTTP ETag to the specified file. An\n"
+" ETag is a caching related header, usually returned in a re-\n"
+" sponse.\n"
+"\n"
+" If no ETag is sent by the server, an empty file is created.\n"
+"\n"
+" If --etag-save is provided several times, the last set value\n"
+, stdout);
+ fputs(
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --etag-save storetag.txt https://example.com\n"
+"\n"
+" See also --etag-compare. Added in 7.68.0.\n"
+"\n"
+" --expect100-timeout <seconds>\n"
+" (HTTP) Maximum time in seconds that you allow curl to wait for a\n"
+" 100-continue response when curl emits an Expects: 100-continue\n"
+" header in its request. By default curl will wait one second.\n"
+, stdout);
+ fputs(
+" This option accepts decimal values! When curl stops waiting, it\n"
+" will continue as if the response has been received.\n"
+"\n"
+" If --expect100-timeout is provided several times, the last set\n"
+" value will be used.\n"
+"\n"
+" Example:\n"
+" curl --expect100-timeout 2.5 -T file https://example.com\n"
+"\n"
+" See also --connect-timeout. Added in 7.47.0.\n"
+"\n"
+" --fail-early\n"
+, stdout);
+ fputs(
+" Fail and exit on the first detected transfer error.\n"
+"\n"
+" When curl is used to do multiple transfers on the command line,\n"
+" it will attempt to operate on each given URL, one by one. By de-\n"
+" fault, it will ignore errors if there are more URLs given and\n"
+" the last URL's success will determine the error code curl re-\n"
+" turns. So early failures will be \"hidden\" by subsequent success-\n"
+" ful transfers.\n"
+"\n"
+, stdout);
+ fputs(
+" Using this option, curl will instead return an error on the\n"
+" first transfer that fails, independent of the amount of URLs\n"
+" that are given on the command line. This way, no transfer fail-\n"
+" ures go undetected by scripts and similar.\n"
+"\n"
+" This option is global and does not need to be specified for each\n"
+" use of -:, --next.\n"
+"\n"
+" This option does not imply -f, --fail, which causes transfers to\n"
+, stdout);
+ fputs(
+" fail due to the server's HTTP status code. You can combine the\n"
+" two options, however note --fail is not global and is therefore\n"
+" contained by -:, --next.\n"
+"\n"
+" Providing --fail-early multiple times has no extra effect. Dis-\n"
+" able it again with --no-fail-early.\n"
+"\n"
+" Example:\n"
+" curl --fail-early https://example.com https://two.example\n"
+"\n"
+" See also -f, --fail and --fail-with-body. Added in 7.52.0.\n"
+"\n"
+, stdout);
+ fputs(
+" --fail-with-body\n"
+" (HTTP) Return an error on server errors where the HTTP response\n"
+" code is 400 or greater). In normal cases when an HTTP server\n"
+" fails to deliver a document, it returns an HTML document stating\n"
+" so (which often also describes why and more). This flag will\n"
+" still allow curl to output and save that content but also to re-\n"
+" turn error 22.\n"
+"\n"
+, stdout);
+ fputs(
+" This is an alternative option to --fail which makes curl fail\n"
+" for the same circumstances but without saving the content.\n"
+"\n"
+" Providing --fail-with-body multiple times has no extra effect.\n"
+" Disable it again with --no-fail-with-body.\n"
+"\n"
+" Example:\n"
+" curl --fail-with-body https://example.com\n"
+"\n"
+" See also -f, --fail. This option is mutually exclusive to -f,\n"
+" --fail. Added in 7.76.0.\n"
+"\n"
+, stdout);
+ fputs(
+" -f, --fail\n"
+" (HTTP) Fail fast with no output at all on server errors. This is\n"
+" useful to enable scripts and users to better deal with failed\n"
+" attempts. In normal cases when an HTTP server fails to deliver a\n"
+" document, it returns an HTML document stating so (which often\n"
+" also describes why and more). This flag will prevent curl from\n"
+" outputting that and return error 22.\n"
+"\n"
+, stdout);
+ fputs(
+" This method is not fail-safe and there are occasions where non-\n"
+" successful response codes will slip through, especially when au-\n"
+" thentication is involved (response codes 401 and 407).\n"
+"\n"
+" Providing --fail multiple times has no extra effect. Disable it\n"
+" again with --no-fail.\n"
+"\n"
+" Example:\n"
+" curl --fail https://example.com\n"
+"\n"
+" See also --fail-with-body. This option is mutually exclusive to\n"
+, stdout);
+ fputs(
+" --fail-with-body.\n"
+"\n"
+" --false-start\n"
+" (TLS) Tells curl to use false start during the TLS handshake.\n"
+" False start is a mode where a TLS client will start sending ap-\n"
+" plication data before verifying the server's Finished message,\n"
+" thus saving a round trip when performing a full handshake.\n"
+"\n"
+" This is currently only implemented in the NSS and Secure Trans-\n"
+, stdout);
+ fputs(
+" port (on iOS 7.0 or later, or OS X 10.9 or later) backends.\n"
+"\n"
+" Providing --false-start multiple times has no extra effect.\n"
+" Disable it again with --no-false-start.\n"
+"\n"
+" Example:\n"
+" curl --false-start https://example.com\n"
+"\n"
+" See also --tcp-fastopen. Added in 7.42.0.\n"
+"\n"
+" --form-escape\n"
+" (HTTP) Tells curl to pass on names of multipart form fields and\n"
+, stdout);
+ fputs(
+" files using backslash-escaping instead of percent-encoding.\n"
+"\n"
+" If --form-escape is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --form-escape -F 'field\\name=curl' -F 'file=@load\"this' https://example.com\n"
+"\n"
+" See also -F, --form. Added in 7.81.0.\n"
+"\n"
+" --form-string <name=string>\n"
+" (HTTP SMTP IMAP) Similar to --form except that the value string\n"
+, stdout);
+ fputs(
+" for the named parameter is used literally. Leading '@' and '<'\n"
+" characters, and the ';type=' string in the value have no special\n"
+" meaning. Use this in preference to --form if there's any possi-\n"
+" bility that the string value may accidentally trigger the '@' or\n"
+" '<' features of -F, --form.\n"
+"\n"
+" --form-string can be used several times in a command line\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --form-string \"data\" https://example.com\n"
+"\n"
+" See also -F, --form.\n"
+"\n"
+" -F, --form <name=content>\n"
+" (HTTP SMTP IMAP) For HTTP protocol family, this lets curl emu-\n"
+" late a filled-in form in which a user has pressed the submit\n"
+" button. This causes curl to POST data using the Content-Type\n"
+" multipart/form-data according to RFC 2388.\n"
+"\n"
+, stdout);
+ fputs(
+" For SMTP and IMAP protocols, this is the means to compose a mul-\n"
+" tipart mail message to transmit.\n"
+"\n"
+" This enables uploading of binary files etc. To force the 'con-\n"
+" tent' part to be a file, prefix the file name with an @ sign. To\n"
+" just get the content part from a file, prefix the file name with\n"
+" the symbol <. The difference between @ and < is then that @\n"
+, stdout);
+ fputs(
+" makes a file get attached in the post as a file upload, while\n"
+" the < makes a text field and just get the contents for that text\n"
+" field from a file.\n"
+"\n"
+" Tell curl to read content from stdin instead of a file by using\n"
+" - as filename. This goes for both @ and < constructs. When stdin\n"
+" is used, the contents is buffered in memory first by curl to de-\n"
+, stdout);
+ fputs(
+" termine its size and allow a possible resend. Defining a part's\n"
+" data from a named non-regular file (such as a named pipe or sim-\n"
+" ilar) is unfortunately not subject to buffering and will be ef-\n"
+" fectively read at transmission time; since the full size is un-\n"
+" known before the transfer starts, such data is sent as chunks by\n"
+" HTTP and rejected by IMAP.\n"
+"\n"
+, stdout);
+ fputs(
+" Example: send an image to an HTTP server, where 'profile' is the\n"
+" name of the form-field to which the file portrait.jpg will be\n"
+" the input:\n"
+"\n"
+" curl -F profile=@portrait.jpg https://example.com/upload.cgi\n"
+"\n"
+" Example: send your name and shoe size in two text fields to the\n"
+" server:\n"
+"\n"
+" curl -F name=John -F shoesize=11 https://example.com/\n"
+"\n"
+, stdout);
+ fputs(
+" Example: send your essay in a text field to the server. Send it\n"
+" as a plain text field, but get the contents for it from a local\n"
+" file:\n"
+"\n"
+" curl -F \"story=<hugefile.txt\" https://example.com/\n"
+"\n"
+" You can also tell curl what Content-Type to use by using\n"
+" 'type=', in a manner similar to:\n"
+"\n"
+" curl -F \"web=@index.html;type=text/html\" example.com\n"
+"\n"
+" or\n"
+"\n"
+, stdout);
+ fputs(
+" curl -F \"name=daniel;type=text/foo\" example.com\n"
+"\n"
+" You can also explicitly change the name field of a file upload\n"
+" part by setting filename=, like this:\n"
+"\n"
+" curl -F \"file=@localfile;filename=nameinpost\" example.com\n"
+"\n"
+" If filename/path contains ',' or ';', it must be quoted by dou-\n"
+" ble-quotes like:\n"
+"\n"
+" curl -F \"file=@\\\"local,file\\\";filename=\\\"name;in;post\\\"\" example.com\n"
+"\n"
+" or\n"
+"\n"
+, stdout);
+ fputs(
+" curl -F 'file=@\"local,file\";filename=\"name;in;post\"' example.com\n"
+" Note that if a filename/path is quoted by double-quotes, any\n"
+" double-quote or backslash within the filename must be escaped by\n"
+" backslash.\n"
+"\n"
+" Quoting must also be applied to non-file data if it contains\n"
+" semicolons, leading/trailing spaces or leading double quotes:\n"
+"\n"
+, stdout);
+ fputs(
+" curl -F 'colors=\"red; green; blue\";type=text/x-myapp' example.com\n"
+"\n"
+" You can add custom headers to the field by setting headers=,\n"
+" like\n"
+"\n"
+" curl -F \"submit=OK;headers=\\\"X-submit-type: OK\\\"\" example.com\n"
+"\n"
+" or\n"
+"\n"
+" curl -F \"submit=OK;headers=@headerfile\" example.com\n"
+"\n"
+" The headers= keyword may appear more that once and above notes\n"
+, stdout);
+ fputs(
+" about quoting apply. When headers are read from a file, Empty\n"
+" lines and lines starting with '#' are comments and ignored; each\n"
+" header can be folded by splitting between two words and starting\n"
+" the continuation line with a space; embedded carriage-returns\n"
+" and trailing spaces are stripped. Here is an example of a\n"
+" header file contents:\n"
+"\n"
+" # This file contain two headers.\n"
+, stdout);
+ fputs(
+" X-header-1: this is a header\n"
+"\n"
+" # The following header is folded.\n"
+" X-header-2: this is\n"
+" another header\n"
+"\n"
+" To support sending multipart mail messages, the syntax is ex-\n"
+" tended as follows:\n"
+" - name can be omitted: the equal sign is the first character of\n"
+" the argument,\n"
+" - if data starts with '(', this signals to start a new multi-\n"
+, stdout);
+ fputs(
+" part: it can be followed by a content type specification.\n"
+" - a multipart can be terminated with a '=)' argument.\n"
+"\n"
+" Example: the following command sends an SMTP mime email consist-\n"
+" ing in an inline part in two alternative formats: plain text and\n"
+" HTML. It attaches a text file:\n"
+"\n"
+" curl -F '=(;type=multipart/alternative' \\\n"
+" -F '=plain text message' \\\n"
+, stdout);
+ fputs(
+" -F '= <body>HTML message</body>;type=text/html' \\\n"
+" -F '=)' -F '=@textfile.txt' ... smtp://example.com\n"
+"\n"
+" Data can be encoded for transfer using encoder=. Available en-\n"
+" codings are binary and 8bit that do nothing else than adding the\n"
+" corresponding Content-Transfer-Encoding header, 7bit that only\n"
+" rejects 8-bit characters with a transfer error, quoted-printable\n"
+, stdout);
+ fputs(
+" and base64 that encodes data according to the corresponding\n"
+" schemes, limiting lines length to 76 characters.\n"
+"\n"
+" Example: send multipart mail with a quoted-printable text mes-\n"
+" sage and a base64 attached file:\n"
+"\n"
+" curl -F '=text message;encoder=quoted-printable' \\\n"
+" -F '=@localfile;encoder=base64' ... smtp://example.com\n"
+"\n"
+" See further examples and details in the MANUAL.\n"
+"\n"
+, stdout);
+ fputs(
+" --form can be used several times in a command line\n"
+"\n"
+" Example:\n"
+" curl --form \"name=curl\" --form \"file=@loadthis\" https://example.com\n"
+"\n"
+" See also -d, --data, --form-string and --form-escape. This op-\n"
+" tion is mutually exclusive to -d, --data and -I, --head and -T,\n"
+" --upload-file.\n"
+"\n"
+" --ftp-account <data>\n"
+" (FTP) When an FTP server asks for \"account data\" after user name\n"
+, stdout);
+ fputs(
+" and password has been provided, this data is sent off using the\n"
+" ACCT command.\n"
+"\n"
+" If --ftp-account is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --ftp-account \"mr.robot\" ftp://example.com/\n"
+"\n"
+" See also -u, --user.\n"
+"\n"
+" --ftp-alternative-to-user <command>\n"
+" (FTP) If authenticating with the USER and PASS commands fails,\n"
+, stdout);
+ fputs(
+" send this command. When connecting to Tumbleweed's Secure\n"
+" Transport server over FTPS using a client certificate, using\n"
+" \"SITE AUTH\" will tell the server to retrieve the username from\n"
+" the certificate.\n"
+"\n"
+" If --ftp-alternative-to-user is provided several times, the last\n"
+" set value will be used.\n"
+"\n"
+" Example:\n"
+" curl --ftp-alternative-to-user \"U53r\" ftp://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also --ftp-account and -u, --user.\n"
+"\n"
+" --ftp-create-dirs\n"
+" (FTP SFTP) When an FTP or SFTP URL/operation uses a path that\n"
+" does not currently exist on the server, the standard behavior of\n"
+" curl is to fail. Using this option, curl will instead attempt to\n"
+" create missing directories.\n"
+"\n"
+" Providing --ftp-create-dirs multiple times has no extra effect.\n"
+" Disable it again with --no-ftp-create-dirs.\n"
+"\n"
+, stdout);
+ fputs(
+" Example:\n"
+" curl --ftp-create-dirs -T file ftp://example.com/remote/path/file\n"
+"\n"
+" See also --create-dirs.\n"
+"\n"
+" --ftp-method <method>\n"
+" (FTP) Control what method curl should use to reach a file on an\n"
+" FTP(S) server. The method argument should be one of the follow-\n"
+" ing alternatives:\n"
+"\n"
+" multicwd\n"
+" curl does a single CWD operation for each path part in\n"
+, stdout);
+ fputs(
+" the given URL. For deep hierarchies this means many com-\n"
+" mands. This is how RFC 1738 says it should be done. This\n"
+" is the default but the slowest behavior.\n"
+"\n"
+" nocwd curl does no CWD at all. curl will do SIZE, RETR, STOR\n"
+" etc and give a full path to the server for all these com-\n"
+" mands. This is the fastest behavior.\n"
+"\n"
+" singlecwd\n"
+, stdout);
+ fputs(
+" curl does one CWD with the full target directory and then\n"
+" operates on the file \"normally\" (like in the multicwd\n"
+" case). This is somewhat more standards compliant than\n"
+" 'nocwd' but without the full penalty of 'multicwd'.\n"
+"\n"
+" If --ftp-method is provided several times, the last set value will be\n"
+" used.\n"
+"\n"
+" Examples:\n"
+" curl --ftp-method multicwd ftp://example.com/dir1/dir2/file\n"
+, stdout);
+ fputs(
+" curl --ftp-method nocwd ftp://example.com/dir1/dir2/file\n"
+" curl --ftp-method singlecwd ftp://example.com/dir1/dir2/file\n"
+"\n"
+" See also -l, --list-only.\n"
+"\n"
+" --ftp-pasv\n"
+" (FTP) Use passive mode for the data connection. Passive is the\n"
+" internal default behavior, but using this option can be used to\n"
+" override a previous --ftp-port option.\n"
+"\n"
+" Reversing an enforced passive really is not doable but you must\n"
+, stdout);
+ fputs(
+" then instead enforce the correct --ftp-port again.\n"
+"\n"
+" Passive mode means that curl will try the EPSV command first and\n"
+" then PASV, unless --disable-epsv is used.\n"
+"\n"
+" Providing --ftp-pasv multiple times has no extra effect. Dis-\n"
+" able it again with --no-ftp-pasv.\n"
+"\n"
+" Example:\n"
+" curl --ftp-pasv ftp://example.com/\n"
+"\n"
+" See also --disable-epsv.\n"
+" -P, --ftp-port <address>\n"
+, stdout);
+ fputs(
+" (FTP) Reverses the default initiator/listener roles when con-\n"
+" necting with FTP. This option makes curl use active mode. curl\n"
+" then tells the server to connect back to the client's specified\n"
+" address and port, while passive mode asks the server to setup an\n"
+" IP address and port for it to connect to. <address> should be\n"
+" one of:\n"
+"\n"
+" interface\n"
+, stdout);
+ fputs(
+" e.g. \"eth0\" to specify which interface's IP address you\n"
+" want to use (Unix only)\n"
+"\n"
+" IP address\n"
+" e.g. \"192.168.10.1\" to specify the exact IP address\n"
+"\n"
+" host name\n"
+" e.g. \"my.host.domain\" to specify the machine\n"
+"\n"
+" - make curl pick the same IP address that is already used\n"
+" for the control connection\n"
+"\n"
+, stdout);
+ fputs(
+" Disable the use of PORT with --ftp-pasv. Disable the attempt to use the\n"
+" EPRT command instead of PORT by using --disable-eprt. EPRT is really\n"
+" PORT++.\n"
+"\n"
+" You can also append \":[start]-[end]\" to the right of the address, to\n"
+" tell curl what TCP port range to use. That means you specify a port\n"
+" range, from a lower to a higher number. A single number works as well,\n"
+" but do note that it increases the risk of failure since the port may\n"
+, stdout);
+ fputs(
+" not be available.\n"
+"\n"
+" If --ftp-port is provided several times, the last set value will be\n"
+" used.\n"
+"\n"
+" Examples:\n"
+" curl -P - ftp:/example.com\n"
+" curl -P eth0 ftp:/example.com\n"
+" curl -P 192.168.0.2 ftp:/example.com\n"
+"\n"
+" See also --ftp-pasv and --disable-eprt.\n"
+"\n"
+" --ftp-pret\n"
+" (FTP) Tell curl to send a PRET command before PASV (and EPSV).\n"
+" Certain FTP servers, mainly drftpd, require this non-standard\n"
+, stdout);
+ fputs(
+" command for directory listings as well as up and downloads in\n"
+" PASV mode.\n"
+"\n"
+" Providing --ftp-pret multiple times has no extra effect. Dis-\n"
+" able it again with --no-ftp-pret.\n"
+"\n"
+" Example:\n"
+" curl --ftp-pret ftp://example.com/\n"
+"\n"
+" See also -P, --ftp-port and --ftp-pasv.\n"
+"\n"
+" --ftp-skip-pasv-ip\n"
+" (FTP) Tell curl to not use the IP address the server suggests in\n"
+, stdout);
+ fputs(
+" its response to curl's PASV command when curl connects the data\n"
+" connection. Instead curl will re-use the same IP address it al-\n"
+" ready uses for the control connection.\n"
+"\n"
+" Since curl 7.74.0 this option is enabled by default.\n"
+"\n"
+" This option has no effect if PORT, EPRT or EPSV is used instead\n"
+" of PASV.\n"
+"\n"
+" Providing --ftp-skip-pasv-ip multiple times has no extra effect.\n"
+, stdout);
+ fputs(
+" Disable it again with --no-ftp-skip-pasv-ip.\n"
+"\n"
+" Example:\n"
+" curl --ftp-skip-pasv-ip ftp://example.com/\n"
+"\n"
+" See also --ftp-pasv.\n"
+"\n"
+" --ftp-ssl-ccc-mode <active/passive>\n"
+" (FTP) Sets the CCC mode. The passive mode will not initiate the\n"
+" shutdown, but instead wait for the server to do it, and will not\n"
+" reply to the shutdown from the server. The active mode initiates\n"
+, stdout);
+ fputs(
+" the shutdown and waits for a reply from the server.\n"
+"\n"
+" Providing --ftp-ssl-ccc-mode multiple times has no extra effect.\n"
+" Disable it again with --no-ftp-ssl-ccc-mode.\n"
+"\n"
+" Example:\n"
+" curl --ftp-ssl-ccc-mode active --ftp-ssl-ccc ftps://example.com/\n"
+"\n"
+" See also --ftp-ssl-ccc.\n"
+"\n"
+" --ftp-ssl-ccc\n"
+" (FTP) Use CCC (Clear Command Channel) Shuts down the SSL/TLS\n"
+, stdout);
+ fputs(
+" layer after authenticating. The rest of the control channel com-\n"
+" munication will be unencrypted. This allows NAT routers to fol-\n"
+" low the FTP transaction. The default mode is passive.\n"
+"\n"
+" Providing --ftp-ssl-ccc multiple times has no extra effect.\n"
+" Disable it again with --no-ftp-ssl-ccc.\n"
+"\n"
+" Example:\n"
+" curl --ftp-ssl-ccc ftps://example.com/\n"
+" See also --ssl and --ftp-ssl-ccc-mode.\n"
+"\n"
+, stdout);
+ fputs(
+" --ftp-ssl-control\n"
+" (FTP) Require SSL/TLS for the FTP login, clear for transfer.\n"
+" Allows secure authentication, but non-encrypted data transfers\n"
+" for efficiency. Fails the transfer if the server does not sup-\n"
+" port SSL/TLS.\n"
+"\n"
+" Providing --ftp-ssl-control multiple times has no extra effect.\n"
+" Disable it again with --no-ftp-ssl-control.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --ftp-ssl-control ftp://example.com\n"
+"\n"
+" See also --ssl.\n"
+"\n"
+" -G, --get\n"
+" When used, this option will make all data specified with -d,\n"
+" --data, --data-binary or --data-urlencode to be used in an HTTP\n"
+" GET request instead of the POST request that otherwise would be\n"
+" used. The data will be appended to the URL with a '?' separator.\n"
+" If used in combination with -I, --head, the POST data will in-\n"
+, stdout);
+ fputs(
+" stead be appended to the URL with a HEAD request.\n"
+"\n"
+" Providing --get multiple times has no extra effect. Disable it\n"
+" again with --no-get.\n"
+"\n"
+" Examples:\n"
+" curl --get https://example.com\n"
+" curl --get -d \"tool=curl\" -d \"age=old\" https://example.com\n"
+" curl --get -I -d \"tool=curl\" https://example.com\n"
+"\n"
+" See also -d, --data and -X, --request.\n"
+"\n"
+" -g, --globoff\n"
+, stdout);
+ fputs(
+" This option switches off the \"URL globbing parser\". When you set\n"
+" this option, you can specify URLs that contain the letters {}[]\n"
+" without having curl itself interpret them. Note that these let-\n"
+" ters are not normal legal URL contents but they should be en-\n"
+" coded according to the URI standard.\n"
+"\n"
+" Providing --globoff multiple times has no extra effect. Disable\n"
+" it again with --no-globoff.\n"
+"\n"
+, stdout);
+ fputs(
+" Example:\n"
+" curl -g \"https://example.com/{[]}}}}\"\n"
+"\n"
+" See also -K, --config and -q, --disable.\n"
+"\n"
+" --happy-eyeballs-timeout-ms <milliseconds>\n"
+" Happy Eyeballs is an algorithm that attempts to connect to both\n"
+" IPv4 and IPv6 addresses for dual-stack hosts, giving IPv6 a\n"
+" head-start of the specified number of milliseconds. If the IPv6\n"
+" address cannot be connected to within that time, then a connec-\n"
+, stdout);
+ fputs(
+" tion attempt is made to the IPv4 address in parallel. The first\n"
+" connection to be established is the one that is used.\n"
+"\n"
+" The range of suggested useful values is limited. Happy Eyeballs\n"
+" RFC 6555 says \"It is RECOMMENDED that connection attempts be\n"
+" paced 150-250 ms apart to balance human factors against network\n"
+" load.\" libcurl currently defaults to 200 ms. Firefox and Chrome\n"
+, stdout);
+ fputs(
+" currently default to 300 ms.\n"
+"\n"
+" If --happy-eyeballs-timeout-ms is provided several times, the\n"
+" last set value will be used.\n"
+"\n"
+" Example:\n"
+" curl --happy-eyeballs-timeout-ms 500 https://example.com\n"
+"\n"
+" See also -m, --max-time and --connect-timeout. Added in 7.59.0.\n"
+"\n"
+" --haproxy-protocol\n"
+" (HTTP) Send a HAProxy PROXY protocol v1 header at the beginning\n"
+, stdout);
+ fputs(
+" of the connection. This is used by some load balancers and re-\n"
+" verse proxies to indicate the client's true IP address and port.\n"
+" This option is primarily useful when sending test requests to a\n"
+" service that expects this header.\n"
+"\n"
+" Providing --haproxy-protocol multiple times has no extra effect.\n"
+" Disable it again with --no-haproxy-protocol.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --haproxy-protocol https://example.com\n"
+"\n"
+" See also -x, --proxy. Added in 7.60.0.\n"
+"\n"
+" -I, --head\n"
+" (HTTP FTP FILE) Fetch the headers only! HTTP-servers feature the\n"
+" command HEAD which this uses to get nothing but the header of a\n"
+" document. When used on an FTP or FILE file, curl displays the\n"
+" file size and last modification time only.\n"
+"\n"
+, stdout);
+ fputs(
+" Providing --head multiple times has no extra effect. Disable it\n"
+" again with --no-head.\n"
+"\n"
+" Example:\n"
+" curl -I https://example.com\n"
+"\n"
+" See also -G, --get, -v, --verbose and --trace-ascii.\n"
+"\n"
+" -H, --header <header/@file>\n"
+" (HTTP IMAP SMTP) Extra header to include in information sent.\n"
+" When used within an HTTP request, it is added to the regular re-\n"
+" quest headers.\n"
+"\n"
+, stdout);
+ fputs(
+" For an IMAP or SMTP MIME uploaded mail built with --form op-\n"
+" tions, it is prepended to the resulting MIME document, effec-\n"
+" tively including it at the mail global level. It does not affect\n"
+" raw uploaded mails (Added in 7.56.0).\n"
+"\n"
+" You may specify any number of extra headers. Note that if you\n"
+" should add a custom header that has the same name as one of the\n"
+, stdout);
+ fputs(
+" internal ones curl would use, your externally set header will be\n"
+" used instead of the internal one. This allows you to make even\n"
+" trickier stuff than curl would normally do. You should not re-\n"
+" place internally set headers without knowing perfectly well what\n"
+" you are doing. Remove an internal header by giving a replacement\n"
+" without content on the right side of the colon, as in: -H\n"
+, stdout);
+ fputs(
+" \"Host:\". If you send the custom header with no-value then its\n"
+" header must be terminated with a semicolon, such as -H \"X-Cus-\n"
+" tom-Header;\" to send \"X-Custom-Header:\".\n"
+"\n"
+" curl will make sure that each header you add/replace is sent\n"
+" with the proper end-of-line marker, you should thus not add that\n"
+" as a part of the header content: do not add newlines or carriage\n"
+, stdout);
+ fputs(
+" returns, they will only mess things up for you.\n"
+"\n"
+" This option can take an argument in @filename style, which then\n"
+" adds a header for each line in the input file. Using @- will\n"
+" make curl read the header file from stdin. Added in 7.55.0.\n"
+"\n"
+" Please note that most anti-spam utilities check the presence and\n"
+" value of several MIME mail headers: these are \"From:\", \"To:\",\n"
+, stdout);
+ fputs(
+" \"Date:\" and \"Subject:\" among others and should be added with\n"
+" this option.\n"
+"\n"
+" You need --proxy-header to send custom headers intended for an\n"
+" HTTP proxy. Added in 7.37.0.\n"
+"\n"
+" Passing on a \"Transfer-Encoding: chunked\" header when doing an\n"
+" HTTP request with a request body, will make curl send the data\n"
+" using chunked encoding.\n"
+"\n"
+, stdout);
+ fputs(
+" WARNING: headers set with this option will be set in all HTTP\n"
+" requests - even after redirects are followed, like when told\n"
+" with -L, --location. This can lead to the header being sent to\n"
+" other hosts than the original host, so sensitive headers should\n"
+" be used with caution combined with following redirects.\n"
+"\n"
+" --header can be used several times in a command line\n"
+"\n"
+" Examples:\n"
+, stdout);
+ fputs(
+" curl -H \"X-First-Name: Joe\" https://example.com\n"
+" curl -H \"User-Agent: yes-please/2000\" https://example.com\n"
+" curl -H \"Host:\" https://example.com\n"
+"\n"
+" See also -A, --user-agent and -e, --referer.\n"
+"\n"
+" -h, --help <category>\n"
+" Usage help. This lists all commands of the <category>. If no\n"
+" arg was provided, curl will display the most important command\n"
+, stdout);
+ fputs(
+" line arguments. If the argument \"all\" was provided, curl will\n"
+" display all options available. If the argument \"category\" was\n"
+" provided, curl will display all categories and their meanings.\n"
+"\n"
+" Providing --help multiple times has no extra effect. Disable it\n"
+" again with --no-help.\n"
+"\n"
+" Example:\n"
+" curl --help all\n"
+"\n"
+" See also -v, --verbose.\n"
+"\n"
+" --hostpubmd5 <md5>\n"
+, stdout);
+ fputs(
+" (SFTP SCP) Pass a string containing 32 hexadecimal digits. The\n"
+" string should be the 128 bit MD5 checksum of the remote host's\n"
+" public key, curl will refuse the connection with the host unless\n"
+" the md5sums match.\n"
+"\n"
+" If --hostpubmd5 is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --hostpubmd5 e5c1c49020640a5ab0f2034854c321a8 sftp://example.com/\n"
+"\n"
+, stdout);
+ fputs(
+" See also --hostpubsha256.\n"
+"\n"
+" --hostpubsha256 <sha256>\n"
+" (SFTP SCP) Pass a string containing a Base64-encoded SHA256 hash\n"
+" of the remote host's public key. Curl will refuse the connection\n"
+" with the host unless the hashes match.\n"
+"\n"
+" If --hostpubsha256 is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --hostpubsha256 NDVkMTQxMGQ1ODdmMjQ3MjczYjAyOTY5MmRkMjVmNDQ= sftp://example.com/\n"
+"\n"
+" See also --hostpubmd5. Added in 7.80.0.\n"
+"\n"
+" --hsts <file name>\n"
+" (HTTPS) This option enables HSTS for the transfer. If the file\n"
+" name points to an existing HSTS cache file, that will be used.\n"
+" After a completed transfer, the cache will be saved to the file\n"
+" name again if it has been modified.\n"
+"\n"
+, stdout);
+ fputs(
+" Specify a \"\" file name (zero length) to avoid loading/saving and\n"
+" make curl just handle HSTS in memory.\n"
+"\n"
+" If this option is used several times, curl will load contents\n"
+" from all the files but the last one will be used for saving.\n"
+"\n"
+" --hsts can be used several times in a command line\n"
+"\n"
+" Example:\n"
+" curl --hsts cache.txt https://example.com\n"
+"\n"
+" See also --proto. Added in 7.74.0.\n"
+"\n"
+, stdout);
+ fputs(
+" --http0.9\n"
+" (HTTP) Tells curl to be fine with HTTP version 0.9 response.\n"
+"\n"
+" HTTP/0.9 is a completely headerless response and therefore you\n"
+" can also connect with this to non-HTTP servers and still get a\n"
+" response since curl will simply transparently downgrade - if al-\n"
+" lowed.\n"
+"\n"
+" Since curl 7.66.0, HTTP/0.9 is disabled by default.\n"
+"\n"
+" Providing --http0.9 multiple times has no extra effect. Disable\n"
+, stdout);
+ fputs(
+" it again with --no-http0.9.\n"
+"\n"
+" Example:\n"
+" curl --http0.9 https://example.com\n"
+"\n"
+" See also --http1.1, --http2 and --http3. Added in 7.64.0.\n"
+"\n"
+" -0, --http1.0\n"
+" (HTTP) Tells curl to use HTTP version 1.0 instead of using its\n"
+" internally preferred HTTP version.\n"
+"\n"
+" Providing --http1.0 multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
+" curl --http1.0 https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also --http0.9 and --http1.1. This option is mutually exclu-\n"
+" sive to --http1.1 and --http2 and --http2-prior-knowledge and\n"
+" --http3.\n"
+"\n"
+" --http1.1\n"
+" (HTTP) Tells curl to use HTTP version 1.1.\n"
+"\n"
+" Providing --http1.1 multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
+" curl --http1.1 https://example.com\n"
+"\n"
+" See also -0, --http1.0 and --http0.9. This option is mutually\n"
+, stdout);
+ fputs(
+" exclusive to -0, --http1.0 and --http2 and --http2-prior-knowl-\n"
+" edge and --http3. Added in 7.33.0.\n"
+"\n"
+" --http2-prior-knowledge\n"
+" (HTTP) Tells curl to issue its non-TLS HTTP requests using\n"
+" HTTP/2 without HTTP/1.1 Upgrade. It requires prior knowledge\n"
+" that the server supports HTTP/2 straight away. HTTPS requests\n"
+" will still do HTTP/2 the standard way with negotiated protocol\n"
+, stdout);
+ fputs(
+" version in the TLS handshake.\n"
+"\n"
+" Providing --http2-prior-knowledge multiple times has no extra\n"
+" effect. Disable it again with --no-http2-prior-knowledge.\n"
+"\n"
+" Example:\n"
+" curl --http2-prior-knowledge https://example.com\n"
+"\n"
+" See also --http2 and --http3. --http2-prior-knowledge requires\n"
+" that the underlying libcurl was built to support HTTP/2. This\n"
+, stdout);
+ fputs(
+" option is mutually exclusive to --http1.1 and -0, --http1.0 and\n"
+" --http2 and --http3. Added in 7.49.0.\n"
+"\n"
+" --http2\n"
+" (HTTP) Tells curl to use HTTP version 2.\n"
+"\n"
+" For HTTPS, this means curl will attempt to negotiate HTTP/2 in\n"
+" the TLS handshake. curl does this by default.\n"
+"\n"
+" For HTTP, this means curl will attempt to upgrade the request to\n"
+" HTTP/2 using the Upgrade: request header.\n"
+"\n"
+, stdout);
+ fputs(
+" When curl uses HTTP/2 over HTTPS, it does not itself insist on\n"
+" TLS 1.2 or higher even though that is required by the specifica-\n"
+" tion. A user can add this version requirement with --tlsv1.2.\n"
+"\n"
+" Providing --http2 multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
+" curl --http2 https://example.com\n"
+"\n"
+" See also --http1.1 and --http3. --http2 requires that the under-\n"
+, stdout);
+ fputs(
+" lying libcurl was built to support HTTP/2. This option is mutu-\n"
+" ally exclusive to --http1.1 and -0, --http1.0 and --http2-prior-\n"
+" knowledge and --http3. Added in 7.33.0.\n"
+"\n"
+" --http3\n"
+" (HTTP) **WARNING**: this option is experimental. Do not use in\n"
+" production.\n"
+"\n"
+" Tells curl to use HTTP version 3 directly to the host and port\n"
+" number used in the URL. A normal HTTP/3 transaction will be done\n"
+, stdout);
+ fputs(
+" to a host and then get redirected via Alt-Svc, but this option\n"
+" allows a user to circumvent that when you know that the target\n"
+" speaks HTTP/3 on the given host and port.\n"
+"\n"
+" This option will make curl fail if a QUIC connection cannot be\n"
+" established, it cannot fall back to a lower HTTP version on its\n"
+" own.\n"
+"\n"
+" Providing --http3 multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --http3 https://example.com\n"
+"\n"
+" See also --http1.1 and --http2. --http3 requires that the under-\n"
+" lying libcurl was built to support HTTP/3. This option is mutu-\n"
+" ally exclusive to --http1.1 and -0, --http1.0 and --http2 and\n"
+" --http2-prior-knowledge. Added in 7.66.0.\n"
+"\n"
+" --ignore-content-length\n"
+" (FTP HTTP) For HTTP, Ignore the Content-Length header. This is\n"
+, stdout);
+ fputs(
+" particularly useful for servers running Apache 1.x, which will\n"
+" report incorrect Content-Length for files larger than 2 giga-\n"
+" bytes.\n"
+"\n"
+" For FTP (since 7.46.0), skip the RETR command to figure out the\n"
+" size before downloading a file.\n"
+"\n"
+" This option does not work for HTTP if libcurl was built to use\n"
+" hyper.\n"
+"\n"
+" Providing --ignore-content-length multiple times has no extra\n"
+, stdout);
+ fputs(
+" effect. Disable it again with --no-ignore-content-length.\n"
+"\n"
+" Example:\n"
+" curl --ignore-content-length https://example.com\n"
+"\n"
+" See also --ftp-skip-pasv-ip.\n"
+"\n"
+" -i, --include\n"
+" Include the HTTP response headers in the output. The HTTP re-\n"
+" sponse headers can include things like server name, cookies,\n"
+" date of the document, HTTP version and more...\n"
+"\n"
+, stdout);
+ fputs(
+" To view the request headers, consider the --verbose option.\n"
+"\n"
+" Providing --include multiple times has no extra effect. Disable\n"
+" it again with --no-include.\n"
+"\n"
+" Example:\n"
+" curl -i https://example.com\n"
+"\n"
+" See also -v, --verbose.\n"
+"\n"
+" -k, --insecure\n"
+" (TLS SFTP SCP) By default, every secure connection curl makes is\n"
+" verified to be secure before the transfer takes place. This op-\n"
+, stdout);
+ fputs(
+" tion makes curl skip the verification step and proceed without\n"
+" checking.\n"
+"\n"
+" When this option is not used for protocols using TLS, curl veri-\n"
+" fies the server's TLS certificate before it continues: that the\n"
+" certificate contains the right name which matches the host name\n"
+" used in the URL and that the certificate has been signed by a CA\n"
+" certificate present in the cert store. See this online resource\n"
+, stdout);
+ fputs(
+" for further details:\n"
+" https://curl.se/docs/sslcerts.html\n"
+"\n"
+" For SFTP and SCP, this option makes curl skip the known_hosts\n"
+" verification. known_hosts is a file normally stored in the\n"
+" user's home directory in the \".ssh\" subdirectory, which contains\n"
+" host names and their public keys.\n"
+"\n"
+" WARNING: using this option makes the transfer insecure.\n"
+"\n"
+, stdout);
+ fputs(
+" Providing --insecure multiple times has no extra effect. Dis-\n"
+" able it again with --no-insecure.\n"
+"\n"
+" Example:\n"
+" curl --insecure https://example.com\n"
+"\n"
+" See also --proxy-insecure, --cacert and --capath.\n"
+"\n"
+" --interface <name>\n"
+" Perform an operation using a specified interface. You can enter\n"
+" interface name, IP address or host name. An example could look\n"
+" like:\n"
+"\n"
+, stdout);
+ fputs(
+" curl --interface eth0:1 https://www.example.com/\n"
+"\n"
+" On Linux it can be used to specify a VRF, but the binary needs\n"
+" to either have CAP_NET_RAW or to be run as root. More informa-\n"
+" tion about Linux VRF: https://www.kernel.org/doc/Documenta-\n"
+" tion/networking/vrf.txt\n"
+"\n"
+" If --interface is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --interface eth0 https://example.com\n"
+"\n"
+" See also --dns-interface.\n"
+"\n"
+" -4, --ipv4\n"
+" This option tells curl to use IPv4 addresses only, and not for\n"
+" example try IPv6.\n"
+"\n"
+" Providing --ipv4 multiple times has no extra effect. Disable it\n"
+" again with --no-ipv4.\n"
+"\n"
+" Example:\n"
+" curl --ipv4 https://example.com\n"
+"\n"
+" See also --http1.1 and --http2. This option is mutually exclu-\n"
+, stdout);
+ fputs(
+" sive to -6, --ipv6.\n"
+"\n"
+" -6, --ipv6\n"
+" This option tells curl to use IPv6 addresses only, and not for\n"
+" example try IPv4.\n"
+"\n"
+" Providing --ipv6 multiple times has no extra effect. Disable it\n"
+" again with --no-ipv6.\n"
+"\n"
+" Example:\n"
+" curl --ipv6 https://example.com\n"
+"\n"
+" See also --http1.1 and --http2. This option is mutually exclu-\n"
+" sive to -4, --ipv4.\n"
+"\n"
+" --json <data>\n"
+, stdout);
+ fputs(
+" (HTTP) Sends the specified JSON data in a POST request to the\n"
+" HTTP server. --json works as a shortcut for passing on these\n"
+" three options:\n"
+"\n"
+" --data [arg]\n"
+" --header \"Content-Type: application/json\"\n"
+" --header \"Accept: application/json\"\n"
+"\n"
+" There is no verification that the passed in data is actual JSON\n"
+" or that the syntax is correct.\n"
+"\n"
+, stdout);
+ fputs(
+" If you start the data with the letter @, the rest should be a\n"
+" file name to read the data from, or a single dash (-) if you\n"
+" want curl to read the data from stdin. Posting data from a file\n"
+" named 'foobar' would thus be done with --json @foobar and to in-\n"
+" stead read the data from stdin, use --json @-.\n"
+"\n"
+" If this option is used more than once on the same command line,\n"
+, stdout);
+ fputs(
+" the additional data pieces will be concatenated to the previous\n"
+" before sending.\n"
+"\n"
+" The headers this option sets can be overridden with --header as\n"
+" usual.\n"
+"\n"
+" --json can be used several times in a command line\n"
+"\n"
+" Examples:\n"
+" curl --json '{ \"drink\": \"coffe\" }' https://example.com\n"
+" curl --json '{ \"drink\":' --json ' \"coffe\" }' https://example.com\n"
+, stdout);
+ fputs(
+" curl --json @prepared https://example.com\n"
+" curl --json @- https://example.com < json.txt\n"
+"\n"
+" See also --data-binary and --data-raw. This option is mutually\n"
+" exclusive to -F, --form and -I, --head and -T, --upload-file.\n"
+" Added in 7.82.0.\n"
+"\n"
+" -j, --junk-session-cookies\n"
+" (HTTP) When curl is told to read cookies from a given file, this\n"
+, stdout);
+ fputs(
+" option will make it discard all \"session cookies\". This will ba-\n"
+" sically have the same effect as if a new session is started.\n"
+" Typical browsers always discard session cookies when they are\n"
+" closed down.\n"
+"\n"
+" Providing --junk-session-cookies multiple times has no extra ef-\n"
+" fect. Disable it again with --no-junk-session-cookies.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --junk-session-cookies -b cookies.txt https://example.com\n"
+"\n"
+" See also -b, --cookie and -c, --cookie-jar.\n"
+"\n"
+" --keepalive-time <seconds>\n"
+" This option sets the time a connection needs to remain idle be-\n"
+" fore sending keepalive probes and the time between individual\n"
+" keepalive probes. It is currently effective on operating systems\n"
+" offering the TCP_KEEPIDLE and TCP_KEEPINTVL socket options\n"
+, stdout);
+ fputs(
+" (meaning Linux, recent AIX, HP-UX and more). Keepalives are\n"
+" used by the TCP stack to detect broken networks on idle connec-\n"
+" tions. The number of missed keepalive probes before declaring\n"
+" the connection down is OS dependent and is commonly 9 or 10.\n"
+" This option has no effect if --no-keepalive is used.\n"
+"\n"
+" If unspecified, the option defaults to 60 seconds.\n"
+"\n"
+, stdout);
+ fputs(
+" If --keepalive-time is provided several times, the last set\n"
+" value will be used.\n"
+"\n"
+" Example:\n"
+" curl --keepalive-time 20 https://example.com\n"
+"\n"
+" See also --no-keepalive and -m, --max-time.\n"
+"\n"
+" --key-type <type>\n"
+" (TLS) Private key file type. Specify which type your --key pro-\n"
+" vided private key is. DER, PEM, and ENG are supported. If not\n"
+" specified, PEM is assumed.\n"
+"\n"
+, stdout);
+ fputs(
+" If --key-type is provided several times, the last set value will\n"
+" be used.\n"
+" Example:\n"
+" curl --key-type DER --key here https://example.com\n"
+"\n"
+" See also --key.\n"
+"\n"
+" --key <key>\n"
+" (TLS SSH) Private key file name. Allows you to provide your pri-\n"
+" vate key in this separate file. For SSH, if not specified, curl\n"
+" tries the following candidates in order: '~/.ssh/id_rsa',\n"
+, stdout);
+ fputs(
+" '~/.ssh/id_dsa', './id_rsa', './id_dsa'.\n"
+"\n"
+" If curl is built against OpenSSL library, and the engine pkcs11\n"
+" is available, then a PKCS#11 URI (RFC 7512) can be used to spec-\n"
+" ify a private key located in a PKCS#11 device. A string begin-\n"
+" ning with \"pkcs11:\" will be interpreted as a PKCS#11 URI. If a\n"
+" PKCS#11 URI is provided, then the --engine option will be set as\n"
+, stdout);
+ fputs(
+" \"pkcs11\" if none was provided and the --key-type option will be\n"
+" set as \"ENG\" if none was provided.\n"
+"\n"
+" If curl is built against Secure Transport or Schannel then this\n"
+" option is ignored for TLS protocols (HTTPS, etc). Those backends\n"
+" expect the private key to be already present in the keychain or\n"
+" PKCS#12 file containing the certificate.\n"
+"\n"
+, stdout);
+ fputs(
+" If --key is provided several times, the last set value will be\n"
+" used.\n"
+"\n"
+" Example:\n"
+" curl --cert certificate --key here https://example.com\n"
+"\n"
+" See also --key-type and -E, --cert.\n"
+"\n"
+" --krb <level>\n"
+" (FTP) Enable Kerberos authentication and use. The level must be\n"
+" entered and should be one of 'clear', 'safe', 'confidential', or\n"
+, stdout);
+ fputs(
+" 'private'. Should you use a level that is not one of these,\n"
+" 'private' will instead be used.\n"
+"\n"
+" If --krb is provided several times, the last set value will be\n"
+" used.\n"
+"\n"
+" Example:\n"
+" curl --krb clear ftp://example.com/\n"
+"\n"
+" See also --delegation and --ssl. --krb requires that the under-\n"
+" lying libcurl was built to support Kerberos.\n"
+"\n"
+" --libcurl <file>\n"
+, stdout);
+ fputs(
+" Append this option to any ordinary curl command line, and you\n"
+" will get libcurl-using C source code written to the file that\n"
+" does the equivalent of what your command-line operation does!\n"
+"\n"
+" This option is global and does not need to be specified for each\n"
+" use of -:, --next.\n"
+"\n"
+" If --libcurl is provided several times, the last set value will\n"
+" be used.\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --libcurl client.c https://example.com\n"
+"\n"
+" See also -v, --verbose.\n"
+"\n"
+" --limit-rate <speed>\n"
+" Specify the maximum transfer rate you want curl to use - for\n"
+" both downloads and uploads. This feature is useful if you have a\n"
+" limited pipe and you would like your transfer not to use your\n"
+" entire bandwidth. To make it slower than it otherwise would be.\n"
+"\n"
+, stdout);
+ fputs(
+" The given speed is measured in bytes/second, unless a suffix is\n"
+" appended. Appending 'k' or 'K' will count the number as kilo-\n"
+" bytes, 'm' or 'M' makes it megabytes, while 'g' or 'G' makes it\n"
+" gigabytes. The suffixes (k, M, G, T, P) are 1024 based. For ex-\n"
+" ample 1k is 1024. Examples: 200K, 3m and 1G.\n"
+"\n"
+" The rate limiting logic works on averaging the transfer speed to\n"
+, stdout);
+ fputs(
+" no more than the set threshold over a period of multiple sec-\n"
+" onds.\n"
+"\n"
+" If you also use the --speed-limit option, that option will take\n"
+" precedence and might cripple the rate-limiting slightly, to help\n"
+" keeping the speed-limit logic working.\n"
+"\n"
+" If --limit-rate is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Examples:\n"
+, stdout);
+ fputs(
+" curl --limit-rate 100K https://example.com\n"
+" curl --limit-rate 1000 https://example.com\n"
+" curl --limit-rate 10M https://example.com\n"
+"\n"
+" See also -Y, --speed-limit and -y, --speed-time.\n"
+"\n"
+" -l, --list-only\n"
+" (FTP POP3) (FTP) When listing an FTP directory, this switch\n"
+" forces a name-only view. This is especially useful if the user\n"
+" wants to machine-parse the contents of an FTP directory since\n"
+, stdout);
+ fputs(
+" the normal directory view does not use a standard look or for-\n"
+" mat. When used like this, the option causes an NLST command to\n"
+" be sent to the server instead of LIST.\n"
+"\n"
+" Note: Some FTP servers list only files in their response to\n"
+" NLST; they do not include sub-directories and symbolic links.\n"
+"\n"
+" (POP3) When retrieving a specific email from POP3, this switch\n"
+, stdout);
+ fputs(
+" forces a LIST command to be performed instead of RETR. This is\n"
+" particularly useful if the user wants to see if a specific mes-\n"
+" sage-id exists on the server and what size it is.\n"
+"\n"
+" Note: When combined with -X, --request, this option can be used\n"
+" to send a UIDL command instead, so the user may use the email's\n"
+" unique identifier rather than its message-id to make the re-\n"
+" quest.\n"
+"\n"
+, stdout);
+ fputs(
+" Providing --list-only multiple times has no extra effect. Dis-\n"
+" able it again with --no-list-only.\n"
+"\n"
+" Example:\n"
+" curl --list-only ftp://example.com/dir/\n"
+" See also -Q, --quote and -X, --request.\n"
+"\n"
+" --local-port <num/range>\n"
+" Set a preferred single number or range (FROM-TO) of local port\n"
+" numbers to use for the connection(s). Note that port numbers by\n"
+, stdout);
+ fputs(
+" nature are a scarce resource that will be busy at times so set-\n"
+" ting this range to something too narrow might cause unnecessary\n"
+" connection setup failures.\n"
+"\n"
+" If --local-port is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --local-port 1000-3000 https://example.com\n"
+"\n"
+" See also -g, --globoff.\n"
+"\n"
+" --location-trusted\n"
+, stdout);
+ fputs(
+" (HTTP) Like -L, --location, but will allow sending the name +\n"
+" password to all hosts that the site may redirect to. This may or\n"
+" may not introduce a security breach if the site redirects you to\n"
+" a site to which you will send your authentication info (which is\n"
+" plaintext in the case of HTTP Basic authentication).\n"
+"\n"
+" Providing --location-trusted multiple times has no extra effect.\n"
+, stdout);
+ fputs(
+" Disable it again with --no-location-trusted.\n"
+"\n"
+" Example:\n"
+" curl --location-trusted -u user:password https://example.com\n"
+"\n"
+" See also -u, --user.\n"
+"\n"
+" -L, --location\n"
+" (HTTP) If the server reports that the requested page has moved\n"
+" to a different location (indicated with a Location: header and a\n"
+" 3XX response code), this option will make curl redo the request\n"
+, stdout);
+ fputs(
+" on the new place. If used together with --include or -I, --head,\n"
+" headers from all requested pages will be shown. When authentica-\n"
+" tion is used, curl only sends its credentials to the initial\n"
+" host. If a redirect takes curl to a different host, it will not\n"
+" be able to intercept the user+password. See also --location-\n"
+" trusted on how to change this. You can limit the amount of redi-\n"
+, stdout);
+ fputs(
+" rects to follow by using the --max-redirs option.\n"
+"\n"
+" When curl follows a redirect and if the request is a POST, it\n"
+" will send the following request with a GET if the HTTP response\n"
+" was 301, 302, or 303. If the response code was any other 3xx\n"
+" code, curl will re-send the following request using the same un-\n"
+" modified method.\n"
+"\n"
+" You can tell curl to not change POST requests to GET after a 30x\n"
+, stdout);
+ fputs(
+" response by using the dedicated options for that: --post301,\n"
+" --post302 and --post303.\n"
+"\n"
+" The method set with --request overrides the method curl would\n"
+" otherwise select to use.\n"
+"\n"
+" Providing --location multiple times has no extra effect. Dis-\n"
+" able it again with --no-location.\n"
+"\n"
+" Example:\n"
+" curl -L https://example.com\n"
+"\n"
+" See also --resolve and --alt-svc.\n"
+"\n"
+, stdout);
+ fputs(
+" --login-options <options>\n"
+" (IMAP LDAP POP3 SMTP) Specify the login options to use during\n"
+" server authentication.\n"
+"\n"
+" You can use login options to specify protocol specific options\n"
+" that may be used during authentication. At present only IMAP,\n"
+" POP3 and SMTP support login options. For more information about\n"
+" login options please see RFC 2384, RFC 5092 and IETF draft\n"
+, stdout);
+ fputs(
+" draft-earhart-url-smtp-00.txt\n"
+"\n"
+" If --login-options is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --login-options 'AUTH=*' imap://example.com\n"
+"\n"
+" See also -u, --user. Added in 7.34.0.\n"
+"\n"
+" --mail-auth <address>\n"
+" (SMTP) Specify a single address. This will be used to specify\n"
+" the authentication address (identity) of a submitted message\n"
+, stdout);
+ fputs(
+" that is being relayed to another server.\n"
+"\n"
+" If --mail-auth is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --mail-auth user@example.come -T mail smtp://example.com/\n"
+"\n"
+" See also --mail-rcpt and --mail-from.\n"
+"\n"
+" --mail-from <address>\n"
+" (SMTP) Specify a single address that the given mail should get\n"
+" sent from.\n"
+"\n"
+, stdout);
+ fputs(
+" If --mail-from is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --mail-from user@example.com -T mail smtp://example.com/\n"
+"\n"
+" See also --mail-rcpt and --mail-auth.\n"
+"\n"
+" --mail-rcpt-allowfails\n"
+" (SMTP) When sending data to multiple recipients, by default curl\n"
+" will abort SMTP conversation if at least one of the recipients\n"
+, stdout);
+ fputs(
+" causes RCPT TO command to return an error.\n"
+"\n"
+" The default behavior can be changed by passing --mail-rcpt-al-\n"
+" lowfails command-line option which will make curl ignore errors\n"
+" and proceed with the remaining valid recipients.\n"
+"\n"
+" If all recipients trigger RCPT TO failures and this flag is\n"
+" specified, curl will still abort the SMTP conversation and re-\n"
+, stdout);
+ fputs(
+" turn the error received from to the last RCPT TO command.\n"
+"\n"
+" Providing --mail-rcpt-allowfails multiple times has no extra ef-\n"
+" fect. Disable it again with --no-mail-rcpt-allowfails.\n"
+"\n"
+" Example:\n"
+" curl --mail-rcpt-allowfails --mail-rcpt dest@example.com smtp://example.com\n"
+"\n"
+" See also --mail-rcpt. Added in 7.69.0.\n"
+"\n"
+" --mail-rcpt <address>\n"
+" (SMTP) Specify a single email address, user name or mailing list\n"
+, stdout);
+ fputs(
+" name. Repeat this option several times to send to multiple re-\n"
+" cipients.\n"
+"\n"
+" When performing an address verification (VRFY command), the re-\n"
+" cipient should be specified as the user name or user name and\n"
+" domain (as per Section 3.5 of RFC5321). (Added in 7.34.0)\n"
+"\n"
+" When performing a mailing list expand (EXPN command), the recip-\n"
+" ient should be specified using the mailing list name, such as\n"
+, stdout);
+ fputs(
+" \"Friends\" or \"London-Office\". (Added in 7.34.0)\n"
+"\n"
+" --mail-rcpt can be used several times in a command line\n"
+"\n"
+" Example:\n"
+" curl --mail-rcpt user@example.net smtp://example.com\n"
+"\n"
+" See also --mail-rcpt-allowfails.\n"
+"\n"
+" -M, --manual\n"
+" Manual. Display the huge help text.\n"
+"\n"
+" Providing --manual multiple times has no extra effect. Disable\n"
+" it again with --no-manual.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --manual\n"
+"\n"
+" See also -v, --verbose, --libcurl and --trace.\n"
+"\n"
+" --max-filesize <bytes>\n"
+" (FTP HTTP MQTT) Specify the maximum size (in bytes) of a file to\n"
+" download. If the file requested is larger than this value, the\n"
+" transfer will not start and curl will return with exit code 63.\n"
+"\n"
+" A size modifier may be used. For example, Appending 'k' or 'K'\n"
+, stdout);
+ fputs(
+" will count the number as kilobytes, 'm' or 'M' makes it\n"
+" megabytes, while 'g' or 'G' makes it gigabytes. Examples: 200K,\n"
+" 3m and 1G. (Added in 7.58.0)\n"
+"\n"
+" NOTE: The file size is not always known prior to download, and\n"
+" for such files this option has no effect even if the file trans-\n"
+" fer ends up being larger than this given limit. If --max-file-\n"
+, stdout);
+ fputs(
+" size is provided several times, the last set value will be used.\n"
+"\n"
+" Example:\n"
+" curl --max-filesize 100K https://example.com\n"
+"\n"
+" See also --limit-rate.\n"
+"\n"
+" --max-redirs <num>\n"
+" (HTTP) Set maximum number of redirections to follow. When --lo-\n"
+" cation is used, to prevent curl from following too many redi-\n"
+" rects, by default, the limit is set to 50 redirects. Set this\n"
+, stdout);
+ fputs(
+" option to -1 to make it unlimited.\n"
+"\n"
+" If --max-redirs is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --max-redirs 3 --location https://example.com\n"
+"\n"
+" See also -L, --location.\n"
+"\n"
+" -m, --max-time <fractional seconds>\n"
+" Maximum time in seconds that you allow each transfer to take.\n"
+" This is useful for preventing your batch jobs from hanging for\n"
+, stdout);
+ fputs(
+" hours due to slow networks or links going down. Since 7.32.0,\n"
+" this option accepts decimal values, but the actual timeout will\n"
+" decrease in accuracy as the specified timeout increases in deci-\n"
+" mal precision.\n"
+"\n"
+" If you enable retrying the transfer (--retry) then the maximum\n"
+" time counter is reset each time the transfer is retried. You can\n"
+" use --retry-max-time to limit the retry time.\n"
+"\n"
+, stdout);
+ fputs(
+" If --max-time is provided several times, the last set value will\n"
+" be used.\n"
+"\n"
+" Examples:\n"
+" curl --max-time 10 https://example.com\n"
+" curl --max-time 2.92 https://example.com\n"
+"\n"
+" See also --connect-timeout and --retry-max-time.\n"
+"\n"
+" --metalink\n"
+" This option was previously used to specify a metalink resource.\n"
+" Metalink support has been disabled in curl since 7.78.0 for se-\n"
+, stdout);
+ fputs(
+" curity reasons.\n"
+"\n"
+" If --metalink is provided several times, the last set value will\n"
+" be used.\n"
+" Example:\n"
+" curl --metalink file https://example.com\n"
+"\n"
+" See also -Z, --parallel.\n"
+"\n"
+" --negotiate\n"
+" (HTTP) Enables Negotiate (SPNEGO) authentication.\n"
+"\n"
+" This option requires a library built with GSS-API or SSPI sup-\n"
+" port. Use --version to see if your curl supports GSS-API/SSPI or\n"
+, stdout);
+ fputs(
+" SPNEGO.\n"
+"\n"
+" When using this option, you must also provide a fake --user op-\n"
+" tion to activate the authentication code properly. Sending a '-u\n"
+" :' is enough as the user name and password from the --user op-\n"
+" tion are not actually used.\n"
+"\n"
+" If this option is used several times, only the first one is\n"
+" used.\n"
+"\n"
+" Providing --negotiate multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --negotiate -u : https://example.com\n"
+"\n"
+" See also --basic, --ntlm, --anyauth and --proxy-negotiate.\n"
+"\n"
+" --netrc-file <filename>\n"
+" This option is similar to -n, --netrc, except that you provide\n"
+" the path (absolute or relative) to the netrc file that curl\n"
+" should use. You can only specify one netrc file per invocation.\n"
+"\n"
+" It will abide by --netrc-optional if specified.\n"
+"\n"
+, stdout);
+ fputs(
+" If --netrc-file is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --netrc-file netrc https://example.com\n"
+"\n"
+" See also -n, --netrc, -u, --user and -K, --config. This option\n"
+" is mutually exclusive to -n, --netrc.\n"
+"\n"
+" --netrc-optional\n"
+" Similar to -n, --netrc, but this option makes the .netrc usage\n"
+" optional and not mandatory as the --netrc option does.\n"
+"\n"
+, stdout);
+ fputs(
+" Providing --netrc-optional multiple times has no extra effect.\n"
+" Disable it again with --no-netrc-optional.\n"
+"\n"
+" Example:\n"
+" curl --netrc-optional https://example.com\n"
+"\n"
+" See also --netrc-file. This option is mutually exclusive to -n,\n"
+" --netrc.\n"
+"\n"
+" -n, --netrc\n"
+" Makes curl scan the .netrc (_netrc on Windows) file in the\n"
+" user's home directory for login name and password. This is typi-\n"
+, stdout);
+ fputs(
+" cally used for FTP on Unix. If used with HTTP, curl will enable\n"
+" user authentication. See netrc(5) and ftp(1) for details on the\n"
+" file format. Curl will not complain if that file does not have\n"
+" the right permissions (it should be neither world- nor group-\n"
+" readable). The environment variable \"HOME\" is used to find the\n"
+" home directory.\n"
+"\n"
+, stdout);
+ fputs(
+" A quick and simple example of how to setup a .netrc to allow\n"
+" curl to FTP to the machine host.domain.com with user name 'my-\n"
+" self' and password 'secret' could look similar to:\n"
+"\n"
+" machine host.domain.com\n"
+" login myself\n"
+" password secret\n"
+"\n"
+" Providing --netrc multiple times has no extra effect. Disable\n"
+" it again with --no-netrc.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --netrc https://example.com\n"
+"\n"
+" See also --netrc-file, -K, --config and -u, --user.\n"
+"\n"
+" -:, --next\n"
+" Tells curl to use a separate operation for the following URL and\n"
+" associated options. This allows you to send several URL re-\n"
+" quests, each with their own specific options, for example, such\n"
+" as different user names or custom requests for each.\n"
+"\n"
+, stdout);
+ fputs(
+" --next will reset all local options and only global ones will\n"
+" have their values survive over to the operation following the\n"
+" --next instruction. Global options include -v, --verbose,\n"
+" --trace, --trace-ascii and --fail-early.\n"
+"\n"
+" For example, you can do both a GET and a POST in a single com-\n"
+" mand line:\n"
+"\n"
+" curl www1.example.com --next -d postthis www2.example.com\n"
+"\n"
+, stdout);
+ fputs(
+" --next can be used several times in a command line\n"
+"\n"
+" Examples:\n"
+" curl https://example.com --next -d postthis www2.example.com\n"
+" curl -I https://example.com --next https://example.net/\n"
+"\n"
+" See also -Z, --parallel and -K, --config. Added in 7.36.0.\n"
+"\n"
+" --no-alpn\n"
+" (HTTPS) Disable the ALPN TLS extension. ALPN is enabled by de-\n"
+" fault if libcurl was built with an SSL library that supports\n"
+, stdout);
+ fputs(
+" ALPN. ALPN is used by a libcurl that supports HTTP/2 to negoti-\n"
+" ate HTTP/2 support with the server during https sessions.\n"
+"\n"
+" Providing --no-alpn multiple times has no extra effect. Disable\n"
+" it again with --alpn.\n"
+"\n"
+" Example:\n"
+" curl --no-alpn https://example.com\n"
+"\n"
+" See also --no-npn and --http2. --no-alpn requires that the un-\n"
+" derlying libcurl was built to support TLS. Added in 7.36.0.\n"
+"\n"
+, stdout);
+ fputs(
+" -N, --no-buffer\n"
+" Disables the buffering of the output stream. In normal work sit-\n"
+" uations, curl will use a standard buffered output stream that\n"
+" will have the effect that it will output the data in chunks, not\n"
+" necessarily exactly when the data arrives. Using this option\n"
+" will disable that buffering.\n"
+"\n"
+" Providing --no-buffer multiple times has no extra effect. Dis-\n"
+, stdout);
+ fputs(
+" able it again with --buffer.\n"
+"\n"
+" Example:\n"
+" curl --no-buffer https://example.com\n"
+"\n"
+" See also -#, --progress-bar.\n"
+"\n"
+" --no-clobber\n"
+" When used in conjunction with the -o, --output, -J, --remote-\n"
+" header-name, -O, --remote-name, or --remote-name-all options,\n"
+" curl avoids overwriting files that already exist. Instead, a dot\n"
+" and a number gets appended to the name of the file that would be\n"
+, stdout);
+ fputs(
+" created, up to filename.100 after which it will not create any\n"
+" file.\n"
+"\n"
+" Note that this is the negated option name documented. You can\n"
+" thus use --clobber to enforce the clobbering, even if --remote-\n"
+" header-name or -J is specified.\n"
+"\n"
+" Providing --no-clobber multiple times has no extra effect. Dis-\n"
+" able it again with --clobber.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --no-clobber --output local/dir/file https://example.com\n"
+" See also -o, --output and -O, --remote-name. Added in 7.83.0.\n"
+"\n"
+" --no-keepalive\n"
+" Disables the use of keepalive messages on the TCP connection.\n"
+" curl otherwise enables them by default.\n"
+"\n"
+" Note that this is the negated option name documented. You can\n"
+" thus use --keepalive to enforce keepalive.\n"
+"\n"
+, stdout);
+ fputs(
+" Providing --no-keepalive multiple times has no extra effect.\n"
+" Disable it again with --keepalive.\n"
+"\n"
+" Example:\n"
+" curl --no-keepalive https://example.com\n"
+"\n"
+" See also --keepalive-time.\n"
+"\n"
+" --no-npn\n"
+" (HTTPS) In curl 7.86.0 and later, curl never uses NPN.\n"
+"\n"
+" Disable the NPN TLS extension. NPN is enabled by default if\n"
+" libcurl was built with an SSL library that supports NPN. NPN is\n"
+, stdout);
+ fputs(
+" used by a libcurl that supports HTTP/2 to negotiate HTTP/2 sup-\n"
+" port with the server during https sessions.\n"
+"\n"
+" Providing --no-npn multiple times has no extra effect. Disable\n"
+" it again with --npn.\n"
+"\n"
+" Example:\n"
+" curl --no-npn https://example.com\n"
+"\n"
+" See also --no-alpn and --http2. --no-npn requires that the un-\n"
+" derlying libcurl was built to support TLS. Added in 7.36.0.\n"
+"\n"
+, stdout);
+ fputs(
+" --no-progress-meter\n"
+" Option to switch off the progress meter output without muting or\n"
+" otherwise affecting warning and informational messages like\n"
+" --silent does.\n"
+"\n"
+" Note that this is the negated option name documented. You can\n"
+" thus use --progress-meter to enable the progress meter again.\n"
+"\n"
+" Providing --no-progress-meter multiple times has no extra ef-\n"
+, stdout);
+ fputs(
+" fect. Disable it again with --progress-meter.\n"
+"\n"
+" Example:\n"
+" curl --no-progress-meter -o store https://example.com\n"
+"\n"
+" See also -v, --verbose and -s, --silent. Added in 7.67.0.\n"
+"\n"
+" --no-sessionid\n"
+" (TLS) Disable curl's use of SSL session-ID caching. By default\n"
+" all transfers are done using the cache. Note that while nothing\n"
+" should ever get hurt by attempting to reuse SSL session-IDs,\n"
+, stdout);
+ fputs(
+" there seem to be broken SSL implementations in the wild that may\n"
+" require you to disable this in order for you to succeed.\n"
+"\n"
+" Note that this is the negated option name documented. You can\n"
+" thus use --sessionid to enforce session-ID caching.\n"
+"\n"
+" Providing --no-sessionid multiple times has no extra effect.\n"
+" Disable it again with --sessionid.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --no-sessionid https://example.com\n"
+"\n"
+" See also -k, --insecure.\n"
+"\n"
+" --noproxy <no-proxy-list>\n"
+" Comma-separated list of hosts for which not to use a proxy, if\n"
+" one is specified. The only wildcard is a single * character,\n"
+" which matches all hosts, and effectively disables the proxy.\n"
+" Each name in this list is matched as either a domain which con-\n"
+, stdout);
+ fputs(
+" tains the hostname, or the hostname itself. For example, lo-\n"
+" cal.com would match local.com, local.com:80, and www.local.com,\n"
+" but not www.notlocal.com.\n"
+"\n"
+" Since 7.53.0, This option overrides the environment variables\n"
+" that disable the proxy ('no_proxy' and 'NO_PROXY'). If there's\n"
+" an environment variable disabling a proxy, you can set the no-\n"
+" proxy list to \"\" to override it.\n"
+"\n"
+, stdout);
+ fputs(
+" If --noproxy is provided several times, the last set value will\n"
+" be used.\n"
+" Example:\n"
+" curl --noproxy \"www.example\" https://example.com\n"
+"\n"
+" See also -x, --proxy.\n"
+"\n"
+" --ntlm-wb\n"
+" (HTTP) Enables NTLM much in the style --ntlm does, but hand over\n"
+" the authentication to the separate binary ntlmauth application\n"
+" that is executed when needed.\n"
+"\n"
+, stdout);
+ fputs(
+" Providing --ntlm-wb multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
+" curl --ntlm-wb -u user:password https://example.com\n"
+"\n"
+" See also --ntlm and --proxy-ntlm.\n"
+"\n"
+" --ntlm (HTTP) Enables NTLM authentication. The NTLM authentication\n"
+" method was designed by Microsoft and is used by IIS web servers.\n"
+" It is a proprietary protocol, reverse-engineered by clever peo-\n"
+, stdout);
+ fputs(
+" ple and implemented in curl based on their efforts. This kind of\n"
+" behavior should not be endorsed, you should encourage everyone\n"
+" who uses NTLM to switch to a public and documented authentica-\n"
+" tion method instead, such as Digest.\n"
+"\n"
+" If you want to enable NTLM for your proxy authentication, then\n"
+" use --proxy-ntlm.\n"
+"\n"
+" If this option is used several times, only the first one is\n"
+" used.\n"
+, stdout);
+ fputs(
+"\n"
+" Providing --ntlm multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
+" curl --ntlm -u user:password https://example.com\n"
+"\n"
+" See also --proxy-ntlm. --ntlm requires that the underlying\n"
+" libcurl was built to support TLS. This option is mutually exclu-\n"
+" sive to --basic and --negotiate and --digest and --anyauth.\n"
+"\n"
+" --oauth2-bearer <token>\n"
+" (IMAP LDAP POP3 SMTP HTTP) Specify the Bearer Token for OAUTH\n"
+, stdout);
+ fputs(
+" 2.0 server authentication. The Bearer Token is used in conjunc-\n"
+" tion with the user name which can be specified as part of the\n"
+" --url or --user options.\n"
+"\n"
+" The Bearer Token and user name are formatted according to RFC\n"
+" 6750.\n"
+"\n"
+" If --oauth2-bearer is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --oauth2-bearer \"mF_9.B5f-4.1JqM\" https://example.com\n"
+"\n"
+" See also --basic, --ntlm and --digest. Added in 7.33.0.\n"
+"\n"
+" --output-dir <dir>\n"
+" This option specifies the directory in which files should be\n"
+" stored, when --remote-name or --output are used.\n"
+"\n"
+" The given output directory is used for all URLs and output op-\n"
+" tions on the command line, up until the first -:, --next.\n"
+"\n"
+, stdout);
+ fputs(
+" If the specified target directory does not exist, the operation\n"
+" will fail unless --create-dirs is also used.\n"
+"\n"
+" If --output-dir is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --output-dir \"tmp\" -O https://example.com\n"
+"\n"
+" See also -O, --remote-name and -J, --remote-header-name. Added\n"
+" in 7.73.0.\n"
+"\n"
+" -o, --output <file>\n"
+, stdout);
+ fputs(
+" Write output to <file> instead of stdout. If you are using {} or\n"
+" [] to fetch multiple documents, you should quote the URL and you\n"
+" can use '#' followed by a number in the <file> specifier. That\n"
+" variable will be replaced with the current string for the URL\n"
+" being fetched. Like in:\n"
+"\n"
+" curl \"http://{one,two}.example.com\" -o \"file_#1.txt\"\n"
+"\n"
+" or use several variables like:\n"
+"\n"
+, stdout);
+ fputs(
+" curl \"http://{site,host}.host[1-5].com\" -o \"#1_#2\"\n"
+"\n"
+" You may use this option as many times as the number of URLs you\n"
+" have. For example, if you specify two URLs on the same command\n"
+" line, you can use it like this:\n"
+"\n"
+" curl -o aa example.com -o bb example.net\n"
+"\n"
+" and the order of the -o options and the URLs does not matter,\n"
+" just that the first -o is for the first URL and so on, so the\n"
+, stdout);
+ fputs(
+" above command line can also be written as\n"
+"\n"
+" curl example.com example.net -o aa -o bb\n"
+"\n"
+" See also the --create-dirs option to create the local directo-\n"
+" ries dynamically. Specifying the output as '-' (a single dash)\n"
+" will force the output to be done to stdout.\n"
+"\n"
+" To suppress response bodies, you can redirect output to\n"
+" /dev/null:\n"
+"\n"
+" curl example.com -o /dev/null\n"
+"\n"
+, stdout);
+ fputs(
+" Or for Windows use nul:\n"
+" curl example.com -o nul\n"
+"\n"
+" --output can be used several times in a command line\n"
+"\n"
+" Examples:\n"
+" curl -o file https://example.com\n"
+" curl \"http://{one,two}.example.com\" -o \"file_#1.txt\"\n"
+" curl \"http://{site,host}.host[1-5].com\" -o \"#1_#2\"\n"
+" curl -o file https://example.com -o file2 https://example.net\n"
+"\n"
+, stdout);
+ fputs(
+" See also -O, --remote-name, --remote-name-all and -J, --remote-\n"
+" header-name.\n"
+"\n"
+" --parallel-immediate\n"
+" When doing parallel transfers, this option will instruct curl\n"
+" that it should rather prefer opening up more connections in par-\n"
+" allel at once rather than waiting to see if new transfers can be\n"
+" added as multiplexed streams on another connection.\n"
+"\n"
+, stdout);
+ fputs(
+" This option is global and does not need to be specified for each\n"
+" use of -:, --next.\n"
+"\n"
+" Providing --parallel-immediate multiple times has no extra ef-\n"
+" fect. Disable it again with --no-parallel-immediate.\n"
+"\n"
+" Example:\n"
+" curl --parallel-immediate -Z https://example.com -o file1 https://example.com -o file2\n"
+"\n"
+" See also -Z, --parallel and --parallel-max. Added in 7.68.0.\n"
+"\n"
+" --parallel-max <num>\n"
+, stdout);
+ fputs(
+" When asked to do parallel transfers, using -Z, --parallel, this\n"
+" option controls the maximum amount of transfers to do simultane-\n"
+" ously.\n"
+"\n"
+" This option is global and does not need to be specified for each\n"
+" use of -:, --next.\n"
+" The default is 50.\n"
+"\n"
+" If --parallel-max is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --parallel-max 100 -Z https://example.com ftp://example.com/\n"
+"\n"
+" See also -Z, --parallel. Added in 7.66.0.\n"
+"\n"
+" -Z, --parallel\n"
+" Makes curl perform its transfers in parallel as compared to the\n"
+" regular serial manner.\n"
+"\n"
+" This option is global and does not need to be specified for each\n"
+" use of -:, --next.\n"
+"\n"
+" Providing --parallel multiple times has no extra effect. Dis-\n"
+, stdout);
+ fputs(
+" able it again with --no-parallel.\n"
+"\n"
+" Example:\n"
+" curl --parallel https://example.com -o file1 https://example.com -o file2\n"
+"\n"
+" See also -:, --next and -v, --verbose. Added in 7.66.0.\n"
+"\n"
+" --pass <phrase>\n"
+" (SSH TLS) Passphrase for the private key.\n"
+"\n"
+" If --pass is provided several times, the last set value will be\n"
+" used.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --pass secret --key file https://example.com\n"
+"\n"
+" See also --key and -u, --user.\n"
+"\n"
+" --path-as-is\n"
+" Tell curl to not handle sequences of /../ or /./ in the given\n"
+" URL path. Normally curl will squash or merge them according to\n"
+" standards but with this option set you tell it not to do that.\n"
+"\n"
+" Providing --path-as-is multiple times has no extra effect. Dis-\n"
+" able it again with --no-path-as-is.\n"
+"\n"
+, stdout);
+ fputs(
+" Example:\n"
+" curl --path-as-is https://example.com/../../etc/passwd\n"
+"\n"
+" See also --request-target. Added in 7.42.0.\n"
+"\n"
+" --pinnedpubkey <hashes>\n"
+" (TLS) Tells curl to use the specified public key file (or\n"
+" hashes) to verify the peer. This can be a path to a file which\n"
+" contains a single public key in PEM or DER format, or any number\n"
+" of base64 encoded sha256 hashes preceded by 'sha256//' and sepa-\n"
+, stdout);
+ fputs(
+" rated by ';'.\n"
+"\n"
+" When negotiating a TLS or SSL connection, the server sends a\n"
+" certificate indicating its identity. A public key is extracted\n"
+" from this certificate and if it does not exactly match the pub-\n"
+" lic key provided to this option, curl will abort the connection\n"
+" before sending or receiving any data.\n"
+"\n"
+" PEM/DER support:\n"
+"\n"
+" 7.39.0: OpenSSL, GnuTLS and GSKit\n"
+"\n"
+, stdout);
+ fputs(
+" 7.43.0: NSS and wolfSSL\n"
+"\n"
+" 7.47.0: mbedtls\n"
+" sha256 support:\n"
+"\n"
+" 7.44.0: OpenSSL, GnuTLS, NSS and wolfSSL\n"
+"\n"
+" 7.47.0: mbedtls\n"
+"\n"
+" Other SSL backends not supported.\n"
+"\n"
+" If --pinnedpubkey is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Examples:\n"
+" curl --pinnedpubkey keyfile https://example.com\n"
+, stdout);
+ fputs(
+" curl --pinnedpubkey 'sha256//ce118b51897f4452dc' https://example.com\n"
+"\n"
+" See also --hostpubsha256. Added in 7.39.0.\n"
+"\n"
+" --post301\n"
+" (HTTP) Tells curl to respect RFC 7231/6.4.2 and not convert POST\n"
+" requests into GET requests when following a 301 redirection. The\n"
+" non-RFC behavior is ubiquitous in web browsers, so curl does the\n"
+" conversion by default to maintain consistency. However, a server\n"
+, stdout);
+ fputs(
+" may require a POST to remain a POST after such a redirection.\n"
+" This option is meaningful only when using -L, --location.\n"
+"\n"
+" Providing --post301 multiple times has no extra effect. Disable\n"
+" it again with --no-post301.\n"
+"\n"
+" Example:\n"
+" curl --post301 --location -d \"data\" https://example.com\n"
+"\n"
+" See also --post302, --post303 and -L, --location.\n"
+"\n"
+" --post302\n"
+, stdout);
+ fputs(
+" (HTTP) Tells curl to respect RFC 7231/6.4.3 and not convert POST\n"
+" requests into GET requests when following a 302 redirection. The\n"
+" non-RFC behavior is ubiquitous in web browsers, so curl does the\n"
+" conversion by default to maintain consistency. However, a server\n"
+" may require a POST to remain a POST after such a redirection.\n"
+" This option is meaningful only when using -L, --location.\n"
+"\n"
+, stdout);
+ fputs(
+" Providing --post302 multiple times has no extra effect. Disable\n"
+" it again with --no-post302.\n"
+"\n"
+" Example:\n"
+" curl --post302 --location -d \"data\" https://example.com\n"
+"\n"
+" See also --post301, --post303 and -L, --location.\n"
+"\n"
+" --post303\n"
+" (HTTP) Tells curl to violate RFC 7231/6.4.4 and not convert POST\n"
+" requests into GET requests when following 303 redirections. A\n"
+, stdout);
+ fputs(
+" server may require a POST to remain a POST after a 303 redirect-\n"
+" ion. This option is meaningful only when using -L, --location.\n"
+"\n"
+" Providing --post303 multiple times has no extra effect. Disable\n"
+" it again with --no-post303.\n"
+"\n"
+" Example:\n"
+" curl --post303 --location -d \"data\" https://example.com\n"
+"\n"
+" See also --post302, --post301 and -L, --location.\n"
+"\n"
+" --preproxy [protocol://]host[:port]\n"
+, stdout);
+ fputs(
+" Use the specified SOCKS proxy before connecting to an HTTP or\n"
+" HTTPS -x, --proxy. In such a case curl first connects to the\n"
+" SOCKS proxy and then connects (through SOCKS) to the HTTP or\n"
+" HTTPS proxy. Hence pre proxy.\n"
+"\n"
+" The pre proxy string should be specified with a protocol:// pre-\n"
+" fix to specify alternative proxy protocols. Use socks4://,\n"
+, stdout);
+ fputs(
+" socks4a://, socks5:// or socks5h:// to request the specific\n"
+" SOCKS version to be used. No protocol specified will make curl\n"
+" default to SOCKS4.\n"
+"\n"
+" If the port number is not specified in the proxy string, it is\n"
+" assumed to be 1080.\n"
+"\n"
+" User and password that might be provided in the proxy string are\n"
+" URL decoded by curl. This allows you to pass in special charac-\n"
+, stdout);
+ fputs(
+" ters such as @ by using %40 or pass in a colon with %3a.\n"
+"\n"
+" If --preproxy is provided several times, the last set value will\n"
+" be used.\n"
+" Example:\n"
+" curl --preproxy socks5://proxy.example -x http://http.example https://example.com\n"
+"\n"
+" See also -x, --proxy and --socks5. Added in 7.52.0.\n"
+"\n"
+" -#, --progress-bar\n"
+" Make curl display transfer progress as a simple progress bar in-\n"
+, stdout);
+ fputs(
+" stead of the standard, more informational, meter.\n"
+"\n"
+" This progress bar draws a single line of '#' characters across\n"
+" the screen and shows a percentage if the transfer size is known.\n"
+" For transfers without a known size, there will be space ship\n"
+" (-=o=-) that moves back and forth but only while data is being\n"
+" transferred, with a set of flying hash sign symbols on top.\n"
+"\n"
+, stdout);
+ fputs(
+" This option is global and does not need to be specified for each\n"
+" use of -:, --next.\n"
+"\n"
+" Providing --progress-bar multiple times has no extra effect.\n"
+" Disable it again with --no-progress-bar.\n"
+"\n"
+" Example:\n"
+" curl -# -O https://example.com\n"
+"\n"
+" See also --styled-output.\n"
+"\n"
+" --proto-default <protocol>\n"
+" Tells curl to use protocol for any URL missing a scheme name.\n"
+"\n"
+, stdout);
+ fputs(
+" An unknown or unsupported protocol causes error CURLE_UNSUP-\n"
+" PORTED_PROTOCOL (1).\n"
+"\n"
+" This option does not change the default proxy protocol (http).\n"
+"\n"
+" Without this option set, curl guesses protocol based on the host\n"
+" name, see --url for details.\n"
+"\n"
+" If --proto-default is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --proto-default https ftp.example.com\n"
+"\n"
+" See also --proto and --proto-redir. Added in 7.45.0.\n"
+"\n"
+" --proto-redir <protocols>\n"
+" Tells curl to limit what protocols it may use on redirect. Pro-\n"
+" tocols denied by --proto are not overridden by this option. See\n"
+" --proto for how protocols are represented.\n"
+"\n"
+" Example, allow only HTTP and HTTPS on redirect:\n"
+"\n"
+, stdout);
+ fputs(
+" curl --proto-redir -all,http,https http://example.com\n"
+"\n"
+" By default curl will only allow HTTP, HTTPS, FTP and FTPS on re-\n"
+" direct (since 7.65.2). Specifying all or +all enables all proto-\n"
+" cols on redirects, which is not good for security.\n"
+"\n"
+" If --proto-redir is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --proto-redir =http,https https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also --proto.\n"
+"\n"
+" --proto <protocols>\n"
+" Tells curl to limit what protocols it may use for transfers.\n"
+" Protocols are evaluated left to right, are comma separated, and\n"
+" are each a protocol name or 'all', optionally prefixed by zero\n"
+" or more modifiers. Available modifiers are:\n"
+"\n"
+" + Permit this protocol in addition to protocols already permit-\n"
+, stdout);
+ fputs(
+" ted (this is the default if no modifier is used).\n"
+"\n"
+" - Deny this protocol, removing it from the list of protocols\n"
+" already permitted.\n"
+"\n"
+" = Permit only this protocol (ignoring the list already permit-\n"
+" ted), though subject to later modification by subsequent en-\n"
+" tries in the comma separated list.\n"
+"\n"
+" For example:\n"
+"\n"
+" --proto -ftps uses the default protocols, but disables ftps\n"
+"\n"
+, stdout);
+ fputs(
+" --proto -all,https,+http\n"
+" only enables http and https\n"
+"\n"
+" --proto =http,https\n"
+" also only enables http and https\n"
+"\n"
+" Unknown and disabled protocols produce a warning. This allows\n"
+" scripts to safely rely on being able to disable potentially dan-\n"
+" gerous protocols, without relying upon support for that protocol\n"
+" being built into curl to avoid an error.\n"
+"\n"
+, stdout);
+ fputs(
+" This option can be used multiple times, in which case the effect\n"
+" is the same as concatenating the protocols into one instance of\n"
+" the option.\n"
+"\n"
+" If --proto is provided several times, the last set value will be\n"
+" used.\n"
+"\n"
+" Example:\n"
+" curl --proto =http,https,sftp https://example.com\n"
+"\n"
+" See also --proto-redir and --proto-default.\n"
+"\n"
+" --proxy-anyauth\n"
+, stdout);
+ fputs(
+" Tells curl to pick a suitable authentication method when commu-\n"
+" nicating with the given HTTP proxy. This might cause an extra\n"
+" request/response round-trip.\n"
+"\n"
+" Providing --proxy-anyauth multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
+" curl --proxy-anyauth --proxy-user user:passwd -x proxy https://example.com\n"
+"\n"
+" See also -x, --proxy, --proxy-basic and --proxy-digest.\n"
+"\n"
+" --proxy-basic\n"
+, stdout);
+ fputs(
+" Tells curl to use HTTP Basic authentication when communicating\n"
+" with the given proxy. Use --basic for enabling HTTP Basic with a\n"
+" remote host. Basic is the default authentication method curl\n"
+" uses with proxies.\n"
+"\n"
+" Providing --proxy-basic multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
+" curl --proxy-basic --proxy-user user:passwd -x proxy https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also -x, --proxy, --proxy-anyauth and --proxy-digest.\n"
+"\n"
+" --proxy-cacert <file>\n"
+" Same as --cacert but used in HTTPS proxy context.\n"
+"\n"
+" If --proxy-cacert is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --proxy-cacert CA-file.txt -x https://proxy https://example.com\n"
+"\n"
+" See also --proxy-capath, --cacert, --capath and -x, --proxy.\n"
+" Added in 7.52.0.\n"
+"\n"
+, stdout);
+ fputs(
+" --proxy-capath <dir>\n"
+" Same as --capath but used in HTTPS proxy context.\n"
+"\n"
+" If --proxy-capath is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --proxy-capath /local/directory -x https://proxy https://example.com\n"
+"\n"
+" See also --proxy-cacert, -x, --proxy and --capath. Added in\n"
+" 7.52.0.\n"
+"\n"
+" --proxy-cert-type <type>\n"
+, stdout);
+ fputs(
+" Same as --cert-type but used in HTTPS proxy context.\n"
+"\n"
+" If --proxy-cert-type is provided several times, the last set\n"
+" value will be used.\n"
+"\n"
+" Example:\n"
+" curl --proxy-cert-type PEM --proxy-cert file -x https://proxy https://example.com\n"
+"\n"
+" See also --proxy-cert. Added in 7.52.0.\n"
+"\n"
+" --proxy-cert <cert[:passwd]>\n"
+" Same as --cert but used in HTTPS proxy context.\n"
+"\n"
+, stdout);
+ fputs(
+" If --proxy-cert is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --proxy-cert file -x https://proxy https://example.com\n"
+"\n"
+" See also --proxy-cert-type. Added in 7.52.0.\n"
+"\n"
+" --proxy-ciphers <list>\n"
+" Same as --ciphers but used in HTTPS proxy context.\n"
+"\n"
+" If --proxy-ciphers is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --proxy-ciphers ECDHE-ECDSA-AES256-CCM8 -x https://proxy https://example.com\n"
+"\n"
+" See also --ciphers, --curves and -x, --proxy. Added in 7.52.0.\n"
+"\n"
+" --proxy-crlfile <file>\n"
+" Same as --crlfile but used in HTTPS proxy context.\n"
+"\n"
+" If --proxy-crlfile is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --proxy-crlfile rejects.txt -x https://proxy https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also --crlfile and -x, --proxy. Added in 7.52.0.\n"
+"\n"
+" --proxy-digest\n"
+" Tells curl to use HTTP Digest authentication when communicating\n"
+" with the given proxy. Use --digest for enabling HTTP Digest with\n"
+" a remote host.\n"
+"\n"
+" Providing --proxy-digest multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
+" curl --proxy-digest --proxy-user user:passwd -x proxy https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also -x, --proxy, --proxy-anyauth and --proxy-basic.\n"
+"\n"
+" --proxy-header <header/@file>\n"
+" (HTTP) Extra header to include in the request when sending HTTP\n"
+" to a proxy. You may specify any number of extra headers. This is\n"
+" the equivalent option to --header but is for proxy communication\n"
+" only like in CONNECT requests when you want a separate header\n"
+" sent to the proxy to what is sent to the actual remote host.\n"
+, stdout);
+ fputs(
+"\n"
+" curl will make sure that each header you add/replace is sent\n"
+" with the proper end-of-line marker, you should thus not add that\n"
+" as a part of the header content: do not add newlines or carriage\n"
+" returns, they will only mess things up for you.\n"
+"\n"
+" Headers specified with this option will not be included in re-\n"
+" quests that curl knows will not be sent to a proxy.\n"
+"\n"
+, stdout);
+ fputs(
+" Starting in 7.55.0, this option can take an argument in @file-\n"
+" name style, which then adds a header for each line in the input\n"
+" file. Using @- will make curl read the header file from stdin.\n"
+"\n"
+" This option can be used multiple times to add/replace/remove\n"
+" multiple headers.\n"
+"\n"
+" --proxy-header can be used several times in a command line\n"
+"\n"
+" Examples:\n"
+, stdout);
+ fputs(
+" curl --proxy-header \"X-First-Name: Joe\" -x http://proxy https://example.com\n"
+" curl --proxy-header \"User-Agent: surprise\" -x http://proxy https://example.com\n"
+" curl --proxy-header \"Host:\" -x http://proxy https://example.com\n"
+"\n"
+" See also -x, --proxy. Added in 7.37.0.\n"
+"\n"
+" --proxy-insecure\n"
+" Same as --insecure but used in HTTPS proxy context.\n"
+"\n"
+" Providing --proxy-insecure multiple times has no extra effect.\n"
+, stdout);
+ fputs(
+" Disable it again with --no-proxy-insecure.\n"
+"\n"
+" Example:\n"
+" curl --proxy-insecure -x https://proxy https://example.com\n"
+"\n"
+" See also -x, --proxy and -k, --insecure. Added in 7.52.0.\n"
+"\n"
+" --proxy-key-type <type>\n"
+" Same as --key-type but used in HTTPS proxy context.\n"
+"\n"
+" If --proxy-key-type is provided several times, the last set\n"
+" value will be used.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --proxy-key-type DER --proxy-key here -x https://proxy https://example.com\n"
+"\n"
+" See also --proxy-key and -x, --proxy. Added in 7.52.0.\n"
+"\n"
+" --proxy-key <key>\n"
+" Same as --key but used in HTTPS proxy context.\n"
+"\n"
+" If --proxy-key is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --proxy-key here -x https://proxy https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also --proxy-key-type and -x, --proxy. Added in 7.52.0.\n"
+"\n"
+" --proxy-negotiate\n"
+" Tells curl to use HTTP Negotiate (SPNEGO) authentication when\n"
+" communicating with the given proxy. Use --negotiate for enabling\n"
+" HTTP Negotiate (SPNEGO) with a remote host.\n"
+"\n"
+" Providing --proxy-negotiate multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --proxy-negotiate --proxy-user user:passwd -x proxy https://example.com\n"
+"\n"
+" See also --proxy-anyauth and --proxy-basic.\n"
+"\n"
+" --proxy-ntlm\n"
+" Tells curl to use HTTP NTLM authentication when communicating\n"
+" with the given proxy. Use --ntlm for enabling NTLM with a remote\n"
+" host.\n"
+"\n"
+" Providing --proxy-ntlm multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --proxy-ntlm --proxy-user user:passwd -x http://proxy https://example.com\n"
+"\n"
+" See also --proxy-negotiate and --proxy-anyauth.\n"
+"\n"
+" --proxy-pass <phrase>\n"
+" Same as --pass but used in HTTPS proxy context.\n"
+"\n"
+" If --proxy-pass is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --proxy-pass secret --proxy-key here -x https://proxy https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also -x, --proxy and --proxy-key. Added in 7.52.0.\n"
+"\n"
+" --proxy-pinnedpubkey <hashes>\n"
+" (TLS) Tells curl to use the specified public key file (or\n"
+" hashes) to verify the proxy. This can be a path to a file which\n"
+" contains a single public key in PEM or DER format, or any number\n"
+" of base64 encoded sha256 hashes preceded by 'sha256//' and sepa-\n"
+" rated by ';'.\n"
+"\n"
+, stdout);
+ fputs(
+" When negotiating a TLS or SSL connection, the server sends a\n"
+" certificate indicating its identity. A public key is extracted\n"
+" from this certificate and if it does not exactly match the pub-\n"
+" lic key provided to this option, curl will abort the connection\n"
+" before sending or receiving any data.\n"
+"\n"
+" If --proxy-pinnedpubkey is provided several times, the last set\n"
+" value will be used.\n"
+"\n"
+, stdout);
+ fputs(
+" Examples:\n"
+" curl --proxy-pinnedpubkey keyfile https://example.com\n"
+" curl --proxy-pinnedpubkey 'sha256//ce118b51897f4452dc' https://example.com\n"
+"\n"
+" See also --pinnedpubkey and -x, --proxy. Added in 7.59.0.\n"
+"\n"
+" --proxy-service-name <name>\n"
+" This option allows you to change the service name for proxy ne-\n"
+" gotiation.\n"
+"\n"
+" If --proxy-service-name is provided several times, the last set\n"
+, stdout);
+ fputs(
+" value will be used.\n"
+"\n"
+" Example:\n"
+" curl --proxy-service-name \"shrubbery\" -x proxy https://example.com\n"
+"\n"
+" See also --service-name and -x, --proxy. Added in 7.43.0.\n"
+"\n"
+" --proxy-ssl-allow-beast\n"
+" Same as --ssl-allow-beast but used in HTTPS proxy context.\n"
+"\n"
+" Providing --proxy-ssl-allow-beast multiple times has no extra\n"
+" effect. Disable it again with --no-proxy-ssl-allow-beast.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --proxy-ssl-allow-beast -x https://proxy https://example.com\n"
+"\n"
+" See also --ssl-allow-beast and -x, --proxy. Added in 7.52.0.\n"
+"\n"
+" --proxy-ssl-auto-client-cert\n"
+" Same as --ssl-auto-client-cert but used in HTTPS proxy context.\n"
+"\n"
+" Providing --proxy-ssl-auto-client-cert multiple times has no ex-\n"
+" tra effect. Disable it again with --no-proxy-ssl-auto-client-\n"
+" cert.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --proxy-ssl-auto-client-cert -x https://proxy https://example.com\n"
+"\n"
+" See also --ssl-auto-client-cert and -x, --proxy. Added in\n"
+" 7.77.0.\n"
+"\n"
+" --proxy-tls13-ciphers <ciphersuite list>\n"
+" (TLS) Specifies which cipher suites to use in the connection to\n"
+" your HTTPS proxy when it negotiates TLS 1.3. The list of ciphers\n"
+" suites must specify valid ciphers. Read up on TLS 1.3 cipher\n"
+, stdout);
+ fputs(
+" suite details on this URL:\n"
+"\n"
+" https://curl.se/docs/ssl-ciphers.html\n"
+"\n"
+" This option is currently used only when curl is built to use\n"
+" OpenSSL 1.1.1 or later. If you are using a different SSL backend\n"
+" you can try setting TLS 1.3 cipher suites by using the --proxy-\n"
+" ciphers option.\n"
+"\n"
+" If --proxy-tls13-ciphers is provided several times, the last set\n"
+" value will be used.\n"
+"\n"
+, stdout);
+ fputs(
+" Example:\n"
+" curl --proxy-tls13-ciphers TLS_AES_128_GCM_SHA256 -x proxy https://example.com\n"
+"\n"
+" See also --tls13-ciphers and --curves. Added in 7.61.0.\n"
+"\n"
+" --proxy-tlsauthtype <type>\n"
+" Same as --tlsauthtype but used in HTTPS proxy context.\n"
+"\n"
+" If --proxy-tlsauthtype is provided several times, the last set\n"
+" value will be used.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --proxy-tlsauthtype SRP -x https://proxy https://example.com\n"
+"\n"
+" See also -x, --proxy and --proxy-tlsuser. Added in 7.52.0.\n"
+"\n"
+" --proxy-tlspassword <string>\n"
+" Same as --tlspassword but used in HTTPS proxy context.\n"
+"\n"
+" If --proxy-tlspassword is provided several times, the last set\n"
+" value will be used.\n"
+"\n"
+" Example:\n"
+" curl --proxy-tlspassword passwd -x https://proxy https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also -x, --proxy and --proxy-tlsuser. Added in 7.52.0.\n"
+"\n"
+" --proxy-tlsuser <name>\n"
+" Same as --tlsuser but used in HTTPS proxy context.\n"
+"\n"
+" If --proxy-tlsuser is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --proxy-tlsuser smith -x https://proxy https://example.com\n"
+"\n"
+" See also -x, --proxy and --proxy-tlspassword. Added in 7.52.0.\n"
+"\n"
+" --proxy-tlsv1\n"
+, stdout);
+ fputs(
+" Same as --tlsv1 but used in HTTPS proxy context.\n"
+"\n"
+" Providing --proxy-tlsv1 multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
+" curl --proxy-tlsv1 -x https://proxy https://example.com\n"
+"\n"
+" See also -x, --proxy. Added in 7.52.0.\n"
+"\n"
+" -U, --proxy-user <user:password>\n"
+" Specify the user name and password to use for proxy authentica-\n"
+" tion.\n"
+"\n"
+, stdout);
+ fputs(
+" If you use a Windows SSPI-enabled curl binary and do either Ne-\n"
+" gotiate or NTLM authentication then you can tell curl to select\n"
+" the user name and password from your environment by specifying a\n"
+" single colon with this option: \"-U :\".\n"
+"\n"
+" On systems where it works, curl will hide the given option argu-\n"
+" ment from process listings. This is not enough to protect cre-\n"
+, stdout);
+ fputs(
+" dentials from possibly getting seen by other users on the same\n"
+" system as they will still be visible for a moment before\n"
+" cleared. Such sensitive data should be retrieved from a file in-\n"
+" stead or similar and never used in clear text in a command line.\n"
+" If --proxy-user is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --proxy-user name:pwd -x proxy https://example.com\n"
+"\n"
+" See also --proxy-pass.\n"
+"\n"
+" -x, --proxy [protocol://]host[:port]\n"
+" Use the specified proxy.\n"
+"\n"
+" The proxy string can be specified with a protocol:// prefix. No\n"
+" protocol specified or http:// will be treated as HTTP proxy. Use\n"
+" socks4://, socks4a://, socks5:// or socks5h:// to request a spe-\n"
+" cific SOCKS version to be used.\n"
+"\n"
+, stdout);
+ fputs(
+" Unix domain sockets are supported for socks proxy. Set localhost\n"
+" for the host part. e.g. socks5h://localhost/path/to/socket.sock\n"
+"\n"
+" HTTPS proxy support via https:// protocol prefix was added in\n"
+" 7.52.0 for OpenSSL, GnuTLS and NSS.\n"
+"\n"
+" Unrecognized and unsupported proxy protocols cause an error\n"
+" since 7.52.0. Prior versions may ignore the protocol and use\n"
+" http:// instead.\n"
+"\n"
+, stdout);
+ fputs(
+" If the port number is not specified in the proxy string, it is\n"
+" assumed to be 1080.\n"
+"\n"
+" This option overrides existing environment variables that set\n"
+" the proxy to use. If there's an environment variable setting a\n"
+" proxy, you can set proxy to \"\" to override it.\n"
+"\n"
+" All operations that are performed over an HTTP proxy will trans-\n"
+" parently be converted to HTTP. It means that certain protocol\n"
+, stdout);
+ fputs(
+" specific operations might not be available. This is not the case\n"
+" if you can tunnel through the proxy, as one with the --proxytun-\n"
+" nel option.\n"
+"\n"
+" User and password that might be provided in the proxy string are\n"
+" URL decoded by curl. This allows you to pass in special charac-\n"
+" ters such as @ by using %40 or pass in a colon with %3a.\n"
+"\n"
+" The proxy host can be specified the same way as the proxy envi-\n"
+, stdout);
+ fputs(
+" ronment variables, including the protocol prefix (http://) and\n"
+" the embedded user + password.\n"
+"\n"
+" If --proxy is provided several times, the last set value will be\n"
+" used.\n"
+"\n"
+" Example:\n"
+" curl --proxy http://proxy.example https://example.com\n"
+"\n"
+" See also --socks5 and --proxy-basic.\n"
+"\n"
+" --proxy1.0 <host[:port]>\n"
+" Use the specified HTTP 1.0 proxy. If the port number is not\n"
+, stdout);
+ fputs(
+" specified, it is assumed at port 1080.\n"
+"\n"
+" The only difference between this and the HTTP proxy option -x,\n"
+" --proxy, is that attempts to use CONNECT through the proxy will\n"
+" specify an HTTP 1.0 protocol instead of the default HTTP 1.1.\n"
+"\n"
+" Providing --proxy1.0 multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
+" curl --proxy1.0 -x http://proxy https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also -x, --proxy, --socks5 and --preproxy.\n"
+"\n"
+" -p, --proxytunnel\n"
+" When an HTTP proxy is used -x, --proxy, this option will make\n"
+" curl tunnel through the proxy. The tunnel approach is made with\n"
+" the HTTP proxy CONNECT request and requires that the proxy al-\n"
+" lows direct connect to the remote port number curl wants to tun-\n"
+" nel through to.\n"
+"\n"
+, stdout);
+ fputs(
+" To suppress proxy CONNECT response headers when curl is set to\n"
+" output headers use --suppress-connect-headers.\n"
+"\n"
+" Providing --proxytunnel multiple times has no extra effect.\n"
+" Disable it again with --no-proxytunnel.\n"
+"\n"
+" Example:\n"
+" curl --proxytunnel -x http://proxy https://example.com\n"
+"\n"
+" See also -x, --proxy.\n"
+"\n"
+" --pubkey <key>\n"
+, stdout);
+ fputs(
+" (SFTP SCP) Public key file name. Allows you to provide your pub-\n"
+" lic key in this separate file.\n"
+"\n"
+" (As of 7.39.0, curl attempts to automatically extract the public\n"
+" key from the private key file, so passing this option is gener-\n"
+" ally not required. Note that this public key extraction requires\n"
+" libcurl to be linked against a copy of libssh2 1.2.8 or higher\n"
+" that is itself linked against OpenSSL.)\n"
+"\n"
+, stdout);
+ fputs(
+" If --pubkey is provided several times, the last set value will\n"
+" be used.\n"
+" Example:\n"
+" curl --pubkey file.pub sftp://example.com/\n"
+"\n"
+" See also --pass.\n"
+"\n"
+" -Q, --quote <command>\n"
+" (FTP SFTP) Send an arbitrary command to the remote FTP or SFTP\n"
+" server. Quote commands are sent BEFORE the transfer takes place\n"
+" (just after the initial PWD command in an FTP transfer, to be\n"
+, stdout);
+ fputs(
+" exact). To make commands take place after a successful transfer,\n"
+" prefix them with a dash '-'.\n"
+"\n"
+" (FTP only) To make commands be sent after curl has changed the\n"
+" working directory, just before the file transfer command(s),\n"
+" prefix the command with a '+'. This is not performed when a di-\n"
+" rectory listing is performed.\n"
+"\n"
+" You may specify any number of commands.\n"
+"\n"
+, stdout);
+ fputs(
+" By default curl will stop at first failure. To make curl con-\n"
+" tinue even if the command fails, prefix the command with an as-\n"
+" terisk (*). Otherwise, if the server returns failure for one of\n"
+" the commands, the entire operation will be aborted.\n"
+"\n"
+" You must send syntactically correct FTP commands as RFC 959 de-\n"
+" fines to FTP servers, or one of the commands listed below to\n"
+" SFTP servers.\n"
+"\n"
+, stdout);
+ fputs(
+" This option can be used multiple times.\n"
+"\n"
+" SFTP is a binary protocol. Unlike for FTP, curl interprets SFTP\n"
+" quote commands itself before sending them to the server. File\n"
+" names may be quoted shell-style to embed spaces or special char-\n"
+" acters. Following is the list of all supported SFTP quote com-\n"
+" mands:\n"
+"\n"
+" atime date file\n"
+, stdout);
+ fputs(
+" The atime command sets the last access time of the file\n"
+" named by the file operand. The <date expression> can be\n"
+" all sorts of date strings, see the curl_getdate(3) man\n"
+" page for date expression details. (Added in 7.73.0)\n"
+"\n"
+" chgrp group file\n"
+" The chgrp command sets the group ID of the file named by\n"
+" the file operand to the group ID specified by the group\n"
+, stdout);
+ fputs(
+" operand. The group operand is a decimal integer group ID.\n"
+"\n"
+" chmod mode file\n"
+" The chmod command modifies the file mode bits of the\n"
+" specified file. The mode operand is an octal integer mode\n"
+" number.\n"
+"\n"
+" chown user file\n"
+" The chown command sets the owner of the file named by the\n"
+" file operand to the user ID specified by the user oper-\n"
+, stdout);
+ fputs(
+" and. The user operand is a decimal integer user ID.\n"
+"\n"
+" ln source_file target_file\n"
+" The ln and symlink commands create a symbolic link at the\n"
+" target_file location pointing to the source_file loca-\n"
+" tion.\n"
+"\n"
+" mkdir directory_name\n"
+" The mkdir command creates the directory named by the di-\n"
+" rectory_name operand.\n"
+"\n"
+" mtime date file\n"
+, stdout);
+ fputs(
+" The mtime command sets the last modification time of the\n"
+" file named by the file operand. The <date expression> can\n"
+" be all sorts of date strings, see the curl_getdate(3) man\n"
+" page for date expression details. (Added in 7.73.0)\n"
+"\n"
+" pwd The pwd command returns the absolute pathname of the cur-\n"
+" rent working directory.\n"
+"\n"
+" rename source target\n"
+, stdout);
+ fputs(
+" The rename command renames the file or directory named by\n"
+" the source operand to the destination path named by the\n"
+" target operand.\n"
+"\n"
+" rm file\n"
+" The rm command removes the file specified by the file op-\n"
+" erand.\n"
+"\n"
+" rmdir directory\n"
+" The rmdir command removes the directory entry specified\n"
+, stdout);
+ fputs(
+" by the directory operand, provided it is empty.\n"
+"\n"
+" symlink source_file target_file\n"
+" See ln.\n"
+"\n"
+" --quote can be used several times in a command line\n"
+"\n"
+" Example:\n"
+" curl --quote \"DELE file\" ftp://example.com/foo\n"
+"\n"
+" See also -X, --request.\n"
+"\n"
+" --random-file <file>\n"
+" Deprecated option. This option is ignored by curl since 7.84.0.\n"
+" Prior to that it only had an effect on curl if built to use old\n"
+, stdout);
+ fputs(
+" versions of OpenSSL.\n"
+"\n"
+" Specify the path name to file containing what will be considered\n"
+" as random data. The data may be used to seed the random engine\n"
+" for SSL connections.\n"
+"\n"
+" If --random-file is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --random-file rubbish https://example.com\n"
+"\n"
+" See also --egd-file.\n"
+"\n"
+" -r, --range <range>\n"
+, stdout);
+ fputs(
+" (HTTP FTP SFTP FILE) Retrieve a byte range (i.e. a partial docu-\n"
+" ment) from an HTTP/1.1, FTP or SFTP server or a local FILE.\n"
+" Ranges can be specified in a number of ways.\n"
+"\n"
+" 0-499 specifies the first 500 bytes\n"
+"\n"
+" 500-999 specifies the second 500 bytes\n"
+"\n"
+" -500 specifies the last 500 bytes\n"
+"\n"
+" 9500- specifies the bytes from offset 9500 and forward\n"
+"\n"
+, stdout);
+ fputs(
+" 0-0,-1 specifies the first and last byte only(*)(HTTP)\n"
+"\n"
+" 100-199,500-599\n"
+" specifies two separate 100-byte ranges(*) (HTTP)\n"
+"\n"
+" (*) = NOTE that this will cause the server to reply with a mul-\n"
+" tipart response, which will be returned as-is by curl! Parsing\n"
+" or otherwise transforming this response is the responsibility of\n"
+" the caller.\n"
+"\n"
+, stdout);
+ fputs(
+" Only digit characters (0-9) are valid in the 'start' and 'stop'\n"
+" fields of the 'start-stop' range syntax. If a non-digit charac-\n"
+" ter is given in the range, the server's response will be unspec-\n"
+" ified, depending on the server's configuration.\n"
+"\n"
+" You should also be aware that many HTTP/1.1 servers do not have\n"
+" this feature enabled, so that when you attempt to get a range,\n"
+, stdout);
+ fputs(
+" you will instead get the whole document.\n"
+"\n"
+" FTP and SFTP range downloads only support the simple 'start-\n"
+" stop' syntax (optionally with one of the numbers omitted). FTP\n"
+" use depends on the extended FTP command SIZE.\n"
+"\n"
+" If --range is provided several times, the last set value will be\n"
+" used.\n"
+"\n"
+" Example:\n"
+" curl --range 22-44 https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also -C, --continue-at and -a, --append.\n"
+"\n"
+" --rate <max request rate>\n"
+" Specify the maximum transfer frequency you allow curl to use -\n"
+" in number of transfer starts per time unit (sometimes called re-\n"
+" quest rate). Without this option, curl will start the next\n"
+" transfer as fast as possible.\n"
+"\n"
+" If given several URLs and a transfer completes faster than the\n"
+, stdout);
+ fputs(
+" allowed rate, curl will wait until the next transfer is started\n"
+" to maintain the requested rate. This option has no effect when\n"
+" --parallel is used.\n"
+"\n"
+" The request rate is provided as \"N/U\" where N is an integer num-\n"
+" ber and U is a time unit. Supported units are 's' (second), 'm'\n"
+" (minute), 'h' (hour) and 'd' /(day, as in a 24 hour unit). The\n"
+, stdout);
+ fputs(
+" default time unit, if no \"/U\" is provided, is number of trans-\n"
+" fers per hour.\n"
+"\n"
+" If curl is told to allow 10 requests per minute, it will not\n"
+" start the next request until 6 seconds have elapsed since the\n"
+" previous transfer was started.\n"
+"\n"
+" This function uses millisecond resolution. If the allowed fre-\n"
+" quency is set more than 1000 per second, it will instead run un-\n"
+" restricted.\n"
+"\n"
+, stdout);
+ fputs(
+" When retrying transfers, enabled with --retry, the separate\n"
+" retry delay logic is used and not this setting.\n"
+"\n"
+" If --rate is provided several times, the last set value will be\n"
+" used.\n"
+"\n"
+" Examples:\n"
+" curl --rate 2/s https://example.com\n"
+" curl --rate 3/h https://example.com\n"
+" curl --rate 14/m https://example.com\n"
+"\n"
+" See also --limit-rate and --retry-delay. Added in 7.84.0.\n"
+"\n"
+, stdout);
+ fputs(
+" --raw (HTTP) When used, it disables all internal HTTP decoding of con-\n"
+" tent or transfer encodings and instead makes them passed on un-\n"
+" altered, raw.\n"
+"\n"
+" Providing --raw multiple times has no extra effect. Disable it\n"
+" again with --no-raw.\n"
+"\n"
+" Example:\n"
+" curl --raw https://example.com\n"
+"\n"
+" See also --tr-encoding.\n"
+"\n"
+" -e, --referer <URL>\n"
+, stdout);
+ fputs(
+" (HTTP) Sends the \"Referrer Page\" information to the HTTP server.\n"
+" This can also be set with the --header flag of course. When used\n"
+" with --location you can append \";auto\" to the --referer URL to\n"
+" make curl automatically set the previous URL when it follows a\n"
+" Location: header. The \";auto\" string can be used alone, even if\n"
+" you do not set an initial -e, --referer.\n"
+"\n"
+, stdout);
+ fputs(
+" If --referer is provided several times, the last set value will\n"
+" be used.\n"
+"\n"
+" Examples:\n"
+" curl --referer \"https://fake.example\" https://example.com\n"
+" curl --referer \"https://fake.example;auto\" -L https://example.com\n"
+" curl --referer \";auto\" -L https://example.com\n"
+"\n"
+" See also -A, --user-agent and -H, --header.\n"
+"\n"
+" -J, --remote-header-name\n"
+, stdout);
+ fputs(
+" (HTTP) This option tells the --remote-name option to use the\n"
+" server-specified Content-Disposition filename instead of ex-\n"
+" tracting a filename from the URL. If the server-provided file\n"
+" name contains a path, that will be stripped off before the file\n"
+" name is used.\n"
+"\n"
+" The file is saved in the current directory, or in the directory\n"
+" specified with --output-dir.\n"
+"\n"
+, stdout);
+ fputs(
+" If the server specifies a file name and a file with that name\n"
+" already exists in the destination directory, it will not be\n"
+" overwritten and an error will occur. If the server does not\n"
+" specify a file name then this option has no effect.\n"
+"\n"
+" There's no attempt to decode %-sequences (yet) in the provided\n"
+" file name, so this option may provide you with rather unexpected\n"
+" file names.\n"
+"\n"
+, stdout);
+ fputs(
+" WARNING: Exercise judicious use of this option, especially on\n"
+" Windows. A rogue server could send you the name of a DLL or\n"
+" other file that could be loaded automatically by Windows or some\n"
+" third party software.\n"
+"\n"
+" Providing --remote-header-name multiple times has no extra ef-\n"
+" fect. Disable it again with --no-remote-header-name.\n"
+"\n"
+" Example:\n"
+" curl -OJ https://example.com/file\n"
+"\n"
+, stdout);
+ fputs(
+" See also -O, --remote-name.\n"
+"\n"
+" --remote-name-all\n"
+" This option changes the default action for all given URLs to be\n"
+" dealt with as if --remote-name were used for each one. So if you\n"
+" want to disable that for a specific URL after --remote-name-all\n"
+" has been used, you must use \"-o -\" or --no-remote-name.\n"
+"\n"
+" Providing --remote-name-all multiple times has no extra effect.\n"
+, stdout);
+ fputs(
+" Disable it again with --no-remote-name-all.\n"
+"\n"
+" Example:\n"
+" curl --remote-name-all ftp://example.com/file1 ftp://example.com/file2\n"
+"\n"
+" See also -O, --remote-name.\n"
+"\n"
+" -O, --remote-name\n"
+" Write output to a local file named like the remote file we get.\n"
+" (Only the file part of the remote file is used, the path is cut\n"
+" off.)\n"
+"\n"
+" The file will be saved in the current working directory. If you\n"
+, stdout);
+ fputs(
+" want the file saved in a different directory, make sure you\n"
+" change the current working directory before invoking curl with\n"
+" this option or use --output-dir.\n"
+"\n"
+" The remote file name to use for saving is extracted from the\n"
+" given URL, nothing else, and if it already exists it will be\n"
+" overwritten. If you want the server to be able to choose the\n"
+, stdout);
+ fputs(
+" file name refer to --remote-header-name which can be used in ad-\n"
+" dition to this option. If the server chooses a file name and\n"
+" that name already exists it will not be overwritten.\n"
+"\n"
+" There is no URL decoding done on the file name. If it has %20 or\n"
+" other URL encoded parts of the name, they will end up as-is as\n"
+" file name.\n"
+"\n"
+" You may use this option as many times as the number of URLs you\n"
+, stdout);
+ fputs(
+" have.\n"
+"\n"
+" --remote-name can be used several times in a command line\n"
+"\n"
+" Example:\n"
+" curl -O https://example.com/filename\n"
+"\n"
+" See also --remote-name-all, --output-dir and -J, --remote-\n"
+" header-name.\n"
+"\n"
+" -R, --remote-time\n"
+" When used, this will make curl attempt to figure out the time-\n"
+" stamp of the remote file, and if that is available make the lo-\n"
+, stdout);
+ fputs(
+" cal file get that same timestamp.\n"
+"\n"
+" Providing --remote-time multiple times has no extra effect.\n"
+" Disable it again with --no-remote-time.\n"
+"\n"
+" Example:\n"
+" curl --remote-time -o foo https://example.com\n"
+"\n"
+" See also -O, --remote-name and -z, --time-cond.\n"
+"\n"
+" --remove-on-error\n"
+" When curl returns an error when told to save output in a local\n"
+, stdout);
+ fputs(
+" file, this option removes that saved file before exiting. This\n"
+" prevents curl from leaving a partial file in the case of an er-\n"
+" ror during transfer.\n"
+"\n"
+" If the output is not a file, this option has no effect.\n"
+"\n"
+" Providing --remove-on-error multiple times has no extra effect.\n"
+" Disable it again with --no-remove-on-error.\n"
+"\n"
+" Example:\n"
+" curl --remove-on-error -o output https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also -f, --fail. Added in 7.83.0.\n"
+"\n"
+" --request-target <path>\n"
+" (HTTP) Tells curl to use an alternative \"target\" (path) instead\n"
+" of using the path as provided in the URL. Particularly useful\n"
+" when wanting to issue HTTP requests without leading slash or\n"
+" other data that does not follow the regular URL pattern, like\n"
+" \"OPTIONS *\".\n"
+"\n"
+, stdout);
+ fputs(
+" If --request-target is provided several times, the last set\n"
+" value will be used.\n"
+"\n"
+" Example:\n"
+" curl --request-target \"*\" -X OPTIONS https://example.com\n"
+"\n"
+" See also -X, --request. Added in 7.55.0.\n"
+"\n"
+" -X, --request <method>\n"
+" (HTTP) Specifies a custom request method to use when communicat-\n"
+" ing with the HTTP server. The specified request method will be\n"
+, stdout);
+ fputs(
+" used instead of the method otherwise used (which defaults to\n"
+" GET). Read the HTTP 1.1 specification for details and explana-\n"
+" tions. Common additional HTTP requests include PUT and DELETE,\n"
+" but related technologies like WebDAV offers PROPFIND, COPY, MOVE\n"
+" and more.\n"
+"\n"
+" Normally you do not need this option. All sorts of GET, HEAD,\n"
+" POST and PUT requests are rather invoked by using dedicated com-\n"
+, stdout);
+ fputs(
+" mand line options.\n"
+"\n"
+" This option only changes the actual word used in the HTTP re-\n"
+" quest, it does not alter the way curl behaves. So for example if\n"
+" you want to make a proper HEAD request, using -X HEAD will not\n"
+" suffice. You need to use the --head option.\n"
+"\n"
+" The method string you set with --request will be used for all\n"
+" requests, which if you for example use --location may cause un-\n"
+, stdout);
+ fputs(
+" intended side-effects when curl does not change request method\n"
+" according to the HTTP 30x response codes - and similar.\n"
+"\n"
+" (FTP) Specifies a custom FTP command to use instead of LIST when\n"
+" doing file lists with FTP.\n"
+"\n"
+" (POP3) Specifies a custom POP3 command to use instead of LIST or\n"
+" RETR.\n"
+"\n"
+" (IMAP) Specifies a custom IMAP command to use instead of LIST.\n"
+" (Added in 7.30.0)\n"
+"\n"
+, stdout);
+ fputs(
+" (SMTP) Specifies a custom SMTP command to use instead of HELP or\n"
+" VRFY. (Added in 7.34.0)\n"
+"\n"
+" If --request is provided several times, the last set value will\n"
+" be used.\n"
+"\n"
+" Examples:\n"
+" curl -X \"DELETE\" https://example.com\n"
+" curl -X NLST ftp://example.com/\n"
+"\n"
+" See also --request-target.\n"
+"\n"
+" --resolve <[+]host:port:addr[,addr]...>\n"
+, stdout);
+ fputs(
+" Provide a custom address for a specific host and port pair. Us-\n"
+" ing this, you can make the curl requests(s) use a specified ad-\n"
+" dress and prevent the otherwise normally resolved address to be\n"
+" used. Consider it a sort of /etc/hosts alternative provided on\n"
+" the command line. The port number should be the number used for\n"
+" the specific protocol the host will be used for. It means you\n"
+, stdout);
+ fputs(
+" need several entries if you want to provide address for the same\n"
+" host but different ports.\n"
+"\n"
+" By specifying '*' as host you can tell curl to resolve any host\n"
+" and specific port pair to the specified address. Wildcard is re-\n"
+" solved last so any --resolve with a specific host and port will\n"
+" be used first.\n"
+"\n"
+" The provided address set by this option will be used even if\n"
+, stdout);
+ fputs(
+" --ipv4 or --ipv6 is set to make curl use another IP version.\n"
+"\n"
+" By prefixing the host with a '+' you can make the entry time out\n"
+" after curl's default timeout (1 minute). Note that this will\n"
+" only make sense for long running parallel transfers with a lot\n"
+" of files. In such cases, if this option is used curl will try to\n"
+" resolve the host as it normally would once the timeout has ex-\n"
+" pired.\n"
+"\n"
+, stdout);
+ fputs(
+" Support for providing the IP address within [brackets] was added\n"
+" in 7.57.0.\n"
+"\n"
+" Support for providing multiple IP addresses per entry was added\n"
+" in 7.59.0.\n"
+"\n"
+" Support for resolving with wildcard was added in 7.64.0.\n"
+"\n"
+" Support for the '+' prefix was was added in 7.75.0.\n"
+"\n"
+" This option can be used many times to add many host names to re-\n"
+" solve.\n"
+"\n"
+, stdout);
+ fputs(
+" --resolve can be used several times in a command line\n"
+"\n"
+" Example:\n"
+" curl --resolve example.com:443:127.0.0.1 https://example.com\n"
+"\n"
+" See also --connect-to and --alt-svc.\n"
+"\n"
+" --retry-all-errors\n"
+" Retry on any error. This option is used together with --retry.\n"
+"\n"
+" This option is the \"sledgehammer\" of retrying. Do not use this\n"
+" option by default (eg in curlrc), there may be unintended conse-\n"
+, stdout);
+ fputs(
+" quences such as sending or receiving duplicate data. Do not use\n"
+" with redirected input or output. You'd be much better off han-\n"
+" dling your unique problems in shell script. Please read the ex-\n"
+" ample below.\n"
+"\n"
+" WARNING: For server compatibility curl attempts to retry failed\n"
+" flaky transfers as close as possible to how they were started,\n"
+, stdout);
+ fputs(
+" but this is not possible with redirected input or output. For\n"
+" example, before retrying it removes output data from a failed\n"
+" partial transfer that was written to an output file. However\n"
+" this is not true of data redirected to a | pipe or > file, which\n"
+" are not reset. We strongly suggest you do not parse or record\n"
+" output via redirect in combination with this option, since you\n"
+, stdout);
+ fputs(
+" may receive duplicate data.\n"
+"\n"
+" By default curl will not error on an HTTP response code that in-\n"
+" dicates an HTTP error, if the transfer was successful. For exam-\n"
+" ple, if a server replies 404 Not Found and the reply is fully\n"
+" received then that is not an error. When --retry is used then\n"
+" curl will retry on some HTTP response codes that indicate tran-\n"
+, stdout);
+ fputs(
+" sient HTTP errors, but that does not include most 4xx response\n"
+" codes such as 404. If you want to retry on all response codes\n"
+" that indicate HTTP errors (4xx and 5xx) then combine with -f,\n"
+" --fail.\n"
+"\n"
+" Providing --retry-all-errors multiple times has no extra effect.\n"
+" Disable it again with --no-retry-all-errors.\n"
+"\n"
+" Example:\n"
+" curl --retry 5 --retry-all-errors https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also --retry. Added in 7.71.0.\n"
+"\n"
+" --retry-connrefused\n"
+" In addition to the other conditions, consider ECONNREFUSED as a\n"
+" transient error too for --retry. This option is used together\n"
+" with --retry.\n"
+"\n"
+" Providing --retry-connrefused multiple times has no extra ef-\n"
+" fect. Disable it again with --no-retry-connrefused.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --retry-connrefused --retry https://example.com\n"
+"\n"
+" See also --retry and --retry-all-errors. Added in 7.52.0.\n"
+"\n"
+" --retry-delay <seconds>\n"
+" Make curl sleep this amount of time before each retry when a\n"
+" transfer has failed with a transient error (it changes the de-\n"
+" fault backoff time algorithm between retries). This option is\n"
+" only interesting if --retry is also used. Setting this delay to\n"
+, stdout);
+ fputs(
+" zero will make curl use the default backoff time.\n"
+"\n"
+" If --retry-delay is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --retry-delay 5 --retry https://example.com\n"
+"\n"
+" See also --retry.\n"
+"\n"
+" --retry-max-time <seconds>\n"
+" The retry timer is reset before the first transfer attempt. Re-\n"
+" tries will be done as usual (see --retry) as long as the timer\n"
+, stdout);
+ fputs(
+" has not reached this given limit. Notice that if the timer has\n"
+" not reached the limit, the request will be made and while per-\n"
+" forming, it may take longer than this given time period. To\n"
+" limit a single request's maximum time, use -m, --max-time. Set\n"
+" this option to zero to not timeout retries.\n"
+"\n"
+" If --retry-max-time is provided several times, the last set\n"
+" value will be used.\n"
+"\n"
+, stdout);
+ fputs(
+" Example:\n"
+" curl --retry-max-time 30 --retry 10 https://example.com\n"
+"\n"
+" See also --retry.\n"
+"\n"
+" --retry <num>\n"
+" If a transient error is returned when curl tries to perform a\n"
+" transfer, it will retry this number of times before giving up.\n"
+" Setting the number to 0 makes curl do no retries (which is the\n"
+" default). Transient error means either: a timeout, an FTP 4xx\n"
+, stdout);
+ fputs(
+" response code or an HTTP 408, 429, 500, 502, 503 or 504 response\n"
+" code.\n"
+"\n"
+" When curl is about to retry a transfer, it will first wait one\n"
+" second and then for all forthcoming retries it will double the\n"
+" waiting time until it reaches 10 minutes which then will be the\n"
+" delay between the rest of the retries. By using --retry-delay\n"
+" you disable this exponential backoff algorithm. See also\n"
+, stdout);
+ fputs(
+" --retry-max-time to limit the total time allowed for retries.\n"
+"\n"
+" Since curl 7.66.0, curl will comply with the Retry-After: re-\n"
+" sponse header if one was present to know when to issue the next\n"
+" retry.\n"
+"\n"
+" If --retry is provided several times, the last set value will be\n"
+" used.\n"
+"\n"
+" Example:\n"
+" curl --retry 7 https://example.com\n"
+"\n"
+" See also --retry-max-time.\n"
+"\n"
+, stdout);
+ fputs(
+" --sasl-authzid <identity>\n"
+" Use this authorization identity (authzid), during SASL PLAIN au-\n"
+" thentication, in addition to the authentication identity (auth-\n"
+" cid) as specified by -u, --user.\n"
+"\n"
+" If the option is not specified, the server will derive the au-\n"
+" thzid from the authcid, but if specified, and depending on the\n"
+" server implementation, it may be used to access another user's\n"
+, stdout);
+ fputs(
+" inbox, that the user has been granted access to, or a shared\n"
+" mailbox for example.\n"
+"\n"
+" If --sasl-authzid is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --sasl-authzid zid imap://example.com/\n"
+"\n"
+" See also --login-options. Added in 7.66.0.\n"
+"\n"
+" --sasl-ir\n"
+" Enable initial response in SASL authentication.\n"
+"\n"
+, stdout);
+ fputs(
+" Providing --sasl-ir multiple times has no extra effect. Disable\n"
+" it again with --no-sasl-ir.\n"
+"\n"
+" Example:\n"
+" curl --sasl-ir imap://example.com/\n"
+"\n"
+" See also --sasl-authzid. Added in 7.31.0.\n"
+"\n"
+" --service-name <name>\n"
+" This option allows you to change the service name for SPNEGO.\n"
+"\n"
+" Examples: --negotiate --service-name sockd would use\n"
+" sockd/server-name.\n"
+"\n"
+, stdout);
+ fputs(
+" If --service-name is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --service-name sockd/server https://example.com\n"
+"\n"
+" See also --negotiate and --proxy-service-name. Added in 7.43.0.\n"
+"\n"
+" -S, --show-error\n"
+" When used with -s, --silent, it makes curl show an error message\n"
+" if it fails.\n"
+"\n"
+" This option is global and does not need to be specified for each\n"
+, stdout);
+ fputs(
+" use of -:, --next.\n"
+"\n"
+" Providing --show-error multiple times has no extra effect. Dis-\n"
+" able it again with --no-show-error.\n"
+"\n"
+" Example:\n"
+" curl --show-error --silent https://example.com\n"
+"\n"
+" See also --no-progress-meter.\n"
+"\n"
+" -s, --silent\n"
+" Silent or quiet mode. Do not show progress meter or error mes-\n"
+" sages. Makes Curl mute. It will still output the data you ask\n"
+, stdout);
+ fputs(
+" for, potentially even to the terminal/stdout unless you redirect\n"
+" it.\n"
+"\n"
+" Use --show-error in addition to this option to disable progress\n"
+" meter but still show error messages.\n"
+"\n"
+" Providing --silent multiple times has no extra effect. Disable\n"
+" it again with --no-silent.\n"
+"\n"
+" Example:\n"
+" curl -s https://example.com\n"
+"\n"
+" See also -v, --verbose, --stderr and --no-progress-meter.\n"
+"\n"
+, stdout);
+ fputs(
+" --socks4 <host[:port]>\n"
+" Use the specified SOCKS4 proxy. If the port number is not speci-\n"
+" fied, it is assumed at port 1080. Using this socket type make\n"
+" curl resolve the host name and passing the address on to the\n"
+" proxy.\n"
+"\n"
+" To specify proxy on a unix domain socket, use localhost for\n"
+" host, e.g. socks4://localhost/path/to/socket.sock\n"
+"\n"
+, stdout);
+ fputs(
+" This option overrides any previous use of -x, --proxy, as they\n"
+" are mutually exclusive.\n"
+"\n"
+" This option is superfluous since you can specify a socks4 proxy\n"
+" with --proxy using a socks4:// protocol prefix.\n"
+"\n"
+" Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
+" the same time --proxy is used with an HTTP/HTTPS proxy. In such\n"
+" a case curl first connects to the SOCKS proxy and then connects\n"
+, stdout);
+ fputs(
+" (through SOCKS) to the HTTP or HTTPS proxy.\n"
+"\n"
+" If --socks4 is provided several times, the last set value will\n"
+" be used.\n"
+" Example:\n"
+" curl --socks4 hostname:4096 https://example.com\n"
+"\n"
+" See also --socks4a, --socks5 and --socks5-hostname.\n"
+"\n"
+" --socks4a <host[:port]>\n"
+" Use the specified SOCKS4a proxy. If the port number is not spec-\n"
+, stdout);
+ fputs(
+" ified, it is assumed at port 1080. This asks the proxy to re-\n"
+" solve the host name.\n"
+"\n"
+" To specify proxy on a unix domain socket, use localhost for\n"
+" host, e.g. socks4a://localhost/path/to/socket.sock\n"
+"\n"
+" This option overrides any previous use of -x, --proxy, as they\n"
+" are mutually exclusive.\n"
+"\n"
+" This option is superfluous since you can specify a socks4a proxy\n"
+, stdout);
+ fputs(
+" with --proxy using a socks4a:// protocol prefix.\n"
+"\n"
+" Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
+" the same time --proxy is used with an HTTP/HTTPS proxy. In such\n"
+" a case curl first connects to the SOCKS proxy and then connects\n"
+" (through SOCKS) to the HTTP or HTTPS proxy.\n"
+"\n"
+" If --socks4a is provided several times, the last set value will\n"
+" be used.\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --socks4a hostname:4096 https://example.com\n"
+"\n"
+" See also --socks4, --socks5 and --socks5-hostname.\n"
+"\n"
+" --socks5-basic\n"
+" Tells curl to use username/password authentication when connect-\n"
+" ing to a SOCKS5 proxy. The username/password authentication is\n"
+" enabled by default. Use --socks5-gssapi to force GSS-API au-\n"
+" thentication to SOCKS5 proxies.\n"
+"\n"
+, stdout);
+ fputs(
+" Providing --socks5-basic multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
+" curl --socks5-basic --socks5 hostname:4096 https://example.com\n"
+"\n"
+" See also --socks5. Added in 7.55.0.\n"
+"\n"
+" --socks5-gssapi-nec\n"
+" As part of the GSS-API negotiation a protection mode is negoti-\n"
+" ated. RFC 1961 says in section 4.3/4.4 it should be protected,\n"
+" but the NEC reference implementation does not. The option\n"
+, stdout);
+ fputs(
+" --socks5-gssapi-nec allows the unprotected exchange of the pro-\n"
+" tection mode negotiation.\n"
+"\n"
+" Providing --socks5-gssapi-nec multiple times has no extra ef-\n"
+" fect. Disable it again with --no-socks5-gssapi-nec.\n"
+"\n"
+" Example:\n"
+" curl --socks5-gssapi-nec --socks5 hostname:4096 https://example.com\n"
+"\n"
+" See also --socks5.\n"
+"\n"
+" --socks5-gssapi-service <name>\n"
+, stdout);
+ fputs(
+" The default service name for a socks server is rcmd/server-fqdn.\n"
+" This option allows you to change it.\n"
+"\n"
+" Examples: --socks5 proxy-name --socks5-gssapi-service sockd\n"
+" would use sockd/proxy-name --socks5 proxy-name --socks5-gssapi-\n"
+" service sockd/real-name would use sockd/real-name for cases\n"
+" where the proxy-name does not match the principal name.\n"
+"\n"
+, stdout);
+ fputs(
+" If --socks5-gssapi-service is provided several times, the last\n"
+" set value will be used.\n"
+"\n"
+" Example:\n"
+" curl --socks5-gssapi-service sockd --socks5 hostname:4096 https://example.com\n"
+"\n"
+" See also --socks5.\n"
+"\n"
+" --socks5-gssapi\n"
+" Tells curl to use GSS-API authentication when connecting to a\n"
+" SOCKS5 proxy. The GSS-API authentication is enabled by default\n"
+, stdout);
+ fputs(
+" (if curl is compiled with GSS-API support). Use --socks5-basic\n"
+" to force username/password authentication to SOCKS5 proxies.\n"
+"\n"
+" Providing --socks5-gssapi multiple times has no extra effect.\n"
+" Disable it again with --no-socks5-gssapi.\n"
+"\n"
+" Example:\n"
+" curl --socks5-gssapi --socks5 hostname:4096 https://example.com\n"
+"\n"
+" See also --socks5. Added in 7.55.0.\n"
+"\n"
+" --socks5-hostname <host[:port]>\n"
+, stdout);
+ fputs(
+" Use the specified SOCKS5 proxy (and let the proxy resolve the\n"
+" host name). If the port number is not specified, it is assumed\n"
+" at port 1080.\n"
+"\n"
+" To specify proxy on a unix domain socket, use localhost for\n"
+" host, e.g. socks5h://localhost/path/to/socket.sock\n"
+"\n"
+" This option overrides any previous use of -x, --proxy, as they\n"
+" are mutually exclusive.\n"
+"\n"
+, stdout);
+ fputs(
+" This option is superfluous since you can specify a socks5 host-\n"
+" name proxy with --proxy using a socks5h:// protocol prefix.\n"
+"\n"
+" Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
+" the same time --proxy is used with an HTTP/HTTPS proxy. In such\n"
+" a case curl first connects to the SOCKS proxy and then connects\n"
+" (through SOCKS) to the HTTP or HTTPS proxy.\n"
+"\n"
+, stdout);
+ fputs(
+" If --socks5-hostname is provided several times, the last set\n"
+" value will be used.\n"
+"\n"
+" Example:\n"
+" curl --socks5-hostname proxy.example:7000 https://example.com\n"
+"\n"
+" See also --socks5 and --socks4a.\n"
+"\n"
+" --socks5 <host[:port]>\n"
+" Use the specified SOCKS5 proxy - but resolve the host name lo-\n"
+" cally. If the port number is not specified, it is assumed at\n"
+" port 1080.\n"
+"\n"
+, stdout);
+ fputs(
+" To specify proxy on a unix domain socket, use localhost for\n"
+" host, e.g. socks5://localhost/path/to/socket.sock\n"
+"\n"
+" This option overrides any previous use of -x, --proxy, as they\n"
+" are mutually exclusive.\n"
+"\n"
+" This option is superfluous since you can specify a socks5 proxy\n"
+" with --proxy using a socks5:// protocol prefix.\n"
+"\n"
+" Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
+, stdout);
+ fputs(
+" the same time --proxy is used with an HTTP/HTTPS proxy. In such\n"
+" a case curl first connects to the SOCKS proxy and then connects\n"
+" (through SOCKS) to the HTTP or HTTPS proxy.\n"
+"\n"
+" This option (as well as --socks4) does not work with IPV6, FTPS\n"
+" or LDAP.\n"
+"\n"
+" If --socks5 is provided several times, the last set value will\n"
+" be used.\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --socks5 proxy.example:7000 https://example.com\n"
+"\n"
+" See also --socks5-hostname and --socks4a.\n"
+"\n"
+" -Y, --speed-limit <speed>\n"
+" If a transfer is slower than this given speed (in bytes per sec-\n"
+" ond) for speed-time seconds it gets aborted. speed-time is set\n"
+" with --speed-time and is 30 if not set.\n"
+"\n"
+" If --speed-limit is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+, stdout);
+ fputs(
+" Example:\n"
+" curl --speed-limit 300 --speed-time 10 https://example.com\n"
+"\n"
+" See also -y, --speed-time, --limit-rate and -m, --max-time.\n"
+"\n"
+" -y, --speed-time <seconds>\n"
+" If a transfer runs slower than speed-limit bytes per second dur-\n"
+" ing a speed-time period, the transfer is aborted. If speed-time\n"
+" is used, the default speed-limit will be 1 unless set with -Y,\n"
+" --speed-limit.\n"
+"\n"
+, stdout);
+ fputs(
+" This option controls transfers (in both directions) but will not\n"
+" affect slow connects etc. If this is a concern for you, try the\n"
+" --connect-timeout option.\n"
+"\n"
+" If --speed-time is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --speed-limit 300 --speed-time 10 https://example.com\n"
+"\n"
+" See also -Y, --speed-limit and --limit-rate.\n"
+"\n"
+" --ssl-allow-beast\n"
+, stdout);
+ fputs(
+" This option tells curl to not work around a security flaw in the\n"
+" SSL3 and TLS1.0 protocols known as BEAST. If this option is not\n"
+" used, the SSL layer may use workarounds known to cause interop-\n"
+" erability problems with some older SSL implementations.\n"
+"\n"
+" WARNING: this option loosens the SSL security, and by using this\n"
+" flag you ask for exactly that.\n"
+"\n"
+, stdout);
+ fputs(
+" Providing --ssl-allow-beast multiple times has no extra effect.\n"
+" Disable it again with --no-ssl-allow-beast.\n"
+"\n"
+" Example:\n"
+" curl --ssl-allow-beast https://example.com\n"
+"\n"
+" See also --proxy-ssl-allow-beast and -k, --insecure.\n"
+"\n"
+" --ssl-auto-client-cert\n"
+" Tell libcurl to automatically locate and use a client certifi-\n"
+" cate for authentication, when requested by the server. This op-\n"
+, stdout);
+ fputs(
+" tion is only supported for Schannel (the native Windows SSL li-\n"
+" brary). Prior to 7.77.0 this was the default behavior in libcurl\n"
+" with Schannel. Since the server can request any certificate that\n"
+" supports client authentication in the OS certificate store it\n"
+" could be a privacy violation and unexpected.\n"
+"\n"
+" Providing --ssl-auto-client-cert multiple times has no extra ef-\n"
+, stdout);
+ fputs(
+" fect. Disable it again with --no-ssl-auto-client-cert.\n"
+"\n"
+" Example:\n"
+" curl --ssl-auto-client-cert https://example.com\n"
+"\n"
+" See also --proxy-ssl-auto-client-cert. Added in 7.77.0.\n"
+"\n"
+" --ssl-no-revoke\n"
+" (Schannel) This option tells curl to disable certificate revoca-\n"
+" tion checks. WARNING: this option loosens the SSL security, and\n"
+" by using this flag you ask for exactly that.\n"
+"\n"
+, stdout);
+ fputs(
+" Providing --ssl-no-revoke multiple times has no extra effect.\n"
+" Disable it again with --no-ssl-no-revoke.\n"
+"\n"
+" Example:\n"
+" curl --ssl-no-revoke https://example.com\n"
+"\n"
+" See also --crlfile. Added in 7.44.0.\n"
+"\n"
+" --ssl-reqd\n"
+" (FTP IMAP POP3 SMTP LDAP) Require SSL/TLS for the connection.\n"
+" Terminates the connection if the server does not support\n"
+" SSL/TLS.\n"
+"\n"
+, stdout);
+ fputs(
+" This option is handled in LDAP since version 7.81.0. It is fully\n"
+" supported by the OpenLDAP backend and rejected by the generic\n"
+" ldap backend if explicit TLS is required.\n"
+"\n"
+" This option was formerly known as --ftp-ssl-reqd.\n"
+"\n"
+" Providing --ssl-reqd multiple times has no extra effect. Dis-\n"
+" able it again with --no-ssl-reqd.\n"
+"\n"
+" Example:\n"
+" curl --ssl-reqd ftp://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also --ssl and -k, --insecure.\n"
+"\n"
+" --ssl-revoke-best-effort\n"
+" (Schannel) This option tells curl to ignore certificate revoca-\n"
+" tion checks when they failed due to missing/offline distribution\n"
+" points for the revocation check lists.\n"
+"\n"
+" Providing --ssl-revoke-best-effort multiple times has no extra\n"
+" effect. Disable it again with --no-ssl-revoke-best-effort.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --ssl-revoke-best-effort https://example.com\n"
+"\n"
+" See also --crlfile and -k, --insecure. Added in 7.70.0.\n"
+"\n"
+" --ssl (FTP IMAP POP3 SMTP LDAP) Warning: this is considered an inse-\n"
+" cure option. Consider using --ssl-reqd instead to be sure curl\n"
+" upgrades to a secure connection.\n"
+"\n"
+" Try to use SSL/TLS for the connection. Reverts to a non-secure\n"
+, stdout);
+ fputs(
+" connection if the server does not support SSL/TLS. See also\n"
+" --ftp-ssl-control and --ssl-reqd for different levels of encryp-\n"
+" tion required.\n"
+"\n"
+" This option is handled in LDAP since version 7.81.0. It is fully\n"
+" supported by the OpenLDAP backend and ignored by the generic\n"
+" ldap backend.\n"
+"\n"
+" Please note that a server may close the connection if the nego-\n"
+" tiation does not succeed.\n"
+"\n"
+, stdout);
+ fputs(
+" This option was formerly known as --ftp-ssl. That option name\n"
+" can still be used but will be removed in a future version.\n"
+"\n"
+" Providing --ssl multiple times has no extra effect. Disable it\n"
+" again with --no-ssl.\n"
+"\n"
+" Example:\n"
+" curl --ssl pop3://example.com/\n"
+"\n"
+" See also --ssl-reqd, -k, --insecure and --ciphers.\n"
+"\n"
+" -2, --sslv2\n"
+, stdout);
+ fputs(
+" (SSL) This option previously asked curl to use SSLv2, but start-\n"
+" ing in curl 7.77.0 this instruction is ignored. SSLv2 is widely\n"
+" considered insecure (see RFC 6176).\n"
+"\n"
+" Providing --sslv2 multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
+" curl --sslv2 https://example.com\n"
+"\n"
+" See also --http1.1 and --http2. -2, --sslv2 requires that the\n"
+, stdout);
+ fputs(
+" underlying libcurl was built to support TLS. This option is mu-\n"
+" tually exclusive to -3, --sslv3 and -1, --tlsv1 and --tlsv1.1\n"
+" and --tlsv1.2.\n"
+"\n"
+" -3, --sslv3\n"
+" (SSL) This option previously asked curl to use SSLv3, but start-\n"
+" ing in curl 7.77.0 this instruction is ignored. SSLv3 is widely\n"
+" considered insecure (see RFC 7568).\n"
+"\n"
+" Providing --sslv3 multiple times has no extra effect.\n"
+"\n"
+, stdout);
+ fputs(
+" Example:\n"
+" curl --sslv3 https://example.com\n"
+"\n"
+" See also --http1.1 and --http2. -3, --sslv3 requires that the\n"
+" underlying libcurl was built to support TLS. This option is mu-\n"
+" tually exclusive to -2, --sslv2 and -1, --tlsv1 and --tlsv1.1\n"
+" and --tlsv1.2.\n"
+"\n"
+" --stderr <file>\n"
+" Redirect all writes to stderr to the specified file instead. If\n"
+, stdout);
+ fputs(
+" the file name is a plain '-', it is instead written to stdout.\n"
+"\n"
+" This option is global and does not need to be specified for each\n"
+" use of -:, --next.\n"
+"\n"
+" If --stderr is provided several times, the last set value will\n"
+" be used.\n"
+" Example:\n"
+" curl --stderr output.txt https://example.com\n"
+"\n"
+" See also -v, --verbose and -s, --silent.\n"
+"\n"
+" --styled-output\n"
+, stdout);
+ fputs(
+" Enables the automatic use of bold font styles when writing HTTP\n"
+" headers to the terminal. Use --no-styled-output to switch them\n"
+" off.\n"
+"\n"
+" This option is global and does not need to be specified for each\n"
+" use of -:, --next.\n"
+"\n"
+" Providing --styled-output multiple times has no extra effect.\n"
+" Disable it again with --no-styled-output.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --styled-output -I https://example.com\n"
+"\n"
+" See also -I, --head and -v, --verbose. Added in 7.61.0.\n"
+"\n"
+" --suppress-connect-headers\n"
+" When --proxytunnel is used and a CONNECT request is made do not\n"
+" output proxy CONNECT response headers. This option is meant to\n"
+" be used with --dump-header or --include which are used to show\n"
+" protocol headers in the output. It has no effect on debug op-\n"
+, stdout);
+ fputs(
+" tions such as --verbose or --trace, or any statistics.\n"
+"\n"
+" Providing --suppress-connect-headers multiple times has no extra\n"
+" effect. Disable it again with --no-suppress-connect-headers.\n"
+"\n"
+" Example:\n"
+" curl --suppress-connect-headers --include -x proxy https://example.com\n"
+"\n"
+" See also -D, --dump-header, -i, --include and -p, --proxytunnel.\n"
+" Added in 7.54.0.\n"
+"\n"
+" --tcp-fastopen\n"
+, stdout);
+ fputs(
+" Enable use of TCP Fast Open (RFC7413).\n"
+"\n"
+" Providing --tcp-fastopen multiple times has no extra effect.\n"
+" Disable it again with --no-tcp-fastopen.\n"
+"\n"
+" Example:\n"
+" curl --tcp-fastopen https://example.com\n"
+"\n"
+" See also --false-start. Added in 7.49.0.\n"
+"\n"
+" --tcp-nodelay\n"
+" Turn on the TCP_NODELAY option. See the curl_easy_setopt(3) man\n"
+" page for details about this option.\n"
+"\n"
+, stdout);
+ fputs(
+" Since 7.50.2, curl sets this option by default and you need to\n"
+" explicitly switch it off if you do not want it on.\n"
+"\n"
+" Providing --tcp-nodelay multiple times has no extra effect.\n"
+" Disable it again with --no-tcp-nodelay.\n"
+"\n"
+" Example:\n"
+" curl --tcp-nodelay https://example.com\n"
+"\n"
+" See also -N, --no-buffer.\n"
+"\n"
+" -t, --telnet-option <opt=val>\n"
+, stdout);
+ fputs(
+" Pass options to the telnet protocol. Supported options are:\n"
+"\n"
+" TTYPE=<term> Sets the terminal type.\n"
+"\n"
+" XDISPLOC=<X display> Sets the X display location.\n"
+"\n"
+" NEW_ENV=<var,val> Sets an environment variable.\n"
+"\n"
+" --telnet-option can be used several times in a command line\n"
+"\n"
+" Example:\n"
+" curl -t TTYPE=vt100 telnet://example.com/\n"
+"\n"
+" See also -K, --config.\n"
+" --tftp-blksize <value>\n"
+, stdout);
+ fputs(
+" (TFTP) Set TFTP BLKSIZE option (must be >512). This is the block\n"
+" size that curl will try to use when transferring data to or from\n"
+" a TFTP server. By default 512 bytes will be used.\n"
+"\n"
+" If --tftp-blksize is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --tftp-blksize 1024 tftp://example.com/file\n"
+"\n"
+" See also --tftp-no-options.\n"
+"\n"
+" --tftp-no-options\n"
+, stdout);
+ fputs(
+" (TFTP) Tells curl not to send TFTP options requests.\n"
+"\n"
+" This option improves interop with some legacy servers that do\n"
+" not acknowledge or properly implement TFTP options. When this\n"
+" option is used --tftp-blksize is ignored.\n"
+"\n"
+" Providing --tftp-no-options multiple times has no extra effect.\n"
+" Disable it again with --no-tftp-no-options.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl --tftp-no-options tftp://192.168.0.1/\n"
+"\n"
+" See also --tftp-blksize. Added in 7.48.0.\n"
+"\n"
+" -z, --time-cond <time>\n"
+" (HTTP FTP) Request a file that has been modified later than the\n"
+" given time and date, or one that has been modified before that\n"
+" time. The <date expression> can be all sorts of date strings or\n"
+" if it does not match any internal ones, it is taken as a file-\n"
+, stdout);
+ fputs(
+" name and tries to get the modification date (mtime) from <file>\n"
+" instead. See the curl_getdate(3) man pages for date expression\n"
+" details.\n"
+"\n"
+" Start the date expression with a dash (-) to make it request for\n"
+" a document that is older than the given date/time, default is a\n"
+" document that is newer than the specified date/time.\n"
+"\n"
+" If --time-cond is provided several times, the last set value\n"
+, stdout);
+ fputs(
+" will be used.\n"
+"\n"
+" Examples:\n"
+" curl -z \"Wed 01 Sep 2021 12:18:00\" https://example.com\n"
+" curl -z \"-Wed 01 Sep 2021 12:18:00\" https://example.com\n"
+" curl -z file https://example.com\n"
+"\n"
+" See also --etag-compare and -R, --remote-time.\n"
+"\n"
+" --tls-max <VERSION>\n"
+" (SSL) VERSION defines maximum supported TLS version. The minimum\n"
+" acceptable version is set by tlsv1.0, tlsv1.1, tlsv1.2 or\n"
+, stdout);
+ fputs(
+" tlsv1.3.\n"
+"\n"
+" If the connection is done without TLS, this option has no ef-\n"
+" fect. This includes QUIC-using (HTTP/3) transfers.\n"
+"\n"
+" default\n"
+" Use up to recommended TLS version.\n"
+"\n"
+" 1.0 Use up to TLSv1.0.\n"
+" 1.1 Use up to TLSv1.1.\n"
+" 1.2 Use up to TLSv1.2.\n"
+" 1.3 Use up to TLSv1.3.\n"
+"\n"
+" If --tls-max is provided several times, the last set value will be\n"
+, stdout);
+ fputs(
+" used.\n"
+"\n"
+" Examples:\n"
+" curl --tls-max 1.2 https://example.com\n"
+" curl --tls-max 1.3 --tlsv1.2 https://example.com\n"
+"\n"
+" See also --tlsv1.0, --tlsv1.1, --tlsv1.2 and --tlsv1.3. --tls-max re-\n"
+" quires that the underlying libcurl was built to support TLS. Added in\n"
+" 7.54.0.\n"
+"\n"
+" --tls13-ciphers <ciphersuite list>\n"
+" (TLS) Specifies which cipher suites to use in the connection if\n"
+, stdout);
+ fputs(
+" it negotiates TLS 1.3. The list of ciphers suites must specify\n"
+" valid ciphers. Read up on TLS 1.3 cipher suite details on this\n"
+" URL:\n"
+"\n"
+" https://curl.se/docs/ssl-ciphers.html\n"
+"\n"
+" This option is currently used only when curl is built to use\n"
+" OpenSSL 1.1.1 or later. If you are using a different SSL backend\n"
+" you can try setting TLS 1.3 cipher suites by using the --ciphers\n"
+" option.\n"
+"\n"
+, stdout);
+ fputs(
+" If --tls13-ciphers is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --tls13-ciphers TLS_AES_128_GCM_SHA256 https://example.com\n"
+"\n"
+" See also --ciphers and --curves. Added in 7.61.0.\n"
+"\n"
+" --tlsauthtype <type>\n"
+" Set TLS authentication type. Currently, the only supported op-\n"
+" tion is \"SRP\", for TLS-SRP (RFC 5054). If --tlsuser and\n"
+, stdout);
+ fputs(
+" --tlspassword are specified but --tlsauthtype is not, then this\n"
+" option defaults to \"SRP\". This option works only if the underly-\n"
+" ing libcurl is built with TLS-SRP support, which requires\n"
+" OpenSSL or GnuTLS with TLS-SRP support.\n"
+"\n"
+" If --tlsauthtype is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --tlsauthtype SRP https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also --tlsuser.\n"
+"\n"
+" --tlspassword <string>\n"
+" Set password for use with the TLS authentication method speci-\n"
+" fied with --tlsauthtype. Requires that --tlsuser also be set.\n"
+"\n"
+" This option does not work with TLS 1.3.\n"
+"\n"
+" If --tlspassword is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --tlspassword pwd --tlsuser user https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also --tlsuser.\n"
+"\n"
+" --tlsuser <name>\n"
+" Set username for use with the TLS authentication method speci-\n"
+" fied with --tlsauthtype. Requires that --tlspassword also is\n"
+" set.\n"
+"\n"
+" This option does not work with TLS 1.3.\n"
+"\n"
+" If --tlsuser is provided several times, the last set value will\n"
+" be used.\n"
+" Example:\n"
+" curl --tlspassword pwd --tlsuser user https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also --tlspassword.\n"
+"\n"
+" --tlsv1.0\n"
+" (TLS) Forces curl to use TLS version 1.0 or later when connect-\n"
+" ing to a remote TLS server.\n"
+"\n"
+" In old versions of curl this option was documented to allow\n"
+" _only_ TLS 1.0. That behavior was inconsistent depending on the\n"
+" TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
+" sion.\n"
+"\n"
+, stdout);
+ fputs(
+" Providing --tlsv1.0 multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
+" curl --tlsv1.0 https://example.com\n"
+"\n"
+" See also --tlsv1.3. Added in 7.34.0.\n"
+"\n"
+" --tlsv1.1\n"
+" (TLS) Forces curl to use TLS version 1.1 or later when connect-\n"
+" ing to a remote TLS server.\n"
+"\n"
+" In old versions of curl this option was documented to allow\n"
+" _only_ TLS 1.1. That behavior was inconsistent depending on the\n"
+, stdout);
+ fputs(
+" TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
+" sion.\n"
+"\n"
+" Providing --tlsv1.1 multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
+" curl --tlsv1.1 https://example.com\n"
+"\n"
+" See also --tlsv1.3 and --tls-max. Added in 7.34.0.\n"
+"\n"
+" --tlsv1.2\n"
+" (TLS) Forces curl to use TLS version 1.2 or later when connect-\n"
+" ing to a remote TLS server.\n"
+"\n"
+, stdout);
+ fputs(
+" In old versions of curl this option was documented to allow\n"
+" _only_ TLS 1.2. That behavior was inconsistent depending on the\n"
+" TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
+" sion.\n"
+"\n"
+" Providing --tlsv1.2 multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
+" curl --tlsv1.2 https://example.com\n"
+"\n"
+" See also --tlsv1.3 and --tls-max. Added in 7.34.0.\n"
+"\n"
+" --tlsv1.3\n"
+, stdout);
+ fputs(
+" (TLS) Forces curl to use TLS version 1.3 or later when connect-\n"
+" ing to a remote TLS server.\n"
+"\n"
+" If the connection is done without TLS, this option has no ef-\n"
+" fect. This includes QUIC-using (HTTP/3) transfers.\n"
+"\n"
+" Note that TLS 1.3 is not supported by all TLS backends.\n"
+" Providing --tlsv1.3 multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
+" curl --tlsv1.3 https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also --tlsv1.2 and --tls-max. Added in 7.52.0.\n"
+"\n"
+" -1, --tlsv1\n"
+" (SSL) Tells curl to use at least TLS version 1.x when negotiat-\n"
+" ing with a remote TLS server. That means TLS version 1.0 or\n"
+" higher\n"
+"\n"
+" Providing --tlsv1 multiple times has no extra effect.\n"
+"\n"
+" Example:\n"
+" curl --tlsv1 https://example.com\n"
+"\n"
+" See also --http1.1 and --http2. -1, --tlsv1 requires that the\n"
+, stdout);
+ fputs(
+" underlying libcurl was built to support TLS. This option is mu-\n"
+" tually exclusive to --tlsv1.1 and --tlsv1.2 and --tlsv1.3.\n"
+"\n"
+" --tr-encoding\n"
+" (HTTP) Request a compressed Transfer-Encoding response using one\n"
+" of the algorithms curl supports, and uncompress the data while\n"
+" receiving it.\n"
+"\n"
+" Providing --tr-encoding multiple times has no extra effect.\n"
+" Disable it again with --no-tr-encoding.\n"
+"\n"
+, stdout);
+ fputs(
+" Example:\n"
+" curl --tr-encoding https://example.com\n"
+"\n"
+" See also --compressed.\n"
+"\n"
+" --trace-ascii <file>\n"
+" Enables a full trace dump of all incoming and outgoing data, in-\n"
+" cluding descriptive information, to the given output file. Use\n"
+" \"-\" as filename to have the output sent to stdout.\n"
+"\n"
+" This is similar to --trace, but leaves out the hex part and only\n"
+, stdout);
+ fputs(
+" shows the ASCII part of the dump. It makes smaller output that\n"
+" might be easier to read for untrained humans.\n"
+"\n"
+" This option is global and does not need to be specified for each\n"
+" use of -:, --next.\n"
+"\n"
+" If --trace-ascii is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --trace-ascii log.txt https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also -v, --verbose and --trace. This option is mutually ex-\n"
+" clusive to --trace and -v, --verbose.\n"
+"\n"
+" --trace-time\n"
+" Prepends a time stamp to each trace or verbose line that curl\n"
+" displays.\n"
+"\n"
+" This option is global and does not need to be specified for each\n"
+" use of -:, --next.\n"
+"\n"
+" Providing --trace-time multiple times has no extra effect. Dis-\n"
+" able it again with --no-trace-time.\n"
+"\n"
+, stdout);
+ fputs(
+" Example:\n"
+" curl --trace-time --trace-ascii output https://example.com\n"
+"\n"
+" See also --trace and -v, --verbose.\n"
+"\n"
+" --trace <file>\n"
+" Enables a full trace dump of all incoming and outgoing data, in-\n"
+" cluding descriptive information, to the given output file. Use\n"
+" \"-\" as filename to have the output sent to stdout. Use \"%\" as\n"
+" filename to have the output sent to stderr.\n"
+"\n"
+, stdout);
+ fputs(
+" This option is global and does not need to be specified for each\n"
+" use of -:, --next.\n"
+"\n"
+" If --trace is provided several times, the last set value will be\n"
+" used.\n"
+"\n"
+" Example:\n"
+" curl --trace log.txt https://example.com\n"
+"\n"
+" See also --trace-ascii and --trace-time. This option is mutually\n"
+" exclusive to -v, --verbose and --trace-ascii.\n"
+"\n"
+" --unix-socket <path>\n"
+, stdout);
+ fputs(
+" (HTTP) Connect through this Unix domain socket, instead of using\n"
+" the network.\n"
+"\n"
+" If --unix-socket is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl --unix-socket socket-path https://example.com\n"
+"\n"
+" See also --abstract-unix-socket. Added in 7.40.0.\n"
+"\n"
+" -T, --upload-file <file>\n"
+" This transfers the specified local file to the remote URL. If\n"
+, stdout);
+ fputs(
+" there is no file part in the specified URL, curl will append the\n"
+" local file name. NOTE that you must use a trailing / on the last\n"
+" directory to really prove to Curl that there is no file name or\n"
+" curl will think that your last directory name is the remote file\n"
+" name to use. That will most likely cause the upload operation to\n"
+" fail. If this is used on an HTTP(S) server, the PUT command will\n"
+" be used.\n"
+"\n"
+, stdout);
+ fputs(
+" Use the file name \"-\" (a single dash) to use stdin instead of a\n"
+" given file. Alternately, the file name \".\" (a single period)\n"
+" may be specified instead of \"-\" to use stdin in non-blocking\n"
+" mode to allow reading server output while stdin is being up-\n"
+" loaded.\n"
+"\n"
+" You can specify one --upload-file for each URL on the command\n"
+" line. Each -T, --upload-file + URL pair specifies what to upload\n"
+, stdout);
+ fputs(
+" and to where. curl also supports \"globbing\" of the --upload-file\n"
+" argument, meaning that you can upload multiple files to a single\n"
+" URL by using the same URL globbing style supported in the URL.\n"
+"\n"
+" When uploading to an SMTP server: the uploaded data is assumed\n"
+" to be RFC 5322 formatted. It has to feature the necessary set of\n"
+" headers and mail body formatted correctly by the user as curl\n"
+, stdout);
+ fputs(
+" will not transcode nor encode it further in any way.\n"
+"\n"
+" --upload-file can be used several times in a command line\n"
+"\n"
+" Examples:\n"
+" curl -T file https://example.com\n"
+" curl -T \"img[1-1000].png\" ftp://ftp.example.com/\n"
+" curl --upload-file \"{file1,file2}\" https://example.com\n"
+"\n"
+" See also -G, --get and -I, --head.\n"
+"\n"
+" --url <url>\n"
+" Specify a URL to fetch. This option is mostly handy when you\n"
+, stdout);
+ fputs(
+" want to specify URL(s) in a config file.\n"
+"\n"
+" If the given URL is missing a scheme name (such as \"http://\" or\n"
+" \"ftp://\" etc) then curl will make a guess based on the host. If\n"
+" the outermost sub-domain name matches DICT, FTP, IMAP, LDAP,\n"
+" POP3 or SMTP then that protocol will be used, otherwise HTTP\n"
+" will be used. Since 7.45.0 guessing can be disabled by setting a\n"
+, stdout);
+ fputs(
+" default protocol, see --proto-default for details.\n"
+"\n"
+" To control where this URL is written, use the --output or the\n"
+" --remote-name options.\n"
+"\n"
+" WARNING: On Windows, particular file:// accesses can be con-\n"
+" verted to network accesses by the operating system. Beware!\n"
+"\n"
+" --url can be used several times in a command line\n"
+"\n"
+" Example:\n"
+" curl --url https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also -:, --next and -K, --config.\n"
+"\n"
+" -B, --use-ascii\n"
+" (FTP LDAP) Enable ASCII transfer. For FTP, this can also be en-\n"
+" forced by using a URL that ends with \";type=A\". This option\n"
+" causes data sent to stdout to be in text mode for win32 systems.\n"
+" Providing --use-ascii multiple times has no extra effect. Dis-\n"
+" able it again with --no-use-ascii.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl -B ftp://example.com/README\n"
+"\n"
+" See also --crlf and --data-ascii.\n"
+"\n"
+" -A, --user-agent <name>\n"
+" (HTTP) Specify the User-Agent string to send to the HTTP server.\n"
+" To encode blanks in the string, surround the string with single\n"
+" quote marks. This header can also be set with the --header or\n"
+" the --proxy-header options.\n"
+"\n"
+" If you give an empty argument to -A, --user-agent (\"\"), it will\n"
+, stdout);
+ fputs(
+" remove the header completely from the request. If you prefer a\n"
+" blank header, you can set it to a single space (\" \").\n"
+"\n"
+" If --user-agent is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+" curl -A \"Agent 007\" https://example.com\n"
+"\n"
+" See also -H, --header and --proxy-header.\n"
+"\n"
+" -u, --user <user:password>\n"
+, stdout);
+ fputs(
+" Specify the user name and password to use for server authentica-\n"
+" tion. Overrides --netrc and --netrc-optional.\n"
+"\n"
+" If you simply specify the user name, curl will prompt for a\n"
+" password.\n"
+"\n"
+" The user name and passwords are split up on the first colon,\n"
+" which makes it impossible to use a colon in the user name with\n"
+" this option. The password can, still.\n"
+"\n"
+, stdout);
+ fputs(
+" On systems where it works, curl will hide the given option argu-\n"
+" ment from process listings. This is not enough to protect cre-\n"
+" dentials from possibly getting seen by other users on the same\n"
+" system as they will still be visible for a moment before\n"
+" cleared. Such sensitive data should be retrieved from a file in-\n"
+" stead or similar and never used in clear text in a command line.\n"
+, stdout);
+ fputs(
+" When using Kerberos V5 with a Windows based server you should\n"
+" include the Windows domain name in the user name, in order for\n"
+" the server to successfully obtain a Kerberos Ticket. If you do\n"
+" not, then the initial authentication handshake may fail.\n"
+"\n"
+" When using NTLM, the user name can be specified simply as the\n"
+" user name, without the domain, if there is a single domain and\n"
+, stdout);
+ fputs(
+" forest in your setup for example.\n"
+"\n"
+" To specify the domain name use either Down-Level Logon Name or\n"
+" UPN (User Principal Name) formats. For example, EXAMPLE\\user and\n"
+" user@example.com respectively.\n"
+"\n"
+" If you use a Windows SSPI-enabled curl binary and perform Ker-\n"
+" beros V5, Negotiate, NTLM or Digest authentication then you can\n"
+" tell curl to select the user name and password from your envi-\n"
+, stdout);
+ fputs(
+" ronment by specifying a single colon with this option: \"-u :\".\n"
+"\n"
+" If --user is provided several times, the last set value will be\n"
+" used.\n"
+"\n"
+" Example:\n"
+" curl -u user:secret https://example.com\n"
+"\n"
+" See also -n, --netrc and -K, --config.\n"
+"\n"
+" -v, --verbose\n"
+" Makes curl verbose during the operation. Useful for debugging\n"
+" and seeing what's going on \"under the hood\". A line starting\n"
+, stdout);
+ fputs(
+" with '>' means \"header data\" sent by curl, '<' means \"header\n"
+" data\" received by curl that is hidden in normal cases, and a\n"
+" line starting with '*' means additional info provided by curl.\n"
+"\n"
+" If you only want HTTP headers in the output, --include might be\n"
+" the option you are looking for.\n"
+"\n"
+" If you think this option still does not give you enough details,\n"
+, stdout);
+ fputs(
+" consider using --trace or --trace-ascii instead.\n"
+"\n"
+" This option is global and does not need to be specified for each\n"
+" use of -:, --next.\n"
+"\n"
+" Use --silent to make curl really quiet.\n"
+"\n"
+" Providing --verbose multiple times has no extra effect. Disable\n"
+" it again with --no-verbose.\n"
+"\n"
+" Example:\n"
+" curl --verbose https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+" See also -i, --include. This option is mutually exclusive to\n"
+" --trace and --trace-ascii.\n"
+"\n"
+" -V, --version\n"
+" Displays information about curl and the libcurl version it uses.\n"
+" The first line includes the full version of curl, libcurl and\n"
+" other 3rd party libraries linked with the executable.\n"
+"\n"
+" The second line (starts with \"Protocols:\") shows all protocols\n"
+" that libcurl reports to support.\n"
+"\n"
+, stdout);
+ fputs(
+" The third line (starts with \"Features:\") shows specific features\n"
+" libcurl reports to offer. Available features include:\n"
+"\n"
+" alt-svc\n"
+" Support for the Alt-Svc: header is provided.\n"
+"\n"
+" AsynchDNS\n"
+" This curl uses asynchronous name resolves. Asynchronous\n"
+" name resolves can be done using either the c-ares or the\n"
+" threaded resolver backends.\n"
+"\n"
+, stdout);
+ fputs(
+" brotli Support for automatic brotli compression over HTTP(S).\n"
+"\n"
+" CharConv\n"
+" curl was built with support for character set conversions\n"
+" (like EBCDIC)\n"
+"\n"
+" Debug This curl uses a libcurl built with Debug. This enables\n"
+" more error-tracking and memory debugging etc. For curl-\n"
+" developers only!\n"
+"\n"
+" gsasl The built-in SASL authentication includes extensions to\n"
+, stdout);
+ fputs(
+" support SCRAM because libcurl was built with libgsasl.\n"
+"\n"
+" GSS-API\n"
+" GSS-API is supported.\n"
+"\n"
+" HSTS HSTS support is present.\n"
+"\n"
+" HTTP2 HTTP/2 support has been built-in.\n"
+" HTTP3 HTTP/3 support has been built-in.\n"
+"\n"
+" HTTPS-proxy\n"
+" This curl is built to support HTTPS proxy.\n"
+"\n"
+" IDN This curl supports IDN - international domain names.\n"
+"\n"
+, stdout);
+ fputs(
+" IPv6 You can use IPv6 with this.\n"
+"\n"
+" Kerberos\n"
+" Kerberos V5 authentication is supported.\n"
+"\n"
+" Largefile\n"
+" This curl supports transfers of large files, files larger\n"
+" than 2GB.\n"
+"\n"
+" libz Automatic decompression (via gzip, deflate) of compressed\n"
+" files over HTTP is supported.\n"
+"\n"
+" MultiSSL\n"
+" This curl supports multiple TLS backends.\n"
+"\n"
+, stdout);
+ fputs(
+" NTLM NTLM authentication is supported.\n"
+"\n"
+" NTLM_WB\n"
+" NTLM delegation to winbind helper is supported.\n"
+"\n"
+" PSL PSL is short for Public Suffix List and means that this\n"
+" curl has been built with knowledge about \"public suf-\n"
+" fixes\".\n"
+"\n"
+" SPNEGO SPNEGO authentication is supported.\n"
+"\n"
+" SSL SSL versions of various protocols are supported, such as\n"
+, stdout);
+ fputs(
+" HTTPS, FTPS, POP3S and so on.\n"
+"\n"
+" SSPI SSPI is supported.\n"
+"\n"
+" TLS-SRP\n"
+" SRP (Secure Remote Password) authentication is supported\n"
+" for TLS.\n"
+"\n"
+" TrackMemory\n"
+" Debug memory tracking is supported.\n"
+"\n"
+" Unicode\n"
+" Unicode support on Windows.\n"
+"\n"
+" UnixSockets\n"
+" Unix sockets support is provided.\n"
+"\n"
+, stdout);
+ fputs(
+" zstd Automatic decompression (via zstd) of compressed files\n"
+" over HTTP is supported.\n"
+"\n"
+" Providing --version multiple times has no extra effect. Disable it\n"
+" again with --no-version.\n"
+"\n"
+" Example:\n"
+" curl --version\n"
+"\n"
+" See also -h, --help and -M, --manual.\n"
+"\n"
+" -w, --write-out <format>\n"
+" Make curl display information on stdout after a completed trans-\n"
+, stdout);
+ fputs(
+" fer. The format is a string that may contain plain text mixed\n"
+" with any number of variables. The format can be specified as a\n"
+" literal \"string\", or you can have curl read the format from a\n"
+" file with \"@filename\" and to tell curl to read the format from\n"
+" stdin you write \"@-\".\n"
+"\n"
+" The variables present in the output format will be substituted\n"
+, stdout);
+ fputs(
+" by the value or text that curl thinks fit, as described below.\n"
+" All variables are specified as %{variable_name} and to output a\n"
+" normal % you just write them as %%. You can output a newline by\n"
+" using \\n, a carriage return with \\r and a tab space with \\t.\n"
+"\n"
+" The output will be written to standard output, but this can be\n"
+" switched to standard error by using %{stderr}.\n"
+"\n"
+, stdout);
+ fputs(
+" Output HTTP headers from the most recent request by using\n"
+" %header{name} where name is the case insensitive name of the\n"
+" header (without the trailing colon). The header contents are ex-\n"
+" actly as sent over the network, with leading and trailing white-\n"
+" space trimmed. Added in curl 7.84.0.\n"
+"\n"
+" NOTE: The %-symbol is a special symbol in the win32-environment,\n"
+, stdout);
+ fputs(
+" where all occurrences of % must be doubled when using this op-\n"
+" tion.\n"
+"\n"
+" The variables available are:\n"
+"\n"
+" content_type The Content-Type of the requested document, if\n"
+" there was any.\n"
+"\n"
+" errormsg The error message. (Added in 7.75.0)\n"
+"\n"
+" exitcode The numerical exitcode of the transfer. (Added in\n"
+" 7.75.0)\n"
+"\n"
+" filename_effective\n"
+, stdout);
+ fputs(
+" The ultimate filename that curl writes out to.\n"
+" This is only meaningful if curl is told to write\n"
+" to a file with the --remote-name or --output op-\n"
+" tion. It's most useful in combination with the\n"
+" --remote-header-name option.\n"
+"\n"
+" ftp_entry_path The initial path curl ended up in when logging on\n"
+, stdout);
+ fputs(
+" to the remote FTP server.\n"
+"\n"
+" header_json A JSON object with all HTTP response headers from\n"
+" the recent transfer. Values are provided as ar-\n"
+" rays, since in the case of multiple headers there\n"
+" can be multiple values.\n"
+"\n"
+" The header names provided in lowercase, listed in\n"
+, stdout);
+ fputs(
+" order of appearance over the wire. Except for du-\n"
+" plicated headers. They are grouped on the first\n"
+" occurrence of that header, each value is pre-\n"
+" sented in the JSON array.\n"
+"\n"
+" http_code The numerical response code that was found in the\n"
+" last retrieved HTTP(S) or FTP(s) transfer.\n"
+"\n"
+, stdout);
+ fputs(
+" http_connect The numerical code that was found in the last re-\n"
+" sponse (from a proxy) to a curl CONNECT request.\n"
+"\n"
+" http_version The http version that was effectively used.\n"
+" (Added in 7.50.0)\n"
+"\n"
+" json A JSON object with all available keys.\n"
+"\n"
+" local_ip The IP address of the local end of the most re-\n"
+, stdout);
+ fputs(
+" cently done connection - can be either IPv4 or\n"
+" IPv6.\n"
+"\n"
+" local_port The local port number of the most recently done\n"
+" connection.\n"
+"\n"
+" method The http method used in the most recent HTTP re-\n"
+" quest. (Added in 7.72.0)\n"
+"\n"
+" num_connects Number of new connects made in the recent trans-\n"
+" fer.\n"
+"\n"
+, stdout);
+ fputs(
+" num_headers The number of response headers in the most recent\n"
+" request (restarted at each redirect). Note that\n"
+" the status line IS NOT a header. (Added in\n"
+" 7.73.0)\n"
+"\n"
+" num_redirects Number of redirects that were followed in the re-\n"
+" quest.\n"
+"\n"
+" onerror The rest of the output is only shown if the\n"
+, stdout);
+ fputs(
+" transfer returned a non-zero error (Added in\n"
+" 7.75.0)\n"
+"\n"
+" proxy_ssl_verify_result\n"
+" The result of the HTTPS proxy's SSL peer certifi-\n"
+" cate verification that was requested. 0 means the\n"
+" verification was successful. (Added in 7.52.0)\n"
+"\n"
+" redirect_url When an HTTP request was made without --location\n"
+, stdout);
+ fputs(
+" to follow redirects (or when --max-redirs is\n"
+" met), this variable will show the actual URL a\n"
+" redirect would have gone to.\n"
+"\n"
+" referer The Referer: header, if there was any. (Added in\n"
+" 7.76.0)\n"
+"\n"
+" remote_ip The remote IP address of the most recently done\n"
+" connection - can be either IPv4 or IPv6.\n"
+"\n"
+, stdout);
+ fputs(
+" remote_port The remote port number of the most recently done\n"
+" connection.\n"
+"\n"
+" response_code The numerical response code that was found in the\n"
+" last transfer (formerly known as \"http_code\").\n"
+"\n"
+" scheme The URL scheme (sometimes called protocol) that\n"
+" was effectively used. (Added in 7.52.0)\n"
+"\n"
+, stdout);
+ fputs(
+" size_download The total amount of bytes that were downloaded.\n"
+" This is the size of the body/data that was trans-\n"
+" ferred, excluding headers.\n"
+"\n"
+" size_header The total amount of bytes of the downloaded head-\n"
+" ers.\n"
+"\n"
+" size_request The total amount of bytes that were sent in the\n"
+" HTTP request.\n"
+"\n"
+, stdout);
+ fputs(
+" size_upload The total amount of bytes that were uploaded.\n"
+" This is the size of the body/data that was trans-\n"
+" ferred, excluding headers.\n"
+"\n"
+" speed_download The average download speed that curl measured for\n"
+" the complete download. Bytes per second.\n"
+"\n"
+" speed_upload The average upload speed that curl measured for\n"
+, stdout);
+ fputs(
+" the complete upload. Bytes per second.\n"
+"\n"
+" ssl_verify_result\n"
+" The result of the SSL peer certificate verifica-\n"
+" tion that was requested. 0 means the verification\n"
+" was successful.\n"
+"\n"
+" stderr From this point on, the --write-out output will\n"
+" be written to standard error. (Added in 7.63.0)\n"
+"\n"
+, stdout);
+ fputs(
+" stdout From this point on, the --write-out output will\n"
+" be written to standard output. This is the de-\n"
+" fault, but can be used to switch back after\n"
+" switching to stderr. (Added in 7.63.0)\n"
+"\n"
+" time_appconnect\n"
+" The time, in seconds, it took from the start un-\n"
+" til the SSL/SSH/etc connect/handshake to the re-\n"
+, stdout);
+ fputs(
+" mote host was completed.\n"
+"\n"
+" time_connect The time, in seconds, it took from the start un-\n"
+" til the TCP connect to the remote host (or proxy)\n"
+" was completed.\n"
+"\n"
+" time_namelookup\n"
+" The time, in seconds, it took from the start un-\n"
+" til the name resolving was completed.\n"
+"\n"
+" time_pretransfer\n"
+, stdout);
+ fputs(
+" The time, in seconds, it took from the start un-\n"
+" til the file transfer was just about to begin.\n"
+" This includes all pre-transfer commands and nego-\n"
+" tiations that are specific to the particular pro-\n"
+" tocol(s) involved.\n"
+"\n"
+" time_redirect The time, in seconds, it took for all redirection\n"
+, stdout);
+ fputs(
+" steps including name lookup, connect, pretransfer\n"
+" and transfer before the final transaction was\n"
+" started. time_redirect shows the complete execu-\n"
+" tion time for multiple redirections.\n"
+"\n"
+" time_starttransfer\n"
+" The time, in seconds, it took from the start un-\n"
+" til the first byte was just about to be trans-\n"
+, stdout);
+ fputs(
+" ferred. This includes time_pretransfer and also\n"
+" the time the server needed to calculate the re-\n"
+" sult.\n"
+"\n"
+" time_total The total time, in seconds, that the full opera-\n"
+" tion lasted.\n"
+"\n"
+" url The URL that was fetched. (Added in 7.75.0)\n"
+"\n"
+" urlnum The URL index number of this transfer, 0-indexed.\n"
+, stdout);
+ fputs(
+" De-globbed URLs share the same index number as\n"
+" the origin globbed URL. (Added in 7.75.0)\n"
+"\n"
+" url_effective The URL that was fetched last. This is most mean-\n"
+" ingful if you have told curl to follow location:\n"
+" headers.\n"
+"\n"
+" If --write-out is provided several times, the last set value\n"
+" will be used.\n"
+"\n"
+" Example:\n"
+, stdout);
+ fputs(
+" curl -w '%{http_code}\\n' https://example.com\n"
+"\n"
+" See also -v, --verbose and -I, --head.\n"
+"\n"
+" --xattr\n"
+" When saving output to a file, this option tells curl to store\n"
+" certain file metadata in extended file attributes. Currently,\n"
+" the URL is stored in the xdg.origin.url attribute and, for HTTP,\n"
+" the content type is stored in the mime_type attribute. If the\n"
+, stdout);
+ fputs(
+" file system does not support extended attributes, a warning is\n"
+" issued.\n"
+"\n"
+" Providing --xattr multiple times has no extra effect. Disable\n"
+" it again with --no-xattr.\n"
+"\n"
+" Example:\n"
+" curl --xattr -o storage https://example.com\n"
+"\n"
+" See also -R, --remote-time, -w, --write-out and -v, --verbose.\n"
+"\n"
+"FILES\n"
+" ~/.curlrc\n"
+" Default config file, see --config for details.\n"
+"\n"
+"ENVIRONMENT\n"
+, stdout);
+ fputs(
+" The environment variables can be specified in lower case or upper case.\n"
+" The lower case version has precedence. http_proxy is an exception as it\n"
+" is only available in lower case.\n"
+"\n"
+" Using an environment variable to set the proxy has the same effect as\n"
+" using the --proxy option.\n"
+"\n"
+" http_proxy [protocol://]<host>[:port]\n"
+" Sets the proxy server to use for HTTP.\n"
+" HTTPS_PROXY [protocol://]<host>[:port]\n"
+, stdout);
+ fputs(
+" Sets the proxy server to use for HTTPS.\n"
+"\n"
+" [url-protocol]_PROXY [protocol://]<host>[:port]\n"
+" Sets the proxy server to use for [url-protocol], where the pro-\n"
+" tocol is a protocol that curl supports and as specified in a\n"
+" URL. FTP, FTPS, POP3, IMAP, SMTP, LDAP, etc.\n"
+"\n"
+" ALL_PROXY [protocol://]<host>[:port]\n"
+" Sets the proxy server to use if no protocol-specific proxy is\n"
+" set.\n"
+"\n"
+, stdout);
+ fputs(
+" NO_PROXY <comma-separated list of hosts/domains>\n"
+" list of host names that should not go through any proxy. If set\n"
+" to an asterisk '*' only, it matches all hosts. Each name in this\n"
+" list is matched as either a domain name which contains the host-\n"
+" name, or the hostname itself.\n"
+"\n"
+" This environment variable disables use of the proxy even when\n"
+" specified with the --proxy option. That is NO_PROXY=direct.exam-\n"
+, stdout);
+ fputs(
+" ple.com curl -x http://proxy.example.com http://direct.exam-\n"
+" ple.com accesses the target URL directly, and NO_PROXY=di-\n"
+" rect.example.com curl -x http://proxy.example.com http://some-\n"
+" where.example.com accesses the target URL through the proxy.\n"
+"\n"
+" The list of host names can also be include numerical IP ad-\n"
+" dresses, and IPv6 versions should then be given without enclos-\n"
+" ing brackets.\n"
+"\n"
+, stdout);
+ fputs(
+" IPv6 numerical addresses are compared as strings, so they will\n"
+" only match if the representations are the same: \"::1\" is the\n"
+" same as \"::0:1\" but they do not match.\n"
+"\n"
+" APPDATA <dir>\n"
+" On Windows, this variable is used when trying to find the home\n"
+" directory. If the primary home variable are all unset.\n"
+"\n"
+" COLUMNS <terminal width>\n"
+" If set, the specified number of characters will be used as the\n"
+, stdout);
+ fputs(
+" terminal width when the alternative progress-bar is shown. If\n"
+" not set, curl will try to figure it out using other ways.\n"
+"\n"
+" CURL_CA_BUNDLE <file>\n"
+" If set, will be used as the --cacert value.\n"
+"\n"
+" CURL_HOME <dir>\n"
+" If set, is the first variable curl checks when trying to find\n"
+" its home directory. If not set, it continues to check XDG_CON-\n"
+" FIG_HOME.\n"
+"\n"
+" CURL_SSL_BACKEND <TLS backend>\n"
+, stdout);
+ fputs(
+" If curl was built with support for \"MultiSSL\", meaning that it\n"
+" has built-in support for more than one TLS backend, this envi-\n"
+" ronment variable can be set to the case insensitive name of the\n"
+" particular backend to use when curl is invoked. Setting a name\n"
+" that is not a built-in alternative will make curl stay with the\n"
+" default.\n"
+"\n"
+" SSL backend names (case-insensitive): bearssl, gnutls, gskit,\n"
+, stdout);
+ fputs(
+" mbedtls, nss, openssl, rustls, schannel, secure-transport, wolf-\n"
+" ssl\n"
+"\n"
+" HOME <dir>\n"
+" If set, this is used to find the home directory when that is\n"
+" needed. Like when looking for the default .curlrc. CURL_HOME and\n"
+" XDG_CONFIG_HOME have preference.\n"
+"\n"
+" QLOGDIR <directory name>\n"
+" If curl was built with HTTP/3 support, setting this environment\n"
+, stdout);
+ fputs(
+" variable to a local directory will make curl produce qlogs in\n"
+" that directory, using file names named after the destination\n"
+" connection id (in hex). Do note that these files can become\n"
+" rather large. Works with both QUIC backends.\n"
+"\n"
+" SHELL Used on VMS when trying to detect if using a DCL or a \"unix\"\n"
+" shell.\n"
+"\n"
+" SSL_CERT_DIR <dir>\n"
+" If set, will be used as the --capath value.\n"
+"\n"
+, stdout);
+ fputs(
+" SSL_CERT_FILE <path>\n"
+" If set, will be used as the --cacert value.\n"
+"\n"
+" SSLKEYLOGFILE <file name>\n"
+" If you set this environment variable to a file name, curl will\n"
+" store TLS secrets from its connections in that file when invoked\n"
+" to enable you to analyze the TLS traffic in real time using net-\n"
+" work analyzing tools such as Wireshark. This works with the fol-\n"
+, stdout);
+ fputs(
+" lowing TLS backends: OpenSSL, libressl, BoringSSL, GnuTLS, NSS\n"
+" and wolfSSL.\n"
+"\n"
+" USERPROFILE <dir>\n"
+" On Windows, this variable is used when trying to find the home\n"
+" directory. If the other, primary, variable are all unset. If\n"
+" set, curl will use the path \"$USERPROFILE\\Application Data\".\n"
+"\n"
+" XDG_CONFIG_HOME <dir>\n"
+" If CURL_HOME is not set, this variable is checked when looking\n"
+, stdout);
+ fputs(
+" for a default .curlrc file.\n"
+"\n"
+"PROXY PROTOCOL PREFIXES\n"
+" The proxy string may be specified with a protocol:// prefix to specify\n"
+" alternative proxy protocols.\n"
+"\n"
+" If no protocol is specified in the proxy string or if the string does\n"
+" not match a supported one, the proxy will be treated as an HTTP proxy.\n"
+"\n"
+" The supported proxy protocol prefixes are as follows:\n"
+"\n"
+" http://\n"
+" Makes it use it as an HTTP proxy. The default if no scheme pre-\n"
+, stdout);
+ fputs(
+" fix is used.\n"
+"\n"
+" https://\n"
+" Makes it treated as an HTTPS proxy.\n"
+"\n"
+" socks4://\n"
+" Makes it the equivalent of --socks4\n"
+"\n"
+" socks4a://\n"
+" Makes it the equivalent of --socks4a\n"
+"\n"
+" socks5://\n"
+" Makes it the equivalent of --socks5\n"
+"\n"
+" socks5h://\n"
+" Makes it the equivalent of --socks5-hostname\n"
+"\n"
+"EXIT CODES\n"
+" There are a bunch of different error codes and their corresponding er-\n"
+, stdout);
+ fputs(
+" ror messages that may appear under error conditions. At the time of\n"
+" this writing, the exit codes are:\n"
+"\n"
+" 0 Success. The operation completed successfully according to the\n"
+" instructions.\n"
+"\n"
+" 1 Unsupported protocol. This build of curl has no support for this\n"
+" protocol.\n"
+"\n"
+" 2 Failed to initialize.\n"
+"\n"
+" 3 URL malformed. The syntax was not correct.\n"
+"\n"
+, stdout);
+ fputs(
+" 4 A feature or option that was needed to perform the desired re-\n"
+" quest was not enabled or was explicitly disabled at build-time.\n"
+" To make curl able to do this, you probably need another build of\n"
+" libcurl.\n"
+"\n"
+" 5 Could not resolve proxy. The given proxy host could not be re-\n"
+" solved.\n"
+"\n"
+" 6 Could not resolve host. The given remote host could not be re-\n"
+" solved.\n"
+"\n"
+, stdout);
+ fputs(
+" 7 Failed to connect to host.\n"
+"\n"
+" 8 Weird server reply. The server sent data curl could not parse.\n"
+"\n"
+" 9 FTP access denied. The server denied login or denied access to\n"
+" the particular resource or directory you wanted to reach. Most\n"
+" often you tried to change to a directory that does not exist on\n"
+" the server.\n"
+"\n"
+" 10 FTP accept failed. While waiting for the server to connect back\n"
+, stdout);
+ fputs(
+" when an active FTP session is used, an error code was sent over\n"
+" the control connection or similar.\n"
+"\n"
+" 11 FTP weird PASS reply. Curl could not parse the reply sent to the\n"
+" PASS request.\n"
+"\n"
+" 12 During an active FTP session while waiting for the server to\n"
+" connect back to curl, the timeout expired.\n"
+"\n"
+" 13 FTP weird PASV reply, Curl could not parse the reply sent to the\n"
+" PASV request.\n"
+"\n"
+, stdout);
+ fputs(
+" 14 FTP weird 227 format. Curl could not parse the 227-line the\n"
+" server sent.\n"
+"\n"
+" 15 FTP cannot use host. Could not resolve the host IP we got in the\n"
+" 227-line.\n"
+"\n"
+" 16 HTTP/2 error. A problem was detected in the HTTP2 framing layer.\n"
+" This is somewhat generic and can be one out of several problems,\n"
+" see the error message for details.\n"
+"\n"
+" 17 FTP could not set binary. Could not change transfer method to\n"
+, stdout);
+ fputs(
+" binary.\n"
+"\n"
+" 18 Partial file. Only a part of the file was transferred.\n"
+"\n"
+" 19 FTP could not download/access the given file, the RETR (or simi-\n"
+" lar) command failed.\n"
+"\n"
+" 21 FTP quote error. A quote command returned error from the server.\n"
+" 22 HTTP page not retrieved. The requested URL was not found or re-\n"
+" turned another error with the HTTP error code being 400 or\n"
+, stdout);
+ fputs(
+" above. This return code only appears if --fail is used.\n"
+"\n"
+" 23 Write error. Curl could not write data to a local filesystem or\n"
+" similar.\n"
+"\n"
+" 25 FTP could not STOR file. The server denied the STOR operation,\n"
+" used for FTP uploading.\n"
+"\n"
+" 26 Read error. Various reading problems.\n"
+"\n"
+" 27 Out of memory. A memory allocation request failed.\n"
+"\n"
+" 28 Operation timeout. The specified time-out period was reached ac-\n"
+, stdout);
+ fputs(
+" cording to the conditions.\n"
+"\n"
+" 30 FTP PORT failed. The PORT command failed. Not all FTP servers\n"
+" support the PORT command, try doing a transfer using PASV in-\n"
+" stead!\n"
+"\n"
+" 31 FTP could not use REST. The REST command failed. This command is\n"
+" used for resumed FTP transfers.\n"
+"\n"
+" 33 HTTP range error. The range \"command\" did not work.\n"
+"\n"
+" 34 HTTP post error. Internal post-request generation error.\n"
+"\n"
+, stdout);
+ fputs(
+" 35 SSL connect error. The SSL handshaking failed.\n"
+"\n"
+" 36 Bad download resume. Could not continue an earlier aborted down-\n"
+" load.\n"
+"\n"
+" 37 FILE could not read file. Failed to open the file. Permissions?\n"
+"\n"
+" 38 LDAP cannot bind. LDAP bind operation failed.\n"
+"\n"
+" 39 LDAP search failed.\n"
+"\n"
+" 41 Function not found. A required LDAP function was not found.\n"
+"\n"
+" 42 Aborted by callback. An application told curl to abort the oper-\n"
+, stdout);
+ fputs(
+" ation.\n"
+"\n"
+" 43 Internal error. A function was called with a bad parameter.\n"
+"\n"
+" 45 Interface error. A specified outgoing interface could not be\n"
+" used.\n"
+"\n"
+" 47 Too many redirects. When following redirects, curl hit the maxi-\n"
+" mum amount.\n"
+"\n"
+" 48 Unknown option specified to libcurl. This indicates that you\n"
+" passed a weird option to curl that was passed on to libcurl and\n"
+, stdout);
+ fputs(
+" rejected. Read up in the manual!\n"
+"\n"
+" 49 Malformed telnet option.\n"
+"\n"
+" 52 The server did not reply anything, which here is considered an\n"
+" error.\n"
+"\n"
+" 53 SSL crypto engine not found.\n"
+"\n"
+" 54 Cannot set SSL crypto engine as default.\n"
+"\n"
+" 55 Failed sending network data.\n"
+"\n"
+" 56 Failure in receiving network data.\n"
+"\n"
+" 58 Problem with the local certificate.\n"
+" 59 Could not use specified SSL cipher.\n"
+"\n"
+, stdout);
+ fputs(
+" 60 Peer certificate cannot be authenticated with known CA certifi-\n"
+" cates.\n"
+"\n"
+" 61 Unrecognized transfer encoding.\n"
+"\n"
+" 63 Maximum file size exceeded.\n"
+"\n"
+" 64 Requested FTP SSL level failed.\n"
+"\n"
+" 65 Sending the data requires a rewind that failed.\n"
+"\n"
+" 66 Failed to initialise SSL Engine.\n"
+"\n"
+" 67 The user name, password, or similar was not accepted and curl\n"
+" failed to log in.\n"
+"\n"
+, stdout);
+ fputs(
+" 68 File not found on TFTP server.\n"
+"\n"
+" 69 Permission problem on TFTP server.\n"
+"\n"
+" 70 Out of disk space on TFTP server.\n"
+"\n"
+" 71 Illegal TFTP operation.\n"
+"\n"
+" 72 Unknown TFTP transfer ID.\n"
+"\n"
+" 73 File already exists (TFTP).\n"
+"\n"
+" 74 No such user (TFTP).\n"
+"\n"
+" 77 Problem reading the SSL CA cert (path? access rights?).\n"
+"\n"
+" 78 The resource referenced in the URL does not exist.\n"
+"\n"
+, stdout);
+ fputs(
+" 79 An unspecified error occurred during the SSH session.\n"
+"\n"
+" 80 Failed to shut down the SSL connection.\n"
+"\n"
+" 82 Could not load CRL file, missing or wrong format.\n"
+"\n"
+" 83 Issuer check failed.\n"
+"\n"
+" 84 The FTP PRET command failed.\n"
+"\n"
+" 85 Mismatch of RTSP CSeq numbers.\n"
+"\n"
+" 86 Mismatch of RTSP Session Identifiers.\n"
+"\n"
+" 87 Unable to parse FTP file list.\n"
+"\n"
+" 88 FTP chunk callback reported error.\n"
+"\n"
+, stdout);
+ fputs(
+" 89 No connection available, the session will be queued.\n"
+"\n"
+" 90 SSL public key does not matched pinned public key.\n"
+"\n"
+" 91 Invalid SSL certificate status.\n"
+"\n"
+" 92 Stream error in HTTP/2 framing layer.\n"
+"\n"
+" 93 An API function was called from inside a callback.\n"
+"\n"
+" 94 An authentication function returned an error.\n"
+"\n"
+" 95 A problem was detected in the HTTP/3 layer. This is somewhat\n"
+, stdout);
+ fputs(
+" generic and can be one out of several problems, see the error\n"
+" message for details.\n"
+"\n"
+" 96 QUIC connection error. This error may be caused by an SSL li-\n"
+" brary error. QUIC is the protocol used for HTTP/3 transfers.\n"
+"\n"
+" XX More error codes will appear here in future releases. The exist-\n"
+" ing ones are meant to never change.\n"
+"\n"
+"BUGS\n"
+" If you experience any problems with curl, submit an issue in the\n"
+, stdout);
+ fputs(
+" project's bug tracker on GitHub: https://github.com/curl/curl/issues\n"
+"\n"
+"AUTHORS / CONTRIBUTORS\n"
+" Daniel Stenberg is the main author, but the whole list of contributors\n"
+" is found in the separate THANKS file.\n"
+"\n"
+"WWW\n"
+" https://curl.se\n"
+"\n"
+"SEE ALSO\n"
+" ftp(1), wget(1)\n"
+"\n"
+, stdout) ;
+}
+#endif /* USE_MANUAL */
+#else
+/*
+ * NEVER EVER edit this manually, fix the mkhelp.pl script instead!
+ */
+#ifdef USE_MANUAL
+#include "tool_hugehelp.h"
+#include <zlib.h>
+#include "memdebug.h" /* keep this as LAST include */
+static const unsigned char hugehelpgz[] = {
+ /* This mumbo-jumbo is the huge help text compressed with gzip.
+ Thanks to this operation, the size of this data shrank from 253328
+ to 63131 bytes. You can disable the use of compressed help
+ texts by NOT passing -c to the mkhelp.pl tool. */
+ 0x1f, 0x8b, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xec, 0xfd,
+ 0x7b, 0x7b, 0xdb, 0xc6, 0xb5, 0x37, 0x0c, 0xff, 0x9f, 0x4f, 0x81, 0xcd,
+ 0xbe, 0xbd, 0x25, 0xb5, 0x04, 0x75, 0xf2, 0x21, 0x51, 0x95, 0x3c, 0x51,
+ 0x64, 0x39, 0x76, 0x2b, 0x5b, 0xaa, 0x29, 0x37, 0xe9, 0x4e, 0x72, 0xf9,
+ 0x02, 0x49, 0x50, 0x42, 0x4c, 0x12, 0x2c, 0x00, 0xea, 0x90, 0xee, 0x3e,
+ 0x9f, 0xfd, 0x5d, 0xc7, 0x99, 0x01, 0x66, 0x40, 0x8a, 0xb2, 0x5d, 0x77,
+ 0xbf, 0xef, 0xdd, 0xbd, 0x63, 0x49, 0x24, 0x30, 0xc7, 0x35, 0x6b, 0xd6,
+ 0xf1, 0xb7, 0xa2, 0x68, 0xd5, 0xff, 0xde, 0xd1, 0x7f, 0xef, 0xe0, 0x7f,
+ 0xf0, 0xf3, 0x8b, 0x28, 0x3a, 0x2f, 0xf2, 0x5f, 0xd3, 0x61, 0x15, 0x7e,
+ 0xf6, 0xdd, 0xbb, 0xff, 0x89, 0xf8, 0xff, 0xe0, 0x9d, 0x9f, 0xe1, 0xe7,
+ 0x17, 0x4b, 0xdb, 0xde, 0x8e, 0xec, 0x0b, 0xff, 0xf3, 0x6e, 0x2b, 0x5a,
+ 0xf5, 0xc2, 0xff, 0x44, 0x9b, 0xf4, 0xc2, 0x3b, 0xe9, 0xe1, 0x10, 0x7f,
+ 0x7f, 0xf7, 0x6e, 0x79, 0x27, 0x3f, 0xe3, 0xa8, 0xf0, 0x9f, 0x6d, 0x7c,
+ 0xef, 0xe7, 0x77, 0xf8, 0x2b, 0x7c, 0xf2, 0xc5, 0x17, 0xaf, 0x8f, 0x5e,
+ 0x9d, 0xe8, 0xab, 0xc3, 0x45, 0x31, 0x89, 0xe2, 0xa8, 0x2a, 0x92, 0x59,
+ 0x39, 0x4e, 0x8b, 0x28, 0x89, 0xde, 0xbe, 0x39, 0xfd, 0xe2, 0x8b, 0xfe,
+ 0xdf, 0x5f, 0x9f, 0x9d, 0xf7, 0x5f, 0xf6, 0x6b, 0x8f, 0xfd, 0x94, 0xcf,
+ 0xab, 0x2c, 0x9f, 0x95, 0x30, 0x7c, 0x78, 0xa8, 0xfc, 0xe5, 0x8b, 0x2f,
+ 0x9e, 0x9d, 0xf4, 0x8f, 0xdf, 0xbc, 0x3c, 0xbf, 0x78, 0x79, 0xf6, 0xba,
+ 0xf6, 0x64, 0x94, 0x95, 0x11, 0x34, 0x55, 0xe5, 0xf9, 0x24, 0x1a, 0xe7,
+ 0x85, 0x69, 0xbe, 0xc8, 0x66, 0x97, 0xd1, 0x28, 0xa9, 0x92, 0x68, 0x5c,
+ 0xe4, 0xd3, 0x08, 0xbf, 0xc9, 0xe1, 0xb9, 0x32, 0x2d, 0xae, 0xd3, 0xa2,
+ 0x17, 0xbd, 0xac, 0xa2, 0x72, 0x31, 0x9f, 0xe7, 0x45, 0x55, 0x6a, 0x73,
+ 0xd5, 0x55, 0x5a, 0xa6, 0xd1, 0xbc, 0xc8, 0xab, 0x7c, 0x98, 0x4f, 0xca,
+ 0x83, 0xe8, 0xd9, 0xcb, 0xe3, 0x8b, 0x6e, 0xf4, 0xfc, 0xe5, 0xe9, 0x09,
+ 0xfc, 0x7b, 0x71, 0x4e, 0xff, 0xf4, 0xbb, 0xd1, 0xf7, 0x67, 0xe7, 0x2f,
+ 0x4e, 0xde, 0xe8, 0x4f, 0xf8, 0x20, 0x7a, 0x71, 0x81, 0xdf, 0xd2, 0x8f,
+ 0x7e, 0x57, 0x9b, 0x7b, 0xf9, 0xea, 0x08, 0x3f, 0xc4, 0x1f, 0xf8, 0xcc,
+ 0xe9, 0x33, 0xfa, 0x13, 0x7f, 0xc0, 0x9f, 0xaf, 0xfe, 0x7a, 0x01, 0x4d,
+ 0x9f, 0x9f, 0x9d, 0xef, 0xf3, 0xbf, 0xf0, 0xd1, 0x9b, 0x8b, 0x57, 0xe7,
+ 0xfc, 0x2f, 0xfd, 0xd1, 0x87, 0x3f, 0xfa, 0xc7, 0xe7, 0xa6, 0xb9, 0x3e,
+ 0x8d, 0xa0, 0xff, 0xea, 0x3b, 0xfa, 0xa7, 0x8f, 0xff, 0xf2, 0x07, 0x34,
+ 0xa6, 0x8b, 0x93, 0xd3, 0xd7, 0x27, 0xd0, 0xe2, 0x05, 0x3d, 0xf5, 0x43,
+ 0x3f, 0x4a, 0x66, 0x23, 0xf8, 0xd1, 0xef, 0x45, 0x17, 0x57, 0x69, 0x34,
+ 0xcc, 0xa7, 0x53, 0xfc, 0x00, 0xd6, 0x4a, 0x9b, 0x1b, 0xa5, 0x65, 0x76,
+ 0x39, 0x4b, 0x47, 0xb8, 0x2a, 0x37, 0x79, 0xf1, 0x3e, 0xba, 0xc9, 0xaa,
+ 0xab, 0x7c, 0x51, 0x45, 0x0b, 0x58, 0xa1, 0x28, 0x9b, 0x55, 0x69, 0x91,
+ 0x0c, 0x71, 0x0b, 0x7a, 0x5f, 0xd4, 0x96, 0x3b, 0x1f, 0xc3, 0xda, 0x96,
+ 0xb0, 0x90, 0x83, 0x45, 0x39, 0xc9, 0x93, 0x11, 0x7c, 0x80, 0xaf, 0x8c,
+ 0x17, 0x13, 0x58, 0xf9, 0x6c, 0xf8, 0xbe, 0x8c, 0x26, 0xd9, 0x7b, 0x5a,
+ 0xc5, 0xdb, 0x3b, 0x5d, 0xe1, 0x2e, 0x37, 0x9a, 0x2c, 0x60, 0x85, 0x67,
+ 0xb1, 0x59, 0xee, 0x6c, 0x98, 0x60, 0x07, 0xb4, 0xac, 0xd1, 0x62, 0x8e,
+ 0xad, 0x75, 0x69, 0x0d, 0xa3, 0x79, 0x5e, 0xc2, 0x4b, 0xfd, 0xfe, 0x29,
+ 0x8c, 0x7c, 0x36, 0x4b, 0x69, 0x1c, 0x65, 0x17, 0xfe, 0xc8, 0xdf, 0x67,
+ 0x29, 0xfc, 0x32, 0xce, 0x26, 0x69, 0xc4, 0x3b, 0x6d, 0x9a, 0x43, 0x8a,
+ 0x2a, 0xd2, 0x72, 0x31, 0x4d, 0x69, 0xee, 0xd3, 0xbc, 0x48, 0x7b, 0xd1,
+ 0x51, 0x19, 0xdd, 0xe5, 0x0b, 0x98, 0xdb, 0x64, 0x02, 0x3b, 0x9f, 0x46,
+ 0x83, 0x74, 0x92, 0xdf, 0x74, 0x71, 0xa7, 0xa3, 0xd9, 0x62, 0x3a, 0x80,
+ 0x57, 0x60, 0xf8, 0xe3, 0x34, 0xa9, 0x16, 0xf0, 0x2a, 0x3d, 0xa6, 0xcd,
+ 0x4d, 0x13, 0x98, 0x05, 0xbc, 0x5b, 0x44, 0x57, 0x29, 0xcc, 0xb2, 0x9c,
+ 0x67, 0xcd, 0x95, 0x00, 0xba, 0x9b, 0xe7, 0x37, 0x69, 0x01, 0x6b, 0x38,
+ 0xb8, 0x8b, 0x60, 0xda, 0x03, 0xa6, 0x47, 0x24, 0xc2, 0x28, 0x81, 0x0e,
+ 0x0d, 0x29, 0xc6, 0x45, 0x3a, 0x49, 0x2a, 0x78, 0xce, 0x74, 0xd5, 0x83,
+ 0xfd, 0x4c, 0x53, 0x6d, 0x4e, 0x5e, 0xdd, 0xdc, 0xdf, 0xa2, 0x97, 0x47,
+ 0x69, 0x95, 0x64, 0x93, 0x12, 0xba, 0xc3, 0xf3, 0x21, 0xcf, 0xe0, 0x36,
+ 0xe2, 0x51, 0x88, 0xa2, 0xf2, 0x6e, 0x56, 0x25, 0xb7, 0xd4, 0xbd, 0x90,
+ 0x6a, 0x3c, 0x4a, 0xe7, 0xe9, 0x6c, 0x94, 0xce, 0xaa, 0x5e, 0xf4, 0x77,
+ 0x98, 0xee, 0x38, 0x83, 0x05, 0x48, 0xa4, 0x1d, 0xe8, 0x16, 0xf6, 0x7a,
+ 0x58, 0x64, 0x74, 0xa0, 0xb4, 0xb9, 0x6c, 0x16, 0xbd, 0x79, 0x7e, 0x1c,
+ 0xed, 0x7f, 0xf5, 0xe5, 0x13, 0x3b, 0x2d, 0x7c, 0x77, 0x98, 0xcc, 0x60,
+ 0xb2, 0xe9, 0x30, 0x1b, 0xdf, 0x45, 0xd3, 0xc5, 0xa4, 0xca, 0xe6, 0xb0,
+ 0xd4, 0x78, 0x04, 0xf1, 0x04, 0xcd, 0x13, 0x38, 0x2e, 0xb8, 0x64, 0xf4,
+ 0x01, 0x4d, 0xfb, 0xa6, 0xc8, 0x2a, 0x3c, 0x69, 0xf4, 0x1d, 0x0c, 0x2e,
+ 0xb5, 0xe7, 0x09, 0x29, 0x0a, 0xfa, 0x19, 0x00, 0x21, 0xc1, 0xe2, 0xe2,
+ 0xa6, 0xfc, 0x63, 0x91, 0xd3, 0xc3, 0xb8, 0xfe, 0x38, 0x97, 0xa4, 0x84,
+ 0x81, 0x1c, 0x7c, 0x61, 0x79, 0x4b, 0xe7, 0xaa, 0xaa, 0xe6, 0x07, 0xdb,
+ 0xdb, 0x65, 0x56, 0xa5, 0xbd, 0x7f, 0xe6, 0xb3, 0xb4, 0x5b, 0xdd, 0xe4,
+ 0xdd, 0xea, 0xaa, 0x48, 0xd3, 0x7f, 0xf5, 0x80, 0x8a, 0x3b, 0xe6, 0x59,
+ 0x18, 0xcd, 0x9d, 0x0c, 0xf7, 0x32, 0x85, 0xb3, 0x9c, 0xfe, 0x63, 0x91,
+ 0xce, 0xb0, 0x1f, 0x18, 0x5d, 0x32, 0x99, 0x5f, 0x25, 0xb0, 0xbf, 0x29,
+ 0x10, 0x24, 0x1e, 0x78, 0xa0, 0x19, 0x1c, 0xeb, 0xa2, 0xc4, 0xbe, 0x7f,
+ 0xfa, 0x25, 0xd0, 0xed, 0x98, 0x7a, 0x85, 0x7f, 0x7b, 0xe9, 0x6d, 0x32,
+ 0x85, 0x29, 0x63, 0x67, 0xdb, 0x48, 0x66, 0x3f, 0xed, 0xc6, 0xbb, 0x3b,
+ 0x3b, 0xbf, 0xf4, 0xaa, 0xdb, 0xaa, 0x73, 0xcf, 0x37, 0x76, 0x76, 0x9c,
+ 0x77, 0xf0, 0xe1, 0x4d, 0x5c, 0x89, 0x68, 0x02, 0x74, 0x84, 0x03, 0xf8,
+ 0x2d, 0x2d, 0xf2, 0x72, 0xeb, 0x9e, 0x6d, 0x25, 0xf1, 0x6f, 0x8d, 0xbe,
+ 0x5f, 0xa7, 0x25, 0x91, 0x92, 0x9d, 0x71, 0x94, 0x14, 0x40, 0xce, 0xb9,
+ 0x61, 0x68, 0x29, 0x1c, 0xa3, 0x01, 0x9c, 0x64, 0x5d, 0x1f, 0x38, 0x7c,
+ 0xf0, 0x34, 0x70, 0xbd, 0x04, 0x8e, 0xef, 0x0c, 0x5e, 0x98, 0xa5, 0xb7,
+ 0x95, 0x39, 0x85, 0x79, 0x94, 0x26, 0xc3, 0xab, 0x28, 0x87, 0x3d, 0x29,
+ 0x42, 0x5b, 0xe1, 0x0e, 0x29, 0x29, 0x86, 0x57, 0xd9, 0x35, 0xac, 0xc9,
+ 0x57, 0x5f, 0x3d, 0x89, 0xe1, 0x9f, 0xaf, 0x7e, 0xd9, 0xbe, 0xce, 0x27,
+ 0xb0, 0x44, 0x8f, 0x7e, 0xd9, 0xc6, 0xfd, 0xff, 0x67, 0xd2, 0x1d, 0x74,
+ 0x87, 0xff, 0xea, 0x5d, 0x55, 0xd3, 0x49, 0xa7, 0x95, 0xac, 0x92, 0x19,
+ 0xfc, 0x37, 0xcd, 0x17, 0xb3, 0xca, 0x90, 0x52, 0x3e, 0x23, 0x9a, 0x50,
+ 0x3e, 0x35, 0xc9, 0x66, 0x70, 0x78, 0x91, 0xe6, 0x91, 0xc2, 0xf0, 0xf0,
+ 0xc2, 0xc9, 0xb5, 0x07, 0xbd, 0x1a, 0x5e, 0xe1, 0x0a, 0x00, 0x6d, 0x25,
+ 0xb2, 0x0c, 0x55, 0x06, 0x73, 0x83, 0x57, 0x67, 0xc4, 0xbb, 0xa8, 0x2d,
+ 0xee, 0x2d, 0x83, 0x07, 0xf3, 0x62, 0x84, 0x1c, 0xbf, 0x31, 0x0c, 0x73,
+ 0x96, 0x9d, 0x3e, 0x23, 0xbd, 0x75, 0xf0, 0x03, 0x1a, 0xd8, 0x34, 0xbb,
+ 0x85, 0x16, 0xf0, 0x4f, 0xec, 0x0d, 0x06, 0xce, 0xad, 0x45, 0x38, 0x62,
+ 0xea, 0x46, 0xdf, 0xb7, 0x67, 0x19, 0x86, 0x5e, 0x9b, 0x3a, 0x75, 0x6a,
+ 0x27, 0x1f, 0xc1, 0xf6, 0xcd, 0xe1, 0xad, 0x05, 0xb2, 0x58, 0xbe, 0xb1,
+ 0xa0, 0x19, 0xe0, 0x14, 0x97, 0xb0, 0x33, 0xb0, 0x1b, 0x48, 0xcd, 0xb8,
+ 0x59, 0x77, 0xd1, 0x6b, 0x20, 0x1a, 0xe6, 0x52, 0x0e, 0xd1, 0x4f, 0xd2,
+ 0xaa, 0x5a, 0xbd, 0x51, 0x96, 0x72, 0x0f, 0x76, 0x03, 0xc4, 0xdb, 0xf6,
+ 0x06, 0x50, 0xdb, 0xc1, 0x5e, 0xe3, 0xf1, 0x1f, 0x80, 0x67, 0xdb, 0xa3,
+ 0x03, 0x23, 0xf8, 0xe7, 0xbf, 0x1c, 0xda, 0xbb, 0xc1, 0x6f, 0xb3, 0xd9,
+ 0x75, 0xfe, 0x1e, 0x96, 0x89, 0x2e, 0xda, 0xa4, 0xbe, 0xa2, 0xc8, 0xa4,
+ 0xa6, 0xf3, 0xca, 0x5c, 0x63, 0x48, 0x94, 0xf0, 0xd1, 0x20, 0x19, 0x4c,
+ 0xee, 0xa2, 0xab, 0xe4, 0x3a, 0xc5, 0x39, 0xcf, 0x81, 0x5a, 0x71, 0x15,
+ 0xe0, 0x16, 0x99, 0x10, 0x63, 0x10, 0xd6, 0x31, 0xca, 0x17, 0x03, 0x60,
+ 0x3f, 0xc8, 0x36, 0x78, 0x71, 0x92, 0xeb, 0x3c, 0x1b, 0xe1, 0xa3, 0xda,
+ 0x5c, 0x79, 0x95, 0xc2, 0x2b, 0xd4, 0x31, 0xdd, 0x59, 0xc0, 0x6d, 0x71,
+ 0xa4, 0x74, 0xe0, 0xb2, 0x0a, 0x6f, 0x3f, 0xe0, 0x93, 0xc9, 0xa4, 0xcc,
+ 0xa3, 0xe8, 0x32, 0xc7, 0xb3, 0x42, 0xdc, 0x99, 0x88, 0x1d, 0x36, 0xe6,
+ 0x2a, 0xc1, 0x4b, 0x0e, 0xee, 0x33, 0x73, 0x1a, 0x8a, 0x94, 0x18, 0x35,
+ 0xed, 0x56, 0x32, 0xe9, 0xf2, 0x65, 0x86, 0xef, 0xc8, 0x5a, 0x45, 0x1b,
+ 0xff, 0x67, 0xa3, 0x1b, 0x6d, 0xfc, 0x3f, 0x1b, 0x44, 0x13, 0x1b, 0x7f,
+ 0xd8, 0xb0, 0x7b, 0x0d, 0x42, 0xdb, 0x75, 0x36, 0x4a, 0x99, 0x2c, 0x5e,
+ 0x9e, 0x5f, 0x3f, 0x89, 0x7e, 0x83, 0xd3, 0x06, 0xc3, 0x1a, 0xa5, 0xb7,
+ 0x4a, 0x94, 0x3a, 0x37, 0x78, 0x3b, 0x02, 0xa6, 0x9c, 0xcc, 0xa1, 0xaf,
+ 0x79, 0x5a, 0x0c, 0x81, 0x82, 0x93, 0x4b, 0xa0, 0x59, 0xb8, 0x92, 0xb5,
+ 0x39, 0x6c, 0x1f, 0x5f, 0xe1, 0x69, 0x01, 0x0b, 0x8d, 0x66, 0xc9, 0x14,
+ 0x4e, 0xc5, 0x29, 0x8e, 0x28, 0x9b, 0x05, 0xb6, 0xf3, 0xa7, 0x71, 0xfa,
+ 0xe5, 0xce, 0xc1, 0xc1, 0xfe, 0xef, 0xf7, 0x1e, 0xa7, 0xd5, 0xd5, 0xce,
+ 0x2f, 0xdb, 0x76, 0x13, 0x5f, 0x8e, 0x69, 0xe1, 0x95, 0x08, 0x75, 0x18,
+ 0x78, 0xdf, 0xeb, 0x25, 0x02, 0x0d, 0xc0, 0xef, 0xe9, 0x38, 0xbb, 0xed,
+ 0xaa, 0x64, 0xc5, 0x27, 0x2f, 0x01, 0x82, 0x83, 0x1d, 0x44, 0x56, 0xa1,
+ 0xcd, 0x5d, 0x2e, 0xd2, 0x12, 0xd6, 0xf2, 0xe6, 0x2a, 0xa9, 0x22, 0xd3,
+ 0x00, 0xef, 0xed, 0x34, 0xbb, 0xbc, 0xaa, 0xa2, 0x9b, 0x04, 0xef, 0x22,
+ 0x90, 0xb1, 0xa8, 0x09, 0xbc, 0xf6, 0xe1, 0x12, 0x1a, 0x27, 0x70, 0x9f,
+ 0xe0, 0x2e, 0xd2, 0x1d, 0x0f, 0x1c, 0xca, 0xae, 0xfa, 0x9d, 0x6c, 0x89,
+ 0x11, 0xbe, 0xa2, 0x41, 0x52, 0xe2, 0xd1, 0x9d, 0x01, 0x8b, 0xa8, 0x40,
+ 0x68, 0x58, 0xe0, 0x5f, 0x57, 0x20, 0x16, 0xd0, 0x2a, 0xc8, 0x40, 0xe9,
+ 0x1e, 0x7d, 0x8e, 0x1b, 0x8a, 0xbb, 0x63, 0x24, 0x01, 0xd8, 0xa6, 0xae,
+ 0x6c, 0xb4, 0x79, 0xa3, 0x84, 0x63, 0x07, 0x0c, 0xca, 0xd0, 0x06, 0xf2,
+ 0xdc, 0x5e, 0x87, 0xe7, 0x49, 0x63, 0x4c, 0x4a, 0x12, 0x1d, 0x48, 0x5a,
+ 0x80, 0xc1, 0x3b, 0x93, 0x85, 0x45, 0x4b, 0xde, 0xa3, 0x8c, 0xd2, 0xb8,
+ 0xff, 0xe9, 0xb5, 0x51, 0x0e, 0x64, 0x06, 0xa3, 0x05, 0xa6, 0x8c, 0x33,
+ 0x43, 0x56, 0x4b, 0xab, 0x42, 0x64, 0x0e, 0x6d, 0xe2, 0x87, 0x59, 0x85,
+ 0x37, 0x0e, 0x49, 0xbb, 0x30, 0x5e, 0x58, 0x14, 0x12, 0x59, 0x81, 0x61,
+ 0x3b, 0xf3, 0xa7, 0x2b, 0x14, 0x9e, 0x8d, 0xae, 0x93, 0x49, 0x06, 0x52,
+ 0x6b, 0x6a, 0xde, 0xa2, 0xeb, 0x7e, 0x88, 0xc2, 0xd2, 0x04, 0x4e, 0xcc,
+ 0x30, 0x2f, 0x0a, 0xd4, 0x0c, 0x70, 0x07, 0x07, 0xcc, 0x4a, 0xa7, 0x29,
+ 0x48, 0x19, 0xee, 0x72, 0x42, 0xeb, 0xe3, 0x24, 0x2b, 0xe0, 0x69, 0x10,
+ 0x2c, 0x88, 0xeb, 0xd3, 0x94, 0x69, 0x5c, 0xd8, 0xea, 0x70, 0x98, 0xce,
+ 0xab, 0x32, 0x34, 0x1b, 0xdd, 0x6a, 0x18, 0x48, 0x91, 0xe2, 0x9a, 0xbb,
+ 0xf2, 0x17, 0xad, 0xa8, 0x11, 0x09, 0x48, 0x04, 0x53, 0x01, 0x07, 0x44,
+ 0xb2, 0x32, 0xb7, 0x62, 0x34, 0x52, 0x05, 0xb0, 0x31, 0x5a, 0xed, 0x29,
+ 0x0e, 0x11, 0x1f, 0x2e, 0xf9, 0x94, 0x12, 0x6b, 0xc6, 0x2d, 0x64, 0x41,
+ 0x9c, 0xfb, 0xc5, 0xcb, 0x0b, 0x56, 0xd2, 0x34, 0x0e, 0xbd, 0x9a, 0xdd,
+ 0xc4, 0xee, 0x51, 0x0d, 0x80, 0x1b, 0x7d, 0x54, 0x5e, 0x81, 0x54, 0x56,
+ 0xca, 0xa9, 0xce, 0xa6, 0x40, 0x2d, 0xd7, 0xb8, 0xb3, 0xf3, 0x34, 0x1d,
+ 0xf5, 0xa2, 0xb3, 0x31, 0x72, 0xd5, 0x02, 0x06, 0x5d, 0xd1, 0xd7, 0x78,
+ 0xab, 0xc0, 0x1a, 0x8c, 0xf0, 0x10, 0x5a, 0xc1, 0x87, 0x87, 0xe2, 0xdc,
+ 0x0e, 0xc4, 0xc9, 0x13, 0xf8, 0x04, 0x46, 0x3b, 0xa9, 0x5f, 0x41, 0x74,
+ 0x06, 0x81, 0x7b, 0xe3, 0xf0, 0x06, 0x69, 0x44, 0x34, 0x38, 0x48, 0xab,
+ 0x9b, 0x34, 0x35, 0xcd, 0x95, 0x29, 0xdc, 0x7b, 0xb8, 0x5d, 0x2c, 0x12,
+ 0x02, 0x23, 0x64, 0xa1, 0x16, 0x97, 0xf7, 0xec, 0xed, 0xc5, 0xf9, 0xdb,
+ 0x0b, 0xe7, 0x08, 0x62, 0x3b, 0x55, 0x3e, 0x19, 0x31, 0xb1, 0xdf, 0x64,
+ 0x25, 0xd0, 0x29, 0x2f, 0x3e, 0x08, 0x51, 0xc8, 0xe0, 0xf0, 0x22, 0x48,
+ 0x87, 0x29, 0x5c, 0xb1, 0x23, 0x56, 0x5d, 0x60, 0x23, 0xca, 0x0a, 0xb8,
+ 0x20, 0x1f, 0x26, 0x1c, 0x8b, 0x36, 0x07, 0xe3, 0x81, 0xee, 0xca, 0xaa,
+ 0x58, 0x0c, 0x49, 0x1c, 0x40, 0xda, 0xc1, 0xbf, 0x49, 0x58, 0x25, 0xb6,
+ 0x8a, 0xdb, 0x40, 0x8d, 0x00, 0x07, 0x41, 0xcd, 0x67, 0x02, 0x43, 0x9b,
+ 0xd0, 0xfc, 0xbb, 0xc2, 0xcf, 0x1d, 0x3e, 0x1a, 0xc7, 0xd0, 0x09, 0xb2,
+ 0x61, 0xd8, 0xe3, 0x18, 0xe4, 0xd5, 0x29, 0x70, 0xdc, 0x98, 0x8e, 0x9a,
+ 0x5c, 0x89, 0x3d, 0x9c, 0x80, 0xca, 0xbd, 0x97, 0x30, 0x42, 0x58, 0x35,
+ 0xb3, 0x5f, 0x22, 0x0f, 0xda, 0x33, 0x63, 0x74, 0x3c, 0x73, 0x4f, 0xba,
+ 0xeb, 0xda, 0x45, 0x32, 0x2c, 0xb3, 0x69, 0x36, 0x49, 0x90, 0x4a, 0x67,
+ 0xb0, 0x7d, 0xa5, 0x6d, 0x4c, 0xef, 0x60, 0x20, 0x37, 0x23, 0x49, 0xc2,
+ 0x72, 0xd1, 0x45, 0x21, 0x33, 0x4b, 0xa7, 0x0d, 0xea, 0x1d, 0x21, 0x6f,
+ 0xc7, 0xe5, 0x85, 0xdd, 0x00, 0x02, 0x80, 0x49, 0x98, 0x25, 0x8e, 0x3a,
+ 0x0b, 0xe0, 0xc0, 0x05, 0x1c, 0xff, 0xd9, 0xa8, 0x23, 0x43, 0x01, 0x96,
+ 0x3a, 0xc3, 0x63, 0xc8, 0x74, 0x5a, 0xe2, 0xc5, 0x6a, 0xba, 0xe2, 0xad,
+ 0xc0, 0xb3, 0x17, 0xf1, 0x92, 0xf0, 0x99, 0x95, 0x1e, 0x22, 0xb8, 0xf6,
+ 0x72, 0x12, 0xe3, 0x48, 0x50, 0xe7, 0xdf, 0x61, 0x3d, 0x67, 0x13, 0xe4,
+ 0x88, 0xe9, 0xed, 0x7c, 0x92, 0x0d, 0xb3, 0x6a, 0x62, 0xa4, 0x8b, 0xa4,
+ 0x7c, 0x2f, 0x3a, 0x16, 0x1e, 0xc1, 0x51, 0x3a, 0x42, 0xa5, 0x07, 0x3e,
+ 0x09, 0x49, 0x1d, 0x30, 0xa7, 0xf3, 0x37, 0x67, 0x17, 0x67, 0xc7, 0x67,
+ 0xa7, 0x75, 0x65, 0x58, 0x15, 0xd5, 0x88, 0x64, 0xda, 0x7c, 0x61, 0x25,
+ 0x7f, 0x38, 0x78, 0x28, 0x96, 0xc3, 0xbe, 0xc1, 0x05, 0x43, 0xda, 0x01,
+ 0x5c, 0x16, 0x53, 0x50, 0x5d, 0xa3, 0x12, 0x64, 0xa4, 0x29, 0x31, 0x48,
+ 0x90, 0x41, 0xcc, 0xec, 0x50, 0x48, 0xcb, 0x86, 0x0b, 0x58, 0x77, 0x60,
+ 0x18, 0x19, 0x50, 0xe2, 0x34, 0xb9, 0x73, 0x45, 0x47, 0x5a, 0x5b, 0x54,
+ 0x5e, 0xec, 0xfa, 0xa2, 0x12, 0x0c, 0x3f, 0x4e, 0x71, 0x9d, 0x90, 0xab,
+ 0x4d, 0x40, 0x09, 0x5b, 0xcc, 0x51, 0x67, 0x84, 0x4d, 0x63, 0x3a, 0x82,
+ 0x73, 0x86, 0xd3, 0x80, 0xb9, 0xe1, 0x3c, 0x12, 0x94, 0xb7, 0xed, 0xfb,
+ 0xa8, 0x3e, 0xc3, 0x8f, 0x37, 0x48, 0x98, 0x38, 0x58, 0x5e, 0xe1, 0x48,
+ 0xc8, 0x91, 0xcf, 0x63, 0x4f, 0x6f, 0x1c, 0xb3, 0x8f, 0x3a, 0x1e, 0x64,
+ 0x56, 0x25, 0x76, 0xd2, 0xb0, 0x3f, 0xe0, 0x6b, 0x78, 0x63, 0xe1, 0x9c,
+ 0x99, 0x5a, 0x27, 0x77, 0x2c, 0xf5, 0x92, 0x44, 0x52, 0x2c, 0x66, 0x33,
+ 0x1e, 0x59, 0xf4, 0x2a, 0x1b, 0x82, 0xbc, 0x0d, 0xb7, 0x48, 0xf4, 0x03,
+ 0x5c, 0xc5, 0xf9, 0x0d, 0xec, 0xeb, 0xc2, 0x6a, 0x8d, 0x46, 0x1d, 0x62,
+ 0xa5, 0x64, 0x06, 0x87, 0x17, 0x28, 0xec, 0xed, 0xeb, 0xe3, 0x28, 0x99,
+ 0xc3, 0x22, 0xa3, 0x64, 0x4c, 0x1c, 0x0a, 0x55, 0x64, 0x67, 0x4e, 0x17,
+ 0xe7, 0x9b, 0xfd, 0x2d, 0x19, 0xb3, 0xd9, 0x1d, 0x96, 0x07, 0x9f, 0x23,
+ 0x63, 0xbc, 0x50, 0xfa, 0x3f, 0xd7, 0xcb, 0x91, 0x6f, 0x7d, 0x98, 0x35,
+ 0x09, 0xbd, 0xc0, 0x43, 0x92, 0xf7, 0x65, 0x63, 0x10, 0x44, 0x0f, 0x28,
+ 0xfa, 0xc1, 0x7a, 0xfc, 0x80, 0x8f, 0xe7, 0x85, 0xa3, 0x95, 0xe3, 0x10,
+ 0x2f, 0x4e, 0xfb, 0x76, 0x10, 0x6c, 0x7e, 0x80, 0x71, 0x34, 0x9a, 0x79,
+ 0x93, 0x82, 0x22, 0x0e, 0xcd, 0xc8, 0xd2, 0x9a, 0xe7, 0xf1, 0xd6, 0xf5,
+ 0x9f, 0xae, 0x13, 0x18, 0xdd, 0xcc, 0x34, 0x54, 0x43, 0x6a, 0xae, 0x48,
+ 0x7c, 0x0d, 0x7b, 0x9b, 0x28, 0x3b, 0xa8, 0xf3, 0xa3, 0xda, 0x65, 0x49,
+ 0xcd, 0xe0, 0x44, 0xe0, 0xd1, 0x68, 0xa7, 0xf7, 0x55, 0x37, 0xda, 0xed,
+ 0xed, 0xe0, 0x3f, 0xbb, 0xdd, 0x68, 0x8f, 0x5a, 0xda, 0x8f, 0x58, 0x67,
+ 0x95, 0x4d, 0x62, 0x62, 0xcc, 0xe7, 0xcd, 0x7d, 0xb1, 0x5d, 0xf3, 0xc1,
+ 0xe5, 0xcb, 0xaf, 0xe5, 0xf0, 0x38, 0x76, 0x17, 0x7f, 0x9e, 0x6f, 0x95,
+ 0xe3, 0x01, 0xc9, 0x67, 0x13, 0xa0, 0x19, 0x56, 0xc6, 0xf4, 0x20, 0x09,
+ 0x23, 0x46, 0x51, 0xbd, 0x03, 0x44, 0x32, 0x43, 0x63, 0x44, 0x27, 0x4a,
+ 0xf1, 0x59, 0x16, 0x1a, 0x1b, 0xcd, 0xc1, 0x49, 0xb8, 0xd7, 0x26, 0xa1,
+ 0xb9, 0xa7, 0x65, 0xd1, 0xb1, 0x2f, 0xb8, 0xf4, 0x46, 0x19, 0xce, 0x29,
+ 0x07, 0x11, 0x88, 0x4f, 0x16, 0xdf, 0xb3, 0xd0, 0x7e, 0x97, 0x37, 0xc2,
+ 0x69, 0xbf, 0xd6, 0x32, 0x5a, 0x90, 0xbc, 0xfd, 0xa3, 0x0f, 0x75, 0xe1,
+ 0xf7, 0x7b, 0xd1, 0x33, 0x99, 0x0a, 0x2d, 0x33, 0x5e, 0xb7, 0xf4, 0x00,
+ 0x48, 0xef, 0x20, 0x12, 0x47, 0x9d, 0x72, 0x31, 0x68, 0x2e, 0x38, 0x1a,
+ 0x0a, 0x06, 0x69, 0x87, 0x6d, 0x65, 0x55, 0x3e, 0x07, 0x05, 0xfa, 0xe6,
+ 0x0a, 0x29, 0x9a, 0xed, 0x33, 0xd0, 0xce, 0x36, 0x1a, 0x67, 0xb0, 0x3d,
+ 0x6d, 0x65, 0x0e, 0x32, 0x7a, 0x56, 0x5e, 0x75, 0x70, 0x1f, 0x93, 0xe6,
+ 0xfe, 0x61, 0x0b, 0x3d, 0xee, 0x95, 0xfa, 0x87, 0x29, 0xe0, 0x05, 0x52,
+ 0xd3, 0x56, 0xa3, 0xcd, 0xbb, 0xb4, 0xda, 0x72, 0x04, 0xe9, 0xb3, 0xf3,
+ 0x7d, 0x7f, 0xcd, 0xdc, 0xa9, 0xb0, 0x28, 0x81, 0xb7, 0xf6, 0x3c, 0x9f,
+ 0xef, 0x47, 0x2a, 0x4b, 0xb0, 0x24, 0xa4, 0x92, 0x47, 0x42, 0x3b, 0x6d,
+ 0x76, 0xa9, 0xd1, 0xdc, 0x92, 0x3d, 0x43, 0x13, 0x9c, 0xdf, 0x3f, 0x1a,
+ 0x60, 0x80, 0x89, 0xc1, 0x25, 0x05, 0x97, 0xe2, 0x2b, 0x60, 0x4a, 0xc9,
+ 0x25, 0xbe, 0x69, 0x0e, 0x38, 0x09, 0x75, 0xf3, 0x22, 0x9b, 0xc2, 0x19,
+ 0x81, 0x4b, 0x8d, 0xa5, 0x05, 0xba, 0x96, 0x79, 0x74, 0xcd, 0x85, 0x46,
+ 0x55, 0x63, 0x4a, 0x12, 0x12, 0x5c, 0x0a, 0x09, 0x8b, 0x1a, 0x96, 0x2c,
+ 0x78, 0xae, 0xa8, 0xc2, 0x38, 0xc3, 0xea, 0x9f, 0x7b, 0x1b, 0x4e, 0x1f,
+ 0xc2, 0xe1, 0x32, 0xaf, 0x38, 0x07, 0xa1, 0x7f, 0x7c, 0xee, 0x9f, 0xf0,
+ 0x7e, 0xff, 0x85, 0x21, 0x90, 0x3d, 0xd8, 0xee, 0xb9, 0x15, 0xe2, 0x9c,
+ 0x37, 0xd1, 0x22, 0xe7, 0xbd, 0x89, 0x1f, 0x6e, 0x8e, 0x8a, 0x04, 0x58,
+ 0xe9, 0xe3, 0x2d, 0x91, 0xab, 0x70, 0xd9, 0x6b, 0x4d, 0x3a, 0x8d, 0xbc,
+ 0xfa, 0xce, 0x30, 0x49, 0xdb, 0xc8, 0xab, 0xef, 0xcc, 0xb3, 0xbb, 0x44,
+ 0xe9, 0x4c, 0x58, 0x34, 0x7f, 0x9d, 0x83, 0xdb, 0x46, 0x88, 0x67, 0xbd,
+ 0x9d, 0x1b, 0x42, 0x90, 0xbb, 0xbc, 0xe4, 0x95, 0x46, 0x45, 0x1b, 0x5f,
+ 0xa9, 0x13, 0x44, 0x29, 0x7c, 0x06, 0x75, 0x2e, 0x22, 0x89, 0x46, 0x73,
+ 0x3f, 0x2c, 0x3b, 0x66, 0x6c, 0x58, 0x8d, 0x2e, 0x40, 0xcd, 0xc4, 0x36,
+ 0x68, 0x36, 0xd0, 0x15, 0x19, 0x21, 0xf0, 0x88, 0xa4, 0x93, 0x59, 0xca,
+ 0xe2, 0x38, 0x29, 0x18, 0xc8, 0xac, 0xac, 0xf5, 0xf4, 0x1a, 0xc5, 0xdc,
+ 0xb2, 0x74, 0xec, 0x6e, 0x35, 0x81, 0x86, 0x04, 0x10, 0x1c, 0x9d, 0xd1,
+ 0xa5, 0xf0, 0x03, 0x64, 0x4d, 0x25, 0x09, 0x4e, 0x20, 0xfa, 0x91, 0xd5,
+ 0x61, 0x24, 0x92, 0x48, 0xc9, 0x4f, 0x39, 0x62, 0x9b, 0x91, 0x42, 0x69,
+ 0xba, 0xdc, 0x94, 0x4b, 0x33, 0x17, 0xce, 0x46, 0x0a, 0xbf, 0xa1, 0x8f,
+ 0x0c, 0xb5, 0x50, 0xeb, 0xbc, 0x05, 0x22, 0x7f, 0x7c, 0xff, 0xe6, 0xa4,
+ 0xdf, 0x8f, 0x5e, 0x9d, 0x5c, 0x9c, 0xbc, 0xa9, 0x09, 0x21, 0xb3, 0xbc,
+ 0x98, 0x92, 0x0a, 0x32, 0xca, 0xca, 0xf9, 0x24, 0xb9, 0x43, 0xdd, 0x04,
+ 0xb8, 0xe7, 0x65, 0x81, 0x82, 0xcf, 0x34, 0x45, 0x63, 0xc6, 0x68, 0x41,
+ 0xca, 0x37, 0xb0, 0x64, 0x98, 0xbe, 0xd8, 0x6c, 0x51, 0xff, 0x25, 0x43,
+ 0xaf, 0xbd, 0xc2, 0xe9, 0x9a, 0x14, 0x03, 0x10, 0x5e, 0x86, 0xd6, 0x64,
+ 0x8f, 0x27, 0x06, 0x45, 0xd6, 0xae, 0x23, 0x41, 0x92, 0x74, 0xcf, 0xe3,
+ 0x04, 0x25, 0x0b, 0x8e, 0x17, 0x72, 0x0c, 0x3c, 0x84, 0xc6, 0xe2, 0x92,
+ 0x8e, 0xab, 0x6e, 0x04, 0xfb, 0xc1, 0xb6, 0xee, 0xe6, 0x98, 0x74, 0xb4,
+ 0xd6, 0xde, 0x3b, 0xb8, 0xab, 0xc4, 0x1e, 0xc9, 0x43, 0xe1, 0x1e, 0x8c,
+ 0xc4, 0x46, 0x1b, 0x33, 0x8b, 0xe4, 0xb1, 0x39, 0xad, 0x2b, 0x90, 0xd9,
+ 0x88, 0x9b, 0x2f, 0x17, 0x63, 0xd2, 0x3c, 0xa3, 0xcd, 0xf7, 0xdd, 0xe8,
+ 0x55, 0x37, 0xfa, 0xbe, 0x1b, 0xa1, 0x21, 0x7f, 0x8b, 0xde, 0xdb, 0xdd,
+ 0xd9, 0x7b, 0xc4, 0x9a, 0xab, 0xa1, 0xb1, 0xe7, 0x8e, 0xed, 0x60, 0xf7,
+ 0x3d, 0x32, 0x09, 0x7e, 0x08, 0x1b, 0xef, 0x45, 0xbb, 0xaf, 0xf8, 0x93,
+ 0x47, 0x5f, 0x3e, 0x7e, 0xfa, 0x44, 0x3e, 0x6c, 0x48, 0xb6, 0x3a, 0x7e,
+ 0x52, 0x6a, 0x54, 0x29, 0xc0, 0x71, 0xa3, 0xa4, 0x97, 0xcd, 0x40, 0x86,
+ 0x02, 0x3d, 0x50, 0x94, 0x6b, 0x54, 0xc3, 0x60, 0xf0, 0x63, 0x56, 0xc5,
+ 0xc5, 0x2e, 0x53, 0xf7, 0x96, 0xc0, 0xcb, 0x40, 0x04, 0x40, 0x0a, 0x66,
+ 0x93, 0xd8, 0xba, 0x55, 0xe1, 0x40, 0x92, 0x01, 0xd2, 0x3f, 0x4a, 0xab,
+ 0x24, 0xa3, 0x85, 0x7a, 0x33, 0x86, 0x1c, 0x78, 0x03, 0xc6, 0x96, 0x0c,
+ 0x26, 0xa2, 0xb8, 0x34, 0xd6, 0x1d, 0xe4, 0x67, 0x2b, 0x82, 0xc3, 0xb3,
+ 0x37, 0xf9, 0x02, 0xc5, 0x4d, 0x7c, 0x00, 0xa4, 0x47, 0x7c, 0x81, 0x69,
+ 0xda, 0xd8, 0xdb, 0xb3, 0x5b, 0xb9, 0x8f, 0x6b, 0xad, 0xc0, 0xd0, 0xe0,
+ 0xcf, 0x39, 0x90, 0x12, 0x0f, 0xa7, 0xd7, 0x34, 0x69, 0x90, 0xb2, 0xee,
+ 0x51, 0x22, 0x32, 0x16, 0x12, 0x42, 0xce, 0xcf, 0xfa, 0x17, 0x78, 0xb6,
+ 0x41, 0x11, 0x83, 0x86, 0xfe, 0xb1, 0x00, 0x12, 0x02, 0xa2, 0xc4, 0x17,
+ 0x51, 0xeb, 0x70, 0x34, 0x16, 0xa0, 0x3d, 0xba, 0x88, 0x45, 0x09, 0x93,
+ 0x2e, 0x45, 0x29, 0x22, 0xde, 0x12, 0x89, 0xee, 0x24, 0x57, 0x86, 0x98,
+ 0x9e, 0xec, 0x8b, 0xd1, 0xe6, 0x37, 0x5b, 0xdd, 0x90, 0x3e, 0x25, 0x9a,
+ 0x8e, 0x73, 0x2a, 0x71, 0x2b, 0x59, 0xd6, 0xa5, 0x9b, 0x10, 0x44, 0x4d,
+ 0x38, 0x57, 0xd0, 0x89, 0x75, 0x84, 0xe0, 0xfa, 0x91, 0x06, 0x67, 0xb7,
+ 0xc9, 0xca, 0xc6, 0x73, 0x58, 0xcf, 0xdc, 0x2e, 0x1d, 0x6a, 0xd8, 0xb5,
+ 0x45, 0x6a, 0xee, 0x59, 0x6d, 0xd1, 0x98, 0x34, 0xd0, 0x80, 0x82, 0xea,
+ 0x59, 0x12, 0xd9, 0xa5, 0x8b, 0x3a, 0x83, 0xa4, 0xe8, 0x58, 0x35, 0x92,
+ 0xcf, 0x26, 0x9e, 0x90, 0x22, 0xbd, 0x24, 0x9d, 0x21, 0xe2, 0xe5, 0x75,
+ 0x66, 0xa9, 0x2f, 0xc7, 0x03, 0xfc, 0x3a, 0x2b, 0xd9, 0x65, 0x32, 0x06,
+ 0x01, 0x14, 0x0f, 0x8c, 0x9a, 0x5c, 0xc9, 0x00, 0x27, 0xd4, 0x12, 0x20,
+ 0x16, 0xc7, 0x14, 0x0b, 0xc7, 0x04, 0x45, 0x79, 0x16, 0x7d, 0xf0, 0xc9,
+ 0x38, 0x2e, 0x61, 0xd5, 0xd1, 0x54, 0x3c, 0x17, 0x6f, 0xd4, 0x19, 0xf9,
+ 0x00, 0x8d, 0x86, 0x74, 0x26, 0xf2, 0x29, 0xb1, 0x5f, 0x11, 0x99, 0x66,
+ 0xa4, 0x02, 0x56, 0x37, 0xd0, 0x69, 0x02, 0xdb, 0x04, 0x07, 0xed, 0x15,
+ 0x2e, 0x12, 0x0a, 0xde, 0x38, 0x1d, 0x15, 0x69, 0x89, 0x22, 0x32, 0x3c,
+ 0xef, 0x56, 0x8e, 0x4d, 0x46, 0xa3, 0x8c, 0xb4, 0x98, 0x09, 0x9a, 0x62,
+ 0x16, 0x29, 0x19, 0xcb, 0x65, 0x41, 0xa7, 0xee, 0x16, 0x22, 0xe3, 0xb8,
+ 0x42, 0x15, 0x05, 0xe4, 0x28, 0x32, 0x1d, 0xc4, 0xd8, 0x57, 0x87, 0x84,
+ 0xc5, 0x69, 0xa4, 0x7d, 0x49, 0x57, 0xdd, 0x28, 0x1e, 0xb9, 0x66, 0xc4,
+ 0x2e, 0x29, 0x5e, 0xd6, 0xa6, 0x4d, 0xc2, 0x42, 0x53, 0xdc, 0x4b, 0x60,
+ 0xa7, 0xd1, 0xee, 0x27, 0x26, 0x07, 0xb2, 0xdd, 0xd0, 0x51, 0x2d, 0x79,
+ 0x68, 0x5d, 0x58, 0x57, 0x7c, 0xf2, 0xf2, 0x4a, 0x1f, 0x75, 0x2c, 0x40,
+ 0x09, 0x5a, 0x12, 0x40, 0x4e, 0x46, 0xbf, 0xd0, 0x48, 0xcd, 0x14, 0x79,
+ 0xc1, 0x4c, 0x6c, 0x92, 0x03, 0x01, 0x77, 0xd8, 0xba, 0x2a, 0xc3, 0xc6,
+ 0x51, 0xc3, 0x28, 0x63, 0xf6, 0x98, 0xd2, 0x48, 0x8d, 0x6c, 0x28, 0x43,
+ 0x96, 0xd5, 0x2a, 0x57, 0x0e, 0xcc, 0xb9, 0xbf, 0x69, 0x85, 0xf4, 0xc2,
+ 0xd7, 0x75, 0x67, 0xd3, 0x44, 0x4e, 0xc4, 0x4c, 0xc7, 0x90, 0x0c, 0xeb,
+ 0xce, 0xca, 0x73, 0x33, 0xa5, 0x98, 0xce, 0x1b, 0xcb, 0x14, 0x65, 0x53,
+ 0x12, 0x99, 0x88, 0x4e, 0xcc, 0xf6, 0x58, 0x27, 0x46, 0xc0, 0x68, 0x7b,
+ 0x17, 0x36, 0xfd, 0x27, 0x6c, 0x9b, 0x34, 0xe3, 0x8a, 0xcf, 0x60, 0x05,
+ 0x4e, 0x69, 0x2e, 0xf1, 0x75, 0x84, 0x87, 0x6f, 0x06, 0xb3, 0x4c, 0xf0,
+ 0x8b, 0xd3, 0x6b, 0xe7, 0x10, 0xa1, 0xcb, 0x69, 0x86, 0x86, 0xb5, 0x2e,
+ 0x35, 0x31, 0xc8, 0xf3, 0x49, 0x9a, 0xd8, 0xe9, 0xe1, 0x4d, 0x90, 0xce,
+ 0x90, 0xd6, 0x65, 0x4f, 0x81, 0x19, 0xcc, 0x0d, 0xa7, 0x05, 0x59, 0x37,
+ 0x4a, 0x2e, 0x93, 0xcc, 0x50, 0x9c, 0x9c, 0x8b, 0x11, 0xcb, 0xa4, 0x78,
+ 0xa8, 0x66, 0xb9, 0xbc, 0x40, 0x3e, 0x10, 0xb4, 0xda, 0x09, 0xcf, 0x5a,
+ 0x94, 0xa9, 0x35, 0xa0, 0x49, 0x9b, 0x64, 0xa4, 0x71, 0xac, 0x7f, 0x6c,
+ 0x1a, 0x25, 0x96, 0x4b, 0x86, 0x4e, 0x68, 0xac, 0xd3, 0x8b, 0x5e, 0xe4,
+ 0x37, 0xa8, 0x59, 0x76, 0xd9, 0x10, 0x9d, 0xa1, 0x97, 0xb6, 0x84, 0x27,
+ 0x80, 0x88, 0xa7, 0x20, 0xce, 0xe3, 0x42, 0x92, 0xb1, 0x8c, 0x3f, 0x8e,
+ 0x1c, 0x7f, 0x06, 0xd0, 0xf8, 0x8d, 0x1c, 0x44, 0xe9, 0xd0, 0xec, 0xe6,
+ 0xb8, 0x71, 0x26, 0xe2, 0x38, 0x19, 0x80, 0x58, 0x0b, 0x82, 0x4f, 0xbc,
+ 0x98, 0x65, 0xb7, 0x71, 0x99, 0x0f, 0xdf, 0xc3, 0x64, 0x0f, 0xe7, 0x49,
+ 0x75, 0xf5, 0x4d, 0x43, 0x62, 0xd9, 0x44, 0xee, 0xbc, 0x15, 0x45, 0xc7,
+ 0x6c, 0x5f, 0x44, 0x3e, 0x53, 0x30, 0x25, 0xc3, 0x2a, 0x49, 0x2b, 0xd1,
+ 0x5b, 0x68, 0x05, 0xe8, 0x04, 0x64, 0x36, 0xd8, 0x3a, 0x6a, 0xac, 0xab,
+ 0xcc, 0xa9, 0xd1, 0x1c, 0x39, 0xa1, 0x8d, 0x12, 0x0f, 0x64, 0x89, 0xea,
+ 0x7a, 0x14, 0xbd, 0xce, 0xab, 0xf4, 0x00, 0xff, 0x06, 0xe6, 0x50, 0xd1,
+ 0x54, 0xe4, 0xae, 0x4a, 0x70, 0xa1, 0x91, 0xbd, 0x21, 0x7d, 0x25, 0xbe,
+ 0x16, 0xc4, 0xfd, 0x4b, 0xa7, 0xba, 0xa6, 0x76, 0x8b, 0x36, 0xbe, 0xdd,
+ 0xe8, 0x46, 0x57, 0xbc, 0xa4, 0xd4, 0x20, 0xcf, 0x11, 0x76, 0xfe, 0x12,
+ 0xd4, 0xe6, 0x59, 0xd5, 0x6c, 0xee, 0x8a, 0x2e, 0x3f, 0x24, 0x77, 0xf6,
+ 0x78, 0xd0, 0x06, 0x88, 0x06, 0x6a, 0x9c, 0x10, 0xbd, 0x2f, 0x1a, 0xaf,
+ 0x01, 0xb3, 0x6e, 0x59, 0x52, 0xf6, 0xfd, 0xa2, 0xb7, 0x61, 0x64, 0x3c,
+ 0x7b, 0x24, 0x13, 0xa1, 0xc0, 0x45, 0x2c, 0x6e, 0x92, 0x94, 0xde, 0x28,
+ 0xe0, 0x45, 0x66, 0x69, 0x64, 0xd1, 0x10, 0x83, 0xa6, 0xd7, 0xeb, 0x09,
+ 0x9f, 0x99, 0x83, 0x66, 0xc0, 0x07, 0x47, 0x6f, 0x84, 0xc7, 0xc3, 0x3f,
+ 0x68, 0x55, 0xd1, 0x17, 0x51, 0xd6, 0x7d, 0x4b, 0xcd, 0x1e, 0xfa, 0x69,
+ 0xca, 0x37, 0x42, 0xec, 0x36, 0xd2, 0x8b, 0x8e, 0x46, 0x38, 0x1f, 0xd8,
+ 0xeb, 0xa7, 0xbd, 0xc7, 0xfb, 0xbd, 0x9d, 0x1a, 0x61, 0x4d, 0xaa, 0xb8,
+ 0xbc, 0x1e, 0x46, 0x87, 0x64, 0x76, 0x46, 0x92, 0x0f, 0x12, 0x14, 0xa8,
+ 0x1b, 0x72, 0xb9, 0x0a, 0xad, 0xf2, 0x31, 0xe4, 0x4d, 0xd7, 0x36, 0xc8,
+ 0x44, 0x48, 0x6e, 0x42, 0x9c, 0x12, 0xd9, 0x35, 0x7d, 0x89, 0xda, 0xf4,
+ 0x03, 0x1a, 0x66, 0x86, 0xfa, 0x45, 0x45, 0x42, 0x53, 0x7a, 0x9b, 0xb1,
+ 0xf2, 0xab, 0x8d, 0x0d, 0x81, 0xed, 0xa4, 0x22, 0x18, 0x10, 0x5b, 0x93,
+ 0xb5, 0x6d, 0x34, 0x47, 0x2b, 0x1d, 0x1d, 0x8d, 0x49, 0xa6, 0x31, 0xf7,
+ 0xdc, 0xc8, 0x48, 0xb9, 0x1c, 0x92, 0xc0, 0x8d, 0xe9, 0xee, 0xa0, 0xad,
+ 0x73, 0x24, 0x37, 0x4f, 0xeb, 0xe8, 0x88, 0x93, 0xa0, 0xc4, 0x97, 0x21,
+ 0x6d, 0xa1, 0x23, 0x02, 0xf8, 0xf1, 0x34, 0x1f, 0x91, 0x6d, 0xdb, 0xdb,
+ 0xdb, 0xbe, 0x71, 0x42, 0x76, 0x3a, 0x4e, 0x23, 0x9b, 0xe8, 0x92, 0x06,
+ 0x82, 0x9c, 0x5d, 0x56, 0x57, 0x5b, 0xd6, 0xcd, 0xa6, 0x0a, 0x3f, 0x0c,
+ 0x84, 0xd5, 0xa7, 0xe6, 0xa9, 0xa3, 0x18, 0x09, 0xa2, 0x8b, 0x5f, 0x17,
+ 0x65, 0x45, 0x16, 0x7a, 0xb9, 0xdf, 0x79, 0x26, 0x30, 0xb2, 0x69, 0x3a,
+ 0xcd, 0x8b, 0xbb, 0x10, 0x69, 0xf3, 0x29, 0xd0, 0x8d, 0x42, 0x92, 0x26,
+ 0xee, 0xae, 0xe4, 0x2c, 0xd4, 0x6c, 0x7d, 0x13, 0x24, 0x15, 0xa9, 0xba,
+ 0xd7, 0x5c, 0x0f, 0x72, 0x3c, 0x0a, 0x37, 0x67, 0x0b, 0xff, 0x40, 0x5c,
+ 0x8a, 0x78, 0x10, 0x48, 0x20, 0x70, 0x89, 0x9e, 0x2e, 0x07, 0x9e, 0x96,
+ 0x37, 0x34, 0x4b, 0x6c, 0x78, 0x63, 0xe8, 0x0b, 0xb5, 0x61, 0xb1, 0xe7,
+ 0xd9, 0xb5, 0x42, 0xad, 0x7b, 0x88, 0xa4, 0x07, 0xf8, 0x0f, 0x9d, 0xad,
+ 0x6b, 0x1e, 0x1a, 0xb8, 0x82, 0xf3, 0xc9, 0x35, 0x7b, 0x27, 0xe2, 0x58,
+ 0x3c, 0x34, 0x71, 0x95, 0xd7, 0x4e, 0xd0, 0x93, 0x47, 0xbd, 0xdd, 0xda,
+ 0x09, 0x9a, 0xdd, 0x61, 0xfc, 0x4d, 0x98, 0x0d, 0xa3, 0x76, 0x5b, 0x5a,
+ 0xdd, 0x36, 0xbb, 0x5c, 0x14, 0x24, 0xfb, 0x4a, 0xc8, 0x8e, 0x46, 0xea,
+ 0xa0, 0xb4, 0x76, 0x95, 0x53, 0xb8, 0x0b, 0xdc, 0xf5, 0xe9, 0x64, 0xdc,
+ 0x0d, 0x58, 0x30, 0xe9, 0x92, 0x62, 0x43, 0x1b, 0x3a, 0xdf, 0x40, 0x77,
+ 0xa2, 0xc6, 0x66, 0xa9, 0x48, 0xd6, 0x68, 0xab, 0x8d, 0x30, 0xbe, 0x23,
+ 0x1a, 0x4e, 0x92, 0x6c, 0x4a, 0x27, 0x4b, 0xcc, 0x03, 0x3d, 0xcf, 0xe4,
+ 0xc2, 0x7e, 0x1c, 0x32, 0x35, 0x0c, 0xd0, 0x8d, 0x54, 0x94, 0x28, 0x38,
+ 0xb0, 0x75, 0x47, 0xc4, 0x79, 0xb6, 0x9c, 0x5c, 0xa5, 0xc3, 0xf7, 0xca,
+ 0xff, 0x55, 0x16, 0x6e, 0x72, 0x75, 0x0c, 0xe4, 0x21, 0x5f, 0x15, 0x3c,
+ 0xb5, 0x40, 0x63, 0x4d, 0x0e, 0xaa, 0x39, 0xba, 0xa1, 0x51, 0x47, 0x5d,
+ 0x0c, 0x49, 0xa8, 0xa7, 0x33, 0x0e, 0xa7, 0x52, 0x2f, 0x91, 0x08, 0x6e,
+ 0xa5, 0xd9, 0x28, 0xae, 0x8a, 0x6c, 0xde, 0x36, 0x3a, 0x95, 0x4a, 0x5c,
+ 0xa9, 0xb9, 0x14, 0x1b, 0x14, 0x39, 0x96, 0xd8, 0xd5, 0x34, 0x8c, 0x1a,
+ 0xab, 0xd9, 0x3c, 0x4c, 0xb4, 0xb6, 0x5d, 0xb4, 0x04, 0x64, 0x20, 0xca,
+ 0xb0, 0x98, 0x4e, 0xf2, 0xcf, 0x28, 0x57, 0x31, 0x02, 0x54, 0xcb, 0x6c,
+ 0x48, 0x52, 0x5a, 0x76, 0x99, 0x62, 0x88, 0x14, 0xc8, 0x0a, 0xd5, 0x04,
+ 0xe4, 0x36, 0xff, 0x6c, 0xc2, 0x37, 0xe9, 0x65, 0x5e, 0xa1, 0x98, 0xe4,
+ 0x91, 0x38, 0xdb, 0x42, 0x0d, 0x4d, 0xa8, 0x41, 0xce, 0x15, 0x18, 0x33,
+ 0xd6, 0xae, 0xa0, 0x6b, 0x31, 0x0e, 0xf0, 0x19, 0x23, 0x8b, 0x44, 0x73,
+ 0xd7, 0xa1, 0xb5, 0xa1, 0x18, 0x33, 0x50, 0xaa, 0x55, 0xa1, 0x5a, 0x35,
+ 0x11, 0x64, 0x65, 0x28, 0xc0, 0x57, 0x37, 0xd9, 0x30, 0x55, 0x5b, 0xae,
+ 0xc4, 0x7b, 0x4c, 0x32, 0xff, 0xb6, 0x9c, 0x22, 0x2f, 0x81, 0x97, 0x58,
+ 0x59, 0x40, 0x4f, 0xe4, 0x4d, 0x86, 0xca, 0x04, 0xf3, 0x69, 0x16, 0x18,
+ 0xe5, 0x46, 0x4d, 0x8a, 0x8c, 0x1c, 0xae, 0xe8, 0x8c, 0x32, 0x06, 0xca,
+ 0x10, 0x6f, 0xe0, 0x71, 0xd3, 0xfb, 0xa2, 0x5f, 0x59, 0xbd, 0x8a, 0x18,
+ 0xc3, 0x98, 0xec, 0x42, 0xde, 0x3a, 0x11, 0x03, 0xbe, 0x4c, 0xc9, 0x37,
+ 0xcd, 0x7b, 0xb0, 0xc0, 0x45, 0xc7, 0x70, 0x36, 0xef, 0x69, 0xf6, 0xff,
+ 0xd7, 0x57, 0xd6, 0x38, 0xb5, 0x98, 0x6f, 0x20, 0x87, 0x46, 0x1f, 0x12,
+ 0x51, 0x58, 0x3a, 0x1e, 0xc3, 0xb9, 0x5d, 0xfb, 0xfe, 0x95, 0x96, 0x79,
+ 0x10, 0x40, 0x35, 0x07, 0xf3, 0x9b, 0xd1, 0x9a, 0x0c, 0x84, 0x82, 0xf3,
+ 0xb4, 0xa5, 0xae, 0xd2, 0x95, 0xf0, 0x13, 0x26, 0x2d, 0x87, 0x75, 0x24,
+ 0xf8, 0x04, 0xa8, 0xa8, 0xa9, 0x47, 0x63, 0x9b, 0xa8, 0xaf, 0xa2, 0x59,
+ 0x70, 0x4b, 0xa3, 0x44, 0x52, 0x89, 0x93, 0x31, 0xe1, 0x7c, 0xc4, 0xe4,
+ 0xf1, 0x9e, 0x10, 0xf6, 0xc2, 0xed, 0x84, 0x6f, 0x35, 0x50, 0xe0, 0x30,
+ 0xf8, 0x85, 0xee, 0x25, 0x3d, 0x4d, 0x70, 0x98, 0xd0, 0xc6, 0xa8, 0x51,
+ 0x66, 0x18, 0xd2, 0x21, 0x74, 0x20, 0x9c, 0x44, 0x62, 0x01, 0x51, 0x39,
+ 0x6e, 0x34, 0x87, 0x24, 0x4d, 0xf7, 0x75, 0x97, 0x85, 0x61, 0x66, 0xff,
+ 0x43, 0x8e, 0xf0, 0xe8, 0x91, 0x6c, 0xc8, 0x57, 0x36, 0x8d, 0x71, 0x3c,
+ 0x49, 0x2e, 0xf1, 0x20, 0x64, 0x97, 0xb3, 0x9c, 0x43, 0xfa, 0x9a, 0x54,
+ 0x9e, 0xc3, 0x4d, 0x49, 0x36, 0x50, 0xb6, 0xb6, 0x95, 0xd1, 0x26, 0xd0,
+ 0xfd, 0x64, 0x41, 0x3b, 0x7e, 0x06, 0xb3, 0xea, 0xf7, 0x5f, 0x6c, 0x2d,
+ 0x27, 0x0a, 0x9e, 0xfb, 0x3d, 0x68, 0x02, 0xcd, 0xdd, 0xac, 0x15, 0x34,
+ 0xfd, 0x54, 0xa2, 0x3b, 0x28, 0x43, 0x00, 0xe1, 0x9e, 0x5b, 0x5d, 0x97,
+ 0x8c, 0x78, 0x7f, 0x62, 0x5a, 0x3c, 0xf6, 0xc4, 0x99, 0xf1, 0x8d, 0xbd,
+ 0xd8, 0xa0, 0x76, 0x52, 0x2a, 0x90, 0x36, 0x28, 0x76, 0x89, 0xa9, 0xe7,
+ 0xb8, 0xcb, 0x37, 0x12, 0x6c, 0xd6, 0x22, 0x8d, 0x93, 0xaa, 0x76, 0x03,
+ 0xdd, 0x94, 0xa0, 0xcb, 0x5f, 0x5e, 0x3f, 0x02, 0x69, 0x99, 0x85, 0xd7,
+ 0x62, 0xf7, 0xa7, 0x03, 0xfd, 0x75, 0xef, 0xa7, 0x83, 0x22, 0xbd, 0x84,
+ 0xf3, 0xf8, 0xd3, 0x01, 0xae, 0x2f, 0xb0, 0x8a, 0x5f, 0x7e, 0xf9, 0xe5,
+ 0x1b, 0xff, 0x40, 0x46, 0x47, 0x3f, 0xf4, 0xa3, 0xbf, 0x3d, 0xa2, 0x50,
+ 0x19, 0x8a, 0xa5, 0x6c, 0xde, 0x51, 0x12, 0x69, 0xa3, 0x92, 0x95, 0xb7,
+ 0x30, 0xa4, 0xb9, 0x6b, 0xaf, 0x46, 0x62, 0x67, 0x95, 0x19, 0x44, 0x5b,
+ 0xbe, 0x44, 0x48, 0xe7, 0x12, 0x87, 0xff, 0x9d, 0x48, 0x8f, 0x97, 0x39,
+ 0x10, 0xe1, 0xd5, 0xd4, 0xb7, 0xe4, 0xce, 0x98, 0xa8, 0xc8, 0xc7, 0xb2,
+ 0xa8, 0x2e, 0xf9, 0x7a, 0xaa, 0x0f, 0x4a, 0xae, 0x9e, 0xe0, 0x60, 0x78,
+ 0xda, 0x4b, 0x46, 0xe2, 0x48, 0xa0, 0xa0, 0x78, 0xe6, 0x97, 0x45, 0x32,
+ 0xbf, 0xc2, 0xe3, 0x0a, 0x9d, 0xfa, 0x6a, 0x10, 0x5d, 0x8c, 0x65, 0xbe,
+ 0x28, 0x30, 0x3a, 0x6b, 0x98, 0x4f, 0x26, 0x1c, 0xbd, 0x11, 0x6d, 0x72,
+ 0x37, 0xb0, 0x39, 0xa3, 0x74, 0x8b, 0x47, 0x5d, 0xd9, 0xce, 0x49, 0x0c,
+ 0xcc, 0x9a, 0x27, 0x28, 0x9f, 0x66, 0x55, 0xa5, 0x71, 0x5d, 0xf8, 0x34,
+ 0x90, 0x07, 0x0d, 0x26, 0x38, 0x0f, 0xd9, 0xb6, 0x7b, 0x4e, 0x64, 0xbc,
+ 0x98, 0xf1, 0xc0, 0x70, 0x2f, 0x9a, 0x37, 0x35, 0x6b, 0x36, 0x18, 0xdf,
+ 0x02, 0x57, 0x44, 0xbe, 0x18, 0x45, 0x9b, 0xd2, 0x78, 0x73, 0xf8, 0xda,
+ 0xa7, 0x8c, 0x5f, 0x47, 0x1c, 0xba, 0x02, 0x96, 0x8e, 0x9f, 0x55, 0x2d,
+ 0x43, 0xa0, 0x21, 0xfd, 0xca, 0x53, 0xaf, 0x58, 0xa3, 0x62, 0x95, 0xca,
+ 0x73, 0x2e, 0x7d, 0x80, 0x82, 0x65, 0x46, 0xd1, 0x81, 0x5f, 0x0f, 0x92,
+ 0xe9, 0x6f, 0x07, 0x29, 0xf4, 0x16, 0xef, 0x1d, 0xa4, 0x65, 0x47, 0xd9,
+ 0x7e, 0xe7, 0x7d, 0x7a, 0x07, 0xe7, 0x04, 0xe8, 0xae, 0xea, 0xac, 0xc9,
+ 0xfc, 0x1d, 0x5e, 0x6f, 0xef, 0x32, 0x57, 0x72, 0x7c, 0xfa, 0xb8, 0xae,
+ 0x7b, 0xd1, 0x0b, 0x2d, 0xea, 0x7b, 0x5d, 0x70, 0x44, 0xc9, 0x8f, 0xac,
+ 0xae, 0xdf, 0x71, 0x1f, 0xf5, 0x33, 0x60, 0x4c, 0x7a, 0x85, 0x27, 0x99,
+ 0x11, 0x27, 0xc7, 0x58, 0xad, 0x9e, 0x91, 0xaa, 0xf0, 0x41, 0x0d, 0x19,
+ 0x63, 0x99, 0x21, 0x53, 0x5f, 0x34, 0x1f, 0xcd, 0x05, 0x39, 0x23, 0x68,
+ 0x3b, 0x9b, 0xcd, 0x61, 0x2c, 0x86, 0x89, 0xc9, 0x50, 0xbb, 0x49, 0x46,
+ 0x66, 0x22, 0xbc, 0x4c, 0x0a, 0x8c, 0xd2, 0x43, 0x93, 0x71, 0x7a, 0x9d,
+ 0xe5, 0x8b, 0x12, 0x5a, 0xc1, 0x8d, 0x94, 0xb6, 0x91, 0x50, 0x7d, 0xc5,
+ 0x19, 0x29, 0x19, 0x74, 0x2a, 0xe0, 0x27, 0x48, 0xd8, 0x61, 0xa9, 0x78,
+ 0xb3, 0x5c, 0xa0, 0xdc, 0x86, 0x81, 0x23, 0x2a, 0x96, 0xd1, 0x75, 0xda,
+ 0x1c, 0x1d, 0x4b, 0x6e, 0x14, 0x67, 0x63, 0x44, 0xb4, 0xad, 0x8f, 0x28,
+ 0x7b, 0xf0, 0x06, 0x7f, 0x74, 0xc9, 0x63, 0x41, 0x87, 0xec, 0x00, 0x83,
+ 0xda, 0x30, 0xf6, 0xc3, 0x74, 0xf4, 0x10, 0xd1, 0x83, 0xde, 0x74, 0x69,
+ 0x0c, 0xf4, 0xc5, 0xb4, 0xa8, 0x58, 0xbd, 0xf7, 0x34, 0xfb, 0x8b, 0xd3,
+ 0xfe, 0x56, 0x80, 0xd2, 0xea, 0x41, 0xbe, 0xf8, 0x3e, 0x4a, 0xd9, 0x18,
+ 0x8b, 0xc5, 0xb1, 0x69, 0x39, 0x5a, 0xaa, 0x1c, 0x6b, 0x9f, 0xe3, 0x7d,
+ 0x9a, 0xa7, 0xa9, 0x58, 0x42, 0xe9, 0x51, 0x94, 0x5a, 0xf1, 0xd2, 0xc2,
+ 0x8b, 0xd5, 0x09, 0x6a, 0x3a, 0x3e, 0x8a, 0xdc, 0x66, 0x4b, 0x8e, 0x48,
+ 0x6e, 0xba, 0xf2, 0xed, 0x03, 0x9b, 0xe5, 0x96, 0x95, 0x5e, 0xa1, 0xa9,
+ 0xf3, 0x93, 0x57, 0x64, 0x56, 0x85, 0x6b, 0x10, 0xa4, 0x0d, 0xf1, 0x9e,
+ 0x69, 0x08, 0x15, 0x46, 0x3c, 0xb8, 0x51, 0x86, 0xd6, 0x50, 0x40, 0x91,
+ 0xfb, 0x4c, 0xf8, 0x34, 0x3a, 0x0e, 0x11, 0xce, 0x28, 0xc6, 0xae, 0x79,
+ 0x0c, 0xaa, 0xbb, 0xb9, 0x04, 0x06, 0x2e, 0xca, 0x9a, 0x3b, 0xc3, 0x58,
+ 0x38, 0x2b, 0xb2, 0x50, 0xa1, 0xbd, 0xd5, 0x69, 0xd3, 0xdb, 0x7a, 0xf6,
+ 0x0d, 0xa1, 0x02, 0x70, 0x39, 0xcb, 0x7e, 0x13, 0x83, 0x49, 0x3a, 0xbb,
+ 0xce, 0x8a, 0x7c, 0x46, 0xbc, 0x9c, 0x22, 0x3f, 0x06, 0x62, 0x30, 0x18,
+ 0x45, 0x1b, 0xc7, 0x6f, 0xdf, 0x9c, 0xbe, 0x3b, 0x3e, 0x7a, 0xf7, 0xdd,
+ 0xdb, 0xd7, 0xcf, 0x4e, 0x4f, 0x36, 0x9a, 0x62, 0xca, 0x58, 0x1c, 0x4a,
+ 0x25, 0x9a, 0xec, 0xc8, 0xc5, 0x58, 0x4a, 0xa3, 0x1c, 0x3a, 0x46, 0xa6,
+ 0x22, 0x0a, 0x6f, 0x64, 0x53, 0x9c, 0x38, 0x58, 0x74, 0xc5, 0x1b, 0xcd,
+ 0x0d, 0x16, 0x68, 0x58, 0x10, 0xde, 0x20, 0x93, 0xd7, 0x83, 0x2c, 0xd6,
+ 0x64, 0x1d, 0x5f, 0xf8, 0xba, 0xbf, 0xd1, 0xc8, 0x1f, 0xb5, 0x5d, 0xd2,
+ 0x4d, 0xe9, 0xc4, 0x3d, 0x2e, 0xaa, 0x1c, 0xb6, 0x49, 0x96, 0x12, 0xe3,
+ 0x30, 0x68, 0xd5, 0x13, 0x18, 0x50, 0x60, 0xbb, 0x4b, 0x6b, 0x3a, 0x81,
+ 0x95, 0xc0, 0x56, 0x80, 0x7e, 0x63, 0x19, 0xe4, 0xb0, 0xa8, 0x36, 0xba,
+ 0x51, 0x9a, 0xd1, 0xb1, 0xd5, 0x50, 0x74, 0xbc, 0x9d, 0xc8, 0x4b, 0xe4,
+ 0xc5, 0xb7, 0x60, 0xdc, 0x47, 0xc2, 0x74, 0xdd, 0x4b, 0x6f, 0x53, 0xe2,
+ 0x0b, 0xf2, 0xd6, 0xf1, 0xa2, 0x20, 0x6e, 0xf3, 0x03, 0xa8, 0xa1, 0x78,
+ 0xb2, 0x9f, 0x69, 0xa0, 0x88, 0x3e, 0x04, 0x02, 0x7c, 0xf3, 0xa2, 0xcb,
+ 0x27, 0x24, 0xd4, 0x90, 0x7d, 0x9f, 0x3c, 0x31, 0xe7, 0x47, 0x17, 0x2f,
+ 0x42, 0xb7, 0x5d, 0x9d, 0x0c, 0x49, 0xa6, 0x2c, 0x2b, 0xb9, 0xdc, 0x5e,
+ 0xf7, 0xfb, 0x11, 0x25, 0xdf, 0x60, 0xfc, 0x68, 0x91, 0x60, 0x87, 0xce,
+ 0x17, 0x40, 0xd5, 0x4d, 0xe6, 0xf3, 0x97, 0xe3, 0xfe, 0xef, 0x76, 0x77,
+ 0xd1, 0xec, 0xb4, 0x80, 0x75, 0xd9, 0x84, 0xb7, 0x66, 0x25, 0x9c, 0xcc,
+ 0x69, 0xaf, 0xcc, 0xb7, 0x24, 0xba, 0x8f, 0xf5, 0xc0, 0xe4, 0x1a, 0xd4,
+ 0x2c, 0x22, 0x23, 0x25, 0xea, 0x96, 0x98, 0x1f, 0x93, 0x95, 0x04, 0xfc,
+ 0x02, 0x14, 0xb5, 0x89, 0x6f, 0x41, 0xda, 0xcc, 0xce, 0x38, 0xc9, 0x69,
+ 0x9a, 0x0c, 0xe1, 0x37, 0xb4, 0x5e, 0x6f, 0xb5, 0x4f, 0xac, 0xcf, 0x56,
+ 0x08, 0x8e, 0xcb, 0xa2, 0x94, 0x24, 0x9f, 0x2b, 0xcc, 0x02, 0x26, 0x29,
+ 0x1b, 0xa3, 0x82, 0x03, 0x1e, 0x24, 0xc3, 0xf7, 0x37, 0x49, 0x41, 0xd1,
+ 0x7b, 0x40, 0xb7, 0xd9, 0x20, 0x9b, 0x64, 0x15, 0xfb, 0xaa, 0x9a, 0x92,
+ 0x13, 0x6d, 0x3f, 0xae, 0x61, 0x3a, 0xbb, 0xcc, 0x66, 0x28, 0x38, 0xa0,
+ 0x41, 0x2a, 0xab, 0x5c, 0x5b, 0x30, 0x29, 0xc6, 0xac, 0xd0, 0xb8, 0x7e,
+ 0xa9, 0xc8, 0x17, 0xc4, 0xf0, 0x69, 0x3e, 0x4b, 0x3c, 0x50, 0x4b, 0xb9,
+ 0xca, 0x08, 0x5d, 0x3e, 0x65, 0xc8, 0xee, 0x0e, 0x74, 0xa8, 0x69, 0xc0,
+ 0x36, 0x40, 0x22, 0xc4, 0x5f, 0xd2, 0xbb, 0xe1, 0x15, 0x72, 0x3c, 0xc3,
+ 0x28, 0x0d, 0x6b, 0xec, 0x8a, 0x0d, 0x22, 0x53, 0xcf, 0x6e, 0xaa, 0xce,
+ 0x79, 0xbe, 0xea, 0x7c, 0xa9, 0x93, 0x1b, 0x50, 0x03, 0x0c, 0xb6, 0xb1,
+ 0x51, 0xd6, 0x58, 0x32, 0x75, 0xe5, 0x6f, 0x62, 0x1f, 0x3e, 0x9f, 0xcd,
+ 0xd2, 0x89, 0xec, 0xdf, 0x45, 0x9d, 0xbb, 0xd5, 0x57, 0xdf, 0x3c, 0x0b,
+ 0x63, 0x96, 0x50, 0xbe, 0x46, 0x73, 0x4f, 0x29, 0x41, 0x22, 0xa9, 0xf4,
+ 0xc2, 0xd4, 0x94, 0xac, 0xa7, 0xbd, 0x27, 0x3b, 0xe6, 0xab, 0x5e, 0xb3,
+ 0x17, 0xdb, 0x8d, 0x77, 0x9a, 0x96, 0x6e, 0xb9, 0xbf, 0xc9, 0x7f, 0x32,
+ 0x6a, 0x2b, 0x71, 0xbf, 0x46, 0x73, 0xae, 0x79, 0x45, 0xae, 0x30, 0x99,
+ 0xc6, 0x06, 0x48, 0xc9, 0x39, 0x1a, 0xc9, 0xc6, 0x51, 0x91, 0xc3, 0x56,
+ 0xd7, 0x36, 0x73, 0x93, 0x48, 0x63, 0xe4, 0xc9, 0x4c, 0xc2, 0xcd, 0x9d,
+ 0x85, 0xd9, 0x0a, 0x9a, 0x59, 0xcd, 0xe5, 0xba, 0x4c, 0xaa, 0x35, 0x96,
+ 0xd2, 0xba, 0x93, 0xa0, 0xc9, 0x87, 0x55, 0xa2, 0x5d, 0x4b, 0xa0, 0x95,
+ 0xee, 0x8f, 0x8f, 0x48, 0xdb, 0x7c, 0x80, 0xbd, 0x73, 0x98, 0xf0, 0x75,
+ 0x81, 0x22, 0xeb, 0x7b, 0x14, 0x81, 0x60, 0x95, 0xe9, 0x3c, 0xd7, 0x25,
+ 0x08, 0x7a, 0xe8, 0x10, 0xd8, 0xec, 0x87, 0x0b, 0x10, 0x4e, 0x50, 0x9e,
+ 0x7f, 0xa7, 0xca, 0x61, 0xe1, 0x23, 0xcb, 0x92, 0x44, 0xf4, 0x4a, 0x85,
+ 0x06, 0x1c, 0x44, 0xa9, 0x96, 0x63, 0xb3, 0xda, 0x83, 0x3b, 0xf5, 0xc0,
+ 0xfa, 0xf6, 0x29, 0x8a, 0xb8, 0x65, 0x57, 0xdd, 0x41, 0x27, 0xda, 0x4c,
+ 0x7b, 0x97, 0xd0, 0x5e, 0x07, 0xdb, 0xd9, 0x3d, 0xc0, 0x7f, 0xf7, 0xe8,
+ 0xdf, 0xfd, 0xce, 0x96, 0xa4, 0x72, 0xba, 0xb4, 0x81, 0xc2, 0x86, 0xbf,
+ 0x47, 0x75, 0xd9, 0x83, 0xef, 0xdf, 0xac, 0x8d, 0x33, 0xb2, 0xe5, 0xe2,
+ 0x94, 0x49, 0xc0, 0x17, 0x56, 0x75, 0x19, 0xa6, 0x6c, 0xe0, 0xbf, 0x4e,
+ 0xd9, 0xc3, 0x00, 0x33, 0xc3, 0xb8, 0xdc, 0x74, 0xe4, 0xb8, 0xdd, 0x86,
+ 0xef, 0x8a, 0x14, 0xc4, 0xcc, 0xab, 0x68, 0x51, 0xf1, 0x21, 0x81, 0x73,
+ 0xd5, 0x6c, 0x6e, 0x3e, 0xc9, 0xac, 0x17, 0x4d, 0xba, 0xee, 0xa9, 0x41,
+ 0xd2, 0xee, 0x22, 0xc7, 0x0c, 0x4c, 0xf2, 0x1b, 0x7d, 0x26, 0x96, 0x4c,
+ 0xcb, 0x90, 0xd8, 0x02, 0xbb, 0x49, 0x8e, 0x08, 0x7c, 0xcc, 0x4d, 0x57,
+ 0x98, 0xa2, 0x38, 0x8e, 0x69, 0xa0, 0x11, 0x0a, 0xbc, 0xd9, 0x10, 0x4d,
+ 0x8d, 0x13, 0xda, 0x37, 0x34, 0xaa, 0x2e, 0x02, 0x41, 0xc5, 0x86, 0x56,
+ 0xb3, 0xb1, 0xb8, 0x3c, 0xe5, 0x6f, 0xba, 0xef, 0x45, 0x42, 0x2c, 0x39,
+ 0xa5, 0x01, 0x44, 0x95, 0x9a, 0x6c, 0x18, 0x38, 0x7a, 0x0d, 0x59, 0x8d,
+ 0xf8, 0xb7, 0xab, 0xd6, 0xc8, 0x64, 0xeb, 0x3e, 0x39, 0xb1, 0x3f, 0xf5,
+ 0x5a, 0x4e, 0x32, 0x8b, 0x4b, 0x9f, 0xed, 0x24, 0x53, 0xf7, 0xdb, 0x64,
+ 0x30, 0xda, 0xb6, 0x67, 0x64, 0xdd, 0xe3, 0x4c, 0x6b, 0xba, 0xe2, 0x38,
+ 0xc3, 0x23, 0x31, 0x7a, 0x6d, 0x17, 0xe5, 0x3d, 0x4e, 0xb3, 0x73, 0x7f,
+ 0xf1, 0x3b, 0x1a, 0x7e, 0x21, 0x81, 0x71, 0xee, 0x56, 0x35, 0x57, 0xe2,
+ 0xce, 0x21, 0xe1, 0x63, 0x87, 0x07, 0xf4, 0xb9, 0xa1, 0x37, 0xe2, 0x65,
+ 0xd8, 0x4c, 0xde, 0x27, 0xbd, 0xe8, 0xec, 0xb8, 0x7f, 0x8e, 0x5d, 0xcc,
+ 0x31, 0x18, 0x70, 0x0b, 0x23, 0x05, 0x1b, 0xcd, 0x81, 0x82, 0x95, 0xce,
+ 0xca, 0x5a, 0xda, 0x74, 0x2b, 0x41, 0x68, 0x8c, 0x80, 0x86, 0x37, 0xd7,
+ 0xa2, 0xf8, 0x28, 0x8c, 0x90, 0x92, 0x81, 0x22, 0x66, 0x0a, 0x5e, 0x47,
+ 0x73, 0x58, 0xff, 0xd1, 0x96, 0xf1, 0x76, 0x74, 0x95, 0x6a, 0x4d, 0x28,
+ 0x50, 0xb9, 0xb8, 0x44, 0x5d, 0xb3, 0x54, 0x2b, 0xa7, 0xe9, 0x01, 0x56,
+ 0xc3, 0x17, 0xba, 0x64, 0xda, 0xc6, 0x89, 0x08, 0xda, 0x31, 0x26, 0xf5,
+ 0x91, 0xb0, 0x39, 0xcb, 0x6d, 0xab, 0x18, 0xa6, 0x48, 0xd9, 0xcd, 0x19,
+ 0x05, 0xd0, 0x70, 0xb6, 0x4a, 0x40, 0x9c, 0xe2, 0x4d, 0x51, 0x1d, 0x79,
+ 0x2c, 0x19, 0xcd, 0x01, 0x17, 0x0a, 0x35, 0x34, 0x64, 0x61, 0xd7, 0x04,
+ 0x22, 0x64, 0x48, 0x48, 0xa8, 0x79, 0xb0, 0x55, 0x02, 0xdb, 0x33, 0x9c,
+ 0xea, 0xfb, 0xd9, 0x02, 0xc3, 0x88, 0x7d, 0xb9, 0x06, 0xe5, 0x53, 0xbc,
+ 0xb0, 0x71, 0x01, 0x97, 0xaa, 0xc8, 0x0e, 0x75, 0x39, 0xfa, 0x1e, 0x6b,
+ 0xca, 0xb4, 0x02, 0x38, 0x63, 0x51, 0x96, 0x8d, 0xb6, 0xdc, 0x08, 0x47,
+ 0x96, 0x68, 0xa6, 0x80, 0x45, 0xd6, 0x69, 0x7d, 0x5d, 0xe3, 0x8f, 0x3b,
+ 0xb0, 0x35, 0x15, 0xeb, 0x0c, 0x38, 0xdf, 0x68, 0xbe, 0x18, 0xbc, 0x4f,
+ 0xef, 0x6a, 0xe6, 0x9c, 0x47, 0xbb, 0x75, 0x73, 0x0e, 0x75, 0x01, 0x7a,
+ 0x63, 0x1a, 0x1d, 0xe2, 0xbf, 0xe1, 0xcb, 0x52, 0xce, 0x97, 0xe6, 0x01,
+ 0x12, 0xfd, 0xe0, 0x2b, 0x12, 0xbb, 0xc5, 0x9c, 0x87, 0xbd, 0x37, 0xb5,
+ 0x8b, 0xd3, 0x13, 0x7a, 0xe8, 0x6c, 0xf5, 0xf0, 0x3a, 0xea, 0x46, 0xcf,
+ 0x10, 0x34, 0xe1, 0xe4, 0xf5, 0xf7, 0x44, 0xf0, 0xe7, 0xbb, 0x7b, 0x14,
+ 0x28, 0x63, 0x74, 0xce, 0x11, 0xf5, 0x10, 0x36, 0x91, 0x9a, 0xdc, 0x41,
+ 0x1c, 0x03, 0x27, 0x0e, 0x98, 0x9c, 0x61, 0x24, 0x05, 0xd9, 0x74, 0xbe,
+ 0xe9, 0xac, 0x71, 0x88, 0xba, 0x6d, 0x3a, 0x01, 0x25, 0x6a, 0x83, 0xf3,
+ 0x03, 0x45, 0x2f, 0x30, 0x6a, 0x01, 0xb5, 0x60, 0x05, 0x4d, 0xd2, 0x61,
+ 0x61, 0xa4, 0x3d, 0x36, 0x10, 0x06, 0x54, 0x53, 0xb2, 0x71, 0xce, 0xdf,
+ 0x0f, 0xcb, 0xdd, 0xdd, 0x83, 0xe8, 0xed, 0x9b, 0x97, 0x2c, 0x9f, 0xe3,
+ 0x24, 0x1b, 0x36, 0x2c, 0x1c, 0x7a, 0xd8, 0xec, 0x68, 0x37, 0xe4, 0x73,
+ 0x9a, 0x1d, 0xed, 0x28, 0x50, 0x74, 0xe0, 0xbf, 0xf9, 0xde, 0x5b, 0x8b,
+ 0x0e, 0x4f, 0xba, 0xf2, 0x2e, 0xfe, 0x04, 0x52, 0x14, 0xa7, 0x12, 0xfc,
+ 0x16, 0xd7, 0x57, 0xc0, 0x3e, 0x19, 0x1d, 0x3a, 0x14, 0xf4, 0x93, 0x31,
+ 0x30, 0xfd, 0x72, 0x1f, 0xca, 0x0c, 0x4b, 0x72, 0x3e, 0x5d, 0xe2, 0x44,
+ 0x42, 0x86, 0x7b, 0x9b, 0x2b, 0x40, 0x53, 0xa5, 0x33, 0xcc, 0x28, 0x1e,
+ 0x84, 0xf5, 0x81, 0xbc, 0x2f, 0x99, 0x19, 0x39, 0x3f, 0xe6, 0xa4, 0x54,
+ 0xca, 0x19, 0x69, 0x32, 0xd0, 0x61, 0x3e, 0xe9, 0x89, 0xb5, 0xc1, 0xed,
+ 0xd8, 0x35, 0x07, 0x91, 0x9a, 0xbc, 0x27, 0x62, 0x19, 0x72, 0x6b, 0xbe,
+ 0x78, 0x98, 0x06, 0x9b, 0x54, 0x6f, 0x14, 0x55, 0x8a, 0x5e, 0x35, 0xd2,
+ 0x9c, 0x7d, 0x8d, 0x02, 0x1a, 0x69, 0x64, 0xac, 0x7d, 0xd4, 0xf4, 0xc8,
+ 0x90, 0x4e, 0x8d, 0x31, 0x42, 0xc6, 0x7a, 0xa7, 0x39, 0x18, 0xba, 0x68,
+ 0x35, 0x1f, 0x19, 0xdc, 0x78, 0x45, 0x26, 0x5a, 0x17, 0x9f, 0xb2, 0x66,
+ 0x73, 0x1a, 0x58, 0xda, 0xf4, 0xa2, 0x69, 0x9c, 0x1b, 0x25, 0xd3, 0xe2,
+ 0xd1, 0xf0, 0xcc, 0x72, 0x21, 0x03, 0x6b, 0x26, 0xb9, 0x53, 0xf3, 0x22,
+ 0xbb, 0xc6, 0x07, 0x95, 0x6e, 0xac, 0x8b, 0xb8, 0xae, 0x4b, 0xe6, 0x33,
+ 0xfc, 0x39, 0x63, 0x3f, 0x9e, 0x83, 0xa3, 0x51, 0xe3, 0x71, 0x96, 0xf2,
+ 0x28, 0xc2, 0x40, 0x22, 0x5f, 0x48, 0xda, 0xc6, 0x94, 0x6c, 0x01, 0xcc,
+ 0x08, 0x58, 0x16, 0x5e, 0x32, 0x5f, 0x71, 0xa9, 0xf2, 0x9b, 0x08, 0xb7,
+ 0xc2, 0x06, 0xbd, 0x19, 0x1f, 0x47, 0x57, 0xfc, 0xf4, 0xb4, 0xcd, 0x92,
+ 0xd1, 0x1d, 0xb8, 0x0a, 0x6d, 0x90, 0x57, 0x44, 0x52, 0x3e, 0x9a, 0x7c,
+ 0x3a, 0x3f, 0xc3, 0x2f, 0x64, 0xd1, 0xe3, 0xb4, 0x5c, 0xc7, 0x09, 0x2f,
+ 0xfc, 0x90, 0x42, 0x80, 0x9b, 0xcd, 0x99, 0x1d, 0x1c, 0xa5, 0x93, 0x6c,
+ 0x9a, 0x91, 0x42, 0xdb, 0xd7, 0x54, 0x4a, 0x8e, 0x12, 0xa4, 0xc1, 0xf0,
+ 0x58, 0x78, 0x09, 0x4d, 0xe7, 0x9d, 0x9f, 0x3b, 0x4d, 0x03, 0x21, 0x0e,
+ 0xe4, 0xe7, 0xd5, 0x03, 0x31, 0xf9, 0xea, 0xcb, 0xe3, 0xd5, 0x1c, 0x48,
+ 0x9e, 0xba, 0x9a, 0x81, 0xe3, 0xc0, 0xeb, 0x19, 0xb5, 0x65, 0xb1, 0x2a,
+ 0x69, 0x18, 0x80, 0x21, 0x9b, 0xe6, 0x89, 0x82, 0x3e, 0x2b, 0x0c, 0xb1,
+ 0x66, 0x29, 0x0f, 0x5d, 0xff, 0xd9, 0xf0, 0x3d, 0xe7, 0xa4, 0x8e, 0x9b,
+ 0x46, 0x0f, 0x93, 0x7c, 0xcd, 0xc0, 0x01, 0x81, 0x85, 0x23, 0xe3, 0x15,
+ 0xc6, 0x24, 0xe0, 0x21, 0x46, 0xb6, 0x9c, 0xcd, 0xac, 0x77, 0x2f, 0x68,
+ 0xea, 0x84, 0xb1, 0xbe, 0x7b, 0xf6, 0xf2, 0x4d, 0xb4, 0x89, 0x76, 0x80,
+ 0xa6, 0xa9, 0x4d, 0xf9, 0xfa, 0x76, 0x5a, 0x0d, 0xb7, 0xe7, 0xef, 0xb3,
+ 0xed, 0x59, 0x59, 0x8e, 0x06, 0x5b, 0xc6, 0x3d, 0xad, 0xb6, 0x32, 0x6b,
+ 0x1e, 0x53, 0xfb, 0x18, 0x19, 0xc8, 0x9a, 0x07, 0xd4, 0x31, 0x98, 0xe1,
+ 0x95, 0x62, 0xec, 0x64, 0xb4, 0x46, 0x74, 0xfc, 0x29, 0xaa, 0x89, 0xa3,
+ 0x86, 0x29, 0x16, 0x2a, 0xc0, 0xe2, 0x9d, 0xe8, 0x6e, 0x81, 0x22, 0xc0,
+ 0xf0, 0x6e, 0x14, 0xd9, 0x09, 0x80, 0x26, 0x63, 0xb0, 0x05, 0x5a, 0x39,
+ 0xb1, 0x2d, 0x8e, 0xac, 0x4d, 0x11, 0x5e, 0x0c, 0x05, 0x62, 0x48, 0x38,
+ 0xa9, 0x89, 0x9a, 0x64, 0x4d, 0xb5, 0xb7, 0xdd, 0x41, 0x96, 0xc6, 0x58,
+ 0x18, 0x26, 0x60, 0x0c, 0x0e, 0xe6, 0x78, 0xc1, 0xf6, 0xd5, 0x80, 0x4d,
+ 0x0c, 0xb6, 0x13, 0x17, 0xc5, 0x6c, 0x81, 0xee, 0x66, 0x3b, 0x1d, 0xb5,
+ 0x29, 0xab, 0xd6, 0x2e, 0xa9, 0x5c, 0x82, 0x59, 0xa0, 0x5c, 0xc4, 0x81,
+ 0x2b, 0x5a, 0xd7, 0xb3, 0xcb, 0x0b, 0x9a, 0x98, 0x4d, 0xc1, 0x2b, 0x7b,
+ 0x13, 0x91, 0x70, 0x9e, 0x3e, 0xde, 0xdd, 0xdb, 0xaa, 0x85, 0x7c, 0x09,
+ 0xd7, 0xf0, 0x52, 0x45, 0x51, 0xf7, 0x4f, 0xea, 0x5c, 0x1e, 0x15, 0x22,
+ 0x91, 0x54, 0x6d, 0xd3, 0xa3, 0x14, 0x5d, 0x93, 0x20, 0x8b, 0xa9, 0x0f,
+ 0x74, 0x90, 0xc2, 0x20, 0xbd, 0x8d, 0xb7, 0x90, 0x04, 0x22, 0x46, 0x74,
+ 0xac, 0x2e, 0x88, 0x79, 0x44, 0xb0, 0x01, 0x95, 0x9c, 0x41, 0x77, 0xd4,
+ 0x3d, 0x5e, 0xa7, 0xa4, 0xc5, 0x16, 0x8b, 0xf3, 0x72, 0xc4, 0x89, 0xae,
+ 0x8d, 0xb9, 0x89, 0x63, 0x59, 0x2c, 0xe1, 0xd5, 0x26, 0xdc, 0x10, 0xe3,
+ 0x92, 0x9b, 0xe2, 0x9b, 0x8c, 0xa9, 0x83, 0xd7, 0xce, 0x8c, 0xa2, 0xe8,
+ 0x12, 0x47, 0x46, 0xd1, 0xd5, 0x77, 0xa5, 0x87, 0x7a, 0xab, 0x81, 0x10,
+ 0x54, 0xe4, 0x38, 0x20, 0x1f, 0x85, 0x9b, 0x0c, 0x9b, 0x79, 0xd7, 0xb6,
+ 0xf3, 0x2e, 0x37, 0xf3, 0x36, 0x59, 0x87, 0x6c, 0x0f, 0xee, 0xbd, 0xd8,
+ 0xed, 0x07, 0xa9, 0x64, 0x03, 0x33, 0xaf, 0x31, 0xd7, 0x98, 0x77, 0xe9,
+ 0xc3, 0xeb, 0xdb, 0x7a, 0x6b, 0xd1, 0xb5, 0x55, 0x37, 0xbd, 0x62, 0x7a,
+ 0x1b, 0xda, 0x5a, 0xdf, 0x8b, 0xad, 0x95, 0x2e, 0x73, 0x73, 0x94, 0x7c,
+ 0x6f, 0x8d, 0xca, 0x08, 0x31, 0x65, 0x99, 0x37, 0x8c, 0x52, 0xb8, 0x08,
+ 0xce, 0x0d, 0xd9, 0xb3, 0xc7, 0x9d, 0x72, 0x60, 0xc2, 0xbe, 0x24, 0x4d,
+ 0x5b, 0x71, 0x9c, 0xe0, 0x81, 0xb3, 0x0f, 0x62, 0x5d, 0x42, 0xd0, 0x67,
+ 0xa0, 0xce, 0x8d, 0x52, 0x8d, 0x1d, 0x6f, 0xd2, 0x02, 0x1e, 0x7a, 0x45,
+ 0x08, 0x59, 0x76, 0xf8, 0x25, 0xd5, 0xb9, 0xf5, 0x7c, 0x37, 0xad, 0xbe,
+ 0xc7, 0xde, 0x15, 0x5f, 0x1a, 0xb9, 0xc9, 0x4a, 0x75, 0x14, 0x0d, 0x40,
+ 0x0b, 0xe7, 0x6b, 0xc2, 0x05, 0x27, 0xd9, 0x19, 0x3f, 0x52, 0xcd, 0x96,
+ 0x47, 0xb6, 0x55, 0x38, 0x2e, 0x9b, 0xa7, 0x92, 0x34, 0x78, 0xfe, 0xfc,
+ 0x47, 0x27, 0x07, 0xd5, 0x33, 0x51, 0x91, 0x29, 0xf8, 0x4f, 0x26, 0x67,
+ 0x00, 0x34, 0x51, 0x54, 0x0c, 0xd8, 0x7d, 0x9c, 0x88, 0xa5, 0x96, 0x22,
+ 0x11, 0xb7, 0x6c, 0x82, 0x0b, 0x2e, 0x75, 0xe7, 0x90, 0xbe, 0x6b, 0xfa,
+ 0xa2, 0x05, 0x10, 0xe2, 0x9b, 0x9f, 0xf9, 0xeb, 0x88, 0xa3, 0x97, 0x7f,
+ 0x3e, 0xac, 0xae, 0x16, 0xd3, 0x01, 0xec, 0xe7, 0xac, 0xfa, 0xa6, 0x13,
+ 0x71, 0x9c, 0xdb, 0x58, 0xd6, 0x73, 0x89, 0xb9, 0x22, 0x53, 0xd8, 0x21,
+ 0xa1, 0xb0, 0xfa, 0xaa, 0xf1, 0xe8, 0x14, 0xfc, 0xc4, 0x26, 0x9b, 0xc0,
+ 0xe6, 0xb1, 0x37, 0xc9, 0x93, 0x0b, 0xdf, 0x02, 0x79, 0xfe, 0xfc, 0xea,
+ 0xef, 0x3f, 0x7f, 0xb5, 0xff, 0x28, 0x79, 0x9a, 0x0c, 0x9f, 0x8c, 0xbf,
+ 0x4c, 0x1e, 0x8f, 0x1e, 0x3f, 0xfd, 0x6a, 0xef, 0xcb, 0xc7, 0xc9, 0xd3,
+ 0x47, 0xe3, 0xe4, 0xc9, 0x6e, 0xba, 0xfb, 0xd5, 0x78, 0x6f, 0x7f, 0x34,
+ 0x1a, 0xa7, 0x5f, 0x8e, 0x9e, 0x26, 0x9d, 0x1e, 0xa9, 0x64, 0x3a, 0x74,
+ 0x9f, 0xd5, 0xaa, 0xee, 0x95, 0x44, 0xfd, 0x17, 0x47, 0xf1, 0x6e, 0x74,
+ 0x95, 0xde, 0xea, 0x01, 0x63, 0xa7, 0x82, 0xc9, 0xc5, 0x48, 0x25, 0xcf,
+ 0xae, 0x7d, 0xb2, 0x0a, 0x84, 0x86, 0x59, 0x74, 0x68, 0x0d, 0xe4, 0xb4,
+ 0x2b, 0x5a, 0x45, 0x5d, 0x56, 0xce, 0xb6, 0x30, 0x16, 0xfc, 0x03, 0xf5,
+ 0x9a, 0xe1, 0xbc, 0x9a, 0x87, 0xff, 0x14, 0xcd, 0x56, 0xaf, 0x92, 0xe1,
+ 0x15, 0x41, 0x50, 0xc8, 0x83, 0x7d, 0x8e, 0x20, 0xe9, 0x46, 0xf2, 0x0b,
+ 0xea, 0x5a, 0x4e, 0x1b, 0xdf, 0x17, 0xf9, 0x62, 0x7e, 0x9e, 0x4f, 0xb2,
+ 0xe1, 0xdd, 0xb2, 0xe6, 0xdc, 0xc7, 0x6a, 0x5f, 0x9c, 0x30, 0x0b, 0xcf,
+ 0xca, 0xb4, 0xcd, 0x38, 0x4f, 0xf6, 0xc6, 0xb5, 0xed, 0x79, 0x2d, 0x21,
+ 0xe6, 0x0f, 0x50, 0xfa, 0x68, 0xfd, 0x89, 0x45, 0xb0, 0xb0, 0x0c, 0xff,
+ 0xad, 0xaf, 0xf6, 0xd9, 0x0b, 0x60, 0xa5, 0xde, 0x17, 0x0f, 0xb3, 0xf9,
+ 0x15, 0x86, 0xcf, 0x1d, 0x52, 0xae, 0x09, 0xb0, 0x57, 0xf9, 0x20, 0xac,
+ 0xef, 0xf5, 0x85, 0x01, 0x94, 0x42, 0x3e, 0xfa, 0xb6, 0xc8, 0x7b, 0x99,
+ 0x02, 0x87, 0xa9, 0xdd, 0x57, 0x12, 0x9c, 0x32, 0xcf, 0x30, 0x4e, 0x1e,
+ 0x5f, 0x79, 0x59, 0xe4, 0x75, 0x55, 0x0a, 0x18, 0x74, 0x47, 0xbf, 0xed,
+ 0x31, 0x56, 0xc5, 0x62, 0x8e, 0xba, 0x0f, 0x61, 0x10, 0xd2, 0xe7, 0xcd,
+ 0x73, 0x8d, 0x83, 0x17, 0x02, 0x65, 0x25, 0x09, 0x36, 0xf1, 0xed, 0x9b,
+ 0xd3, 0x83, 0xe6, 0x22, 0x99, 0x85, 0x24, 0x1f, 0x6f, 0x99, 0x6e, 0x8f,
+ 0xf2, 0x61, 0xb9, 0x5d, 0x96, 0x13, 0x5d, 0x08, 0x42, 0x4b, 0x0b, 0x5b,
+ 0x06, 0x64, 0xb8, 0xeb, 0x91, 0xc7, 0x47, 0xb4, 0xf7, 0x4a, 0xff, 0x27,
+ 0xc7, 0xcf, 0x5e, 0x9c, 0xc4, 0xf0, 0x6f, 0xff, 0x28, 0x3e, 0x3a, 0xe9,
+ 0xef, 0x3d, 0x7e, 0x12, 0x1f, 0x1f, 0xbf, 0xfa, 0x72, 0x4d, 0x12, 0xa9,
+ 0x26, 0xe5, 0xf5, 0x6e, 0x6f, 0xbf, 0x46, 0x0a, 0xf9, 0x94, 0x78, 0x77,
+ 0x3a, 0x8a, 0xcb, 0xd2, 0x8b, 0x4d, 0xc7, 0xfc, 0x75, 0x8e, 0x2e, 0x3d,
+ 0x91, 0x34, 0x0e, 0xba, 0xec, 0xe3, 0x6c, 0x46, 0x29, 0xe7, 0xfa, 0xb2,
+ 0xe6, 0x49, 0x71, 0xdc, 0x90, 0x89, 0x0b, 0xef, 0x06, 0x7c, 0xa8, 0x89,
+ 0xdc, 0x5a, 0x7f, 0x72, 0xad, 0xa1, 0x28, 0x53, 0xe7, 0x85, 0x41, 0x42,
+ 0x21, 0x44, 0xa7, 0xe5, 0xd6, 0xc3, 0xda, 0xa8, 0x5b, 0x22, 0x6d, 0x1e,
+ 0x6e, 0x3d, 0xac, 0xb5, 0xbe, 0xf6, 0x89, 0xae, 0x8f, 0xad, 0x5c, 0x27,
+ 0x98, 0xd3, 0x79, 0xb9, 0x9e, 0x8c, 0xf3, 0xa4, 0x61, 0x41, 0x34, 0x8f,
+ 0x85, 0xa3, 0xc2, 0xd4, 0x64, 0x9e, 0x44, 0xf6, 0x49, 0x6b, 0x3f, 0x56,
+ 0xc8, 0x18, 0xa3, 0xc5, 0x99, 0xc8, 0xca, 0x72, 0x19, 0x34, 0x09, 0xcb,
+ 0xfa, 0xf5, 0x40, 0x0d, 0xc4, 0xdf, 0xe1, 0x0e, 0x5c, 0x5c, 0x9f, 0x5e,
+ 0xf4, 0x82, 0xa3, 0x2d, 0x9b, 0xd2, 0x95, 0xa0, 0x24, 0xb6, 0x66, 0xc7,
+ 0x78, 0x49, 0x29, 0x1a, 0x02, 0xda, 0x66, 0xa0, 0x5f, 0xcc, 0xac, 0x87,
+ 0xda, 0xbf, 0x5b, 0x15, 0x1b, 0xc8, 0x3a, 0xeb, 0x8b, 0x54, 0x6c, 0x8c,
+ 0x51, 0x5a, 0x14, 0x79, 0xd1, 0x0b, 0x10, 0xad, 0x25, 0xd3, 0xd8, 0xbb,
+ 0x0c, 0x97, 0x93, 0x6d, 0x3a, 0xc9, 0xf0, 0x63, 0x8a, 0xba, 0x77, 0x36,
+ 0xf2, 0x7e, 0x84, 0x7c, 0xbf, 0xa0, 0x64, 0xa0, 0xda, 0xe6, 0xa8, 0x56,
+ 0x53, 0xf1, 0xc3, 0x29, 0x78, 0xdd, 0x2b, 0xa8, 0xe5, 0xe0, 0xc4, 0x7f,
+ 0x91, 0xa0, 0xe4, 0x71, 0x76, 0x19, 0x8e, 0x30, 0xb3, 0x69, 0x51, 0x15,
+ 0x66, 0x93, 0x6a, 0xf8, 0x18, 0x02, 0x31, 0x88, 0x41, 0x43, 0xed, 0x3d,
+ 0x25, 0xcb, 0xd1, 0xc6, 0xd2, 0x57, 0xc7, 0x7e, 0x74, 0x20, 0x20, 0xeb,
+ 0xaf, 0x60, 0x0e, 0x49, 0x64, 0x22, 0x93, 0x4d, 0x1f, 0xb5, 0x94, 0x24,
+ 0x04, 0x25, 0xa5, 0x03, 0xd1, 0xb4, 0x34, 0xa0, 0xe3, 0xd3, 0xf2, 0xff,
+ 0x10, 0x52, 0x66, 0x73, 0x51, 0xce, 0xe6, 0x35, 0xdc, 0x9c, 0x8c, 0x80,
+ 0x5b, 0x13, 0x4a, 0xb5, 0x0e, 0x49, 0xd6, 0xb9, 0x13, 0xa5, 0xc4, 0xd9,
+ 0x4c, 0x9e, 0xcc, 0x59, 0x99, 0x24, 0x37, 0x05, 0x3c, 0x23, 0x81, 0x1c,
+ 0xae, 0x64, 0x10, 0x3b, 0x31, 0x17, 0x18, 0xc1, 0x79, 0x27, 0xb9, 0x55,
+ 0x70, 0x04, 0x1c, 0x06, 0xa3, 0xb4, 0x7b, 0x9e, 0xdc, 0x84, 0xe7, 0xdf,
+ 0x26, 0xaf, 0xb2, 0xbb, 0x9c, 0x3f, 0xa0, 0x63, 0x3d, 0xd0, 0x28, 0x31,
+ 0x2b, 0xed, 0xca, 0xee, 0x05, 0xed, 0xb8, 0x92, 0x2d, 0xcd, 0x58, 0x89,
+ 0x19, 0x21, 0x81, 0x0a, 0x6e, 0x24, 0x27, 0x7f, 0xab, 0xff, 0xbb, 0xcc,
+ 0x25, 0xcb, 0x0e, 0x07, 0x8a, 0xe3, 0xe4, 0x31, 0x36, 0x4f, 0xad, 0xc1,
+ 0x84, 0xac, 0x19, 0x03, 0x92, 0xd2, 0xe6, 0x50, 0x97, 0xc6, 0xc8, 0xe3,
+ 0x38, 0x77, 0x75, 0x35, 0x03, 0xa3, 0x8b, 0xfc, 0x84, 0x74, 0x1a, 0x49,
+ 0x91, 0x6a, 0x17, 0x70, 0xd4, 0x1a, 0xa3, 0x92, 0x71, 0xc4, 0xbe, 0xe1,
+ 0xd5, 0x64, 0x5d, 0x3b, 0x03, 0xd0, 0xec, 0x6b, 0xb3, 0xcd, 0x61, 0xef,
+ 0x63, 0x6a, 0x1f, 0xb0, 0xde, 0x6c, 0xbb, 0x87, 0x64, 0xe8, 0x12, 0x14,
+ 0x13, 0x1e, 0xf7, 0x01, 0x23, 0x76, 0x7d, 0xbd, 0x15, 0xf2, 0xef, 0x39,
+ 0x8d, 0x89, 0x3c, 0x85, 0xb1, 0x07, 0xa0, 0xb9, 0x4e, 0xf2, 0x52, 0x9d,
+ 0xfc, 0xb0, 0x81, 0x0c, 0xde, 0xc9, 0x30, 0x3c, 0x06, 0xd2, 0xb3, 0xd1,
+ 0x1c, 0x3f, 0xc3, 0xdb, 0x33, 0x36, 0xa2, 0xbe, 0x18, 0x1c, 0x2d, 0xd8,
+ 0x28, 0x41, 0x73, 0x18, 0x5b, 0x0e, 0x0c, 0xee, 0xe7, 0x9f, 0x41, 0x5a,
+ 0xff, 0xb9, 0xd3, 0x1c, 0xdd, 0xcf, 0xc0, 0x47, 0x7f, 0x06, 0x5a, 0xfc,
+ 0x99, 0x01, 0x24, 0x7e, 0xbe, 0x46, 0x23, 0x0c, 0xfa, 0x88, 0xca, 0x09,
+ 0xc6, 0x27, 0xb0, 0x9a, 0x5b, 0xb7, 0xa1, 0x33, 0xac, 0x2a, 0x27, 0x80,
+ 0x78, 0x26, 0x1a, 0x76, 0xc8, 0x87, 0x57, 0x94, 0x73, 0xd2, 0x60, 0xf7,
+ 0x16, 0xd3, 0x99, 0xd8, 0x0a, 0x98, 0x56, 0x89, 0x0b, 0x30, 0x36, 0x79,
+ 0xb4, 0xf1, 0xbb, 0x0d, 0x87, 0xb2, 0xba, 0x21, 0xf3, 0x64, 0x91, 0xb2,
+ 0x30, 0x4c, 0x02, 0x5d, 0xe6, 0xe4, 0x2b, 0x2a, 0x24, 0x29, 0x19, 0x80,
+ 0x38, 0x82, 0xc8, 0x17, 0x4f, 0xce, 0xd0, 0x67, 0xca, 0xa0, 0x1d, 0xb9,
+ 0x35, 0xed, 0x20, 0x76, 0xc9, 0xfc, 0xea, 0xae, 0xc4, 0xeb, 0x52, 0xc6,
+ 0x63, 0xc4, 0x65, 0x1c, 0x62, 0x30, 0x14, 0x54, 0x99, 0x21, 0xef, 0x31,
+ 0x3e, 0x42, 0x66, 0x10, 0x64, 0x88, 0x86, 0x8b, 0xc2, 0x58, 0x36, 0xe2,
+ 0x0d, 0x13, 0x79, 0x41, 0x3c, 0x92, 0xb8, 0x65, 0x4b, 0xaa, 0xaa, 0xcd,
+ 0xc1, 0xf2, 0xba, 0x73, 0x1c, 0x08, 0xb9, 0x9b, 0xf5, 0x65, 0xf1, 0x72,
+ 0x11, 0x5b, 0x47, 0xc6, 0x5d, 0xe3, 0x03, 0x6c, 0x7b, 0x6f, 0xee, 0x55,
+ 0x6a, 0x50, 0x97, 0x74, 0x1e, 0x98, 0x97, 0x66, 0x5d, 0xfc, 0x71, 0x4c,
+ 0x28, 0xe6, 0x73, 0x46, 0x1e, 0x47, 0xf2, 0xa0, 0x50, 0xbc, 0x3b, 0x44,
+ 0xe9, 0x98, 0x4f, 0x3c, 0xde, 0x2b, 0x79, 0x47, 0x8a, 0xdd, 0x8a, 0x87,
+ 0x1d, 0x11, 0xb0, 0x6f, 0x66, 0x82, 0x51, 0xdc, 0xcf, 0xc9, 0x73, 0x32,
+ 0xa4, 0xa0, 0x3e, 0x8e, 0x1c, 0x55, 0xbc, 0x8f, 0x80, 0x45, 0x06, 0xa5,
+ 0x0b, 0x4f, 0x41, 0xc0, 0xf1, 0x7c, 0xcd, 0x20, 0xae, 0x9e, 0x9a, 0xd0,
+ 0xf1, 0xb4, 0x89, 0xdf, 0xc1, 0x0c, 0x62, 0xbd, 0x43, 0x23, 0xd1, 0xdb,
+ 0x62, 0xff, 0xa9, 0xca, 0x88, 0x16, 0x42, 0x33, 0xcd, 0x47, 0xa4, 0x5b,
+ 0xe7, 0x6e, 0x6d, 0xfa, 0x06, 0x14, 0xfd, 0x04, 0x9e, 0xc2, 0x41, 0x21,
+ 0xc3, 0x12, 0x64, 0xe7, 0xc8, 0x8f, 0x27, 0x8c, 0x93, 0x4b, 0x34, 0xe2,
+ 0x7c, 0x8d, 0xa8, 0x62, 0x98, 0x5a, 0x87, 0x7f, 0x6d, 0xef, 0xf6, 0x76,
+ 0x42, 0x33, 0xc0, 0x55, 0x17, 0x00, 0x25, 0x71, 0xae, 0xe1, 0xda, 0x56,
+ 0x79, 0xbe, 0x7a, 0x8c, 0xbc, 0x2c, 0x70, 0xf5, 0xcd, 0xa1, 0x87, 0xf0,
+ 0x68, 0xe2, 0xb3, 0xe6, 0x27, 0x64, 0x59, 0x81, 0x5e, 0xbe, 0x36, 0x50,
+ 0xb9, 0xb3, 0x9c, 0x10, 0x98, 0x40, 0x56, 0x9a, 0x4c, 0x6a, 0xa0, 0xdb,
+ 0x9d, 0x96, 0xf5, 0x9e, 0x51, 0x2a, 0x5a, 0xda, 0x5c, 0xf6, 0x26, 0x92,
+ 0x94, 0x09, 0xce, 0xc4, 0xc5, 0x9f, 0x49, 0x00, 0x05, 0xd0, 0xc7, 0xa6,
+ 0x24, 0x23, 0x60, 0x3e, 0x80, 0x48, 0xfe, 0x2c, 0x5b, 0x6e, 0x71, 0xea,
+ 0x2a, 0x83, 0xbe, 0x25, 0x2d, 0x3e, 0x06, 0xe7, 0xb8, 0xda, 0x60, 0xea,
+ 0x8c, 0x7c, 0x81, 0x24, 0x5a, 0x74, 0x11, 0x30, 0x7a, 0xc6, 0x1e, 0x4d,
+ 0x73, 0x46, 0x43, 0xbe, 0x78, 0x14, 0xec, 0x59, 0x72, 0xd1, 0xa6, 0x6b,
+ 0x6d, 0x67, 0x25, 0x8f, 0x46, 0x5c, 0x7f, 0x7a, 0xef, 0x2b, 0x43, 0xf6,
+ 0x62, 0xb9, 0x08, 0xd7, 0x5d, 0x01, 0x25, 0x48, 0xb1, 0xf2, 0x88, 0x7b,
+ 0x77, 0x2b, 0xea, 0xfc, 0x7f, 0x28, 0x58, 0xfc, 0xc5, 0xd9, 0xab, 0x93,
+ 0xed, 0x1e, 0x2e, 0x4e, 0x31, 0xf4, 0x88, 0x62, 0x0f, 0x1f, 0xfb, 0xf1,
+ 0xd9, 0xf7, 0xef, 0x8e, 0xcf, 0x5e, 0x3f, 0x7f, 0xf9, 0x7d, 0xfd, 0xe1,
+ 0x68, 0xd3, 0xcd, 0x4e, 0xd9, 0xef, 0xed, 0x6c, 0x35, 0x5f, 0xdf, 0xc7,
+ 0xd7, 0x97, 0x76, 0xf0, 0x68, 0x4b, 0x83, 0x2d, 0x0f, 0xa2, 0xce, 0xef,
+ 0xdf, 0xf6, 0x4f, 0xde, 0x9c, 0xbf, 0x39, 0x43, 0x68, 0xca, 0xdf, 0xff,
+ 0xdc, 0xf6, 0xca, 0xe3, 0xda, 0x2b, 0x47, 0xe7, 0xe7, 0xcf, 0x8e, 0x2e,
+ 0x8e, 0xda, 0x1f, 0x7f, 0xd2, 0xde, 0xc3, 0xd1, 0x1c, 0x61, 0x41, 0x39,
+ 0x10, 0xe6, 0x19, 0xd0, 0x5c, 0x6b, 0x1b, 0x4f, 0xb7, 0x80, 0x1f, 0xce,
+ 0x62, 0xd3, 0x0e, 0x5a, 0x38, 0x2e, 0xd3, 0x6a, 0x7e, 0xb3, 0xc8, 0x46,
+ 0x9c, 0x99, 0x2d, 0x9a, 0xc8, 0x55, 0xae, 0x11, 0xe5, 0x68, 0xc0, 0x6d,
+ 0x36, 0xf3, 0xe5, 0x16, 0x5c, 0x08, 0x3a, 0x9a, 0xae, 0x44, 0xe3, 0xe3,
+ 0xbb, 0x24, 0xd4, 0x4b, 0xe7, 0x9a, 0x67, 0x29, 0xe6, 0x44, 0xb9, 0x64,
+ 0x43, 0x91, 0xa6, 0x8c, 0x09, 0x38, 0x42, 0x61, 0x3f, 0xbf, 0x46, 0xb6,
+ 0x8b, 0x0c, 0xcf, 0x52, 0x6d, 0x6e, 0xef, 0x15, 0x0d, 0x74, 0x57, 0x3b,
+ 0xf3, 0x04, 0x4e, 0x8c, 0xd7, 0xdc, 0x70, 0x51, 0xe9, 0x09, 0x20, 0x12,
+ 0x1a, 0x05, 0x6e, 0x33, 0x83, 0xd5, 0x89, 0x22, 0x93, 0xde, 0x41, 0x2c,
+ 0x00, 0x28, 0x85, 0xe2, 0xe5, 0xa6, 0x56, 0x40, 0x10, 0x05, 0x74, 0x56,
+ 0x81, 0xb0, 0xa0, 0x77, 0xfc, 0x55, 0x57, 0x51, 0x8f, 0x18, 0xa4, 0x8c,
+ 0xaf, 0xb7, 0xbc, 0x98, 0x52, 0x00, 0xe7, 0x19, 0x05, 0xce, 0x6b, 0x7e,
+ 0x00, 0xc3, 0xaf, 0xb5, 0x44, 0x19, 0xbb, 0x47, 0x44, 0x9a, 0x26, 0x43,
+ 0x76, 0x00, 0x49, 0x40, 0x0e, 0xd7, 0xa7, 0x03, 0x12, 0x70, 0x2f, 0xf2,
+ 0xb5, 0x03, 0x6b, 0xff, 0xd1, 0xb5, 0xfc, 0xa8, 0xae, 0xdf, 0x0b, 0xa2,
+ 0x00, 0x0c, 0x11, 0x25, 0xeb, 0xc3, 0xb1, 0x94, 0x02, 0x49, 0x26, 0x02,
+ 0x85, 0xe6, 0xd9, 0xea, 0x5e, 0x25, 0xb7, 0xd9, 0x74, 0x31, 0xa5, 0x59,
+ 0xe1, 0xa4, 0xe4, 0x31, 0xc1, 0x82, 0x26, 0x27, 0x05, 0xc7, 0x73, 0xd2,
+ 0xc0, 0x37, 0xca, 0xc8, 0xb1, 0xd8, 0x85, 0xee, 0x49, 0x90, 0x2a, 0x7a,
+ 0x26, 0x3e, 0x4c, 0x91, 0x69, 0xa6, 0x59, 0x55, 0x36, 0xac, 0x7d, 0x20,
+ 0xde, 0x24, 0x18, 0xfa, 0x06, 0xd3, 0xd1, 0x08, 0x57, 0x17, 0x3b, 0xba,
+ 0x06, 0x21, 0x2d, 0xf2, 0xa8, 0x93, 0x84, 0x92, 0x16, 0x59, 0x3e, 0x32,
+ 0x81, 0x0f, 0x9a, 0xb6, 0x1a, 0xc5, 0xec, 0x9a, 0x22, 0x9b, 0x7f, 0xc8,
+ 0x98, 0x96, 0xde, 0x62, 0x1a, 0x72, 0xd4, 0xa7, 0xb4, 0x77, 0xcd, 0x28,
+ 0x79, 0xda, 0xdb, 0xdf, 0x43, 0x8c, 0xd3, 0x5a, 0x18, 0x04, 0x23, 0x6d,
+ 0xa3, 0x9d, 0x22, 0x9b, 0x2a, 0xa0, 0x54, 0xd9, 0x12, 0xda, 0xd9, 0x58,
+ 0x74, 0x81, 0x93, 0x14, 0xad, 0x6f, 0x99, 0xd9, 0xaf, 0x19, 0x9e, 0x7c,
+ 0x6f, 0x88, 0x97, 0x72, 0x09, 0x55, 0xd5, 0xc6, 0xb2, 0xb7, 0x13, 0x24,
+ 0xac, 0xfb, 0xbd, 0xbc, 0xdf, 0xdb, 0x7d, 0xb4, 0x1e, 0x5d, 0x12, 0x0e,
+ 0xd5, 0x34, 0xb9, 0xa5, 0x26, 0x82, 0x84, 0x99, 0x47, 0x87, 0x2f, 0xce,
+ 0xfa, 0x17, 0xbb, 0x07, 0xe7, 0x67, 0x6f, 0xe0, 0x5f, 0xfc, 0x7d, 0x8f,
+ 0x7e, 0xdf, 0xfb, 0xa6, 0xd9, 0x2c, 0xc1, 0xc3, 0x27, 0x91, 0x41, 0x8b,
+ 0x20, 0xd9, 0x90, 0xce, 0xbe, 0xe8, 0x98, 0x4e, 0x43, 0xa8, 0xd2, 0x64,
+ 0x28, 0x9e, 0x0f, 0x0d, 0x2a, 0x51, 0x93, 0x32, 0x9d, 0xae, 0x34, 0xd8,
+ 0x5f, 0x8d, 0x8f, 0x6e, 0xde, 0x42, 0x56, 0xa9, 0x1c, 0x2b, 0xe0, 0x70,
+ 0x8a, 0x3d, 0xd7, 0x34, 0x9f, 0x30, 0xca, 0x97, 0x00, 0x44, 0xb0, 0x65,
+ 0x07, 0x6e, 0x73, 0x8c, 0x01, 0xaf, 0x7f, 0x35, 0x9c, 0x80, 0x86, 0x95,
+ 0x62, 0x24, 0xe6, 0x28, 0x15, 0xae, 0x31, 0xf1, 0x61, 0x8c, 0x49, 0x17,
+ 0x63, 0xfc, 0x89, 0x82, 0x71, 0x84, 0x1b, 0x23, 0xa3, 0xa3, 0xa4, 0xde,
+ 0x6d, 0x18, 0x4f, 0x42, 0xd0, 0xad, 0x8a, 0x9a, 0xd4, 0x6c, 0x8e, 0x32,
+ 0x70, 0x5c, 0xd3, 0xba, 0xe2, 0x60, 0xbf, 0x3e, 0xbb, 0x88, 0x12, 0xb2,
+ 0x0a, 0xf1, 0x52, 0x62, 0xea, 0x26, 0x72, 0xe8, 0x6d, 0xb2, 0x6f, 0xc9,
+ 0xa9, 0x0f, 0xca, 0x1f, 0xc4, 0x35, 0x2f, 0x4e, 0xfb, 0xdb, 0x68, 0x58,
+ 0xe7, 0x60, 0xf7, 0xfe, 0xeb, 0x97, 0xdd, 0x9a, 0xc7, 0xce, 0x0d, 0x1c,
+ 0xdd, 0x42, 0x05, 0x54, 0x8a, 0x64, 0x34, 0xd7, 0xce, 0xb9, 0x55, 0x0d,
+ 0x1e, 0x76, 0x2f, 0xea, 0xd0, 0x86, 0x76, 0x18, 0x8b, 0xa4, 0x43, 0xfb,
+ 0xda, 0x61, 0x60, 0x0a, 0xd2, 0x4f, 0x69, 0xbc, 0x08, 0x72, 0x7f, 0xe7,
+ 0x63, 0x3e, 0x91, 0xb9, 0x0e, 0x31, 0x43, 0xf1, 0x82, 0xe8, 0xa0, 0x72,
+ 0x88, 0x13, 0xa3, 0x49, 0x75, 0xa4, 0xe1, 0x3d, 0x6e, 0x98, 0xda, 0x85,
+ 0xdf, 0xb1, 0x59, 0x22, 0xda, 0x41, 0x30, 0xec, 0x87, 0xfa, 0xb1, 0x4d,
+ 0x9b, 0xb6, 0x61, 0x60, 0xe4, 0x9c, 0xe5, 0xa7, 0x94, 0x38, 0x90, 0x2d,
+ 0xc2, 0x74, 0xb3, 0x4b, 0x0c, 0xad, 0xf2, 0xc2, 0x16, 0xcd, 0x40, 0x9a,
+ 0x14, 0x7e, 0x04, 0x52, 0x2d, 0x7c, 0xdb, 0x71, 0x2c, 0x3a, 0x95, 0x97,
+ 0x28, 0x48, 0xe9, 0x2b, 0x85, 0xaa, 0x91, 0x3a, 0x20, 0x64, 0x9b, 0x55,
+ 0x40, 0x83, 0x2a, 0x59, 0xb5, 0x43, 0x09, 0xdd, 0xf8, 0xc1, 0x15, 0xdc,
+ 0x41, 0x0f, 0x12, 0x55, 0x33, 0x10, 0x10, 0x68, 0x51, 0xfd, 0xc9, 0x79,
+ 0xde, 0x6c, 0x8e, 0xcb, 0xf0, 0xe0, 0xd5, 0x81, 0xf1, 0xf8, 0xe8, 0xfd,
+ 0xdf, 0xdd, 0x7b, 0xda, 0xdb, 0x81, 0xff, 0x83, 0x7d, 0x11, 0x6b, 0x11,
+ 0xd5, 0xfd, 0xb0, 0xd5, 0x1d, 0xcc, 0x93, 0x0e, 0x06, 0x9d, 0x0b, 0x45,
+ 0xd7, 0xcb, 0x8b, 0xcb, 0x4e, 0xf8, 0xba, 0x55, 0xfe, 0xf0, 0x49, 0xaf,
+ 0x5c, 0xed, 0xc4, 0xe1, 0x66, 0x07, 0x8f, 0x1e, 0xed, 0x1f, 0xe8, 0xdf,
+ 0x70, 0x94, 0x0e, 0xbe, 0x84, 0x0f, 0x3e, 0x04, 0xd7, 0xe7, 0x05, 0x32,
+ 0x41, 0x86, 0x0d, 0xa8, 0x87, 0xf3, 0x7e, 0x55, 0x33, 0xc6, 0x37, 0x01,
+ 0x17, 0xa2, 0xc3, 0x7c, 0x3c, 0x86, 0x4b, 0xa1, 0x79, 0x41, 0x1f, 0xcb,
+ 0x23, 0xdb, 0x6f, 0xa4, 0x44, 0x96, 0x49, 0x7f, 0xae, 0x57, 0x72, 0xa0,
+ 0xf0, 0x6e, 0x97, 0x3d, 0x72, 0x73, 0xbd, 0x50, 0x56, 0x65, 0xed, 0x09,
+ 0x1b, 0xc5, 0x87, 0xcb, 0x82, 0xbc, 0xb3, 0x09, 0xb8, 0xba, 0x04, 0x1e,
+ 0xab, 0x7c, 0x9f, 0xcd, 0xe7, 0xa8, 0x2a, 0x51, 0x59, 0x1c, 0x3c, 0x21,
+ 0x26, 0x5a, 0x81, 0x82, 0x66, 0x18, 0xcb, 0x5d, 0x42, 0xfa, 0x09, 0xdb,
+ 0x40, 0xa3, 0x1a, 0x06, 0xe9, 0xd8, 0xf7, 0xb9, 0x67, 0x3c, 0x1a, 0x17,
+ 0x56, 0x56, 0xe2, 0x9e, 0x46, 0x08, 0x21, 0x3b, 0x4b, 0x84, 0x9b, 0x8d,
+ 0x1d, 0xdc, 0x45, 0x81, 0xb9, 0xe9, 0x06, 0x18, 0x8d, 0xc5, 0xfc, 0x30,
+ 0x74, 0xd3, 0x7f, 0xf9, 0xdf, 0x27, 0xb6, 0x74, 0x85, 0xa9, 0x0d, 0xc1,
+ 0xe9, 0xbd, 0xa1, 0x5c, 0xee, 0xa8, 0x13, 0x1f, 0x47, 0x31, 0xe1, 0x6a,
+ 0x3b, 0x31, 0x6d, 0x79, 0xc3, 0xa1, 0x41, 0xf2, 0x3d, 0xdd, 0xfe, 0xa4,
+ 0x9e, 0x6e, 0x23, 0xf6, 0x9e, 0x7f, 0x07, 0x49, 0x95, 0x33, 0x5e, 0x6c,
+ 0x83, 0x73, 0x81, 0x67, 0xb1, 0x12, 0x14, 0x16, 0x37, 0xd5, 0x96, 0x95,
+ 0xf8, 0xed, 0x6c, 0x86, 0xaa, 0x3c, 0x45, 0x91, 0x79, 0x39, 0xa8, 0x8a,
+ 0xf8, 0xc4, 0x80, 0xa3, 0x8b, 0x16, 0x78, 0x04, 0x97, 0xca, 0xee, 0xe3,
+ 0x91, 0xfc, 0xb0, 0x38, 0xe5, 0x36, 0xe1, 0x04, 0x56, 0xf1, 0xfe, 0xc2,
+ 0xc8, 0x71, 0xf4, 0x68, 0x67, 0x67, 0xbd, 0x53, 0x68, 0x11, 0x4d, 0x9c,
+ 0x53, 0x36, 0xe4, 0x53, 0x86, 0xd5, 0xe7, 0xe2, 0x5f, 0x93, 0x82, 0xbd,
+ 0x08, 0xad, 0x28, 0x74, 0x5b, 0xd6, 0x88, 0x86, 0x69, 0xac, 0xe4, 0xb6,
+ 0x26, 0x6a, 0x35, 0x78, 0xb5, 0xba, 0xfb, 0x6c, 0xb1, 0x4b, 0x48, 0xf8,
+ 0xa4, 0xd2, 0x76, 0x4d, 0x6e, 0xe7, 0x01, 0xc6, 0x19, 0xd8, 0xa2, 0x1e,
+ 0x46, 0x29, 0x98, 0xca, 0x21, 0x94, 0x90, 0x21, 0x6d, 0x28, 0x3a, 0x7a,
+ 0xe6, 0x49, 0x1b, 0xd9, 0x2c, 0x66, 0x3c, 0x36, 0x7d, 0x96, 0x82, 0x29,
+ 0xb0, 0xf0, 0x90, 0x1c, 0x0f, 0xa6, 0x18, 0xb6, 0x33, 0x54, 0x8a, 0x98,
+ 0x41, 0x18, 0x3c, 0xd8, 0x6d, 0x10, 0x9c, 0xbf, 0xc7, 0x85, 0x4d, 0x4c,
+ 0xe7, 0xa8, 0xa2, 0xbd, 0x9f, 0xe5, 0x37, 0x33, 0x74, 0x65, 0xb1, 0x37,
+ 0xca, 0x54, 0xf0, 0x62, 0x7b, 0x5a, 0x95, 0xce, 0x82, 0x99, 0xf4, 0x7c,
+ 0xa0, 0xcd, 0xb3, 0xf2, 0xa8, 0x63, 0xba, 0x7b, 0x9d, 0x56, 0x12, 0x82,
+ 0xca, 0x83, 0xd7, 0xec, 0x78, 0x4a, 0xb0, 0x7f, 0x39, 0xf6, 0x11, 0xfa,
+ 0x89, 0x02, 0xd5, 0x75, 0xc1, 0x57, 0x0b, 0xc7, 0xf0, 0x70, 0xa9, 0x17,
+ 0x34, 0xc5, 0x77, 0xe1, 0x60, 0x76, 0xd4, 0x2f, 0xc0, 0x33, 0x08, 0xb3,
+ 0x28, 0x1d, 0x8e, 0xad, 0xc8, 0x12, 0x4e, 0x66, 0x31, 0xa5, 0x16, 0xd9,
+ 0x0b, 0xe4, 0x86, 0xc3, 0x11, 0x22, 0x38, 0xc5, 0xaa, 0x9a, 0xde, 0x34,
+ 0x70, 0x31, 0x10, 0x14, 0xed, 0x80, 0x26, 0x61, 0x28, 0x6e, 0x31, 0x52,
+ 0xd3, 0x8f, 0x0e, 0x14, 0xae, 0x05, 0xb1, 0x9e, 0xdd, 0x24, 0x44, 0x69,
+ 0xa6, 0xfd, 0x50, 0xf6, 0xa9, 0x13, 0x29, 0xaf, 0xa4, 0x6c, 0x21, 0x75,
+ 0x43, 0x7e, 0xd0, 0xd4, 0x10, 0x49, 0x84, 0x24, 0xef, 0xd4, 0xc1, 0x11,
+ 0x08, 0x25, 0x82, 0xaa, 0x35, 0xab, 0xc2, 0x6b, 0x78, 0x73, 0x95, 0x7b,
+ 0xc6, 0x7d, 0x2e, 0x1b, 0x59, 0x87, 0xdb, 0xc2, 0x96, 0x30, 0x25, 0x88,
+ 0x1c, 0x1e, 0xd7, 0x94, 0x6d, 0xc4, 0xa2, 0x23, 0xca, 0x12, 0xe4, 0x1c,
+ 0x85, 0xf7, 0x26, 0x69, 0x42, 0x99, 0xdf, 0x21, 0xf0, 0x32, 0x98, 0x04,
+ 0x70, 0x9d, 0x41, 0x5e, 0x1a, 0x92, 0x41, 0xe8, 0xa8, 0x04, 0x96, 0xa2,
+ 0xa0, 0xcb, 0x42, 0x60, 0xb3, 0xb5, 0x14, 0x9e, 0x22, 0xfa, 0xf8, 0xcc,
+ 0x9d, 0x24, 0xe2, 0xeb, 0x0c, 0x81, 0xe0, 0x80, 0x4e, 0x40, 0xf6, 0x41,
+ 0x3f, 0x01, 0x11, 0x0f, 0x35, 0xc8, 0x80, 0xd8, 0x57, 0x54, 0xeb, 0x51,
+ 0xd0, 0xe2, 0xe0, 0x20, 0x5e, 0x61, 0x2c, 0x7d, 0x99, 0x55, 0x8b, 0xe0,
+ 0x99, 0x68, 0x8b, 0xf4, 0xb1, 0xfc, 0xa3, 0xae, 0xdc, 0xad, 0x0c, 0xe9,
+ 0xf8, 0x88, 0xec, 0x73, 0xc8, 0xf1, 0x53, 0x31, 0x19, 0x73, 0xdb, 0x2c,
+ 0x06, 0xf7, 0x7b, 0x33, 0x1e, 0x90, 0xcd, 0x3f, 0xe6, 0xb2, 0xa9, 0x6b,
+ 0x31, 0xd9, 0x81, 0xe5, 0xa7, 0x0e, 0x97, 0x75, 0x3e, 0x8d, 0x0e, 0x91,
+ 0x73, 0xfc, 0xcf, 0x0a, 0x36, 0x7b, 0x9e, 0x88, 0xe7, 0xdf, 0x05, 0xbd,
+ 0x26, 0x00, 0x1a, 0xb9, 0xae, 0x15, 0x49, 0x81, 0xdb, 0x54, 0x69, 0xea,
+ 0x65, 0x28, 0xff, 0x80, 0x3c, 0xf9, 0xb0, 0xa0, 0x93, 0x3b, 0xdb, 0xa2,
+ 0x83, 0x10, 0x63, 0xca, 0x32, 0xd9, 0x22, 0x56, 0xa6, 0x8b, 0xa6, 0xd9,
+ 0xb6, 0xd3, 0x07, 0x55, 0x8a, 0xfb, 0xc4, 0x58, 0x7f, 0x5b, 0xcc, 0x30,
+ 0x12, 0x7e, 0x28, 0x18, 0x00, 0xcc, 0x12, 0xc9, 0xc9, 0x29, 0x8a, 0x00,
+ 0x33, 0xb3, 0x66, 0x73, 0x58, 0x43, 0x77, 0xf7, 0xeb, 0xbf, 0x1d, 0x9d,
+ 0xbe, 0x3d, 0xd9, 0xfd, 0x53, 0x14, 0xe1, 0x9f, 0x7b, 0xfc, 0xe7, 0x5e,
+ 0x47, 0x95, 0x4f, 0x61, 0x17, 0xbc, 0x57, 0x06, 0x14, 0x80, 0xc6, 0x10,
+ 0x44, 0x41, 0x54, 0x34, 0x1e, 0x52, 0x0d, 0xb8, 0x1c, 0x92, 0x2d, 0x5e,
+ 0x44, 0x93, 0x02, 0x1a, 0x33, 0x68, 0x56, 0x2a, 0xf4, 0x6f, 0x96, 0x5b,
+ 0x21, 0xeb, 0x85, 0x4d, 0xa1, 0x53, 0x35, 0x97, 0xa3, 0x2d, 0x08, 0xb7,
+ 0x71, 0xb4, 0x48, 0x45, 0xd0, 0x71, 0x30, 0x73, 0xba, 0x62, 0x55, 0xf6,
+ 0xfc, 0xa5, 0x8a, 0xa6, 0x5e, 0x3a, 0xc0, 0xe9, 0x74, 0x24, 0xee, 0x84,
+ 0x87, 0xc2, 0x7f, 0x97, 0x69, 0xa5, 0x23, 0xa7, 0x7d, 0xc5, 0x94, 0x08,
+ 0x72, 0x63, 0x87, 0x0e, 0x1e, 0x5c, 0x42, 0x1b, 0x5f, 0x6f, 0x44, 0xe5,
+ 0xdd, 0x74, 0x90, 0x4f, 0x4c, 0x44, 0x87, 0x10, 0x86, 0x4d, 0xe3, 0xe0,
+ 0xbc, 0x07, 0x83, 0xe1, 0x28, 0x4e, 0x37, 0x3f, 0x59, 0x22, 0xb1, 0x1e,
+ 0x31, 0x8d, 0x10, 0x70, 0x71, 0x84, 0x2a, 0xc2, 0x8e, 0xd3, 0xfb, 0x89,
+ 0x22, 0x05, 0x2e, 0x5a, 0x13, 0x1c, 0xe8, 0x2c, 0x28, 0xd3, 0x2e, 0x03,
+ 0xb7, 0x02, 0x8b, 0x0e, 0x34, 0x6f, 0xd7, 0xcf, 0x46, 0x97, 0x41, 0x16,
+ 0x88, 0x37, 0xa1, 0x72, 0x22, 0xa6, 0x48, 0x2e, 0xbf, 0x2d, 0x19, 0x03,
+ 0x88, 0xcd, 0x7a, 0xa7, 0xa8, 0x8e, 0xb8, 0x37, 0x7a, 0xad, 0xd2, 0xac,
+ 0xf1, 0xdd, 0x66, 0x73, 0x03, 0x91, 0x93, 0x5d, 0x28, 0x76, 0xb5, 0xb7,
+ 0x1a, 0x10, 0x96, 0xa2, 0x56, 0xb6, 0x8d, 0xbc, 0x38, 0x5a, 0x4d, 0xc4,
+ 0xe3, 0xb3, 0x1a, 0xb8, 0x4a, 0x50, 0x5d, 0xe4, 0x1b, 0xe9, 0x59, 0x27,
+ 0xea, 0xc4, 0x62, 0x78, 0x91, 0xfa, 0x40, 0x11, 0xa4, 0x30, 0x1f, 0xd0,
+ 0x4f, 0x36, 0xe1, 0x86, 0xf6, 0x1c, 0xd0, 0x36, 0xa8, 0x46, 0xf7, 0x4c,
+ 0xfd, 0x8f, 0xb6, 0x24, 0xc8, 0x12, 0xaf, 0xa3, 0x81, 0xfe, 0x91, 0xac,
+ 0xaa, 0xdc, 0x19, 0x87, 0x89, 0xfc, 0x10, 0x79, 0x80, 0x9b, 0xe1, 0x23,
+ 0x8b, 0x49, 0xfd, 0x13, 0x07, 0xbb, 0x5b, 0xad, 0x42, 0xc8, 0x73, 0x14,
+ 0xe4, 0x0d, 0x23, 0xd7, 0x0c, 0x03, 0x80, 0xfe, 0xef, 0x26, 0xe9, 0x96,
+ 0x2a, 0xba, 0x2a, 0xc2, 0x6c, 0xbf, 0xca, 0x7f, 0x83, 0xc1, 0x27, 0xe1,
+ 0x23, 0xea, 0x0a, 0x36, 0xad, 0x23, 0xb7, 0xda, 0xbe, 0x44, 0xdd, 0x08,
+ 0xed, 0xd4, 0xac, 0x3c, 0x54, 0xe9, 0x96, 0x6a, 0x98, 0xbd, 0x66, 0x11,
+ 0xcd, 0xcb, 0x66, 0x40, 0xa6, 0xe1, 0xc9, 0x67, 0x8e, 0x95, 0x8c, 0x4c,
+ 0xcb, 0xd1, 0x45, 0x2e, 0x71, 0xb7, 0x86, 0xba, 0x84, 0xc7, 0x04, 0x74,
+ 0x70, 0x73, 0xcb, 0xb5, 0x8b, 0x17, 0x2e, 0x96, 0xb9, 0xb3, 0x56, 0xee,
+ 0x8e, 0x70, 0x3d, 0x18, 0x27, 0x49, 0x8d, 0xb3, 0x2e, 0x46, 0x5e, 0xe2,
+ 0x1d, 0xa1, 0x83, 0x1b, 0xfc, 0x16, 0x47, 0x6a, 0xd1, 0x10, 0x6f, 0xe4,
+ 0x6d, 0x0c, 0x51, 0x4a, 0x8c, 0x9d, 0xe1, 0xc4, 0x59, 0x0a, 0x49, 0xfd,
+ 0xba, 0x3c, 0x64, 0xf5, 0xa0, 0x09, 0x27, 0xa3, 0x91, 0x84, 0x96, 0x11,
+ 0xf6, 0x12, 0x89, 0x17, 0xf2, 0x36, 0x46, 0x20, 0xda, 0x61, 0x8b, 0xa8,
+ 0xb7, 0x49, 0xc0, 0xb4, 0x9e, 0x19, 0x28, 0xa9, 0x74, 0x81, 0x19, 0x2e,
+ 0x12, 0xcd, 0x1b, 0x83, 0x98, 0x1b, 0x2a, 0x89, 0x30, 0xd8, 0x2b, 0x81,
+ 0x05, 0x51, 0x0f, 0xcc, 0xaa, 0x28, 0xa1, 0xf8, 0x90, 0x24, 0x21, 0xa2,
+ 0xc0, 0x48, 0xe5, 0x92, 0x2b, 0x65, 0x6a, 0xf5, 0xca, 0x68, 0x90, 0x53,
+ 0xde, 0x4f, 0x93, 0x90, 0x13, 0xeb, 0x46, 0x94, 0x42, 0x6c, 0x7e, 0x08,
+ 0xfc, 0x88, 0x8b, 0x55, 0x1b, 0x7d, 0x82, 0x44, 0xa2, 0x46, 0x11, 0x0c,
+ 0x2c, 0x34, 0x22, 0x85, 0x30, 0xa8, 0x27, 0x43, 0x7f, 0x21, 0x28, 0x5a,
+ 0x87, 0x28, 0x5c, 0x4f, 0x51, 0xad, 0x8e, 0x17, 0x1b, 0xa9, 0xa6, 0x01,
+ 0x82, 0x31, 0x4d, 0x7f, 0xb8, 0x51, 0xa7, 0x4d, 0x2c, 0x1a, 0xc8, 0x64,
+ 0x5b, 0x23, 0x9f, 0x57, 0xbf, 0x05, 0x02, 0xd2, 0x8a, 0x36, 0x5a, 0xc5,
+ 0xa1, 0xa6, 0x7a, 0x49, 0x06, 0xa0, 0x5f, 0xf1, 0xc3, 0x5f, 0x17, 0xb3,
+ 0xf7, 0xb1, 0x94, 0x10, 0x8a, 0x55, 0xee, 0x77, 0x2d, 0xe2, 0x74, 0x4f,
+ 0xc5, 0x70, 0x67, 0x96, 0x21, 0x57, 0xb4, 0xde, 0x75, 0xc0, 0x12, 0x7f,
+ 0x55, 0xbc, 0x45, 0xc3, 0xce, 0x6d, 0x8d, 0x12, 0x13, 0x0e, 0xe1, 0xd4,
+ 0x7d, 0x6d, 0xf2, 0x5b, 0xea, 0x48, 0x4e, 0xd8, 0x2c, 0x45, 0xf0, 0x8f,
+ 0x84, 0x4a, 0x96, 0xa1, 0x65, 0xcf, 0x41, 0x82, 0xc8, 0x60, 0x53, 0x8a,
+ 0xe1, 0x15, 0x81, 0x5a, 0xa1, 0x25, 0x31, 0x1d, 0xf1, 0x0d, 0xd8, 0xbc,
+ 0x0d, 0xf8, 0xfe, 0xe0, 0x56, 0x45, 0x86, 0x93, 0x46, 0x90, 0xe2, 0xf0,
+ 0x4e, 0x86, 0xef, 0x95, 0xb7, 0x79, 0xa3, 0x0d, 0x49, 0xdd, 0x14, 0x3a,
+ 0x79, 0x45, 0x71, 0x43, 0x93, 0xd2, 0x5e, 0x2d, 0xe6, 0x35, 0x7b, 0xc7,
+ 0x90, 0x81, 0x64, 0xe6, 0x54, 0x5e, 0x6b, 0x5e, 0x2e, 0xe8, 0xfb, 0x1e,
+ 0x7b, 0x83, 0x02, 0x11, 0x41, 0xc6, 0x85, 0xfa, 0x36, 0x9e, 0xac, 0x3b,
+ 0xc5, 0x97, 0xc5, 0x78, 0x5f, 0xe7, 0xd1, 0x16, 0x79, 0x5d, 0xa1, 0x67,
+ 0x9b, 0x84, 0x70, 0x2c, 0xfa, 0x14, 0xee, 0x22, 0xdd, 0xcd, 0x53, 0xb8,
+ 0x47, 0x78, 0xe6, 0x53, 0x34, 0xf7, 0xef, 0x3c, 0x7d, 0xbc, 0x83, 0xf7,
+ 0x27, 0x82, 0xe5, 0xf3, 0x7d, 0x22, 0x37, 0x00, 0xa5, 0x80, 0x78, 0xfe,
+ 0x24, 0x60, 0x5d, 0xba, 0x5d, 0x82, 0x91, 0xeb, 0xce, 0xe2, 0xc6, 0x96,
+ 0x73, 0x46, 0xbb, 0x16, 0xc2, 0x07, 0xc1, 0xcf, 0x2e, 0xd5, 0xe0, 0x8d,
+ 0xe3, 0x71, 0xe5, 0xad, 0xad, 0x43, 0x62, 0xcb, 0x83, 0x49, 0xed, 0x73,
+ 0x9f, 0x02, 0x53, 0x61, 0xc9, 0x28, 0x56, 0x19, 0x6c, 0x9d, 0x81, 0x19,
+ 0x6a, 0x30, 0x10, 0x26, 0xdb, 0x0f, 0x48, 0x76, 0xc0, 0x55, 0x72, 0x5b,
+ 0xe5, 0x5c, 0x07, 0x6e, 0x19, 0x3f, 0x09, 0x9c, 0x50, 0xec, 0x25, 0xa6,
+ 0xdd, 0x3c, 0xc4, 0x7f, 0x3d, 0x85, 0x86, 0x80, 0x85, 0x31, 0xe0, 0x1d,
+ 0x23, 0x06, 0xb6, 0xea, 0x81, 0x24, 0xea, 0xaf, 0x91, 0x4d, 0xe5, 0x4c,
+ 0x50, 0x2d, 0x7a, 0x19, 0x04, 0xb2, 0x71, 0xa2, 0xab, 0x6d, 0x84, 0xb2,
+ 0x53, 0x33, 0xb4, 0xe6, 0xa4, 0x44, 0x39, 0x9c, 0x8f, 0x20, 0x27, 0xab,
+ 0xf9, 0x06, 0x47, 0xbc, 0xfb, 0x58, 0x9a, 0xdc, 0xc0, 0xc1, 0x53, 0xe0,
+ 0x17, 0x41, 0x66, 0xda, 0xc0, 0x50, 0xb4, 0x17, 0x31, 0x0a, 0x2e, 0x7e,
+ 0x08, 0x9b, 0xde, 0x75, 0x20, 0x9c, 0x03, 0xae, 0x11, 0x8d, 0x3f, 0xd9,
+ 0x79, 0xf2, 0xe8, 0x51, 0xd8, 0x92, 0xa2, 0x78, 0x9c, 0xa4, 0xd7, 0x60,
+ 0x80, 0xe8, 0xb0, 0x02, 0x56, 0x23, 0x46, 0x65, 0x94, 0xc4, 0x45, 0x76,
+ 0x6f, 0x31, 0x56, 0x36, 0x97, 0xfd, 0xfe, 0xd8, 0x0a, 0x0f, 0xf6, 0xa7,
+ 0xae, 0x20, 0x40, 0x3b, 0x96, 0x9d, 0xa7, 0x4f, 0x9f, 0x46, 0xf1, 0x05,
+ 0x13, 0x21, 0x1f, 0x65, 0x3f, 0x4e, 0x7f, 0x96, 0xde, 0xdc, 0x9f, 0x04,
+ 0x97, 0x02, 0xb8, 0x0e, 0x8b, 0xc9, 0x98, 0xb1, 0xba, 0xa9, 0x38, 0x1e,
+ 0x57, 0x5d, 0xb9, 0x26, 0x48, 0xb0, 0xd3, 0xe7, 0x7c, 0xaf, 0x1f, 0xbf,
+ 0xc1, 0xdf, 0x32, 0x03, 0xa3, 0x4e, 0x98, 0x4c, 0xe9, 0x78, 0x31, 0xe1,
+ 0x54, 0xb2, 0x57, 0x7f, 0x6b, 0xe2, 0xdc, 0x6c, 0x9e, 0xf5, 0xb7, 0xf7,
+ 0xbf, 0xda, 0xd9, 0x0a, 0x24, 0xf7, 0x61, 0xfd, 0xbd, 0xc4, 0x71, 0x58,
+ 0xec, 0x04, 0x02, 0x76, 0xea, 0x8c, 0x03, 0x86, 0x77, 0xdf, 0xf8, 0x73,
+ 0xe1, 0x0f, 0x4d, 0x4d, 0xca, 0xe3, 0x16, 0x93, 0xf1, 0xfa, 0xbb, 0x04,
+ 0xc3, 0x80, 0x4d, 0x61, 0x21, 0x74, 0x8d, 0xb4, 0x89, 0xef, 0x04, 0x95,
+ 0x35, 0x4e, 0xca, 0x61, 0x96, 0x35, 0x17, 0x1e, 0x5b, 0x5b, 0x02, 0x6b,
+ 0xaa, 0x45, 0xe3, 0x45, 0x2c, 0x63, 0xc6, 0xec, 0xc0, 0x3d, 0x48, 0x2e,
+ 0xa5, 0x0b, 0x4c, 0xf4, 0x26, 0xc5, 0x22, 0xd3, 0x41, 0xd4, 0xc4, 0xd3,
+ 0xac, 0x14, 0x5b, 0x17, 0xaa, 0x7d, 0x2a, 0x37, 0x23, 0x46, 0x59, 0x3d,
+ 0x4f, 0x90, 0x1e, 0x49, 0xb8, 0xa4, 0xf2, 0x20, 0x0d, 0x85, 0x4c, 0x94,
+ 0x88, 0x8e, 0x4d, 0x69, 0x1b, 0x14, 0xc4, 0xd6, 0x66, 0xd2, 0x92, 0x09,
+ 0x7e, 0x2e, 0x3c, 0x2a, 0xe9, 0xbe, 0x48, 0x7f, 0x45, 0x93, 0xc1, 0x83,
+ 0xa0, 0xe5, 0x1c, 0xa8, 0x08, 0x86, 0xb7, 0xaa, 0x6d, 0xe0, 0xa2, 0xc0,
+ 0x02, 0xe3, 0x87, 0x26, 0x45, 0x85, 0xd2, 0xbe, 0xee, 0x83, 0x2f, 0xa7,
+ 0x5e, 0x52, 0xeb, 0xc0, 0xe7, 0xa6, 0xaa, 0x5c, 0xf2, 0x72, 0xb5, 0x56,
+ 0x62, 0xbf, 0x7f, 0xea, 0x71, 0x5b, 0x49, 0x66, 0x35, 0xfe, 0x79, 0x82,
+ 0x25, 0x48, 0x86, 0xa8, 0xf7, 0x93, 0xd2, 0x9e, 0x47, 0x98, 0xb1, 0xfe,
+ 0xe5, 0xa3, 0xbd, 0xbd, 0x6e, 0xf4, 0xb8, 0xb7, 0xeb, 0xe2, 0xcf, 0x25,
+ 0x13, 0x0f, 0x6e, 0x58, 0x92, 0x6b, 0x3c, 0x50, 0x3a, 0x74, 0x57, 0x39,
+ 0xb0, 0x74, 0x82, 0x44, 0x27, 0x91, 0xdf, 0x84, 0x52, 0x11, 0xc2, 0x9d,
+ 0xea, 0xfc, 0xb8, 0xf7, 0xf8, 0xf1, 0xee, 0x57, 0x07, 0xe7, 0xf1, 0xe3,
+ 0xbd, 0x5d, 0x04, 0xa5, 0x63, 0x95, 0xd4, 0xc6, 0x82, 0xd7, 0xe0, 0x0b,
+ 0xb2, 0x11, 0xdb, 0x7c, 0x26, 0x13, 0x4d, 0x8d, 0x6e, 0x36, 0x97, 0xcf,
+ 0xd3, 0x59, 0x59, 0x4e, 0xa2, 0xf2, 0x1d, 0x23, 0x7d, 0x6c, 0x97, 0xef,
+ 0xd8, 0xb2, 0xd6, 0x11, 0x1c, 0xb9, 0x2c, 0x80, 0x09, 0x64, 0x76, 0x46,
+ 0x2e, 0xaf, 0xc4, 0x20, 0x03, 0x08, 0x4e, 0x9c, 0xd9, 0x07, 0x36, 0x9c,
+ 0x34, 0xb1, 0xe1, 0x82, 0x41, 0xfa, 0x6a, 0x77, 0xe0, 0xeb, 0x60, 0xf3,
+ 0xe4, 0x78, 0x8b, 0x37, 0x4d, 0xf7, 0xd2, 0xa2, 0x45, 0xf0, 0x48, 0xbb,
+ 0x9c, 0xf8, 0xec, 0xdf, 0xbe, 0xb3, 0x7c, 0x46, 0x56, 0x10, 0x74, 0xb8,
+ 0xa3, 0xb3, 0x47, 0xe6, 0xc5, 0xf6, 0x42, 0x85, 0x7c, 0xae, 0xd7, 0x2c,
+ 0x6e, 0xc5, 0x08, 0xb3, 0xa8, 0x9f, 0x6e, 0xcc, 0x26, 0x4f, 0x5e, 0x8a,
+ 0x75, 0x71, 0x06, 0x3c, 0x55, 0x79, 0xf7, 0xa4, 0x6c, 0x5e, 0x5b, 0x0f,
+ 0x5b, 0x2e, 0x7c, 0x98, 0xa5, 0xd5, 0xcf, 0x75, 0x98, 0xb9, 0x7b, 0x26,
+ 0xaf, 0x75, 0x8f, 0xb1, 0x66, 0x6e, 0x36, 0x02, 0x45, 0xdd, 0xb3, 0x8c,
+ 0xa6, 0x57, 0x66, 0xd1, 0x6c, 0x5c, 0x6e, 0xb1, 0x29, 0x6b, 0x4a, 0x16,
+ 0x55, 0x34, 0x22, 0x18, 0xc2, 0x2c, 0xe1, 0x38, 0xc7, 0x78, 0xa4, 0xf5,
+ 0xf1, 0x02, 0xf4, 0xe8, 0xb4, 0xfe, 0xe9, 0x42, 0x0f, 0x9c, 0x4e, 0xbe,
+ 0x7d, 0x80, 0xd8, 0x4a, 0xaf, 0xa3, 0x59, 0x0f, 0x53, 0xfe, 0xe5, 0xcf,
+ 0x22, 0xb9, 0xd1, 0xba, 0x1f, 0xf8, 0x27, 0xf4, 0xc3, 0xd0, 0x03, 0xde,
+ 0xca, 0xf1, 0x7b, 0xab, 0x97, 0x0e, 0xab, 0x43, 0x4b, 0x9d, 0x52, 0x63,
+ 0xc8, 0x2b, 0x9b, 0xc6, 0x2a, 0x47, 0x13, 0x08, 0xa0, 0xff, 0x4b, 0xc5,
+ 0x77, 0x82, 0x1d, 0x2b, 0x73, 0x5c, 0xc1, 0x76, 0xa4, 0x13, 0xae, 0xfa,
+ 0x68, 0x4d, 0xf6, 0x46, 0x5f, 0x94, 0x84, 0x8e, 0x6f, 0xbb, 0x8a, 0x89,
+ 0x57, 0x39, 0x36, 0xbc, 0x24, 0x60, 0x70, 0x23, 0xa8, 0x02, 0x0a, 0xcf,
+ 0x8d, 0x64, 0x1a, 0x0a, 0xe8, 0xa1, 0xf1, 0xfc, 0x53, 0x04, 0x2d, 0x20,
+ 0xd9, 0x53, 0xca, 0x24, 0x62, 0x2c, 0x54, 0x37, 0xf2, 0x83, 0x54, 0x30,
+ 0xea, 0x4f, 0x4d, 0x3f, 0x20, 0xc6, 0xe1, 0x4e, 0xb3, 0x92, 0x30, 0x4c,
+ 0x8a, 0x22, 0x43, 0x7f, 0x6b, 0x91, 0x56, 0x8b, 0x42, 0x92, 0xd7, 0x31,
+ 0x69, 0x0d, 0x79, 0x03, 0x3b, 0xf8, 0x02, 0x77, 0xb1, 0x09, 0x4a, 0xa5,
+ 0x0c, 0x46, 0x42, 0x2f, 0x43, 0xcb, 0xba, 0xb7, 0x28, 0xa7, 0x58, 0xf6,
+ 0x50, 0x86, 0x56, 0xc3, 0x99, 0x64, 0x83, 0x28, 0xe3, 0x73, 0x70, 0x29,
+ 0x9e, 0xbc, 0x86, 0x8e, 0x48, 0x59, 0x2a, 0x21, 0xac, 0x4e, 0xb6, 0xf6,
+ 0x6e, 0xdf, 0xc6, 0x37, 0x37, 0x37, 0x31, 0x4a, 0x24, 0x96, 0x40, 0x46,
+ 0xbd, 0xc8, 0x03, 0xa0, 0x30, 0x1e, 0x8e, 0x2a, 0x14, 0x10, 0xe5, 0xe4,
+ 0xb1, 0x14, 0x83, 0xac, 0x22, 0x08, 0x20, 0xa1, 0x2a, 0x7a, 0x49, 0x98,
+ 0xab, 0x0c, 0x8a, 0x0c, 0x7a, 0xea, 0xbf, 0x0d, 0x2c, 0x8a, 0x9d, 0x11,
+ 0xc1, 0xfa, 0x0f, 0xab, 0x14, 0x81, 0xf3, 0xb0, 0xa6, 0xf6, 0x41, 0x14,
+ 0xbf, 0x88, 0x3a, 0xc7, 0x32, 0xe9, 0x0b, 0x78, 0xe4, 0xc0, 0x8d, 0x15,
+ 0xdb, 0xe6, 0x67, 0x83, 0xe5, 0xb8, 0x3b, 0xf7, 0xe0, 0xc8, 0xa1, 0x2a,
+ 0x65, 0x02, 0xbb, 0x35, 0x23, 0xe7, 0xbb, 0x85, 0x2a, 0x08, 0x65, 0xc3,
+ 0x60, 0xb6, 0x10, 0x7b, 0x32, 0xb8, 0xda, 0x0a, 0x4d, 0x3d, 0xc1, 0x18,
+ 0x51, 0x0d, 0xb3, 0x06, 0x9a, 0x5b, 0xcd, 0x6a, 0x64, 0xe1, 0x3e, 0x31,
+ 0xaf, 0x91, 0x5e, 0xbe, 0x35, 0x3e, 0x8f, 0x07, 0x30, 0x1c, 0x4f, 0x2a,
+ 0x36, 0x7c, 0x67, 0x19, 0x2f, 0xf1, 0x98, 0x49, 0xa9, 0x18, 0x57, 0x9c,
+ 0x88, 0xc4, 0x14, 0xb3, 0xa8, 0x6a, 0xe9, 0x7f, 0xc0, 0x65, 0xbc, 0xa3,
+ 0x88, 0xe9, 0x80, 0x06, 0x47, 0x27, 0x71, 0x31, 0xbc, 0xbe, 0x5d, 0x02,
+ 0x65, 0xe5, 0x8c, 0xf2, 0xd3, 0x19, 0x1d, 0x6d, 0x1f, 0x1d, 0x2c, 0x25,
+ 0x9c, 0x77, 0xd6, 0x88, 0xb2, 0xb5, 0xaf, 0x7e, 0x9b, 0x54, 0xf8, 0xff,
+ 0x6b, 0x96, 0x01, 0xb1, 0x04, 0x56, 0x0b, 0x2e, 0x0b, 0xdd, 0x99, 0xe6,
+ 0xc8, 0xaf, 0xc3, 0xfc, 0xbb, 0x86, 0x6b, 0x0a, 0xaf, 0xe1, 0x48, 0x05,
+ 0xd9, 0x38, 0xad, 0x94, 0x1a, 0x40, 0x99, 0xa1, 0xa0, 0x93, 0x5b, 0xe4,
+ 0xa0, 0x5a, 0x8d, 0x43, 0xdc, 0xef, 0x69, 0x81, 0x0c, 0x88, 0x30, 0x16,
+ 0x18, 0x1e, 0x27, 0x54, 0xbc, 0x0f, 0x6d, 0x5f, 0xe8, 0xc7, 0x38, 0xfe,
+ 0xfe, 0x25, 0xe5, 0x03, 0xc3, 0xe5, 0x3d, 0x53, 0xf9, 0x89, 0x47, 0x8f,
+ 0x92, 0xaa, 0x73, 0x15, 0x5c, 0x66, 0x16, 0xaf, 0x26, 0x99, 0xfa, 0xe6,
+ 0x76, 0x76, 0x52, 0x32, 0xf8, 0x8c, 0x49, 0x00, 0xe5, 0x54, 0x74, 0xe3,
+ 0x38, 0x55, 0x19, 0x3f, 0xb1, 0xf8, 0x13, 0xe1, 0xa5, 0xa2, 0xae, 0x55,
+ 0x0c, 0x67, 0xa7, 0x25, 0x9a, 0x75, 0xd8, 0x65, 0xdb, 0xc8, 0x8a, 0xb7,
+ 0x6c, 0xa4, 0xbc, 0x9b, 0x55, 0xc9, 0x6d, 0xea, 0x27, 0x8e, 0x49, 0xff,
+ 0x4d, 0x0a, 0x71, 0xa3, 0x51, 0x1a, 0xbe, 0x43, 0xb3, 0x76, 0xa9, 0xeb,
+ 0x29, 0x63, 0x64, 0x21, 0xf6, 0xa5, 0x27, 0x2d, 0xcd, 0xe1, 0xc4, 0xfe,
+ 0x2c, 0x99, 0xc3, 0x70, 0x8b, 0x91, 0x69, 0x40, 0x31, 0xe3, 0xdc, 0xa6,
+ 0x4c, 0x91, 0x6a, 0x4d, 0x30, 0x0d, 0x37, 0x47, 0x05, 0x7f, 0xbf, 0xe6,
+ 0xec, 0xd2, 0x6f, 0x23, 0xf1, 0xce, 0x62, 0x8e, 0xbf, 0x1b, 0x26, 0x48,
+ 0x57, 0x00, 0x0d, 0x9e, 0x21, 0x95, 0x70, 0x19, 0xc2, 0xcd, 0x71, 0xa8,
+ 0xaa, 0xb3, 0x7a, 0x4c, 0x6d, 0xc3, 0x04, 0x2d, 0xbd, 0x83, 0x14, 0x16,
+ 0xf2, 0xbf, 0x9a, 0x8b, 0xf7, 0xf5, 0xea, 0xd5, 0x5b, 0x73, 0xf1, 0x56,
+ 0xac, 0x1e, 0xd7, 0xa6, 0xd7, 0xcc, 0xd3, 0xaf, 0x1d, 0x8f, 0x34, 0xa5,
+ 0x1a, 0xb0, 0x6f, 0xc8, 0x78, 0xa6, 0x83, 0xbc, 0x1f, 0x29, 0xf4, 0xeb,
+ 0x8f, 0xb6, 0xeb, 0x44, 0x8d, 0x3a, 0xfa, 0x70, 0x73, 0x1c, 0x10, 0x38,
+ 0xab, 0xc3, 0x3c, 0x6a, 0x5d, 0xd4, 0x84, 0x81, 0x6b, 0xd2, 0x5b, 0x20,
+ 0xff, 0x8a, 0x49, 0x99, 0xce, 0x1e, 0x76, 0x17, 0x6e, 0x4e, 0x51, 0xad,
+ 0xc4, 0x7a, 0xee, 0xcd, 0xcf, 0xdc, 0x33, 0x2b, 0x27, 0x27, 0x6a, 0x1d,
+ 0x4d, 0x8f, 0xca, 0xf9, 0x71, 0xd9, 0x6a, 0x8d, 0xcd, 0x70, 0xe2, 0xd8,
+ 0x36, 0x7d, 0x47, 0xb9, 0x1e, 0x1f, 0xa9, 0xdd, 0x86, 0xb4, 0xa8, 0x52,
+ 0xda, 0x56, 0xb7, 0xbe, 0x5a, 0x58, 0x37, 0x85, 0x2e, 0x68, 0x8c, 0xe8,
+ 0xe2, 0x5d, 0xce, 0x5a, 0xf7, 0x58, 0xf7, 0x0e, 0x6b, 0xce, 0x07, 0xf7,
+ 0xee, 0x7f, 0xfb, 0xfc, 0x6c, 0x3e, 0x3e, 0x4d, 0x51, 0x62, 0x5a, 0x2c,
+ 0x35, 0x5c, 0x52, 0xa1, 0xa4, 0x19, 0xa7, 0xb0, 0x53, 0xee, 0x7f, 0x40,
+ 0xac, 0x54, 0x5e, 0x48, 0x85, 0x10, 0xba, 0x14, 0xcc, 0x3a, 0xe1, 0xda,
+ 0x7e, 0x33, 0xa1, 0x70, 0x2b, 0x63, 0xb2, 0xcd, 0xd4, 0xe0, 0x7a, 0x10,
+ 0x19, 0x2e, 0xa1, 0x54, 0x43, 0x9b, 0x0d, 0xb2, 0x1c, 0xa4, 0xce, 0xac,
+ 0x03, 0xe4, 0xe7, 0x5d, 0x74, 0x0f, 0xb9, 0xf3, 0xfd, 0xcb, 0xde, 0xbd,
+ 0xaa, 0x6d, 0xdb, 0x34, 0x45, 0xd0, 0x9d, 0x97, 0x5e, 0xf6, 0xe1, 0x57,
+ 0xbf, 0xe6, 0x9f, 0x74, 0x1f, 0xae, 0xff, 0xb6, 0xa1, 0xc0, 0x07, 0xbc,
+ 0x4b, 0xef, 0x51, 0x58, 0xc1, 0x32, 0x29, 0x23, 0x20, 0x5e, 0xb8, 0xca,
+ 0x25, 0x88, 0x2b, 0xce, 0x9a, 0xdb, 0x47, 0xda, 0xc5, 0x8a, 0x28, 0x7a,
+ 0xf5, 0xd7, 0x8b, 0x0b, 0x8c, 0xa7, 0x25, 0xc8, 0x95, 0x06, 0xce, 0x2f,
+ 0xbd, 0xcc, 0x90, 0x8b, 0x40, 0x8e, 0xc6, 0xe4, 0x16, 0xac, 0x2d, 0xe9,
+ 0x44, 0x85, 0x75, 0x6b, 0x3e, 0x68, 0x8a, 0x9d, 0x24, 0x73, 0x68, 0x34,
+ 0x28, 0xf2, 0x9b, 0x92, 0x94, 0x2b, 0xf5, 0x93, 0x25, 0xec, 0x11, 0xb9,
+ 0xf2, 0x70, 0x11, 0x61, 0x39, 0x26, 0x5c, 0xf4, 0x15, 0xe9, 0xfd, 0xc5,
+ 0xc5, 0xab, 0x53, 0x32, 0xd8, 0x0a, 0x46, 0x1f, 0x82, 0x90, 0x94, 0xe2,
+ 0x7d, 0x19, 0x4c, 0xb3, 0x0a, 0x05, 0xd5, 0x8a, 0xef, 0x00, 0xb9, 0x56,
+ 0x3c, 0x1c, 0x41, 0x8a, 0xeb, 0x14, 0x9b, 0xd5, 0x3c, 0x14, 0xd6, 0x26,
+ 0x6a, 0x91, 0x53, 0x6e, 0xc1, 0xd1, 0xea, 0xda, 0x33, 0x63, 0xda, 0x74,
+ 0xb7, 0x63, 0xce, 0x07, 0x21, 0x61, 0xfa, 0x39, 0xee, 0x04, 0x3e, 0xb1,
+ 0x4c, 0x0c, 0x46, 0xb3, 0xde, 0x84, 0x2a, 0xfa, 0x9a, 0xa5, 0x43, 0xf1,
+ 0xdb, 0xdc, 0xf7, 0x54, 0x1b, 0x42, 0x12, 0x96, 0x54, 0xe4, 0xf6, 0x34,
+ 0xca, 0x65, 0x22, 0x38, 0xca, 0x6e, 0x28, 0x3f, 0x4a, 0x8c, 0xdc, 0x7c,
+ 0x51, 0xa0, 0x77, 0x2b, 0x52, 0x7b, 0x45, 0x20, 0xd7, 0x5f, 0xc3, 0xe8,
+ 0x4c, 0xd4, 0x96, 0x0d, 0x70, 0x75, 0xb5, 0x17, 0x09, 0x43, 0xc1, 0xf6,
+ 0xeb, 0x37, 0x61, 0xd0, 0xd1, 0x43, 0x10, 0x0e, 0xb4, 0x97, 0x40, 0x63,
+ 0xd0, 0x3a, 0x01, 0xea, 0x26, 0x14, 0x4e, 0xb3, 0xc4, 0x48, 0x62, 0xb5,
+ 0x45, 0x82, 0x94, 0xa0, 0xd9, 0x95, 0xa9, 0x91, 0x73, 0x55, 0x6d, 0xa4,
+ 0x6a, 0x14, 0x54, 0x7f, 0x22, 0xc7, 0x78, 0x94, 0x1a, 0xf0, 0x4a, 0x20,
+ 0x04, 0xcb, 0x30, 0x99, 0xae, 0x13, 0x93, 0x98, 0xa1, 0xf3, 0xbd, 0x66,
+ 0x50, 0x61, 0xe3, 0xde, 0x34, 0x2d, 0x2e, 0xd5, 0xbe, 0xc2, 0xb2, 0xaa,
+ 0x57, 0xcb, 0x83, 0xed, 0xbc, 0xff, 0x27, 0x66, 0xd1, 0x03, 0xc9, 0x71,
+ 0x41, 0x91, 0x3c, 0xa4, 0xac, 0x6e, 0xc4, 0x23, 0xe1, 0xbf, 0xa3, 0x64,
+ 0x06, 0x53, 0xc7, 0x23, 0x4a, 0x99, 0x19, 0x93, 0xc9, 0xd7, 0x93, 0x7c,
+ 0x51, 0xde, 0x6d, 0x78, 0xd9, 0x61, 0x1c, 0xc4, 0x08, 0x6c, 0x7f, 0x86,
+ 0xc1, 0xbd, 0x29, 0x91, 0x1e, 0x43, 0x28, 0xa2, 0x5d, 0x12, 0x33, 0x65,
+ 0x17, 0xb3, 0xf7, 0x36, 0x0a, 0x86, 0xf1, 0x11, 0x4a, 0x86, 0xc8, 0x79,
+ 0xdf, 0x5c, 0xfe, 0x0d, 0xa7, 0xef, 0xff, 0xe3, 0x76, 0xdb, 0x16, 0x40,
+ 0xc4, 0xa6, 0x9f, 0x7b, 0x59, 0x7e, 0x0c, 0xa9, 0xa0, 0x7c, 0x92, 0x04,
+ 0xe3, 0xce, 0x0d, 0xc8, 0x85, 0x89, 0x23, 0x33, 0x57, 0x2e, 0x17, 0xeb,
+ 0xd3, 0xe0, 0xb9, 0x5a, 0x00, 0x3f, 0x3e, 0x1c, 0xf2, 0x6e, 0x9a, 0xdb,
+ 0x9a, 0xc3, 0xcf, 0xa2, 0xf3, 0x9c, 0xcb, 0xc6, 0xdb, 0x2f, 0x2c, 0x30,
+ 0x27, 0xd7, 0x11, 0x8b, 0x36, 0xc6, 0x79, 0x3e, 0x48, 0x8a, 0x96, 0x55,
+ 0xa6, 0x8a, 0xd5, 0x03, 0x09, 0xa9, 0x64, 0x47, 0x97, 0x65, 0xa0, 0xdf,
+ 0xf2, 0xab, 0x3d, 0x76, 0x1b, 0xcb, 0x87, 0x18, 0xed, 0x9c, 0x4f, 0x46,
+ 0x7e, 0x18, 0x38, 0x4d, 0xd0, 0x8d, 0x05, 0xc2, 0xcd, 0xa0, 0x2d, 0xc2,
+ 0x00, 0x10, 0xb5, 0x50, 0x19, 0x13, 0x15, 0xcb, 0x06, 0x2a, 0x40, 0xb4,
+ 0x84, 0x36, 0x60, 0x42, 0x19, 0x66, 0xf0, 0x50, 0xf6, 0x88, 0x6e, 0x90,
+ 0x84, 0x6f, 0x71, 0x40, 0x52, 0xfd, 0xb4, 0xe3, 0x38, 0x90, 0x63, 0x78,
+ 0x00, 0xa8, 0x35, 0xfe, 0x61, 0xf9, 0x85, 0x73, 0xfa, 0x88, 0x19, 0x49,
+ 0xe6, 0x65, 0x98, 0x5f, 0x7d, 0x42, 0x95, 0x7d, 0x14, 0x75, 0x58, 0x08,
+ 0x87, 0xbf, 0xd6, 0x50, 0xd7, 0xeb, 0xaf, 0xe1, 0x9f, 0x55, 0x9e, 0x4f,
+ 0xbe, 0x1e, 0x4e, 0x47, 0x38, 0x86, 0xb5, 0x1a, 0xfa, 0x20, 0x5b, 0x4c,
+ 0xc3, 0xf8, 0x6b, 0xef, 0x77, 0xde, 0x64, 0xe7, 0x9e, 0x8e, 0x96, 0x44,
+ 0xed, 0x90, 0xbd, 0x70, 0xba, 0xa8, 0xa4, 0xc8, 0x02, 0x68, 0xeb, 0x13,
+ 0xe0, 0x21, 0xd7, 0x8d, 0xcb, 0x84, 0x6f, 0xfe, 0x97, 0x9a, 0xc6, 0x16,
+ 0x8a, 0x0b, 0xbb, 0xe8, 0xd6, 0x2b, 0x11, 0xd7, 0x24, 0xb2, 0x74, 0x92,
+ 0x5e, 0xf2, 0xe6, 0x1f, 0x9e, 0x9e, 0xfc, 0xed, 0xe4, 0xd4, 0x13, 0x10,
+ 0xbe, 0xef, 0xf7, 0xb7, 0xdf, 0xa7, 0xc5, 0x20, 0x2d, 0xf2, 0x72, 0x0b,
+ 0xe3, 0xf1, 0x22, 0x7a, 0xce, 0xa4, 0x58, 0x39, 0xb7, 0xe6, 0x8d, 0x40,
+ 0x9b, 0xb3, 0xa5, 0x33, 0x18, 0x78, 0x8c, 0xa9, 0xba, 0xdc, 0xa5, 0x14,
+ 0x14, 0x27, 0x54, 0x97, 0x69, 0xaa, 0x48, 0x93, 0x05, 0x86, 0x37, 0x90,
+ 0x37, 0x2b, 0x09, 0x14, 0x32, 0x21, 0x20, 0xe3, 0x28, 0x7a, 0xc6, 0x14,
+ 0xcf, 0xa9, 0xee, 0x78, 0x13, 0xd8, 0x59, 0x78, 0xaf, 0xcc, 0x09, 0x2d,
+ 0x34, 0x7a, 0x26, 0x9d, 0x96, 0x54, 0x35, 0x91, 0x16, 0x8d, 0x0b, 0xa0,
+ 0xf0, 0x0d, 0x79, 0xf6, 0x97, 0xf8, 0xa8, 0x1f, 0x3f, 0x3b, 0x39, 0x3d,
+ 0xf9, 0xfe, 0xe8, 0xe2, 0xc4, 0x54, 0xa9, 0xf6, 0xc3, 0x14, 0xea, 0x58,
+ 0x5d, 0x7f, 0x91, 0x75, 0x31, 0x05, 0x72, 0xab, 0x6c, 0xf8, 0x9e, 0x3c,
+ 0x49, 0x52, 0x5d, 0x5e, 0x80, 0x89, 0x40, 0x71, 0x96, 0x9c, 0xe1, 0x70,
+ 0x73, 0xc0, 0x2b, 0x26, 0x53, 0x19, 0xaa, 0x37, 0x83, 0x64, 0x02, 0xc2,
+ 0x53, 0x19, 0xbd, 0x9d, 0x61, 0xae, 0x7f, 0x66, 0xe0, 0xbb, 0x78, 0xf6,
+ 0xae, 0x29, 0xd7, 0x2e, 0xad, 0x6d, 0x83, 0x7d, 0x4e, 0xce, 0x2e, 0x7f,
+ 0x18, 0x08, 0x6a, 0x3d, 0x2e, 0xc3, 0xb3, 0x6d, 0xaa, 0x54, 0x6b, 0xbb,
+ 0xeb, 0xe0, 0x96, 0x75, 0xee, 0x29, 0xce, 0xd6, 0xca, 0x14, 0x89, 0x48,
+ 0x5b, 0x96, 0x93, 0x1a, 0xbd, 0x52, 0xd9, 0xf4, 0xb0, 0x6d, 0x4c, 0xe1,
+ 0x2b, 0x49, 0x08, 0x7d, 0x46, 0x0f, 0x36, 0xe2, 0xe1, 0x1d, 0x28, 0x40,
+ 0x58, 0x09, 0xfd, 0x2e, 0x00, 0x37, 0x4d, 0x2b, 0x55, 0x0e, 0xaf, 0xd2,
+ 0x69, 0xaa, 0xd7, 0x2a, 0xc6, 0x9f, 0x53, 0xbc, 0x33, 0x03, 0x7c, 0x49,
+ 0x79, 0x00, 0x62, 0xf0, 0x83, 0x94, 0x0c, 0x48, 0xa8, 0xed, 0xe7, 0x7e,
+ 0xa8, 0x2b, 0x25, 0xec, 0x64, 0x05, 0xe5, 0x93, 0x53, 0xb2, 0x0d, 0x41,
+ 0xd3, 0xf5, 0x28, 0x5d, 0xd1, 0x09, 0x0c, 0xf7, 0x03, 0xc1, 0x11, 0x11,
+ 0x6b, 0xea, 0xa5, 0x28, 0x4b, 0x69, 0x62, 0x8d, 0xdb, 0xe1, 0x10, 0x21,
+ 0xfa, 0x88, 0xd8, 0x95, 0x5a, 0x1a, 0x70, 0x74, 0x4b, 0x02, 0xc9, 0xcc,
+ 0x52, 0xae, 0x15, 0x12, 0xb2, 0xba, 0x4c, 0x7a, 0xb3, 0xac, 0xfd, 0xbd,
+ 0xac, 0xe0, 0x7e, 0xcd, 0x5b, 0x19, 0xdb, 0x5a, 0xbc, 0xd7, 0x94, 0xed,
+ 0xed, 0x9a, 0x02, 0xb8, 0xd2, 0x0c, 0x53, 0x12, 0x30, 0x0a, 0xdc, 0x71,
+ 0x93, 0xca, 0x11, 0x4c, 0x16, 0xc8, 0x4a, 0xcb, 0x72, 0xeb, 0x1c, 0xd7,
+ 0xad, 0xe8, 0x4c, 0x75, 0x87, 0xf5, 0x57, 0x2d, 0x2e, 0x5c, 0x27, 0x53,
+ 0x5a, 0xaf, 0x38, 0x9d, 0x7b, 0xa5, 0x6c, 0x36, 0x09, 0x6a, 0xf5, 0xc2,
+ 0xcd, 0x4e, 0x55, 0xb0, 0x22, 0xdc, 0x74, 0xbc, 0x82, 0x45, 0x6c, 0x3f,
+ 0x39, 0x7f, 0x73, 0x41, 0x9d, 0x9c, 0xe2, 0x2f, 0x72, 0x9d, 0x96, 0xa1,
+ 0xfa, 0x2a, 0x23, 0x2e, 0x86, 0x3e, 0xa4, 0xda, 0x03, 0x18, 0x81, 0x64,
+ 0xd2, 0x03, 0x34, 0x7f, 0x91, 0xb3, 0xc1, 0xa4, 0x38, 0xae, 0x70, 0x14,
+ 0xf2, 0x92, 0x78, 0x48, 0x09, 0x15, 0x66, 0xd3, 0x9b, 0x44, 0x36, 0x1c,
+ 0x83, 0xa0, 0xda, 0xd3, 0x28, 0x38, 0x11, 0x58, 0x03, 0x68, 0xce, 0xf0,
+ 0x4b, 0x75, 0x0f, 0x10, 0x31, 0x07, 0xaf, 0x32, 0x5b, 0xf5, 0x04, 0x9b,
+ 0xc4, 0xb7, 0xa2, 0x22, 0xbb, 0xbc, 0x82, 0x8d, 0x81, 0x71, 0xf4, 0xec,
+ 0x3c, 0xb9, 0x0b, 0xc6, 0x9f, 0xa3, 0x0a, 0x5f, 0x7e, 0xb8, 0x0c, 0x81,
+ 0xc6, 0x98, 0xa8, 0x79, 0xcd, 0xe2, 0xe7, 0xe4, 0x61, 0x13, 0x7a, 0xd7,
+ 0x15, 0x24, 0x7b, 0x86, 0xec, 0x24, 0x78, 0x05, 0x8e, 0xc0, 0xf3, 0x42,
+ 0x40, 0x08, 0xbe, 0x41, 0x73, 0xd7, 0xd2, 0x3b, 0xa9, 0x15, 0xc6, 0x0a,
+ 0x84, 0x96, 0x4e, 0x4f, 0xa8, 0xca, 0x1e, 0x89, 0x34, 0x03, 0x96, 0x79,
+ 0x45, 0x99, 0x9d, 0x05, 0x0e, 0x3a, 0x2c, 0xbc, 0xf2, 0x68, 0x9e, 0xa8,
+ 0x6c, 0x5b, 0x40, 0x86, 0x42, 0xda, 0x68, 0x56, 0x42, 0x70, 0x92, 0x83,
+ 0x64, 0x28, 0xbc, 0x38, 0x74, 0xca, 0x84, 0xde, 0xf2, 0x10, 0x55, 0x31,
+ 0x4b, 0x73, 0xbc, 0xe8, 0x35, 0x12, 0x6c, 0x43, 0xd5, 0xd3, 0xe4, 0xaa,
+ 0x92, 0x30, 0x54, 0x9c, 0x42, 0x83, 0x2f, 0xcf, 0xaf, 0x9f, 0xd4, 0xe3,
+ 0x17, 0xd9, 0x5e, 0x46, 0xea, 0x27, 0xac, 0x6a, 0x13, 0xaa, 0x85, 0x41,
+ 0x2a, 0xa0, 0x6f, 0x1a, 0x2e, 0x1a, 0x5b, 0x4d, 0xec, 0x32, 0xd2, 0x8e,
+ 0xd7, 0x3f, 0xf3, 0x13, 0x62, 0x44, 0xf4, 0x06, 0xdd, 0xc5, 0x08, 0x57,
+ 0x7f, 0x29, 0x1a, 0xbd, 0xd0, 0xf2, 0x20, 0x85, 0x1e, 0x33, 0xc4, 0x70,
+ 0x7d, 0xe9, 0xa8, 0x05, 0x7e, 0xe4, 0x24, 0xd0, 0x1f, 0x82, 0x28, 0xb0,
+ 0x52, 0x8f, 0x2f, 0x52, 0x00, 0x20, 0xbe, 0x40, 0x48, 0x75, 0x15, 0x0b,
+ 0x0c, 0x2c, 0xde, 0x62, 0x4c, 0x1f, 0x67, 0x41, 0xe6, 0x5c, 0x9f, 0x6a,
+ 0x18, 0xe0, 0x6b, 0xc2, 0xd1, 0xe8, 0xd9, 0xa4, 0xbc, 0x5e, 0xc5, 0x49,
+ 0xed, 0x52, 0x47, 0xe1, 0xa8, 0x5c, 0xaf, 0x28, 0xf8, 0xbd, 0x43, 0x72,
+ 0x97, 0xee, 0xe3, 0x2a, 0xef, 0xa2, 0x3b, 0xb0, 0xb5, 0x30, 0x8a, 0xed,
+ 0x9b, 0xe5, 0x35, 0x13, 0xde, 0x79, 0xd7, 0x59, 0xbb, 0x30, 0xaf, 0x2b,
+ 0xaf, 0x3f, 0x80, 0xd7, 0xf5, 0xff, 0x66, 0x34, 0x06, 0xe2, 0x69, 0x81,
+ 0x1c, 0x14, 0x5a, 0x6e, 0xdd, 0xe1, 0x35, 0xf9, 0x1c, 0x70, 0x36, 0xdf,
+ 0xb7, 0x8d, 0x9c, 0xce, 0x30, 0x3a, 0x18, 0x80, 0x70, 0xb7, 0xf3, 0xa3,
+ 0xfe, 0xdf, 0x1a, 0x7c, 0xcd, 0xe3, 0x64, 0x40, 0x4f, 0x9e, 0xe7, 0x5d,
+ 0x6b, 0x1c, 0x62, 0x5b, 0xc1, 0x03, 0x0f, 0x6b, 0x79, 0x8f, 0x03, 0x0f,
+ 0x03, 0xf1, 0x0e, 0xbc, 0xb7, 0xb4, 0xcb, 0x0e, 0x7c, 0x80, 0x5e, 0xfd,
+ 0x03, 0x3f, 0xa3, 0x43, 0x4e, 0x70, 0x20, 0x81, 0x93, 0xae, 0x07, 0x5d,
+ 0xcf, 0xb6, 0x9f, 0xa2, 0x47, 0xe3, 0x5c, 0xe7, 0xa4, 0xd3, 0x0b, 0xde,
+ 0x41, 0xd7, 0xed, 0x5c, 0xfb, 0xa4, 0x0b, 0x87, 0xf0, 0x0e, 0x3a, 0x1d,
+ 0xf2, 0x16, 0x62, 0x0d, 0x84, 0xc5, 0xd6, 0x08, 0xbd, 0x21, 0x0b, 0x7d,
+ 0x78, 0x3c, 0xfd, 0xd2, 0x3d, 0xb9, 0xf7, 0xe1, 0x85, 0x91, 0x3d, 0xf0,
+ 0xf0, 0x6a, 0xd0, 0x65, 0xdb, 0xe1, 0x75, 0xb1, 0xc9, 0x02, 0xb1, 0x3f,
+ 0x44, 0xa5, 0x52, 0x20, 0x4b, 0x8e, 0x91, 0x8d, 0x40, 0x0c, 0x40, 0x24,
+ 0x77, 0x0d, 0x22, 0x5d, 0x31, 0xf4, 0xbd, 0xa8, 0x06, 0x00, 0xd1, 0x45,
+ 0xf4, 0x28, 0x44, 0x69, 0x15, 0xd8, 0x44, 0x9c, 0x85, 0x26, 0xcf, 0xf3,
+ 0x0b, 0xc8, 0xa4, 0x7d, 0xb0, 0x3c, 0xa7, 0x20, 0x40, 0x1a, 0x04, 0x70,
+ 0x2c, 0x53, 0x4c, 0x90, 0x89, 0xea, 0xa1, 0xa6, 0xed, 0xfb, 0xff, 0xd1,
+ 0xc5, 0xe0, 0x06, 0xdc, 0xdb, 0xbd, 0xb6, 0xfc, 0x1f, 0xeb, 0x09, 0xbc,
+ 0x0e, 0xe0, 0x76, 0x93, 0x1f, 0xa3, 0x6e, 0x48, 0xb2, 0x30, 0x0a, 0xd6,
+ 0xa0, 0x52, 0xa1, 0x0d, 0x62, 0x49, 0x40, 0x41, 0x55, 0x0b, 0xaa, 0x45,
+ 0xe0, 0x35, 0xd2, 0x92, 0xc5, 0x79, 0x8e, 0x1a, 0x2c, 0xe6, 0x9c, 0xaa,
+ 0xaf, 0x99, 0xd8, 0x70, 0x12, 0x28, 0x76, 0xce, 0xb1, 0x5d, 0x4e, 0xb9,
+ 0x51, 0x10, 0xc8, 0x06, 0x98, 0x70, 0x87, 0x45, 0xb9, 0x4a, 0xba, 0x7f,
+ 0xd1, 0xa1, 0x7d, 0xa3, 0xd5, 0x81, 0x08, 0x72, 0xb6, 0x64, 0xf5, 0xc9,
+ 0xb3, 0x61, 0x6b, 0xf1, 0xa3, 0x2a, 0x2a, 0x10, 0xac, 0x66, 0x9a, 0x3a,
+ 0xa9, 0xca, 0x2b, 0x77, 0x34, 0x34, 0xff, 0x65, 0x5b, 0x1c, 0x94, 0x67,
+ 0x7a, 0x2b, 0x8f, 0x76, 0xa8, 0x9b, 0x87, 0x1c, 0xf3, 0xe0, 0x70, 0xd7,
+ 0x2c, 0x4c, 0x8a, 0xb2, 0x6f, 0x2d, 0xca, 0xe4, 0x49, 0xa3, 0x22, 0xe9,
+ 0x68, 0x56, 0xc6, 0x64, 0xef, 0x1b, 0x23, 0x08, 0xf5, 0xa1, 0xf9, 0xd5,
+ 0xb3, 0xf8, 0x3c, 0x7b, 0xad, 0x05, 0x20, 0x9d, 0xfa, 0x8f, 0x65, 0xca,
+ 0x98, 0x39, 0x9c, 0xa9, 0x0e, 0x8f, 0xd8, 0x24, 0xf4, 0xea, 0xaa, 0xc8,
+ 0x17, 0x97, 0x57, 0xd2, 0xa4, 0x5f, 0x40, 0x1d, 0xba, 0xf0, 0x10, 0xd2,
+ 0x12, 0xc6, 0x20, 0x4a, 0x0b, 0xf2, 0x68, 0x92, 0x7e, 0x65, 0xc7, 0x16,
+ 0x6d, 0x8a, 0xf9, 0x04, 0xdd, 0x1e, 0x81, 0xfa, 0x12, 0x0a, 0x8a, 0x86,
+ 0xc3, 0x90, 0x7a, 0xdd, 0x98, 0x7f, 0x43, 0x45, 0xaf, 0xa5, 0x08, 0x8e,
+ 0xc2, 0xaf, 0x53, 0x7d, 0x5f, 0x6d, 0x37, 0xe0, 0x13, 0xde, 0x94, 0x42,
+ 0x00, 0x92, 0x85, 0xba, 0x15, 0x4e, 0x73, 0xa9, 0x2f, 0xdd, 0x5a, 0x16,
+ 0x94, 0x8f, 0x58, 0x3b, 0xb4, 0x3e, 0x8a, 0xb4, 0xba, 0xba, 0x37, 0xe6,
+ 0x0e, 0x13, 0x89, 0x36, 0x31, 0xbf, 0x7e, 0x14, 0xe3, 0x7c, 0x23, 0xf5,
+ 0x1a, 0xf2, 0x87, 0x4f, 0xe8, 0xc3, 0x5e, 0xb3, 0x23, 0x0f, 0x39, 0xe0,
+ 0x1f, 0x8b, 0xac, 0x48, 0x9d, 0x6a, 0xc7, 0x8b, 0xd9, 0x28, 0x2d, 0x26,
+ 0x77, 0xb8, 0xea, 0x93, 0x6c, 0xc0, 0x19, 0xe3, 0x89, 0xa9, 0x4c, 0xc8,
+ 0x20, 0xd1, 0x9c, 0x1d, 0x05, 0x33, 0x89, 0xfd, 0x6a, 0x11, 0xf5, 0x78,
+ 0xe2, 0xfd, 0xfd, 0x00, 0xd5, 0x9a, 0x11, 0x1f, 0xca, 0x3e, 0x85, 0x69,
+ 0xb6, 0x26, 0x68, 0x0e, 0x08, 0xc4, 0x35, 0x07, 0xaa, 0x9c, 0xc7, 0xfa,
+ 0x16, 0xb3, 0x9e, 0x69, 0xf2, 0x5e, 0x74, 0x9c, 0x47, 0x42, 0xc8, 0xb1,
+ 0x07, 0x94, 0x8e, 0x84, 0xdd, 0xad, 0x85, 0xde, 0xd4, 0x48, 0x5e, 0x14,
+ 0xcf, 0x4a, 0x0b, 0x7e, 0x49, 0x41, 0x0b, 0xe9, 0x27, 0x04, 0xe3, 0xa5,
+ 0x79, 0x54, 0x6e, 0x78, 0xac, 0x22, 0xe4, 0xd0, 0x48, 0xcc, 0xbb, 0xad,
+ 0x04, 0x68, 0x56, 0xe1, 0xb3, 0x12, 0xa0, 0x19, 0xc5, 0xee, 0x4e, 0x6f,
+ 0xb7, 0xb7, 0xd7, 0x5b, 0x17, 0x7e, 0xad, 0x4e, 0xc5, 0xc6, 0x22, 0x5e,
+ 0xa7, 0xc1, 0x66, 0x67, 0x6d, 0x44, 0x28, 0xb6, 0x39, 0xce, 0xaa, 0xb3,
+ 0x74, 0x58, 0x23, 0x44, 0xa6, 0x43, 0x64, 0x61, 0x42, 0x85, 0x0f, 0x26,
+ 0xc2, 0x27, 0x9f, 0x84, 0x08, 0x9f, 0xac, 0x20, 0x42, 0xca, 0x01, 0xb7,
+ 0xf3, 0x6c, 0xa1, 0x43, 0x09, 0x5a, 0x41, 0xd6, 0xfa, 0x60, 0x22, 0x7c,
+ 0x72, 0x2f, 0x22, 0x7c, 0xf2, 0x1f, 0x41, 0x84, 0x32, 0x8a, 0xbd, 0x64,
+ 0xe7, 0xd1, 0xc1, 0xa3, 0xf4, 0xd1, 0xde, 0xc1, 0xc1, 0xe3, 0x27, 0xbb,
+ 0x0f, 0xe3, 0x87, 0x75, 0x62, 0x6c, 0x50, 0x5e, 0xaf, 0xd9, 0xe5, 0x7f,
+ 0x00, 0x3f, 0x14, 0xbb, 0x95, 0x21, 0xc4, 0xd4, 0x23, 0xc5, 0xbe, 0x44,
+ 0x74, 0x6b, 0xed, 0x2f, 0x24, 0x1a, 0x7d, 0x8b, 0x23, 0x75, 0x24, 0x67,
+ 0x5d, 0x73, 0x47, 0xdd, 0x72, 0x8a, 0xbe, 0xb4, 0x4d, 0xe2, 0xb5, 0x04,
+ 0x22, 0x69, 0x93, 0x2f, 0xcf, 0x23, 0xd3, 0xbd, 0x43, 0x4f, 0xb6, 0x70,
+ 0x89, 0xe4, 0xfb, 0x04, 0x1d, 0xee, 0x25, 0xfa, 0x6a, 0x61, 0x01, 0x38,
+ 0xcf, 0xb4, 0xb4, 0x00, 0x9f, 0xa1, 0xfa, 0x24, 0xb0, 0x78, 0x07, 0x87,
+ 0xb8, 0x5e, 0x31, 0x3f, 0xfe, 0x4d, 0x10, 0xbe, 0x2d, 0x4d, 0x40, 0x62,
+ 0xb0, 0x83, 0x6a, 0x27, 0x61, 0x5d, 0x87, 0x4f, 0x0f, 0xae, 0xb7, 0x8c,
+ 0x84, 0x75, 0x14, 0xbb, 0x5f, 0xed, 0xf5, 0x76, 0x9f, 0x7c, 0x89, 0x38,
+ 0x9d, 0x5d, 0xfb, 0xfb, 0xde, 0x7a, 0x94, 0xdc, 0x24, 0xe4, 0x25, 0x74,
+ 0xac, 0xfd, 0x86, 0xf8, 0xcd, 0xbd, 0xe8, 0xd8, 0x63, 0xa7, 0x40, 0xc4,
+ 0x44, 0xb5, 0x4d, 0xbc, 0xd4, 0x25, 0x34, 0x9c, 0x5f, 0x71, 0x25, 0xbb,
+ 0xb2, 0x4a, 0xaa, 0x45, 0x53, 0xc2, 0xeb, 0x93, 0x1b, 0xa3, 0xd4, 0x6a,
+ 0x77, 0xfc, 0x0c, 0x59, 0x63, 0x0c, 0xb2, 0xed, 0xb3, 0xfc, 0x05, 0x71,
+ 0xdb, 0x18, 0xdd, 0x2d, 0x31, 0x55, 0x12, 0xdf, 0x5a, 0x61, 0xa2, 0xab,
+ 0x77, 0x79, 0x1f, 0x75, 0x6f, 0x0d, 0x2d, 0xbf, 0xde, 0xf8, 0xda, 0xe4,
+ 0xd0, 0x18, 0x1b, 0x7f, 0xe2, 0xaa, 0x00, 0xf0, 0xb7, 0x96, 0x4f, 0x58,
+ 0xf7, 0xb6, 0x85, 0x96, 0xd4, 0xa3, 0x56, 0xcf, 0xdb, 0x7a, 0xe2, 0xef,
+ 0x89, 0x3e, 0xd8, 0xba, 0x21, 0xc6, 0x37, 0xf7, 0x21, 0xbb, 0x51, 0xef,
+ 0xeb, 0x13, 0xd8, 0x5c, 0xdc, 0x29, 0x3f, 0x60, 0x2b, 0xcc, 0xc8, 0x3e,
+ 0xf6, 0x3e, 0xa0, 0x72, 0xb8, 0x6a, 0x0b, 0xb0, 0xb7, 0x43, 0xd0, 0x8b,
+ 0xc3, 0xb5, 0xb3, 0x18, 0x46, 0x88, 0x75, 0xa3, 0xfa, 0x82, 0xa3, 0xf4,
+ 0x91, 0xbf, 0xd8, 0x72, 0x7c, 0xc1, 0x14, 0xa5, 0x85, 0x61, 0x28, 0x84,
+ 0x76, 0x1b, 0xc0, 0x39, 0x26, 0xac, 0x7f, 0x17, 0x3f, 0xc0, 0x89, 0x7a,
+ 0x53, 0x8b, 0x0a, 0xb9, 0x14, 0xa5, 0x89, 0x22, 0x9a, 0xa6, 0x68, 0xb9,
+ 0xcb, 0xca, 0x69, 0x48, 0xb6, 0x40, 0x65, 0x5e, 0xb5, 0x2e, 0x1a, 0x92,
+ 0x5f, 0xf2, 0x06, 0xab, 0x29, 0x50, 0xa9, 0x47, 0x13, 0xb1, 0xc5, 0xdc,
+ 0x46, 0x31, 0x24, 0x91, 0x98, 0xe0, 0xf7, 0xc2, 0xc2, 0xe4, 0x6a, 0x0a,
+ 0x0f, 0xe5, 0xa3, 0x34, 0x49, 0x00, 0xc8, 0xce, 0x02, 0x0e, 0xd1, 0x48,
+ 0x31, 0xf0, 0x69, 0x31, 0x2f, 0x09, 0xcd, 0x80, 0xab, 0x1e, 0x44, 0xe4,
+ 0x91, 0xa5, 0x5e, 0xe1, 0xfe, 0x7a, 0x91, 0xdf, 0xa4, 0xd7, 0x2d, 0x95,
+ 0x81, 0x6a, 0xc5, 0x6c, 0x5d, 0x6c, 0x6c, 0xba, 0x04, 0x30, 0xac, 0xa8,
+ 0x34, 0xb5, 0xed, 0xb2, 0xd9, 0x55, 0x8a, 0xa8, 0x3e, 0x92, 0x4b, 0x46,
+ 0x26, 0xdd, 0x40, 0xd6, 0x40, 0x91, 0x53, 0xf8, 0xa2, 0x5e, 0x89, 0x84,
+ 0x80, 0x98, 0x34, 0xa9, 0x4c, 0x78, 0xf5, 0x0a, 0x16, 0xd2, 0x50, 0x9f,
+ 0x17, 0x33, 0x5c, 0xaf, 0x6c, 0x4c, 0x61, 0xc0, 0x84, 0x7e, 0x2d, 0x7a,
+ 0x6f, 0xa7, 0x63, 0xcb, 0xe9, 0x29, 0x50, 0x30, 0x42, 0x48, 0x37, 0x45,
+ 0x55, 0x87, 0x0c, 0xbf, 0x7c, 0x1c, 0x40, 0x0e, 0x90, 0xb8, 0x01, 0xa1,
+ 0xc8, 0xcf, 0x94, 0xab, 0xfa, 0x6f, 0x60, 0x83, 0x4f, 0xf6, 0x6a, 0x67,
+ 0xf0, 0x19, 0xd9, 0x43, 0x17, 0xd3, 0xb9, 0x60, 0x42, 0xaf, 0x80, 0xa0,
+ 0x8d, 0xc8, 0xbf, 0xf1, 0x03, 0x01, 0x3c, 0x71, 0x14, 0x9c, 0xc0, 0x17,
+ 0xaa, 0x27, 0xd2, 0x80, 0x95, 0x49, 0x78, 0x69, 0x6b, 0x01, 0x33, 0xc6,
+ 0xff, 0xa2, 0x65, 0x47, 0xde, 0xa7, 0xaf, 0x21, 0xc1, 0x69, 0xa3, 0xdd,
+ 0xba, 0xcf, 0xa4, 0x6e, 0xb0, 0x0f, 0xe3, 0x08, 0x19, 0xea, 0x08, 0x96,
+ 0xa0, 0xaa, 0x61, 0x17, 0x31, 0x3a, 0xcd, 0x55, 0xea, 0xc2, 0x30, 0x9b,
+ 0x62, 0x92, 0x9c, 0x5a, 0xc9, 0x8e, 0x59, 0x20, 0x6c, 0x41, 0x2d, 0xf0,
+ 0xf6, 0x98, 0x08, 0x50, 0x86, 0xde, 0x91, 0xb2, 0x78, 0x0b, 0x29, 0x1d,
+ 0x9c, 0xe0, 0xb2, 0x50, 0x35, 0xb6, 0x96, 0xbc, 0x68, 0x77, 0xd5, 0x3f,
+ 0x9f, 0x72, 0xe1, 0x0c, 0x82, 0x0b, 0x5a, 0xaf, 0x0d, 0x76, 0x90, 0x77,
+ 0x0d, 0x48, 0x8d, 0xcb, 0xdc, 0xd3, 0x4b, 0x0e, 0xbe, 0x5a, 0x86, 0x52,
+ 0xf1, 0x2c, 0xc5, 0xcc, 0x15, 0x06, 0x7d, 0x9d, 0x3b, 0xf1, 0x2a, 0xf6,
+ 0xdc, 0x4b, 0x6a, 0x39, 0x83, 0x0a, 0xb0, 0x6d, 0x8e, 0x58, 0x60, 0xb3,
+ 0xc0, 0x4d, 0xef, 0xcb, 0x47, 0x40, 0xd7, 0x78, 0xeb, 0x66, 0xb9, 0xe4,
+ 0x86, 0x71, 0x68, 0x16, 0x07, 0x97, 0x93, 0xc9, 0x5d, 0xbd, 0xb6, 0xb9,
+ 0x42, 0xe0, 0x8c, 0x8d, 0x6c, 0x17, 0xa8, 0x70, 0x9e, 0x83, 0x78, 0x6f,
+ 0x32, 0x64, 0x81, 0x00, 0x05, 0x09, 0xa0, 0xb5, 0xae, 0x99, 0x29, 0xbf,
+ 0xae, 0x20, 0x8e, 0xe4, 0xe5, 0x43, 0x9e, 0x38, 0x87, 0xa1, 0x7f, 0x9f,
+ 0x20, 0x29, 0x90, 0x6c, 0xf6, 0x2c, 0x49, 0xa7, 0xc4, 0x64, 0x73, 0x0c,
+ 0x9d, 0x0a, 0x22, 0xa0, 0xf3, 0x57, 0x6c, 0x52, 0x66, 0x97, 0x04, 0x19,
+ 0x24, 0x99, 0xa0, 0x22, 0xb8, 0x2b, 0x46, 0xa0, 0xfb, 0x0a, 0x98, 0x23,
+ 0xde, 0x21, 0x54, 0x4d, 0x98, 0x60, 0x08, 0xc2, 0x58, 0xca, 0x41, 0xd5,
+ 0xc0, 0x6c, 0xd0, 0x67, 0x62, 0x76, 0xa6, 0xff, 0x6d, 0x9e, 0xd0, 0x36,
+ 0x55, 0x2e, 0x5c, 0x13, 0xda, 0x9e, 0xde, 0xf4, 0x82, 0xfc, 0x64, 0x69,
+ 0x0e, 0x83, 0x7c, 0x8c, 0x28, 0x0f, 0x1a, 0x99, 0x68, 0x99, 0x09, 0xc5,
+ 0x78, 0x18, 0x16, 0x77, 0x73, 0xf4, 0x06, 0x08, 0x74, 0x32, 0x4b, 0x14,
+ 0xb8, 0xbc, 0x0c, 0x03, 0xb0, 0x14, 0xac, 0xfa, 0x2d, 0x79, 0xda, 0xe5,
+ 0x55, 0xd2, 0x18, 0xd1, 0x37, 0x8f, 0xa5, 0xcc, 0xa3, 0xc4, 0x68, 0x90,
+ 0x48, 0x6d, 0x23, 0xaa, 0x3e, 0x62, 0xe1, 0x93, 0x9a, 0x86, 0x78, 0x6a,
+ 0xa1, 0x94, 0x9c, 0x14, 0x93, 0xec, 0xcd, 0xc1, 0x7f, 0xd1, 0x26, 0x05,
+ 0x3b, 0x29, 0x60, 0x30, 0x46, 0x9a, 0x6d, 0xa9, 0x2a, 0x2b, 0x2f, 0x7a,
+ 0x8a, 0x27, 0xa9, 0x95, 0x16, 0x38, 0xc3, 0x7a, 0x17, 0x5a, 0x88, 0x82,
+ 0x67, 0x70, 0x5f, 0x92, 0xf8, 0xe8, 0xa5, 0xa1, 0x95, 0xa8, 0x27, 0xc9,
+ 0x35, 0x2c, 0xfc, 0x83, 0xd0, 0x1a, 0x14, 0x75, 0x85, 0x70, 0x1f, 0x6a,
+ 0x54, 0x51, 0x25, 0x97, 0xb1, 0x14, 0xac, 0x68, 0xe1, 0x4a, 0x8e, 0x8b,
+ 0x48, 0x78, 0x10, 0xe3, 0xdf, 0x52, 0x52, 0xa6, 0x89, 0x73, 0xa1, 0x9b,
+ 0x50, 0xd3, 0x42, 0xa4, 0x88, 0x48, 0x38, 0x49, 0x18, 0x11, 0x5a, 0x4e,
+ 0x2e, 0x92, 0x4b, 0x27, 0x38, 0xba, 0x91, 0x67, 0x85, 0x15, 0x02, 0xd3,
+ 0x19, 0x27, 0x54, 0xc1, 0x22, 0x00, 0x0f, 0x9e, 0xc2, 0x4e, 0xc4, 0xaf,
+ 0x61, 0x6f, 0x63, 0xaf, 0x18, 0x12, 0x7a, 0x82, 0x85, 0x59, 0x5b, 0xd1,
+ 0x55, 0xc0, 0x61, 0xb1, 0x9b, 0x5e, 0xb0, 0x4a, 0xcd, 0x30, 0x2f, 0xa4,
+ 0x56, 0x0c, 0xa6, 0x44, 0xc1, 0x16, 0x52, 0x12, 0x58, 0x69, 0x90, 0xf9,
+ 0xeb, 0xd9, 0x2f, 0x34, 0x2a, 0xad, 0xe2, 0x19, 0x02, 0xb5, 0x36, 0x06,
+ 0x34, 0x29, 0x27, 0xa9, 0xc1, 0x7b, 0xa3, 0xb4, 0xcc, 0x88, 0x55, 0xd3,
+ 0x48, 0x40, 0x1f, 0x9e, 0x99, 0x42, 0x25, 0x1c, 0x90, 0xee, 0x05, 0x4b,
+ 0xc1, 0x46, 0x88, 0xdc, 0x66, 0xee, 0xed, 0xe0, 0x2c, 0xf0, 0x70, 0x49,
+ 0xfc, 0x93, 0x44, 0x0a, 0xcb, 0x66, 0x96, 0xe4, 0xb4, 0xa7, 0x42, 0x03,
+ 0xe8, 0xaa, 0xa5, 0x3f, 0x89, 0xed, 0xe2, 0x92, 0x4b, 0x28, 0xba, 0xaf,
+ 0xf7, 0xf3, 0x1d, 0xdf, 0xd5, 0x32, 0xb6, 0x33, 0xc9, 0xef, 0x70, 0xb0,
+ 0xc1, 0x72, 0xad, 0x6b, 0x22, 0x10, 0x50, 0x65, 0x65, 0x40, 0x66, 0xaf,
+ 0xbd, 0x23, 0x4b, 0x9d, 0x31, 0xa0, 0xc3, 0x62, 0xc0, 0xf5, 0xce, 0x4c,
+ 0x5d, 0x9e, 0x96, 0xab, 0xbf, 0x46, 0x89, 0x9f, 0xeb, 0xea, 0xaf, 0x0d,
+ 0x02, 0xff, 0x78, 0x00, 0xce, 0x91, 0xdd, 0x05, 0x3a, 0x74, 0xbf, 0xa1,
+ 0x28, 0x80, 0x63, 0x47, 0x2f, 0x6d, 0xbd, 0xd8, 0x37, 0x59, 0x79, 0x9a,
+ 0x87, 0x91, 0xde, 0xbc, 0xef, 0x49, 0xc4, 0x87, 0x4b, 0x4e, 0x8b, 0x82,
+ 0xe3, 0x47, 0xab, 0xae, 0x39, 0x4c, 0x35, 0xe2, 0x25, 0xd2, 0x0b, 0xed,
+ 0x91, 0x06, 0x27, 0x0f, 0x93, 0xe1, 0x95, 0xa0, 0x4f, 0x4f, 0xd8, 0x70,
+ 0xc7, 0x67, 0x0a, 0x53, 0x56, 0x38, 0x10, 0x92, 0x73, 0x14, 0x14, 0xa7,
+ 0xa3, 0x8d, 0x82, 0x5a, 0x60, 0xa1, 0x99, 0x1e, 0x4a, 0x0e, 0x8f, 0xad,
+ 0x81, 0x4f, 0x74, 0xeb, 0xf2, 0x29, 0x41, 0x93, 0xb6, 0x60, 0x37, 0x32,
+ 0x33, 0x36, 0x6b, 0x74, 0x7f, 0x94, 0xb9, 0xe8, 0xd3, 0xd0, 0x09, 0x8d,
+ 0x82, 0x38, 0xcd, 0x07, 0x10, 0x8a, 0x10, 0xdb, 0x72, 0xba, 0xa0, 0xfc,
+ 0xca, 0xdd, 0x9d, 0x1d, 0x5b, 0x26, 0xae, 0xa5, 0x36, 0x9c, 0x90, 0xc8,
+ 0xd2, 0x12, 0x71, 0x84, 0x4a, 0x4d, 0x71, 0xe3, 0xa6, 0x34, 0x46, 0x92,
+ 0x55, 0xc1, 0xa2, 0x98, 0xd8, 0xa5, 0x29, 0xd5, 0x66, 0x14, 0x81, 0x1b,
+ 0x03, 0x98, 0x98, 0x52, 0x99, 0x38, 0x0c, 0xa3, 0x3e, 0xa1, 0x21, 0x96,
+ 0x07, 0xf5, 0x77, 0xc2, 0x70, 0xe8, 0x94, 0x7d, 0x8a, 0x2f, 0x1a, 0x8e,
+ 0x10, 0x45, 0xdf, 0xdd, 0xd9, 0x00, 0x0e, 0x13, 0xc3, 0x45, 0xe3, 0xc2,
+ 0x68, 0x7f, 0x1e, 0x7f, 0x6f, 0x89, 0x3a, 0x1c, 0x2e, 0xff, 0xf6, 0x5f,
+ 0x0e, 0xb8, 0x23, 0x6c, 0xd4, 0xbc, 0xa4, 0x26, 0xb9, 0x3e, 0x94, 0x97,
+ 0x7b, 0x5b, 0x2f, 0x4c, 0x67, 0x4a, 0x84, 0xdb, 0x79, 0xa3, 0x51, 0x6a,
+ 0x90, 0x52, 0x01, 0x05, 0x56, 0xc6, 0xda, 0x38, 0x99, 0xb7, 0x5d, 0xf7,
+ 0xe5, 0x67, 0x1f, 0x1d, 0x0e, 0xd1, 0x1f, 0xca, 0x5e, 0xef, 0xb1, 0x41,
+ 0xde, 0x5b, 0xb7, 0xe6, 0x7b, 0xad, 0xd8, 0x5c, 0x1d, 0xcc, 0xe2, 0x69,
+ 0x9d, 0x62, 0xb1, 0xde, 0x44, 0x4c, 0x25, 0x25, 0x9a, 0x97, 0x2f, 0x16,
+ 0xa2, 0x40, 0xbe, 0x48, 0xf1, 0x25, 0x06, 0xd4, 0x12, 0x6f, 0xaa, 0x51,
+ 0x5a, 0x49, 0x16, 0xb1, 0x1a, 0x7e, 0xa8, 0x38, 0x45, 0x6f, 0x69, 0xe1,
+ 0x57, 0x0d, 0xa1, 0x73, 0xa1, 0xd1, 0x4d, 0x3c, 0x60, 0x33, 0x3a, 0x89,
+ 0xc3, 0x93, 0x42, 0x71, 0x9e, 0x68, 0x60, 0xaa, 0x4c, 0x28, 0x20, 0x17,
+ 0xd0, 0xa0, 0x9c, 0x41, 0x72, 0x28, 0xb0, 0x68, 0xf2, 0xf6, 0xcd, 0x69,
+ 0x97, 0xa8, 0x11, 0xf8, 0x17, 0x42, 0x02, 0x31, 0xcd, 0x06, 0xbd, 0x24,
+ 0x36, 0x42, 0x90, 0x75, 0x35, 0x9e, 0x89, 0x52, 0x14, 0xda, 0x7b, 0x0a,
+ 0x89, 0x2f, 0xc6, 0x56, 0x4b, 0x53, 0xde, 0xc9, 0xcf, 0xdb, 0x71, 0x18,
+ 0x19, 0x3c, 0xb9, 0x41, 0xc5, 0x13, 0x28, 0x4a, 0x97, 0x9b, 0xc7, 0x35,
+ 0x2b, 0xa6, 0x5c, 0xd5, 0x44, 0x7a, 0x89, 0x38, 0xab, 0x9a, 0xe1, 0xeb,
+ 0x3d, 0xc9, 0x1c, 0xd3, 0xcc, 0xb0, 0x92, 0x72, 0x44, 0x9b, 0x43, 0x75,
+ 0x41, 0x16, 0x85, 0x2d, 0xc4, 0x02, 0x9a, 0x7b, 0x06, 0xbb, 0x3a, 0xeb,
+ 0x90, 0x0c, 0x66, 0xaf, 0x6e, 0xe9, 0xd4, 0x9b, 0xec, 0x62, 0xe2, 0x44,
+ 0x5f, 0x7e, 0x11, 0xae, 0x1e, 0x52, 0x39, 0x81, 0xf6, 0x35, 0xd8, 0xe3,
+ 0xc8, 0xc1, 0x93, 0xc7, 0x81, 0xd1, 0x4d, 0x40, 0x53, 0xc8, 0x67, 0xad,
+ 0x78, 0x3e, 0x86, 0x38, 0x88, 0x97, 0xe1, 0xf8, 0xc9, 0x7c, 0x39, 0x4a,
+ 0x29, 0xc9, 0x7d, 0x46, 0x3a, 0x05, 0xaf, 0x5a, 0x32, 0xc5, 0xe0, 0x12,
+ 0xae, 0xd1, 0x87, 0xab, 0x1c, 0x44, 0x0b, 0xc7, 0x8d, 0x90, 0xda, 0x4d,
+ 0x7e, 0x24, 0x9b, 0x26, 0x11, 0x27, 0x77, 0x04, 0x3b, 0x6c, 0xba, 0x26,
+ 0xea, 0xf6, 0x2a, 0x4b, 0xc3, 0x2a, 0x5e, 0xe6, 0xe4, 0x30, 0x11, 0x3a,
+ 0xc6, 0x25, 0x1c, 0x16, 0xd9, 0xbc, 0x62, 0xf1, 0xbb, 0x2d, 0x6c, 0xa9,
+ 0xa1, 0xdd, 0x5f, 0x4e, 0xf2, 0x41, 0x32, 0x11, 0x4c, 0x76, 0x49, 0xf8,
+ 0xd5, 0xb0, 0xc6, 0x41, 0xed, 0x5e, 0xcf, 0xd9, 0xdf, 0x15, 0xd2, 0xd3,
+ 0xe1, 0xa6, 0x3c, 0xe8, 0x52, 0x5e, 0xc2, 0x6d, 0xb5, 0xb4, 0x43, 0xd3,
+ 0x05, 0x55, 0xe4, 0x8e, 0xe2, 0x71, 0x57, 0x4e, 0xaf, 0xd6, 0x34, 0xa0,
+ 0x74, 0xe9, 0xd2, 0x39, 0x53, 0x9e, 0x61, 0x80, 0x6a, 0xcb, 0x48, 0xe5,
+ 0x09, 0x7b, 0xaf, 0x6f, 0x48, 0x0a, 0x8e, 0xb8, 0x33, 0x28, 0x85, 0x37,
+ 0xfa, 0x3b, 0x5c, 0x3d, 0x54, 0xc2, 0x8e, 0x53, 0x5d, 0xd2, 0x90, 0x09,
+ 0x16, 0xab, 0xd0, 0xaa, 0x69, 0xb8, 0x1b, 0x5d, 0xb1, 0xb1, 0x16, 0x87,
+ 0x98, 0xca, 0xc8, 0x14, 0xc6, 0xc3, 0x59, 0x28, 0xae, 0x36, 0x53, 0x84,
+ 0xea, 0x93, 0x89, 0xd4, 0xce, 0xdb, 0xb1, 0x64, 0x51, 0x5c, 0xd7, 0x84,
+ 0xe5, 0x5e, 0xf7, 0x8e, 0x08, 0xf4, 0x5c, 0xb8, 0x2d, 0x7e, 0x09, 0xdb,
+ 0xf4, 0xba, 0xac, 0xdc, 0x19, 0x54, 0x80, 0x6f, 0x9b, 0xcf, 0x60, 0xf9,
+ 0xd4, 0x3c, 0xda, 0xce, 0xcb, 0xcd, 0x2e, 0x8b, 0x5e, 0x48, 0x6d, 0xe3,
+ 0x20, 0xe3, 0x41, 0x3e, 0xba, 0xab, 0x71, 0xf6, 0xc7, 0x7b, 0x01, 0xce,
+ 0x6e, 0x1e, 0x6d, 0x01, 0x94, 0x7a, 0xe3, 0x9f, 0x67, 0xb1, 0x26, 0x0a,
+ 0x23, 0xa4, 0x92, 0x6b, 0xb6, 0x84, 0x8c, 0x5e, 0xb1, 0xde, 0xde, 0x31,
+ 0x98, 0x30, 0x16, 0x16, 0x83, 0x56, 0x2e, 0x49, 0x2e, 0x2c, 0xb6, 0x7a,
+ 0xd1, 0xcb, 0x99, 0xc4, 0x77, 0x0b, 0xec, 0x8c, 0x04, 0x8b, 0x23, 0x65,
+ 0x31, 0x94, 0x01, 0xf7, 0x16, 0x20, 0xd4, 0x52, 0x32, 0xe4, 0xb2, 0x6b,
+ 0x2a, 0xf6, 0x35, 0xca, 0x87, 0xb6, 0x28, 0x89, 0x01, 0x8a, 0x13, 0x94,
+ 0x01, 0xfd, 0x92, 0x68, 0xd8, 0x8f, 0x4e, 0x84, 0x85, 0x94, 0x10, 0x35,
+ 0x2e, 0x06, 0x40, 0x4b, 0xab, 0xd0, 0x62, 0x38, 0xc5, 0x3b, 0x8e, 0x6b,
+ 0x41, 0x3e, 0xbf, 0x65, 0x22, 0x22, 0x29, 0xab, 0x30, 0x64, 0x1b, 0x28,
+ 0x2b, 0xa9, 0xb9, 0xe2, 0x08, 0x66, 0x02, 0xa0, 0x4d, 0xdc, 0x83, 0xf5,
+ 0xb8, 0xc4, 0x40, 0xcc, 0x91, 0xfb, 0x8d, 0xfa, 0x24, 0x07, 0x4f, 0x88,
+ 0xd3, 0xcb, 0xea, 0xef, 0xed, 0x85, 0x59, 0x80, 0x46, 0x8f, 0x57, 0x18,
+ 0x72, 0x48, 0x71, 0xd4, 0x56, 0xd7, 0x13, 0xf2, 0x10, 0x37, 0x93, 0x5b,
+ 0xf0, 0x86, 0x96, 0xd1, 0x2f, 0x95, 0xe0, 0x54, 0x1a, 0xc8, 0x0a, 0x58,
+ 0x37, 0x58, 0xb3, 0x19, 0x26, 0xcf, 0xbb, 0xb8, 0x61, 0x30, 0x87, 0x06,
+ 0xa2, 0xc2, 0x72, 0x7f, 0x6d, 0x9d, 0xd6, 0xa2, 0x8f, 0xeb, 0xaf, 0x6d,
+ 0xd0, 0xfc, 0x43, 0x4e, 0xa3, 0x1d, 0xda, 0x5a, 0x92, 0x94, 0x39, 0x7d,
+ 0x9e, 0x65, 0x37, 0x94, 0xe8, 0x4b, 0xb1, 0x22, 0xf0, 0x8e, 0x97, 0x49,
+ 0xc0, 0x2d, 0xb4, 0xbb, 0x12, 0x4d, 0x37, 0xe1, 0x43, 0x4a, 0x92, 0xd8,
+ 0x38, 0x29, 0x2b, 0x03, 0x13, 0xa9, 0xd4, 0xc6, 0x76, 0xb5, 0xe6, 0x99,
+ 0x35, 0x69, 0x93, 0xfe, 0x7d, 0x43, 0x62, 0x40, 0xae, 0xb9, 0x0b, 0xee,
+ 0x9d, 0xb7, 0x28, 0x4d, 0xb0, 0x09, 0x27, 0xbf, 0x8e, 0xd2, 0x64, 0xa2,
+ 0x41, 0x21, 0x38, 0x36, 0xbf, 0xee, 0x0f, 0x8b, 0x61, 0xa5, 0x7f, 0xc8,
+ 0x19, 0x25, 0x64, 0x56, 0x2b, 0x3a, 0xe5, 0x1f, 0xe9, 0x66, 0x79, 0x8d,
+ 0x75, 0x0e, 0x38, 0x47, 0x59, 0x69, 0xdc, 0x29, 0x9d, 0xea, 0x50, 0x19,
+ 0x21, 0xe7, 0x90, 0x9b, 0x53, 0x2e, 0x87, 0x9c, 0x96, 0x88, 0x8e, 0x38,
+ 0x09, 0x38, 0x92, 0x2e, 0xca, 0x44, 0x83, 0xb6, 0x97, 0xa6, 0xed, 0x88,
+ 0x56, 0xbc, 0xe2, 0x43, 0x21, 0x85, 0x58, 0x44, 0x16, 0x5a, 0x7e, 0x74,
+ 0xa7, 0x29, 0x9c, 0xa8, 0x91, 0xde, 0x84, 0x44, 0x8c, 0x65, 0x32, 0x4e,
+ 0xd5, 0x7c, 0x23, 0x12, 0x66, 0x3e, 0x84, 0x95, 0x63, 0xf0, 0x37, 0xfa,
+ 0x0c, 0xad, 0xa3, 0x9e, 0xda, 0xce, 0x92, 0x1d, 0x6e, 0xa1, 0x51, 0x74,
+ 0x90, 0xef, 0x8a, 0x48, 0x58, 0x4e, 0xb2, 0xb9, 0xc6, 0xf6, 0x76, 0xa3,
+ 0x54, 0x20, 0x03, 0x80, 0x42, 0x79, 0x37, 0x16, 0xb1, 0x2f, 0xaf, 0x9a,
+ 0x44, 0x5b, 0xae, 0xf2, 0x74, 0x8d, 0x6e, 0xe3, 0x51, 0xb4, 0xd9, 0x68,
+ 0xfd, 0xd1, 0xce, 0x2e, 0x8d, 0xf6, 0xd1, 0xce, 0xd3, 0xad, 0x95, 0x97,
+ 0xf1, 0x47, 0x86, 0x2c, 0xa7, 0x93, 0xf3, 0x80, 0x03, 0xbf, 0x6e, 0x3c,
+ 0x4e, 0xf3, 0x5a, 0x6d, 0x3b, 0xed, 0x6e, 0x8e, 0x69, 0xf0, 0x98, 0x87,
+ 0xf8, 0x14, 0x7e, 0x33, 0x29, 0xd3, 0x98, 0xa0, 0x39, 0xee, 0x81, 0x92,
+ 0x4d, 0x86, 0x7b, 0x7c, 0x43, 0xc0, 0x3c, 0x14, 0x14, 0x9b, 0x64, 0x65,
+ 0x78, 0x3e, 0xa2, 0xba, 0x55, 0xe5, 0x15, 0x96, 0x83, 0xf7, 0x94, 0x36,
+ 0x7c, 0x4d, 0xde, 0xa3, 0xb8, 0x6d, 0x4a, 0xb8, 0x61, 0xa2, 0x4a, 0xe8,
+ 0x65, 0x06, 0x5e, 0x16, 0x9a, 0xa1, 0xe7, 0x8c, 0x05, 0xb7, 0x1d, 0xec,
+ 0x54, 0xb0, 0x48, 0x39, 0xdf, 0x8a, 0xbc, 0xed, 0x77, 0xc6, 0x80, 0xab,
+ 0x42, 0x64, 0xf4, 0x3c, 0x9b, 0x65, 0xe5, 0x15, 0x5a, 0xa4, 0xa6, 0x98,
+ 0x62, 0x74, 0xe9, 0x29, 0x70, 0xe4, 0x5e, 0x94, 0xab, 0x25, 0x89, 0x80,
+ 0x52, 0xf1, 0x0c, 0x00, 0x0b, 0x62, 0x12, 0x15, 0x2c, 0x43, 0xfe, 0x92,
+ 0x6b, 0x1f, 0xdb, 0x69, 0x06, 0xab, 0x4a, 0x66, 0xb4, 0x66, 0x08, 0x27,
+ 0x3d, 0xb9, 0x13, 0x7c, 0x00, 0xdc, 0x6c, 0x64, 0x14, 0x16, 0x33, 0xee,
+ 0x75, 0xbf, 0x4f, 0xe4, 0xdb, 0x67, 0xff, 0xfd, 0x05, 0x8a, 0xc7, 0xde,
+ 0x3c, 0x31, 0x30, 0x6a, 0x13, 0xf7, 0xfa, 0xac, 0x0f, 0xec, 0x99, 0x64,
+ 0x18, 0x34, 0xae, 0x15, 0x04, 0x72, 0x02, 0x9f, 0xfd, 0x88, 0xe1, 0xb3,
+ 0x5f, 0x99, 0x8f, 0xb7, 0xa8, 0xf8, 0x0f, 0xa2, 0x2f, 0xad, 0x38, 0x10,
+ 0x66, 0xdb, 0x3f, 0x41, 0xf1, 0x0f, 0xa7, 0xf5, 0xf5, 0x8f, 0x88, 0x1d,
+ 0xd8, 0x7a, 0xa6, 0x85, 0x6a, 0x38, 0x8f, 0xf1, 0x2a, 0x42, 0x10, 0xed,
+ 0xba, 0x5d, 0xa1, 0x29, 0x7d, 0x22, 0xb6, 0x52, 0x1a, 0xaa, 0xd6, 0x64,
+ 0xb0, 0x4c, 0x6b, 0x44, 0x4f, 0xf0, 0x4e, 0xb0, 0x03, 0x14, 0xe6, 0x82,
+ 0x6a, 0x11, 0x2f, 0x18, 0x8e, 0xd0, 0xe2, 0x0e, 0x95, 0x01, 0xbd, 0x9b,
+ 0x0b, 0x7f, 0xb0, 0x43, 0x01, 0x77, 0xa5, 0x04, 0x1d, 0xfc, 0x8a, 0x7b,
+ 0x66, 0xfc, 0x34, 0x13, 0x2f, 0x03, 0x04, 0x36, 0x44, 0x6c, 0xa8, 0x56,
+ 0x9c, 0x4c, 0x32, 0x5b, 0x3a, 0x03, 0xff, 0x8c, 0x31, 0x87, 0xee, 0x28,
+ 0xe2, 0xe7, 0xd1, 0x06, 0x4d, 0xff, 0x67, 0x03, 0x97, 0xb2, 0x21, 0x1f,
+ 0x4e, 0xd2, 0xaf, 0xbf, 0x45, 0xa0, 0x90, 0x0e, 0xaa, 0xee, 0x1b, 0xeb,
+ 0xed, 0xa5, 0x05, 0xb8, 0x72, 0xf7, 0xf1, 0xcb, 0xdd, 0xc0, 0x3e, 0x4a,
+ 0xb4, 0x0a, 0x79, 0x24, 0xbf, 0xe6, 0x3f, 0x5a, 0x90, 0xc9, 0xa8, 0xce,
+ 0xc5, 0xcb, 0x57, 0x47, 0xb0, 0xc1, 0x7d, 0x0b, 0x75, 0x2a, 0xd8, 0x27,
+ 0x8c, 0x60, 0x6a, 0xdd, 0x36, 0x6c, 0x35, 0xe3, 0xf6, 0x5a, 0xe4, 0x54,
+ 0x86, 0x01, 0xaa, 0xe1, 0xe8, 0x93, 0x21, 0x69, 0x92, 0x55, 0xb8, 0x1b,
+ 0xa0, 0x9c, 0x45, 0xa7, 0xb0, 0xbd, 0x38, 0xba, 0x8d, 0x6f, 0x37, 0x24,
+ 0x3e, 0x7d, 0xe3, 0xb0, 0x89, 0x17, 0x64, 0x20, 0x76, 0x4a, 0xe3, 0x38,
+ 0x89, 0x36, 0xfe, 0x84, 0x20, 0x61, 0x58, 0x05, 0x91, 0x67, 0x27, 0xfc,
+ 0x82, 0x07, 0x45, 0x09, 0x95, 0x70, 0x3a, 0xe5, 0x1a, 0x6d, 0x3a, 0x26,
+ 0xb9, 0x62, 0x7d, 0x1d, 0x14, 0x82, 0x0b, 0x96, 0xa5, 0x14, 0xe1, 0x64,
+ 0xa6, 0xac, 0x76, 0xa4, 0x8d, 0x92, 0xd1, 0x3d, 0xc9, 0xfd, 0xe9, 0x17,
+ 0x15, 0xa4, 0x9c, 0x75, 0xeb, 0xce, 0xe2, 0x01, 0xf1, 0x48, 0x28, 0xd6,
+ 0x76, 0x38, 0xa4, 0x9a, 0x01, 0x74, 0x07, 0xc1, 0x97, 0x97, 0x97, 0x8c,
+ 0x05, 0x4d, 0x73, 0xce, 0x9b, 0xda, 0x13, 0x4c, 0x3f, 0x1a, 0x83, 0x02,
+ 0x46, 0x86, 0x0e, 0x34, 0x30, 0x2c, 0x83, 0x32, 0x73, 0xf7, 0xf7, 0xd3,
+ 0xe1, 0x26, 0xbb, 0xbd, 0x74, 0xf0, 0x2e, 0xe9, 0x3c, 0x94, 0x56, 0x2d,
+ 0x69, 0x5a, 0x4c, 0x9d, 0x43, 0x17, 0x02, 0x34, 0x4c, 0x98, 0x0e, 0x5d,
+ 0xa2, 0x57, 0x91, 0x3e, 0x33, 0x51, 0x3f, 0xe3, 0x04, 0x28, 0xf5, 0x4e,
+ 0xd2, 0x6a, 0x27, 0x08, 0xd7, 0x28, 0x0a, 0x54, 0x3a, 0xf5, 0xc4, 0xa6,
+ 0x09, 0x05, 0x9c, 0x25, 0x0a, 0x76, 0x17, 0xa3, 0x85, 0x9c, 0x06, 0x81,
+ 0x6b, 0xc4, 0xf2, 0xa8, 0xc5, 0xc7, 0x13, 0xd4, 0xbb, 0x91, 0x83, 0x7a,
+ 0xd7, 0xdc, 0x7a, 0x17, 0x03, 0x4f, 0x2c, 0x38, 0xca, 0x12, 0x09, 0xbf,
+ 0x4f, 0x80, 0xdf, 0x16, 0xa5, 0x15, 0x01, 0x5c, 0x10, 0xef, 0x26, 0x61,
+ 0x2a, 0xd3, 0xdc, 0xa6, 0x15, 0x67, 0xac, 0xc1, 0x66, 0x89, 0x8c, 0xbd,
+ 0xfd, 0x2f, 0xbf, 0x0c, 0xfa, 0x5a, 0xb9, 0x48, 0x0d, 0xec, 0x30, 0x2e,
+ 0x94, 0x57, 0x19, 0x89, 0x4d, 0x37, 0x44, 0xfb, 0xa5, 0x3a, 0x19, 0xb1,
+ 0xd2, 0x70, 0x82, 0xbd, 0xfa, 0x81, 0x05, 0xc4, 0xba, 0xa7, 0x24, 0x12,
+ 0xb2, 0x34, 0x40, 0x56, 0x27, 0xbc, 0x7d, 0x61, 0x15, 0xc2, 0x17, 0x7a,
+ 0x2a, 0x88, 0x30, 0x0c, 0x7e, 0x24, 0xd5, 0xed, 0x05, 0xaf, 0x8e, 0xd9,
+ 0x7c, 0x5a, 0x0d, 0x09, 0xb2, 0x8e, 0x60, 0x00, 0x64, 0x39, 0x36, 0x5a,
+ 0x70, 0xd0, 0x37, 0x22, 0x4d, 0x56, 0x1b, 0x68, 0x25, 0x99, 0x2e, 0x1d,
+ 0xd2, 0xec, 0xb6, 0x51, 0x5e, 0x93, 0xd1, 0xe1, 0x66, 0xd1, 0xb7, 0x84,
+ 0xce, 0x89, 0x1d, 0x34, 0x9a, 0xa3, 0xb2, 0x07, 0x97, 0x69, 0xe5, 0x23,
+ 0xc5, 0x3a, 0x88, 0x61, 0x4b, 0x1a, 0x0f, 0x99, 0x8a, 0x05, 0xe9, 0x36,
+ 0x3a, 0x34, 0x55, 0x70, 0xb3, 0xb1, 0xf2, 0x0f, 0x54, 0xc2, 0x6e, 0xd0,
+ 0x7f, 0xf1, 0x2d, 0x6d, 0xc7, 0xa1, 0xac, 0xbd, 0x20, 0x3f, 0x7f, 0x1b,
+ 0xac, 0x89, 0x2d, 0xb0, 0x65, 0x54, 0x9f, 0xb9, 0xaa, 0x92, 0xe1, 0x95,
+ 0x15, 0x81, 0x08, 0x79, 0x8e, 0xca, 0xb4, 0x8a, 0x2f, 0x9b, 0x17, 0x98,
+ 0x71, 0x8f, 0xbc, 0xfc, 0x58, 0x42, 0x85, 0x36, 0x8d, 0x22, 0xf8, 0x8d,
+ 0x80, 0xfe, 0xe1, 0x50, 0x42, 0x2b, 0x51, 0x0a, 0xb7, 0x46, 0xee, 0x05,
+ 0x4f, 0x7b, 0xf7, 0x33, 0xbe, 0xeb, 0xac, 0x93, 0xbf, 0xf7, 0x6e, 0x0a,
+ 0x8e, 0xd4, 0x66, 0xe4, 0x25, 0xb6, 0x60, 0x71, 0xee, 0x3d, 0x9e, 0x98,
+ 0xd8, 0x83, 0x60, 0x99, 0xaf, 0x18, 0xa7, 0x6a, 0x6b, 0x17, 0x10, 0x65,
+ 0x5d, 0xa2, 0xf1, 0x14, 0x47, 0x49, 0x55, 0x19, 0x75, 0x55, 0x31, 0x36,
+ 0xae, 0x2a, 0x16, 0x58, 0x24, 0x87, 0x7d, 0x15, 0xd4, 0x95, 0x9f, 0xb9,
+ 0x8f, 0x0c, 0xb1, 0x5b, 0x9f, 0x31, 0xe6, 0xc1, 0x2e, 0x68, 0xbf, 0x68,
+ 0x95, 0xa5, 0x80, 0x3c, 0x1b, 0xbe, 0x61, 0x60, 0x06, 0x3e, 0xc1, 0xb7,
+ 0xf6, 0x88, 0x17, 0x80, 0xdc, 0x6a, 0x65, 0xf6, 0x1b, 0x6b, 0x82, 0x82,
+ 0x8d, 0xa5, 0xd1, 0x31, 0xe4, 0xca, 0x4a, 0xd1, 0x07, 0xfd, 0x0c, 0x28,
+ 0x6a, 0xc6, 0x22, 0x31, 0xd2, 0xdb, 0x46, 0xe9, 0x17, 0xa5, 0x4c, 0x74,
+ 0x71, 0xf9, 0xae, 0x44, 0xcd, 0xb1, 0x48, 0x2f, 0x17, 0x78, 0xf5, 0x32,
+ 0x16, 0x2e, 0x28, 0x8e, 0x57, 0xbc, 0xfd, 0x72, 0x9b, 0x66, 0x73, 0xcd,
+ 0xce, 0xf5, 0x20, 0x1b, 0xe0, 0xad, 0x2d, 0x9e, 0xf3, 0x0c, 0x96, 0xab,
+ 0x5a, 0xcc, 0x38, 0x10, 0x96, 0x4a, 0x86, 0x2e, 0x06, 0xbf, 0x52, 0xd0,
+ 0x51, 0x2e, 0x53, 0x67, 0x18, 0x5d, 0x8b, 0xb5, 0x98, 0x8e, 0x3d, 0xaf,
+ 0x43, 0x4a, 0x59, 0xff, 0xe4, 0x93, 0x4e, 0x28, 0x39, 0x58, 0x18, 0x00,
+ 0xd7, 0xf2, 0xc1, 0xbb, 0xe5, 0x4f, 0x4e, 0x50, 0x30, 0x09, 0xfd, 0xb4,
+ 0x26, 0x14, 0x3a, 0xe6, 0x9d, 0xea, 0xf7, 0xb3, 0xfc, 0x66, 0xa6, 0x5a,
+ 0x88, 0xc0, 0xb7, 0xb0, 0x9d, 0x9f, 0x44, 0x59, 0xcc, 0x00, 0xc4, 0xa9,
+ 0x2a, 0xd0, 0x1f, 0xb9, 0xb0, 0x61, 0xde, 0x04, 0xb8, 0x08, 0xfb, 0x75,
+ 0x17, 0x42, 0x3f, 0x65, 0x45, 0xfe, 0x57, 0xe3, 0x07, 0x40, 0xd6, 0xd7,
+ 0x2a, 0xac, 0x71, 0x5a, 0x2d, 0x26, 0xa9, 0x4e, 0x85, 0xa1, 0xd5, 0xad,
+ 0x1c, 0x5d, 0xd1, 0xb4, 0x36, 0x80, 0x77, 0xe2, 0xda, 0x6f, 0x84, 0xab,
+ 0xab, 0x33, 0xaa, 0xa2, 0x71, 0x7f, 0x10, 0xab, 0xe6, 0x63, 0x82, 0x2e,
+ 0x5e, 0xba, 0x43, 0x0c, 0x0f, 0x41, 0xd5, 0xa4, 0x48, 0x80, 0x63, 0xfe,
+ 0x3a, 0xbf, 0x6c, 0xc2, 0x7b, 0x39, 0x07, 0x96, 0xea, 0xd9, 0x7a, 0x58,
+ 0xe8, 0x72, 0xfd, 0x3e, 0x8f, 0x64, 0x3c, 0x5f, 0x7f, 0x5b, 0x6b, 0x2e,
+ 0x70, 0x05, 0x6f, 0x4b, 0xa5, 0xb3, 0xe1, 0x65, 0xb6, 0x7c, 0x11, 0x28,
+ 0xf0, 0xdb, 0x40, 0x58, 0x95, 0x57, 0x79, 0x2a, 0x3b, 0x37, 0x23, 0xbf,
+ 0x80, 0x65, 0x1b, 0xa5, 0xe2, 0xff, 0x04, 0xd1, 0x7c, 0xda, 0x87, 0x4c,
+ 0x77, 0xfa, 0x9f, 0xf3, 0xab, 0x19, 0xfe, 0x81, 0xed, 0x63, 0xf3, 0x5f,
+ 0xef, 0x06, 0x93, 0xc6, 0xb6, 0x5b, 0xc7, 0xea, 0x0c, 0x16, 0x6f, 0x21,
+ 0x01, 0x06, 0x72, 0x98, 0x5a, 0xcd, 0x15, 0xd2, 0x23, 0x48, 0xdd, 0x80,
+ 0x59, 0x02, 0x0f, 0x0f, 0x95, 0x38, 0x76, 0x5e, 0x65, 0xc8, 0x91, 0x20,
+ 0x2f, 0xcc, 0xcc, 0xc5, 0xc0, 0xd5, 0xec, 0x02, 0x2a, 0x4b, 0xfb, 0xc4,
+ 0x3b, 0x18, 0xa8, 0x70, 0xf7, 0xf5, 0xe1, 0xd5, 0xe2, 0x92, 0xaa, 0xa6,
+ 0x62, 0xbc, 0x42, 0xe7, 0x5e, 0xb3, 0x46, 0xa7, 0x0d, 0x7b, 0x6d, 0xd8,
+ 0xfa, 0x55, 0x39, 0x39, 0xe1, 0x04, 0xf6, 0x57, 0x13, 0x1d, 0x22, 0x53,
+ 0x76, 0x6b, 0x10, 0xae, 0x97, 0xb8, 0xc1, 0xf2, 0x71, 0x97, 0xd7, 0x4c,
+ 0xea, 0xbc, 0xd8, 0x02, 0x06, 0x4b, 0x66, 0x70, 0x93, 0x0e, 0xbe, 0xfe,
+ 0x16, 0x5d, 0x7d, 0xb7, 0xbd, 0xab, 0x6a, 0x3a, 0x61, 0x41, 0x1b, 0x57,
+ 0x6e, 0x1b, 0xff, 0xec, 0x44, 0x4b, 0x64, 0x3e, 0x90, 0x66, 0x5b, 0x9b,
+ 0x75, 0xb0, 0x50, 0x9d, 0x26, 0xc7, 0x79, 0xbe, 0xb4, 0x45, 0x75, 0x65,
+ 0xd1, 0x9a, 0x38, 0x00, 0x2e, 0x0c, 0x6b, 0x62, 0xb3, 0x11, 0x98, 0x1e,
+ 0xe8, 0x7e, 0xa9, 0x5d, 0x93, 0xa1, 0x72, 0x05, 0x14, 0xf7, 0xc6, 0xe6,
+ 0x40, 0xbd, 0x69, 0xbe, 0xee, 0x2a, 0x64, 0x68, 0x56, 0x2e, 0x59, 0x1a,
+ 0xd5, 0xd9, 0xa4, 0xc6, 0xe1, 0x9f, 0xcc, 0xeb, 0xf8, 0x0f, 0x9c, 0x62,
+ 0xb8, 0xaa, 0x97, 0xce, 0x06, 0x03, 0x17, 0xf4, 0x9d, 0x6d, 0x8a, 0xd8,
+ 0xd5, 0x68, 0xb7, 0x68, 0xa3, 0x8b, 0xca, 0x00, 0xe8, 0x35, 0x1b, 0x64,
+ 0x43, 0xd5, 0xec, 0x8e, 0x7f, 0x2c, 0x72, 0xe1, 0x6d, 0xa3, 0xdc, 0x13,
+ 0x67, 0x11, 0x77, 0x84, 0x1e, 0x28, 0x69, 0xf4, 0x2b, 0x07, 0xfe, 0x73,
+ 0x87, 0x86, 0xde, 0xc5, 0xbf, 0x7e, 0xee, 0xd8, 0xd1, 0xff, 0x4c, 0x9b,
+ 0xf3, 0xa7, 0x6c, 0xf6, 0x27, 0x9c, 0xc1, 0xcf, 0x9d, 0x87, 0xee, 0xb1,
+ 0xe8, 0xb4, 0x4e, 0x2f, 0x4e, 0x27, 0xb5, 0x3e, 0x3a, 0x1b, 0x51, 0x3b,
+ 0x30, 0xa8, 0x45, 0xe6, 0xcf, 0xc6, 0x4e, 0x75, 0x7a, 0x5e, 0x30, 0xbc,
+ 0x5c, 0x64, 0x51, 0x48, 0x88, 0x80, 0x65, 0xb1, 0xcb, 0xd0, 0xa5, 0x32,
+ 0x0c, 0x9e, 0x6d, 0xda, 0x3e, 0x81, 0x4b, 0x6c, 0xec, 0x0c, 0x24, 0xdd,
+ 0x65, 0xb6, 0xe0, 0x27, 0x11, 0x92, 0x2e, 0x3c, 0xab, 0xef, 0x23, 0xff,
+ 0xe2, 0x31, 0xaf, 0x7b, 0x17, 0xcd, 0x5f, 0xa1, 0x07, 0x83, 0x87, 0x40,
+ 0x04, 0x8b, 0xb2, 0xab, 0x60, 0x25, 0x10, 0x2c, 0xd6, 0x8c, 0xa3, 0x8e,
+ 0x45, 0x2d, 0x40, 0xd8, 0x8f, 0xcc, 0x96, 0x95, 0x28, 0x3d, 0x1e, 0x3b,
+ 0xcd, 0x40, 0x82, 0x27, 0xff, 0xec, 0x84, 0xd5, 0xe4, 0x6d, 0x64, 0xff,
+ 0x04, 0xf0, 0x53, 0xce, 0x13, 0x74, 0xfb, 0xa0, 0x4d, 0x4b, 0x34, 0x68,
+ 0x9e, 0x26, 0xaf, 0xcd, 0x12, 0x1a, 0xde, 0xc0, 0x26, 0x8b, 0xf2, 0xeb,
+ 0x0e, 0x08, 0x3f, 0x7f, 0x42, 0x5f, 0x5f, 0x3a, 0xfb, 0x13, 0x10, 0xd2,
+ 0x02, 0xb6, 0xca, 0x9e, 0xca, 0xdb, 0x78, 0x7a, 0x07, 0x03, 0xdf, 0x58,
+ 0x75, 0x32, 0x85, 0x5f, 0x8d, 0xb0, 0xb2, 0x36, 0xc7, 0x8f, 0x36, 0x93,
+ 0x30, 0xf8, 0x5c, 0x3a, 0x27, 0x4e, 0xbe, 0xff, 0xba, 0x69, 0x5e, 0x24,
+ 0xf8, 0x64, 0x0f, 0xb1, 0xd3, 0xb2, 0x55, 0xd2, 0xbf, 0xbe, 0x3e, 0xfb,
+ 0xcb, 0x9f, 0xb4, 0x81, 0x9f, 0x3b, 0x3f, 0xc6, 0xfc, 0x29, 0xe1, 0x85,
+ 0x1f, 0x44, 0x67, 0x7f, 0x59, 0x9f, 0x72, 0x97, 0x75, 0xf0, 0x2d, 0xff,
+ 0x42, 0x64, 0xbc, 0xac, 0x59, 0x94, 0xff, 0xf5, 0x9d, 0xe8, 0x7d, 0x7a,
+ 0x47, 0xb0, 0x8a, 0xa4, 0xf8, 0xcf, 0xe7, 0x88, 0x40, 0xa9, 0x08, 0xd9,
+ 0x15, 0x23, 0x64, 0x93, 0x91, 0x23, 0x19, 0xe4, 0x8c, 0xf9, 0x54, 0x79,
+ 0x71, 0xd3, 0xf0, 0x15, 0x86, 0x32, 0xfd, 0x43, 0x88, 0x89, 0x33, 0xb2,
+ 0x7a, 0x12, 0x8f, 0x53, 0xcf, 0x55, 0xa9, 0x83, 0x1e, 0x77, 0xa3, 0x13,
+ 0x8c, 0xef, 0xf3, 0xd6, 0x55, 0x2b, 0x75, 0xf1, 0x6f, 0x24, 0x6c, 0x51,
+ 0x29, 0x32, 0xd4, 0x9b, 0x36, 0x7e, 0xb7, 0x41, 0x6d, 0xa1, 0x75, 0x80,
+ 0x2e, 0x40, 0x72, 0xf3, 0x73, 0xe2, 0xc3, 0x9f, 0x42, 0x61, 0x0f, 0x12,
+ 0x5b, 0x26, 0xc6, 0x86, 0x71, 0x3e, 0x19, 0x49, 0x04, 0x06, 0x50, 0x39,
+ 0x6f, 0xb0, 0x6a, 0x3f, 0x28, 0x48, 0xe0, 0x52, 0x48, 0x54, 0x86, 0x74,
+ 0x1b, 0x90, 0x7e, 0x24, 0x16, 0x8c, 0x4d, 0xd5, 0x36, 0xb0, 0x37, 0x89,
+ 0x98, 0xc8, 0xff, 0x84, 0x9a, 0xfc, 0x20, 0x25, 0x23, 0x97, 0xc1, 0x72,
+ 0x8e, 0xc5, 0xc7, 0xd4, 0x5c, 0x3b, 0x5c, 0x5b, 0x73, 0x46, 0xf4, 0x90,
+ 0x70, 0x2e, 0x8d, 0xe2, 0x39, 0x63, 0x79, 0xc7, 0x17, 0xe4, 0xa6, 0x61,
+ 0xc7, 0xac, 0x26, 0x39, 0xe1, 0xdd, 0x11, 0x9e, 0xac, 0x09, 0x4b, 0xc6,
+ 0x15, 0xf2, 0x4f, 0x56, 0xf4, 0x3b, 0xf1, 0x47, 0x39, 0xd1, 0xcb, 0x34,
+ 0x7b, 0xd9, 0xac, 0x9e, 0xf7, 0xc2, 0x8f, 0x92, 0xf6, 0x12, 0xef, 0x1e,
+ 0x18, 0xed, 0x3c, 0x91, 0xc7, 0xc3, 0xcd, 0xbb, 0xc5, 0x73, 0x64, 0x54,
+ 0xd8, 0x23, 0x2d, 0xff, 0x92, 0xf6, 0xf7, 0x4c, 0xfb, 0x3e, 0x16, 0x6e,
+ 0x32, 0xe3, 0x8a, 0x32, 0xe1, 0x6e, 0x2f, 0x6c, 0xce, 0xb1, 0x7a, 0x18,
+ 0xac, 0x4d, 0xd7, 0x35, 0x0c, 0x88, 0x35, 0x55, 0x6a, 0xd9, 0x70, 0xa0,
+ 0xab, 0x5f, 0x3e, 0xae, 0xa2, 0xd2, 0x18, 0xa4, 0xdb, 0xd1, 0x3c, 0x3c,
+ 0x30, 0xea, 0x58, 0x04, 0x6b, 0x21, 0xac, 0x1c, 0xce, 0x22, 0xb0, 0xf8,
+ 0x03, 0x8e, 0xb7, 0xb2, 0xb5, 0x37, 0x32, 0x17, 0x1e, 0xcb, 0x42, 0x6f,
+ 0x07, 0xeb, 0x31, 0x2b, 0x00, 0x83, 0xe7, 0xd2, 0x45, 0xc6, 0xcb, 0x05,
+ 0xb8, 0x48, 0xf1, 0x90, 0x93, 0xb0, 0xb9, 0x21, 0xa6, 0x12, 0xec, 0x28,
+ 0x61, 0x77, 0xa7, 0x94, 0xe2, 0x4b, 0x08, 0x2c, 0x5c, 0x0c, 0x34, 0x71,
+ 0x40, 0xa4, 0x38, 0x20, 0x68, 0x65, 0x73, 0x26, 0x9c, 0x02, 0x4b, 0xaa,
+ 0x0c, 0x73, 0xa1, 0xba, 0x5a, 0x55, 0x25, 0x5f, 0xf3, 0x75, 0x96, 0x58,
+ 0x1a, 0x63, 0x85, 0x93, 0x22, 0x85, 0xe5, 0x50, 0x6c, 0x7c, 0xbd, 0xb5,
+ 0xd1, 0x5e, 0x28, 0xda, 0x88, 0xce, 0xf5, 0x7a, 0x4b, 0x6a, 0xfc, 0x2b,
+ 0xa9, 0xe6, 0x04, 0x34, 0x4d, 0xc6, 0xa2, 0x29, 0x86, 0xad, 0xa6, 0xb4,
+ 0x99, 0x94, 0x68, 0x56, 0x56, 0x21, 0x10, 0x40, 0xae, 0x07, 0x91, 0xcd,
+ 0xe8, 0x64, 0x72, 0x85, 0x1c, 0x26, 0x6f, 0x37, 0xa2, 0x81, 0x4b, 0xfb,
+ 0x96, 0x07, 0xae, 0x9c, 0xed, 0x5b, 0xfb, 0xd1, 0x1b, 0xdc, 0x8b, 0x5e,
+ 0x1a, 0x1b, 0x87, 0x63, 0xa2, 0x58, 0x26, 0x53, 0x6f, 0x7c, 0xbd, 0xc9,
+ 0x77, 0x93, 0x35, 0x90, 0x39, 0x7d, 0x6f, 0x44, 0x3f, 0x07, 0x81, 0x9e,
+ 0xe9, 0x45, 0x67, 0x38, 0x42, 0xaf, 0x4b, 0x1f, 0x8f, 0x0e, 0xd1, 0xf9,
+ 0xf7, 0x0d, 0x79, 0xad, 0xe5, 0xf9, 0xc3, 0x6d, 0xfa, 0xa8, 0x21, 0x05,
+ 0x2f, 0x6d, 0x65, 0x8b, 0x0d, 0xfc, 0x5f, 0x7f, 0x8b, 0x8f, 0xab, 0x12,
+ 0xb0, 0x11, 0xf5, 0x7a, 0xc0, 0x7a, 0xca, 0x69, 0x13, 0x5c, 0xce, 0x03,
+ 0xf1, 0x23, 0xd9, 0x80, 0x2e, 0x56, 0x14, 0x43, 0xa4, 0xc0, 0x0b, 0x19,
+ 0x69, 0x54, 0x61, 0x66, 0x7b, 0x22, 0x7f, 0x55, 0x7c, 0xdd, 0x8b, 0x8e,
+ 0x4c, 0x8e, 0x8d, 0x0f, 0xe3, 0xca, 0xde, 0x12, 0xbe, 0x31, 0xc4, 0x1a,
+ 0x87, 0x94, 0xf0, 0xe5, 0x20, 0x13, 0x5b, 0x3e, 0x43, 0xda, 0x53, 0x54,
+ 0x7a, 0x3a, 0x29, 0xa5, 0x96, 0x03, 0x5c, 0xe9, 0xe2, 0x22, 0xf4, 0x9a,
+ 0x2b, 0xd8, 0xc3, 0xcc, 0xc1, 0x23, 0x46, 0x25, 0x91, 0xa1, 0xc5, 0x27,
+ 0xe2, 0x9e, 0xb1, 0x81, 0xed, 0x4f, 0x4d, 0x4f, 0xe8, 0xe4, 0xf3, 0x10,
+ 0x3d, 0xa8, 0xcc, 0x71, 0xf4, 0x65, 0x8c, 0x4f, 0x59, 0x43, 0xbf, 0x52,
+ 0x7b, 0x3d, 0x46, 0xb5, 0x2b, 0x92, 0x5f, 0x4c, 0xd9, 0x4d, 0x01, 0x74,
+ 0x38, 0xe2, 0xff, 0x83, 0xa4, 0x4c, 0x9f, 0x3c, 0xd2, 0xc8, 0x43, 0x5e,
+ 0xa5, 0x52, 0x65, 0xae, 0x9a, 0x3d, 0x95, 0x6f, 0x1f, 0x67, 0x42, 0x4d,
+ 0x09, 0x8c, 0x40, 0xa9, 0x51, 0xfc, 0x02, 0xbd, 0xa9, 0x62, 0x70, 0x06,
+ 0xbc, 0x43, 0x41, 0x54, 0xbc, 0xac, 0x08, 0x18, 0xf1, 0xe9, 0x13, 0x67,
+ 0xd0, 0x2b, 0x2c, 0x0f, 0x0d, 0xfe, 0x29, 0x33, 0x6c, 0xce, 0x28, 0x62,
+ 0x6a, 0x45, 0xf2, 0xf3, 0x62, 0x08, 0xd0, 0x6c, 0xc1, 0x75, 0xda, 0x64,
+ 0x8e, 0xc6, 0x56, 0xb8, 0xea, 0x00, 0xb9, 0x27, 0xe0, 0x4f, 0x4a, 0x38,
+ 0xcd, 0xae, 0x97, 0x12, 0xb5, 0xa3, 0xf5, 0xe8, 0xfb, 0x3c, 0x08, 0x26,
+ 0xec, 0xd5, 0x74, 0x8d, 0xfe, 0x80, 0xf1, 0xa2, 0xa0, 0x3b, 0x47, 0x1e,
+ 0x63, 0xd1, 0x60, 0x94, 0x32, 0xc0, 0xa0, 0x48, 0xe2, 0xaf, 0x8e, 0x5e,
+ 0xbf, 0x3d, 0x3a, 0x6d, 0x71, 0x76, 0x7c, 0x62, 0x2f, 0x47, 0xbd, 0xa6,
+ 0x81, 0x7c, 0x64, 0x1d, 0x75, 0x78, 0x3d, 0x74, 0xd6, 0xc5, 0xbd, 0x31,
+ 0x35, 0x2d, 0xba, 0x0d, 0x57, 0x8a, 0xc4, 0x04, 0x5a, 0x5f, 0xa1, 0x89,
+ 0x5c, 0x08, 0x16, 0x42, 0x6f, 0x47, 0xcb, 0x6e, 0x54, 0x26, 0xaa, 0xd5,
+ 0x27, 0xa0, 0x92, 0x04, 0x3e, 0xaa, 0x79, 0xb8, 0x40, 0x01, 0x82, 0x56,
+ 0xe2, 0x01, 0xc1, 0x78, 0xde, 0x70, 0x05, 0x23, 0xce, 0xc1, 0x96, 0x08,
+ 0x21, 0x27, 0x7b, 0x39, 0x29, 0xdf, 0xb3, 0xf1, 0xa4, 0xa3, 0xef, 0xb3,
+ 0x9f, 0x88, 0xe1, 0x62, 0x0c, 0x62, 0x7a, 0xe0, 0xb8, 0x1a, 0x20, 0x72,
+ 0x13, 0xf6, 0xaf, 0x4e, 0x5b, 0xb9, 0x8e, 0x6b, 0x06, 0xc1, 0x7c, 0x3c,
+ 0x76, 0xbc, 0x29, 0x4d, 0x14, 0x94, 0xe3, 0xe3, 0x76, 0x0c, 0x68, 0xce,
+ 0x19, 0x70, 0x67, 0xf8, 0xd9, 0xb2, 0x9f, 0xdc, 0x41, 0x74, 0xa6, 0x45,
+ 0xaf, 0xc8, 0x07, 0x79, 0xd5, 0x59, 0x0b, 0x76, 0xd4, 0xe0, 0xaf, 0x7b,
+ 0xdb, 0x67, 0x2f, 0xc6, 0xb8, 0xca, 0x19, 0xbe, 0xfe, 0x50, 0xd6, 0x24,
+ 0xbc, 0x9b, 0x58, 0xe0, 0xc7, 0x01, 0xee, 0x57, 0xcd, 0x80, 0x30, 0x23,
+ 0xfb, 0x27, 0x6f, 0x68, 0x93, 0xce, 0x8f, 0xfa, 0xfd, 0xc8, 0xa0, 0xa2,
+ 0x4b, 0x88, 0x67, 0xd7, 0xd3, 0x57, 0x49, 0xfa, 0xa6, 0xe0, 0x0e, 0xdd,
+ 0x05, 0xcd, 0x23, 0x88, 0xb4, 0x52, 0x39, 0xed, 0x1c, 0x1c, 0x8b, 0x8b,
+ 0xc5, 0x14, 0x38, 0x0e, 0x28, 0x0a, 0xa3, 0x8d, 0x52, 0xa2, 0x3b, 0x9a,
+ 0x12, 0x28, 0xd5, 0x1b, 0x67, 0x01, 0x94, 0x68, 0x8c, 0xc0, 0x25, 0x9e,
+ 0x23, 0xfe, 0x86, 0x50, 0x00, 0x5e, 0x93, 0x1c, 0x0f, 0xe3, 0x02, 0x4a,
+ 0x74, 0xc3, 0x8e, 0x85, 0x4e, 0xff, 0xe5, 0xc5, 0x09, 0xd0, 0xc8, 0xdb,
+ 0x8b, 0x17, 0x1d, 0xd9, 0xbe, 0x66, 0x49, 0x0d, 0x72, 0x60, 0xc0, 0xd9,
+ 0x4c, 0xaf, 0x0d, 0x64, 0x72, 0xc1, 0xc6, 0x25, 0x3f, 0xa4, 0x8c, 0xae,
+ 0x0e, 0xdb, 0x69, 0x4b, 0x34, 0x42, 0xcb, 0x86, 0xdc, 0x83, 0xf0, 0xbc,
+ 0xb5, 0xad, 0x3e, 0x42, 0x9a, 0x4a, 0xdb, 0x78, 0x3a, 0x6f, 0x1f, 0xef,
+ 0x17, 0x01, 0x02, 0x5c, 0x12, 0x4a, 0xe2, 0xd2, 0x30, 0x71, 0x9d, 0x56,
+ 0x8a, 0xe4, 0x34, 0xb3, 0x78, 0x04, 0x22, 0x7b, 0x80, 0xfe, 0xa0, 0x51,
+ 0xa2, 0x42, 0x21, 0x13, 0xe1, 0x2a, 0xe8, 0xce, 0xc4, 0x9f, 0x6f, 0xdf,
+ 0x9c, 0x6e, 0x73, 0x96, 0x88, 0x54, 0xcc, 0x21, 0x53, 0x6e, 0x42, 0xe4,
+ 0xe9, 0x15, 0xa6, 0x34, 0x31, 0xf6, 0x36, 0xac, 0x28, 0xbd, 0xa5, 0xf4,
+ 0xe7, 0x59, 0x2d, 0x11, 0x8e, 0x9d, 0xf4, 0x30, 0xe8, 0xa4, 0x18, 0x19,
+ 0x28, 0x64, 0x5f, 0x85, 0xd0, 0xd4, 0x17, 0x4c, 0xf1, 0xa4, 0x10, 0xd0,
+ 0xb7, 0x92, 0xf6, 0xea, 0x00, 0x54, 0xdb, 0x1c, 0x2a, 0xf5, 0x70, 0xd9,
+ 0xf4, 0x96, 0x30, 0x4a, 0x04, 0x79, 0x4f, 0xd0, 0x5a, 0x93, 0x61, 0x5e,
+ 0x6c, 0x0e, 0xc4, 0xb6, 0x22, 0x0a, 0xa9, 0xbe, 0x82, 0x4b, 0x23, 0xf4,
+ 0x1e, 0x10, 0x85, 0x54, 0x6f, 0xfd, 0x21, 0xf4, 0xe4, 0x0e, 0x4e, 0x13,
+ 0x9e, 0x7c, 0x4e, 0x56, 0xa4, 0x53, 0x90, 0x35, 0xc8, 0x82, 0xb7, 0x8d,
+ 0x8f, 0x2c, 0xcb, 0x7f, 0x0a, 0x8d, 0x87, 0xfb, 0x92, 0x70, 0xcc, 0x43,
+ 0xfe, 0x19, 0x66, 0x67, 0x24, 0x92, 0x16, 0xf9, 0x84, 0x6d, 0xe6, 0xf2,
+ 0x06, 0x67, 0xa6, 0x31, 0x6e, 0x9a, 0xc1, 0xea, 0x49, 0xc8, 0xdb, 0x4f,
+ 0x03, 0xc6, 0xcc, 0xb6, 0xa6, 0xeb, 0x10, 0x5a, 0xdb, 0xec, 0x6f, 0x19,
+ 0xdf, 0xc2, 0x05, 0x79, 0xcf, 0xa9, 0xb5, 0x00, 0xb2, 0x9f, 0x53, 0xa7,
+ 0x55, 0xd4, 0xae, 0x90, 0x2a, 0xe5, 0x9c, 0x3d, 0xdf, 0x8e, 0x40, 0x3b,
+ 0x3b, 0xbc, 0x19, 0xb5, 0x54, 0xbe, 0x24, 0x3f, 0x00, 0x91, 0x38, 0x59,
+ 0x46, 0x38, 0x0d, 0xfa, 0xf8, 0x87, 0x67, 0x91, 0x3d, 0x1f, 0x9a, 0xa9,
+ 0xc2, 0x27, 0x44, 0x54, 0xb5, 0xb6, 0xda, 0x92, 0xa9, 0x4d, 0xb7, 0xea,
+ 0x51, 0xfc, 0xc0, 0x28, 0x4d, 0xe7, 0xd1, 0x55, 0x06, 0x8d, 0x15, 0xc3,
+ 0xab, 0x8c, 0xc0, 0xc9, 0x28, 0x02, 0x16, 0x03, 0x06, 0xa6, 0x14, 0xfe,
+ 0x12, 0x40, 0x97, 0x33, 0x4e, 0x6c, 0x8c, 0xa6, 0xb3, 0xf1, 0xee, 0x57,
+ 0xf9, 0x0d, 0x05, 0x2b, 0xec, 0x3e, 0xdd, 0xff, 0x12, 0xc4, 0xd6, 0xbb,
+ 0x12, 0x89, 0xcf, 0xae, 0x16, 0x95, 0x7a, 0x0f, 0x55, 0x63, 0xb2, 0x5e,
+ 0x5b, 0x17, 0x18, 0x69, 0xa0, 0xb5, 0xb0, 0x51, 0xaf, 0x26, 0xeb, 0xac,
+ 0xc0, 0x97, 0xfb, 0x25, 0x8b, 0x60, 0xfd, 0x64, 0xad, 0x84, 0x1b, 0xd0,
+ 0x12, 0x71, 0xa8, 0x75, 0xcf, 0x39, 0xae, 0xa0, 0xf4, 0x44, 0xfd, 0x97,
+ 0xff, 0x7d, 0x02, 0x97, 0xc5, 0x9b, 0x93, 0x8b, 0x37, 0xf0, 0xa3, 0x7f,
+ 0x71, 0xf6, 0xa6, 0xa5, 0xc4, 0x6b, 0xc5, 0x95, 0x48, 0x70, 0xbd, 0x34,
+ 0xb8, 0x91, 0x79, 0x50, 0xad, 0x8c, 0x21, 0x25, 0x76, 0xf2, 0x85, 0x42,
+ 0xd1, 0xb7, 0x2b, 0xd6, 0xea, 0xc2, 0x89, 0xca, 0xc0, 0x98, 0xbc, 0xa5,
+ 0x13, 0xe3, 0xed, 0x5e, 0x4e, 0x1c, 0x34, 0x61, 0xa4, 0x43, 0x9c, 0xb1,
+ 0xb9, 0xc2, 0x69, 0xb4, 0x15, 0x50, 0x2c, 0x5c, 0x20, 0xca, 0x73, 0xee,
+ 0x4c, 0xfa, 0x79, 0x4b, 0x59, 0x54, 0xce, 0xcb, 0x2b, 0xb9, 0x40, 0x2a,
+ 0xd3, 0x34, 0x99, 0xad, 0x3b, 0x8a, 0xf6, 0xdf, 0x89, 0x36, 0xc9, 0x5d,
+ 0x22, 0x22, 0xfb, 0x0a, 0xd2, 0x05, 0x35, 0x61, 0xcb, 0x4e, 0xb8, 0xcc,
+ 0xa7, 0x29, 0xfb, 0xb3, 0x38, 0x33, 0x4f, 0x59, 0x31, 0x4b, 0x0d, 0x5c,
+ 0xde, 0x3a, 0x0a, 0x95, 0xfc, 0x50, 0xc7, 0x16, 0xed, 0xf2, 0x86, 0x57,
+ 0x29, 0x9d, 0xf7, 0x25, 0x9d, 0xc1, 0x21, 0xa3, 0x72, 0x85, 0x1b, 0x3a,
+ 0xaa, 0x8d, 0x66, 0x85, 0x26, 0x87, 0x95, 0x7c, 0x82, 0x0a, 0x4d, 0x7e,
+ 0xb5, 0x54, 0xa7, 0x3f, 0x1d, 0x53, 0x80, 0x45, 0xc2, 0xee, 0xec, 0xe2,
+ 0x3f, 0x7b, 0xcc, 0x20, 0xdb, 0xdb, 0x60, 0x2a, 0xff, 0x80, 0x06, 0x0c,
+ 0x35, 0xad, 0x6e, 0xc4, 0xaf, 0x1b, 0x35, 0xc1, 0x7b, 0x1e, 0x51, 0x45,
+ 0x62, 0x54, 0xe7, 0x9b, 0x1c, 0x1a, 0xeb, 0x77, 0x04, 0xd9, 0x32, 0xc6,
+ 0xda, 0xd5, 0xea, 0x85, 0x68, 0x8c, 0x20, 0x57, 0xb7, 0x13, 0xe9, 0x10,
+ 0x83, 0xa9, 0xce, 0xb5, 0xe6, 0x44, 0x56, 0x86, 0x84, 0x7c, 0x02, 0x5e,
+ 0xa4, 0x32, 0x34, 0x86, 0x3d, 0xc8, 0xa9, 0xe9, 0x0a, 0x52, 0x5e, 0xe3,
+ 0x96, 0x6e, 0x54, 0x81, 0x68, 0xfa, 0x04, 0x60, 0xcb, 0x0b, 0xd8, 0x7d,
+ 0x94, 0x2b, 0x8a, 0x14, 0x9a, 0x21, 0x4c, 0x40, 0x53, 0xb6, 0x44, 0xa0,
+ 0x81, 0x9a, 0xe7, 0xf1, 0x4d, 0x4a, 0xf0, 0x3c, 0xa4, 0xc4, 0x45, 0xe9,
+ 0x8c, 0x02, 0x9a, 0x46, 0x66, 0x7e, 0x58, 0x61, 0x0c, 0xc3, 0x99, 0x59,
+ 0x1a, 0x19, 0xe5, 0x74, 0xfb, 0xe2, 0xd8, 0x30, 0x25, 0x9c, 0xbc, 0x43,
+ 0x81, 0x68, 0x7e, 0x23, 0x41, 0x48, 0x73, 0xd6, 0x38, 0x31, 0xac, 0xdc,
+ 0x11, 0xd1, 0x15, 0xee, 0x8b, 0x0c, 0xee, 0xd2, 0x4a, 0x90, 0x17, 0x25,
+ 0x31, 0x19, 0x8e, 0x57, 0x71, 0xd1, 0x88, 0x7a, 0xf1, 0x0f, 0xa9, 0xd6,
+ 0x11, 0x4a, 0x87, 0x9d, 0x49, 0x65, 0x8e, 0xc5, 0x6c, 0x82, 0x69, 0xb0,
+ 0x8d, 0x12, 0x09, 0x12, 0x57, 0xb3, 0x52, 0x74, 0x41, 0x7a, 0xb8, 0x97,
+ 0xcc, 0x12, 0xad, 0x97, 0xde, 0xd7, 0x56, 0x2a, 0xe6, 0x1e, 0x02, 0x0b,
+ 0x0d, 0xe9, 0xc1, 0xf5, 0x59, 0x8c, 0x70, 0x55, 0x2f, 0xf3, 0xd0, 0x8e,
+ 0x53, 0xfc, 0x5c, 0x32, 0xf5, 0x90, 0x60, 0x52, 0x45, 0x89, 0x53, 0xd2,
+ 0xcd, 0x66, 0x19, 0x96, 0xb3, 0xca, 0x8b, 0x6d, 0x3c, 0x51, 0x58, 0x73,
+ 0x34, 0x02, 0xd1, 0x45, 0x93, 0x70, 0x02, 0xa1, 0x71, 0xaa, 0x43, 0xd1,
+ 0x52, 0x40, 0xd3, 0xbd, 0x00, 0x60, 0x0c, 0xcd, 0x15, 0xa5, 0x1c, 0xa9,
+ 0xda, 0x41, 0x44, 0xd1, 0xe3, 0x35, 0x08, 0xed, 0xb3, 0x54, 0x24, 0xa8,
+ 0x2b, 0x42, 0x72, 0x22, 0xc9, 0xdb, 0x69, 0x4c, 0x65, 0xa4, 0x6c, 0x6d,
+ 0x94, 0xad, 0xc0, 0x6a, 0xb2, 0x06, 0xac, 0xd7, 0xc3, 0xaa, 0x74, 0x39,
+ 0x44, 0xad, 0x7e, 0xf0, 0xc9, 0x54, 0x50, 0xef, 0x0c, 0x18, 0xec, 0x62,
+ 0xee, 0x4b, 0x60, 0x2f, 0xcf, 0x6d, 0x93, 0x52, 0xce, 0x3b, 0xe7, 0x88,
+ 0x72, 0xa4, 0x09, 0x67, 0x90, 0x08, 0xc6, 0x6f, 0x36, 0xc0, 0xca, 0x19,
+ 0x1e, 0x82, 0x0c, 0xca, 0x68, 0x9e, 0xdc, 0xd5, 0x06, 0xbe, 0xae, 0xb7,
+ 0x7f, 0xef, 0xb2, 0x17, 0x75, 0x10, 0x00, 0xbe, 0x43, 0x43, 0x15, 0xc8,
+ 0x2d, 0x0e, 0xf4, 0x31, 0xef, 0xc2, 0xa2, 0xd4, 0x46, 0xeb, 0x57, 0xf6,
+ 0x55, 0xbb, 0x01, 0x57, 0x5a, 0xa1, 0xfd, 0xd9, 0x7c, 0x3b, 0xcb, 0x6e,
+ 0xc9, 0x2a, 0xea, 0x43, 0x02, 0x1a, 0x6c, 0xdd, 0x65, 0xa3, 0x52, 0x0c,
+ 0x5b, 0x44, 0x07, 0xaf, 0x8d, 0x8e, 0xbc, 0x26, 0xb7, 0xb0, 0xff, 0x6e,
+ 0x43, 0x01, 0x58, 0xca, 0xa8, 0xbd, 0x72, 0x3b, 0xf7, 0x30, 0xbd, 0xeb,
+ 0xe1, 0x73, 0xbd, 0x51, 0x3e, 0x85, 0x13, 0xe8, 0xf5, 0x31, 0x25, 0x38,
+ 0x13, 0x4f, 0x9a, 0x8f, 0x6d, 0x68, 0xa3, 0x4a, 0xae, 0xf3, 0x0c, 0xe9,
+ 0x48, 0x73, 0x17, 0xed, 0xa8, 0xc4, 0xcf, 0x5f, 0x6a, 0x05, 0x73, 0x62,
+ 0x2b, 0xe1, 0x11, 0xe9, 0x8d, 0x21, 0x68, 0x8f, 0xce, 0xa5, 0x61, 0xfa,
+ 0x7f, 0xe6, 0x17, 0x3c, 0xa2, 0xc2, 0x60, 0xcd, 0x0a, 0x53, 0xb5, 0x07,
+ 0x1d, 0x44, 0x02, 0xa9, 0xb6, 0x6c, 0x6e, 0x74, 0x2a, 0x91, 0x66, 0x60,
+ 0x0d, 0x4c, 0x51, 0x66, 0x6d, 0x56, 0x43, 0x6f, 0x9a, 0x15, 0xc0, 0x4c,
+ 0x65, 0x2e, 0xbe, 0x09, 0xb4, 0x39, 0x7c, 0xe7, 0x8f, 0x7f, 0xb4, 0x3c,
+ 0xab, 0x16, 0xdb, 0x82, 0xce, 0x62, 0xe8, 0xa4, 0x73, 0xf0, 0x13, 0x39,
+ 0x9d, 0x7e, 0x89, 0x7f, 0x82, 0x3f, 0x7f, 0xe9, 0xe8, 0xd9, 0xe3, 0x1a,
+ 0x6e, 0x36, 0xe9, 0x9e, 0x57, 0x0f, 0x21, 0x58, 0xcc, 0x8d, 0xe6, 0x07,
+ 0x0c, 0x5d, 0x1c, 0x9f, 0xcb, 0x99, 0x29, 0x38, 0x5a, 0x86, 0x66, 0x88,
+ 0x3c, 0x83, 0x54, 0x23, 0xbc, 0x25, 0x08, 0x0e, 0x54, 0x76, 0x34, 0xa1,
+ 0x67, 0xb5, 0x39, 0x7a, 0xa5, 0xab, 0x0e, 0x66, 0x14, 0xbd, 0xe9, 0xac,
+ 0x26, 0xa0, 0x23, 0x5c, 0xa2, 0x0d, 0x97, 0xf1, 0xa1, 0x7b, 0xd1, 0x91,
+ 0x2a, 0x23, 0xfc, 0x01, 0x95, 0x80, 0x2b, 0x09, 0x10, 0xf3, 0x06, 0x06,
+ 0x64, 0x8c, 0x44, 0x78, 0xff, 0x91, 0xd8, 0x3d, 0xb3, 0xe0, 0x62, 0x58,
+ 0xfa, 0x64, 0x86, 0xfa, 0x9e, 0xd6, 0x16, 0x2f, 0xb2, 0xf2, 0x3d, 0x4e,
+ 0x52, 0xf0, 0x12, 0x9c, 0xe8, 0x42, 0x9a, 0xc5, 0x34, 0x31, 0x6b, 0x29,
+ 0x15, 0x6d, 0x0c, 0xba, 0x58, 0x4d, 0xc6, 0x73, 0xf8, 0xf2, 0x9a, 0x49,
+ 0x20, 0x8a, 0x98, 0xb0, 0xae, 0x8c, 0x77, 0x0e, 0x34, 0x4f, 0x77, 0x4a,
+ 0x7b, 0xfd, 0xf9, 0x73, 0xae, 0x22, 0xb1, 0xf2, 0x29, 0x17, 0x98, 0xda,
+ 0x7b, 0xf8, 0x8b, 0xb0, 0x25, 0x86, 0xee, 0x34, 0x01, 0x37, 0x0d, 0x96,
+ 0x30, 0x93, 0xc7, 0x8a, 0x34, 0x5c, 0x21, 0xd1, 0x2d, 0x40, 0xa2, 0xf5,
+ 0x47, 0x92, 0xe8, 0x1c, 0x54, 0x23, 0x43, 0xfd, 0x4e, 0xb9, 0x2e, 0xc6,
+ 0x82, 0x43, 0x41, 0x62, 0xab, 0x69, 0x6b, 0x38, 0x4e, 0x0b, 0x72, 0x7f,
+ 0x5b, 0xd3, 0x30, 0x61, 0x7e, 0x65, 0x98, 0xde, 0x35, 0x2a, 0x60, 0x0c,
+ 0x18, 0xb7, 0x2c, 0x30, 0xee, 0x6a, 0x2b, 0xc4, 0xb0, 0x18, 0x55, 0x02,
+ 0x3c, 0x6f, 0x93, 0x1c, 0x3d, 0xae, 0x4c, 0x64, 0xf4, 0x17, 0x82, 0xb5,
+ 0x63, 0xb7, 0x56, 0x49, 0x64, 0x86, 0x3f, 0xe9, 0x0a, 0x41, 0x34, 0x87,
+ 0x9b, 0x19, 0x5a, 0xb7, 0x4b, 0x5f, 0xf9, 0xa5, 0xc1, 0x4f, 0x43, 0x55,
+ 0xce, 0x3d, 0xb9, 0x05, 0x56, 0xea, 0x53, 0xc9, 0x2d, 0x45, 0x5a, 0x3d,
+ 0x48, 0x6e, 0xc1, 0x21, 0xad, 0x23, 0xb7, 0xd4, 0x05, 0x14, 0xf1, 0x36,
+ 0x78, 0x82, 0x13, 0x7f, 0x56, 0xbe, 0xcf, 0xf8, 0x8b, 0x38, 0x9b, 0xaf,
+ 0xae, 0x2b, 0xa7, 0xf5, 0xfd, 0xf0, 0x04, 0xd5, 0x58, 0xb9, 0xb9, 0xd4,
+ 0xcb, 0xc5, 0xe5, 0x25, 0x15, 0x4d, 0xf0, 0x23, 0xb2, 0xab, 0xd2, 0x66,
+ 0xc0, 0xe2, 0x1d, 0x8e, 0x09, 0x51, 0x25, 0x6f, 0x4d, 0xad, 0x26, 0x1d,
+ 0x75, 0x26, 0x3c, 0xbe, 0x14, 0xb1, 0x09, 0x74, 0x05, 0x1f, 0x77, 0xc2,
+ 0x68, 0x0e, 0xd1, 0x4b, 0x61, 0xd0, 0x56, 0xea, 0x2d, 0xd2, 0x58, 0x07,
+ 0xda, 0xbc, 0x78, 0x70, 0x7b, 0xbc, 0xcc, 0x07, 0x73, 0x07, 0x95, 0x4b,
+ 0xae, 0x1b, 0x1f, 0x87, 0x93, 0xd8, 0x14, 0xf5, 0xfa, 0xb4, 0xf7, 0xf4,
+ 0x51, 0x6f, 0xa7, 0xa6, 0x7f, 0x98, 0xdc, 0x08, 0x0e, 0xe3, 0x63, 0xd1,
+ 0x6f, 0x29, 0x5a, 0x88, 0x52, 0x1a, 0x63, 0x86, 0x66, 0x63, 0x29, 0xfe,
+ 0xc9, 0xd5, 0x1b, 0x0b, 0x53, 0x0d, 0x8e, 0xe1, 0x39, 0xe5, 0x56, 0x6a,
+ 0x0a, 0x3b, 0x63, 0x5a, 0xd2, 0x95, 0x84, 0xee, 0x6e, 0xfc, 0x47, 0x4e,
+ 0xfc, 0x6f, 0xb4, 0xfe, 0x10, 0x9a, 0xaf, 0x8d, 0x6e, 0x2d, 0x99, 0xbd,
+ 0x95, 0xd0, 0xcb, 0x49, 0x3c, 0x1c, 0x0e, 0x63, 0x12, 0x45, 0x0f, 0x59,
+ 0x42, 0xde, 0x16, 0xf9, 0x34, 0x2c, 0xbb, 0xf7, 0x53, 0x21, 0xbf, 0xe3,
+ 0xe3, 0x63, 0x11, 0xa5, 0x2f, 0xae, 0x1a, 0x32, 0xad, 0x29, 0xb2, 0x26,
+ 0x02, 0x7d, 0x10, 0x71, 0xa5, 0xbc, 0x5a, 0x54, 0xc8, 0x9c, 0x58, 0x4f,
+ 0x55, 0x61, 0xc2, 0x80, 0x82, 0x35, 0xaa, 0x4b, 0xe7, 0xb0, 0xa6, 0x5d,
+ 0x1b, 0xa1, 0xef, 0x97, 0x40, 0x2c, 0x52, 0x46, 0xea, 0xe6, 0x17, 0xa5,
+ 0x6d, 0x8b, 0xf3, 0xe8, 0xda, 0x2d, 0xdd, 0xf2, 0x7d, 0x3a, 0xc2, 0x32,
+ 0xe0, 0xd0, 0x30, 0xad, 0x50, 0xb7, 0x49, 0x26, 0x01, 0xd1, 0x89, 0xf4,
+ 0xd5, 0x6c, 0x7b, 0x25, 0x6d, 0xb9, 0x6b, 0xfd, 0xf1, 0x69, 0xcb, 0x69,
+ 0xfd, 0x41, 0xb4, 0xe5, 0x8e, 0x4e, 0x56, 0xa8, 0xf6, 0x0d, 0x12, 0x5c,
+ 0xb9, 0x1e, 0xc5, 0xc9, 0x9b, 0x2d, 0x44, 0xd7, 0x6a, 0x18, 0x41, 0xca,
+ 0xda, 0x3c, 0xa6, 0x72, 0xd5, 0xc7, 0xc2, 0x02, 0x8f, 0xaf, 0x30, 0x62,
+ 0x7b, 0x82, 0x68, 0xb1, 0xb0, 0x29, 0x18, 0xbe, 0x80, 0xfb, 0xc2, 0x6c,
+ 0xb0, 0xdf, 0x3f, 0xdd, 0xbe, 0x38, 0xed, 0x7b, 0xb9, 0x6d, 0x77, 0xe8,
+ 0x88, 0x25, 0x87, 0x6b, 0xdd, 0xa1, 0xc7, 0x44, 0x50, 0xa4, 0x8c, 0x04,
+ 0x5b, 0xe3, 0x69, 0xdc, 0x4b, 0xb0, 0x6e, 0xc8, 0x62, 0xa6, 0xe9, 0xe3,
+ 0xc6, 0xe5, 0x34, 0x4b, 0x67, 0x04, 0x54, 0x8b, 0x41, 0x74, 0xc4, 0xaf,
+ 0x28, 0xf3, 0xa5, 0x8c, 0x5e, 0x1f, 0x5d, 0x60, 0x42, 0x78, 0x25, 0x71,
+ 0x9f, 0x68, 0x01, 0xf7, 0x32, 0xef, 0xa4, 0x7e, 0xba, 0x29, 0x24, 0x9a,
+ 0x0c, 0x15, 0x74, 0xd9, 0x1a, 0x7a, 0xa7, 0x02, 0x44, 0x23, 0x67, 0x6b,
+ 0x05, 0x6a, 0x89, 0xb3, 0x53, 0xed, 0x09, 0xda, 0x1f, 0x4e, 0x60, 0x1f,
+ 0x40, 0x5b, 0x41, 0x0a, 0x6a, 0x25, 0x20, 0x78, 0xc9, 0xb9, 0xa5, 0xc3,
+ 0xe4, 0xed, 0x7c, 0xc7, 0x5b, 0x18, 0xa4, 0xa9, 0x37, 0x22, 0x60, 0x09,
+ 0xa1, 0x18, 0xf6, 0x42, 0xfe, 0xb6, 0x49, 0x7e, 0x99, 0x11, 0x40, 0x18,
+ 0xd1, 0x1b, 0x4b, 0x56, 0x1a, 0x66, 0xe3, 0xd5, 0x15, 0xe1, 0xfd, 0x8d,
+ 0x04, 0x3e, 0xbf, 0x51, 0xe1, 0x9d, 0x19, 0x19, 0x8a, 0x6f, 0x86, 0x2e,
+ 0xd8, 0x9c, 0x67, 0x50, 0xac, 0x02, 0x79, 0xc1, 0xb0, 0x15, 0xd9, 0x30,
+ 0x83, 0x17, 0x30, 0xa6, 0xf5, 0x39, 0xe3, 0x8a, 0xb8, 0xc9, 0x40, 0x59,
+ 0xad, 0x78, 0xaa, 0xf1, 0xe9, 0x61, 0x34, 0x62, 0x30, 0xf1, 0x5f, 0xe6,
+ 0x78, 0x4f, 0x5a, 0x11, 0xba, 0xff, 0x34, 0xcc, 0x88, 0x1b, 0x7f, 0x30,
+ 0xbd, 0xc8, 0xd8, 0xd6, 0xf1, 0xc2, 0xc2, 0x7b, 0x0e, 0x6d, 0x7c, 0x8f,
+ 0x02, 0xdf, 0xa5, 0x27, 0xe2, 0x1b, 0xe8, 0xf9, 0x40, 0xe9, 0x59, 0x52,
+ 0xd1, 0xd1, 0x6b, 0x21, 0xe1, 0x51, 0x16, 0xf6, 0x4c, 0xc0, 0x63, 0xe2,
+ 0x91, 0x1f, 0x3d, 0xc2, 0xc1, 0x2c, 0xf2, 0x4b, 0x2c, 0x41, 0x65, 0x5c,
+ 0x16, 0x17, 0x3f, 0x80, 0x69, 0x71, 0x84, 0x50, 0xbd, 0xfa, 0x91, 0x66,
+ 0x5b, 0x35, 0x9a, 0xfb, 0x1e, 0x74, 0x0c, 0xc5, 0x33, 0x6e, 0x94, 0x48,
+ 0xa2, 0x14, 0x5a, 0xfd, 0x8e, 0x23, 0xc8, 0x30, 0x7a, 0xe8, 0x26, 0x43,
+ 0x70, 0x4c, 0xb2, 0xf1, 0xf8, 0x46, 0x1e, 0xae, 0x6c, 0x7a, 0xa1, 0x86,
+ 0x65, 0x65, 0x5d, 0xac, 0x5d, 0xa7, 0x26, 0x63, 0x08, 0x0b, 0x68, 0x68,
+ 0x40, 0xe5, 0xff, 0xb3, 0xa1, 0x55, 0x23, 0x72, 0xef, 0x00, 0xd8, 0xc2,
+ 0xac, 0xd9, 0x4c, 0xd0, 0xd4, 0x94, 0x27, 0xe2, 0xf6, 0x9b, 0x50, 0x9b,
+ 0xae, 0x1d, 0xb0, 0xed, 0x37, 0xf3, 0x51, 0x60, 0x68, 0x7a, 0xcb, 0xc7,
+ 0xf3, 0xe2, 0xe4, 0xe8, 0x59, 0x2b, 0x86, 0xaf, 0x7b, 0xc5, 0x5e, 0xae,
+ 0x50, 0x51, 0x3c, 0xc0, 0x96, 0xd5, 0x88, 0x2d, 0x97, 0xed, 0xaa, 0x49,
+ 0xd9, 0x46, 0xbf, 0x38, 0x8c, 0x50, 0x48, 0x54, 0xfb, 0xd3, 0xf1, 0x28,
+ 0xea, 0x54, 0x79, 0x3e, 0xd1, 0x38, 0x2b, 0xf8, 0x33, 0xb9, 0x4c, 0xbf,
+ 0xce, 0x27, 0xa3, 0xce, 0xba, 0x2d, 0xbd, 0x6c, 0x36, 0xb6, 0x56, 0x62,
+ 0x7a, 0x23, 0x70, 0xea, 0x47, 0xfc, 0xd3, 0x5b, 0xf9, 0xf8, 0x92, 0x8e,
+ 0xd5, 0x24, 0x1f, 0xe4, 0xe3, 0xf1, 0x12, 0xa1, 0x9d, 0xab, 0x25, 0x53,
+ 0xd2, 0x3e, 0x93, 0x6f, 0x07, 0x37, 0x15, 0xdf, 0x1b, 0xe0, 0x7e, 0x11,
+ 0xe0, 0x74, 0xd1, 0x91, 0x5c, 0x55, 0xa9, 0xc2, 0xe2, 0xc9, 0x60, 0x4e,
+ 0x6c, 0xc1, 0x9d, 0x58, 0x87, 0xd4, 0x3a, 0x43, 0x08, 0x96, 0x06, 0x99,
+ 0x2c, 0x11, 0xd7, 0xdb, 0x84, 0x00, 0x9f, 0x80, 0x45, 0xff, 0xf3, 0x5f,
+ 0x3f, 0xfd, 0xe2, 0xc5, 0x28, 0xb1, 0x77, 0x0c, 0xf1, 0x10, 0x28, 0x0a,
+ 0x98, 0x22, 0x1a, 0xaa, 0x32, 0x9d, 0x8c, 0xd9, 0x72, 0x49, 0x2a, 0x25,
+ 0xb4, 0x32, 0xed, 0x39, 0x39, 0x37, 0xec, 0xbf, 0x84, 0x76, 0x03, 0xc9,
+ 0xaf, 0xb6, 0x2a, 0x8b, 0x40, 0x46, 0x4d, 0xd2, 0x4b, 0xf8, 0x17, 0x27,
+ 0x6a, 0x52, 0xe8, 0xc4, 0x5b, 0x7b, 0x17, 0xa9, 0x21, 0x16, 0xe9, 0x3d,
+ 0x1c, 0x98, 0x8a, 0x11, 0xe1, 0xcd, 0x78, 0xcc, 0xb7, 0x6f, 0x5e, 0x1a,
+ 0x97, 0xe0, 0x72, 0xf2, 0xe7, 0x1d, 0xf9, 0xc8, 0xc5, 0x84, 0xa5, 0xd5,
+ 0x35, 0x99, 0x38, 0x96, 0xe2, 0x08, 0xa4, 0xf8, 0xfd, 0xf3, 0xa7, 0x5f,
+ 0xfe, 0x05, 0xff, 0xeb, 0xdc, 0xab, 0xac, 0x30, 0xd3, 0xa0, 0x5b, 0x24,
+ 0xda, 0xbd, 0xf6, 0xaf, 0x80, 0x63, 0xdc, 0xc5, 0xe9, 0x5d, 0x3a, 0x00,
+ 0x6e, 0x5d, 0x2a, 0x38, 0x6c, 0x3c, 0x2d, 0xa3, 0xc3, 0x29, 0xf0, 0x9a,
+ 0xac, 0x05, 0xa8, 0xf8, 0x05, 0xbe, 0x16, 0x9d, 0xc8, 0x6b, 0x06, 0x8a,
+ 0xee, 0x32, 0x2f, 0x60, 0xc6, 0x53, 0x41, 0xc3, 0x12, 0x28, 0xb0, 0xba,
+ 0x45, 0x3d, 0xa2, 0x6c, 0x6b, 0xcf, 0x2c, 0x7d, 0xfd, 0x48, 0x4c, 0xf1,
+ 0x54, 0xc2, 0xd0, 0xa9, 0x4a, 0x27, 0x26, 0x9a, 0x05, 0xe8, 0xd4, 0xb0,
+ 0x7d, 0xc3, 0xf7, 0x64, 0x5f, 0x2e, 0xbb, 0xe8, 0x35, 0x37, 0xb5, 0x17,
+ 0x43, 0xf9, 0x15, 0x02, 0x64, 0xa3, 0x55, 0xf1, 0xcc, 0xfd, 0x23, 0xd6,
+ 0x44, 0xc4, 0x92, 0x71, 0xe6, 0xd7, 0xd3, 0xe2, 0xea, 0xd4, 0x60, 0x8b,
+ 0xfb, 0x01, 0x8f, 0x8d, 0xd8, 0x07, 0x65, 0x3e, 0xcc, 0x68, 0x4d, 0xba,
+ 0x17, 0x52, 0x39, 0x2c, 0x60, 0x97, 0xfd, 0x1f, 0xc9, 0x92, 0xfa, 0x15,
+ 0xc6, 0x38, 0x8c, 0xa1, 0x10, 0xc9, 0xc8, 0x80, 0x6f, 0xba, 0x55, 0x44,
+ 0x09, 0x3e, 0x24, 0x41, 0x3c, 0x93, 0x74, 0xc2, 0x57, 0x0f, 0xfb, 0xd5,
+ 0x5a, 0x2d, 0x15, 0x72, 0x2f, 0x02, 0x97, 0xc1, 0x6a, 0xed, 0x04, 0xba,
+ 0x24, 0x81, 0x00, 0xf9, 0x2c, 0x35, 0x06, 0xf1, 0xa0, 0x7f, 0x8d, 0x5a,
+ 0x67, 0x63, 0x2e, 0xac, 0x8c, 0x58, 0x59, 0xd2, 0x91, 0xa2, 0xc3, 0x31,
+ 0x1c, 0x33, 0xbe, 0x4d, 0x11, 0xcb, 0x78, 0x15, 0xd6, 0x29, 0xa0, 0xe9,
+ 0xc7, 0x7c, 0x7e, 0x1c, 0x3d, 0x79, 0xfc, 0xf8, 0x31, 0xc7, 0x68, 0x74,
+ 0x5e, 0x52, 0xc7, 0x6f, 0x4e, 0x8e, 0xcf, 0x5e, 0xbd, 0x3a, 0x79, 0xfd,
+ 0xec, 0xe4, 0x99, 0x06, 0x51, 0x3b, 0x63, 0xb7, 0xe4, 0xe2, 0x5f, 0xbe,
+ 0x98, 0x6e, 0x03, 0xa4, 0xb1, 0xfb, 0x78, 0x27, 0xde, 0x7b, 0xbc, 0x13,
+ 0x01, 0x71, 0x26, 0x06, 0xc5, 0x21, 0x99, 0x20, 0x50, 0x61, 0x74, 0xb5,
+ 0x00, 0xf5, 0x06, 0xeb, 0x14, 0x57, 0x88, 0x4f, 0xa9, 0x08, 0xf7, 0xb3,
+ 0xb4, 0x42, 0xb3, 0xb1, 0xa7, 0x33, 0x24, 0xa3, 0x5e, 0xc7, 0x14, 0xc4,
+ 0xb3, 0x61, 0x5d, 0xa2, 0x2f, 0x10, 0xc5, 0xee, 0xed, 0x60, 0x47, 0xbd,
+ 0xe8, 0x79, 0x86, 0xb8, 0xa4, 0xb7, 0x4c, 0x9c, 0xc7, 0x57, 0xa0, 0xaa,
+ 0xa6, 0x7e, 0x40, 0x57, 0xfd, 0x7d, 0x7c, 0x7d, 0x9f, 0x5f, 0x0f, 0x47,
+ 0x8b, 0xb6, 0x1f, 0x3a, 0xad, 0xb8, 0xdd, 0x66, 0x58, 0xf6, 0x74, 0xb3,
+ 0x50, 0x18, 0xc1, 0x83, 0x62, 0xf8, 0xda, 0xc7, 0xf4, 0x78, 0x67, 0x67,
+ 0xbd, 0xeb, 0x6f, 0x8a, 0xbc, 0x66, 0x9a, 0xdc, 0x72, 0x59, 0x10, 0x29,
+ 0x5d, 0xb1, 0x04, 0x7d, 0xfa, 0xf1, 0x57, 0x75, 0x74, 0x21, 0x18, 0x4a,
+ 0x91, 0xdf, 0xde, 0xc5, 0x8a, 0x35, 0x12, 0x86, 0x8a, 0xea, 0xb3, 0x31,
+ 0xf9, 0xc5, 0xd1, 0x39, 0x3e, 0x1c, 0x9d, 0xbf, 0x39, 0xfb, 0xf1, 0xef,
+ 0x16, 0xbd, 0xe5, 0x7a, 0x57, 0xf3, 0x99, 0x04, 0x3e, 0x07, 0xd6, 0x05,
+ 0xf4, 0x93, 0x99, 0x1f, 0xc0, 0x69, 0x7c, 0x1f, 0xae, 0xc9, 0x4f, 0x83,
+ 0x4a, 0x48, 0x46, 0xc3, 0x34, 0xb4, 0x9c, 0x2a, 0x93, 0xa1, 0x90, 0xc5,
+ 0x04, 0x27, 0x35, 0x39, 0x7c, 0xe0, 0x4e, 0xf2, 0xc7, 0xe2, 0x38, 0x6e,
+ 0x29, 0xd6, 0x29, 0x47, 0x70, 0x63, 0x2e, 0x48, 0x56, 0x73, 0x75, 0x56,
+ 0xc5, 0xa2, 0x66, 0x35, 0x54, 0xd7, 0x66, 0x6f, 0x39, 0xba, 0xf0, 0xbc,
+ 0xc8, 0xa6, 0x49, 0x91, 0x4d, 0xee, 0x6a, 0x75, 0xd8, 0x35, 0x93, 0x8a,
+ 0x82, 0x7d, 0x6c, 0x49, 0xef, 0xdc, 0xaf, 0xf0, 0x8e, 0xea, 0x4f, 0x36,
+ 0x14, 0x66, 0xc0, 0xe8, 0xe2, 0x12, 0x90, 0xc5, 0xab, 0xb5, 0xf4, 0x66,
+ 0x6c, 0xee, 0xcb, 0xc7, 0x55, 0x77, 0x9a, 0xad, 0x3f, 0x80, 0x80, 0xeb,
+ 0xa3, 0x5b, 0x8b, 0x66, 0x6f, 0xbb, 0x5c, 0x7f, 0xfd, 0xb6, 0x0e, 0x9f,
+ 0xfb, 0x64, 0xa7, 0x46, 0x9a, 0x46, 0x2e, 0x6f, 0x2b, 0x24, 0x16, 0x3d,
+ 0x7f, 0x79, 0x7a, 0xb2, 0x15, 0x3d, 0x4f, 0x2b, 0x81, 0x6b, 0xd0, 0xc4,
+ 0x4a, 0xf4, 0xc6, 0xfe, 0x17, 0xe9, 0x29, 0xa6, 0x7a, 0xa7, 0xa0, 0x31,
+ 0x05, 0x93, 0x61, 0xc4, 0x3d, 0x41, 0x32, 0xbb, 0x62, 0x3f, 0x30, 0x39,
+ 0xd2, 0xbe, 0xa2, 0x8c, 0xaa, 0xc9, 0x35, 0x1a, 0xc5, 0x26, 0xe4, 0x1e,
+ 0x48, 0x37, 0x54, 0x9c, 0xcc, 0x9e, 0x53, 0x2d, 0x2c, 0x9f, 0x39, 0x31,
+ 0xb1, 0x38, 0x68, 0x49, 0xf5, 0xd4, 0x80, 0xc0, 0xac, 0x9c, 0x4f, 0x90,
+ 0x77, 0x07, 0x81, 0xbc, 0x27, 0xa9, 0x05, 0x29, 0x21, 0x16, 0x34, 0xcd,
+ 0x47, 0xb6, 0xd4, 0x1e, 0x9d, 0xfa, 0x7a, 0x10, 0x4f, 0x88, 0x98, 0x50,
+ 0x63, 0xf9, 0xb8, 0xb8, 0x90, 0xd8, 0xe4, 0x9a, 0x54, 0xf3, 0x72, 0x3d,
+ 0x2a, 0x51, 0x4d, 0x18, 0x7e, 0x5c, 0xe3, 0xaf, 0xb0, 0x8f, 0x03, 0x42,
+ 0x3b, 0x22, 0x1e, 0x07, 0xa3, 0x1e, 0xa6, 0x71, 0x52, 0x0e, 0xb3, 0xcc,
+ 0xa1, 0x99, 0x17, 0x4a, 0x33, 0x18, 0x31, 0xcf, 0x3f, 0xb7, 0xbf, 0x6d,
+ 0xad, 0x0f, 0xc2, 0x28, 0x4b, 0x98, 0x46, 0xb7, 0x05, 0x43, 0xc7, 0x75,
+ 0x90, 0x57, 0x89, 0x93, 0x0c, 0x27, 0x8b, 0x51, 0x2a, 0x05, 0x18, 0x66,
+ 0x9c, 0x1b, 0x27, 0xc5, 0x0d, 0x67, 0xde, 0x51, 0xb3, 0x7b, 0x2d, 0xf2,
+ 0x89, 0xa2, 0x92, 0x08, 0x83, 0x20, 0x38, 0x00, 0x2e, 0x35, 0x6d, 0xf5,
+ 0x45, 0xc5, 0x88, 0x69, 0xa9, 0x64, 0x6d, 0x53, 0x4f, 0x03, 0x40, 0x51,
+ 0xd0, 0x3e, 0x0d, 0x5e, 0x31, 0xa3, 0x5e, 0xbd, 0x7c, 0x75, 0x22, 0x68,
+ 0x09, 0xe9, 0x88, 0x73, 0x93, 0xb4, 0x7e, 0xb2, 0xd8, 0x00, 0x38, 0x11,
+ 0xa6, 0x25, 0x31, 0xa5, 0xec, 0x72, 0x16, 0x3b, 0xdf, 0x88, 0x69, 0x5d,
+ 0xaf, 0xe5, 0xba, 0x3f, 0x48, 0x49, 0xd4, 0x8b, 0x85, 0x89, 0x25, 0xaa,
+ 0xf1, 0x9b, 0x23, 0xb8, 0x19, 0x5e, 0x3f, 0xca, 0x3d, 0xac, 0xf4, 0x5a,
+ 0xa0, 0x61, 0x09, 0x14, 0xf9, 0x04, 0xae, 0xdb, 0x09, 0xe5, 0x11, 0x1a,
+ 0xf3, 0x50, 0x42, 0x44, 0xd8, 0xb4, 0x90, 0x27, 0x37, 0xf5, 0x79, 0x95,
+ 0xb5, 0x5a, 0x8c, 0x8f, 0x9f, 0xf4, 0x76, 0x7c, 0x4c, 0x54, 0x4a, 0x6b,
+ 0xc7, 0xec, 0x6d, 0xa3, 0x78, 0x11, 0xf6, 0x9b, 0x15, 0x47, 0x53, 0x67,
+ 0xb7, 0xcb, 0x5e, 0x1d, 0xac, 0xc0, 0x0f, 0xfb, 0x10, 0x1d, 0x08, 0x53,
+ 0xe4, 0x4d, 0x8d, 0x25, 0xa5, 0x14, 0x7c, 0x09, 0x8f, 0x92, 0xf1, 0x4e,
+ 0xcd, 0xa4, 0xf8, 0xab, 0x44, 0x13, 0x2f, 0x8b, 0x7e, 0xcb, 0x67, 0x1a,
+ 0xe9, 0x73, 0xa3, 0x51, 0xcd, 0x5d, 0x41, 0x4a, 0xb9, 0xe5, 0x47, 0x26,
+ 0x94, 0x73, 0xaf, 0x9d, 0x85, 0xc1, 0x67, 0x42, 0x85, 0xa9, 0xdd, 0x2e,
+ 0x34, 0xa4, 0x57, 0xec, 0xbc, 0xa8, 0x92, 0xc2, 0xc6, 0x72, 0x5c, 0x07,
+ 0x42, 0xee, 0x36, 0xf7, 0xaf, 0xc8, 0x86, 0xef, 0x33, 0xc4, 0x1f, 0x2e,
+ 0xab, 0xc5, 0x78, 0xcc, 0x51, 0x9c, 0xee, 0x28, 0x35, 0x7e, 0x14, 0x36,
+ 0x8e, 0x51, 0xea, 0x65, 0x79, 0x70, 0x0b, 0x7d, 0x52, 0xe6, 0xa2, 0xa2,
+ 0x3a, 0x9e, 0xda, 0x7c, 0x4a, 0xa3, 0xdc, 0x22, 0xac, 0x10, 0xe9, 0xd7,
+ 0x69, 0x81, 0x24, 0x80, 0x90, 0xb9, 0xe8, 0xaa, 0xbc, 0xf1, 0xf3, 0x03,
+ 0xa8, 0x20, 0x4b, 0x81, 0xd1, 0xc7, 0x64, 0x13, 0x7f, 0x93, 0x4e, 0x73,
+ 0x2a, 0x1e, 0x64, 0x67, 0x2c, 0x6b, 0x05, 0x72, 0x84, 0x68, 0x2d, 0xec,
+ 0xf9, 0x80, 0x51, 0x20, 0xd1, 0xb6, 0x68, 0xd7, 0x9a, 0xe1, 0x2b, 0x59,
+ 0x06, 0x1c, 0xa8, 0x11, 0x61, 0xd9, 0xc6, 0x9a, 0xcc, 0x32, 0xa1, 0xaa,
+ 0x0c, 0x68, 0x95, 0xce, 0x66, 0x07, 0xc8, 0x6e, 0x9a, 0xf9, 0x29, 0x2f,
+ 0x40, 0x5f, 0x3a, 0xe8, 0x48, 0x5d, 0x4a, 0x8a, 0x14, 0x24, 0x37, 0x3c,
+ 0x49, 0x23, 0x35, 0xba, 0x11, 0x1c, 0xe9, 0x98, 0x65, 0x49, 0x8e, 0x1d,
+ 0xac, 0xca, 0x70, 0xea, 0xba, 0xa2, 0x59, 0xf8, 0x79, 0xc4, 0x06, 0x5d,
+ 0x42, 0x70, 0x97, 0x70, 0x64, 0xf1, 0x0b, 0x18, 0xc7, 0x8f, 0xf1, 0xf1,
+ 0xc2, 0x73, 0x68, 0x43, 0xf7, 0xf1, 0x0b, 0x6a, 0xf2, 0x4f, 0x1d, 0x13,
+ 0x21, 0xc0, 0x8f, 0xda, 0xaf, 0x60, 0xf4, 0x5f, 0x84, 0x92, 0x28, 0x24,
+ 0xa6, 0x82, 0xc9, 0x86, 0x6a, 0x7f, 0x89, 0x5c, 0x93, 0xd8, 0x9a, 0x62,
+ 0xb4, 0x39, 0xa3, 0xd1, 0xb6, 0xac, 0xb7, 0x26, 0x7c, 0x05, 0xd6, 0x9c,
+ 0xc3, 0x41, 0x0a, 0x0c, 0x52, 0x8e, 0x60, 0x14, 0x71, 0x3e, 0x8e, 0x29,
+ 0x35, 0x19, 0xe4, 0xad, 0xf7, 0x98, 0xde, 0x71, 0x67, 0xc9, 0x8a, 0x20,
+ 0x6b, 0x89, 0x3d, 0x8c, 0x46, 0xa1, 0x8c, 0x11, 0x46, 0x06, 0x72, 0xd4,
+ 0x4f, 0x45, 0x37, 0xe0, 0x2d, 0x3d, 0x90, 0xdc, 0x58, 0x7a, 0x7d, 0x96,
+ 0xde, 0x70, 0xf2, 0x27, 0x96, 0xfe, 0x10, 0x14, 0x02, 0xcf, 0x23, 0x47,
+ 0x98, 0x04, 0x5d, 0x36, 0x7f, 0xd0, 0xa4, 0x09, 0xd7, 0x76, 0xca, 0xce,
+ 0x71, 0x8a, 0x57, 0x58, 0xcc, 0xb5, 0xf2, 0xee, 0x52, 0x0f, 0x30, 0x1a,
+ 0x7e, 0xa8, 0xb0, 0x2e, 0xaa, 0xeb, 0x9a, 0x6e, 0x00, 0x5c, 0xeb, 0x5b,
+ 0x83, 0x53, 0x52, 0x56, 0x77, 0x28, 0x07, 0x08, 0x88, 0x76, 0x20, 0x98,
+ 0x1b, 0x06, 0xcd, 0xb9, 0x02, 0x5a, 0x0e, 0x88, 0x14, 0x74, 0x5a, 0x73,
+ 0x5a, 0x2f, 0x31, 0x20, 0x11, 0xf6, 0x94, 0x14, 0xaf, 0xe2, 0x0c, 0x97,
+ 0x6f, 0xe3, 0x10, 0x6e, 0x3e, 0xed, 0x9e, 0x94, 0x3b, 0x49, 0x46, 0xee,
+ 0x6a, 0x71, 0xca, 0x87, 0x01, 0x7b, 0xab, 0xab, 0x0c, 0x8f, 0x5d, 0xb9,
+ 0x4c, 0xc5, 0x8b, 0x09, 0x46, 0xfc, 0x70, 0x20, 0x10, 0x11, 0xc2, 0x94,
+ 0x20, 0xee, 0x66, 0x55, 0x16, 0x97, 0xf3, 0x64, 0x1a, 0x2d, 0x2a, 0x84,
+ 0xd4, 0x44, 0xb1, 0x7c, 0x78, 0x95, 0x4a, 0xd8, 0xd8, 0x9c, 0x30, 0xd5,
+ 0x18, 0x3e, 0x23, 0x58, 0xbe, 0x87, 0xce, 0x9a, 0x2a, 0x62, 0x7c, 0xdb,
+ 0xd0, 0x9d, 0x21, 0xfc, 0xe2, 0x40, 0xec, 0x5a, 0xc8, 0x00, 0x3a, 0xcf,
+ 0x61, 0xb0, 0x07, 0x9d, 0x6e, 0xd4, 0xb9, 0xc8, 0xe1, 0x47, 0xf3, 0x20,
+ 0x3e, 0x83, 0x63, 0x72, 0xc0, 0x25, 0x55, 0x3b, 0x7d, 0x86, 0x4d, 0xc3,
+ 0x3f, 0xa7, 0x39, 0x42, 0x1a, 0x56, 0xa6, 0xcc, 0x5f, 0xcd, 0xbc, 0xc5,
+ 0x97, 0x73, 0x18, 0x2e, 0xd0, 0xec, 0x6a, 0xf8, 0xae, 0xa1, 0xa2, 0x23,
+ 0x2a, 0xd4, 0xc6, 0x56, 0x8a, 0xa0, 0x23, 0x56, 0x3b, 0xf9, 0x25, 0x71,
+ 0xaa, 0x99, 0xa6, 0x83, 0x7b, 0xf1, 0x92, 0x8a, 0x8b, 0xd9, 0x90, 0x8d,
+ 0xf7, 0x9f, 0x86, 0xf6, 0x20, 0xe1, 0x3c, 0x24, 0x94, 0x2f, 0x61, 0x1d,
+ 0x9a, 0xe9, 0xdb, 0x07, 0x8c, 0xbb, 0x96, 0xa2, 0x45, 0x56, 0xb8, 0x0e,
+ 0x85, 0x8a, 0x12, 0xef, 0x8c, 0x5a, 0xba, 0x36, 0xb6, 0x7a, 0xe5, 0x31,
+ 0xfa, 0x37, 0x66, 0xd0, 0x77, 0x1d, 0x87, 0x03, 0xa7, 0xe3, 0x28, 0x77,
+ 0x0b, 0x44, 0x75, 0x70, 0x54, 0x9d, 0x0c, 0x21, 0x6a, 0x85, 0xfc, 0xfd,
+ 0xe1, 0xe8, 0xcd, 0xeb, 0x97, 0xaf, 0xbf, 0x3f, 0x30, 0xeb, 0x83, 0x17,
+ 0x84, 0xf0, 0x88, 0x86, 0xa3, 0x03, 0x4b, 0xba, 0x50, 0x59, 0x53, 0xc2,
+ 0xd7, 0x9a, 0x44, 0x21, 0x57, 0x84, 0xd1, 0xc8, 0x30, 0x80, 0x31, 0xe5,
+ 0x4a, 0x41, 0xe4, 0x4e, 0x85, 0x6f, 0x38, 0xf6, 0x88, 0xed, 0x9f, 0x8a,
+ 0xf0, 0x20, 0x98, 0x51, 0xb4, 0x32, 0x55, 0x3e, 0x19, 0x85, 0x98, 0x55,
+ 0x7c, 0x4a, 0xf1, 0xf2, 0xb9, 0x60, 0x3e, 0x28, 0x54, 0xe8, 0x8c, 0x60,
+ 0x7b, 0x54, 0x4a, 0xd2, 0x7b, 0x27, 0x65, 0xd4, 0x12, 0xca, 0x68, 0xf4,
+ 0x23, 0xd5, 0x29, 0x73, 0x9a, 0xcd, 0x6a, 0x7c, 0xb1, 0x92, 0xc5, 0x08,
+ 0xee, 0x9b, 0x8c, 0xee, 0xae, 0x1c, 0x45, 0xc5, 0x92, 0xe8, 0xa6, 0xcc,
+ 0xc8, 0x9b, 0x6d, 0x56, 0x85, 0x08, 0x35, 0x5c, 0x23, 0x93, 0x47, 0x39,
+ 0x4c, 0x16, 0xcc, 0x76, 0xb8, 0x5e, 0x8c, 0x7c, 0x6a, 0xf1, 0x23, 0xcc,
+ 0xfc, 0x03, 0x69, 0xd9, 0x75, 0x44, 0x98, 0x0f, 0x48, 0xcc, 0x6e, 0xf3,
+ 0x30, 0xbc, 0xc0, 0x8b, 0xe6, 0x39, 0x5a, 0xd4, 0xe2, 0xd7, 0xc0, 0xf9,
+ 0x0e, 0xa2, 0x3f, 0xe7, 0xe9, 0x1a, 0x8e, 0x02, 0x78, 0xfd, 0x2d, 0xa8,
+ 0x72, 0xf1, 0xd1, 0x25, 0xb1, 0xf4, 0xbb, 0xb4, 0x8c, 0xe7, 0xc4, 0x80,
+ 0xb6, 0xf7, 0x76, 0x76, 0x76, 0xd6, 0x6b, 0x88, 0xef, 0xe8, 0xf5, 0x74,
+ 0x91, 0x23, 0x4d, 0x8c, 0x8c, 0x93, 0xcb, 0x54, 0xb3, 0x25, 0x53, 0x76,
+ 0x35, 0x20, 0x04, 0xa5, 0x9b, 0x30, 0x79, 0xc5, 0x3a, 0xc8, 0x64, 0x1e,
+ 0x1d, 0xa2, 0x29, 0xe2, 0x32, 0x2f, 0xee, 0xbe, 0xf1, 0xaa, 0x3d, 0x21,
+ 0x0a, 0x00, 0x3e, 0x23, 0xc4, 0x84, 0xa1, 0x70, 0x24, 0xa1, 0xd9, 0xfc,
+ 0x5c, 0xcd, 0x44, 0xb3, 0x8d, 0xf4, 0x22, 0xad, 0x77, 0xdd, 0xbc, 0x25,
+ 0x0a, 0x2c, 0x93, 0x92, 0x38, 0xd6, 0x2c, 0x37, 0xab, 0x51, 0xd4, 0x4b,
+ 0x96, 0xc0, 0x91, 0x49, 0x67, 0x53, 0x34, 0x7e, 0x60, 0x0c, 0xb3, 0x74,
+ 0x16, 0x40, 0x1b, 0x32, 0x17, 0x56, 0xc9, 0xc2, 0x8c, 0x8b, 0xc5, 0x12,
+ 0x75, 0x60, 0xa0, 0x1d, 0xea, 0xd0, 0xf6, 0xe7, 0x48, 0x09, 0x4d, 0x8d,
+ 0x58, 0xfa, 0xe7, 0x23, 0xab, 0x85, 0xec, 0x6d, 0xd0, 0x67, 0xa0, 0x7d,
+ 0x9d, 0x32, 0x75, 0xd2, 0x14, 0x28, 0x97, 0x4c, 0x91, 0x16, 0x90, 0xdf,
+ 0xcd, 0x04, 0x98, 0x00, 0x1a, 0xce, 0x0a, 0x85, 0x8b, 0x2e, 0x57, 0x68,
+ 0xc9, 0x93, 0xf9, 0x47, 0xd7, 0x92, 0x27, 0x6b, 0xc7, 0x4c, 0xd1, 0x30,
+ 0x60, 0x26, 0xed, 0xd4, 0xe8, 0xaa, 0xc3, 0x35, 0x5b, 0x1e, 0xec, 0xee,
+ 0x7c, 0x31, 0x98, 0x8e, 0x1e, 0x47, 0x87, 0xf0, 0x8f, 0xa7, 0xf3, 0xf6,
+ 0x39, 0x57, 0xf7, 0x18, 0x83, 0x45, 0xf1, 0xee, 0x40, 0x09, 0x52, 0x70,
+ 0xa7, 0xd9, 0x1b, 0x85, 0xbf, 0xee, 0xef, 0x01, 0x61, 0xde, 0x26, 0x5a,
+ 0x1c, 0x70, 0x04, 0xac, 0xa9, 0xa2, 0x54, 0x37, 0x2f, 0x14, 0x8a, 0x5f,
+ 0xb5, 0x19, 0x81, 0xb8, 0x87, 0xbb, 0x7b, 0x5f, 0x46, 0x88, 0x02, 0xf2,
+ 0xea, 0xd9, 0x63, 0xbe, 0xf8, 0xcb, 0xc5, 0xd4, 0x90, 0x32, 0x27, 0x90,
+ 0x32, 0xfb, 0xf3, 0x70, 0x54, 0x61, 0xe0, 0x93, 0x6c, 0x88, 0xd8, 0x5b,
+ 0xdd, 0x5a, 0xec, 0xdf, 0x58, 0x63, 0xff, 0x1c, 0xfb, 0xb5, 0x11, 0x21,
+ 0x29, 0xfe, 0x9d, 0xb3, 0x5b, 0x02, 0xa1, 0x50, 0xb0, 0x06, 0xd0, 0x3d,
+ 0x1a, 0xfd, 0xab, 0xe1, 0x55, 0x38, 0xbb, 0xdb, 0x59, 0xb2, 0x15, 0x51,
+ 0xc6, 0x9f, 0x12, 0x6b, 0xde, 0x19, 0x45, 0xfa, 0x78, 0xb8, 0x3b, 0x7c,
+ 0xf4, 0xd5, 0xce, 0xde, 0xce, 0x93, 0x47, 0x3b, 0xc9, 0xe3, 0x64, 0xb0,
+ 0x33, 0xde, 0xdb, 0xd9, 0x7f, 0xf4, 0xe5, 0xe3, 0x47, 0xc3, 0xfd, 0xbd,
+ 0xdd, 0xe4, 0xcb, 0xa8, 0x5c, 0x2b, 0x84, 0x4e, 0x5a, 0x2e, 0xaf, 0x92,
+ 0x3d, 0x50, 0x95, 0x7d, 0x5a, 0xe1, 0x2f, 0xa2, 0x43, 0xfe, 0x19, 0xa6,
+ 0x18, 0x22, 0x98, 0x56, 0x7a, 0x49, 0xa2, 0xef, 0x08, 0x42, 0x24, 0x56,
+ 0x94, 0x9b, 0xfe, 0x8b, 0x23, 0x6c, 0x12, 0x4e, 0xce, 0x95, 0x6f, 0xfd,
+ 0x65, 0x7b, 0x02, 0x91, 0x01, 0x53, 0x81, 0xb3, 0xef, 0xbd, 0xe8, 0x78,
+ 0xf9, 0xbe, 0xb7, 0x29, 0x12, 0x0e, 0x15, 0xf0, 0xdf, 0xd0, 0x75, 0x7a,
+ 0x9f, 0x6d, 0x97, 0xd9, 0x7f, 0x2e, 0x0c, 0x89, 0xfa, 0x28, 0x5e, 0x3f,
+ 0xfb, 0xdb, 0xfb, 0x57, 0x17, 0x7f, 0xbd, 0x7d, 0xf5, 0xfd, 0x5f, 0x77,
+ 0xcf, 0x9e, 0x8d, 0xa6, 0xaf, 0x7e, 0xfd, 0xeb, 0xfe, 0xab, 0x5f, 0x87,
+ 0xbf, 0xfd, 0xfd, 0xd7, 0xa3, 0xbb, 0xb3, 0x8b, 0xbf, 0x3f, 0x7e, 0x35,
+ 0x7d, 0xf3, 0xfe, 0xd5, 0xaf, 0x7f, 0x9b, 0xbe, 0x7e, 0xf6, 0xd7, 0xaf,
+ 0x1f, 0x46, 0x05, 0x40, 0x5f, 0xf5, 0x4a, 0x03, 0x3b, 0x0d, 0x5f, 0x00,
+ 0x5e, 0x42, 0x87, 0x06, 0x38, 0x3b, 0x68, 0x33, 0xeb, 0xd7, 0x8b, 0xea,
+ 0x2a, 0x60, 0xf8, 0x8b, 0xfe, 0x85, 0x0d, 0x51, 0x32, 0x91, 0x48, 0x74,
+ 0x5d, 0x99, 0xdc, 0xd3, 0x20, 0x06, 0xef, 0x1c, 0x84, 0x51, 0x94, 0xd6,
+ 0x18, 0xc9, 0x97, 0x72, 0xfd, 0x91, 0xaa, 0xa8, 0x3d, 0x2c, 0xb4, 0x9b,
+ 0x8a, 0xad, 0x94, 0x74, 0x8c, 0xfa, 0x62, 0x37, 0xc2, 0x9c, 0x38, 0x68,
+ 0x8e, 0xf3, 0x4f, 0x53, 0xb7, 0x36, 0xa6, 0x00, 0x47, 0x53, 0x63, 0x46,
+ 0x8e, 0xc4, 0x42, 0xcc, 0x2a, 0xba, 0xb5, 0x8e, 0x8e, 0xd9, 0x79, 0x36,
+ 0x46, 0x1b, 0x96, 0x81, 0x36, 0x61, 0xfb, 0x6b, 0x60, 0xb7, 0xfb, 0x26,
+ 0x05, 0xa3, 0xd3, 0x71, 0xe0, 0xc7, 0x37, 0x7f, 0x4b, 0x8b, 0x5c, 0xe0,
+ 0x86, 0xb6, 0x68, 0x9e, 0xd7, 0x79, 0x36, 0x8a, 0x04, 0x60, 0x7d, 0x5b,
+ 0xab, 0xb1, 0x78, 0xd7, 0xb0, 0x95, 0xb2, 0x09, 0xf2, 0x1b, 0x4b, 0xb1,
+ 0x40, 0x93, 0xb4, 0x30, 0x06, 0xef, 0x3a, 0x44, 0xdd, 0x8d, 0xb0, 0x65,
+ 0x5f, 0x98, 0xeb, 0xd6, 0x34, 0x7a, 0x72, 0xb4, 0x18, 0xcf, 0x7f, 0xd3,
+ 0xfc, 0x4c, 0x89, 0x23, 0x82, 0xb0, 0xc1, 0x00, 0xf0, 0x6a, 0x02, 0xa7,
+ 0x53, 0x91, 0xcf, 0xea, 0x8e, 0x30, 0x22, 0x01, 0x9e, 0x51, 0x48, 0xca,
+ 0x44, 0xfa, 0xfa, 0x74, 0xe0, 0x3f, 0xd2, 0x3c, 0x6c, 0xf3, 0x03, 0x0a,
+ 0x0c, 0x93, 0x27, 0xa3, 0x5e, 0x22, 0xec, 0x51, 0xe3, 0x74, 0x40, 0x7b,
+ 0x3b, 0xbd, 0xaf, 0x5a, 0x0a, 0x4d, 0xd7, 0x4a, 0xa9, 0x20, 0x82, 0x9c,
+ 0xc1, 0x40, 0x24, 0xb5, 0x8a, 0x52, 0x4d, 0x61, 0x43, 0xb0, 0x86, 0x8d,
+ 0x46, 0xce, 0x7b, 0x2b, 0x84, 0x4f, 0x6e, 0xe3, 0x13, 0x52, 0x69, 0x5a,
+ 0x49, 0x19, 0xcb, 0x18, 0x92, 0x80, 0x4e, 0x1c, 0xce, 0x04, 0xde, 0x9b,
+ 0x02, 0x56, 0x94, 0xd4, 0xe1, 0x9b, 0x2d, 0x4d, 0x5a, 0x92, 0x06, 0x04,
+ 0x58, 0xad, 0x4a, 0x80, 0x4c, 0x1d, 0xe0, 0x6c, 0x45, 0x78, 0x24, 0x9a,
+ 0x40, 0x97, 0x87, 0xe7, 0xd9, 0x30, 0xfd, 0x96, 0x36, 0x52, 0x9e, 0x6b,
+ 0x18, 0x71, 0x3d, 0x4c, 0x3a, 0x6e, 0x58, 0x9f, 0x99, 0xdd, 0xb3, 0xf9,
+ 0xcd, 0xec, 0xb2, 0x40, 0x6f, 0x3b, 0x41, 0xf5, 0x25, 0xa1, 0x60, 0xd2,
+ 0xd0, 0x19, 0x72, 0xa3, 0xf0, 0x9f, 0x3c, 0xe9, 0xed, 0x74, 0xed, 0xaa,
+ 0x20, 0x8e, 0x10, 0x0b, 0x5e, 0x4b, 0x83, 0xf0, 0x6b, 0x22, 0x1d, 0xef,
+ 0xd9, 0x47, 0x8e, 0x2f, 0x91, 0x56, 0xd7, 0x66, 0xf7, 0x32, 0x98, 0xf5,
+ 0x08, 0x13, 0x9f, 0xde, 0xed, 0xed, 0x76, 0xe5, 0xd7, 0x3d, 0xf1, 0x7f,
+ 0xe0, 0xef, 0xfb, 0x75, 0xf7, 0x59, 0x9d, 0x5e, 0x77, 0xba, 0xe6, 0xe5,
+ 0x9d, 0xa5, 0xf5, 0x7f, 0x6a, 0x55, 0xaf, 0x6a, 0xc4, 0x0a, 0x6f, 0xba,
+ 0x86, 0x65, 0x56, 0xe8, 0x7d, 0x33, 0xa5, 0x63, 0xdc, 0xe5, 0x0a, 0x2c,
+ 0x08, 0xc9, 0xef, 0x36, 0xb4, 0x72, 0x8b, 0xb0, 0xa3, 0xfb, 0xf8, 0x37,
+ 0xd7, 0x5f, 0x6f, 0x6c, 0x79, 0xfd, 0xf5, 0xc6, 0x5d, 0xb2, 0xcb, 0x0c,
+ 0xab, 0xbf, 0xa2, 0x1e, 0x99, 0x17, 0x22, 0x68, 0x8b, 0x11, 0x6a, 0x0b,
+ 0x91, 0xd3, 0xa0, 0xbb, 0x87, 0x7b, 0x08, 0xdd, 0x96, 0x17, 0x31, 0x9a,
+ 0xc0, 0x81, 0xb0, 0x2f, 0x43, 0xc6, 0x31, 0xdd, 0xed, 0x06, 0x33, 0x82,
+ 0x56, 0xef, 0xc3, 0x8c, 0x02, 0xdb, 0xba, 0x7b, 0x8f, 0x1d, 0xd9, 0xfd,
+ 0x64, 0x3b, 0xb2, 0xbb, 0xde, 0x8e, 0xb8, 0x84, 0xec, 0x2c, 0x1c, 0x1e,
+ 0x40, 0xa9, 0x42, 0x26, 0xdb, 0x42, 0x5c, 0x53, 0x37, 0xa6, 0xd1, 0x5c,
+ 0xbd, 0x46, 0x64, 0x5b, 0x9b, 0xad, 0x1b, 0xd3, 0xdc, 0x60, 0xdd, 0xa8,
+ 0xe0, 0x41, 0xdc, 0xdf, 0xf7, 0x2f, 0x0e, 0x6f, 0x9b, 0xef, 0xb3, 0x73,
+ 0x30, 0xa1, 0x72, 0x21, 0x85, 0x2a, 0x88, 0x5f, 0x53, 0xe9, 0xb9, 0x9a,
+ 0x99, 0xae, 0x0c, 0x03, 0x65, 0x11, 0xcf, 0xdc, 0x73, 0xa2, 0x07, 0xe9,
+ 0x03, 0x22, 0xc3, 0xb7, 0x73, 0x62, 0xcb, 0xa8, 0x76, 0x57, 0x9a, 0xc5,
+ 0x47, 0xb1, 0x0e, 0x70, 0x73, 0xb7, 0x8d, 0xce, 0xd6, 0x45, 0xd2, 0xcc,
+ 0x30, 0x42, 0x95, 0x2d, 0xb5, 0x9f, 0x12, 0xe1, 0x7a, 0xc9, 0x65, 0x92,
+ 0xdc, 0x24, 0x18, 0x13, 0x4e, 0x92, 0xa2, 0x1d, 0x64, 0x48, 0x66, 0xd6,
+ 0xbb, 0x66, 0x94, 0x6b, 0x2b, 0x35, 0x4c, 0x27, 0x68, 0x47, 0x9c, 0x24,
+ 0xa0, 0xcd, 0x53, 0xb2, 0xcb, 0x28, 0x6a, 0x89, 0x51, 0x51, 0xba, 0x16,
+ 0x63, 0x38, 0x2e, 0x52, 0x7b, 0xdd, 0xba, 0x26, 0xa1, 0xfb, 0xe7, 0xaf,
+ 0x41, 0xf6, 0x8d, 0x32, 0x71, 0x4d, 0x42, 0xf0, 0x4d, 0x02, 0xc1, 0xeb,
+ 0xc2, 0xeb, 0xe6, 0x21, 0x47, 0xc7, 0x1f, 0xeb, 0x9a, 0x30, 0x86, 0xa1,
+ 0x1b, 0xa4, 0xad, 0x69, 0x25, 0x8d, 0x36, 0x52, 0xc0, 0xe2, 0xdd, 0xc5,
+ 0xe4, 0x8e, 0x01, 0x35, 0x39, 0xb8, 0x0b, 0x2d, 0x42, 0xec, 0x74, 0x46,
+ 0xe2, 0x55, 0xe8, 0x61, 0xd9, 0x5e, 0x71, 0x43, 0x36, 0x55, 0x42, 0x7b,
+ 0x74, 0x5b, 0x80, 0x11, 0x0d, 0xd3, 0xa0, 0x51, 0x37, 0x0f, 0x6e, 0x90,
+ 0x53, 0xb6, 0xdf, 0x91, 0x8f, 0xbe, 0x0a, 0x1c, 0xcd, 0x07, 0x31, 0xd1,
+ 0xbd, 0xa0, 0x5b, 0x9e, 0xe8, 0xbe, 0xeb, 0xa2, 0x2e, 0x59, 0x31, 0xc9,
+ 0x49, 0x51, 0x37, 0x34, 0x6d, 0x4f, 0xaa, 0x97, 0x63, 0xe9, 0x93, 0xb2,
+ 0x03, 0x11, 0x44, 0x1d, 0x2c, 0x91, 0x81, 0x74, 0x2c, 0xab, 0x87, 0xb2,
+ 0x60, 0x76, 0x20, 0x8a, 0xb9, 0x84, 0xe9, 0xe7, 0x61, 0x76, 0xa2, 0xb0,
+ 0x2c, 0xa9, 0x32, 0x91, 0x03, 0xf3, 0x4a, 0x4b, 0x44, 0xd3, 0x0f, 0x26,
+ 0x09, 0x94, 0xa2, 0x69, 0xa4, 0x1d, 0x02, 0x01, 0x94, 0xa5, 0xca, 0x9c,
+ 0x00, 0x00, 0x09, 0x6b, 0x46, 0x99, 0x03, 0x21, 0xdf, 0x22, 0x4f, 0xe3,
+ 0xc7, 0xf5, 0xd8, 0xed, 0xed, 0xa1, 0xfb, 0x4e, 0x12, 0xd8, 0xc9, 0xc2,
+ 0x8f, 0x3c, 0xee, 0xf2, 0xca, 0x04, 0x5d, 0x0a, 0xe5, 0x92, 0x90, 0xe8,
+ 0xc4, 0xa3, 0x0e, 0x93, 0x50, 0xe4, 0x03, 0xe6, 0xbe, 0x13, 0x7e, 0xde,
+ 0x90, 0x11, 0x73, 0x79, 0xc1, 0x74, 0x97, 0xa5, 0xa9, 0x29, 0xd7, 0xeb,
+ 0xa4, 0x03, 0x5d, 0x4d, 0xca, 0x6b, 0x18, 0xc3, 0x6a, 0xc6, 0xf2, 0x89,
+ 0xee, 0xcf, 0xbd, 0x87, 0xc9, 0x8f, 0xc1, 0x43, 0x6f, 0xf9, 0x7f, 0xfd,
+ 0x58, 0x7b, 0xb2, 0x3a, 0x1d, 0xf3, 0xf0, 0x39, 0xd7, 0x63, 0xae, 0xa7,
+ 0x3c, 0x20, 0x28, 0x79, 0x99, 0xd5, 0xeb, 0x9e, 0xf2, 0x06, 0x93, 0x0a,
+ 0x14, 0x25, 0x9a, 0xac, 0x7d, 0x23, 0xef, 0xb7, 0x08, 0xc5, 0x7f, 0xf8,
+ 0x83, 0x78, 0xa4, 0xfe, 0xf0, 0x87, 0x83, 0xc8, 0xcb, 0x01, 0xbe, 0x9d,
+ 0xa7, 0x45, 0x36, 0xa5, 0x42, 0x80, 0xbd, 0xe8, 0x99, 0xcd, 0xa2, 0xf6,
+ 0x8e, 0x2f, 0xdc, 0x55, 0xa3, 0x45, 0x38, 0xd3, 0x78, 0x05, 0x67, 0xd9,
+ 0x97, 0x1c, 0x79, 0x9b, 0x18, 0x4a, 0xf6, 0x2d, 0x0b, 0x9e, 0xd2, 0xb4,
+ 0x54, 0x70, 0x54, 0x8b, 0x66, 0xe8, 0x48, 0x26, 0x0a, 0xd2, 0xb5, 0xc4,
+ 0xf7, 0xd3, 0xce, 0xec, 0xbb, 0x19, 0x7b, 0x46, 0x67, 0x47, 0x10, 0x37,
+ 0x2f, 0x4a, 0x00, 0xe1, 0x21, 0xd8, 0x99, 0xcb, 0x00, 0x63, 0xa4, 0x0e,
+ 0xaa, 0xf7, 0x08, 0x3a, 0xb9, 0xce, 0x92, 0xe8, 0x68, 0x52, 0xc5, 0xfd,
+ 0xeb, 0x21, 0x67, 0x8f, 0x09, 0x06, 0x00, 0x2f, 0x93, 0xbf, 0xd7, 0x94,
+ 0x7d, 0x46, 0x15, 0xf4, 0x04, 0x96, 0x86, 0x8a, 0x9e, 0x53, 0xb1, 0x67,
+ 0xb6, 0xea, 0x68, 0x32, 0x05, 0x6e, 0xa4, 0xa5, 0x44, 0x06, 0x3c, 0x6b,
+ 0x4a, 0xd6, 0xf3, 0x34, 0x79, 0x5f, 0xea, 0x94, 0x24, 0x5c, 0x83, 0x41,
+ 0xf0, 0xcc, 0x98, 0x39, 0xb4, 0x73, 0x89, 0x63, 0xbe, 0xe1, 0xc4, 0xa4,
+ 0x72, 0xc5, 0x54, 0xa5, 0xe4, 0xaf, 0x6f, 0x5f, 0x1e, 0xd7, 0xe2, 0xa4,
+ 0x25, 0x08, 0xdd, 0x0f, 0xba, 0x71, 0xe2, 0xbe, 0x39, 0x74, 0x4a, 0x9e,
+ 0x1c, 0xa3, 0xb1, 0x44, 0xf1, 0x76, 0x14, 0x71, 0xa3, 0xb6, 0xbd, 0x79,
+ 0x28, 0xd2, 0x03, 0x94, 0xe5, 0x95, 0x0c, 0x65, 0xff, 0x13, 0x31, 0x94,
+ 0xfd, 0x0f, 0x66, 0x28, 0x7b, 0x3d, 0xd3, 0xd4, 0xc7, 0x66, 0x28, 0xfb,
+ 0x9f, 0x80, 0xa1, 0x08, 0xa4, 0xb2, 0xb0, 0xc0, 0x76, 0x29, 0xc2, 0x13,
+ 0xd9, 0x6a, 0xda, 0x76, 0xbd, 0x80, 0x7c, 0xcc, 0xf5, 0x36, 0x62, 0xb1,
+ 0xa3, 0xc5, 0x6c, 0xee, 0x0b, 0x62, 0xa5, 0x0a, 0x9f, 0xb1, 0x57, 0xf4,
+ 0x4b, 0x7a, 0x95, 0xd3, 0xd3, 0xe5, 0xf5, 0x53, 0x06, 0x27, 0x97, 0x5b,
+ 0xb5, 0xa5, 0x9a, 0x3c, 0x06, 0xbd, 0x64, 0x43, 0x0c, 0x21, 0xb4, 0x21,
+ 0xca, 0x64, 0x7f, 0x13, 0x83, 0x4e, 0xb1, 0xa0, 0x10, 0xec, 0xe8, 0x68,
+ 0x4e, 0xa6, 0xcf, 0xdd, 0xde, 0x2d, 0xd7, 0x1b, 0xc4, 0x58, 0x93, 0x80,
+ 0x9f, 0xae, 0x48, 0x59, 0x5c, 0xcb, 0x66, 0x8a, 0x58, 0xd6, 0x1c, 0x0e,
+ 0xb5, 0xce, 0x56, 0xc0, 0x09, 0x1e, 0xce, 0x82, 0x5d, 0xd8, 0x7b, 0x70,
+ 0x00, 0x2f, 0xbd, 0xcb, 0x75, 0x70, 0x57, 0xa5, 0xe1, 0xd8, 0x45, 0x5c,
+ 0x85, 0x4d, 0x36, 0x22, 0x81, 0x44, 0x86, 0x01, 0x7c, 0xdd, 0x08, 0x41,
+ 0x02, 0x68, 0x05, 0x10, 0xc9, 0xd1, 0x18, 0x01, 0x11, 0xb6, 0x35, 0xbb,
+ 0xc4, 0x60, 0xa3, 0x9c, 0xd9, 0x8c, 0xe7, 0x83, 0xc2, 0xc8, 0x58, 0x41,
+ 0x35, 0x51, 0xcc, 0x10, 0x29, 0x5f, 0x1d, 0xac, 0x73, 0x58, 0x53, 0x17,
+ 0x8d, 0xdc, 0x81, 0x69, 0x0b, 0x34, 0x37, 0x3a, 0xa8, 0xc0, 0x09, 0x82,
+ 0x74, 0x09, 0x2b, 0xdc, 0x8c, 0xcf, 0xba, 0x9b, 0xaf, 0x88, 0xe2, 0x0e,
+ 0x52, 0xc5, 0xc7, 0xd7, 0x30, 0x82, 0xdd, 0xac, 0xcb, 0x0b, 0xc2, 0x63,
+ 0x5d, 0x8f, 0x37, 0xb4, 0xe3, 0x45, 0xc4, 0x19, 0x1e, 0x41, 0x89, 0xaa,
+ 0x6d, 0x1a, 0xad, 0x35, 0xd6, 0x96, 0x8c, 0xf1, 0xaa, 0xdf, 0x8a, 0xb5,
+ 0xd1, 0x86, 0xcd, 0x70, 0xac, 0xc4, 0xa2, 0x9a, 0x63, 0x4a, 0x03, 0x26,
+ 0xd1, 0x48, 0x84, 0xad, 0x67, 0x7d, 0xa9, 0xbf, 0x38, 0xa4, 0xe8, 0x40,
+ 0xee, 0x41, 0x02, 0xb8, 0x38, 0xe6, 0x43, 0xb5, 0x59, 0x32, 0xd3, 0xa3,
+ 0x07, 0x3b, 0xcf, 0xdf, 0x67, 0xa9, 0x07, 0x89, 0x3d, 0x42, 0x39, 0x5d,
+ 0x5c, 0x57, 0x36, 0xf6, 0xb5, 0xc6, 0xd3, 0x91, 0x56, 0x11, 0x08, 0xb3,
+ 0xd7, 0xeb, 0x05, 0x6a, 0xb0, 0x5c, 0x67, 0xe9, 0x4d, 0x4d, 0xbe, 0x96,
+ 0x91, 0x75, 0xb9, 0x62, 0xc7, 0x48, 0x2a, 0x09, 0xdb, 0x08, 0xe7, 0x96,
+ 0x48, 0xa3, 0x1a, 0x61, 0xc9, 0x84, 0x3e, 0xae, 0x61, 0x53, 0x5a, 0x5d,
+ 0x93, 0x72, 0xb2, 0xf5, 0x88, 0xa4, 0xc5, 0x7b, 0xfd, 0x9e, 0xe9, 0xa3,
+ 0x0c, 0xc1, 0x88, 0x6f, 0xa2, 0xe0, 0x6f, 0x7d, 0x91, 0xdf, 0x19, 0xc5,
+ 0xa7, 0x8b, 0x0a, 0x40, 0x71, 0xa7, 0xb9, 0xed, 0xce, 0xd5, 0x4d, 0x43,
+ 0x63, 0x2c, 0x3d, 0x8f, 0x71, 0xc2, 0x2b, 0x92, 0x1f, 0xcd, 0xb6, 0x7a,
+ 0x79, 0x3b, 0x54, 0xd6, 0xb2, 0xa2, 0x16, 0x28, 0x9c, 0x71, 0x39, 0xb2,
+ 0xbf, 0x03, 0xdb, 0x67, 0x78, 0x19, 0xf7, 0x23, 0x91, 0xfa, 0x65, 0x95,
+ 0xce, 0x45, 0x86, 0x2b, 0xf2, 0x61, 0xaa, 0x91, 0x66, 0x40, 0xcf, 0x5e,
+ 0xa5, 0xec, 0x74, 0xf8, 0x3e, 0x18, 0x29, 0xc5, 0xf5, 0x67, 0x6b, 0xb7,
+ 0xa1, 0xc8, 0x9f, 0xec, 0x78, 0x31, 0xf5, 0x82, 0x45, 0x53, 0x83, 0x55,
+ 0x13, 0x5f, 0x0f, 0x8e, 0x24, 0xf6, 0xcb, 0xc2, 0xba, 0x70, 0x3f, 0x1b,
+ 0x25, 0xa9, 0x57, 0x0e, 0x1e, 0xba, 0x2e, 0x48, 0x56, 0x69, 0x79, 0xa7,
+ 0x94, 0x42, 0xf0, 0x92, 0x20, 0x2b, 0x76, 0x5f, 0xb4, 0x15, 0xf1, 0x6c,
+ 0x34, 0x2d, 0x97, 0xe2, 0xa5, 0xdb, 0x87, 0x1c, 0xb3, 0xd2, 0x79, 0x1b,
+ 0x82, 0x5d, 0x43, 0x9c, 0x15, 0x61, 0x54, 0x64, 0x0a, 0xb7, 0x2f, 0xe3,
+ 0x97, 0xc3, 0x92, 0x3f, 0x5a, 0xb1, 0xe7, 0xf8, 0x68, 0xc9, 0xe8, 0x38,
+ 0x0c, 0xb1, 0xd2, 0xd6, 0xf1, 0xab, 0x08, 0x2b, 0x3e, 0xa2, 0x4d, 0x0c,
+ 0xc9, 0x94, 0x97, 0x98, 0x6b, 0xe5, 0xc0, 0xa3, 0xf9, 0xa2, 0xf0, 0x70,
+ 0x05, 0xe9, 0x22, 0x94, 0x3a, 0x18, 0x52, 0xfa, 0xc2, 0x3b, 0x1c, 0x7a,
+ 0x28, 0x70, 0x03, 0x7a, 0x65, 0xba, 0x0d, 0xbc, 0xa3, 0xdc, 0x2e, 0xcb,
+ 0x09, 0xf6, 0x57, 0x52, 0x55, 0xc6, 0x60, 0x05, 0xe8, 0xe7, 0x52, 0x12,
+ 0x15, 0x28, 0xbd, 0x9e, 0xeb, 0xef, 0x50, 0x18, 0x93, 0x18, 0xb3, 0x4b,
+ 0x2a, 0xc9, 0xfa, 0x8e, 0x22, 0xca, 0x82, 0x64, 0xae, 0x41, 0x6b, 0xb5,
+ 0x27, 0xd5, 0xc3, 0x24, 0x98, 0xc0, 0x26, 0xa4, 0x9b, 0x96, 0x41, 0xd7,
+ 0xdd, 0xdf, 0x11, 0x24, 0x92, 0x2b, 0xcc, 0xce, 0xb2, 0x28, 0x5e, 0xb2,
+ 0x88, 0x9d, 0x5e, 0x59, 0x5e, 0x75, 0xb0, 0x42, 0xad, 0xf9, 0x4a, 0xe3,
+ 0x5a, 0x5b, 0x2a, 0xe3, 0x99, 0x8d, 0x77, 0xe3, 0x74, 0x6c, 0x30, 0x40,
+ 0xd9, 0x1e, 0x28, 0xe8, 0xa3, 0xc3, 0xf2, 0xd2, 0xd4, 0x21, 0x28, 0x84,
+ 0x93, 0x2c, 0xc7, 0x94, 0xd0, 0xa7, 0xa2, 0x7b, 0x33, 0xd2, 0xfb, 0xa2,
+ 0x84, 0xb5, 0xf6, 0xbf, 0xea, 0x16, 0xd6, 0x11, 0xad, 0xed, 0xbe, 0xbc,
+ 0xbd, 0x33, 0x2f, 0x53, 0x42, 0x72, 0x42, 0x84, 0x2d, 0x19, 0x81, 0x09,
+ 0x82, 0x5d, 0xd7, 0xe4, 0x55, 0x45, 0xbd, 0xe4, 0xda, 0xed, 0x4d, 0x5f,
+ 0xff, 0x39, 0x7c, 0x89, 0xf9, 0x22, 0x70, 0x77, 0xba, 0xd8, 0xfd, 0x2c,
+ 0x5b, 0xd9, 0x04, 0x5f, 0xd3, 0x4a, 0xcf, 0x00, 0x21, 0x46, 0x29, 0x7e,
+ 0xd6, 0x86, 0xcf, 0x69, 0x2e, 0x5b, 0x27, 0x1d, 0x0f, 0xad, 0x39, 0x4a,
+ 0x0c, 0x20, 0x63, 0xdb, 0x6a, 0x6e, 0x43, 0x8a, 0x2c, 0x9a, 0xc0, 0xb5,
+ 0x1c, 0xa8, 0x33, 0xd8, 0x56, 0x29, 0xc7, 0x99, 0x19, 0x62, 0xf5, 0x1d,
+ 0x58, 0x6f, 0xc3, 0xcd, 0xcd, 0x4d, 0x6f, 0x59, 0xc0, 0xc4, 0xd9, 0x2c,
+ 0x3a, 0x05, 0x26, 0x77, 0xeb, 0xd4, 0x01, 0x13, 0xbc, 0x61, 0x07, 0x5d,
+ 0xf1, 0x6f, 0x6f, 0x9e, 0x77, 0x8d, 0x0f, 0x5c, 0x8b, 0x31, 0x51, 0xfc,
+ 0x6f, 0xe9, 0x2b, 0xd2, 0x51, 0x9a, 0x49, 0xc0, 0x67, 0x02, 0x6a, 0xc9,
+ 0xf1, 0xd1, 0xf9, 0xbb, 0xd7, 0x27, 0x17, 0xef, 0xde, 0x1c, 0xfd, 0x80,
+ 0x73, 0xe6, 0xbb, 0x07, 0x84, 0x74, 0x0c, 0x61, 0x2f, 0xf2, 0x1c, 0x08,
+ 0xec, 0x15, 0xb1, 0x5b, 0x4e, 0x36, 0x0a, 0xde, 0x32, 0x5a, 0x58, 0x90,
+ 0xc7, 0x89, 0x83, 0x39, 0x70, 0x38, 0x0d, 0x4e, 0xf0, 0x7d, 0x5a, 0xcc,
+ 0xd2, 0x49, 0x2f, 0x2f, 0x2e, 0x91, 0xe1, 0x6c, 0x3f, 0x13, 0x81, 0x25,
+ 0xd8, 0xdc, 0xb6, 0xa4, 0xec, 0x62, 0x18, 0xc2, 0x75, 0x31, 0x46, 0xaf,
+ 0x79, 0x38, 0x87, 0xd6, 0xd9, 0xbe, 0x5a, 0xce, 0xec, 0xbf, 0x35, 0x5a,
+ 0xa6, 0xbe, 0xaf, 0x6b, 0x9e, 0x8f, 0xd1, 0xac, 0xb4, 0x0d, 0x38, 0xe7,
+ 0xe0, 0x11, 0x49, 0x1d, 0xf3, 0xeb, 0x47, 0x4b, 0xcc, 0x05, 0x95, 0x67,
+ 0xaf, 0x71, 0x33, 0xc7, 0x53, 0xce, 0x37, 0x64, 0x98, 0x2f, 0x86, 0xb9,
+ 0x81, 0xfd, 0xf3, 0xdc, 0x4f, 0x4c, 0xd1, 0x08, 0xe0, 0x8c, 0x49, 0xef,
+ 0xcb, 0x65, 0x3b, 0x18, 0xce, 0x47, 0x8e, 0x43, 0xc4, 0x26, 0xd7, 0x5e,
+ 0x6f, 0x1c, 0xc6, 0x47, 0x30, 0x0d, 0x34, 0xf4, 0x77, 0x6b, 0xe7, 0x5f,
+ 0xe2, 0x3b, 0x45, 0x0d, 0xfe, 0x89, 0x6c, 0x8d, 0x1b, 0xb6, 0x66, 0x3e,
+ 0x5b, 0xaa, 0xd8, 0x05, 0x37, 0xec, 0x49, 0x70, 0xc3, 0xc8, 0x66, 0xb3,
+ 0x6a, 0xbb, 0x1e, 0xad, 0xda, 0xae, 0x27, 0x1f, 0x7f, 0xbb, 0x9e, 0x3c,
+ 0x60, 0xbb, 0x9e, 0x3c, 0xc8, 0x1f, 0xb4, 0x6a, 0xc3, 0xee, 0xe1, 0xea,
+ 0xc6, 0xed, 0x32, 0x27, 0xc9, 0xbd, 0x65, 0x7e, 0x2d, 0xa1, 0x8d, 0x70,
+ 0x15, 0x2a, 0x9b, 0x58, 0x5e, 0x36, 0x50, 0x23, 0xfe, 0xdc, 0x3f, 0x7b,
+ 0x2d, 0x15, 0xa3, 0x30, 0x22, 0x88, 0x00, 0x79, 0x6c, 0x5a, 0x42, 0xb8,
+ 0x96, 0x39, 0x2b, 0x8d, 0x8a, 0x97, 0xa7, 0x3d, 0x0b, 0x8e, 0x2d, 0xe7,
+ 0x08, 0x95, 0x57, 0x79, 0x51, 0x0d, 0x17, 0x0c, 0xd4, 0x37, 0xb7, 0xa9,
+ 0x13, 0x94, 0x53, 0xe2, 0x39, 0x5f, 0x8a, 0x54, 0xf5, 0xb0, 0x40, 0xb5,
+ 0x50, 0x01, 0x9c, 0xf9, 0x29, 0x29, 0x2e, 0x7f, 0xf1, 0xbf, 0x93, 0x60,
+ 0xfa, 0x8e, 0x5b, 0xea, 0xfb, 0x80, 0x6b, 0x08, 0xb3, 0x30, 0xb6, 0x8d,
+ 0x83, 0xeb, 0xb4, 0xbf, 0x78, 0x34, 0x1c, 0xa6, 0xf3, 0x2a, 0xf4, 0x8a,
+ 0x8f, 0x24, 0x51, 0xa4, 0xac, 0x06, 0xd4, 0x95, 0x0d, 0x23, 0x29, 0xe3,
+ 0x3c, 0x59, 0xa0, 0xd3, 0x12, 0x5c, 0xc9, 0x10, 0xb7, 0x33, 0xa2, 0x55,
+ 0xf6, 0x6a, 0xeb, 0x3a, 0x9e, 0x5e, 0x2e, 0x05, 0x8a, 0x89, 0x0e, 0x6c,
+ 0x0d, 0x0a, 0xc2, 0x2b, 0x70, 0x8a, 0x1b, 0x17, 0xd8, 0xac, 0x2c, 0x5e,
+ 0x93, 0xc4, 0x65, 0x32, 0xae, 0x4d, 0xf4, 0x6d, 0x57, 0xd3, 0x48, 0xdd,
+ 0xfa, 0x21, 0x49, 0x28, 0xd3, 0x99, 0x94, 0x04, 0x2e, 0xec, 0x62, 0xf3,
+ 0x4a, 0x28, 0x0a, 0xad, 0x1b, 0x11, 0x88, 0xa1, 0xc0, 0x14, 0xc3, 0xe7,
+ 0xe5, 0x15, 0x10, 0x51, 0xbc, 0xc5, 0x15, 0x98, 0xfd, 0xe0, 0x27, 0xc2,
+ 0xe8, 0x36, 0x3c, 0xc0, 0x6f, 0x4f, 0xf3, 0x9c, 0xce, 0x73, 0x0e, 0x38,
+ 0xb4, 0x5f, 0x24, 0x6d, 0xe1, 0x80, 0xa3, 0x68, 0x63, 0x9c, 0xe7, 0x83,
+ 0xa4, 0xd8, 0x90, 0x4c, 0x48, 0x4a, 0x4d, 0x13, 0x2b, 0xba, 0x9e, 0x5e,
+ 0xa2, 0xbb, 0x6f, 0xf9, 0xb9, 0x48, 0x6c, 0x58, 0x6d, 0x18, 0x52, 0x6d,
+ 0xa3, 0xea, 0x12, 0xcf, 0xd2, 0xb6, 0xe2, 0xe0, 0xca, 0x87, 0xa2, 0xfc,
+ 0xb4, 0x48, 0xf1, 0x8c, 0x8b, 0x14, 0x6b, 0xc9, 0x24, 0x2a, 0xc9, 0xea,
+ 0x84, 0xd5, 0x75, 0x43, 0x75, 0x56, 0x47, 0xa3, 0x0c, 0xdb, 0xc2, 0x88,
+ 0x6f, 0x1c, 0xcc, 0x3c, 0x4b, 0xb1, 0xea, 0xae, 0xde, 0xd7, 0x20, 0xc3,
+ 0xa3, 0xea, 0xc4, 0xc9, 0x87, 0x1a, 0x35, 0xa9, 0xb5, 0x16, 0xbc, 0xa4,
+ 0x14, 0xd2, 0x1a, 0x05, 0x27, 0x21, 0x8c, 0x7e, 0x62, 0x0a, 0x4c, 0xbb,
+ 0xd8, 0x4b, 0xa9, 0x8d, 0x0e, 0x94, 0x8a, 0x0e, 0xa3, 0xd4, 0x70, 0x45,
+ 0x05, 0x98, 0x28, 0x3d, 0xad, 0x04, 0xa8, 0x39, 0x10, 0x6b, 0x48, 0x6b,
+ 0xf7, 0xe9, 0xf2, 0x59, 0xb8, 0xfd, 0x8d, 0x7f, 0x46, 0x9d, 0x51, 0x91,
+ 0xcd, 0xde, 0x77, 0x0e, 0xa2, 0xce, 0x30, 0x07, 0x3e, 0xdf, 0x89, 0xfe,
+ 0xb5, 0xb1, 0x06, 0xfe, 0x55, 0xb3, 0x95, 0x0d, 0xf3, 0xd9, 0x07, 0xb4,
+ 0xf7, 0x2d, 0x66, 0x70, 0x27, 0xa8, 0xc7, 0xad, 0xfb, 0x62, 0x1c, 0x7a,
+ 0x23, 0x3a, 0x8c, 0xf0, 0xdb, 0x90, 0x74, 0xe8, 0x0a, 0x58, 0x0e, 0x8c,
+ 0x9c, 0x80, 0x58, 0xe3, 0x27, 0x45, 0x72, 0x53, 0xbf, 0x50, 0xee, 0x1f,
+ 0xa4, 0x13, 0xc5, 0xcf, 0xbb, 0x26, 0x6f, 0x3d, 0x50, 0x14, 0x31, 0xbe,
+ 0xe8, 0x36, 0xab, 0x20, 0x36, 0x22, 0x82, 0x9d, 0x48, 0xe7, 0xbd, 0x9a,
+ 0xb5, 0xfe, 0x57, 0x7c, 0xf3, 0xd7, 0xc5, 0xec, 0x7d, 0x0c, 0xd2, 0x00,
+ 0x5a, 0xf0, 0x62, 0xb1, 0xfd, 0x85, 0x2f, 0x29, 0xeb, 0xc5, 0xa6, 0xd0,
+ 0xc9, 0xc9, 0xc8, 0xb0, 0x14, 0x79, 0x4d, 0x19, 0x07, 0x3b, 0xa2, 0x34,
+ 0x60, 0xb9, 0x2d, 0xd8, 0xc1, 0xba, 0x9f, 0xd0, 0xf9, 0x9d, 0x95, 0x43,
+ 0x8c, 0x77, 0x41, 0xbf, 0x51, 0x47, 0x46, 0xa3, 0xcd, 0x76, 0x64, 0xe9,
+ 0xf8, 0x14, 0x26, 0xfe, 0xd5, 0x3b, 0xa4, 0x7b, 0x99, 0x94, 0x0b, 0x73,
+ 0xd2, 0x05, 0x70, 0x18, 0xae, 0x3c, 0x72, 0x69, 0x71, 0xd1, 0x63, 0x6d,
+ 0x98, 0x56, 0x9f, 0xf8, 0xb5, 0x1f, 0x40, 0x0d, 0xd7, 0x14, 0x36, 0x08,
+ 0x07, 0xb8, 0xc8, 0x6f, 0x4a, 0xc2, 0x23, 0x4b, 0x26, 0x37, 0x84, 0x4b,
+ 0xa1, 0x83, 0x6c, 0x8c, 0x4f, 0xb2, 0xe6, 0x30, 0x51, 0x36, 0xf1, 0x6c,
+ 0x76, 0xc3, 0x49, 0x8e, 0xc7, 0x6e, 0xb4, 0xca, 0xb5, 0x15, 0xda, 0x86,
+ 0x15, 0xe2, 0x94, 0x67, 0xc9, 0x5a, 0x69, 0x20, 0x0f, 0x75, 0xb2, 0xae,
+ 0x80, 0x15, 0x1c, 0x68, 0x3c, 0xd0, 0xc5, 0x58, 0x3f, 0xe6, 0x78, 0xc0,
+ 0xb8, 0x61, 0xf8, 0x36, 0x13, 0xf4, 0xd0, 0x7e, 0x10, 0xff, 0x9a, 0xd4,
+ 0x8a, 0xf0, 0xbd, 0x4f, 0xe1, 0x48, 0x4f, 0xa8, 0xde, 0x1f, 0x22, 0x7e,
+ 0x1c, 0xb6, 0x40, 0x85, 0xd5, 0xe4, 0xe0, 0x52, 0x41, 0x8f, 0x19, 0x1a,
+ 0xc8, 0xb5, 0x8e, 0x92, 0xbe, 0xca, 0x54, 0x3c, 0xa5, 0x10, 0x77, 0x0c,
+ 0x2d, 0x1f, 0x78, 0x96, 0x74, 0x97, 0x91, 0x47, 0x66, 0x08, 0xa8, 0xff,
+ 0x0d, 0xac, 0xd9, 0x86, 0xe1, 0x5a, 0x23, 0x53, 0x33, 0x9e, 0x40, 0x78,
+ 0x60, 0x7b, 0xe1, 0x84, 0x37, 0x1d, 0xf5, 0x8d, 0x16, 0x08, 0xfe, 0x21,
+ 0x2b, 0xdd, 0x5a, 0x7f, 0x44, 0xbc, 0xf8, 0x44, 0x6e, 0x0c, 0x0f, 0x98,
+ 0x63, 0x74, 0x07, 0x17, 0xe6, 0xd4, 0x3b, 0x4e, 0xf0, 0x70, 0xa1, 0x65,
+ 0x44, 0xa9, 0x50, 0xc2, 0xbb, 0xbf, 0x9c, 0x9c, 0x9c, 0xbf, 0x7c, 0x76,
+ 0x7a, 0x22, 0x3e, 0x3e, 0xf3, 0xd1, 0xeb, 0x8b, 0xbf, 0x9d, 0x02, 0xe1,
+ 0xe7, 0xc3, 0xf7, 0x18, 0xd9, 0x2c, 0x72, 0x5d, 0xf3, 0xb0, 0x4b, 0x92,
+ 0x98, 0x68, 0xd7, 0x84, 0x71, 0x3f, 0xa4, 0x34, 0xce, 0xa3, 0x97, 0x3f,
+ 0xc2, 0x5f, 0x2f, 0xce, 0xe3, 0xb7, 0x3f, 0x1a, 0x53, 0xff, 0x16, 0x10,
+ 0xdc, 0x5f, 0x74, 0x3e, 0x65, 0x80, 0xfe, 0x15, 0xcd, 0x88, 0xe2, 0x78,
+ 0x8e, 0xcf, 0x23, 0x06, 0x54, 0x43, 0x54, 0xe8, 0xb4, 0xa2, 0xa2, 0x2c,
+ 0x45, 0xfe, 0x3e, 0x9d, 0x29, 0x6a, 0x56, 0x49, 0x7e, 0x61, 0xdc, 0x85,
+ 0x25, 0x40, 0x66, 0x5c, 0x9d, 0x2d, 0x35, 0x2e, 0x7f, 0x06, 0x56, 0x23,
+ 0x01, 0xcf, 0xdb, 0x1c, 0x75, 0x8a, 0xa5, 0xc3, 0x49, 0x52, 0xf8, 0x01,
+ 0x82, 0x8d, 0x84, 0x2a, 0x02, 0x26, 0x86, 0x9d, 0x38, 0xeb, 0xc3, 0x1b,
+ 0x84, 0xfe, 0x21, 0x49, 0x8e, 0x5a, 0x07, 0x94, 0x72, 0xe0, 0xa3, 0xaf,
+ 0x48, 0x46, 0x8c, 0x76, 0x77, 0x7a, 0xeb, 0x00, 0x9f, 0xd3, 0x09, 0xb4,
+ 0x03, 0x6c, 0x83, 0x45, 0x03, 0xa9, 0x66, 0x31, 0x33, 0x5a, 0x00, 0xcb,
+ 0x8c, 0xd2, 0xa4, 0x8b, 0x15, 0xf6, 0x64, 0x27, 0x52, 0x1c, 0xb9, 0xb0,
+ 0xb1, 0xa2, 0x71, 0x54, 0x5a, 0x2c, 0x16, 0x21, 0x93, 0x45, 0x30, 0x27,
+ 0xfd, 0x43, 0x4c, 0x16, 0x8d, 0xa1, 0xec, 0xad, 0x6b, 0xb5, 0xa8, 0xad,
+ 0x1b, 0xb1, 0x88, 0x1a, 0xdc, 0x57, 0x9d, 0x41, 0xdc, 0xc5, 0x54, 0x9f,
+ 0xfe, 0x10, 0xff, 0xfd, 0x26, 0xe0, 0x40, 0xd9, 0x02, 0xb6, 0x9b, 0x5d,
+ 0xa3, 0x01, 0x1c, 0x9e, 0x65, 0x71, 0x1b, 0x1f, 0xed, 0x99, 0xbc, 0x15,
+ 0xc1, 0x3e, 0xc2, 0x46, 0x08, 0x84, 0x84, 0x1a, 0xa5, 0xb5, 0xf3, 0x70,
+ 0xb7, 0x78, 0x2d, 0xe7, 0xd2, 0x1e, 0x35, 0x08, 0xeb, 0xdc, 0x8b, 0x9e,
+ 0x9d, 0xbc, 0xe9, 0x46, 0xe7, 0x27, 0xaf, 0x58, 0xb9, 0x3e, 0x79, 0xfd,
+ 0x3d, 0xe5, 0x5a, 0x8b, 0x47, 0x1f, 0x91, 0xec, 0x60, 0x8b, 0x7c, 0x14,
+ 0x74, 0x67, 0xd3, 0xe1, 0x5d, 0x52, 0x52, 0xca, 0x72, 0x31, 0x0d, 0xd3,
+ 0x88, 0x33, 0xd5, 0xf5, 0xeb, 0xbe, 0x85, 0xf3, 0xa7, 0x7b, 0xeb, 0xee,
+ 0xaa, 0xf4, 0x0f, 0xb3, 0x95, 0x45, 0x22, 0x3d, 0x6c, 0xbd, 0xbd, 0xc5,
+ 0x84, 0xb7, 0xfa, 0xfe, 0x45, 0x87, 0xf0, 0xcf, 0x37, 0x41, 0xd7, 0x57,
+ 0xff, 0x45, 0x60, 0xf7, 0xc4, 0x5e, 0x5a, 0x83, 0x75, 0x91, 0xf5, 0xe0,
+ 0x0d, 0x9c, 0xfb, 0x4e, 0x1f, 0xd3, 0x42, 0x26, 0xae, 0x24, 0x41, 0xcd,
+ 0x4d, 0x05, 0x3d, 0x82, 0x5c, 0x10, 0xfd, 0x17, 0x5d, 0x3c, 0xb7, 0x68,
+ 0x1b, 0x71, 0xb6, 0x26, 0x58, 0x7b, 0x8a, 0xf2, 0x6c, 0x23, 0xb7, 0x66,
+ 0x26, 0x71, 0x50, 0x10, 0xbc, 0x47, 0xd9, 0x88, 0xeb, 0x0f, 0x62, 0xb6,
+ 0x7e, 0x5e, 0x20, 0xb4, 0x48, 0x14, 0x6d, 0xfc, 0xbf, 0xdb, 0xe8, 0x28,
+ 0xd8, 0xce, 0x46, 0xef, 0x8a, 0x32, 0xd9, 0x68, 0x6a, 0x22, 0xce, 0xd7,
+ 0x23, 0xfc, 0x3a, 0xda, 0xe8, 0x99, 0x47, 0xe5, 0x77, 0xfc, 0x3c, 0x44,
+ 0x16, 0x2a, 0x9e, 0xb1, 0xbb, 0x5e, 0x31, 0x09, 0xcf, 0x80, 0x97, 0xf5,
+ 0xfb, 0xa7, 0xe8, 0xd0, 0x2f, 0x92, 0x42, 0x6c, 0x3e, 0x54, 0x58, 0x69,
+ 0x76, 0x89, 0xee, 0x9d, 0x68, 0xfe, 0x7e, 0x58, 0xee, 0x36, 0xc3, 0xe8,
+ 0x33, 0x27, 0x3d, 0xd9, 0xe0, 0x4b, 0x9e, 0xff, 0xe5, 0xb8, 0xff, 0xbb,
+ 0xdd, 0x5d, 0xc2, 0x36, 0xdd, 0x44, 0xcc, 0xc5, 0xa7, 0x8f, 0x77, 0xf7,
+ 0xb6, 0x42, 0x86, 0x62, 0xaf, 0x6a, 0x28, 0x97, 0xe5, 0x71, 0xb6, 0x8f,
+ 0xa0, 0x04, 0x04, 0x50, 0xd9, 0x34, 0x3c, 0x4a, 0x11, 0x2d, 0x0e, 0xe3,
+ 0xb6, 0x34, 0xcb, 0x92, 0x61, 0xf4, 0xbc, 0xf2, 0x61, 0xf4, 0x15, 0xa3,
+ 0x3a, 0x75, 0x78, 0xfc, 0x07, 0x1d, 0xc3, 0xa6, 0x0c, 0x26, 0x2c, 0xe2,
+ 0xb2, 0x96, 0xf5, 0x71, 0xd3, 0xf1, 0x6b, 0xea, 0xdd, 0xee, 0xbc, 0xb2,
+ 0xb2, 0x56, 0xb8, 0x9b, 0x85, 0x3b, 0x20, 0x4e, 0x59, 0xad, 0x00, 0x16,
+ 0x83, 0xa7, 0x8f, 0xc9, 0x88, 0x3a, 0x11, 0x53, 0x10, 0x2a, 0xc6, 0x4e,
+ 0x9e, 0xb8, 0x59, 0x7f, 0xe7, 0x14, 0xd5, 0x5b, 0x0d, 0xd4, 0x4c, 0x86,
+ 0xf7, 0x3b, 0xc0, 0x4a, 0x3a, 0xc1, 0x16, 0xef, 0x4f, 0x0b, 0x5c, 0xa0,
+ 0xda, 0x29, 0x49, 0x8d, 0xa4, 0xae, 0xe0, 0xf9, 0x52, 0x44, 0xad, 0x55,
+ 0x66, 0xc7, 0xf8, 0x1b, 0x8a, 0x8f, 0x60, 0x4f, 0x2b, 0x1e, 0x4a, 0xeb,
+ 0x6d, 0xdd, 0x94, 0x58, 0xd6, 0xb4, 0x1a, 0x52, 0x8d, 0x4c, 0xf4, 0xe1,
+ 0x63, 0x0c, 0x18, 0xda, 0xb6, 0x3c, 0x15, 0x67, 0x4e, 0xd0, 0xac, 0x84,
+ 0x86, 0x62, 0x09, 0x82, 0x7d, 0x01, 0x5a, 0x3e, 0xab, 0xe1, 0xa0, 0x84,
+ 0x07, 0x60, 0x98, 0x7c, 0x8c, 0x82, 0x9b, 0xb7, 0xc7, 0xfc, 0xc0, 0x49,
+ 0xca, 0xbd, 0x47, 0x65, 0x6b, 0x65, 0xef, 0x1f, 0x54, 0x3c, 0xd3, 0x91,
+ 0x75, 0xd6, 0xbd, 0x1b, 0xc9, 0x3b, 0xe5, 0xba, 0x65, 0x3f, 0x84, 0x93,
+ 0x32, 0x25, 0xd1, 0x0d, 0x79, 0xd2, 0x95, 0xc6, 0x6b, 0xdc, 0xb5, 0x18,
+ 0x44, 0x87, 0x04, 0x39, 0x16, 0xae, 0x0f, 0x72, 0x42, 0x69, 0xac, 0x20,
+ 0xd0, 0x15, 0x20, 0x57, 0xe5, 0x65, 0x03, 0x23, 0x9f, 0x1a, 0x96, 0xa2,
+ 0x5b, 0x29, 0x23, 0x97, 0x31, 0x28, 0x53, 0x20, 0x2e, 0x10, 0x8f, 0x9f,
+ 0xd0, 0xb9, 0x57, 0x59, 0x78, 0x83, 0xe0, 0xfa, 0x91, 0x95, 0x95, 0xc9,
+ 0x38, 0xc5, 0x9f, 0x84, 0x1a, 0x8c, 0xc2, 0x56, 0x96, 0x4c, 0x36, 0xba,
+ 0xfe, 0xfe, 0x6e, 0x08, 0x91, 0x6c, 0xc0, 0x2d, 0xcd, 0xad, 0x21, 0x9f,
+ 0xa7, 0xba, 0x80, 0x32, 0x0e, 0x76, 0xc7, 0x73, 0x09, 0xa6, 0x8a, 0xeb,
+ 0xe3, 0x29, 0x62, 0x55, 0xe9, 0x59, 0x7a, 0x4c, 0x73, 0xf5, 0x7a, 0xd7,
+ 0x6d, 0xd2, 0x8d, 0x50, 0x09, 0xac, 0xdd, 0x67, 0xa3, 0x12, 0xec, 0x9c,
+ 0x8b, 0x1c, 0xac, 0x57, 0xed, 0x31, 0x45, 0x50, 0x6b, 0xb3, 0x77, 0x0c,
+ 0xb2, 0x2f, 0xcd, 0xf9, 0x21, 0x8a, 0xcb, 0x62, 0x14, 0x97, 0x86, 0x28,
+ 0x2a, 0xbd, 0xb8, 0xa4, 0xa6, 0x2f, 0x1c, 0x86, 0x60, 0x07, 0x8f, 0xb8,
+ 0x40, 0x5c, 0x2d, 0x60, 0x56, 0x72, 0x9f, 0x11, 0x7d, 0x7f, 0xc4, 0xf6,
+ 0x13, 0xa9, 0x9a, 0xe4, 0x58, 0xec, 0x68, 0x16, 0x01, 0x23, 0x27, 0xae,
+ 0x33, 0x46, 0xe7, 0x4a, 0xa7, 0x31, 0x7b, 0x68, 0x8f, 0x23, 0x0e, 0x5a,
+ 0x20, 0x78, 0xee, 0xe8, 0xa6, 0xc8, 0xaa, 0x8a, 0xd0, 0x6d, 0x6a, 0x75,
+ 0x80, 0xdb, 0x8a, 0xaf, 0xd3, 0xed, 0x08, 0x2b, 0x04, 0x3b, 0x49, 0x88,
+ 0x68, 0x63, 0xae, 0x43, 0x47, 0x02, 0x85, 0x8c, 0x89, 0xb1, 0xba, 0xac,
+ 0x5f, 0x18, 0xdf, 0xfb, 0xaf, 0x2f, 0x96, 0x83, 0xa9, 0x0a, 0xec, 0x1f,
+ 0x17, 0xf7, 0x92, 0xb8, 0x3b, 0x42, 0x4d, 0x92, 0x10, 0x1c, 0x63, 0xfd,
+ 0xd7, 0x02, 0xd8, 0x3e, 0xf1, 0xe0, 0x58, 0xe2, 0x03, 0x3c, 0xde, 0xb3,
+ 0xf4, 0xb6, 0x0a, 0xcb, 0x86, 0xba, 0xfa, 0xeb, 0xd1, 0xeb, 0xc7, 0x93,
+ 0x0d, 0x0d, 0xce, 0x31, 0x61, 0xcf, 0xf6, 0x86, 0x1f, 0x25, 0x34, 0x2a,
+ 0x26, 0x20, 0xe8, 0x98, 0xc4, 0xb4, 0x43, 0x58, 0xa9, 0xd4, 0x2b, 0x9b,
+ 0xae, 0x22, 0x3c, 0x6f, 0x30, 0xe8, 0x07, 0xd9, 0x74, 0x31, 0xb5, 0x25,
+ 0x41, 0x10, 0x46, 0xb1, 0x22, 0xa1, 0x90, 0xed, 0xe2, 0xae, 0x6b, 0x2c,
+ 0x0e, 0xf8, 0xbf, 0x10, 0x35, 0xdc, 0xa9, 0xc1, 0x46, 0xec, 0x8f, 0xec,
+ 0x6c, 0x5a, 0xf3, 0x5a, 0xe1, 0x54, 0x59, 0x97, 0xc3, 0xc0, 0x53, 0x06,
+ 0x4e, 0x64, 0x5b, 0x54, 0xe2, 0xb9, 0xeb, 0x09, 0xc7, 0x1a, 0x0b, 0x48,
+ 0xce, 0x53, 0x51, 0xcd, 0x69, 0x2c, 0xec, 0xdf, 0xc7, 0x58, 0x3c, 0x22,
+ 0x2f, 0x33, 0x5c, 0x24, 0x0e, 0x19, 0x1e, 0x7e, 0xe1, 0xf3, 0x58, 0x2c,
+ 0x8c, 0x32, 0x80, 0x76, 0x6e, 0xb2, 0x51, 0x75, 0xd5, 0xc3, 0x20, 0x3b,
+ 0xb5, 0xa7, 0x95, 0x52, 0xe4, 0x10, 0xad, 0xe0, 0x99, 0x5f, 0x6c, 0x62,
+ 0x90, 0x06, 0x0d, 0xd2, 0x6c, 0xb8, 0xa3, 0xa5, 0x8d, 0x38, 0x5f, 0x06,
+ 0x21, 0xee, 0x48, 0x40, 0xa3, 0x38, 0xd6, 0x6d, 0x56, 0x39, 0x4d, 0x25,
+ 0xdd, 0x04, 0x58, 0xc0, 0x78, 0x9c, 0xdd, 0x46, 0x7e, 0x70, 0x99, 0x56,
+ 0x85, 0xe8, 0x99, 0xe3, 0x4e, 0xf2, 0xda, 0xc6, 0xfb, 0x0d, 0x14, 0x38,
+ 0x36, 0xfe, 0x22, 0xbc, 0x77, 0x98, 0x2f, 0x66, 0xcc, 0x7d, 0x44, 0x99,
+ 0x07, 0xfe, 0xf2, 0x3e, 0x9b, 0xe4, 0xc1, 0x30, 0x5a, 0xb8, 0x29, 0xa6,
+ 0xfc, 0xfa, 0xab, 0x0d, 0x0d, 0x6a, 0xc3, 0xe2, 0x8f, 0x97, 0x89, 0x7c,
+ 0xcd, 0x25, 0x5a, 0x37, 0x2e, 0xf9, 0xa1, 0xef, 0xf5, 0x21, 0xdf, 0xd3,
+ 0x88, 0x91, 0xba, 0x1c, 0x99, 0xcb, 0x13, 0xe7, 0x69, 0xc0, 0xa3, 0x9b,
+ 0xef, 0xbb, 0x11, 0xa8, 0x6d, 0xdf, 0x77, 0xa3, 0x0b, 0xd0, 0xc2, 0xb6,
+ 0x48, 0x6f, 0xdb, 0xdd, 0xd9, 0x7b, 0x04, 0xcb, 0x4c, 0xd5, 0x38, 0x50,
+ 0x31, 0x48, 0x6f, 0xbd, 0xe8, 0x17, 0x72, 0x93, 0xee, 0xbe, 0xc7, 0x45,
+ 0xc3, 0xa7, 0x7b, 0xd6, 0x6e, 0x8e, 0xa0, 0xde, 0x7f, 0xe9, 0x46, 0xfb,
+ 0x6c, 0xbb, 0xdd, 0xfd, 0x3e, 0xb8, 0xee, 0x44, 0x96, 0x44, 0x1e, 0xc4,
+ 0x6b, 0xf3, 0xcb, 0x6c, 0x18, 0x19, 0x73, 0x48, 0x82, 0xc7, 0xf6, 0x52,
+ 0xc5, 0x19, 0x43, 0x1c, 0xbc, 0x4b, 0x5e, 0x8e, 0x12, 0xc6, 0xcf, 0x72,
+ 0x31, 0x72, 0xda, 0x7b, 0x89, 0x6c, 0xab, 0xc8, 0x95, 0x07, 0x37, 0x31,
+ 0xec, 0x3d, 0xa5, 0x1d, 0x25, 0x08, 0x32, 0x99, 0xe5, 0x94, 0xd0, 0x6c,
+ 0xac, 0x8c, 0xa5, 0x2f, 0xb4, 0xb7, 0x19, 0x18, 0x08, 0xe3, 0x10, 0x0f,
+ 0xab, 0xc2, 0x93, 0xc0, 0xdd, 0x82, 0x03, 0xe2, 0x33, 0x6a, 0x0a, 0x3f,
+ 0x70, 0xa5, 0x13, 0x47, 0xb2, 0xa5, 0x48, 0x42, 0x2f, 0x47, 0x24, 0x1d,
+ 0xa6, 0x23, 0x45, 0xc4, 0x8b, 0xa6, 0x14, 0x27, 0x37, 0x2c, 0xb2, 0xf9,
+ 0x5c, 0xaa, 0x9a, 0xe2, 0xf2, 0xc4, 0x66, 0x79, 0xca, 0x09, 0x3e, 0x80,
+ 0x9e, 0x6b, 0x38, 0x1b, 0x88, 0x12, 0x14, 0x30, 0xaf, 0xe9, 0x6a, 0xb9,
+ 0x63, 0xb2, 0xcb, 0x1a, 0xf2, 0xc7, 0x08, 0xdb, 0x34, 0x0c, 0xe6, 0xdf,
+ 0x00, 0x83, 0x53, 0xb6, 0x73, 0x4f, 0x33, 0x8c, 0x5d, 0xa0, 0x9e, 0x35,
+ 0xfc, 0x17, 0xf5, 0x37, 0x77, 0x1e, 0xfa, 0xe6, 0xab, 0xf5, 0xf8, 0xf5,
+ 0xdf, 0xbb, 0x8d, 0xed, 0x27, 0x61, 0xe3, 0xce, 0x7e, 0xda, 0xb0, 0xd2,
+ 0xd4, 0xeb, 0xae, 0x07, 0xb3, 0x03, 0xce, 0xcf, 0xce, 0xf7, 0xb7, 0x4c,
+ 0x49, 0x4f, 0xf2, 0x3c, 0x68, 0xa1, 0xcc, 0x48, 0x51, 0xa4, 0x9d, 0x10,
+ 0x3b, 0xd6, 0xe1, 0xa9, 0x6a, 0x89, 0x6f, 0xbb, 0x45, 0x0f, 0x5e, 0x42,
+ 0x66, 0x02, 0xea, 0x8f, 0x02, 0x91, 0x2d, 0xdc, 0x7a, 0x4a, 0x77, 0x2e,
+ 0x79, 0x10, 0x2c, 0x0f, 0x17, 0x79, 0xa8, 0xf4, 0x22, 0xb8, 0xf0, 0xde,
+ 0x60, 0x98, 0x16, 0x2d, 0x18, 0x1c, 0x53, 0x35, 0x14, 0x63, 0x4a, 0xe4,
+ 0xc2, 0x21, 0x88, 0x88, 0xdd, 0x18, 0x24, 0xe3, 0x45, 0x04, 0xec, 0x8f,
+ 0x92, 0x9e, 0x64, 0x1f, 0xa4, 0x40, 0x69, 0x23, 0x1d, 0xb0, 0x94, 0x6b,
+ 0x12, 0x82, 0x31, 0x0c, 0x8c, 0xcd, 0x8f, 0x63, 0x3f, 0x05, 0x6c, 0x9a,
+ 0xa0, 0x03, 0x80, 0x57, 0x8b, 0x54, 0x71, 0xba, 0x54, 0x70, 0x71, 0x6a,
+ 0x76, 0xc4, 0x61, 0x42, 0x69, 0x88, 0x30, 0xc2, 0xd7, 0xa7, 0xfd, 0x0b,
+ 0x27, 0xcd, 0xc0, 0xbf, 0xfb, 0x49, 0x01, 0xd3, 0xc2, 0x7c, 0x1c, 0x27,
+ 0xee, 0x40, 0x21, 0x9c, 0xbe, 0xec, 0x5f, 0x78, 0xd4, 0x8d, 0x28, 0xc2,
+ 0x07, 0x51, 0x1f, 0xe3, 0x23, 0x9d, 0xd2, 0xa9, 0xb4, 0x7b, 0x8c, 0x21,
+ 0x2a, 0xb9, 0x13, 0x64, 0x11, 0xe1, 0x78, 0x47, 0x1b, 0xe6, 0xee, 0x0f,
+ 0x02, 0x87, 0xf8, 0x27, 0xf6, 0xae, 0x08, 0x84, 0xa9, 0x06, 0x7d, 0x97,
+ 0x8b, 0x41, 0xac, 0xab, 0xa6, 0x38, 0x67, 0xe5, 0xdd, 0x74, 0x90, 0x63,
+ 0xec, 0x24, 0xc8, 0x66, 0xef, 0x7d, 0xce, 0xb5, 0x29, 0x74, 0xc5, 0x4b,
+ 0x54, 0xa4, 0x68, 0xb8, 0xb9, 0xae, 0x45, 0xf3, 0x0d, 0xa3, 0x94, 0xb0,
+ 0x36, 0xc9, 0x95, 0x85, 0x4f, 0xdf, 0x8b, 0xb8, 0x70, 0x21, 0xdc, 0x74,
+ 0x0d, 0x58, 0xb9, 0x39, 0x87, 0x0e, 0xd6, 0x41, 0x89, 0x31, 0xad, 0x43,
+ 0x81, 0x88, 0x57, 0x64, 0xb2, 0x38, 0xd4, 0x28, 0x25, 0xa0, 0x0b, 0xa1,
+ 0x3e, 0x02, 0xd4, 0x4c, 0xd9, 0xaf, 0x65, 0x46, 0x0d, 0x9c, 0xc9, 0x73,
+ 0x8c, 0x25, 0x97, 0x69, 0x9c, 0x8d, 0x18, 0x4d, 0xa8, 0x34, 0x7e, 0x70,
+ 0xde, 0x45, 0xae, 0x4d, 0x0a, 0xdc, 0x99, 0x72, 0x47, 0x08, 0x96, 0xbb,
+ 0x65, 0x27, 0xd9, 0xed, 0x57, 0x43, 0x53, 0xac, 0x95, 0x17, 0xaa, 0x87,
+ 0xe7, 0x8a, 0x21, 0x28, 0x54, 0xfb, 0x9a, 0xb2, 0xa1, 0xb9, 0x82, 0xc2,
+ 0xdb, 0x97, 0xcf, 0x4e, 0xcd, 0x7a, 0xc9, 0xfa, 0x10, 0xe2, 0xa3, 0x99,
+ 0x2a, 0xc2, 0x56, 0xeb, 0xdd, 0x42, 0x3b, 0xe2, 0x21, 0xa5, 0x2d, 0x66,
+ 0x19, 0xf4, 0x1f, 0xb1, 0xde, 0x38, 0x46, 0xa8, 0x66, 0xe0, 0x5e, 0x57,
+ 0x56, 0xe8, 0x29, 0x09, 0xac, 0x56, 0xd6, 0x40, 0x4e, 0xec, 0x7b, 0xcd,
+ 0xae, 0x68, 0x01, 0x1b, 0x5f, 0x1e, 0x26, 0x6b, 0x58, 0xd6, 0x47, 0x0f,
+ 0x93, 0x35, 0x2d, 0xaf, 0xab, 0x18, 0xda, 0x21, 0xf9, 0x8a, 0x21, 0x9c,
+ 0x8d, 0xf6, 0x12, 0x7d, 0x7f, 0xc5, 0x1d, 0xfc, 0xc7, 0x02, 0x11, 0xc8,
+ 0x96, 0x15, 0x8c, 0x22, 0xb8, 0xcf, 0x09, 0x97, 0xdd, 0x3d, 0x04, 0x11,
+ 0x6d, 0x9b, 0x0a, 0xb6, 0x78, 0x72, 0x37, 0x9a, 0xa7, 0x1c, 0xd4, 0x93,
+ 0x7a, 0x15, 0xed, 0xbc, 0x90, 0x32, 0x2f, 0x9b, 0xcf, 0xdf, 0x9c, 0xbd,
+ 0x8a, 0x2f, 0xce, 0xb6, 0x48, 0x35, 0xa7, 0x96, 0x97, 0xa4, 0x72, 0x96,
+ 0x2a, 0xfb, 0x3a, 0xd5, 0x6b, 0xc5, 0x51, 0xb3, 0x59, 0xa2, 0xdf, 0xc9,
+ 0xc2, 0x95, 0xd3, 0xf0, 0xf4, 0xad, 0xc1, 0x9d, 0x17, 0xb4, 0x42, 0x42,
+ 0x3a, 0x8a, 0x72, 0x70, 0x60, 0x86, 0x09, 0xaa, 0x84, 0x1a, 0xd0, 0x5e,
+ 0x07, 0xd4, 0x1a, 0x2c, 0xca, 0xbb, 0x48, 0x2a, 0xea, 0x94, 0x48, 0x8e,
+ 0x78, 0xc1, 0xfb, 0x2e, 0x28, 0xf6, 0xb5, 0x61, 0x8a, 0xb5, 0x96, 0x22,
+ 0xc7, 0x5a, 0x1d, 0x5c, 0x1a, 0xa1, 0xca, 0x81, 0x49, 0x25, 0x45, 0x91,
+ 0xdf, 0xa8, 0x20, 0x83, 0xcc, 0x16, 0x88, 0x75, 0x86, 0x91, 0x24, 0x25,
+ 0xe8, 0xb5, 0xed, 0xb5, 0x74, 0xa0, 0x33, 0xc4, 0x54, 0xe6, 0x82, 0xe1,
+ 0x65, 0x8b, 0x88, 0x62, 0xf7, 0xe3, 0x33, 0x22, 0xf5, 0x39, 0xa3, 0x40,
+ 0x39, 0x23, 0xde, 0xdf, 0x59, 0xb7, 0x60, 0x8b, 0x5b, 0x89, 0xac, 0x49,
+ 0x6f, 0xb8, 0x18, 0x71, 0x55, 0x2c, 0xb0, 0x1c, 0x50, 0x4b, 0x7a, 0xf2,
+ 0x29, 0x65, 0x2e, 0x21, 0x22, 0xad, 0xf3, 0x0e, 0x47, 0x24, 0x73, 0x6a,
+ 0x3f, 0xda, 0xe0, 0x6d, 0x91, 0x92, 0x2b, 0x89, 0xa9, 0xfa, 0xa3, 0xc7,
+ 0x71, 0xcb, 0x12, 0x24, 0x42, 0xe2, 0xd9, 0x18, 0x7a, 0x60, 0x10, 0x69,
+ 0x25, 0xfa, 0x0b, 0xf4, 0x35, 0xe2, 0x44, 0x9a, 0xf6, 0x1b, 0x21, 0x38,
+ 0x16, 0x71, 0x6f, 0xfc, 0xd4, 0x53, 0x18, 0xf1, 0x43, 0xbe, 0xa1, 0x2a,
+ 0xca, 0x7b, 0x26, 0x82, 0x43, 0x7b, 0x6b, 0x56, 0xdd, 0x45, 0x83, 0x82,
+ 0x00, 0xab, 0xb5, 0x28, 0x24, 0x36, 0x6d, 0xb1, 0x78, 0xd9, 0x6f, 0xd1,
+ 0xe4, 0x16, 0xfc, 0x14, 0x96, 0x7b, 0x22, 0x9f, 0x14, 0x29, 0x8b, 0x04,
+ 0x35, 0x95, 0xb2, 0x1d, 0xa4, 0x68, 0x5a, 0xe8, 0x30, 0x68, 0x3a, 0xda,
+ 0xe4, 0xa7, 0xfd, 0xeb, 0x65, 0x92, 0xa0, 0x59, 0xfc, 0xd6, 0xa6, 0x7c,
+ 0x24, 0x6c, 0x4d, 0xa0, 0xa8, 0xc1, 0xef, 0x92, 0x12, 0xae, 0x91, 0x7a,
+ 0x7b, 0x5b, 0x4b, 0x43, 0x16, 0x9a, 0x5b, 0xf5, 0x71, 0x6b, 0xb3, 0x34,
+ 0x5b, 0x7f, 0x08, 0x89, 0xd6, 0x46, 0x17, 0x93, 0xc5, 0xb0, 0x38, 0x30,
+ 0x7b, 0xbe, 0x16, 0xbd, 0x2e, 0x14, 0xfa, 0xd6, 0x21, 0xd6, 0x1a, 0x1e,
+ 0x72, 0x98, 0x50, 0x5f, 0xd6, 0x4a, 0x80, 0x72, 0x6e, 0xa9, 0x43, 0x60,
+ 0xc2, 0x70, 0x11, 0xd4, 0x05, 0xa1, 0x70, 0x39, 0x05, 0x12, 0xb1, 0xfc,
+ 0x47, 0xa1, 0x74, 0xf4, 0x51, 0x86, 0xae, 0x7e, 0x94, 0xc8, 0xb4, 0xd3,
+ 0x68, 0x53, 0x4b, 0xfd, 0x18, 0x30, 0xfc, 0x53, 0xf9, 0xea, 0xc0, 0x14,
+ 0x23, 0xc2, 0x1b, 0xb7, 0xd1, 0xdc, 0xfe, 0x8f, 0x3f, 0x5a, 0x99, 0x0b,
+ 0xcd, 0x63, 0x5b, 0x6d, 0x05, 0x35, 0x05, 0x26, 0x7d, 0x94, 0xeb, 0xbd,
+ 0x49, 0x03, 0xf6, 0xb4, 0x44, 0x3e, 0x62, 0x20, 0xb7, 0x4a, 0x8e, 0x18,
+ 0x7a, 0xb1, 0xd9, 0x17, 0x74, 0x99, 0xd2, 0xa5, 0x2c, 0x1b, 0xab, 0xb2,
+ 0x1b, 0x96, 0xd8, 0xb4, 0x15, 0x27, 0x83, 0x80, 0xff, 0xa5, 0x85, 0xdd,
+ 0xab, 0x2f, 0x93, 0x8d, 0xc7, 0x03, 0x85, 0xf6, 0x66, 0x26, 0x25, 0x66,
+ 0x2c, 0xe5, 0x86, 0x53, 0x06, 0xb2, 0x32, 0x92, 0xca, 0xa1, 0x92, 0x3c,
+ 0x44, 0xb7, 0x66, 0x49, 0x81, 0xb7, 0x28, 0x2c, 0x0c, 0x8b, 0x54, 0x2c,
+ 0xd0, 0xa5, 0x0a, 0xbc, 0x5c, 0x5f, 0x7a, 0x12, 0xc8, 0xd8, 0x61, 0x17,
+ 0x92, 0xc3, 0x16, 0x6c, 0x52, 0x52, 0x63, 0xa7, 0x18, 0xcb, 0x3a, 0x13,
+ 0xb6, 0x14, 0xf0, 0xfa, 0x12, 0xe4, 0x3a, 0x95, 0xb4, 0x24, 0xa8, 0x23,
+ 0x34, 0x9c, 0x63, 0xd8, 0x6b, 0x64, 0x44, 0xa1, 0x3f, 0x2a, 0xc1, 0xf6,
+ 0x5c, 0xd3, 0xae, 0x21, 0x6f, 0xcf, 0x15, 0xc9, 0xd4, 0x8e, 0x11, 0x08,
+ 0x08, 0x23, 0x90, 0x53, 0x61, 0xe4, 0x4b, 0xd6, 0x02, 0x6c, 0x7a, 0x0a,
+ 0xeb, 0x69, 0x14, 0xf2, 0x38, 0x25, 0x13, 0x0c, 0xb0, 0x01, 0x9c, 0x8d,
+ 0x5f, 0x44, 0x7e, 0xc8, 0x12, 0x27, 0x7b, 0x35, 0x31, 0x92, 0xc3, 0xc2,
+ 0x9f, 0xb0, 0x0b, 0x9e, 0x16, 0xa1, 0x15, 0x17, 0x9e, 0x25, 0x6d, 0x5e,
+ 0x71, 0x6e, 0x83, 0x32, 0xae, 0xcc, 0xca, 0x91, 0x00, 0x38, 0xae, 0xe5,
+ 0x85, 0x66, 0xa5, 0x84, 0x3b, 0x77, 0x7d, 0xc3, 0x8d, 0x65, 0x7f, 0x04,
+ 0xc5, 0xe8, 0xa0, 0x7a, 0xf3, 0xbb, 0x72, 0x08, 0xb0, 0x12, 0xab, 0xb4,
+ 0x5a, 0xcf, 0xa3, 0xf5, 0xd4, 0x39, 0x18, 0xcd, 0xfe, 0xce, 0x6e, 0x17,
+ 0xff, 0xdd, 0xeb, 0xb2, 0x62, 0xb5, 0xbf, 0xb3, 0x6f, 0x6a, 0xf3, 0xd5,
+ 0x0e, 0x09, 0x3d, 0x4e, 0x26, 0x6a, 0x22, 0xe9, 0xfd, 0xdb, 0xdb, 0x40,
+ 0x1d, 0xc8, 0x3a, 0x6c, 0x6f, 0xbc, 0x64, 0xac, 0x76, 0x21, 0x29, 0x62,
+ 0x6d, 0xe1, 0xed, 0xa5, 0x42, 0x6c, 0x46, 0x28, 0x5c, 0xe4, 0xa3, 0x20,
+ 0xe6, 0x3e, 0x55, 0x57, 0xc0, 0x2a, 0x21, 0x4a, 0x7c, 0x78, 0xff, 0xc8,
+ 0x96, 0xbb, 0x45, 0x67, 0x69, 0x13, 0x71, 0x59, 0xa4, 0xaa, 0x36, 0xcc,
+ 0xf2, 0xb6, 0x0d, 0xd9, 0xb0, 0xb6, 0xc9, 0x20, 0x5d, 0x08, 0x83, 0x31,
+ 0xa0, 0xd5, 0x52, 0x68, 0x19, 0x98, 0xd8, 0x01, 0xa1, 0xfd, 0x03, 0x89,
+ 0xe3, 0x1a, 0x7a, 0xc1, 0xa7, 0xfc, 0x85, 0xc2, 0x10, 0xf1, 0x5f, 0xfb,
+ 0xe1, 0x48, 0x58, 0x9e, 0xa1, 0x48, 0x2b, 0xc2, 0x2b, 0x74, 0x9d, 0x24,
+ 0x0a, 0x56, 0x8c, 0xf2, 0xf2, 0xa4, 0xad, 0xc4, 0x12, 0xc2, 0x96, 0x27,
+ 0x53, 0x67, 0x99, 0x4e, 0xa4, 0xfe, 0xe3, 0xa2, 0x4c, 0xef, 0x75, 0x93,
+ 0x2d, 0xbd, 0xc1, 0xac, 0x60, 0xbf, 0x96, 0x64, 0xaf, 0x70, 0xf9, 0xeb,
+ 0x5d, 0x5f, 0xa7, 0x6b, 0x3a, 0xff, 0x50, 0x9e, 0x9d, 0x68, 0x74, 0x4c,
+ 0x9c, 0x4c, 0xaa, 0xb8, 0xbc, 0x1e, 0xd6, 0xe5, 0x2a, 0xf4, 0xa1, 0xeb,
+ 0x0e, 0x1e, 0xca, 0x2f, 0x9e, 0x1b, 0x90, 0xaa, 0x29, 0x45, 0xa7, 0xcf,
+ 0x8e, 0xc4, 0x06, 0x13, 0x49, 0x5d, 0x28, 0xb5, 0xac, 0x93, 0xd7, 0x00,
+ 0x9b, 0x32, 0xc4, 0x20, 0x42, 0xfa, 0x68, 0x11, 0x08, 0xaf, 0x52, 0x5d,
+ 0xb3, 0x26, 0x54, 0xb4, 0x92, 0x31, 0x36, 0xe3, 0xb5, 0xad, 0x29, 0x67,
+ 0xa6, 0xc4, 0x9a, 0x55, 0x79, 0x5b, 0x02, 0xd8, 0xd8, 0x15, 0x48, 0x65,
+ 0x8f, 0x54, 0x11, 0x95, 0xd1, 0x35, 0x07, 0x12, 0x1d, 0x55, 0xc6, 0xc9,
+ 0x4c, 0xb7, 0x01, 0xce, 0xbe, 0x49, 0xc6, 0xb4, 0x0a, 0x94, 0x89, 0x8a,
+ 0x05, 0xa6, 0xd4, 0xe5, 0x55, 0x1b, 0x27, 0x9b, 0x85, 0xa7, 0x4e, 0xd6,
+ 0x9a, 0x93, 0xa5, 0xe6, 0xe1, 0x7d, 0x5e, 0x92, 0x0b, 0x5b, 0x8f, 0x12,
+ 0xe3, 0xf7, 0x47, 0xa4, 0xd1, 0x53, 0x0d, 0xcb, 0x68, 0x6f, 0xff, 0xcb,
+ 0x47, 0x5d, 0xfe, 0xfd, 0xf1, 0xce, 0x57, 0x7c, 0x7a, 0x5e, 0x9e, 0x5c,
+ 0x3c, 0x8f, 0x46, 0x05, 0x9c, 0xdd, 0xa6, 0xaf, 0x0a, 0x3f, 0x8b, 0xd3,
+ 0xa4, 0xb8, 0x4a, 0x8a, 0x0a, 0xcb, 0x55, 0xc7, 0xe5, 0xb4, 0x9a, 0xc7,
+ 0x3b, 0x3b, 0x2d, 0x59, 0x6c, 0x4d, 0x42, 0xf8, 0x5c, 0x98, 0xcf, 0xf5,
+ 0x51, 0x6c, 0x1c, 0xbd, 0xbd, 0x78, 0xf1, 0xf5, 0x1f, 0x36, 0xa2, 0x6c,
+ 0x9a, 0xcc, 0xd7, 0x97, 0xc8, 0x6a, 0x18, 0x47, 0x0d, 0xb8, 0x5a, 0x34,
+ 0x1d, 0xc4, 0xb8, 0xef, 0xd1, 0xa1, 0x24, 0x3e, 0xf9, 0xe8, 0xde, 0x44,
+ 0xe1, 0xd6, 0x79, 0x84, 0xb5, 0xc3, 0x59, 0x81, 0x95, 0x37, 0x6a, 0xf1,
+ 0xc7, 0x5e, 0x36, 0x64, 0x28, 0x8d, 0xa0, 0xe1, 0x37, 0x97, 0x0c, 0xcf,
+ 0x4d, 0xb6, 0x55, 0x54, 0x77, 0x5b, 0xec, 0x9c, 0xc6, 0x8e, 0x16, 0x83,
+ 0x29, 0xfa, 0x25, 0x47, 0x91, 0x5a, 0x2b, 0x42, 0xd4, 0x8c, 0x41, 0x1c,
+ 0x29, 0x5f, 0x1d, 0x93, 0xe4, 0x8e, 0x7b, 0x4f, 0x66, 0x7c, 0x0b, 0x49,
+ 0xb2, 0x4f, 0xd8, 0x69, 0x6d, 0x67, 0xff, 0x19, 0x33, 0x16, 0xed, 0x20,
+ 0x70, 0xb7, 0xbe, 0x75, 0x36, 0x17, 0x44, 0x88, 0x0b, 0x2e, 0x6d, 0x83,
+ 0x54, 0x7b, 0x7f, 0xbf, 0x36, 0xb5, 0x58, 0x0c, 0xe7, 0x9a, 0xd7, 0x4b,
+ 0x7f, 0xa3, 0xb4, 0xe8, 0xed, 0x3c, 0x89, 0x90, 0x2b, 0x76, 0xde, 0x02,
+ 0x56, 0xd7, 0xb7, 0xdd, 0x8a, 0xe9, 0xec, 0x17, 0xe3, 0x72, 0x72, 0x5a,
+ 0x2a, 0x27, 0x00, 0xca, 0x84, 0x7c, 0xa4, 0x3e, 0x0a, 0x7f, 0x33, 0x68,
+ 0x40, 0x9f, 0x7b, 0x33, 0x68, 0x10, 0xcd, 0xcd, 0xf8, 0x98, 0x7b, 0x81,
+ 0xbb, 0xed, 0xed, 0x05, 0x3e, 0x14, 0x93, 0x62, 0x8e, 0x26, 0x8e, 0x32,
+ 0xbc, 0x19, 0x3f, 0xb8, 0xc5, 0x45, 0x29, 0x07, 0x07, 0xab, 0xb4, 0xe9,
+ 0xb5, 0x0c, 0x22, 0x63, 0x36, 0x47, 0x97, 0x32, 0x2c, 0x93, 0xc5, 0xfd,
+ 0x0b, 0x85, 0xe4, 0xb1, 0xb8, 0x0d, 0x1c, 0x18, 0x73, 0xb2, 0x88, 0x75,
+ 0x0f, 0xf3, 0x19, 0x1a, 0xa2, 0x45, 0x51, 0x1e, 0xa3, 0x9d, 0x07, 0x79,
+ 0x6f, 0xa5, 0x61, 0x29, 0x2c, 0xee, 0x69, 0xfb, 0x1e, 0x88, 0x34, 0x99,
+ 0xcc, 0xdf, 0x1c, 0x9f, 0x5f, 0x44, 0x17, 0x67, 0xae, 0xa9, 0x97, 0x2b,
+ 0x65, 0x11, 0x6a, 0x7b, 0x51, 0xe4, 0x45, 0x50, 0xbc, 0xd1, 0x71, 0x0e,
+ 0x52, 0x2c, 0x5f, 0x9e, 0x9b, 0x0a, 0x33, 0x2c, 0xa7, 0x51, 0x7c, 0xb4,
+ 0x49, 0xc5, 0x6b, 0xac, 0x56, 0x00, 0x2f, 0x9a, 0x56, 0x2f, 0x6a, 0x46,
+ 0x21, 0xb0, 0xde, 0x46, 0x9a, 0x7f, 0x43, 0x7b, 0xe3, 0x88, 0x2d, 0x1e,
+ 0x9e, 0xe7, 0xa6, 0x9d, 0x8d, 0x0c, 0x10, 0x87, 0x49, 0x58, 0xe3, 0x68,
+ 0x78, 0x1c, 0x0c, 0x50, 0x5f, 0x36, 0x72, 0x56, 0x25, 0x44, 0xd9, 0xac,
+ 0xa0, 0xe9, 0x13, 0x18, 0x0b, 0x79, 0x89, 0x98, 0x48, 0xba, 0x54, 0xc6,
+ 0x9e, 0x25, 0x1e, 0x6f, 0x8e, 0xf9, 0x18, 0x4f, 0x92, 0xcb, 0x80, 0x05,
+ 0xbc, 0x19, 0x67, 0xa9, 0x02, 0x3f, 0x61, 0xa4, 0xf2, 0x66, 0xe2, 0x00,
+ 0xfd, 0xfd, 0x0c, 0x17, 0xc6, 0xa5, 0x9d, 0x21, 0x0b, 0x32, 0xce, 0x9d,
+ 0x02, 0xd9, 0x33, 0x04, 0xbc, 0x27, 0xfa, 0x17, 0x25, 0x8f, 0x4e, 0x5a,
+ 0x63, 0x5f, 0x97, 0x0a, 0x8b, 0x21, 0x5a, 0xfe, 0xe8, 0x99, 0x1a, 0xa1,
+ 0x4e, 0x1e, 0x74, 0xd4, 0x9b, 0x03, 0x75, 0x0f, 0x2c, 0x88, 0xd4, 0x55,
+ 0x8d, 0x03, 0xf8, 0x27, 0xff, 0x3e, 0x07, 0xbf, 0x0e, 0x08, 0xf6, 0x55,
+ 0xe0, 0xfe, 0xa5, 0xde, 0xd6, 0xe5, 0xc2, 0xec, 0x87, 0x91, 0x97, 0xba,
+ 0xec, 0x15, 0x20, 0x23, 0x1e, 0xca, 0x5a, 0xf0, 0x15, 0x87, 0x25, 0x79,
+ 0xb6, 0x08, 0x0e, 0x07, 0x7e, 0x93, 0xce, 0x53, 0x62, 0xde, 0x6e, 0x62,
+ 0x9d, 0x9b, 0xf9, 0xa6, 0x55, 0xc9, 0xc8, 0x2f, 0xa0, 0x9b, 0x17, 0x20,
+ 0xa1, 0x56, 0xca, 0x67, 0xc5, 0x56, 0xbc, 0x3c, 0x5c, 0xba, 0xc0, 0x5c,
+ 0x1c, 0xb5, 0x24, 0xd4, 0xcd, 0xbf, 0xbd, 0x79, 0xfe, 0x77, 0xa5, 0xac,
+ 0x2d, 0x4d, 0x02, 0x6d, 0xe9, 0xc7, 0x89, 0x96, 0xb3, 0xb1, 0x40, 0x52,
+ 0x57, 0xb3, 0xb6, 0x02, 0xfc, 0x97, 0x54, 0x8f, 0xf0, 0xb1, 0xdb, 0x46,
+ 0x39, 0x25, 0xb4, 0x6c, 0x62, 0x88, 0x28, 0x3c, 0xd7, 0x17, 0x0b, 0xf3,
+ 0x7e, 0xef, 0x31, 0xb9, 0xa1, 0x9e, 0x1f, 0x3f, 0xde, 0xdf, 0xdb, 0xdd,
+ 0xea, 0xd5, 0x8a, 0x88, 0xa2, 0xe8, 0xb4, 0x15, 0x9c, 0xa6, 0x3b, 0xcb,
+ 0xda, 0xda, 0x63, 0x20, 0x27, 0x1e, 0xbd, 0xcd, 0x93, 0x1f, 0xcf, 0x5f,
+ 0x7b, 0x73, 0x84, 0x39, 0x79, 0x41, 0xc0, 0x6d, 0x73, 0xb4, 0x0a, 0x67,
+ 0xad, 0x7d, 0xc5, 0xc9, 0xa0, 0xba, 0x8e, 0x81, 0x30, 0xdb, 0xe7, 0x45,
+ 0x86, 0x16, 0x9c, 0x0e, 0x2e, 0x49, 0xe7, 0x34, 0x9f, 0x8d, 0xf2, 0x59,
+ 0x7c, 0x36, 0x86, 0xb5, 0x4f, 0xb1, 0xfc, 0xe4, 0xca, 0xd9, 0xb9, 0xf4,
+ 0xf9, 0xe9, 0x2a, 0x32, 0xd8, 0x3e, 0x6a, 0x77, 0xee, 0x0c, 0xae, 0xf7,
+ 0x87, 0x9d, 0xb8, 0x20, 0x53, 0x88, 0x5f, 0x71, 0x52, 0xc4, 0xcc, 0xcf,
+ 0x38, 0x7a, 0x45, 0x1f, 0xf6, 0x90, 0xe1, 0x98, 0x1a, 0x58, 0x57, 0x0b,
+ 0xa9, 0xbd, 0x15, 0x55, 0xa1, 0x30, 0xb2, 0x9a, 0xe3, 0x8b, 0x1b, 0xfd,
+ 0xc8, 0x28, 0x5b, 0xdc, 0xe8, 0xfa, 0x4c, 0x8d, 0xe6, 0x77, 0xaf, 0xd8,
+ 0xb1, 0xae, 0x13, 0x89, 0xe6, 0x94, 0x4b, 0xae, 0xb3, 0xa7, 0x5b, 0x4a,
+ 0x9a, 0x24, 0x2f, 0xe8, 0x21, 0x85, 0x04, 0x85, 0x42, 0x63, 0xd9, 0x8a,
+ 0xf4, 0xea, 0xaf, 0x17, 0x17, 0x75, 0x55, 0x58, 0x43, 0xcc, 0xe8, 0xf5,
+ 0x4d, 0x0d, 0x93, 0x22, 0xff, 0x56, 0x22, 0xb9, 0x25, 0xb9, 0x77, 0x32,
+ 0x39, 0x9e, 0xac, 0x17, 0x99, 0xb2, 0x30, 0xf4, 0xa0, 0xb5, 0x71, 0x66,
+ 0x75, 0x5c, 0x41, 0x46, 0xe2, 0x45, 0x31, 0xb0, 0x1b, 0xc8, 0xf8, 0x37,
+ 0xf1, 0x40, 0x74, 0x51, 0x52, 0xae, 0x02, 0xe5, 0xa1, 0x27, 0xb3, 0x51,
+ 0xcd, 0x10, 0x45, 0x57, 0x21, 0x2d, 0x7e, 0x7a, 0x4b, 0x48, 0x56, 0xa3,
+ 0x34, 0x7a, 0xe2, 0x1b, 0x63, 0x8e, 0x78, 0x2a, 0x62, 0x79, 0x62, 0x37,
+ 0xac, 0x4a, 0x9a, 0x12, 0xfc, 0x44, 0xdb, 0xd3, 0x75, 0x82, 0xba, 0x30,
+ 0xa6, 0x8b, 0x58, 0xd2, 0xc6, 0x5f, 0x36, 0x82, 0x52, 0x18, 0x07, 0x79,
+ 0xb1, 0x01, 0x59, 0x73, 0xb6, 0xd0, 0xf0, 0x86, 0x81, 0x5e, 0x12, 0xb9,
+ 0x45, 0x91, 0x5d, 0xdc, 0xc8, 0xab, 0x8d, 0xc8, 0x04, 0x77, 0x35, 0x0d,
+ 0x62, 0x2b, 0x43, 0xbd, 0x60, 0x6a, 0x4e, 0x6c, 0x97, 0x8d, 0xc2, 0xe2,
+ 0x30, 0xac, 0xa6, 0x15, 0xdc, 0x04, 0x65, 0xd5, 0x8b, 0x29, 0x7f, 0x19,
+ 0xe0, 0x14, 0xaf, 0xcf, 0x2e, 0x4e, 0x0e, 0xc4, 0x58, 0x65, 0xab, 0x91,
+ 0x0b, 0xf4, 0x98, 0x24, 0x88, 0x12, 0xb2, 0x94, 0x60, 0xc8, 0x63, 0x86,
+ 0x9b, 0xec, 0x74, 0x37, 0xc0, 0x9f, 0x09, 0xa0, 0x12, 0x79, 0x1a, 0xc7,
+ 0x42, 0x54, 0xad, 0x89, 0x63, 0x84, 0xec, 0x2c, 0xa6, 0x4c, 0x26, 0x28,
+ 0xdc, 0x70, 0x5f, 0xa0, 0xc0, 0x7a, 0xa8, 0x68, 0xca, 0x5e, 0xcc, 0x45,
+ 0x55, 0xf4, 0x48, 0x88, 0x95, 0x18, 0x32, 0xfc, 0xf6, 0xc4, 0x16, 0xa0,
+ 0xd4, 0x1f, 0x87, 0xf0, 0x24, 0x1f, 0x14, 0xeb, 0xfc, 0x40, 0x9d, 0xc4,
+ 0x39, 0x84, 0xad, 0x11, 0x4f, 0xed, 0x7c, 0xd1, 0xc6, 0x2e, 0x35, 0x8f,
+ 0xb6, 0xd8, 0xa6, 0xd1, 0x73, 0xdd, 0x8a, 0xbc, 0x51, 0x99, 0x53, 0x6c,
+ 0x0b, 0x63, 0xab, 0x79, 0x5a, 0xad, 0x50, 0x6c, 0xbc, 0x15, 0x4f, 0x03,
+ 0x99, 0x2f, 0xbc, 0xfb, 0x3b, 0xf1, 0xdc, 0x0c, 0x94, 0x87, 0x94, 0x12,
+ 0xc0, 0x2f, 0x03, 0xec, 0xa2, 0xd4, 0x69, 0xcd, 0xc0, 0xe8, 0x29, 0x9e,
+ 0xa2, 0x35, 0xb9, 0xd5, 0xee, 0xee, 0xea, 0x38, 0xb2, 0xe8, 0x64, 0xb6,
+ 0xcf, 0xb8, 0x3a, 0x28, 0xb4, 0xff, 0x78, 0xc7, 0x29, 0xe8, 0xd9, 0x63,
+ 0x47, 0xfc, 0x92, 0xf4, 0x0d, 0x04, 0x28, 0xd9, 0x35, 0x65, 0xaf, 0x33,
+ 0xaa, 0x16, 0xc6, 0x41, 0xa9, 0xad, 0x2a, 0xab, 0x59, 0xc3, 0xba, 0xce,
+ 0xfa, 0xef, 0x55, 0x59, 0xcd, 0x20, 0xf6, 0x5d, 0x63, 0xed, 0x5a, 0x44,
+ 0x52, 0xaf, 0x5d, 0x6a, 0xc9, 0xa4, 0x96, 0x49, 0x18, 0x1d, 0x8e, 0x0b,
+ 0x86, 0x86, 0x4e, 0x26, 0x51, 0x4b, 0x6e, 0xf1, 0x2b, 0x21, 0x16, 0x7a,
+ 0x3e, 0x9b, 0xe9, 0x63, 0x6c, 0x2c, 0xe0, 0xb0, 0x48, 0x74, 0x94, 0x90,
+ 0xaf, 0xd7, 0x89, 0x3c, 0xa6, 0xb0, 0x73, 0xaa, 0xc4, 0x10, 0x4a, 0x55,
+ 0x16, 0xaa, 0x51, 0xe8, 0x5a, 0x21, 0x1b, 0xa4, 0x12, 0xf2, 0xf2, 0x0e,
+ 0x10, 0x29, 0x30, 0xfa, 0x35, 0x1f, 0x88, 0x4f, 0x0c, 0xd5, 0x46, 0xfc,
+ 0xd2, 0x0f, 0x59, 0x06, 0xc9, 0x0a, 0x96, 0x69, 0xb4, 0xe0, 0xa8, 0x04,
+ 0x1c, 0x88, 0xcd, 0xac, 0x2d, 0x38, 0x28, 0x2a, 0xba, 0xa4, 0xc2, 0xb7,
+ 0x94, 0x91, 0x1e, 0x69, 0xa9, 0x21, 0x14, 0x90, 0xf6, 0x7a, 0x3b, 0xdd,
+ 0x50, 0xc5, 0x5f, 0xa5, 0x9e, 0x84, 0xf0, 0x58, 0xca, 0x48, 0x6b, 0x22,
+ 0xd2, 0x3e, 0x97, 0x16, 0x06, 0x4c, 0x20, 0x55, 0x70, 0x61, 0x72, 0xf1,
+ 0xc3, 0x37, 0xef, 0xbe, 0x74, 0x58, 0x90, 0xb9, 0x33, 0xa3, 0xd6, 0x16,
+ 0xb0, 0xd8, 0x77, 0x2a, 0xdd, 0x5a, 0x51, 0x50, 0x1b, 0x80, 0x81, 0xd1,
+ 0xd3, 0x24, 0x80, 0x61, 0xa7, 0x7e, 0xb8, 0xdb, 0x84, 0x82, 0x47, 0xb3,
+ 0x60, 0x75, 0x1d, 0x03, 0xcc, 0xc2, 0xc5, 0xd9, 0x28, 0xda, 0xeb, 0xce,
+ 0x0b, 0xa3, 0xdd, 0x44, 0xdb, 0x39, 0x7c, 0xb1, 0x65, 0x13, 0xbd, 0x84,
+ 0x1d, 0x78, 0x5e, 0x44, 0xc2, 0x0f, 0x59, 0xa0, 0x83, 0x8e, 0xe1, 0xf5,
+ 0x91, 0xd6, 0x69, 0x9b, 0xe9, 0xab, 0x3a, 0xec, 0x5e, 0x29, 0xc1, 0x65,
+ 0x23, 0xe3, 0x72, 0x0b, 0x04, 0xf2, 0x4b, 0xd7, 0x96, 0xfc, 0x60, 0xcf,
+ 0xac, 0x63, 0x8e, 0xbe, 0x8b, 0xea, 0xa1, 0x93, 0xae, 0x21, 0xd7, 0xbc,
+ 0xf5, 0xf1, 0xf2, 0x3f, 0xd7, 0x8c, 0x53, 0x35, 0x23, 0xd8, 0x5d, 0x27,
+ 0xd2, 0xd4, 0xbc, 0xb5, 0xd7, 0xfb, 0x6a, 0x5d, 0x14, 0x7f, 0x09, 0x96,
+ 0x89, 0x95, 0x44, 0x58, 0xaa, 0xab, 0xaf, 0x62, 0xed, 0x0e, 0x48, 0xab,
+ 0x04, 0x89, 0x7e, 0x19, 0x0a, 0x3a, 0x65, 0xd1, 0x31, 0x84, 0x0b, 0xc7,
+ 0x80, 0x36, 0xa0, 0xee, 0xb4, 0x8d, 0xc8, 0x04, 0x0d, 0x35, 0xcf, 0xf0,
+ 0x2b, 0xf3, 0x84, 0xba, 0x07, 0x0c, 0x1a, 0xa7, 0xa9, 0xd4, 0x95, 0x09,
+ 0x74, 0x86, 0x02, 0x3e, 0x3f, 0x05, 0x21, 0x43, 0x60, 0xaa, 0x63, 0xbf,
+ 0xd0, 0x3c, 0xc6, 0x8b, 0x20, 0xed, 0xa3, 0x73, 0x21, 0xbc, 0xf9, 0xda,
+ 0xe5, 0x67, 0x4a, 0xfe, 0x35, 0xfd, 0x93, 0x4c, 0xb2, 0xd6, 0x26, 0xfe,
+ 0x37, 0x72, 0x5c, 0xcc, 0xb6, 0x9d, 0x4c, 0xd2, 0x89, 0xbb, 0x59, 0xa6,
+ 0x1c, 0x48, 0xf8, 0xa6, 0x3e, 0x91, 0x1a, 0x8b, 0xaf, 0x4d, 0xd5, 0x90,
+ 0xcd, 0xfe, 0xf9, 0xeb, 0x93, 0xef, 0xcf, 0xb6, 0x56, 0x39, 0x98, 0xea,
+ 0xb0, 0x68, 0x26, 0xf1, 0x29, 0xd1, 0x7c, 0x58, 0xc9, 0x68, 0x22, 0xe9,
+ 0xf8, 0xfb, 0x7e, 0x3f, 0x3e, 0x3a, 0x7f, 0x49, 0x59, 0x91, 0x7d, 0xf8,
+ 0x09, 0x3b, 0xda, 0xdc, 0x1f, 0x02, 0xd6, 0x8f, 0xde, 0x96, 0x82, 0x55,
+ 0x5c, 0xca, 0xcd, 0x2a, 0x31, 0x99, 0x9c, 0x21, 0x44, 0x5b, 0xad, 0xe5,
+ 0x81, 0xa4, 0xcd, 0x6d, 0x6a, 0xd0, 0x63, 0xd9, 0x3c, 0x89, 0x16, 0xfb,
+ 0x82, 0x07, 0xf2, 0xd9, 0x25, 0x9e, 0x46, 0x69, 0x77, 0xb4, 0x9c, 0x9a,
+ 0xe9, 0x0c, 0xea, 0x06, 0xde, 0xe9, 0xec, 0x11, 0x69, 0x43, 0xe7, 0x45,
+ 0xb7, 0x01, 0xe2, 0x4a, 0x24, 0x55, 0x1a, 0xf2, 0x53, 0x90, 0x52, 0x00,
+ 0x0d, 0xce, 0xb1, 0xa2, 0x4d, 0x8f, 0x40, 0xc9, 0x58, 0xe5, 0xdf, 0x88,
+ 0x9b, 0x29, 0x57, 0x07, 0x1b, 0x7c, 0x69, 0xa5, 0x33, 0xaa, 0x39, 0xe2,
+ 0x59, 0x28, 0xc8, 0xae, 0xa8, 0x81, 0x36, 0x6c, 0x6e, 0xbb, 0x5a, 0x35,
+ 0x3a, 0x0c, 0xd0, 0x23, 0x69, 0x7a, 0x28, 0x48, 0x6b, 0x6d, 0xd9, 0x78,
+ 0xf7, 0x28, 0xed, 0x28, 0x91, 0xc6, 0x92, 0xe8, 0x55, 0x94, 0x9a, 0x13,
+ 0x98, 0x95, 0xf7, 0xc9, 0xc6, 0x73, 0xcd, 0x7d, 0xb6, 0x48, 0xcd, 0xc7,
+ 0xaf, 0x3b, 0x60, 0xdb, 0x8e, 0x17, 0xd1, 0xc1, 0x9a, 0xbc, 0x70, 0x80,
+ 0x01, 0x5b, 0x94, 0x06, 0x56, 0x4d, 0x48, 0x8a, 0x01, 0x59, 0x92, 0xbc,
+ 0x2c, 0xe2, 0x6e, 0x27, 0x28, 0x54, 0xd3, 0x43, 0xfd, 0xa0, 0x55, 0xc5,
+ 0x90, 0x24, 0x6e, 0x4e, 0xcf, 0x0b, 0x21, 0x9f, 0x7a, 0x25, 0xc5, 0x4a,
+ 0xb8, 0x98, 0x40, 0xa7, 0x20, 0x19, 0x72, 0xd6, 0xd5, 0x56, 0xba, 0x88,
+ 0x56, 0x84, 0xe1, 0x2a, 0x46, 0xfc, 0x11, 0x82, 0x0c, 0x78, 0xc5, 0x10,
+ 0x7b, 0x35, 0xda, 0x4c, 0x06, 0x65, 0x3e, 0x59, 0x54, 0x64, 0xc4, 0x42,
+ 0x77, 0x16, 0xc2, 0x9c, 0x6c, 0xd9, 0xac, 0x3c, 0x6a, 0xd5, 0x4d, 0xce,
+ 0x0b, 0x26, 0xdc, 0x8b, 0x05, 0x89, 0x92, 0x51, 0xd5, 0x7d, 0xcc, 0xf1,
+ 0x3c, 0xc2, 0xb6, 0x71, 0xb3, 0xb9, 0x29, 0x6a, 0x69, 0x4e, 0x71, 0xeb,
+ 0xd7, 0x6d, 0xbe, 0xf8, 0x97, 0x1a, 0x35, 0x38, 0xc0, 0xa3, 0x04, 0x42,
+ 0xb7, 0xae, 0x11, 0xcf, 0x3f, 0xa1, 0x28, 0x6c, 0x23, 0xa0, 0xb4, 0xc8,
+ 0xca, 0xce, 0xaa, 0x7e, 0x3e, 0x59, 0xd9, 0x19, 0x04, 0x4f, 0x7f, 0x2d,
+ 0x9a, 0x72, 0xf7, 0xd5, 0xfa, 0x57, 0x99, 0xa0, 0xfe, 0xc2, 0xa8, 0x3c,
+ 0xb3, 0x71, 0x76, 0xd9, 0xab, 0x93, 0x87, 0x0f, 0x1b, 0xd0, 0x52, 0xc3,
+ 0xca, 0x36, 0xef, 0x53, 0xa3, 0xae, 0xb4, 0x57, 0x08, 0x93, 0xa9, 0x8e,
+ 0x91, 0xb0, 0xdc, 0xf1, 0xb1, 0xd4, 0x19, 0x02, 0x3f, 0xee, 0xf1, 0xcc,
+ 0x17, 0x01, 0x6f, 0xaa, 0xd9, 0x4f, 0x05, 0xbd, 0x44, 0x93, 0x5e, 0x42,
+ 0x59, 0x17, 0xc2, 0xc2, 0xa4, 0x7d, 0x03, 0xb9, 0x92, 0xa7, 0xe5, 0x0a,
+ 0xf6, 0x50, 0xa3, 0x93, 0x30, 0x8f, 0x68, 0x44, 0x90, 0xdc, 0x3f, 0x08,
+ 0xb2, 0xde, 0xfa, 0xc3, 0x88, 0xc1, 0x8c, 0x6d, 0x2d, 0x54, 0x4c, 0x97,
+ 0x94, 0x56, 0x60, 0x61, 0x3a, 0xfb, 0xeb, 0x99, 0x57, 0x9b, 0xbb, 0x6d,
+ 0x77, 0xd0, 0x53, 0xab, 0x2c, 0x70, 0x3c, 0xc5, 0x34, 0xd9, 0x8d, 0x8c,
+ 0x36, 0xdf, 0xc9, 0x2f, 0xc8, 0x8a, 0x7e, 0xc8, 0x66, 0xa0, 0xba, 0x94,
+ 0x5b, 0xca, 0x23, 0x24, 0x8b, 0xe4, 0x5e, 0x28, 0xdd, 0x28, 0x6f, 0x71,
+ 0x00, 0x86, 0x77, 0x49, 0xd9, 0x84, 0xa0, 0xea, 0x6e, 0x9e, 0xf9, 0xda,
+ 0xbd, 0xde, 0x47, 0xd4, 0x06, 0x5a, 0x04, 0x61, 0x2c, 0x6f, 0x67, 0xd9,
+ 0xad, 0x0d, 0x75, 0x34, 0x55, 0x6e, 0xdd, 0x08, 0x30, 0x51, 0x3e, 0x02,
+ 0xa3, 0x8b, 0xbc, 0x68, 0x14, 0x5c, 0x7c, 0x9a, 0xe8, 0xe6, 0xe3, 0x2d,
+ 0x1a, 0xdb, 0xb8, 0x9a, 0x6f, 0xee, 0x6e, 0x51, 0x8f, 0x82, 0xae, 0x2e,
+ 0x91, 0x96, 0x21, 0xcc, 0x48, 0x8e, 0x3b, 0x71, 0x8b, 0x87, 0x53, 0x24,
+ 0x18, 0xd6, 0xce, 0x95, 0xea, 0xcd, 0xc4, 0x4d, 0xe9, 0x59, 0x4a, 0x2e,
+ 0xe2, 0x4c, 0x79, 0xcc, 0x54, 0x0d, 0xf0, 0x6a, 0x41, 0xab, 0x47, 0xc6,
+ 0x89, 0xd0, 0x4a, 0x1c, 0xab, 0xb2, 0x99, 0xb9, 0xb6, 0xfb, 0x99, 0xa0,
+ 0x3a, 0xc3, 0xea, 0x4d, 0x46, 0x31, 0xa6, 0x31, 0x45, 0x97, 0x45, 0xee,
+ 0x8b, 0x4b, 0x08, 0xe6, 0x80, 0x6b, 0xb0, 0xc5, 0xb8, 0x01, 0xe9, 0xec,
+ 0x3a, 0x2b, 0xf2, 0x19, 0xd5, 0x12, 0xbb, 0x4e, 0x8a, 0x8c, 0x48, 0xbf,
+ 0xf3, 0xe2, 0xec, 0xd5, 0x49, 0xc7, 0x5c, 0xe6, 0x78, 0xd8, 0xc7, 0x19,
+ 0x7b, 0x0b, 0xbd, 0x6a, 0x23, 0xb5, 0x2d, 0x0d, 0x18, 0x30, 0x23, 0x10,
+ 0xef, 0x86, 0xef, 0xc5, 0xdb, 0x48, 0x45, 0x79, 0x53, 0x0b, 0x65, 0x9b,
+ 0x8f, 0x35, 0x2c, 0x92, 0x83, 0xed, 0x13, 0x25, 0x32, 0x0e, 0x00, 0xcf,
+ 0x6f, 0xbe, 0x08, 0x9c, 0x24, 0xf8, 0x0e, 0x77, 0x5c, 0x1c, 0x86, 0x92,
+ 0xf7, 0xc5, 0x71, 0xa0, 0xec, 0x67, 0x21, 0xe7, 0x19, 0xed, 0xbf, 0xeb,
+ 0x95, 0xd9, 0x98, 0xde, 0x79, 0x86, 0xb5, 0x74, 0x32, 0xde, 0xa8, 0x0b,
+ 0x47, 0x1b, 0x25, 0x2a, 0xc5, 0xd5, 0x86, 0x03, 0xf3, 0xed, 0xdc, 0xb5,
+ 0x3e, 0xe8, 0x6a, 0x4b, 0xf7, 0xcd, 0xc7, 0x98, 0xcc, 0xa7, 0x77, 0xd8,
+ 0x63, 0xf3, 0x3b, 0xd3, 0x37, 0x77, 0xbd, 0xd4, 0xf4, 0x2f, 0x27, 0xef,
+ 0xe3, 0x9a, 0xfe, 0x1b, 0x5c, 0x61, 0x0d, 0x6e, 0xb6, 0x2e, 0x72, 0x94,
+ 0xe1, 0x61, 0xdd, 0xda, 0x0d, 0xc6, 0x57, 0x5a, 0x28, 0xa6, 0xdb, 0x24,
+ 0xd6, 0xaf, 0xac, 0x56, 0x96, 0x58, 0xd0, 0x20, 0x8b, 0x01, 0xa0, 0xb9,
+ 0x2a, 0xd6, 0xcc, 0x27, 0x55, 0x1b, 0x9a, 0x7e, 0xf7, 0xb2, 0xcc, 0x87,
+ 0x59, 0x2d, 0xac, 0xd2, 0xdc, 0xaa, 0x5a, 0x2b, 0x8c, 0x8c, 0x17, 0xea,
+ 0xa7, 0x54, 0x21, 0x02, 0x9b, 0x6b, 0x49, 0x5e, 0x02, 0xd9, 0x82, 0xcc,
+ 0x11, 0xea, 0xc7, 0xcf, 0x0a, 0x2c, 0xa8, 0x65, 0xe3, 0xe5, 0xa4, 0x9f,
+ 0x2e, 0x63, 0x0b, 0xa8, 0x1d, 0x9f, 0xcc, 0xd0, 0xde, 0xe8, 0x9c, 0x08,
+ 0x66, 0x23, 0xd4, 0x93, 0x09, 0x69, 0x08, 0x9a, 0x07, 0x10, 0xbb, 0x89,
+ 0x2a, 0x55, 0x9c, 0x82, 0x00, 0xf6, 0x28, 0xae, 0xa2, 0xba, 0x00, 0xd8,
+ 0x5a, 0x42, 0xb1, 0x02, 0x9c, 0xf7, 0xa3, 0xa1, 0x5f, 0xb8, 0x11, 0x24,
+ 0xb9, 0x09, 0x32, 0x02, 0x08, 0x6e, 0x65, 0x48, 0x4d, 0x55, 0x74, 0x47,
+ 0x98, 0x14, 0xdb, 0x9d, 0x60, 0xdc, 0xc5, 0x35, 0x41, 0xe4, 0x5d, 0x73,
+ 0x3d, 0x35, 0x62, 0x5b, 0x76, 0x27, 0x5c, 0x1c, 0x26, 0x9f, 0x8b, 0xe8,
+ 0xe8, 0x28, 0xf9, 0xac, 0x90, 0x0a, 0x75, 0x51, 0xf4, 0x3d, 0x0f, 0xc2,
+ 0x86, 0xe7, 0x69, 0xbc, 0x3a, 0x39, 0x96, 0x1c, 0xcf, 0x92, 0xd7, 0x1c,
+ 0x79, 0x96, 0xba, 0xfa, 0x4b, 0x9c, 0x94, 0xc3, 0x2c, 0x13, 0x49, 0x1c,
+ 0xfd, 0x74, 0x18, 0xa2, 0x17, 0xc8, 0xee, 0xaa, 0x79, 0x54, 0xee, 0x44,
+ 0x90, 0x1d, 0xe5, 0x8c, 0x3c, 0xc0, 0x61, 0xcc, 0x14, 0xbe, 0xcf, 0xa1,
+ 0xbc, 0xe4, 0x87, 0x34, 0xd8, 0xbf, 0x40, 0xf9, 0xbe, 0x41, 0x4c, 0x1c,
+ 0x94, 0x2d, 0x55, 0x01, 0x6e, 0x6e, 0x6e, 0x76, 0x7b, 0xb5, 0x90, 0x1f,
+ 0x5e, 0x86, 0x18, 0xab, 0xc5, 0x95, 0x15, 0x89, 0x53, 0xf0, 0xcc, 0x5e,
+ 0x6f, 0xc9, 0xe9, 0x92, 0x57, 0x3e, 0x19, 0xa6, 0x6c, 0x08, 0x7a, 0xf5,
+ 0x3e, 0xc3, 0x0c, 0x32, 0x8d, 0x97, 0xcb, 0x9a, 0x6b, 0x7e, 0x05, 0xcc,
+ 0x62, 0xfb, 0x9e, 0x66, 0x8b, 0x80, 0x48, 0xec, 0xba, 0x9a, 0x1b, 0x45,
+ 0xd1, 0x80, 0xe3, 0x25, 0x93, 0x79, 0x30, 0x43, 0xa4, 0xbf, 0x65, 0xe5,
+ 0x3f, 0xa2, 0xe0, 0xa3, 0xd3, 0xf3, 0xd7, 0x84, 0xab, 0x04, 0x23, 0x4c,
+ 0x67, 0x25, 0x87, 0xa9, 0xe2, 0x67, 0x98, 0xaa, 0x3c, 0x73, 0xaa, 0xbe,
+ 0x7b, 0x2e, 0x20, 0x8a, 0x30, 0x0a, 0x56, 0xed, 0xe2, 0xa0, 0x78, 0x38,
+ 0x12, 0x88, 0x01, 0x66, 0x8c, 0x1e, 0xa2, 0x5d, 0xa9, 0x95, 0xa2, 0x79,
+ 0x8f, 0x42, 0x9f, 0xbd, 0xc8, 0x74, 0xad, 0x30, 0x8e, 0x89, 0x69, 0x9e,
+ 0xde, 0x6e, 0x56, 0x40, 0x36, 0x45, 0x5d, 0xbd, 0xf0, 0xe8, 0x2a, 0x35,
+ 0x55, 0x92, 0xc5, 0x46, 0x66, 0xc2, 0x8d, 0x24, 0x4a, 0x58, 0x62, 0x74,
+ 0x69, 0x57, 0x14, 0x62, 0x75, 0x85, 0xec, 0xcd, 0xeb, 0xfa, 0x31, 0x2f,
+ 0x27, 0x6c, 0x6f, 0xed, 0x8b, 0x49, 0x86, 0xb1, 0x2e, 0xea, 0x3c, 0x5e,
+ 0x84, 0xf3, 0x59, 0xb3, 0x80, 0xa0, 0xb6, 0x16, 0x2a, 0x21, 0x18, 0x7b,
+ 0xf6, 0xf4, 0xe2, 0x1e, 0xf0, 0x3c, 0x40, 0x4d, 0xcb, 0xc8, 0xf3, 0x75,
+ 0x97, 0x7b, 0x1d, 0x2c, 0x90, 0xe3, 0x87, 0x75, 0x13, 0xd6, 0x8d, 0xf8,
+ 0x09, 0xc2, 0x8b, 0x1f, 0x3b, 0x55, 0xc8, 0x10, 0xa7, 0x2d, 0x4d, 0xa6,
+ 0x20, 0x09, 0xcf, 0x34, 0x99, 0x9d, 0x4a, 0xc9, 0x95, 0x99, 0x97, 0x3b,
+ 0xb9, 0x48, 0xe4, 0x0a, 0x72, 0xa3, 0xbb, 0x9a, 0x29, 0xee, 0xdc, 0x0d,
+ 0xe6, 0xb0, 0xb8, 0xcd, 0x87, 0x90, 0x7a, 0xe8, 0x75, 0x83, 0xfb, 0x2b,
+ 0x1e, 0x53, 0x8e, 0x98, 0x15, 0x8d, 0x5e, 0x9a, 0x30, 0xe8, 0xe2, 0x68,
+ 0x86, 0xbd, 0x5a, 0xcc, 0xde, 0xc3, 0x10, 0xfc, 0x54, 0x1c, 0x4d, 0xd1,
+ 0xcc, 0xb8, 0x2a, 0x43, 0x42, 0xc5, 0x47, 0x19, 0xdd, 0xd7, 0xb6, 0x90,
+ 0x14, 0x05, 0x42, 0x9d, 0x02, 0x45, 0xbd, 0x6d, 0xda, 0xe6, 0x42, 0xa3,
+ 0x13, 0x03, 0x30, 0x8f, 0xca, 0x2c, 0xe0, 0x2a, 0xb2, 0xe6, 0x07, 0xef,
+ 0x47, 0xd8, 0xf7, 0xce, 0x46, 0xe0, 0x46, 0x1f, 0x40, 0xdd, 0x32, 0x9a,
+ 0xb5, 0x44, 0xaf, 0xdf, 0x75, 0xd9, 0x06, 0x75, 0x89, 0x01, 0x51, 0xf1,
+ 0xa0, 0x0e, 0xe3, 0x0b, 0x6d, 0x0e, 0xe1, 0xa6, 0x1d, 0x78, 0xe4, 0xe6,
+ 0x40, 0x17, 0x90, 0x62, 0x07, 0xcc, 0xf5, 0xd7, 0xc5, 0x4c, 0x8b, 0xb5,
+ 0x0a, 0xbf, 0x88, 0x73, 0x6c, 0x9b, 0x77, 0x16, 0x7e, 0xfb, 0x33, 0x67,
+ 0x2e, 0x4f, 0xf3, 0xca, 0xe3, 0x89, 0x9c, 0x48, 0x16, 0x73, 0x0c, 0x51,
+ 0x7c, 0xe6, 0x3c, 0x28, 0x61, 0x45, 0x18, 0x70, 0x50, 0xfb, 0x0c, 0x23,
+ 0x6b, 0xcc, 0xf5, 0xdf, 0x0d, 0x29, 0x03, 0xc9, 0x75, 0x9e, 0x8d, 0x4a,
+ 0x92, 0x3a, 0x10, 0x52, 0x8a, 0xdc, 0x70, 0xe2, 0xc3, 0x4f, 0x2a, 0x83,
+ 0x5d, 0x47, 0x39, 0xf7, 0x78, 0x22, 0x24, 0xb5, 0x3d, 0x81, 0x5b, 0xbd,
+ 0x0a, 0xc4, 0x5e, 0x26, 0xea, 0x74, 0xbe, 0x44, 0x94, 0x62, 0x05, 0xcd,
+ 0x51, 0x71, 0x86, 0x83, 0xbd, 0x5c, 0xe7, 0x3f, 0x65, 0x2b, 0x8b, 0x06,
+ 0xd6, 0x1c, 0x1d, 0xf4, 0x5c, 0x91, 0xe3, 0x19, 0xf4, 0x1a, 0xae, 0x19,
+ 0xc9, 0xa6, 0xbd, 0xde, 0xee, 0xce, 0x8e, 0xa4, 0xfd, 0x48, 0x66, 0x68,
+ 0xe5, 0x28, 0x88, 0xf4, 0x16, 0x66, 0x35, 0x05, 0x94, 0xca, 0x20, 0x22,
+ 0x80, 0x32, 0x24, 0xd1, 0x96, 0x29, 0xef, 0xef, 0x92, 0x24, 0x59, 0x31,
+ 0x10, 0xd0, 0xa8, 0xb5, 0x44, 0x20, 0x23, 0x00, 0xa1, 0x8d, 0x2e, 0xe0,
+ 0x04, 0xa3, 0xca, 0x01, 0xe2, 0x0a, 0x13, 0x82, 0xc0, 0x81, 0xa7, 0x33,
+ 0x02, 0x56, 0xe0, 0x1c, 0x55, 0xfe, 0x18, 0x96, 0xb9, 0x6b, 0x62, 0x21,
+ 0xee, 0xb1, 0xdd, 0x94, 0x60, 0xf8, 0x67, 0xb2, 0x5b, 0xb6, 0x9a, 0xed,
+ 0x1a, 0x67, 0x4e, 0x07, 0xf0, 0x51, 0x73, 0xfb, 0xa5, 0xd1, 0x07, 0x1c,
+ 0x3a, 0x1d, 0x8e, 0x52, 0x3a, 0xcb, 0xcd, 0x94, 0xd4, 0xdf, 0xea, 0x73,
+ 0x69, 0x3b, 0x8c, 0xce, 0x81, 0xe1, 0xeb, 0xa6, 0x79, 0x14, 0x6a, 0xf7,
+ 0xc3, 0x97, 0xfb, 0x9e, 0xf8, 0x62, 0xe0, 0x77, 0xdb, 0xae, 0x07, 0x03,
+ 0x98, 0x42, 0x99, 0x0d, 0x16, 0xad, 0x57, 0x92, 0x1a, 0x0c, 0xfa, 0x04,
+ 0x42, 0x40, 0xdb, 0x8c, 0xf7, 0x5e, 0xe8, 0x80, 0xd9, 0x04, 0xae, 0x74,
+ 0x66, 0xee, 0x9e, 0xe9, 0xb2, 0x32, 0xef, 0xf7, 0xa7, 0xca, 0x3a, 0x59,
+ 0x2e, 0xa3, 0x4a, 0x26, 0x4a, 0x3b, 0x11, 0x87, 0x2c, 0xcd, 0x87, 0xcb,
+ 0x83, 0xe6, 0x6a, 0xa8, 0xc5, 0x4e, 0x8c, 0xa9, 0x53, 0xed, 0xf4, 0x81,
+ 0xd9, 0xd1, 0xed, 0x03, 0x58, 0x4d, 0x56, 0x76, 0x48, 0xeb, 0xa2, 0x4b,
+ 0xba, 0x18, 0xce, 0x0d, 0xf2, 0x98, 0xb5, 0x0a, 0xb7, 0x2f, 0xc5, 0xed,
+ 0x09, 0x54, 0xf5, 0x44, 0x8a, 0x98, 0x4f, 0x60, 0x57, 0x0a, 0xb1, 0x91,
+ 0xcd, 0x50, 0x73, 0x88, 0x28, 0xb4, 0xfe, 0x35, 0xc8, 0x9b, 0x5f, 0xb4,
+ 0x2c, 0x00, 0x6e, 0xe7, 0x6b, 0x5f, 0x2e, 0xc6, 0x8f, 0xc4, 0x0b, 0xc5,
+ 0x82, 0x31, 0x05, 0xd2, 0x6b, 0xb0, 0x3d, 0x70, 0x0a, 0x0f, 0x80, 0x6d,
+ 0x20, 0x62, 0x87, 0x27, 0x1a, 0x3b, 0xe8, 0xb8, 0x0d, 0xc9, 0x16, 0xc7,
+ 0x45, 0x3d, 0x05, 0x5d, 0x47, 0xeb, 0xc8, 0xc4, 0x8e, 0x0c, 0xdc, 0xe6,
+ 0x56, 0xfc, 0x60, 0xa1, 0xd8, 0x8a, 0x95, 0x1f, 0xd3, 0x62, 0xf3, 0x20,
+ 0x99, 0x78, 0x36, 0x9f, 0xad, 0x8f, 0xf3, 0x4d, 0xa2, 0xaf, 0x2f, 0x11,
+ 0xcf, 0x3c, 0x81, 0x58, 0x11, 0x2b, 0x3f, 0x89, 0x48, 0x8c, 0x5d, 0x1a,
+ 0xd9, 0x65, 0x9a, 0xfa, 0x85, 0xfc, 0xce, 0x4c, 0x3c, 0x15, 0xe3, 0x02,
+ 0x21, 0x08, 0xbf, 0xa0, 0xd9, 0xf2, 0x5b, 0x11, 0xbd, 0xa5, 0xe2, 0xa7,
+ 0x54, 0x38, 0x45, 0xbb, 0x39, 0x49, 0xcf, 0x45, 0x6b, 0xce, 0x6a, 0xc2,
+ 0xc8, 0xff, 0x04, 0x6d, 0x9c, 0x14, 0x33, 0x81, 0xbb, 0x22, 0x69, 0xc8,
+ 0x24, 0x16, 0xa2, 0x81, 0xc2, 0xf0, 0x55, 0x82, 0x78, 0xf2, 0x54, 0xf4,
+ 0x32, 0x23, 0xd4, 0xca, 0xa0, 0xf7, 0x82, 0xb8, 0xa5, 0x59, 0x44, 0x89,
+ 0x3e, 0xba, 0xcf, 0x35, 0x1e, 0x0e, 0x64, 0x71, 0xb8, 0x65, 0x7d, 0xc9,
+ 0x98, 0x65, 0x9a, 0xf3, 0xdb, 0x58, 0x19, 0x22, 0xb0, 0x55, 0x57, 0x72,
+ 0xa3, 0xc1, 0x00, 0x49, 0xd7, 0xbd, 0x2b, 0x6b, 0xe6, 0x59, 0xd4, 0x9b,
+ 0x7f, 0x00, 0x89, 0x37, 0xc6, 0x17, 0xe7, 0x5c, 0x39, 0xf4, 0xe1, 0x68,
+ 0x97, 0x4c, 0xfa, 0x65, 0xd7, 0x6c, 0x61, 0x3d, 0xb7, 0xe2, 0xa9, 0x47,
+ 0xa5, 0xc2, 0x12, 0xb2, 0x51, 0x10, 0xe9, 0xde, 0x9a, 0x16, 0x70, 0xcc,
+ 0x1b, 0xa5, 0xc2, 0x87, 0x22, 0xb7, 0xd3, 0x12, 0x1e, 0x2f, 0x9f, 0xc1,
+ 0xa6, 0xa2, 0x49, 0xf9, 0xb2, 0xe7, 0x54, 0x14, 0xf6, 0x2b, 0xcb, 0x9b,
+ 0xe0, 0x26, 0xaa, 0xf2, 0xc0, 0xc5, 0x9e, 0x6c, 0xd0, 0x3e, 0x36, 0x01,
+ 0x52, 0x84, 0xbd, 0x89, 0x39, 0x3e, 0x17, 0x45, 0xcc, 0xab, 0x40, 0x5e,
+ 0xb0, 0xe4, 0xd0, 0x11, 0xf7, 0x27, 0xe4, 0xd6, 0xe8, 0x6a, 0x81, 0x89,
+ 0x5a, 0xc8, 0x4d, 0xab, 0x2a, 0x9d, 0xce, 0x2b, 0x8e, 0x90, 0x84, 0x43,
+ 0x8f, 0x43, 0xae, 0x8f, 0xb7, 0x0c, 0x54, 0x6e, 0xa2, 0x02, 0x1d, 0xe9,
+ 0x54, 0xb0, 0xb7, 0xa4, 0xa8, 0x04, 0xbe, 0x46, 0xf6, 0x7f, 0x2a, 0xfd,
+ 0x28, 0x09, 0xaf, 0x2c, 0x87, 0x80, 0xfc, 0x2b, 0x85, 0x74, 0xa7, 0xc9,
+ 0x9d, 0xe7, 0xb0, 0x20, 0x46, 0xa3, 0x58, 0xf2, 0x56, 0x83, 0xcb, 0xe8,
+ 0x75, 0x02, 0x71, 0x27, 0xbb, 0xa7, 0x3c, 0x50, 0x2e, 0x86, 0x98, 0x3f,
+ 0xf5, 0x6f, 0x3c, 0x68, 0x66, 0xd7, 0x5d, 0xb1, 0x24, 0xb0, 0xa1, 0x2b,
+ 0x8e, 0x97, 0x6d, 0x66, 0x79, 0x29, 0xf6, 0x75, 0x1d, 0x97, 0xa6, 0xdd,
+ 0x07, 0x1c, 0x29, 0x3b, 0xa6, 0xb5, 0x0e, 0x51, 0xad, 0x6c, 0x76, 0xfd,
+ 0x8c, 0x50, 0x20, 0x44, 0x74, 0xc8, 0xc7, 0xf5, 0xf6, 0x8e, 0x20, 0xb3,
+ 0x9a, 0xd1, 0x0e, 0xc7, 0x68, 0xae, 0x8c, 0xd5, 0x9e, 0x3f, 0x8a, 0x24,
+ 0xf9, 0x84, 0xbc, 0x45, 0x6a, 0xe5, 0x66, 0xdd, 0xc9, 0xc1, 0x64, 0x45,
+ 0xc4, 0x2b, 0x68, 0xb0, 0xeb, 0x0b, 0x1a, 0x78, 0x36, 0x6a, 0xaa, 0x07,
+ 0x79, 0xbe, 0xc8, 0xcc, 0x8d, 0x84, 0x47, 0x45, 0x84, 0xa4, 0xf2, 0xb0,
+ 0x5a, 0x73, 0xff, 0x80, 0x15, 0xaf, 0x13, 0x8c, 0x3e, 0x05, 0xe1, 0xa8,
+ 0x69, 0x48, 0xa0, 0x9e, 0x4d, 0xbd, 0x68, 0x3a, 0x8d, 0x3c, 0xb0, 0x2e,
+ 0xdf, 0x0e, 0xa6, 0x5e, 0x0c, 0x74, 0x30, 0x72, 0x2d, 0x36, 0x34, 0x40,
+ 0x2f, 0xb4, 0x0b, 0x9d, 0x04, 0x44, 0x74, 0x5a, 0xfd, 0x80, 0x66, 0x4b,
+ 0xa0, 0x46, 0xd8, 0x03, 0x25, 0x1c, 0x89, 0x73, 0x2f, 0xd1, 0x4c, 0x22,
+ 0x19, 0xc3, 0x30, 0x80, 0x38, 0x42, 0x15, 0xae, 0xf9, 0x3e, 0xc6, 0x41,
+ 0x39, 0xaa, 0xb5, 0x56, 0xb6, 0xe6, 0xce, 0x2a, 0xf4, 0x45, 0x35, 0xb2,
+ 0x08, 0x42, 0x81, 0xd4, 0x13, 0x76, 0xa7, 0x11, 0x8b, 0xa0, 0x11, 0xb1,
+ 0xea, 0x83, 0x9f, 0x76, 0xed, 0xaf, 0x07, 0x5f, 0xee, 0x48, 0xb1, 0x51,
+ 0xac, 0xf7, 0x6a, 0x9f, 0x68, 0x86, 0xb7, 0xc1, 0xb5, 0x8b, 0x7b, 0x86,
+ 0x0f, 0xc1, 0x4f, 0xf3, 0x9c, 0x47, 0x9a, 0x26, 0x0e, 0xf6, 0x31, 0xa8,
+ 0x3f, 0xdd, 0x46, 0x00, 0x4c, 0x1d, 0x82, 0x22, 0xe4, 0xc2, 0x0c, 0xa2,
+ 0x10, 0x8c, 0x1c, 0xf9, 0x95, 0xc9, 0x70, 0x73, 0x63, 0x96, 0xbf, 0xa3,
+ 0x5f, 0xd9, 0x0d, 0xb8, 0xf1, 0xfa, 0xec, 0xdd, 0xf9, 0x9b, 0xb3, 0x1f,
+ 0xff, 0xbe, 0xb1, 0x65, 0x13, 0x42, 0x8a, 0x74, 0xc3, 0xcf, 0xd3, 0x8c,
+ 0x6a, 0xdd, 0x5a, 0xd7, 0x29, 0xf7, 0xc1, 0x71, 0x5a, 0x42, 0x8f, 0xea,
+ 0x48, 0x60, 0xdc, 0x57, 0x0c, 0xaa, 0xf2, 0x64, 0x4d, 0x1a, 0x0c, 0x6d,
+ 0x3b, 0x10, 0x73, 0xa7, 0x83, 0xff, 0xea, 0x1c, 0x61, 0xa3, 0xc2, 0x31,
+ 0x87, 0x7a, 0x94, 0x3e, 0x17, 0xa8, 0xb4, 0xf6, 0xdf, 0x71, 0x2a, 0x18,
+ 0x77, 0xd6, 0x63, 0x13, 0xb7, 0x5d, 0x8d, 0x8c, 0xaa, 0xf1, 0x88, 0x6a,
+ 0x32, 0x8d, 0x6f, 0x06, 0x2b, 0xc2, 0x0e, 0x2f, 0x4e, 0x5f, 0x01, 0x9f,
+ 0x44, 0xf3, 0x89, 0x00, 0x29, 0x56, 0x77, 0x93, 0x54, 0xde, 0x26, 0x49,
+ 0x8b, 0x63, 0x52, 0xae, 0xc8, 0xa3, 0x75, 0xed, 0x89, 0x8c, 0x81, 0x78,
+ 0x3b, 0x83, 0xab, 0x29, 0x6e, 0x44, 0x53, 0x46, 0x19, 0x5a, 0xe4, 0xa4,
+ 0x7d, 0xa7, 0xf4, 0x65, 0x0b, 0x2e, 0x40, 0x7a, 0x0b, 0x2c, 0x8f, 0xe0,
+ 0x9f, 0xae, 0x52, 0x2e, 0x68, 0xb5, 0xca, 0xd2, 0xc1, 0x93, 0xfd, 0x14,
+ 0xd1, 0x6c, 0xd2, 0xf2, 0x87, 0x01, 0x6d, 0xf1, 0x7a, 0xd6, 0x62, 0xd8,
+ 0xe0, 0x83, 0xe6, 0x76, 0x19, 0x20, 0x38, 0xdd, 0x1e, 0xde, 0x1f, 0x2f,
+ 0xa6, 0x82, 0x13, 0x76, 0xe8, 0xbb, 0xfa, 0x57, 0x5e, 0x66, 0x11, 0xa1,
+ 0xca, 0xa0, 0xb2, 0x00, 0xa7, 0x3c, 0xbb, 0x9c, 0xb1, 0x6a, 0xf7, 0x2a,
+ 0x1b, 0x16, 0x79, 0x99, 0x8f, 0x4d, 0x15, 0x28, 0xd5, 0xf9, 0x5e, 0xbe,
+ 0xec, 0x47, 0x37, 0xe9, 0x40, 0xd1, 0x4d, 0x7b, 0x7e, 0x40, 0x19, 0xc3,
+ 0x18, 0x61, 0x34, 0x65, 0x91, 0xa5, 0x15, 0xee, 0xab, 0x42, 0x98, 0x74,
+ 0x23, 0x0c, 0xef, 0x2f, 0xca, 0x54, 0x0a, 0x8a, 0x90, 0xad, 0x1b, 0xda,
+ 0x1c, 0x4e, 0x48, 0x1e, 0x9a, 0xa7, 0xfe, 0x71, 0x9d, 0xb0, 0x64, 0x68,
+ 0x84, 0x19, 0x27, 0xa0, 0x98, 0x80, 0xa9, 0xc5, 0xbc, 0x92, 0x15, 0xb8,
+ 0x75, 0xa8, 0x7c, 0x4a, 0x38, 0xcb, 0x7b, 0x0c, 0xa2, 0xc8, 0xc7, 0xde,
+ 0xf1, 0x93, 0x34, 0x74, 0x23, 0x88, 0x21, 0x87, 0x1c, 0x20, 0x63, 0x1b,
+ 0xe5, 0x05, 0x25, 0xaf, 0x20, 0x0b, 0x91, 0x2f, 0xd3, 0xd9, 0x30, 0x5f,
+ 0x14, 0x08, 0x4f, 0x86, 0xc3, 0xbb, 0x83, 0xbb, 0xcd, 0xbb, 0x9e, 0x72,
+ 0x51, 0xe1, 0x71, 0x99, 0xad, 0x4e, 0x44, 0x48, 0x58, 0x52, 0xca, 0x9e,
+ 0x18, 0xb5, 0x95, 0x71, 0xa2, 0x55, 0x70, 0x5d, 0xb2, 0x1f, 0x16, 0x1a,
+ 0x14, 0x0f, 0x1e, 0x6c, 0xce, 0xb3, 0xec, 0x32, 0x04, 0xd3, 0x69, 0x62,
+ 0xfd, 0x09, 0xd7, 0xdd, 0x2a, 0x1e, 0x34, 0x22, 0x11, 0xd5, 0x0a, 0xe1,
+ 0x7a, 0x75, 0x3a, 0xe0, 0x02, 0x2f, 0xc1, 0xe0, 0xfc, 0x10, 0xf5, 0x7d,
+ 0xae, 0x20, 0x54, 0x24, 0xf9, 0x4f, 0x73, 0x62, 0x1f, 0x7c, 0x5c, 0x8d,
+ 0x1f, 0xcb, 0x59, 0x27, 0x73, 0x3c, 0xad, 0xb6, 0xee, 0xa8, 0xeb, 0x54,
+ 0x5f, 0x82, 0xb4, 0xf3, 0x16, 0xc3, 0x4c, 0xbb, 0xae, 0xfe, 0xb0, 0x62,
+ 0xcc, 0x1c, 0x23, 0x2b, 0xcc, 0xc4, 0x1a, 0x61, 0xa4, 0x30, 0x27, 0x91,
+ 0x92, 0x22, 0x26, 0x71, 0xec, 0xac, 0xcb, 0x66, 0x72, 0xfc, 0x60, 0x2f,
+ 0x1e, 0xa4, 0xa0, 0xee, 0x14, 0xd1, 0x61, 0x85, 0x2a, 0xc5, 0x3d, 0xf1,
+ 0x92, 0x22, 0xc9, 0x2d, 0x73, 0x32, 0x45, 0xbf, 0xe3, 0x66, 0x2e, 0x48,
+ 0x31, 0x41, 0x8a, 0x3c, 0x43, 0xcc, 0x9b, 0x46, 0x73, 0x7b, 0xbd, 0x9d,
+ 0x16, 0xcc, 0x24, 0xe2, 0x63, 0xb5, 0x36, 0x94, 0xe6, 0x1c, 0x37, 0x49,
+ 0x18, 0xf8, 0x8e, 0x4b, 0x24, 0x19, 0x40, 0x6b, 0x96, 0xfc, 0x58, 0x9c,
+ 0x13, 0x27, 0x7e, 0x2d, 0xd3, 0x1c, 0x41, 0x88, 0xc5, 0xe7, 0xe0, 0x99,
+ 0x15, 0xc8, 0x3c, 0x5b, 0xd8, 0x30, 0xee, 0x2a, 0x68, 0x8d, 0xf2, 0x86,
+ 0x2a, 0x75, 0x63, 0x34, 0x34, 0xbc, 0xd0, 0x60, 0x35, 0x66, 0x04, 0xc3,
+ 0x21, 0x55, 0xfc, 0xb8, 0xe4, 0x18, 0xcf, 0x37, 0xcf, 0x8f, 0x1b, 0xcd,
+ 0x3d, 0x79, 0xfa, 0x78, 0x27, 0x2c, 0x90, 0xd4, 0x77, 0xe8, 0x73, 0x41,
+ 0x19, 0xd5, 0x47, 0xd1, 0x99, 0x3e, 0x7f, 0xf7, 0x55, 0xef, 0xbb, 0xc7,
+ 0xe3, 0xf8, 0x51, 0x6f, 0xf7, 0xcf, 0xff, 0x78, 0xd5, 0xf9, 0x90, 0xa8,
+ 0xee, 0x1a, 0xa5, 0xd6, 0x0d, 0x56, 0x0d, 0x1b, 0x3d, 0x1b, 0x9a, 0x10,
+ 0x0e, 0x3b, 0x3a, 0x84, 0x7f, 0xbe, 0x59, 0x92, 0xf0, 0xa2, 0xbb, 0xcd,
+ 0xb2, 0xac, 0x0d, 0x8e, 0x44, 0x42, 0x12, 0x29, 0x5f, 0x00, 0xba, 0xf5,
+ 0x76, 0xf0, 0xcb, 0x51, 0xa1, 0x95, 0x63, 0xd4, 0x65, 0x99, 0xa3, 0xe6,
+ 0x48, 0x60, 0xf2, 0x50, 0x57, 0x43, 0xd1, 0xb2, 0xa2, 0x74, 0x29, 0x73,
+ 0x3e, 0xaa, 0x9a, 0xc8, 0x9c, 0x71, 0x94, 0x36, 0xd0, 0x12, 0x35, 0x9d,
+ 0xb7, 0x6f, 0x4e, 0x25, 0x4c, 0x88, 0x9f, 0x0c, 0x67, 0x0f, 0x18, 0x0f,
+ 0x43, 0xbd, 0x60, 0xcc, 0x62, 0x0e, 0x5c, 0xa7, 0xca, 0x26, 0xe2, 0x42,
+ 0x43, 0x1e, 0xbc, 0xbc, 0x76, 0x4a, 0x23, 0x15, 0x0d, 0x93, 0x68, 0xdd,
+ 0xc1, 0x19, 0x58, 0x76, 0x72, 0xf0, 0x75, 0x1b, 0x41, 0x47, 0x21, 0xaa,
+ 0xc2, 0xe8, 0x1f, 0xad, 0x97, 0x11, 0xc7, 0xec, 0x6e, 0x8b, 0x29, 0x99,
+ 0x11, 0x05, 0x04, 0x29, 0xa1, 0xd0, 0x16, 0x53, 0xee, 0x6c, 0xeb, 0xe7,
+ 0x8b, 0x29, 0x77, 0x06, 0xd1, 0xa9, 0xa6, 0xf3, 0x4e, 0x14, 0x9f, 0xad,
+ 0x47, 0xd4, 0x4d, 0x6f, 0x13, 0x93, 0xf5, 0x9f, 0xbb, 0x8e, 0xef, 0xd5,
+ 0x71, 0xdd, 0xf5, 0xa4, 0x64, 0x71, 0xd3, 0x28, 0x8d, 0x64, 0xff, 0xb4,
+ 0x4e, 0xf6, 0xae, 0x5f, 0x2b, 0x58, 0x68, 0xe8, 0x87, 0x02, 0x01, 0x74,
+ 0x35, 0x08, 0x20, 0x97, 0x87, 0x5c, 0x44, 0xf6, 0xb2, 0x1a, 0xc1, 0xd7,
+ 0x3d, 0x53, 0xd3, 0xa2, 0x50, 0xab, 0xd6, 0x3f, 0xff, 0xe5, 0xdb, 0x69,
+ 0x7f, 0xfa, 0x85, 0xfc, 0xaa, 0x29, 0x4a, 0x37, 0xe6, 0x36, 0x56, 0xa9,
+ 0xa6, 0xac, 0x49, 0x4d, 0x0c, 0xad, 0x8d, 0xfb, 0x22, 0x01, 0x80, 0x81,
+ 0xba, 0x45, 0xc8, 0x7e, 0xd9, 0x67, 0xb6, 0xf1, 0xbb, 0x0d, 0x89, 0x57,
+ 0x53, 0x97, 0x82, 0xb8, 0x85, 0x45, 0xd7, 0x90, 0x71, 0x2b, 0x61, 0x16,
+ 0x78, 0x1f, 0x24, 0x7e, 0xa1, 0x4e, 0x51, 0x09, 0x75, 0xb3, 0x8b, 0x94,
+ 0xd0, 0x58, 0x1d, 0x64, 0x1f, 0x29, 0x31, 0x6b, 0x2a, 0xeb, 0x8d, 0x55,
+ 0x4b, 0xc7, 0x51, 0x7a, 0x52, 0x22, 0xf9, 0xb6, 0x53, 0x32, 0x09, 0xf4,
+ 0x18, 0x71, 0x39, 0x9b, 0xb5, 0x44, 0x96, 0x75, 0x90, 0x20, 0x80, 0x1e,
+ 0xfe, 0x09, 0x02, 0x4e, 0xb7, 0xba, 0xc9, 0xff, 0xe5, 0xc6, 0x66, 0x75,
+ 0xd0, 0x32, 0xda, 0xc1, 0x29, 0xbc, 0xfb, 0xdd, 0x2e, 0x02, 0xd3, 0x75,
+ 0x9a, 0x8d, 0xe4, 0xe4, 0x04, 0x32, 0x54, 0x6d, 0x94, 0x6a, 0xb2, 0x6e,
+ 0xaf, 0xea, 0x12, 0x41, 0x92, 0xbb, 0x68, 0x66, 0xf8, 0x57, 0x0f, 0xff,
+ 0xfd, 0x69, 0x37, 0x7e, 0xfc, 0x8b, 0xed, 0xf6, 0x77, 0xbb, 0xef, 0x7e,
+ 0xb7, 0xd7, 0x09, 0x61, 0x0e, 0x3a, 0x18, 0xf3, 0x96, 0x3b, 0x26, 0x25,
+ 0x27, 0x65, 0xb3, 0x8c, 0x25, 0x49, 0x01, 0x36, 0x31, 0x9c, 0x98, 0x91,
+ 0xbf, 0x93, 0x18, 0x83, 0xd2, 0xb0, 0x6c, 0x48, 0x25, 0x20, 0x4d, 0x48,
+ 0x81, 0x35, 0xe1, 0x97, 0x85, 0x4d, 0x31, 0xe6, 0xa7, 0x72, 0x2b, 0x4f,
+ 0x1e, 0x9a, 0x39, 0xf1, 0x80, 0x38, 0x44, 0xac, 0x5f, 0xa2, 0xb5, 0x1c,
+ 0xfc, 0xf5, 0x90, 0x93, 0x0a, 0xf2, 0x76, 0x12, 0xd5, 0x02, 0xdd, 0xf2,
+ 0x68, 0x30, 0x88, 0x9c, 0xf8, 0xb6, 0x2f, 0x02, 0x21, 0x08, 0xc2, 0xc3,
+ 0xc8, 0xaa, 0xa9, 0xc1, 0x06, 0xf0, 0xa2, 0x1b, 0xa0, 0x29, 0x64, 0x5c,
+ 0x5a, 0xf6, 0x47, 0xb7, 0xb7, 0x67, 0xa8, 0xfa, 0x15, 0xd3, 0xd2, 0x4c,
+ 0xbc, 0x92, 0xb0, 0xdb, 0x1c, 0x39, 0x97, 0x89, 0x8b, 0xa5, 0xcf, 0xf4,
+ 0x48, 0xa0, 0xfc, 0x88, 0x22, 0x38, 0xfd, 0xe2, 0x0b, 0x1c, 0xc9, 0x00,
+ 0xf4, 0xe8, 0x1a, 0x43, 0xa7, 0xf5, 0x20, 0xa6, 0x32, 0xb0, 0x15, 0xbd,
+ 0x92, 0xb2, 0x65, 0x41, 0xdc, 0xa5, 0x70, 0x41, 0x57, 0x78, 0xa1, 0x68,
+ 0x71, 0x96, 0x08, 0xb6, 0x9c, 0x0d, 0xe2, 0x32, 0x6c, 0x9b, 0x45, 0x2f,
+ 0x51, 0x13, 0x8c, 0x86, 0x39, 0xb4, 0xd5, 0x3b, 0xbc, 0xd8, 0x77, 0xbc,
+ 0x66, 0x47, 0x77, 0xc0, 0xd6, 0xb8, 0x48, 0xb9, 0xa9, 0x32, 0xab, 0x76,
+ 0x73, 0xbd, 0x29, 0xcb, 0x68, 0x23, 0xde, 0x88, 0x36, 0x1d, 0x83, 0xe0,
+ 0x28, 0x29, 0xaf, 0xb6, 0x82, 0x17, 0x8a, 0x89, 0x8d, 0xb0, 0x7c, 0x6d,
+ 0x20, 0x06, 0x79, 0x14, 0x9b, 0x99, 0xa1, 0x79, 0x57, 0x6e, 0x1e, 0x71,
+ 0xac, 0x1f, 0xf9, 0x60, 0x9c, 0x82, 0x1b, 0x83, 0x7c, 0x94, 0x91, 0xb2,
+ 0x72, 0x27, 0xde, 0x70, 0x8b, 0x28, 0x60, 0x2e, 0x67, 0x1f, 0xc5, 0x64,
+ 0x7b, 0x94, 0x5e, 0x6f, 0xcf, 0x16, 0x93, 0xc9, 0xc1, 0x3d, 0xd6, 0x1e,
+ 0x56, 0xda, 0x3c, 0xdf, 0x7c, 0xfc, 0x8c, 0x4d, 0xe9, 0x92, 0xd5, 0x41,
+ 0xb4, 0x0e, 0x8f, 0x1d, 0xdc, 0xab, 0x51, 0x78, 0xd0, 0x8f, 0x4e, 0x95,
+ 0x21, 0x7f, 0xb2, 0xf8, 0xd4, 0x38, 0x8f, 0xee, 0x19, 0x7f, 0xf1, 0x30,
+ 0xce, 0xf8, 0xe1, 0xac, 0x6e, 0xcd, 0x51, 0xeb, 0x77, 0x7b, 0xa1, 0x80,
+ 0xd8, 0xfb, 0x5f, 0xea, 0xdd, 0x40, 0x20, 0x95, 0x7f, 0xcf, 0xb7, 0x47,
+ 0xec, 0xb8, 0xd2, 0xac, 0x86, 0xd9, 0xc6, 0xd9, 0x74, 0x0a, 0xb4, 0xe8,
+ 0xa7, 0x04, 0x73, 0x9c, 0xd8, 0x88, 0x80, 0x0c, 0x22, 0x13, 0x94, 0x6b,
+ 0x5d, 0x54, 0x01, 0x34, 0x73, 0x0d, 0xf4, 0x0e, 0xd6, 0xef, 0x95, 0x90,
+ 0x41, 0xb9, 0xbb, 0xa5, 0x8e, 0x08, 0xd7, 0xb3, 0x40, 0xe9, 0x8e, 0xfc,
+ 0xb0, 0x20, 0x4a, 0x12, 0xc4, 0xab, 0x0d, 0x5f, 0x21, 0x5a, 0x82, 0xde,
+ 0x63, 0xdf, 0x5b, 0x86, 0x21, 0xc2, 0x88, 0x2c, 0x38, 0x4c, 0x6b, 0x55,
+ 0x49, 0x6e, 0x92, 0x4c, 0x3d, 0x5b, 0x92, 0x2e, 0x8c, 0x98, 0xe9, 0xd6,
+ 0xb3, 0xc6, 0x54, 0xdb, 0x6c, 0x8e, 0xc4, 0xfe, 0xc4, 0x82, 0xcc, 0xdd,
+ 0x22, 0x4d, 0x53, 0x50, 0x24, 0x17, 0x08, 0x13, 0x24, 0x50, 0x37, 0xae,
+ 0xe6, 0x73, 0x57, 0x21, 0xac, 0x45, 0x24, 0xf8, 0xdb, 0x19, 0x7d, 0x74,
+ 0xc0, 0x3c, 0xbf, 0x8f, 0x75, 0xc5, 0xdc, 0xc0, 0x28, 0xe3, 0xff, 0x5e,
+ 0x76, 0x60, 0x76, 0x97, 0x9e, 0xa6, 0xb5, 0x22, 0xc9, 0x6d, 0xe7, 0xd3,
+ 0xe4, 0xb6, 0xee, 0xf3, 0xfd, 0xb2, 0xae, 0xe8, 0xb9, 0x0f, 0x06, 0x71,
+ 0x6d, 0x18, 0x0c, 0xbf, 0x7c, 0xcf, 0xbb, 0x39, 0xca, 0xed, 0xf1, 0x70,
+ 0x4e, 0x07, 0x8b, 0xb8, 0xf5, 0x91, 0x74, 0x97, 0x21, 0xc7, 0x60, 0x65,
+ 0xab, 0x02, 0x8b, 0xfc, 0xba, 0xa8, 0x57, 0x16, 0x3a, 0xde, 0x52, 0x30,
+ 0xf7, 0x59, 0x66, 0xb8, 0xbf, 0xc9, 0xcc, 0x3b, 0xf0, 0x04, 0xb2, 0xf0,
+ 0x19, 0xc8, 0xd3, 0xd7, 0x3f, 0x35, 0x4c, 0x08, 0xfa, 0x0b, 0xdb, 0x17,
+ 0x9a, 0x8b, 0xfd, 0xb9, 0xec, 0x0b, 0xb5, 0x41, 0x60, 0x28, 0x67, 0x0b,
+ 0x55, 0xae, 0x53, 0x19, 0xb6, 0x8e, 0xc1, 0x50, 0xa3, 0xb7, 0x7a, 0x24,
+ 0x4c, 0xed, 0xc1, 0xf6, 0x94, 0x4d, 0x01, 0x08, 0xa4, 0x42, 0x0a, 0x96,
+ 0x16, 0x98, 0x3b, 0x0a, 0x99, 0x97, 0x94, 0x8b, 0x98, 0x14, 0x92, 0xde,
+ 0xe7, 0x4b, 0x7b, 0x45, 0x7a, 0x89, 0xa5, 0xaf, 0xd0, 0x00, 0x96, 0x61,
+ 0x26, 0x2d, 0x56, 0xa4, 0x2e, 0xfe, 0x93, 0x38, 0x99, 0x73, 0x68, 0x3f,
+ 0x3e, 0x4e, 0xbc, 0x0f, 0x88, 0xb1, 0x1e, 0x75, 0x7c, 0x0a, 0x46, 0x65,
+ 0x16, 0x85, 0x99, 0x54, 0xad, 0x2c, 0xeb, 0x12, 0x9a, 0x89, 0xd1, 0x92,
+ 0x1c, 0x1d, 0xce, 0xaf, 0x8a, 0xa4, 0x4c, 0x7d, 0xb4, 0xcf, 0xfe, 0x8b,
+ 0x88, 0x82, 0x53, 0xce, 0xe1, 0x29, 0x7e, 0xc6, 0x68, 0x07, 0x4e, 0x2d,
+ 0xf0, 0xd6, 0x13, 0x59, 0x96, 0x9f, 0xad, 0x0a, 0x33, 0x75, 0xce, 0x39,
+ 0x93, 0x52, 0xa6, 0x7b, 0x7d, 0xf4, 0x13, 0x7a, 0xad, 0x35, 0xfb, 0x30,
+ 0x46, 0x8c, 0x84, 0x38, 0x29, 0x63, 0x8f, 0x0f, 0x5f, 0x34, 0x6b, 0x3c,
+ 0xa0, 0x9f, 0x91, 0x6a, 0x76, 0xfe, 0x63, 0x81, 0xa5, 0x33, 0xa9, 0xe6,
+ 0xe0, 0x76, 0xaf, 0xb7, 0x8d, 0xba, 0xf4, 0x36, 0xfc, 0xd0, 0xc4, 0x68,
+ 0x31, 0xb4, 0x35, 0x9a, 0x43, 0x0d, 0x8c, 0x00, 0x19, 0xa8, 0x8e, 0x16,
+ 0xe6, 0x6c, 0x4c, 0xee, 0x9c, 0xb4, 0xe5, 0xf2, 0x1f, 0x0b, 0x50, 0x3f,
+ 0x08, 0x69, 0x35, 0x2d, 0xa8, 0x78, 0x48, 0x3a, 0x75, 0x2c, 0xb5, 0x9e,
+ 0x3a, 0xa0, 0xb9, 0x1b, 0xa5, 0x54, 0x60, 0x22, 0x73, 0x83, 0x0b, 0xbd,
+ 0xca, 0xd8, 0x10, 0x54, 0xa8, 0x22, 0xab, 0x34, 0x88, 0x82, 0x8a, 0xca,
+ 0x24, 0xab, 0x8e, 0x9c, 0x2e, 0xc8, 0x47, 0x2f, 0xba, 0x66, 0x9b, 0x5e,
+ 0x9f, 0x10, 0xcc, 0xa0, 0x02, 0x9b, 0x8f, 0xbb, 0x00, 0xff, 0x9f, 0x56,
+ 0xc3, 0x6d, 0xf2, 0xa9, 0x8c, 0x96, 0xd6, 0x6d, 0xa0, 0x3c, 0xca, 0x98,
+ 0x0d, 0x8d, 0xb5, 0x53, 0xf5, 0x68, 0xaf, 0x71, 0xaa, 0x32, 0x60, 0x88,
+ 0xa3, 0xf9, 0x62, 0x80, 0x14, 0x74, 0x08, 0xb3, 0xbf, 0x0a, 0x60, 0x55,
+ 0x72, 0xd8, 0x17, 0x27, 0xab, 0x4a, 0x8e, 0x0d, 0x72, 0xdb, 0x85, 0x56,
+ 0xa8, 0x74, 0x38, 0xa2, 0xba, 0xe6, 0x0c, 0x1d, 0x6f, 0xfa, 0x68, 0x62,
+ 0xd4, 0x09, 0xa1, 0x73, 0x10, 0xa4, 0x2d, 0xbb, 0x32, 0xe6, 0x29, 0x1b,
+ 0xa0, 0x32, 0x95, 0x57, 0xd1, 0xcd, 0x87, 0xd8, 0x1e, 0xe4, 0xf0, 0x93,
+ 0xb4, 0x7c, 0xb2, 0x24, 0xfb, 0xa5, 0xce, 0x38, 0x58, 0xc4, 0x60, 0xfc,
+ 0x3a, 0x43, 0x80, 0x39, 0x9f, 0x9f, 0xbc, 0x42, 0x92, 0x7b, 0x76, 0xf2,
+ 0x46, 0x1c, 0x04, 0x58, 0x0a, 0x9e, 0x0a, 0xae, 0xb0, 0x01, 0xa6, 0x29,
+ 0x4b, 0x8c, 0xc9, 0xf9, 0xf9, 0xe4, 0x11, 0xb9, 0x28, 0x89, 0x19, 0x5c,
+ 0x25, 0x7b, 0x8f, 0x9f, 0xc8, 0xb0, 0xb5, 0xae, 0x2c, 0x19, 0xd4, 0x36,
+ 0xf8, 0xab, 0xed, 0x6d, 0x0e, 0xbb, 0x40, 0x97, 0xbb, 0xa7, 0xab, 0x53,
+ 0xe4, 0x0f, 0x3e, 0xfb, 0xa7, 0x8d, 0x16, 0x34, 0x1e, 0x75, 0x21, 0x71,
+ 0x58, 0x66, 0x44, 0xf1, 0xc8, 0x8c, 0x14, 0x74, 0xea, 0x48, 0xdf, 0x5d,
+ 0x37, 0x80, 0x97, 0x0b, 0x0c, 0x35, 0xeb, 0x2f, 0x0d, 0xd3, 0xa2, 0x62,
+ 0x84, 0x60, 0xb4, 0xa9, 0x51, 0x81, 0x15, 0x6c, 0x13, 0xaf, 0x4f, 0xad,
+ 0x11, 0x00, 0xb4, 0xe0, 0x2e, 0x0f, 0xc7, 0x39, 0x23, 0xad, 0x0f, 0xfd,
+ 0xaa, 0x68, 0x0c, 0x2a, 0x4f, 0x27, 0xce, 0x6d, 0x59, 0x6a, 0xeb, 0x64,
+ 0x95, 0x6b, 0xb6, 0xe6, 0xac, 0x26, 0x8e, 0xab, 0xa1, 0xdd, 0x5c, 0x0c,
+ 0x3c, 0x8c, 0x71, 0xe9, 0xd3, 0x30, 0x59, 0x0a, 0x54, 0x70, 0x20, 0x88,
+ 0x2c, 0xa3, 0xb0, 0x98, 0xdc, 0xce, 0x02, 0x78, 0x86, 0xc4, 0x71, 0x4e,
+ 0xf1, 0x79, 0x0c, 0x27, 0x64, 0x80, 0xb8, 0x19, 0x34, 0xf9, 0x8e, 0xd2,
+ 0xaa, 0x7c, 0x1e, 0x70, 0xf2, 0x6a, 0x1b, 0x09, 0x41, 0xbc, 0x80, 0x9e,
+ 0x99, 0xe1, 0x69, 0x6f, 0xff, 0xab, 0xde, 0xce, 0x41, 0x74, 0x06, 0xda,
+ 0x19, 0x2c, 0x7f, 0x37, 0xfa, 0x7e, 0xb6, 0xc0, 0xed, 0xc0, 0x39, 0x7f,
+ 0xdf, 0xff, 0x4b, 0x56, 0xf9, 0x2f, 0x3c, 0xda, 0xc7, 0x17, 0x5e, 0xf7,
+ 0xf9, 0xa1, 0x9b, 0x7c, 0x32, 0x86, 0x17, 0x03, 0x8f, 0x3d, 0xc5, 0xc7,
+ 0x80, 0xde, 0x46, 0x95, 0x07, 0x52, 0x2f, 0x04, 0xd6, 0x3e, 0xa8, 0x47,
+ 0x8f, 0x02, 0x83, 0xea, 0xae, 0xdb, 0x69, 0xd3, 0x46, 0x42, 0xea, 0x1d,
+ 0x12, 0xd9, 0x20, 0x19, 0xbe, 0x27, 0x82, 0x22, 0xa0, 0x57, 0x1e, 0x45,
+ 0xab, 0xf3, 0xa0, 0xc6, 0x30, 0x3e, 0xb5, 0xf4, 0xda, 0x0a, 0x12, 0x57,
+ 0x1b, 0x05, 0xfc, 0xb7, 0x96, 0xf1, 0xa4, 0xf1, 0xba, 0x39, 0xc5, 0xc3,
+ 0x74, 0x77, 0xf7, 0xcb, 0xc1, 0xe3, 0xdd, 0x2f, 0xbf, 0x7a, 0x3a, 0x7e,
+ 0xf4, 0xe8, 0xf1, 0xde, 0x68, 0xb8, 0xb1, 0xe6, 0x35, 0x8c, 0xe6, 0x13,
+ 0x68, 0x95, 0x1b, 0xac, 0xbb, 0xd6, 0x1a, 0x08, 0xe6, 0x52, 0xde, 0x28,
+ 0x1c, 0x1d, 0x54, 0x87, 0x05, 0x28, 0xa8, 0x98, 0x70, 0x45, 0xb5, 0x5b,
+ 0x9e, 0xee, 0xed, 0xef, 0x6e, 0x3f, 0xe9, 0x3d, 0xea, 0xed, 0x19, 0xb0,
+ 0x19, 0x46, 0xac, 0xaf, 0x28, 0x99, 0x3b, 0x10, 0x73, 0x4a, 0xf9, 0xf4,
+ 0xd9, 0x4c, 0xea, 0x34, 0x99, 0x4f, 0xc8, 0xc9, 0x66, 0x93, 0xd9, 0xb1,
+ 0x72, 0xd3, 0xae, 0x0b, 0x50, 0x4a, 0xbe, 0x61, 0xaf, 0x0a, 0xf8, 0x2c,
+ 0xc6, 0x41, 0x98, 0x48, 0x0f, 0x74, 0xaa, 0x0d, 0xb2, 0x7f, 0x2c, 0xb2,
+ 0x0a, 0x34, 0x30, 0x9c, 0x27, 0x06, 0xaf, 0x0c, 0x8a, 0xfc, 0xa6, 0x24,
+ 0x7d, 0x10, 0x96, 0x84, 0xe6, 0x40, 0x7c, 0xc2, 0x17, 0xcd, 0x05, 0x6a,
+ 0x1f, 0xaf, 0x72, 0xa7, 0xea, 0x02, 0xe1, 0x88, 0x66, 0xc4, 0xd2, 0xf1,
+ 0x89, 0x32, 0x2b, 0x2b, 0x60, 0xc4, 0xc0, 0xb8, 0x5e, 0xe4, 0x37, 0x48,
+ 0x61, 0x5d, 0x82, 0x48, 0x28, 0xfc, 0x50, 0x28, 0xae, 0xa8, 0xc8, 0x41,
+ 0xb6, 0x92, 0xda, 0x4e, 0x8b, 0x47, 0x81, 0x86, 0xf2, 0x01, 0xe7, 0xab,
+ 0x29, 0xee, 0x77, 0x54, 0x9b, 0xf0, 0x72, 0x95, 0x60, 0x9a, 0x26, 0x68,
+ 0xaf, 0x41, 0x2c, 0x4d, 0x8e, 0xb8, 0xc4, 0xf5, 0x13, 0x85, 0xb7, 0x05,
+ 0x05, 0x34, 0x24, 0x77, 0xf0, 0xae, 0x7f, 0x64, 0xe0, 0x0b, 0x69, 0x75,
+ 0x6d, 0x79, 0x43, 0x06, 0xe3, 0x80, 0x9f, 0xc6, 0xa3, 0xa8, 0x83, 0x8c,
+ 0x73, 0x5d, 0xff, 0xb2, 0xd4, 0xe4, 0xea, 0xda, 0x82, 0x5c, 0x2c, 0x8d,
+ 0xb6, 0xe1, 0xa3, 0xea, 0x0b, 0x0f, 0x26, 0xff, 0xfd, 0x8f, 0x4f, 0xfe,
+ 0x7b, 0xff, 0x97, 0xfc, 0xff, 0x3d, 0xe4, 0xbf, 0xf7, 0x49, 0xc8, 0x7f,
+ 0xef, 0x61, 0xe4, 0xbf, 0xf7, 0xf1, 0xc8, 0x7f, 0x77, 0x5d, 0xf2, 0xdf,
+ 0xbf, 0x0f, 0xf9, 0x03, 0xa5, 0x61, 0x6e, 0x5b, 0x9d, 0xfc, 0x1f, 0xad,
+ 0x45, 0xfe, 0x4c, 0xff, 0x74, 0x00, 0x5a, 0x4f, 0x00, 0x8e, 0xd9, 0xc5,
+ 0xa7, 0x86, 0xcb, 0x2b, 0x5c, 0x76, 0xed, 0xfe, 0x74, 0x96, 0xd4, 0x1a,
+ 0xf5, 0x6a, 0x36, 0xf0, 0x21, 0xfb, 0x64, 0x54, 0xb6, 0xff, 0x49, 0xa8,
+ 0x6c, 0xff, 0x61, 0x54, 0xb6, 0xff, 0x49, 0x98, 0xec, 0xee, 0x2a, 0x2a,
+ 0x2b, 0x52, 0x0e, 0x4e, 0xfc, 0x49, 0x83, 0x44, 0xa1, 0xaf, 0x5f, 0xc8,
+ 0xc5, 0x73, 0x80, 0x32, 0xde, 0x2f, 0x4d, 0xf5, 0x5d, 0x2a, 0xa3, 0x5b,
+ 0x6d, 0xae, 0x7f, 0x76, 0xfc, 0x97, 0xbe, 0x44, 0x38, 0x8a, 0xc0, 0xad,
+ 0x02, 0x39, 0xfb, 0x1b, 0x28, 0x84, 0x9c, 0x8b, 0x61, 0x7a, 0x7a, 0x1e,
+ 0x25, 0x6b, 0x46, 0x14, 0x1e, 0x6d, 0xe2, 0xa3, 0x23, 0xcc, 0xdd, 0x94,
+ 0xb8, 0x4b, 0xae, 0x14, 0xcc, 0x20, 0xe6, 0xe4, 0xc0, 0x95, 0xa6, 0xb5,
+ 0x52, 0x6a, 0x73, 0x25, 0x9c, 0xb1, 0x88, 0xfb, 0x78, 0x66, 0x5f, 0xd9,
+ 0xac, 0xae, 0x0a, 0x02, 0x0d, 0xa5, 0xc7, 0xb6, 0x22, 0x8b, 0xfd, 0xb8,
+ 0x74, 0x74, 0x32, 0xaa, 0x17, 0x68, 0xec, 0x40, 0xd5, 0x2e, 0x6a, 0x84,
+ 0x71, 0x3b, 0xa6, 0x5d, 0xf3, 0xad, 0xc6, 0x39, 0x84, 0x0a, 0x8e, 0x48,
+ 0xa5, 0x50, 0x67, 0xbd, 0xf1, 0x3d, 0xcf, 0xf1, 0x90, 0xdd, 0x72, 0xdd,
+ 0x7a, 0x53, 0x1c, 0x6e, 0x02, 0x07, 0x66, 0x46, 0xa8, 0x95, 0x1a, 0x46,
+ 0x6f, 0xda, 0x60, 0x50, 0x08, 0x54, 0xb2, 0xf3, 0xe1, 0xfb, 0xf2, 0x11,
+ 0x34, 0xd9, 0x74, 0x90, 0xf3, 0x17, 0x09, 0x7e, 0x23, 0x7f, 0x3c, 0xc6,
+ 0x8e, 0x29, 0x59, 0x82, 0xff, 0xbc, 0xa2, 0xbf, 0xb1, 0x4b, 0x2d, 0x7f,
+ 0xe9, 0xec, 0xf3, 0x30, 0xb8, 0xd0, 0x0e, 0x06, 0xad, 0x29, 0xd5, 0xf0,
+ 0x3a, 0xb7, 0x15, 0x13, 0xdd, 0x39, 0x63, 0xe6, 0x08, 0x81, 0xbf, 0x87,
+ 0xdc, 0x60, 0xce, 0xcd, 0x46, 0x2d, 0x3f, 0x0a, 0x2a, 0x16, 0xb4, 0x55,
+ 0x4e, 0xc5, 0x75, 0x2d, 0x82, 0x60, 0xbb, 0x91, 0xa0, 0x15, 0x77, 0x0b,
+ 0xa8, 0x04, 0xae, 0x67, 0xd4, 0x4a, 0xca, 0x72, 0x31, 0x35, 0xc6, 0xda,
+ 0xdd, 0x9d, 0x2f, 0x7d, 0x43, 0xfc, 0x5b, 0x05, 0xa0, 0xb4, 0xa5, 0xba,
+ 0x29, 0x6b, 0x8b, 0xe0, 0xe9, 0x06, 0xa9, 0x55, 0x6a, 0x02, 0x9d, 0x62,
+ 0x34, 0x4f, 0xc8, 0xee, 0x35, 0x4a, 0xd9, 0x5c, 0x30, 0x60, 0x93, 0x97,
+ 0x30, 0x37, 0x81, 0xdd, 0x92, 0xa4, 0x2e, 0x36, 0x34, 0x4a, 0xb4, 0x1c,
+ 0xe8, 0x4a, 0x9c, 0x9c, 0xe3, 0x45, 0x9e, 0xa1, 0x99, 0x5b, 0x63, 0x93,
+ 0xbf, 0xb5, 0x85, 0x53, 0x7f, 0xff, 0x68, 0x07, 0xf7, 0x54, 0x1b, 0x41,
+ 0x7f, 0xf3, 0x44, 0x21, 0x2c, 0x7e, 0xbf, 0x9f, 0x84, 0xc3, 0x19, 0x0d,
+ 0x13, 0xf8, 0x4c, 0x98, 0xce, 0xa6, 0x7f, 0x43, 0x98, 0x7c, 0xc4, 0x14,
+ 0x3b, 0x2f, 0xbe, 0x8d, 0xc4, 0x0f, 0x8d, 0x3f, 0xcc, 0xc7, 0x0f, 0x4c,
+ 0xc0, 0x10, 0xc7, 0x17, 0xf7, 0x55, 0x53, 0xc0, 0x1e, 0xd7, 0x0d, 0x5f,
+ 0x1e, 0x92, 0x48, 0xc0, 0x0d, 0x21, 0xe2, 0x9b, 0x96, 0xb7, 0x51, 0x18,
+ 0x76, 0x93, 0x73, 0x9a, 0xb0, 0xcd, 0x89, 0xc6, 0x6b, 0x3e, 0x84, 0xa6,
+ 0xa0, 0x43, 0x2f, 0x78, 0x58, 0x23, 0xc3, 0x38, 0xc7, 0x83, 0xed, 0x9a,
+ 0x5d, 0xaf, 0xba, 0x67, 0x32, 0xe9, 0x46, 0xe1, 0xb4, 0x51, 0x22, 0xa6,
+ 0x5a, 0x27, 0xa3, 0x22, 0xb9, 0x71, 0x8c, 0x5e, 0x5c, 0xb0, 0x6d, 0x4c,
+ 0x41, 0x5f, 0x36, 0xe9, 0x0b, 0xf3, 0xba, 0x30, 0xd9, 0xa0, 0x0c, 0xe4,
+ 0x8d, 0x94, 0xc3, 0x22, 0x95, 0x38, 0x5a, 0x2c, 0x79, 0x4d, 0x89, 0x05,
+ 0x58, 0x26, 0x1a, 0x84, 0xcf, 0xcb, 0x54, 0xab, 0x83, 0x98, 0x59, 0x6b,
+ 0xf5, 0x0e, 0x2a, 0x47, 0xd2, 0x0b, 0x20, 0x8e, 0x59, 0x0f, 0x8d, 0x26,
+ 0x26, 0x27, 0x52, 0xbb, 0x04, 0x5f, 0xed, 0x4a, 0x3e, 0xa5, 0x70, 0x8b,
+ 0x01, 0x19, 0x0d, 0x13, 0xcc, 0x8d, 0x2a, 0xaf, 0xb2, 0x79, 0x53, 0x10,
+ 0x8a, 0xbf, 0xce, 0xbf, 0x8e, 0xb7, 0x4c, 0xd5, 0xd5, 0xfc, 0x3a, 0x2d,
+ 0xc9, 0x4a, 0xc1, 0x00, 0x96, 0xc0, 0x25, 0xae, 0xc8, 0x24, 0x2c, 0x42,
+ 0x02, 0x81, 0x4f, 0x12, 0x0e, 0x8f, 0x54, 0xb4, 0x6c, 0xa9, 0x66, 0xc3,
+ 0xd1, 0xa5, 0xcc, 0xa1, 0x91, 0xd2, 0x61, 0xb5, 0xc6, 0x9c, 0xd6, 0x8d,
+ 0xb6, 0xbd, 0x08, 0x13, 0x34, 0xa2, 0xf2, 0x6e, 0x3a, 0xc8, 0x05, 0x12,
+ 0x33, 0x9f, 0xff, 0xa7, 0xb9, 0xbc, 0x1d, 0x7a, 0xfd, 0xb8, 0xe0, 0x0f,
+ 0x6e, 0xda, 0x71, 0x0d, 0x56, 0xe7, 0x5e, 0x87, 0xfc, 0x77, 0x6b, 0x07,
+ 0x6f, 0xc6, 0x94, 0xe7, 0x34, 0x92, 0xb8, 0x9a, 0xba, 0xd0, 0x02, 0x17,
+ 0x4c, 0xac, 0x97, 0xc6, 0xa1, 0xde, 0x37, 0xdf, 0xac, 0x44, 0x4e, 0x34,
+ 0x37, 0xd3, 0x58, 0xcc, 0xbb, 0xc8, 0x95, 0x09, 0x66, 0x94, 0x14, 0xbc,
+ 0x72, 0x78, 0x95, 0x4e, 0x19, 0xfc, 0xc6, 0x87, 0xf7, 0x04, 0x29, 0x73,
+ 0xc6, 0xb4, 0x8a, 0x31, 0x83, 0x33, 0x63, 0x03, 0x8b, 0x9c, 0x0a, 0xc1,
+ 0x52, 0xac, 0x51, 0xaa, 0xfe, 0x45, 0xc7, 0xd0, 0xfc, 0xc9, 0xbb, 0xb7,
+ 0xaf, 0xfb, 0x6f, 0xcf, 0x63, 0xaf, 0xb8, 0xef, 0x9b, 0x8b, 0x93, 0x67,
+ 0x98, 0x81, 0x77, 0x71, 0x76, 0x7c, 0x76, 0x1a, 0x6d, 0xee, 0x6e, 0x2d,
+ 0x25, 0x24, 0x43, 0x3a, 0xa6, 0xa8, 0xba, 0x75, 0x24, 0x33, 0x57, 0x33,
+ 0xa3, 0xd8, 0xc4, 0x55, 0xf6, 0x5b, 0xfb, 0x41, 0x4e, 0x5c, 0xc3, 0x3d,
+ 0x22, 0x36, 0xd5, 0x4b, 0xb8, 0xf1, 0x4b, 0x32, 0x5d, 0x4b, 0x2b, 0x6e,
+ 0x76, 0x0f, 0xa5, 0x52, 0x06, 0xaa, 0xdd, 0x75, 0x29, 0x96, 0x84, 0xa3,
+ 0xf3, 0x1d, 0xac, 0xd8, 0xb6, 0x4b, 0xc6, 0xdd, 0xb4, 0xcf, 0xe6, 0xd3,
+ 0xae, 0x8d, 0x82, 0xd1, 0x2d, 0xc6, 0xf6, 0x4e, 0x59, 0x25, 0x5e, 0xe3,
+ 0xdb, 0x36, 0x45, 0x0c, 0x5a, 0x22, 0xd5, 0xa5, 0xee, 0x3d, 0x79, 0xdc,
+ 0xb0, 0xe2, 0xd9, 0xe7, 0x2c, 0xa9, 0x96, 0x61, 0x5a, 0x35, 0xc4, 0xca,
+ 0xc5, 0x38, 0x6e, 0x90, 0xb5, 0x99, 0x57, 0xf0, 0x40, 0x6a, 0xe0, 0x68,
+ 0x3e, 0x33, 0x4a, 0x53, 0x0f, 0xcf, 0xbf, 0x27, 0x1e, 0xf0, 0x1b, 0xa3,
+ 0x74, 0x96, 0xb1, 0xb8, 0x61, 0xc6, 0x2e, 0x50, 0xf7, 0x92, 0x73, 0x09,
+ 0x0f, 0xe0, 0xb7, 0x0e, 0x4d, 0x50, 0x2d, 0x1f, 0x3f, 0x01, 0x83, 0xdf,
+ 0xc6, 0x4d, 0x46, 0x14, 0x5b, 0x3b, 0x26, 0x6c, 0x0f, 0x6f, 0x6f, 0xaa,
+ 0x65, 0xdd, 0xbe, 0x1d, 0x5d, 0x29, 0x4e, 0x43, 0xdc, 0x98, 0xa4, 0x6d,
+ 0x5c, 0x44, 0x96, 0xaf, 0x9d, 0xb9, 0xb4, 0x04, 0xdc, 0xd6, 0x17, 0x11,
+ 0x03, 0xbc, 0xba, 0xb8, 0x73, 0x5d, 0xde, 0x3e, 0x11, 0x0d, 0x96, 0xec,
+ 0xe0, 0x77, 0xf5, 0x82, 0xad, 0x02, 0xd0, 0x86, 0x43, 0xe1, 0x51, 0x31,
+ 0x76, 0x32, 0x8d, 0xa6, 0x4b, 0x80, 0xbb, 0x38, 0xb8, 0xe7, 0x66, 0x6c,
+ 0x1e, 0xd2, 0x07, 0xc7, 0x28, 0x6e, 0x6a, 0x45, 0x8d, 0x27, 0x8f, 0x7b,
+ 0x7b, 0x5b, 0xb5, 0x00, 0x4b, 0x0c, 0x41, 0x83, 0xa5, 0xfa, 0x23, 0xfe,
+ 0x54, 0x2c, 0x21, 0xfc, 0x9d, 0xa7, 0xe1, 0x19, 0x79, 0xf8, 0x2e, 0x31,
+ 0xe5, 0x94, 0xba, 0x8a, 0x96, 0xc5, 0x27, 0xfe, 0x32, 0xcf, 0x47, 0x52,
+ 0xb0, 0x83, 0x0b, 0x74, 0xb4, 0x59, 0xdd, 0x9d, 0x35, 0xfa, 0xcc, 0xe7,
+ 0x8b, 0x07, 0xf1, 0x75, 0x63, 0x93, 0xd6, 0x50, 0x63, 0xb1, 0x15, 0xef,
+ 0x10, 0xad, 0x3c, 0x3e, 0xab, 0x4e, 0x0f, 0xd7, 0x66, 0x27, 0x97, 0x24,
+ 0xc7, 0x9f, 0xab, 0x38, 0xd2, 0xf3, 0x6f, 0x54, 0x79, 0x8b, 0x08, 0x3c,
+ 0xc5, 0x55, 0x22, 0x27, 0xdd, 0x24, 0x1d, 0x93, 0x96, 0x42, 0x20, 0xd5,
+ 0x5d, 0xfa, 0x92, 0x02, 0x3a, 0x4d, 0x2a, 0x6d, 0xb0, 0xe6, 0x1a, 0xb5,
+ 0x91, 0x0c, 0x5d, 0xad, 0xcf, 0x94, 0xd3, 0xdc, 0x00, 0xba, 0xd8, 0xe8,
+ 0x1a, 0x7c, 0xf8, 0xc9, 0x1d, 0x45, 0xff, 0x65, 0xb7, 0x0a, 0x2a, 0xf4,
+ 0x5b, 0x5a, 0xe4, 0x7e, 0xcc, 0x3a, 0x09, 0x85, 0x5a, 0x2b, 0x0f, 0x0d,
+ 0x31, 0xd7, 0xc0, 0x78, 0xe9, 0xd6, 0x36, 0x1f, 0x62, 0xaf, 0xde, 0x79,
+ 0xfa, 0x23, 0xcc, 0x0d, 0x81, 0xb5, 0xe5, 0x1a, 0x30, 0xa3, 0xc9, 0xa8,
+ 0x84, 0x68, 0xa6, 0x51, 0xc6, 0xce, 0xf9, 0x16, 0x58, 0x39, 0x82, 0xe3,
+ 0xf6, 0x0c, 0x34, 0xa4, 0x88, 0x8c, 0x50, 0xb1, 0xb6, 0xe8, 0x57, 0x86,
+ 0xc3, 0x8f, 0x51, 0xd0, 0x30, 0xf5, 0xfc, 0x24, 0xb9, 0xc6, 0xbf, 0x97,
+ 0x62, 0x90, 0x38, 0xd2, 0xd9, 0x5d, 0x7d, 0x40, 0x98, 0xa9, 0x0a, 0x22,
+ 0x1d, 0xbb, 0x26, 0x6d, 0x19, 0x0f, 0x8b, 0x8e, 0x60, 0x87, 0xe8, 0x0f,
+ 0xa9, 0x3e, 0xe6, 0x10, 0x57, 0xfa, 0xda, 0x2c, 0x03, 0xb3, 0x81, 0xfa,
+ 0x62, 0x6c, 0x52, 0xdd, 0x62, 0x0d, 0x94, 0xa6, 0x2e, 0xef, 0xb3, 0x0c,
+ 0x54, 0x7d, 0x94, 0xec, 0x0b, 0xe5, 0x62, 0xf0, 0x2b, 0x01, 0x42, 0xe6,
+ 0x8c, 0x39, 0x25, 0xab, 0x20, 0xb6, 0x1d, 0xd8, 0x55, 0x78, 0x80, 0xc3,
+ 0x27, 0x2a, 0x4c, 0xae, 0x0f, 0x35, 0x47, 0xf1, 0xdb, 0x99, 0x93, 0x58,
+ 0x64, 0x29, 0x8c, 0x46, 0xb4, 0x0c, 0xd0, 0xf7, 0xe0, 0x8b, 0x16, 0xf6,
+ 0x1d, 0x8f, 0xf1, 0x28, 0x72, 0xca, 0x6c, 0x43, 0x80, 0xe0, 0xb5, 0xe4,
+ 0x44, 0x72, 0x03, 0xe4, 0x80, 0x8f, 0xb7, 0xb6, 0xa5, 0x5c, 0xb8, 0xec,
+ 0xfe, 0x11, 0x7f, 0xf8, 0x73, 0xa8, 0xe3, 0x52, 0x60, 0xca, 0xa4, 0x70,
+ 0x42, 0x7c, 0x9c, 0x58, 0x2c, 0xbd, 0xde, 0xd6, 0x81, 0xc3, 0x3d, 0x96,
+ 0xb7, 0x4d, 0x3c, 0x63, 0x8d, 0x0e, 0xde, 0x8a, 0x18, 0x27, 0xa9, 0xc1,
+ 0x5a, 0x27, 0xc9, 0x21, 0x7a, 0xf8, 0x6d, 0xb4, 0x18, 0xa2, 0xed, 0x52,
+ 0xa0, 0x90, 0x6a, 0x8a, 0x7a, 0x53, 0x6d, 0x1b, 0x16, 0xd9, 0x9c, 0x0d,
+ 0x52, 0x65, 0x32, 0x46, 0x20, 0x8c, 0x02, 0xff, 0xc1, 0x8d, 0xa6, 0x3c,
+ 0x16, 0xc6, 0x61, 0xb0, 0x68, 0x2e, 0xf3, 0xbc, 0x42, 0x3f, 0x3b, 0x1d,
+ 0xf5, 0x51, 0xe2, 0x6d, 0xfe, 0x25, 0x9c, 0xf7, 0x45, 0xe9, 0x6e, 0x89,
+ 0xaa, 0x4a, 0xd8, 0x2c, 0x87, 0x03, 0xa3, 0xe4, 0x26, 0x39, 0xaa, 0x1c,
+ 0xc0, 0xe4, 0x30, 0xba, 0x60, 0x2e, 0x0d, 0xa7, 0xb6, 0x92, 0x89, 0x57,
+ 0x79, 0x24, 0xa1, 0x49, 0x2e, 0x2b, 0x1e, 0x6e, 0xa5, 0x44, 0x37, 0xa2,
+ 0xbd, 0x6e, 0x30, 0xed, 0x46, 0x06, 0xa0, 0x83, 0x0c, 0x75, 0x16, 0x0c,
+ 0xd5, 0x2f, 0xcd, 0xc1, 0xfa, 0x24, 0x25, 0x61, 0x61, 0x44, 0xde, 0x0c,
+ 0x03, 0x05, 0x66, 0x1c, 0x7d, 0x20, 0xe6, 0x13, 0x65, 0xd4, 0x38, 0x4c,
+ 0x02, 0x32, 0x99, 0xa1, 0x16, 0x3c, 0x4c, 0xfd, 0x3c, 0x72, 0xca, 0x41,
+ 0x98, 0x57, 0x2d, 0xc5, 0xd7, 0x94, 0x82, 0x3e, 0x5b, 0xb4, 0x56, 0x93,
+ 0x7e, 0xbb, 0x25, 0x9c, 0xa4, 0x87, 0x5c, 0x81, 0x72, 0x91, 0xba, 0x02,
+ 0xa7, 0x07, 0x45, 0xa8, 0x69, 0xd0, 0x92, 0x48, 0xbc, 0x5c, 0xae, 0x9c,
+ 0x63, 0x81, 0x02, 0xe0, 0x25, 0x8b, 0xac, 0x22, 0x62, 0x6c, 0xe0, 0x42,
+ 0x28, 0x18, 0x01, 0x9b, 0x4d, 0xa7, 0x53, 0x2f, 0xc1, 0x79, 0xa6, 0x01,
+ 0x23, 0x26, 0xb1, 0x8b, 0x93, 0x29, 0x49, 0xa4, 0x13, 0x43, 0x29, 0x91,
+ 0x0e, 0x9b, 0xc9, 0x58, 0x21, 0x12, 0x10, 0x11, 0x54, 0x39, 0xc3, 0xee,
+ 0x87, 0x6d, 0x93, 0x14, 0x02, 0xb4, 0x3f, 0x1b, 0xc5, 0xc0, 0xfd, 0xe6,
+ 0xcb, 0xcd, 0xf7, 0xee, 0x8c, 0x3f, 0x41, 0x7a, 0x7a, 0xbd, 0x7d, 0xfd,
+ 0x9b, 0x32, 0x89, 0x6d, 0xc6, 0xfa, 0x08, 0xed, 0x52, 0xac, 0x7b, 0x3d,
+ 0xd0, 0x12, 0x65, 0x7e, 0xa9, 0xa5, 0x8b, 0xf3, 0x27, 0xa3, 0x06, 0xde,
+ 0x40, 0xed, 0xc9, 0x25, 0x9b, 0xac, 0xaa, 0x2e, 0xed, 0xc8, 0x77, 0xdc,
+ 0x6c, 0x7d, 0x93, 0xed, 0xee, 0xea, 0x6e, 0x7a, 0xf2, 0x5f, 0x6d, 0x6f,
+ 0x65, 0x5b, 0xb9, 0xec, 0x18, 0x0f, 0x94, 0x4c, 0x15, 0x33, 0x41, 0x7f,
+ 0x71, 0x7a, 0x62, 0xc3, 0x89, 0xb7, 0xc9, 0x53, 0xc2, 0xa3, 0xa2, 0xba,
+ 0x11, 0x91, 0x3c, 0x69, 0x38, 0x82, 0xde, 0x41, 0x61, 0x4a, 0x0c, 0xd8,
+ 0x8a, 0xe9, 0xf6, 0xa2, 0x8e, 0x70, 0x60, 0xd9, 0x8a, 0x2a, 0x39, 0xee,
+ 0xf2, 0x7e, 0x2a, 0x3a, 0xe1, 0xd6, 0xff, 0x0d, 0x54, 0x12, 0xaa, 0xb3,
+ 0xd5, 0x46, 0x27, 0xc3, 0x04, 0x03, 0xb2, 0xc2, 0xc9, 0xa9, 0x7d, 0xe1,
+ 0xc2, 0xb1, 0x3e, 0x85, 0xb7, 0xbe, 0xe6, 0xf4, 0x3b, 0x4e, 0x0f, 0x8a,
+ 0x9b, 0x6b, 0x49, 0x57, 0x6e, 0xf4, 0x73, 0x5f, 0x5e, 0xfb, 0x29, 0x14,
+ 0x0e, 0x3b, 0x8a, 0xe3, 0x23, 0x2e, 0x1b, 0x54, 0x21, 0x66, 0xff, 0xad,
+ 0x59, 0xf0, 0xb5, 0x96, 0xbf, 0x81, 0x2e, 0x31, 0x4c, 0x30, 0xc2, 0x90,
+ 0xdc, 0x53, 0xdc, 0x89, 0xfc, 0x4a, 0x71, 0x87, 0xb4, 0x11, 0x2e, 0xb4,
+ 0x4f, 0xc3, 0x66, 0xd4, 0x6a, 0x5a, 0xae, 0x35, 0x1e, 0x4c, 0x9c, 0x77,
+ 0xf7, 0x88, 0x1e, 0xfa, 0xa0, 0x3d, 0xa2, 0x16, 0x3e, 0xfb, 0x1e, 0xd1,
+ 0x28, 0xb6, 0x0d, 0x9c, 0xb0, 0x64, 0xb6, 0x7f, 0xb4, 0x8d, 0xd2, 0xdd,
+ 0x71, 0x9c, 0x89, 0x91, 0x9c, 0x15, 0xee, 0xdb, 0xda, 0x69, 0xbc, 0x30,
+ 0xb8, 0x96, 0xfd, 0x81, 0x16, 0xe3, 0xea, 0x6e, 0x9e, 0x46, 0x87, 0xf8,
+ 0xef, 0x92, 0x3d, 0x32, 0x0f, 0x7e, 0xc8, 0x36, 0x99, 0x46, 0x42, 0x3b,
+ 0x65, 0xb0, 0x5d, 0x58, 0x11, 0xc2, 0xcd, 0xc2, 0xdd, 0xf2, 0x52, 0xb1,
+ 0x3f, 0xb4, 0x26, 0x76, 0x73, 0x2c, 0x18, 0x1b, 0xeb, 0x7e, 0xca, 0x61,
+ 0xb6, 0x0f, 0xdd, 0x34, 0x2b, 0xdd, 0x48, 0x73, 0xbd, 0x7b, 0x9c, 0x12,
+ 0x62, 0x64, 0xf8, 0xef, 0x4f, 0xc2, 0x53, 0x7f, 0x59, 0xbe, 0x13, 0x0f,
+ 0xd9, 0x84, 0x7a, 0x6f, 0x9f, 0x0f, 0xf3, 0xe0, 0x93, 0x2d, 0x34, 0xed,
+ 0xe6, 0x7d, 0x56, 0x3b, 0x9b, 0x5f, 0xa1, 0xf9, 0xe0, 0x30, 0x04, 0x57,
+ 0xe8, 0xac, 0xb3, 0x3c, 0xf6, 0x21, 0xf4, 0x2e, 0x4d, 0x7c, 0x46, 0x5b,
+ 0x95, 0x33, 0x8a, 0x93, 0xe3, 0x67, 0x2f, 0x4e, 0x62, 0xf8, 0xb7, 0x7f,
+ 0x14, 0x1f, 0x9d, 0xf4, 0xf7, 0x1e, 0x3f, 0x89, 0x8f, 0x8f, 0x5f, 0x7d,
+ 0xf9, 0xa1, 0x1b, 0x20, 0xcd, 0x53, 0xc1, 0x96, 0x45, 0x81, 0x4e, 0xaa,
+ 0xe6, 0xa5, 0x71, 0x8f, 0x2d, 0x29, 0x26, 0xb6, 0x66, 0xe6, 0x92, 0x2d,
+ 0x91, 0xc7, 0x3e, 0x64, 0x4b, 0xa4, 0x89, 0xcf, 0xbc, 0x25, 0x32, 0x8a,
+ 0x22, 0xfd, 0x95, 0xca, 0xcb, 0x7f, 0xc8, 0x75, 0xae, 0xdb, 0x20, 0x4d,
+ 0xae, 0xbf, 0xf8, 0x2c, 0x60, 0xad, 0x74, 0x2d, 0x91, 0x14, 0xfc, 0x4c,
+ 0x90, 0x9d, 0x02, 0x02, 0xf7, 0x83, 0x25, 0x6e, 0x41, 0x8b, 0xf2, 0x45,
+ 0x6e, 0xe9, 0x0c, 0xdf, 0x6d, 0xda, 0x1b, 0x55, 0xe6, 0x26, 0x91, 0x7b,
+ 0xb5, 0x78, 0x2c, 0x5d, 0x7c, 0x2a, 0xf9, 0x58, 0x9a, 0xff, 0x4c, 0x02,
+ 0x32, 0x49, 0xe7, 0xfe, 0xb6, 0x72, 0x02, 0x78, 0x74, 0xc8, 0x3f, 0xb7,
+ 0xbf, 0x0d, 0x1d, 0x2d, 0x05, 0x62, 0xa4, 0x15, 0x90, 0x17, 0xd0, 0xae,
+ 0x20, 0xa5, 0xb9, 0xc4, 0x3c, 0xa7, 0xe1, 0x32, 0xb4, 0xcd, 0x9a, 0x6b,
+ 0x40, 0x5b, 0xe4, 0x39, 0x65, 0x14, 0x29, 0x93, 0x91, 0x76, 0xd1, 0x1a,
+ 0x6d, 0xaa, 0x7d, 0x9b, 0x5c, 0x13, 0xb4, 0x6e, 0xa6, 0x4e, 0x8f, 0xa5,
+ 0x29, 0x10, 0x19, 0x30, 0x82, 0x60, 0x90, 0x1d, 0x9c, 0x41, 0x34, 0x24,
+ 0x5a, 0x8c, 0x88, 0x58, 0x27, 0x87, 0x8c, 0x40, 0x20, 0x30, 0x94, 0x03,
+ 0x18, 0x1a, 0xf4, 0x92, 0x25, 0x18, 0x32, 0x8e, 0xb0, 0x3e, 0x28, 0x83,
+ 0xeb, 0xf8, 0xec, 0xf5, 0xeb, 0x93, 0xe3, 0x66, 0x3c, 0x2c, 0x06, 0xa9,
+ 0x10, 0xd4, 0x9d, 0x53, 0x84, 0x8e, 0x7b, 0xf3, 0x42, 0x01, 0x19, 0x0f,
+ 0xcf, 0x86, 0xc6, 0xc0, 0x1f, 0x37, 0x82, 0x1d, 0xe9, 0x7e, 0xc9, 0x45,
+ 0x97, 0x97, 0x52, 0xac, 0x75, 0xda, 0x50, 0x04, 0x51, 0xb9, 0x28, 0x04,
+ 0xeb, 0x99, 0x8c, 0xea, 0x32, 0x59, 0x86, 0x91, 0x48, 0x46, 0xa3, 0x6d,
+ 0x41, 0x9f, 0xe1, 0x4b, 0x1c, 0xbb, 0x6a, 0x3b, 0x6d, 0x5c, 0x71, 0x1a,
+ 0xc1, 0x07, 0xe3, 0x7c, 0x1c, 0x53, 0x74, 0xc4, 0x34, 0x29, 0xde, 0x63,
+ 0x04, 0xad, 0x03, 0xa8, 0x43, 0xf0, 0xc7, 0x54, 0x1e, 0x7a, 0x34, 0x0a,
+ 0xd5, 0x02, 0xa2, 0x10, 0x0f, 0x07, 0xbc, 0x4c, 0x07, 0x44, 0xec, 0x76,
+ 0x56, 0x1d, 0x60, 0xb6, 0x99, 0xbe, 0x3e, 0x4b, 0x6f, 0xb0, 0x1b, 0x2e,
+ 0x68, 0x87, 0x05, 0x7d, 0xfc, 0x4a, 0xb1, 0x45, 0x5a, 0x2d, 0x8a, 0x19,
+ 0x33, 0xda, 0x3b, 0xc7, 0x55, 0x85, 0xc0, 0xeb, 0x11, 0x61, 0x5a, 0x97,
+ 0x88, 0x08, 0x20, 0xd8, 0x82, 0xde, 0x5a, 0xbd, 0x60, 0xa2, 0xa9, 0xe5,
+ 0x5b, 0x79, 0x69, 0x71, 0xa6, 0x08, 0xcb, 0x20, 0x55, 0x6a, 0x26, 0x1e,
+ 0xd8, 0x56, 0xdf, 0x8f, 0x57, 0x9b, 0xb6, 0x01, 0x6d, 0xa7, 0x65, 0xad,
+ 0x01, 0xdd, 0xcc, 0xa4, 0x25, 0x30, 0xae, 0x5f, 0xc1, 0xda, 0x90, 0x25,
+ 0x9f, 0x98, 0xec, 0x63, 0x04, 0xb9, 0xad, 0x1a, 0xe6, 0xc5, 0x0a, 0xf7,
+ 0x15, 0x11, 0x56, 0x8a, 0xcb, 0x05, 0xc3, 0xcc, 0x22, 0x09, 0xd2, 0xa1,
+ 0x8c, 0x03, 0x8e, 0xe7, 0x88, 0x31, 0x50, 0xd5, 0x51, 0x46, 0x61, 0x7e,
+ 0xb0, 0xbc, 0xb8, 0x11, 0xb2, 0xf8, 0x1a, 0x4c, 0xc1, 0x31, 0x2f, 0x72,
+ 0x52, 0xb3, 0xd9, 0x7c, 0x51, 0x85, 0xaa, 0xcd, 0x48, 0x45, 0xa5, 0x6f,
+ 0x63, 0x87, 0xca, 0x68, 0xb6, 0x68, 0xf5, 0x77, 0xf7, 0x94, 0x0b, 0x9e,
+ 0xa2, 0x3b, 0xa2, 0xac, 0x46, 0xd9, 0xec, 0xde, 0x66, 0x53, 0x3f, 0x10,
+ 0x83, 0x02, 0x23, 0x2d, 0xb1, 0x6e, 0x93, 0xbf, 0xa3, 0x49, 0x0b, 0xe6,
+ 0x2d, 0x65, 0x05, 0x41, 0x63, 0xb9, 0xe5, 0x66, 0x9f, 0x0e, 0x7b, 0xa4,
+ 0xde, 0x4f, 0xe7, 0xc7, 0xf8, 0x39, 0x86, 0x63, 0xc6, 0xaf, 0x61, 0x33,
+ 0x0e, 0xa2, 0x3f, 0xe7, 0x69, 0xc7, 0x09, 0xd2, 0x6a, 0x67, 0xe6, 0xf7,
+ 0x69, 0x1a, 0xe3, 0xee, 0xe2, 0xa3, 0x4b, 0x3a, 0x39, 0x70, 0xd2, 0xe7,
+ 0x45, 0x56, 0x7e, 0xc4, 0xd6, 0x5f, 0x00, 0x7f, 0x39, 0xb8, 0x5f, 0x73,
+ 0xf7, 0xc1, 0xf2, 0xad, 0xa5, 0xef, 0x3c, 0x0d, 0x89, 0x0f, 0x0a, 0x0d,
+ 0xde, 0x2a, 0xb5, 0xe9, 0x03, 0x6b, 0x8b, 0x6d, 0xcd, 0xb0, 0x1f, 0xa7,
+ 0xb3, 0x7b, 0x95, 0x4d, 0x5d, 0x2b, 0xec, 0xc7, 0x69, 0xfc, 0x61, 0x42,
+ 0x80, 0x19, 0xda, 0x87, 0x09, 0x72, 0xcd, 0x30, 0xbe, 0x3a, 0xfc, 0xfa,
+ 0x6a, 0x69, 0xee, 0x7d, 0x7a, 0x77, 0x2f, 0x85, 0xde, 0x3c, 0xf7, 0x01,
+ 0xc2, 0xb4, 0x69, 0xc3, 0x95, 0xa6, 0x3f, 0x93, 0x3e, 0x6f, 0xc6, 0x82,
+ 0xa9, 0x8d, 0xce, 0x87, 0x11, 0x45, 0xdc, 0x7d, 0x14, 0x25, 0xd3, 0xe4,
+ 0x97, 0xaf, 0x25, 0x5e, 0x53, 0x4e, 0x31, 0xfc, 0xb3, 0x74, 0x2b, 0x3e,
+ 0x48, 0xa1, 0x37, 0x49, 0xac, 0xfe, 0x1e, 0xfc, 0xfb, 0x54, 0x9a, 0x8f,
+ 0xbe, 0xd4, 0xbc, 0x9b, 0xeb, 0xaf, 0xb7, 0x01, 0xa3, 0xbd, 0x9f, 0x46,
+ 0xf3, 0xda, 0x60, 0xd7, 0x46, 0x9b, 0xfd, 0xf3, 0xd7, 0x27, 0xdf, 0x9f,
+ 0x6d, 0x35, 0xb1, 0xae, 0xb9, 0x50, 0xa1, 0x17, 0xd4, 0xe2, 0x68, 0x3b,
+ 0x4b, 0xf5, 0x1b, 0x8b, 0x8e, 0xeb, 0xaa, 0x38, 0x81, 0x48, 0x7c, 0x67,
+ 0x2c, 0x66, 0x28, 0x12, 0xa9, 0xb9, 0x9e, 0xba, 0x63, 0x7b, 0xfc, 0x54,
+ 0x1a, 0x8f, 0xed, 0xe1, 0x23, 0x2b, 0x3d, 0xeb, 0xeb, 0x39, 0x88, 0xe6,
+ 0x7a, 0xcf, 0xad, 0x0e, 0xe0, 0x98, 0x47, 0x1f, 0xa8, 0xbc, 0x12, 0x96,
+ 0x6c, 0x4d, 0x75, 0xa5, 0x5e, 0x6a, 0xdb, 0xe6, 0x95, 0x59, 0xbf, 0xdf,
+ 0x26, 0x7e, 0x1a, 0x60, 0x6a, 0xa7, 0xf1, 0x65, 0x5b, 0xf7, 0x70, 0xe1,
+ 0xc1, 0xa3, 0x10, 0x77, 0x0f, 0x03, 0x60, 0xd0, 0xfc, 0xc5, 0x32, 0x60,
+ 0x13, 0xcb, 0x29, 0xe9, 0xa9, 0x0f, 0xb8, 0xb0, 0xee, 0x83, 0x71, 0x62,
+ 0x6f, 0xaa, 0x4f, 0xe5, 0x27, 0xa8, 0x83, 0x9d, 0x7c, 0x54, 0xf6, 0xe9,
+ 0x25, 0x01, 0x98, 0xd6, 0xef, 0xc1, 0x39, 0xff, 0x73, 0x60, 0x30, 0x1c,
+ 0x3f, 0x7b, 0x00, 0x07, 0xe3, 0xff, 0xc2, 0x60, 0xfc, 0x5f, 0x18, 0x8c,
+ 0x0f, 0x87, 0xc1, 0x70, 0x25, 0xa8, 0x87, 0xe0, 0x39, 0x3c, 0x58, 0x8e,
+ 0x5d, 0xa1, 0x81, 0x7e, 0x28, 0xaa, 0x83, 0xdf, 0xc8, 0x47, 0xc4, 0x76,
+ 0xa8, 0xb5, 0xbb, 0x54, 0x36, 0xfb, 0x2a, 0xc4, 0x61, 0x90, 0x64, 0xb3,
+ 0xa1, 0x40, 0x55, 0x1f, 0xe2, 0xbf, 0xcb, 0xe0, 0xd4, 0xeb, 0x69, 0x63,
+ 0x4e, 0x5e, 0x80, 0x34, 0xc3, 0x96, 0x12, 0x6b, 0xfc, 0x8b, 0x7c, 0x50,
+ 0x3c, 0x39, 0x4d, 0xe1, 0x30, 0xaa, 0xf0, 0xb0, 0x3e, 0xf5, 0xf6, 0x2f,
+ 0xdf, 0xfd, 0xda, 0x50, 0x3a, 0xe5, 0x55, 0xb1, 0xc0, 0x52, 0xb5, 0x77,
+ 0x9d, 0x87, 0x8a, 0x53, 0xb5, 0xf6, 0x96, 0x6d, 0xd8, 0xa3, 0xfd, 0xe0,
+ 0x86, 0x95, 0x93, 0x98, 0xb6, 0x01, 0x41, 0xf8, 0x3d, 0x27, 0x81, 0xbd,
+ 0x98, 0x1b, 0xcf, 0x7d, 0x80, 0xaa, 0xdf, 0xd2, 0xf3, 0x8a, 0x3a, 0x6a,
+ 0x8d, 0xe6, 0x9a, 0x99, 0xcd, 0xed, 0x3a, 0x7f, 0xa3, 0x9b, 0x07, 0x6e,
+ 0x5a, 0x63, 0xac, 0x1f, 0xa8, 0x02, 0x35, 0x9b, 0x5b, 0x5f, 0x07, 0xa2,
+ 0x16, 0x16, 0x15, 0x96, 0x3a, 0xce, 0x80, 0xd9, 0x93, 0x7b, 0x74, 0xf9,
+ 0xde, 0x35, 0x1e, 0xfe, 0x58, 0x1b, 0xd8, 0x6c, 0xb6, 0x4d, 0x9e, 0x8d,
+ 0xfd, 0x6c, 0xb5, 0x25, 0x9b, 0x28, 0x85, 0x37, 0x9a, 0xdb, 0xe8, 0x74,
+ 0x16, 0xb8, 0x0d, 0x3f, 0x60, 0x6b, 0x9b, 0xb3, 0xf8, 0xe0, 0x80, 0x8e,
+ 0x60, 0xab, 0x1c, 0xae, 0xdb, 0xc8, 0x14, 0xe7, 0xad, 0x0e, 0x05, 0x74,
+ 0x3c, 0x0d, 0x5a, 0xe3, 0xaa, 0x49, 0xb9, 0xbb, 0x6f, 0x5d, 0xdc, 0xf2,
+ 0xcb, 0x02, 0xb1, 0xfa, 0x43, 0xee, 0x6e, 0x16, 0xe7, 0xfa, 0xa6, 0x6e,
+ 0x85, 0x84, 0xba, 0xd2, 0x5b, 0x14, 0x44, 0x99, 0x96, 0xaa, 0x42, 0x99,
+ 0x58, 0x6d, 0xbd, 0x84, 0x03, 0xd8, 0xd5, 0x54, 0x0b, 0xc8, 0x25, 0x17,
+ 0x52, 0xae, 0x10, 0x96, 0x4e, 0xb5, 0x81, 0x92, 0x44, 0x9a, 0xdd, 0xde,
+ 0x3e, 0xd7, 0x5d, 0xa1, 0xd8, 0x73, 0x10, 0xb3, 0x64, 0x9c, 0x4d, 0x17,
+ 0x0b, 0x0f, 0x60, 0x8a, 0xd8, 0xe7, 0xea, 0x47, 0x02, 0x46, 0x9b, 0x8d,
+ 0xf4, 0xf9, 0x5e, 0xf4, 0x06, 0xed, 0xd7, 0x58, 0x95, 0x1d, 0xc7, 0x43,
+ 0xd2, 0x12, 0xb4, 0x1d, 0xc9, 0xf7, 0xa1, 0xe6, 0x34, 0x87, 0x8b, 0x33,
+ 0xbf, 0x80, 0xd9, 0xbf, 0x7d, 0x73, 0xea, 0x67, 0xe5, 0xe8, 0x86, 0x52,
+ 0x12, 0x73, 0x99, 0x6e, 0x8f, 0xf2, 0x61, 0xb9, 0x8d, 0xbb, 0xa6, 0x1d,
+ 0x5f, 0x55, 0xd3, 0x49, 0xd0, 0x36, 0xae, 0x97, 0x17, 0x89, 0x53, 0x52,
+ 0x14, 0x60, 0x72, 0x27, 0x25, 0x8d, 0x2d, 0xa0, 0x03, 0x11, 0x59, 0xe6,
+ 0xd4, 0xe4, 0x81, 0xef, 0xbd, 0x4a, 0xb8, 0x04, 0x75, 0x05, 0x13, 0x82,
+ 0xff, 0x43, 0xa1, 0x86, 0x42, 0xed, 0x03, 0xf5, 0x14, 0x92, 0x68, 0x94,
+ 0xc1, 0x59, 0xa1, 0xf2, 0x03, 0x0e, 0x94, 0x95, 0xbf, 0x37, 0x0c, 0x42,
+ 0x5e, 0x15, 0x77, 0x78, 0x81, 0x91, 0x3c, 0x28, 0x9b, 0xd1, 0xd8, 0x71,
+ 0x93, 0x6c, 0xcd, 0x40, 0xed, 0x4c, 0x59, 0xcd, 0x23, 0x25, 0x24, 0xb6,
+ 0x22, 0x4a, 0xd9, 0x23, 0xc9, 0xcf, 0x7b, 0xbd, 0xd6, 0xc7, 0x02, 0xb3,
+ 0x7f, 0x77, 0x74, 0xd2, 0x7f, 0xb7, 0xbb, 0xf7, 0xe5, 0xbb, 0xef, 0x8f,
+ 0x5f, 0xbd, 0xeb, 0xbf, 0x38, 0x42, 0xe9, 0xfe, 0x81, 0x57, 0x6d, 0xbd,
+ 0x6d, 0x09, 0xcb, 0xa2, 0x88, 0x88, 0x3a, 0xa4, 0xe7, 0x6e, 0xcb, 0xb9,
+ 0x45, 0xc5, 0xf8, 0x3e, 0x96, 0x5b, 0xf7, 0xd1, 0x0f, 0x31, 0x1b, 0xba,
+ 0xed, 0x7c, 0xfe, 0x6d, 0x31, 0x43, 0xe9, 0xbf, 0x39, 0xff, 0x34, 0x4a,
+ 0x30, 0x74, 0x42, 0x98, 0xa0, 0xab, 0xaf, 0x4f, 0x78, 0xd2, 0x60, 0x22,
+ 0x1c, 0x32, 0xe0, 0xc1, 0xd2, 0xed, 0x30, 0x0f, 0x7f, 0x80, 0x69, 0xc2,
+ 0x6d, 0xe6, 0xde, 0x16, 0x8a, 0x4f, 0xb7, 0x1d, 0x66, 0x2c, 0x75, 0x93,
+ 0xd0, 0x67, 0xdc, 0x11, 0xb2, 0x52, 0x05, 0x75, 0x86, 0xda, 0x5e, 0xd0,
+ 0x63, 0x1f, 0xb6, 0x0f, 0xd4, 0xc4, 0xe7, 0x0d, 0x10, 0xd2, 0x51, 0x94,
+ 0x53, 0x92, 0x57, 0x3f, 0xd1, 0xe2, 0xeb, 0x26, 0xdf, 0x6f, 0x03, 0xae,
+ 0x77, 0x97, 0xad, 0xfb, 0xf5, 0xee, 0x47, 0x90, 0x19, 0xb9, 0x9d, 0x4f,
+ 0x65, 0xf4, 0xe4, 0xd6, 0x3f, 0xd6, 0x62, 0x2e, 0x5b, 0xb4, 0xb7, 0xdd,
+ 0xba, 0x71, 0xf5, 0xb0, 0x56, 0x06, 0xd0, 0xa3, 0x5f, 0xa7, 0x98, 0x9d,
+ 0x53, 0xcc, 0xad, 0x86, 0xcc, 0xc2, 0x32, 0x98, 0xa3, 0xeb, 0x2e, 0xaf,
+ 0xf2, 0xd8, 0x5a, 0xc6, 0x91, 0xab, 0x2b, 0x6b, 0x4d, 0x90, 0x7e, 0xff,
+ 0xfc, 0x65, 0xcc, 0x49, 0x65, 0x23, 0xa9, 0x79, 0xc9, 0x85, 0x52, 0x19,
+ 0xcc, 0x41, 0x4b, 0x15, 0xbf, 0x6e, 0xd1, 0xab, 0x29, 0xbf, 0x33, 0x50,
+ 0x01, 0x94, 0xe3, 0x15, 0xb4, 0xc8, 0x4e, 0xe5, 0xe2, 0x2b, 0xc3, 0x99,
+ 0x99, 0xf8, 0xd9, 0x53, 0x4b, 0x66, 0x4e, 0x96, 0x27, 0x92, 0x2b, 0xdd,
+ 0x22, 0xbd, 0x03, 0x13, 0x58, 0x44, 0x02, 0x90, 0x57, 0xa5, 0x90, 0x6c,
+ 0x7f, 0x0e, 0x32, 0x8c, 0x63, 0x5c, 0x3a, 0x88, 0x3a, 0xf1, 0xdb, 0xe8,
+ 0xa0, 0xe3, 0x2d, 0xd1, 0x19, 0x02, 0x5f, 0x94, 0x55, 0x3a, 0xa5, 0x48,
+ 0xa0, 0x82, 0xf4, 0x0d, 0x18, 0xc2, 0xfb, 0xd2, 0x35, 0x47, 0x5d, 0x61,
+ 0x19, 0x5f, 0xeb, 0x0b, 0x50, 0x4b, 0x45, 0x71, 0xe9, 0x65, 0x12, 0x71,
+ 0x94, 0x07, 0x1b, 0xce, 0x60, 0xcf, 0x86, 0x18, 0xdd, 0x82, 0xe2, 0x2e,
+ 0xc6, 0xb7, 0x98, 0x88, 0x27, 0x36, 0x99, 0xcd, 0x28, 0xa9, 0x52, 0xd2,
+ 0x52, 0x31, 0xaf, 0x72, 0x18, 0xc8, 0xc9, 0xe6, 0x9c, 0xba, 0x92, 0x5b,
+ 0x9c, 0xe7, 0x65, 0x99, 0x0d, 0x40, 0x98, 0xbc, 0x14, 0x41, 0xae, 0x4c,
+ 0x39, 0xd1, 0x9d, 0xeb, 0x55, 0xe0, 0x5a, 0x92, 0x84, 0x6b, 0x0b, 0x22,
+ 0x35, 0x97, 0x88, 0x66, 0x4a, 0xb1, 0x3d, 0x1c, 0x87, 0x23, 0x98, 0x24,
+ 0x30, 0x3e, 0x85, 0x26, 0xb9, 0xce, 0xb0, 0x0b, 0x4d, 0x25, 0x4e, 0xa2,
+ 0x69, 0xce, 0x4b, 0x4f, 0xc6, 0xb6, 0xa6, 0x34, 0x38, 0xc1, 0x1a, 0x7d,
+ 0xc0, 0x48, 0xfa, 0x88, 0xd8, 0x53, 0xa6, 0xb3, 0x32, 0x23, 0x1c, 0x27,
+ 0x42, 0x24, 0xb1, 0x18, 0x51, 0x45, 0x8a, 0x79, 0x9f, 0xd7, 0xa9, 0x6c,
+ 0xab, 0x98, 0x72, 0x5b, 0x91, 0x62, 0x10, 0x70, 0x65, 0x9a, 0x21, 0x72,
+ 0x3d, 0x21, 0xbd, 0x51, 0x0d, 0x57, 0x65, 0x30, 0xd4, 0x63, 0x84, 0x7c,
+ 0xc5, 0x0f, 0xfd, 0xe8, 0x2d, 0x91, 0x7a, 0x88, 0xcc, 0x3e, 0x77, 0xf4,
+ 0xb3, 0xa1, 0xf5, 0x83, 0xf9, 0x87, 0x7a, 0xca, 0xf0, 0xa0, 0x38, 0x9c,
+ 0xc7, 0x61, 0xf6, 0x0f, 0x06, 0x3c, 0x5b, 0x06, 0xff, 0xe5, 0x40, 0x40,
+ 0x79, 0x25, 0x2e, 0xc3, 0xb8, 0x5f, 0xe3, 0xec, 0x96, 0x90, 0xd0, 0xfd,
+ 0x3a, 0xd9, 0x4d, 0x0c, 0x2d, 0xc4, 0x5e, 0x60, 0xb7, 0x93, 0x59, 0xe2,
+ 0x8a, 0xaa, 0x41, 0x51, 0x89, 0x16, 0x37, 0x03, 0xef, 0xad, 0xa7, 0x2c,
+ 0x59, 0x5c, 0xb0, 0x1a, 0x12, 0x98, 0x05, 0x02, 0x43, 0x62, 0xb2, 0x30,
+ 0x60, 0x84, 0xd6, 0xc7, 0x51, 0x8d, 0x09, 0x8e, 0xc0, 0xd7, 0x6e, 0xc6,
+ 0xd9, 0xb0, 0x1d, 0x04, 0xcc, 0xcf, 0xb8, 0xcd, 0x6e, 0xb5, 0x9c, 0x3b,
+ 0xf6, 0x92, 0x56, 0x0c, 0x1c, 0x61, 0x31, 0x54, 0xc6, 0xda, 0xbf, 0x4e,
+ 0xa1, 0x0f, 0xc4, 0x45, 0x89, 0x22, 0x01, 0xe8, 0x11, 0x05, 0xed, 0xc7,
+ 0xaf, 0x28, 0xf0, 0xae, 0x17, 0xa5, 0xbd, 0xcb, 0x9e, 0x33, 0x01, 0xf3,
+ 0xe6, 0x36, 0xba, 0x45, 0xb6, 0xab, 0x7c, 0x9b, 0xbb, 0xed, 0xe1, 0x8f,
+ 0x2f, 0xda, 0x51, 0xde, 0x4c, 0x5a, 0xed, 0x75, 0x96, 0x18, 0x72, 0xb3,
+ 0x7b, 0xc1, 0xdb, 0x15, 0x51, 0xb5, 0x58, 0x29, 0x8e, 0xd3, 0x96, 0x4b,
+ 0xc2, 0x95, 0x56, 0x03, 0x10, 0xd1, 0xaf, 0xfb, 0xfd, 0xc0, 0xfa, 0x14,
+ 0xe9, 0x30, 0xbf, 0x9c, 0x65, 0xbf, 0x51, 0x5d, 0x52, 0xb4, 0x73, 0x34,
+ 0x01, 0x66, 0x6a, 0x68, 0x6f, 0x9a, 0x57, 0xa9, 0xd9, 0xbb, 0x3e, 0x7f,
+ 0x27, 0x5c, 0x0a, 0xba, 0x75, 0x51, 0x8e, 0x40, 0x20, 0x52, 0xd9, 0xa6,
+ 0x92, 0xa2, 0x4e, 0x29, 0xc1, 0x3d, 0x15, 0x40, 0x35, 0x83, 0x5e, 0xc3,
+ 0x1d, 0x7b, 0xb4, 0xa3, 0x44, 0x27, 0xb5, 0x0b, 0xff, 0x03, 0xa0, 0xd9,
+ 0x5c, 0x2b, 0xb8, 0x16, 0x8f, 0x2f, 0xb9, 0x30, 0x26, 0x9e, 0xbc, 0x60,
+ 0xb9, 0x7a, 0x53, 0x0f, 0xd8, 0xd7, 0x0b, 0x74, 0x19, 0x70, 0x8d, 0x59,
+ 0x92, 0xe8, 0x49, 0x41, 0xce, 0x22, 0xdd, 0x28, 0x69, 0x95, 0x9d, 0x16,
+ 0x4d, 0xb1, 0x43, 0x35, 0x12, 0x24, 0xa1, 0x12, 0xf7, 0xb6, 0x88, 0x1e,
+ 0xb2, 0x49, 0x13, 0x00, 0xbb, 0xba, 0xe0, 0xfd, 0x11, 0xc6, 0x7b, 0x6a,
+ 0x59, 0x4f, 0x09, 0xbc, 0xc4, 0xb3, 0x22, 0x85, 0x4e, 0x52, 0x2e, 0xf1,
+ 0x8e, 0x83, 0xb2, 0x27, 0x9e, 0xf9, 0x01, 0xa1, 0x59, 0x78, 0x05, 0xbc,
+ 0x13, 0xb5, 0xb0, 0x0c, 0x52, 0xc5, 0x93, 0x25, 0x9a, 0x82, 0x61, 0x60,
+ 0x03, 0x3d, 0xac, 0x18, 0x8e, 0x98, 0x9a, 0x1a, 0xe3, 0x09, 0x5f, 0xe3,
+ 0x31, 0x6d, 0x49, 0x27, 0x57, 0x38, 0x40, 0x77, 0x88, 0x9c, 0xea, 0x2b,
+ 0xc1, 0xa0, 0x89, 0x02, 0x51, 0xd4, 0xef, 0x70, 0x32, 0x8d, 0x25, 0x1e,
+ 0x69, 0x49, 0xa9, 0x42, 0x12, 0x83, 0x16, 0xb3, 0x19, 0x96, 0x0a, 0x12,
+ 0x88, 0x46, 0x43, 0x2b, 0x5d, 0x64, 0x6e, 0x98, 0x0d, 0x6e, 0xc2, 0x0c,
+ 0x84, 0x81, 0xc3, 0x0b, 0x5e, 0x68, 0x68, 0x3a, 0x69, 0x33, 0xb8, 0xfc,
+ 0xff, 0x07, 0x9a, 0x9f, 0xbd, 0x84, 0x88, 0x37, 0x7a, 0x57, 0x90, 0x49,
+ 0xc1, 0xbf, 0x01, 0x26, 0x20, 0x25, 0x26, 0x85, 0xf0, 0x91, 0xc4, 0x3d,
+ 0x8f, 0xac, 0x77, 0x88, 0xba, 0x91, 0xc4, 0x0b, 0x37, 0xd3, 0xf6, 0x95,
+ 0x37, 0x6e, 0x0a, 0xb7, 0xd8, 0x0a, 0xc0, 0xa0, 0x50, 0xc0, 0x3a, 0x22,
+ 0xcd, 0xe3, 0xa2, 0xd1, 0x1d, 0xff, 0x47, 0xb3, 0x1d, 0x4b, 0x74, 0xce,
+ 0xcf, 0x99, 0xc7, 0x2f, 0x52, 0x87, 0x87, 0x48, 0xb8, 0xa6, 0xc7, 0x82,
+ 0x2e, 0xa6, 0x7b, 0x44, 0xeb, 0xec, 0xc2, 0xc5, 0x71, 0xe8, 0xc8, 0x22,
+ 0xdf, 0x04, 0x84, 0x11, 0x2f, 0x8c, 0x80, 0xc1, 0x4b, 0xf1, 0x55, 0xbd,
+ 0x3c, 0xa5, 0x9a, 0xb0, 0xcf, 0x8f, 0xc3, 0xa7, 0x19, 0x41, 0x6b, 0x88,
+ 0x13, 0x1b, 0xde, 0x8b, 0x78, 0x12, 0xf8, 0x72, 0x0b, 0xf7, 0x4d, 0xd9,
+ 0x52, 0xab, 0x66, 0x55, 0xb8, 0x6c, 0x06, 0x69, 0x75, 0x83, 0x22, 0x36,
+ 0x29, 0x12, 0x5a, 0xb8, 0xd3, 0x61, 0x50, 0xc6, 0xec, 0x0b, 0x12, 0x58,
+ 0x38, 0x84, 0xb9, 0x1b, 0x31, 0x80, 0x0c, 0xb2, 0xbb, 0x0a, 0x64, 0x6f,
+ 0x81, 0xd4, 0xc0, 0x6b, 0x4e, 0x33, 0x11, 0x3c, 0xde, 0x10, 0x42, 0xa0,
+ 0xb4, 0x09, 0x15, 0xdc, 0x3f, 0xae, 0x8b, 0x03, 0x73, 0x53, 0x03, 0x59,
+ 0xd4, 0xdc, 0x73, 0x79, 0x70, 0x77, 0xb5, 0x0a, 0x8e, 0xad, 0x7d, 0x22,
+ 0xfd, 0x1b, 0x9b, 0xfe, 0x48, 0x61, 0xc9, 0x5d, 0x9f, 0xe6, 0xd2, 0x86,
+ 0xd4, 0x1a, 0xcf, 0xbb, 0x0e, 0x23, 0x9d, 0x79, 0x25, 0xb6, 0xb8, 0x98,
+ 0x5b, 0xed, 0x92, 0xd1, 0xf2, 0xd8, 0xb5, 0x8e, 0xaa, 0x9a, 0x51, 0xdf,
+ 0xc2, 0xbc, 0x86, 0x32, 0x38, 0x5a, 0x79, 0x3c, 0x3b, 0x3b, 0xe4, 0xdb,
+ 0x64, 0x0e, 0x9f, 0x25, 0x0c, 0x7f, 0x35, 0x4d, 0x46, 0x69, 0x28, 0xc1,
+ 0xa9, 0x41, 0x5d, 0x8d, 0x54, 0x15, 0x9a, 0xb4, 0xe0, 0x4f, 0x97, 0xb6,
+ 0x2a, 0xac, 0x31, 0x0d, 0x4c, 0xbc, 0x78, 0x0b, 0x64, 0xd8, 0x82, 0xea,
+ 0x25, 0x0e, 0x1c, 0xcd, 0x4e, 0x91, 0xc8, 0x42, 0xf7, 0x28, 0xb1, 0xb6,
+ 0x9b, 0xcc, 0x04, 0x84, 0x38, 0x7c, 0x0d, 0x99, 0x39, 0xe6, 0xa1, 0x82,
+ 0xa8, 0xa6, 0x1c, 0x6a, 0x73, 0xfc, 0x02, 0x83, 0x21, 0xe1, 0xfe, 0x75,
+ 0x5f, 0x08, 0xc7, 0x5c, 0x79, 0x4e, 0x25, 0x29, 0x3b, 0xaa, 0xaf, 0x2c,
+ 0x28, 0xee, 0x4e, 0x3b, 0x88, 0x65, 0x3a, 0x71, 0x5b, 0x02, 0x81, 0x1f,
+ 0x44, 0x2e, 0xdb, 0x10, 0x86, 0x8e, 0xfc, 0xd0, 0x20, 0x72, 0x6e, 0xfc,
+ 0x41, 0xe7, 0x43, 0xc6, 0xf5, 0xb1, 0x22, 0xf7, 0x5d, 0xd6, 0x2b, 0x21,
+ 0x5d, 0x81, 0x28, 0xe4, 0xcd, 0x3e, 0xc2, 0xc1, 0xf5, 0x8f, 0xcf, 0xb7,
+ 0xa2, 0xf3, 0x46, 0xb4, 0x16, 0x57, 0x0c, 0x3f, 0xaa, 0xdf, 0xf6, 0x7c,
+ 0x4d, 0xb1, 0x41, 0x66, 0x49, 0x60, 0x4f, 0x26, 0x9c, 0xd2, 0xa4, 0x50,
+ 0x51, 0x16, 0x4a, 0x73, 0xdc, 0x9b, 0x47, 0x54, 0x5b, 0x8b, 0x0b, 0x83,
+ 0x88, 0x95, 0xc5, 0xe5, 0x8d, 0xe8, 0x22, 0x45, 0x4c, 0x58, 0x2a, 0xf0,
+ 0xab, 0xb1, 0x49, 0x1a, 0x53, 0x34, 0xf1, 0x50, 0x42, 0x68, 0xe4, 0x8a,
+ 0xa4, 0xe5, 0x14, 0x3c, 0xa3, 0xce, 0xa9, 0x14, 0x01, 0x5e, 0xc6, 0x7c,
+ 0xb1, 0xd7, 0x10, 0x4c, 0xa3, 0xcb, 0x74, 0x96, 0x86, 0x6a, 0x8d, 0xde,
+ 0x91, 0x6c, 0x27, 0x27, 0x8d, 0xb0, 0x9f, 0xab, 0x54, 0xcf, 0x1b, 0x5e,
+ 0xda, 0x76, 0xc5, 0x64, 0x70, 0x19, 0xc1, 0xdc, 0xf1, 0xc1, 0xf4, 0x96,
+ 0x66, 0xa0, 0x46, 0xb0, 0x01, 0x21, 0xd5, 0x62, 0x1d, 0x49, 0xa2, 0x21,
+ 0x52, 0x42, 0x87, 0xf9, 0xfc, 0x0e, 0x17, 0x03, 0x1e, 0x2b, 0xcb, 0xab,
+ 0x3d, 0xe0, 0xd6, 0x7b, 0xbd, 0x2f, 0x19, 0xbe, 0xfa, 0x0a, 0x64, 0x38,
+ 0xcf, 0x99, 0x59, 0x49, 0xa6, 0x59, 0x56, 0x95, 0xe9, 0x64, 0xdc, 0x6c,
+ 0x4f, 0x14, 0xb3, 0xde, 0x56, 0x8b, 0x03, 0x88, 0x09, 0xe2, 0xb3, 0xc1,
+ 0x21, 0x73, 0xf7, 0x44, 0x13, 0xf0, 0x7b, 0x54, 0xae, 0x53, 0x60, 0xb1,
+ 0x69, 0xf1, 0xf8, 0x2b, 0x92, 0x3c, 0xd7, 0x84, 0x3f, 0x14, 0x23, 0x90,
+ 0x47, 0xe4, 0x44, 0xe3, 0xcf, 0x31, 0xd5, 0xb1, 0x9f, 0xce, 0x46, 0x9c,
+ 0x87, 0x35, 0xc8, 0x60, 0xc7, 0x8a, 0x3b, 0x63, 0x38, 0xaa, 0xf3, 0xc3,
+ 0xe7, 0x8c, 0x97, 0x1e, 0xd1, 0x6b, 0xc1, 0x22, 0x00, 0xa0, 0x78, 0xfe,
+ 0x95, 0x7a, 0x95, 0x06, 0x44, 0xe3, 0x47, 0x71, 0xf2, 0xbb, 0x93, 0xe7,
+ 0x67, 0x6f, 0x4e, 0xea, 0xd0, 0xc1, 0x15, 0x95, 0x74, 0xa4, 0x54, 0xa8,
+ 0xe6, 0xe8, 0xa8, 0xb6, 0x37, 0x97, 0x0b, 0xe0, 0x24, 0xae, 0x0c, 0x2d,
+ 0x7d, 0xd1, 0xf9, 0x0f, 0xcf, 0xcc, 0xe0, 0x32, 0xba, 0xab, 0x68, 0x50,
+ 0xda, 0x62, 0x97, 0x03, 0x2f, 0x3d, 0x41, 0x90, 0x02, 0xf0, 0xb6, 0x7a,
+ 0xc8, 0x85, 0x39, 0xcd, 0x4b, 0x87, 0x47, 0x29, 0x68, 0x9c, 0x38, 0xa8,
+ 0xb5, 0x09, 0x40, 0x22, 0x47, 0xbb, 0x24, 0xd6, 0x1a, 0x30, 0xcd, 0x7a,
+ 0xca, 0x1e, 0x89, 0xbd, 0x54, 0xa6, 0x4e, 0x0c, 0x3c, 0x58, 0x3f, 0x1b,
+ 0x8b, 0x6a, 0xfb, 0xe7, 0x19, 0x07, 0x88, 0x92, 0xd3, 0x96, 0xdf, 0xbb,
+ 0xe6, 0xd1, 0x71, 0xd7, 0x44, 0x08, 0xc4, 0x6f, 0x39, 0xac, 0x6b, 0x14,
+ 0x2a, 0x5b, 0x89, 0xc6, 0x57, 0x62, 0xdc, 0x06, 0x4a, 0xa3, 0x2b, 0x85,
+ 0xd0, 0x35, 0xe2, 0x4f, 0x0a, 0x9f, 0x4f, 0x9c, 0x75, 0x96, 0x0e, 0x37,
+ 0xcb, 0xad, 0xf6, 0x99, 0x98, 0x65, 0x95, 0x09, 0x6d, 0xfc, 0x71, 0xa3,
+ 0xae, 0xcd, 0x59, 0x5d, 0x94, 0x2e, 0xa8, 0x04, 0x87, 0xe0, 0xe9, 0x0e,
+ 0x82, 0xee, 0x21, 0x36, 0x5d, 0x3a, 0x4b, 0xfa, 0x9a, 0xb7, 0x32, 0xcb,
+ 0xb3, 0x61, 0x75, 0x91, 0x7a, 0x01, 0x5c, 0x4f, 0x23, 0xc3, 0x89, 0x88,
+ 0xc1, 0x45, 0x04, 0xab, 0x7c, 0x8e, 0x32, 0x2c, 0x97, 0x0c, 0x18, 0x83,
+ 0x46, 0x4a, 0xc9, 0x41, 0x66, 0xd1, 0xf1, 0x49, 0xb8, 0x18, 0x7d, 0xcf,
+ 0xc0, 0x6c, 0x81, 0x60, 0x8f, 0x18, 0x93, 0x31, 0xae, 0x2d, 0x04, 0x36,
+ 0x01, 0x87, 0xbe, 0x75, 0x89, 0x10, 0x4c, 0xae, 0x0c, 0x28, 0x75, 0x59,
+ 0xf9, 0x1e, 0xb6, 0xfd, 0x0f, 0x40, 0x6e, 0x54, 0x49, 0xeb, 0x26, 0x2b,
+ 0x81, 0xd1, 0x4a, 0xdb, 0x12, 0x9f, 0x2a, 0xe9, 0x9e, 0x3a, 0x4a, 0xb2,
+ 0x1b, 0xe5, 0xb3, 0x16, 0xcc, 0x33, 0x5d, 0x09, 0xe6, 0x3f, 0x68, 0xf2,
+ 0x2e, 0x52, 0xab, 0x8a, 0x1b, 0xb3, 0x20, 0x05, 0x85, 0xb6, 0x2d, 0x33,
+ 0x45, 0x8b, 0xe0, 0x31, 0x2f, 0xef, 0x66, 0x15, 0xf2, 0x64, 0xbe, 0x3e,
+ 0x86, 0x79, 0x41, 0xf2, 0x0f, 0xd2, 0xa8, 0x3d, 0xb2, 0x25, 0xd5, 0x14,
+ 0xf9, 0xea, 0xf1, 0x57, 0xb8, 0xd0, 0x7e, 0x89, 0x82, 0x99, 0x66, 0x32,
+ 0xd2, 0xd1, 0xe3, 0x19, 0xa1, 0x8e, 0x68, 0xe6, 0x50, 0x1b, 0x35, 0xd1,
+ 0x02, 0xea, 0xcb, 0x29, 0x82, 0xae, 0x7a, 0x82, 0x0c, 0x5d, 0xb5, 0xd2,
+ 0xc6, 0x03, 0xf1, 0xe8, 0xfc, 0xdc, 0x53, 0x6c, 0x13, 0x55, 0x12, 0xf5,
+ 0xdc, 0xa8, 0x2a, 0xd0, 0x8b, 0xde, 0xce, 0x28, 0xd7, 0x19, 0xd7, 0xfb,
+ 0x39, 0xc2, 0xbf, 0xb2, 0x98, 0x35, 0x83, 0x5d, 0x83, 0x6d, 0xc6, 0x8a,
+ 0x28, 0x01, 0xd6, 0xc6, 0x7c, 0xd4, 0x4e, 0x48, 0xaf, 0x97, 0x66, 0x88,
+ 0x2d, 0xb1, 0x03, 0xe1, 0x98, 0xca, 0x0e, 0x9f, 0x67, 0x5e, 0x09, 0x11,
+ 0x14, 0x21, 0xd8, 0x20, 0x07, 0xd3, 0xa1, 0xb6, 0x31, 0x84, 0x3a, 0x9d,
+ 0x4c, 0x18, 0xfa, 0x1a, 0x5b, 0x20, 0x7d, 0x99, 0x61, 0xd0, 0x29, 0x69,
+ 0xd8, 0xb5, 0x23, 0x78, 0x37, 0x32, 0xa1, 0xb9, 0xf7, 0x10, 0x0b, 0x52,
+ 0x4b, 0xb6, 0x28, 0x28, 0xa7, 0x06, 0x12, 0x21, 0x08, 0xad, 0x35, 0x2c,
+ 0xd2, 0xea, 0xfc, 0x43, 0xb9, 0xb4, 0xe7, 0xa1, 0xc1, 0x29, 0x7a, 0xb1,
+ 0x3f, 0x09, 0x2e, 0x34, 0x3a, 0x2e, 0x98, 0xb3, 0x84, 0xa1, 0x19, 0x51,
+ 0x9c, 0xe7, 0x07, 0xf5, 0x9c, 0x94, 0x69, 0x55, 0xda, 0x4b, 0x33, 0x21,
+ 0xbe, 0x4a, 0x7b, 0x46, 0x60, 0x9e, 0x24, 0x9e, 0xb7, 0x37, 0x87, 0xeb,
+ 0x24, 0x70, 0xa8, 0x86, 0xa3, 0x11, 0xd5, 0xcf, 0x46, 0xac, 0x3a, 0x1c,
+ 0xd2, 0x78, 0xd2, 0x5b, 0x92, 0x79, 0x81, 0x44, 0xbe, 0x09, 0xd7, 0x33,
+ 0xb7, 0x92, 0x0b, 0x48, 0x3b, 0x45, 0x45, 0xd2, 0x15, 0xbd, 0xc9, 0x76,
+ 0x9e, 0x92, 0xf1, 0xac, 0x25, 0x9a, 0x1a, 0xc8, 0xe1, 0xdd, 0x65, 0x5a,
+ 0xe1, 0xf7, 0x9b, 0xfb, 0x5b, 0xb4, 0x1c, 0xe1, 0xe6, 0xe6, 0x08, 0x85,
+ 0x4f, 0xf0, 0xd7, 0xf5, 0x41, 0x18, 0x38, 0x6c, 0x10, 0xe4, 0xac, 0x2b,
+ 0xf4, 0xe9, 0x7e, 0x6f, 0xc7, 0x13, 0x3b, 0x86, 0x57, 0x97, 0xc5, 0x3c,
+ 0xba, 0x04, 0x95, 0x61, 0xbe, 0x62, 0x55, 0xe5, 0x51, 0x6f, 0x59, 0xf9,
+ 0xdd, 0x97, 0xcf, 0xf4, 0xcc, 0x19, 0x11, 0x15, 0xcd, 0x53, 0xe1, 0xe6,
+ 0x9a, 0x4b, 0xa9, 0x04, 0x6b, 0x9a, 0xb2, 0x36, 0x06, 0x5d, 0x79, 0xfe,
+ 0x2e, 0xdc, 0x5c, 0x6d, 0x43, 0xb8, 0x0d, 0x6d, 0x98, 0x0e, 0xe0, 0x08,
+ 0x1a, 0x9b, 0x26, 0x7c, 0xc4, 0x2e, 0x81, 0xf1, 0x69, 0x37, 0x7e, 0xb6,
+ 0xff, 0xd5, 0x34, 0x1f, 0x21, 0x64, 0x6a, 0xba, 0x7a, 0x2d, 0xf0, 0x49,
+ 0xb3, 0x18, 0x0a, 0x36, 0x5b, 0x3a, 0x04, 0xc5, 0xed, 0x0c, 0x32, 0xde,
+ 0x6c, 0xff, 0x12, 0x6d, 0x5a, 0x42, 0x24, 0x1f, 0x1c, 0x9b, 0xa7, 0x37,
+ 0xdd, 0x29, 0xcc, 0xa2, 0x7c, 0x58, 0x39, 0x33, 0xc0, 0x07, 0x5a, 0x08,
+ 0x96, 0xee, 0xae, 0xc0, 0xcc, 0x10, 0x77, 0x94, 0x2c, 0x5f, 0xcb, 0x67,
+ 0xc6, 0x0f, 0x7a, 0x9b, 0x0c, 0x1f, 0xf2, 0x8d, 0xe8, 0xed, 0x70, 0xfb,
+ 0xcc, 0x42, 0x3b, 0x4c, 0x23, 0x68, 0x6e, 0x30, 0x2d, 0x19, 0xbb, 0xff,
+ 0xf0, 0xf1, 0xb8, 0xe5, 0xec, 0xe8, 0x0e, 0xd3, 0x93, 0x4b, 0x37, 0x58,
+ 0x7a, 0xf1, 0x56, 0x61, 0x82, 0x4e, 0xa0, 0x45, 0x31, 0x4c, 0xdf, 0xb1,
+ 0x68, 0x42, 0x05, 0x68, 0xdf, 0x2d, 0x5f, 0x90, 0x89, 0xd4, 0xa0, 0xb8,
+ 0x9b, 0xa2, 0x24, 0x6f, 0x19, 0xf0, 0x90, 0x1c, 0x60, 0x28, 0xaa, 0x51,
+ 0x4d, 0x06, 0xd0, 0x36, 0xe8, 0x7b, 0xd6, 0xf8, 0x5b, 0xc8, 0xde, 0xf6,
+ 0x17, 0x99, 0x7a, 0x4b, 0xf3, 0x1c, 0x46, 0xad, 0xf5, 0x8a, 0xd8, 0xc0,
+ 0xe6, 0x0c, 0x91, 0x9e, 0x6b, 0x59, 0x90, 0xa0, 0xb5, 0x79, 0xfa, 0x1e,
+ 0x61, 0x3b, 0x8d, 0x5c, 0xf6, 0x6e, 0xe6, 0x7b, 0x98, 0x5d, 0x3a, 0xe6,
+ 0xc7, 0x75, 0xbb, 0x79, 0x4e, 0x82, 0xd0, 0x6b, 0x50, 0xd2, 0xdc, 0x9d,
+ 0x0e, 0x88, 0x5b, 0x75, 0xa9, 0xeb, 0x1d, 0xa3, 0x4b, 0xcb, 0x89, 0xf4,
+ 0x46, 0x77, 0x5f, 0x16, 0x3e, 0x5d, 0xc2, 0xc2, 0x6b, 0x90, 0xc6, 0x2e,
+ 0x23, 0x5f, 0x42, 0x86, 0xb5, 0x39, 0xdc, 0x93, 0x8b, 0x87, 0x9b, 0x43,
+ 0x21, 0x67, 0x39, 0x17, 0x27, 0xc1, 0xa3, 0xc1, 0xc3, 0x3f, 0x25, 0x0b,
+ 0x47, 0x4f, 0xb5, 0x5a, 0xe0, 0xe1, 0x57, 0x5d, 0x34, 0x15, 0xef, 0x08,
+ 0xe9, 0x64, 0x50, 0xe6, 0x93, 0x05, 0x5a, 0x93, 0x92, 0xea, 0x8a, 0x77,
+ 0x68, 0xac, 0xe3, 0x6c, 0xdd, 0xcf, 0x59, 0x65, 0x04, 0x7d, 0x43, 0x0c,
+ 0xde, 0x8e, 0xc2, 0x63, 0xd8, 0x1c, 0xd3, 0xac, 0x50, 0x78, 0xfb, 0xb6,
+ 0xca, 0xd3, 0x76, 0x88, 0x2c, 0x87, 0xd8, 0x4d, 0x29, 0x02, 0x74, 0xd7,
+ 0x7e, 0x87, 0x68, 0xb7, 0x4d, 0x2e, 0x33, 0x4a, 0x51, 0xf2, 0x97, 0xf3,
+ 0x85, 0xd9, 0x69, 0xab, 0x99, 0x15, 0x8f, 0xbc, 0x95, 0x70, 0x8b, 0xe9,
+ 0x0a, 0x82, 0x85, 0x07, 0xec, 0xac, 0xb8, 0x24, 0x8c, 0x99, 0x95, 0xc7,
+ 0xec, 0x84, 0x00, 0x5b, 0x56, 0xbe, 0x6d, 0x04, 0xb5, 0x83, 0xbd, 0xe4,
+ 0x4c, 0xf3, 0x93, 0xc1, 0xe1, 0xd8, 0xc5, 0x85, 0xdd, 0x2d, 0xee, 0xec,
+ 0xc8, 0x5a, 0x68, 0xfd, 0xae, 0xf1, 0x96, 0x2c, 0x4f, 0xd7, 0x71, 0x5a,
+ 0x91, 0xad, 0x03, 0x0d, 0x43, 0x3e, 0x6d, 0x28, 0xcf, 0x5c, 0x8b, 0xe7,
+ 0xa2, 0x3d, 0x61, 0x52, 0x2b, 0x14, 0x27, 0x62, 0xe2, 0x03, 0x00, 0x46,
+ 0x3c, 0x6b, 0x87, 0x98, 0x39, 0xb8, 0xc5, 0xce, 0xb3, 0x93, 0xd3, 0x13,
+ 0xda, 0x8b, 0x4e, 0xe4, 0xdb, 0x39, 0xc6, 0x79, 0x6e, 0xda, 0xb1, 0x36,
+ 0x8e, 0x1f, 0xbb, 0xb6, 0x80, 0xb9, 0x3b, 0x46, 0x5c, 0x15, 0x90, 0x63,
+ 0xdb, 0xb1, 0xd2, 0x9e, 0x61, 0xa5, 0x8a, 0x21, 0x85, 0x4c, 0x68, 0xb5,
+ 0x8b, 0x46, 0xb5, 0x1e, 0xf6, 0x8c, 0x1b, 0x9f, 0x9e, 0xf8, 0xd2, 0xe1,
+ 0xd0, 0x7f, 0xf9, 0x08, 0x43, 0xd8, 0x9a, 0xc6, 0xd3, 0x8c, 0xca, 0x08,
+ 0xe4, 0x62, 0x6e, 0x92, 0x6a, 0x43, 0x57, 0x09, 0x03, 0x6b, 0x93, 0x85,
+ 0x14, 0xc3, 0x8c, 0x58, 0xb5, 0x18, 0xd7, 0xa2, 0xd9, 0xa3, 0x7c, 0xd2,
+ 0xdc, 0x6f, 0xe3, 0xa2, 0x07, 0xb6, 0xa0, 0x16, 0xaa, 0x2f, 0x96, 0x04,
+ 0xc3, 0x99, 0x43, 0x85, 0x4d, 0xd2, 0xa4, 0x25, 0xc1, 0x93, 0x52, 0xee,
+ 0x71, 0x44, 0xaa, 0x10, 0x52, 0x95, 0xd0, 0x51, 0x5a, 0x78, 0x24, 0x86,
+ 0x26, 0x06, 0x5e, 0xb5, 0x88, 0xd3, 0x00, 0x89, 0x78, 0x29, 0x2c, 0x49,
+ 0xd4, 0x12, 0xda, 0x6a, 0xc4, 0x36, 0x4f, 0xc5, 0x7f, 0x28, 0x8f, 0xa7,
+ 0xb3, 0x4b, 0xdc, 0x64, 0x3f, 0x32, 0xa3, 0x9e, 0x8b, 0xd9, 0x52, 0x0c,
+ 0xc6, 0xdd, 0xa9, 0xfb, 0x58, 0xd9, 0x3e, 0x4d, 0xbe, 0xb1, 0x3b, 0x0a,
+ 0xcc, 0x24, 0xcb, 0xca, 0xab, 0x35, 0x3d, 0x7b, 0xe9, 0xe5, 0x28, 0xae,
+ 0xdb, 0x6e, 0xe3, 0xa2, 0xcb, 0x2d, 0xc3, 0x8d, 0x72, 0x48, 0x3f, 0x82,
+ 0xa8, 0x62, 0x91, 0xda, 0xdc, 0xa2, 0xe7, 0x2f, 0x4f, 0x4f, 0xb6, 0xa2,
+ 0x37, 0x12, 0xfa, 0x85, 0x9a, 0xea, 0x5d, 0x45, 0xab, 0x0c, 0x0d, 0x6c,
+ 0x66, 0x3d, 0x10, 0x46, 0x19, 0x5d, 0x0a, 0xb5, 0xbe, 0x51, 0x3e, 0x0c,
+ 0x06, 0xd2, 0x6d, 0x49, 0xc0, 0x18, 0xfb, 0x6b, 0xb6, 0x77, 0x7b, 0xbb,
+ 0x5c, 0xc7, 0x04, 0xb7, 0xc3, 0x51, 0xcd, 0xd9, 0x64, 0x97, 0xb0, 0x3c,
+ 0x33, 0x89, 0xa8, 0xeb, 0x26, 0x4d, 0xbf, 0xc1, 0x8e, 0x4b, 0xdf, 0x75,
+ 0x4c, 0xe7, 0xdb, 0xda, 0x64, 0x6e, 0x92, 0x3b, 0x7f, 0x6b, 0x77, 0xe2,
+ 0x47, 0x5f, 0x7d, 0x55, 0x93, 0xa7, 0x95, 0xff, 0xa2, 0x1d, 0xe6, 0xf1,
+ 0xce, 0x0e, 0xcd, 0xcd, 0x03, 0xe4, 0x87, 0x2f, 0xe2, 0xaf, 0xe8, 0xc5,
+ 0xfa, 0x6b, 0x65, 0x0a, 0x74, 0x34, 0x6a, 0x7f, 0x2f, 0xc6, 0x6f, 0x02,
+ 0xdd, 0x11, 0xc5, 0xb4, 0xbe, 0xf5, 0x15, 0x76, 0x17, 0x78, 0x8b, 0x1e,
+ 0xe6, 0x75, 0xcc, 0xc7, 0x63, 0xa4, 0x37, 0x7c, 0x52, 0xab, 0x89, 0xdd,
+ 0x24, 0xc5, 0xc8, 0x9f, 0xee, 0x4e, 0x37, 0xde, 0x6d, 0x9b, 0x2e, 0xf1,
+ 0x41, 0x4a, 0xf6, 0xc3, 0xfd, 0x44, 0xc6, 0xb0, 0xf9, 0x87, 0x2d, 0x46,
+ 0x94, 0x6b, 0x36, 0xb4, 0x0b, 0x23, 0xda, 0xfd, 0xea, 0xab, 0x2e, 0x8e,
+ 0xec, 0xf1, 0x57, 0x5f, 0xb5, 0x96, 0x3b, 0x70, 0xba, 0xb9, 0xc9, 0xad,
+ 0xf3, 0x00, 0x5f, 0xb7, 0x44, 0x53, 0x42, 0x37, 0x51, 0xb8, 0x1f, 0xfc,
+ 0x26, 0xfa, 0x3a, 0x7a, 0x7d, 0x76, 0x71, 0xe2, 0x98, 0xe9, 0xe9, 0x04,
+ 0x71, 0x40, 0x91, 0x63, 0x97, 0xa2, 0x10, 0xb0, 0x39, 0xe6, 0xe3, 0xb0,
+ 0x11, 0x70, 0xba, 0x98, 0xf8, 0xf6, 0x32, 0x42, 0x3d, 0x53, 0xaf, 0x95,
+ 0xa2, 0x71, 0xe9, 0x89, 0x64, 0xd1, 0x87, 0xa2, 0xd3, 0xe2, 0x8c, 0xb2,
+ 0x66, 0xe8, 0xdc, 0xfd, 0x17, 0xf0, 0xcd, 0xa4, 0x28, 0x7d, 0x1c, 0x09,
+ 0x34, 0x1a, 0xa9, 0x95, 0x4c, 0x0c, 0x96, 0x79, 0x31, 0x35, 0xfe, 0x08,
+ 0xe3, 0x1c, 0x13, 0x93, 0x86, 0xfc, 0x9d, 0x0d, 0xb2, 0x49, 0x56, 0xdd,
+ 0xb5, 0xd8, 0xcb, 0x40, 0x48, 0x0c, 0xe8, 0x61, 0x67, 0xec, 0xbd, 0xbe,
+ 0xcc, 0x2a, 0xb7, 0x0a, 0xde, 0x26, 0x50, 0xe1, 0x16, 0x59, 0xa9, 0x39,
+ 0x89, 0x4a, 0x22, 0x41, 0x36, 0x4a, 0xc4, 0x2f, 0xe3, 0xb4, 0x75, 0xfc,
+ 0x23, 0x9f, 0x6f, 0x78, 0x76, 0xb0, 0x74, 0x82, 0xc6, 0x20, 0x91, 0xe6,
+ 0xf8, 0x85, 0x98, 0x9e, 0x94, 0x73, 0x4c, 0xa6, 0xb6, 0x5b, 0x72, 0xcc,
+ 0x27, 0x54, 0x23, 0xda, 0xed, 0x3c, 0x60, 0x37, 0xa4, 0xba, 0x71, 0x14,
+ 0x41, 0xab, 0x18, 0x83, 0xd8, 0x8c, 0x9b, 0xd7, 0xbe, 0xe1, 0x2c, 0x88,
+ 0x61, 0x81, 0x33, 0x24, 0x10, 0xaf, 0x88, 0x2e, 0x3b, 0xf8, 0x47, 0xe9,
+ 0x5c, 0xf3, 0xbf, 0x67, 0xf5, 0x76, 0xe0, 0x90, 0x8d, 0xb3, 0xcb, 0x45,
+ 0x11, 0x4e, 0x04, 0x46, 0x9b, 0xa1, 0x86, 0xa8, 0x12, 0xd3, 0x43, 0xd1,
+ 0xfb, 0x26, 0x51, 0x04, 0xbe, 0x29, 0x9a, 0x6a, 0x95, 0xe9, 0xa8, 0xf5,
+ 0x4e, 0x11, 0xef, 0xae, 0x12, 0x0f, 0xd1, 0x8c, 0xb6, 0x72, 0x0c, 0x0a,
+ 0x0e, 0xda, 0x3a, 0x25, 0xb4, 0x9a, 0x7c, 0x4f, 0xd4, 0x9a, 0x81, 0x18,
+ 0x14, 0x37, 0x17, 0x52, 0x21, 0x0a, 0x84, 0x54, 0x88, 0x9a, 0x96, 0x20,
+ 0x90, 0xb5, 0x45, 0xd3, 0x57, 0xcf, 0x3e, 0x3e, 0x8d, 0xb3, 0xbb, 0xb9,
+ 0xca, 0xb1, 0xe2, 0x1f, 0xf0, 0x4b, 0xe4, 0x8f, 0x7e, 0xb5, 0x14, 0x64,
+ 0x8a, 0xb4, 0xa3, 0xcc, 0x1f, 0x79, 0x9b, 0xe0, 0xf9, 0x9b, 0xd9, 0x24,
+ 0x4f, 0x46, 0x25, 0x5f, 0xe4, 0x1a, 0x0d, 0x48, 0xcb, 0xc5, 0x35, 0x1c,
+ 0x65, 0x73, 0xbd, 0x80, 0x5c, 0xdc, 0x6b, 0xde, 0xe5, 0x68, 0xd3, 0xa9,
+ 0xe5, 0x43, 0x87, 0xc7, 0x31, 0x85, 0x32, 0x03, 0x45, 0x5a, 0xe1, 0xca,
+ 0x34, 0x5b, 0x3d, 0x1a, 0x4b, 0xa0, 0xe4, 0x1f, 0xef, 0x57, 0xa9, 0xbb,
+ 0x95, 0xde, 0x56, 0xf0, 0x67, 0x3a, 0x72, 0xed, 0xb3, 0x51, 0xff, 0xe5,
+ 0x7f, 0x9f, 0xb4, 0xde, 0xaf, 0x97, 0xe9, 0x67, 0x0b, 0x9c, 0xe1, 0xde,
+ 0xf7, 0xf6, 0xe2, 0x47, 0x8f, 0xd6, 0xbb, 0x4f, 0x8f, 0x09, 0x26, 0x37,
+ 0x9f, 0x91, 0x25, 0x3e, 0x4e, 0x24, 0xb7, 0x37, 0xc1, 0x4f, 0x93, 0x39,
+ 0xae, 0x47, 0x5d, 0xda, 0x43, 0x9f, 0xd6, 0x14, 0x56, 0x5c, 0xfd, 0xfe,
+ 0xf8, 0xc9, 0xb2, 0xec, 0x01, 0x78, 0x36, 0x9b, 0x2e, 0xa6, 0xd6, 0x1b,
+ 0x32, 0xa6, 0x37, 0x67, 0xc3, 0x3b, 0x26, 0x3a, 0x2a, 0x06, 0x66, 0x42,
+ 0xf1, 0x09, 0xb3, 0xc3, 0x3b, 0x4d, 0x33, 0xe7, 0x12, 0xb4, 0x85, 0x2f,
+ 0x91, 0x28, 0xc8, 0xc1, 0xc1, 0xaa, 0xf0, 0x62, 0x96, 0x61, 0x7d, 0xb0,
+ 0x7c, 0x9a, 0xb2, 0x70, 0x4c, 0x7c, 0x68, 0xd4, 0x06, 0xaf, 0x48, 0xe3,
+ 0x06, 0x4a, 0xa8, 0x55, 0xe8, 0x33, 0x58, 0x0f, 0xae, 0x63, 0x83, 0x3b,
+ 0x12, 0xb5, 0x0b, 0x6b, 0x41, 0xb6, 0x54, 0xb1, 0x44, 0xb9, 0x6e, 0x4c,
+ 0x86, 0xd6, 0x52, 0x63, 0xe1, 0xd3, 0x60, 0xdc, 0x26, 0x33, 0x19, 0x43,
+ 0x1c, 0x6f, 0xdf, 0x9c, 0x72, 0xf8, 0x4e, 0x52, 0xf3, 0x18, 0xc1, 0xbe,
+ 0xd1, 0xdd, 0x08, 0x2d, 0x92, 0x13, 0x2e, 0x99, 0x05, 0x54, 0x38, 0x5a,
+ 0x3d, 0x9c, 0x24, 0x4c, 0xc6, 0x4d, 0x09, 0xb8, 0x49, 0x60, 0x2d, 0x16,
+ 0xb0, 0xa5, 0x13, 0x3e, 0x01, 0x18, 0x92, 0x6e, 0x1a, 0xa7, 0xb0, 0x06,
+ 0x9c, 0x93, 0x27, 0x99, 0xe2, 0x0e, 0x98, 0x2a, 0xf7, 0x2e, 0xce, 0xaa,
+ 0x74, 0x51, 0x97, 0xdc, 0x35, 0x08, 0x87, 0x45, 0xee, 0x00, 0x1e, 0x15,
+ 0xfa, 0x45, 0x0b, 0xdc, 0x85, 0x89, 0xc6, 0xb1, 0x04, 0xe3, 0x9a, 0x5c,
+ 0x4a, 0xaa, 0x1d, 0x1f, 0x68, 0xbf, 0xf3, 0x7a, 0xfb, 0x6d, 0x47, 0x72,
+ 0x1f, 0x5e, 0x8b, 0x41, 0x50, 0x6d, 0x5d, 0x40, 0x13, 0xb1, 0xe7, 0xfb,
+ 0x2d, 0x98, 0xc5, 0xbc, 0x65, 0xf3, 0x98, 0x21, 0x0c, 0xcc, 0x02, 0x50,
+ 0x0b, 0x3c, 0xfe, 0xcd, 0x9e, 0xd1, 0x8d, 0x72, 0x03, 0x28, 0x86, 0x24,
+ 0x9e, 0xad, 0x6e, 0xb4, 0x31, 0x6d, 0x5e, 0x32, 0x9b, 0x70, 0x13, 0x2e,
+ 0x80, 0x4c, 0xe0, 0xbb, 0x2b, 0x78, 0x12, 0x08, 0xa5, 0xa0, 0x18, 0xbb,
+ 0x68, 0x63, 0xb4, 0x11, 0x6d, 0x6f, 0x8e, 0x12, 0x8e, 0x94, 0x24, 0x31,
+ 0x6d, 0x0f, 0x8e, 0x1d, 0x46, 0x20, 0x50, 0xf3, 0xc8, 0x62, 0x2e, 0xbc,
+ 0xdd, 0x32, 0x6e, 0x33, 0x1a, 0x16, 0x3d, 0xd8, 0x95, 0x92, 0x5d, 0x1d,
+ 0x9c, 0xa6, 0x33, 0xf7, 0x2e, 0xb9, 0xfd, 0xea, 0x44, 0xef, 0xb9, 0x82,
+ 0x90, 0xa9, 0x21, 0xf9, 0x63, 0xbf, 0x21, 0x4a, 0xd3, 0x20, 0x96, 0x2a,
+ 0x9f, 0x90, 0x3a, 0xc1, 0x67, 0x6d, 0x77, 0xc7, 0xc2, 0xcb, 0xe2, 0xdb,
+ 0x11, 0x4f, 0xb2, 0x4b, 0xd5, 0xd5, 0x85, 0xe4, 0x03, 0x61, 0x6b, 0x8d,
+ 0x43, 0x60, 0x2b, 0x56, 0x33, 0x99, 0x3d, 0x11, 0xc9, 0xb1, 0xa4, 0x0b,
+ 0x28, 0x4a, 0x27, 0xc9, 0x9c, 0xf4, 0x55, 0x52, 0xe5, 0x7c, 0xc2, 0x05,
+ 0x95, 0xf0, 0x3a, 0xc3, 0x9a, 0x4b, 0x86, 0x2a, 0x31, 0xbe, 0x5b, 0xa8,
+ 0x32, 0xec, 0x88, 0x1a, 0x2f, 0x66, 0x1c, 0xcc, 0x40, 0xc5, 0x48, 0xa6,
+ 0x30, 0xce, 0x4c, 0x84, 0x55, 0xb8, 0x94, 0xd1, 0xc6, 0x43, 0xaa, 0xa5,
+ 0x84, 0xe1, 0x99, 0x93, 0x81, 0xec, 0x26, 0xc0, 0x00, 0x90, 0xfd, 0x50,
+ 0x2c, 0x48, 0xc5, 0x65, 0xdd, 0xe8, 0x7c, 0x81, 0x4c, 0xb7, 0x43, 0x4b,
+ 0xc2, 0xed, 0x52, 0x80, 0x5e, 0xed, 0xa2, 0x2b, 0x16, 0x58, 0x90, 0xd4,
+ 0xf7, 0xba, 0xa2, 0x11, 0x6c, 0x18, 0x1a, 0x38, 0x45, 0x74, 0x61, 0x86,
+ 0x09, 0xe5, 0x04, 0x99, 0xd2, 0x77, 0xdd, 0x48, 0xaf, 0x61, 0x8b, 0x1b,
+ 0x40, 0x4f, 0x29, 0x32, 0xa1, 0x8a, 0x99, 0x3e, 0x4c, 0x6d, 0x81, 0x65,
+ 0x15, 0xb1, 0xec, 0xf1, 0x24, 0xbf, 0xcc, 0x86, 0x26, 0x3e, 0x8c, 0x92,
+ 0x51, 0xf2, 0x4a, 0x23, 0x5c, 0x28, 0x48, 0xba, 0x25, 0xd3, 0xd6, 0x3b,
+ 0x66, 0x9f, 0xe2, 0x96, 0x2a, 0xdb, 0xaf, 0x29, 0xe8, 0x7d, 0x6f, 0xbb,
+ 0x5c, 0x03, 0x3e, 0x86, 0x5e, 0xd9, 0xdf, 0xbe, 0x5a, 0xf7, 0x95, 0xdd,
+ 0x47, 0xdb, 0xd3, 0x35, 0x55, 0x4b, 0x2a, 0x62, 0xc8, 0x6f, 0x73, 0x10,
+ 0x1f, 0xad, 0x78, 0x4c, 0x2b, 0x5e, 0x4b, 0xae, 0x63, 0xcb, 0x84, 0x7b,
+ 0x2f, 0xde, 0x18, 0xe8, 0x6a, 0xda, 0x74, 0x5c, 0x1c, 0x22, 0x20, 0x53,
+ 0xd8, 0x2d, 0x99, 0x88, 0xab, 0x13, 0xa4, 0x14, 0x0e, 0xa4, 0xa3, 0x58,
+ 0x66, 0x92, 0x0e, 0xc7, 0x41, 0xd7, 0x38, 0x85, 0x01, 0x3b, 0x15, 0x9c,
+ 0x19, 0xf2, 0x89, 0xc0, 0x88, 0x39, 0x00, 0x83, 0xa9, 0x72, 0x4a, 0x61,
+ 0x1c, 0xe4, 0xfe, 0xc4, 0x38, 0x14, 0xae, 0x20, 0xeb, 0x93, 0x29, 0xd5,
+ 0xb2, 0xc7, 0x41, 0xc1, 0x58, 0x97, 0x06, 0x5d, 0xe2, 0x5c, 0xee, 0x11,
+ 0x6f, 0x69, 0x03, 0xcf, 0x60, 0x9a, 0xcd, 0xbe, 0x1a, 0x71, 0x68, 0xa1,
+ 0x2e, 0x57, 0xca, 0x33, 0x37, 0xeb, 0x26, 0xbb, 0x17, 0xb1, 0x2e, 0x90,
+ 0xb3, 0x35, 0x29, 0xdb, 0xad, 0x30, 0x68, 0xb6, 0x88, 0x0e, 0xe1, 0xb2,
+ 0x6d, 0x01, 0x1c, 0xef, 0x93, 0xe4, 0x87, 0xc4, 0xdf, 0x79, 0x93, 0x52,
+ 0x51, 0xea, 0x02, 0x74, 0xa6, 0xcb, 0xb4, 0xe3, 0xd6, 0x01, 0x57, 0x33,
+ 0x2b, 0x6d, 0x9f, 0x38, 0x99, 0x43, 0xbc, 0x0a, 0x35, 0x79, 0x15, 0xdc,
+ 0xf1, 0x18, 0x39, 0x71, 0xf4, 0x0a, 0x6a, 0x3c, 0x49, 0x64, 0xdf, 0x17,
+ 0x05, 0xe6, 0x3e, 0x18, 0xa2, 0x09, 0x01, 0xfd, 0x21, 0x65, 0xaa, 0xd7,
+ 0xc4, 0x04, 0xef, 0xb3, 0x70, 0x16, 0x75, 0xfe, 0x84, 0x21, 0x69, 0x1d,
+ 0x1d, 0x99, 0x9d, 0x2b, 0x86, 0xcb, 0x7b, 0xfe, 0x7e, 0x1b, 0x8b, 0x51,
+ 0x0f, 0x64, 0x2b, 0x45, 0x84, 0x37, 0x7c, 0x19, 0xdf, 0x56, 0xa4, 0x0c,
+ 0xd0, 0xc5, 0x39, 0xe2, 0xce, 0x4b, 0xbb, 0x38, 0x95, 0x51, 0x1d, 0x44,
+ 0x12, 0x0b, 0xc9, 0xb6, 0x2c, 0x1d, 0x53, 0x3d, 0x2b, 0x8b, 0x19, 0xd5,
+ 0x04, 0x24, 0xf3, 0xae, 0x06, 0x7c, 0x04, 0x34, 0x0b, 0x51, 0x63, 0x70,
+ 0x40, 0x74, 0xd7, 0x73, 0xe0, 0x51, 0x6d, 0x1b, 0x5b, 0xc4, 0x6f, 0x99,
+ 0xf7, 0x7a, 0xac, 0x6d, 0x69, 0x04, 0xd9, 0xba, 0xbc, 0x4d, 0x46, 0xd0,
+ 0x51, 0xba, 0x1d, 0xc3, 0x6a, 0x6b, 0xf8, 0x7a, 0x67, 0x1d, 0xf6, 0xb5,
+ 0xac, 0x21, 0x59, 0xdb, 0xf8, 0xf4, 0x21, 0x0d, 0x2e, 0x7f, 0xb9, 0xf5,
+ 0x6c, 0x1d, 0xe1, 0xea, 0xa3, 0x6f, 0x31, 0x4e, 0x2e, 0x29, 0x62, 0x0a,
+ 0x99, 0xe3, 0x8b, 0xae, 0x21, 0x67, 0xe7, 0xbc, 0xfd, 0x99, 0x37, 0x0a,
+ 0x23, 0xd6, 0xe4, 0xcb, 0x38, 0xe0, 0x89, 0x93, 0x43, 0xd7, 0xc0, 0x27,
+ 0xa9, 0x18, 0xc2, 0x4f, 0xe9, 0x98, 0xda, 0x10, 0xaf, 0x9a, 0x9e, 0x3e,
+ 0xb1, 0x98, 0x04, 0xc3, 0xdf, 0x62, 0x6b, 0x39, 0x3b, 0x66, 0x1c, 0xf8,
+ 0x18, 0x58, 0x14, 0xc8, 0xe2, 0x5c, 0x63, 0x95, 0xcc, 0xb5, 0x8c, 0x64,
+ 0xae, 0xac, 0x93, 0xfc, 0x67, 0x41, 0xa8, 0x9f, 0xa1, 0xc1, 0xbb, 0xb3,
+ 0x6f, 0x99, 0x40, 0x4e, 0x38, 0x1c, 0x46, 0xd2, 0x90, 0xae, 0x0d, 0xc9,
+ 0x8d, 0xc3, 0x21, 0x27, 0x2e, 0x0e, 0x20, 0x17, 0xb7, 0xaa, 0x5c, 0x63,
+ 0x31, 0x9e, 0x14, 0x38, 0xcf, 0x18, 0x25, 0x3f, 0xd6, 0xc0, 0x96, 0xb6,
+ 0x00, 0x0d, 0x85, 0x04, 0x6b, 0x15, 0xa8, 0x23, 0x35, 0xf1, 0x96, 0xc9,
+ 0xb5, 0xcd, 0xae, 0x11, 0xe0, 0x17, 0x37, 0x72, 0x0d, 0xee, 0x16, 0xf9,
+ 0xb2, 0xcd, 0xbb, 0xd2, 0xc8, 0xa4, 0x8c, 0xa5, 0x30, 0x7c, 0x8c, 0x05,
+ 0xb8, 0x03, 0xa7, 0xd0, 0xc5, 0x00, 0x34, 0x76, 0xb3, 0xc4, 0x3a, 0x22,
+ 0x45, 0xcf, 0x11, 0xb4, 0x44, 0x62, 0x6d, 0x9c, 0x20, 0x16, 0x20, 0x11,
+ 0x2d, 0xff, 0xca, 0x39, 0x66, 0x25, 0xa3, 0xd3, 0xd3, 0x9a, 0xb8, 0x4e,
+ 0x2e, 0x77, 0x3a, 0x2a, 0xae, 0x71, 0x5a, 0x54, 0xd3, 0xd2, 0x05, 0x83,
+ 0xba, 0x29, 0xd0, 0x00, 0xc0, 0x6e, 0x6d, 0xcd, 0xe3, 0x13, 0xb4, 0xff,
+ 0x21, 0x2c, 0x4f, 0xcf, 0xc9, 0xab, 0x53, 0xe3, 0x2d, 0x81, 0x08, 0xb6,
+ 0xa6, 0x71, 0xdc, 0xd5, 0x26, 0x47, 0x29, 0xe6, 0x55, 0x9b, 0x86, 0x14,
+ 0xda, 0x2a, 0xca, 0x75, 0x23, 0xc8, 0x30, 0xc7, 0xf8, 0xc2, 0x29, 0x4e,
+ 0xd1, 0xef, 0x63, 0x2e, 0x57, 0x8b, 0x41, 0x48, 0x9b, 0x77, 0x69, 0xb5,
+ 0xe5, 0xa4, 0x49, 0x11, 0xa9, 0x7d, 0xd1, 0xe2, 0xed, 0x15, 0xd3, 0x8e,
+ 0x1d, 0x06, 0x7a, 0x15, 0x9c, 0x28, 0x69, 0x5e, 0x78, 0x10, 0x72, 0x28,
+ 0x2d, 0x1b, 0x84, 0x79, 0x98, 0x4a, 0xd5, 0xde, 0x9c, 0x6f, 0x72, 0xfe,
+ 0xe1, 0xe8, 0xcd, 0xeb, 0x97, 0xaf, 0xbf, 0x3f, 0x40, 0x8e, 0x98, 0x16,
+ 0x43, 0x34, 0x1d, 0x46, 0xbf, 0x2e, 0x46, 0xd9, 0x90, 0x6e, 0x0e, 0x76,
+ 0xb4, 0x8c, 0xeb, 0xe0, 0x89, 0xa9, 0xc4, 0x50, 0x51, 0x91, 0xd6, 0x66,
+ 0x73, 0x9c, 0xf9, 0x8f, 0xd8, 0x8f, 0x45, 0x7e, 0xb9, 0x30, 0x14, 0x34,
+ 0x24, 0xfb, 0x17, 0x85, 0xcd, 0x51, 0xa8, 0x37, 0xa9, 0x1e, 0x74, 0x10,
+ 0xf1, 0xd4, 0xc2, 0xc9, 0x7c, 0x76, 0x7a, 0x8a, 0xf2, 0x51, 0x73, 0xa3,
+ 0x69, 0x5e, 0xec, 0x72, 0xa3, 0xec, 0x3a, 0xcd, 0xf4, 0x46, 0x23, 0x13,
+ 0xde, 0x40, 0xb5, 0x8b, 0x6f, 0x70, 0x67, 0x90, 0x07, 0x28, 0x1d, 0x76,
+ 0x1a, 0x30, 0x9e, 0x11, 0xe4, 0x48, 0x51, 0xc1, 0x2d, 0x99, 0x8f, 0x2b,
+ 0x34, 0xc3, 0x2d, 0x17, 0x9f, 0x3c, 0xde, 0xd7, 0x22, 0x4d, 0x89, 0x38,
+ 0x05, 0xe4, 0xe1, 0x6b, 0x76, 0xab, 0x90, 0xe2, 0xfc, 0x4e, 0xd6, 0x94,
+ 0xaf, 0xce, 0xfe, 0x1c, 0xba, 0x01, 0xb6, 0x89, 0xdd, 0xb4, 0x5e, 0x03,
+ 0x67, 0xdd, 0x3a, 0x5f, 0xae, 0x49, 0xc0, 0xf6, 0x63, 0x44, 0x8a, 0x5b,
+ 0x86, 0x43, 0xc5, 0xf1, 0xb5, 0xf5, 0x72, 0xc8, 0x12, 0xa8, 0x8e, 0xce,
+ 0x2c, 0x14, 0x94, 0xd9, 0x46, 0x42, 0xa6, 0x11, 0x0a, 0x4e, 0xf7, 0x34,
+ 0x69, 0x90, 0x66, 0xc5, 0x4a, 0x5e, 0xa2, 0x0a, 0x5d, 0xbf, 0x2e, 0x6e,
+ 0xd2, 0x42, 0xc4, 0x0d, 0x53, 0x92, 0x02, 0xa4, 0x8e, 0x5e, 0xd4, 0xcf,
+ 0x25, 0xfb, 0xb1, 0x29, 0x64, 0x61, 0x71, 0x15, 0xb7, 0x5e, 0x30, 0x11,
+ 0x0e, 0x8d, 0xc5, 0x66, 0x5f, 0xa2, 0x44, 0xc4, 0x91, 0xc2, 0xab, 0x26,
+ 0x8b, 0xfb, 0x3b, 0x48, 0x8d, 0x12, 0x70, 0xa7, 0x11, 0xa0, 0x78, 0x30,
+ 0x3a, 0x31, 0xac, 0x63, 0x07, 0x69, 0xcd, 0xdd, 0xc7, 0xe0, 0x06, 0x06,
+ 0x88, 0x4a, 0x3b, 0x5c, 0x2a, 0x9f, 0xaf, 0x9f, 0x26, 0xd2, 0x68, 0x7d,
+ 0x6d, 0x51, 0xbd, 0x31, 0xb8, 0x80, 0x4b, 0x19, 0xc8, 0x6a, 0xb7, 0xe5,
+ 0xf3, 0xbd, 0x07, 0xd1, 0x5b, 0xf3, 0xab, 0x26, 0x4f, 0x29, 0x10, 0x57,
+ 0x4d, 0xf3, 0x74, 0x08, 0xa2, 0x97, 0xfd, 0x6f, 0x4e, 0x4c, 0x0c, 0x85,
+ 0xa2, 0x3a, 0xf1, 0xf5, 0xf4, 0xd5, 0x4d, 0x8a, 0xe6, 0xec, 0xe6, 0xda,
+ 0x6d, 0x9e, 0x71, 0xc5, 0x72, 0x79, 0xc8, 0x2d, 0x3c, 0xe3, 0xbe, 0x2c,
+ 0x97, 0x72, 0xd7, 0x7a, 0x8a, 0x19, 0x71, 0xad, 0xf2, 0x40, 0x7c, 0xc7,
+ 0x7e, 0x1a, 0x84, 0xbd, 0xb9, 0x8d, 0x50, 0x10, 0xba, 0xbe, 0xfd, 0xc0,
+ 0x14, 0x41, 0x5f, 0x0b, 0xd1, 0xb4, 0x0d, 0xc4, 0xd0, 0xa6, 0x28, 0x6e,
+ 0x5c, 0x91, 0xd9, 0x6a, 0x51, 0xec, 0xa4, 0x1a, 0x70, 0x9d, 0x9f, 0x40,
+ 0x73, 0x02, 0x75, 0x6a, 0xe2, 0x34, 0xc3, 0x63, 0x51, 0xd1, 0x25, 0x9b,
+ 0x5d, 0xe7, 0xf4, 0x8d, 0x98, 0x24, 0x03, 0xc9, 0x64, 0x4e, 0x36, 0x79,
+ 0x21, 0x09, 0x54, 0x4b, 0x64, 0x8b, 0x8b, 0xc6, 0x4a, 0xab, 0x07, 0x5e,
+ 0x11, 0x68, 0x60, 0x7e, 0x1a, 0x7a, 0x6b, 0x01, 0x83, 0x2d, 0x46, 0x70,
+ 0x93, 0x3c, 0xc4, 0x04, 0x0b, 0x47, 0xba, 0x4b, 0x97, 0xfb, 0x15, 0xbd,
+ 0x9c, 0x4e, 0xd0, 0xa1, 0xe6, 0x20, 0x08, 0xab, 0x08, 0x22, 0x12, 0x48,
+ 0x56, 0xb5, 0x58, 0x42, 0x1c, 0xd9, 0xc2, 0x60, 0xe1, 0x99, 0xf5, 0xb7,
+ 0xbe, 0x3d, 0xcc, 0x06, 0x67, 0x85, 0x19, 0x0d, 0xad, 0xc3, 0xab, 0x3c,
+ 0x97, 0xd4, 0xd2, 0xb6, 0xab, 0x37, 0x22, 0xb9, 0x9d, 0xcb, 0x4b, 0x05,
+ 0xae, 0x15, 0x2d, 0x02, 0x6e, 0xb5, 0x2b, 0xdc, 0xe0, 0x91, 0x07, 0xd3,
+ 0x92, 0x59, 0xd5, 0xd5, 0xac, 0x7a, 0x43, 0x7e, 0x95, 0xd1, 0x94, 0x46,
+ 0xe2, 0xd5, 0xab, 0x36, 0x94, 0x51, 0x0c, 0xbc, 0x91, 0x85, 0xb9, 0xf0,
+ 0xf2, 0x48, 0x56, 0xba, 0xbb, 0x28, 0x41, 0xd1, 0x87, 0x33, 0x1b, 0x88,
+ 0xaf, 0x1a, 0x4b, 0xc8, 0x88, 0xfc, 0x36, 0xb3, 0x7a, 0xb0, 0x25, 0x8d,
+ 0x35, 0xab, 0x88, 0xcb, 0xfd, 0x7e, 0x6f, 0xa7, 0xed, 0xca, 0xc7, 0x86,
+ 0x14, 0x14, 0x7b, 0x9e, 0x14, 0x26, 0xfa, 0x54, 0x84, 0x22, 0x5b, 0xda,
+ 0x09, 0x25, 0x0a, 0xc4, 0x67, 0x64, 0x1f, 0x29, 0xfc, 0x68, 0x5b, 0xff,
+ 0xb0, 0x63, 0x0e, 0xc5, 0x29, 0x56, 0x43, 0x1c, 0x5c, 0xe0, 0x92, 0xbd,
+ 0x72, 0xcc, 0x8e, 0x25, 0xcb, 0xdb, 0xda, 0x6f, 0xe9, 0x22, 0xf3, 0x0f,
+ 0x15, 0x9a, 0x4a, 0x03, 0xe5, 0x85, 0xdc, 0xab, 0xec, 0xc3, 0xab, 0x0b,
+ 0xb5, 0x09, 0x00, 0xad, 0xf7, 0x3f, 0xb1, 0xd3, 0x65, 0x50, 0xa1, 0x0d,
+ 0x7e, 0x4f, 0xe0, 0xa0, 0xf6, 0xec, 0x2a, 0x68, 0xe8, 0x9f, 0xbb, 0xce,
+ 0xb3, 0xcd, 0x89, 0x87, 0xe4, 0x96, 0xf8, 0x8d, 0xc3, 0xd3, 0x71, 0x8e,
+ 0x41, 0x38, 0x72, 0x66, 0xb0, 0x8e, 0x17, 0xdd, 0x31, 0x69, 0x58, 0x19,
+ 0x9a, 0x9c, 0xab, 0x69, 0xc4, 0x9e, 0x1d, 0xbe, 0x25, 0x7d, 0xff, 0x21,
+ 0x4c, 0x3b, 0xc0, 0xc5, 0xbb, 0xca, 0x00, 0x34, 0x9d, 0xcd, 0xc0, 0x2b,
+ 0x70, 0x57, 0x0c, 0x77, 0x97, 0x7b, 0xf0, 0x2c, 0x7a, 0xb9, 0xb0, 0x37,
+ 0x14, 0x5e, 0xa5, 0xa4, 0x7f, 0xda, 0x2b, 0xec, 0x69, 0x79, 0x16, 0xa8,
+ 0x33, 0xeb, 0x8f, 0x9f, 0x05, 0xea, 0x34, 0xfe, 0xc0, 0xab, 0x9d, 0xc6,
+ 0x05, 0x92, 0xcb, 0x38, 0xcf, 0xd7, 0x33, 0x1c, 0x34, 0xaf, 0x69, 0xb6,
+ 0x1c, 0xfc, 0x86, 0x9f, 0xd2, 0x9e, 0xa0, 0x9d, 0xbd, 0x29, 0x45, 0x5e,
+ 0xa7, 0x71, 0x3e, 0x8b, 0x43, 0x20, 0x2b, 0x3f, 0x98, 0xd4, 0x5c, 0x0d,
+ 0xf1, 0xb4, 0x5a, 0x1c, 0xe9, 0x5e, 0xe2, 0xe8, 0xc0, 0xdb, 0x4e, 0xef,
+ 0x7e, 0xd4, 0x1a, 0x35, 0xfa, 0x26, 0x70, 0xce, 0x95, 0x94, 0xf4, 0x20,
+ 0xdb, 0x98, 0x41, 0xda, 0xc1, 0x6b, 0xd1, 0xe8, 0xf5, 0x62, 0x03, 0x56,
+ 0x47, 0xa6, 0x75, 0x12, 0x68, 0x03, 0x3e, 0x8d, 0x14, 0x33, 0x94, 0x69,
+ 0x84, 0x74, 0xf5, 0x4c, 0x52, 0xbe, 0x97, 0x6c, 0x34, 0x91, 0xa0, 0x4b,
+ 0x19, 0x70, 0x0e, 0x4a, 0x10, 0x99, 0x61, 0xe8, 0xa3, 0x0f, 0x04, 0x51,
+ 0x44, 0xa3, 0x45, 0xe1, 0x3a, 0x0e, 0xda, 0x54, 0x6e, 0x9d, 0xaa, 0x94,
+ 0xcc, 0x93, 0x89, 0xdd, 0x5f, 0x13, 0xf5, 0x48, 0xd1, 0xd9, 0x82, 0x8f,
+ 0x5b, 0xd5, 0xaa, 0xd1, 0xf8, 0x43, 0xc8, 0xd1, 0x1d, 0x1b, 0x90, 0xa4,
+ 0xa6, 0x62, 0xaf, 0x43, 0x95, 0x63, 0xa4, 0x3f, 0x4c, 0xfe, 0xaa, 0xdb,
+ 0xf4, 0x1b, 0x70, 0xe3, 0xe2, 0xe0, 0x8a, 0x25, 0x40, 0xf6, 0x10, 0x05,
+ 0xba, 0x16, 0xe3, 0xb1, 0x5f, 0xdd, 0x85, 0x0c, 0xc0, 0x64, 0xec, 0x27,
+ 0xd0, 0xb1, 0x0e, 0x37, 0xd2, 0x89, 0x36, 0xb1, 0x95, 0x2d, 0x63, 0x81,
+ 0xf2, 0xab, 0x3b, 0x08, 0x0a, 0x89, 0x64, 0xcf, 0x27, 0xac, 0xe1, 0x34,
+ 0x91, 0x52, 0xc8, 0x00, 0x75, 0x8e, 0x24, 0x35, 0x5c, 0x4c, 0x92, 0x62,
+ 0x42, 0x17, 0xd2, 0x78, 0xd1, 0x24, 0x70, 0x3a, 0x14, 0x28, 0x88, 0x48,
+ 0x94, 0x7d, 0x56, 0x96, 0x0b, 0x31, 0x5e, 0x1b, 0x17, 0x20, 0x6d, 0x0e,
+ 0xf2, 0x49, 0x24, 0x56, 0xa6, 0x81, 0x72, 0x82, 0xd9, 0x94, 0x6d, 0xd7,
+ 0x2c, 0x47, 0x2a, 0x8a, 0xdd, 0xc6, 0xd4, 0x58, 0x60, 0x13, 0xb1, 0xf0,
+ 0xd2, 0x4b, 0x1c, 0x14, 0xdd, 0xc7, 0x73, 0xe4, 0xc9, 0xc5, 0xac, 0x4b,
+ 0xc2, 0x76, 0xa3, 0xb9, 0xce, 0xd9, 0xf9, 0xc5, 0xcb, 0xb3, 0xd7, 0xfd,
+ 0xe8, 0x0f, 0x9d, 0x36, 0x8b, 0x6e, 0x6d, 0x03, 0x3e, 0x6b, 0x45, 0xaf,
+ 0xc6, 0x58, 0x3a, 0x7f, 0xe8, 0x44, 0xf1, 0x8f, 0x91, 0xce, 0x60, 0x2d,
+ 0xea, 0xab, 0x45, 0xd2, 0xd6, 0x10, 0x1b, 0x1f, 0xd7, 0x08, 0xd0, 0x7d,
+ 0x2e, 0x3a, 0x9c, 0xa6, 0xb0, 0x4d, 0xa3, 0x36, 0xe7, 0x85, 0x63, 0x6c,
+ 0x1b, 0x82, 0xaa, 0x09, 0xac, 0x47, 0x5f, 0xe4, 0xf7, 0x94, 0x2c, 0x19,
+ 0xdc, 0xc0, 0x14, 0x16, 0xf2, 0x23, 0x2d, 0x9c, 0xba, 0x51, 0xae, 0x93,
+ 0x83, 0x04, 0x70, 0x6b, 0x0c, 0x6c, 0x34, 0x2e, 0x5e, 0xe3, 0xa0, 0x87,
+ 0xb0, 0x61, 0x6c, 0xa5, 0x6d, 0x92, 0xd7, 0x6c, 0xe4, 0x19, 0x3d, 0xb8,
+ 0xc9, 0xf2, 0xac, 0x58, 0x04, 0x4a, 0xdf, 0x79, 0xf1, 0xfd, 0xc9, 0xc5,
+ 0x96, 0xc0, 0x6b, 0x9b, 0xf1, 0x51, 0x04, 0x94, 0xa8, 0xe8, 0x89, 0x31,
+ 0x21, 0x28, 0xa0, 0x36, 0x8b, 0x22, 0xe9, 0xed, 0x7c, 0x92, 0xcc, 0x82,
+ 0xa0, 0x94, 0x98, 0xb9, 0x77, 0x0c, 0xcb, 0x81, 0x96, 0xc4, 0x64, 0xc4,
+ 0x92, 0xb2, 0xba, 0xe7, 0xcc, 0x11, 0xd1, 0xda, 0xb3, 0xe7, 0x6f, 0x2f,
+ 0xa8, 0x41, 0x8c, 0x9e, 0xbe, 0x38, 0x69, 0x86, 0x45, 0x21, 0xd4, 0x68,
+ 0x91, 0x4e, 0x28, 0xd0, 0xb9, 0x4a, 0x87, 0x57, 0xb3, 0x1c, 0x5d, 0xb4,
+ 0x69, 0xc9, 0x7a, 0xe6, 0x0f, 0xe9, 0xe0, 0xd9, 0xd1, 0xdf, 0x50, 0xf3,
+ 0x43, 0xaf, 0xfd, 0xf9, 0x9b, 0xb3, 0xf3, 0xe7, 0x2f, 0x5f, 0x3f, 0xeb,
+ 0x46, 0xc7, 0x67, 0xe7, 0x7f, 0xef, 0x46, 0xaf, 0xce, 0xfe, 0x76, 0xf2,
+ 0x85, 0x97, 0xf4, 0x43, 0xae, 0x69, 0x8f, 0x50, 0x5f, 0xa3, 0x33, 0x0a,
+ 0x4d, 0x57, 0x0c, 0x9f, 0x3d, 0xca, 0x49, 0x83, 0x89, 0x66, 0x1c, 0x2b,
+ 0xec, 0x08, 0xf8, 0x47, 0x6e, 0xb2, 0x06, 0xac, 0x5d, 0x37, 0x7a, 0x71,
+ 0x72, 0xf4, 0xac, 0x39, 0xec, 0xf3, 0xb3, 0x3e, 0xcf, 0x0a, 0x67, 0x67,
+ 0xa6, 0x8c, 0xd1, 0x11, 0x62, 0x21, 0x24, 0x5d, 0x8e, 0xa3, 0xb3, 0x99,
+ 0x35, 0x01, 0xbd, 0x66, 0x1c, 0xcf, 0xdd, 0x92, 0xc0, 0xc8, 0xf5, 0x3f,
+ 0x79, 0x18, 0x2d, 0x59, 0xa5, 0xc6, 0xe4, 0xcf, 0x15, 0x70, 0x5d, 0x8b,
+ 0x90, 0xd4, 0xa6, 0x25, 0xbc, 0x28, 0x55, 0x6a, 0xcc, 0x76, 0xb7, 0x44,
+ 0xf3, 0x74, 0x6b, 0xf5, 0x5e, 0x88, 0xf1, 0x72, 0x44, 0x5a, 0x22, 0x21,
+ 0xe5, 0x83, 0x14, 0x65, 0xed, 0x92, 0x4c, 0x40, 0x64, 0x13, 0x12, 0x4c,
+ 0xa1, 0xa0, 0x0b, 0xca, 0xda, 0x83, 0x48, 0xe0, 0x4b, 0xb4, 0x66, 0x2d,
+ 0x2e, 0x9f, 0x2e, 0x51, 0x57, 0x16, 0x03, 0x98, 0x00, 0x7d, 0xac, 0x9a,
+ 0x8f, 0x87, 0xef, 0x3e, 0x06, 0xc2, 0x4c, 0xb9, 0xf6, 0x30, 0x6f, 0x91,
+ 0xf1, 0x61, 0x88, 0xf7, 0xa4, 0x0d, 0x3d, 0x8b, 0x92, 0x81, 0xf8, 0xa0,
+ 0x88, 0x1f, 0x8d, 0xea, 0xe3, 0xaa, 0x37, 0xd1, 0xb2, 0x06, 0x65, 0x6b,
+ 0x72, 0xdc, 0x18, 0x1a, 0xd3, 0x33, 0x4a, 0xe9, 0xd6, 0x76, 0xa5, 0x4c,
+ 0x91, 0xe2, 0x80, 0xb9, 0xab, 0xc1, 0x6a, 0xb8, 0x71, 0x35, 0xa2, 0xa2,
+ 0xc3, 0x31, 0xaa, 0xbe, 0x37, 0x19, 0x3d, 0xd9, 0x14, 0x1b, 0x87, 0x31,
+ 0xee, 0x31, 0xcb, 0x01, 0x2e, 0x76, 0x8a, 0xd9, 0x0c, 0x35, 0x1c, 0xe8,
+ 0x68, 0x65, 0x4e, 0x5e, 0x1a, 0xed, 0x10, 0xf6, 0x5b, 0xae, 0x29, 0xb3,
+ 0xdb, 0xfb, 0x3b, 0xb7, 0x36, 0xe2, 0x12, 0x15, 0xbb, 0x32, 0x8a, 0x39,
+ 0x27, 0x8d, 0x31, 0x38, 0x83, 0xd9, 0xfe, 0x41, 0x6e, 0xe8, 0x46, 0xf0,
+ 0x99, 0xe2, 0x01, 0x06, 0x97, 0xe8, 0xf4, 0x25, 0x9c, 0x81, 0x40, 0x00,
+ 0xd3, 0x28, 0xc7, 0x11, 0x71, 0xd6, 0x1a, 0xa9, 0xb8, 0xb4, 0xf2, 0xd0,
+ 0x96, 0xdf, 0xf1, 0xf9, 0xd9, 0xf9, 0x7e, 0xb0, 0x67, 0xfc, 0x62, 0x55,
+ 0xd7, 0xde, 0x4d, 0xfb, 0xe6, 0xe4, 0xe2, 0x8d, 0xdf, 0xc7, 0xcb, 0x57,
+ 0x47, 0xe8, 0x33, 0xb3, 0x9d, 0xd8, 0x5e, 0xf0, 0xab, 0x15, 0xbd, 0x78,
+ 0x36, 0x2d, 0xb7, 0x8c, 0xea, 0x4e, 0x20, 0xbb, 0x6a, 0xb3, 0xff, 0xaa,
+ 0x65, 0x35, 0xf1, 0x8b, 0x25, 0xbd, 0xbd, 0x38, 0x39, 0x3d, 0xf7, 0xe7,
+ 0xf4, 0xb7, 0x37, 0xcf, 0xff, 0x5e, 0xcf, 0xe9, 0xda, 0x7f, 0x14, 0xe8,
+ 0x55, 0x82, 0x54, 0x84, 0x5a, 0x3e, 0x1e, 0x1a, 0xc8, 0x7a, 0xbe, 0xdc,
+ 0x1f, 0x39, 0x47, 0xe6, 0xe2, 0x64, 0x0d, 0xb7, 0xed, 0x8f, 0xd1, 0xeb,
+ 0x53, 0xd8, 0xcc, 0xb5, 0x80, 0x43, 0xea, 0x62, 0x45, 0x5d, 0xfa, 0x2c,
+ 0xf3, 0x09, 0x48, 0x8e, 0x87, 0x3f, 0xfd, 0x91, 0x90, 0x52, 0x09, 0x9c,
+ 0xec, 0x00, 0xee, 0xa8, 0xe2, 0xa7, 0x2e, 0xfe, 0xfb, 0x4b, 0xaf, 0xd7,
+ 0xfb, 0x26, 0x28, 0xc7, 0xa7, 0x76, 0xa3, 0xf0, 0x41, 0x4c, 0xfa, 0x6e,
+ 0x98, 0xb2, 0x09, 0xa8, 0x8e, 0x80, 0xf9, 0x30, 0xd2, 0x76, 0x9e, 0x64,
+ 0xe8, 0xfa, 0x7a, 0x5b, 0x86, 0xa4, 0x01, 0xba, 0x52, 0x2c, 0xb0, 0xa2,
+ 0xd1, 0x80, 0x45, 0x0b, 0x63, 0x9e, 0xb2, 0x59, 0x6e, 0x09, 0x8a, 0xb3,
+ 0x15, 0x11, 0x02, 0x76, 0x28, 0x1a, 0x0a, 0x75, 0xcb, 0x9a, 0x12, 0xeb,
+ 0x2e, 0x46, 0x08, 0x98, 0xe9, 0xc5, 0x26, 0x53, 0x1f, 0x99, 0xe1, 0x07,
+ 0x41, 0x45, 0x68, 0x5b, 0xf1, 0xf6, 0xe6, 0x34, 0x1b, 0x0a, 0x5f, 0x4b,
+ 0xe8, 0xc2, 0x43, 0x1a, 0xdc, 0x4e, 0xab, 0xe1, 0x36, 0xce, 0xb3, 0xac,
+ 0xc9, 0xe1, 0x86, 0x98, 0x3c, 0x2f, 0x94, 0x0b, 0x30, 0x41, 0x80, 0xbd,
+ 0x9c, 0x56, 0xe8, 0x60, 0x50, 0x59, 0xcc, 0x60, 0xc7, 0xb8, 0x63, 0x78,
+ 0x6e, 0x08, 0xdf, 0xd2, 0x2c, 0xb8, 0x03, 0xf8, 0x69, 0x40, 0x54, 0x5d,
+ 0x69, 0x14, 0x1b, 0x70, 0x50, 0x21, 0x7d, 0x4b, 0x11, 0x5d, 0x1d, 0x7a,
+ 0x00, 0x30, 0x83, 0x0d, 0xcf, 0x63, 0xe6, 0x5a, 0x1a, 0x2d, 0x10, 0x92,
+ 0xbb, 0xe9, 0x0a, 0x3e, 0x18, 0xa8, 0xf7, 0x48, 0x02, 0x8b, 0xb5, 0x05,
+ 0xe3, 0x4c, 0xc3, 0x68, 0x1f, 0x0e, 0xaa, 0xf5, 0xc6, 0x1f, 0x36, 0x50,
+ 0x1d, 0xa1, 0xd7, 0x83, 0x58, 0xda, 0x4a, 0xb5, 0x68, 0x0b, 0x0b, 0xa0,
+ 0xc8, 0x12, 0xef, 0xd6, 0x45, 0x31, 0xc4, 0x67, 0x50, 0x1b, 0x1c, 0xe2,
+ 0xa1, 0x29, 0x60, 0x78, 0xee, 0x64, 0x34, 0x4c, 0xb8, 0xfe, 0x80, 0x7f,
+ 0xf7, 0x0b, 0x99, 0x08, 0x1b, 0xc8, 0xa9, 0x57, 0x7b, 0x72, 0x24, 0x89,
+ 0xa2, 0x85, 0xea, 0xdb, 0x79, 0x05, 0xe7, 0x92, 0xb4, 0xe1, 0x3c, 0x4a,
+ 0x68, 0xaa, 0xac, 0x31, 0xf2, 0x1e, 0xca, 0x15, 0x6c, 0xd4, 0x79, 0x77,
+ 0xee, 0x63, 0x0a, 0x75, 0xf1, 0x05, 0x8d, 0x38, 0xce, 0xe6, 0xd7, 0x8f,
+ 0xd8, 0x11, 0x04, 0xbf, 0x3d, 0xd1, 0x70, 0xc4, 0xca, 0x05, 0x4c, 0x61,
+ 0x4d, 0x92, 0xf5, 0xae, 0x97, 0xe7, 0x9a, 0xac, 0x16, 0xda, 0x25, 0x86,
+ 0x49, 0x51, 0x84, 0x48, 0x21, 0x30, 0x45, 0x92, 0xf1, 0x8f, 0x2f, 0x27,
+ 0x41, 0x72, 0x0a, 0xb1, 0xe7, 0x9e, 0xb0, 0x78, 0x38, 0x1b, 0xa5, 0x71,
+ 0xd0, 0xe1, 0xb3, 0xa8, 0x26, 0x6e, 0xee, 0x4a, 0xc0, 0xe8, 0x16, 0x41,
+ 0x28, 0x57, 0xa9, 0xaa, 0x82, 0x6c, 0x46, 0x09, 0x2c, 0x2b, 0x8b, 0x78,
+ 0xe2, 0x5e, 0x48, 0x67, 0x62, 0xb1, 0x9f, 0xe4, 0x30, 0xd6, 0x62, 0x31,
+ 0xa3, 0xc4, 0x39, 0x13, 0x27, 0x6c, 0x42, 0x24, 0x75, 0xf4, 0x93, 0xdc,
+ 0x77, 0x9e, 0xd0, 0x8d, 0x0c, 0xc4, 0xf1, 0x72, 0xc6, 0xf8, 0x9d, 0x68,
+ 0x47, 0x29, 0x05, 0xe3, 0xa5, 0x96, 0x58, 0x48, 0x1b, 0x60, 0xa3, 0xa2,
+ 0x69, 0xca, 0xb9, 0x1f, 0xbd, 0x49, 0xd4, 0xc2, 0x27, 0x96, 0x69, 0x84,
+ 0x6c, 0xd9, 0x86, 0x1d, 0xdd, 0xd0, 0xb1, 0xcf, 0x25, 0x90, 0xd5, 0x2c,
+ 0x04, 0x1a, 0x42, 0xfc, 0xd0, 0x91, 0x39, 0xa1, 0x72, 0x79, 0x1c, 0x5f,
+ 0x92, 0x1a, 0x04, 0x2c, 0x5f, 0x8c, 0x2d, 0xd8, 0x1a, 0xec, 0xaa, 0xd2,
+ 0x12, 0xce, 0x18, 0xee, 0xc5, 0x9f, 0x06, 0x45, 0x42, 0x70, 0xcd, 0xbf,
+ 0x50, 0x4c, 0x2c, 0x41, 0x1e, 0xfb, 0x01, 0xf1, 0xa0, 0x2d, 0xd6, 0x8a,
+ 0x2d, 0x35, 0x3a, 0x6a, 0xf4, 0x64, 0x6c, 0x38, 0xb6, 0xbb, 0x94, 0xa3,
+ 0x7f, 0x99, 0x10, 0x96, 0x77, 0xf4, 0xd5, 0x92, 0x8e, 0xc6, 0x54, 0xd9,
+ 0x10, 0x97, 0xd0, 0xe8, 0x8e, 0x37, 0x7a, 0x66, 0x4d, 0xab, 0x52, 0x65,
+ 0xe6, 0xd1, 0x8a, 0x76, 0x28, 0x91, 0x07, 0xa8, 0x55, 0x20, 0x7f, 0xf0,
+ 0xf5, 0x46, 0x13, 0x4f, 0x1f, 0xf7, 0x76, 0xee, 0x0f, 0x53, 0x63, 0x0d,
+ 0xf2, 0xe8, 0x00, 0x1c, 0xc9, 0x27, 0xb4, 0xc5, 0x92, 0x7d, 0x9d, 0xb7,
+ 0x31, 0x95, 0xa0, 0x55, 0x9e, 0x09, 0xe5, 0x93, 0x59, 0xe4, 0x4d, 0x0f,
+ 0x8e, 0xec, 0x70, 0xf0, 0xe8, 0xd1, 0xfe, 0xc1, 0xee, 0x1e, 0x6e, 0xf5,
+ 0x0e, 0x68, 0xba, 0xeb, 0x05, 0x44, 0x2a, 0x0e, 0x21, 0xce, 0x9e, 0xa2,
+ 0x59, 0xe1, 0x26, 0x8c, 0xcb, 0xeb, 0x61, 0x5d, 0xcc, 0xc0, 0x00, 0x57,
+ 0xa0, 0x73, 0xb6, 0xa8, 0x35, 0x6d, 0x9a, 0x6f, 0x28, 0xe2, 0x18, 0x1d,
+ 0x1c, 0xb0, 0x72, 0x6c, 0xb2, 0x6b, 0x66, 0xef, 0x4a, 0xb2, 0x2a, 0x88,
+ 0x2f, 0xc8, 0xa5, 0x8c, 0x6e, 0x52, 0x15, 0x77, 0xbd, 0x95, 0xd5, 0xa8,
+ 0x28, 0xdc, 0xb2, 0x9c, 0xa4, 0xa3, 0x4b, 0xd0, 0xcf, 0xa6, 0xd3, 0xb4,
+ 0xe8, 0xe0, 0xf1, 0xd6, 0x80, 0xe9, 0x5e, 0xf4, 0x8c, 0x83, 0x01, 0xd5,
+ 0xdb, 0xd2, 0xe4, 0x04, 0xdc, 0xd0, 0xe0, 0xce, 0x30, 0xa9, 0xcd, 0xf4,
+ 0x92, 0x80, 0xf8, 0x61, 0x3d, 0x8b, 0xe1, 0x56, 0x97, 0xe1, 0xa4, 0x4d,
+ 0x56, 0xed, 0xcc, 0x28, 0x2d, 0x98, 0x9b, 0x1b, 0x0e, 0x0b, 0x47, 0xa9,
+ 0x5a, 0x41, 0x81, 0x83, 0xc5, 0x3b, 0x47, 0x8b, 0xf9, 0x84, 0x2b, 0x8d,
+ 0x72, 0xee, 0xae, 0x1d, 0x62, 0x28, 0x72, 0x13, 0x98, 0x01, 0xf9, 0x46,
+ 0x89, 0x80, 0xd1, 0x4e, 0x89, 0x09, 0x77, 0x64, 0xb1, 0x24, 0x95, 0x70,
+ 0x83, 0xc4, 0x89, 0x29, 0xf6, 0x37, 0x48, 0xd1, 0x52, 0x46, 0xbe, 0x61,
+ 0x34, 0xf8, 0x7b, 0x0a, 0xd7, 0x88, 0x2a, 0x39, 0x33, 0xca, 0x21, 0xcc,
+ 0x04, 0x06, 0x8b, 0xe7, 0x7b, 0x30, 0xc1, 0xda, 0x10, 0x88, 0x75, 0x8c,
+ 0x10, 0x46, 0x51, 0x39, 0x2c, 0xb2, 0x39, 0x34, 0x7d, 0x3e, 0x49, 0xd1,
+ 0xb6, 0x5c, 0xa8, 0xa9, 0xc4, 0xe7, 0x53, 0xac, 0xf0, 0x11, 0x2a, 0x54,
+ 0x7b, 0x7c, 0xcf, 0x73, 0xf4, 0xac, 0x6a, 0x30, 0xce, 0x74, 0x0e, 0x22,
+ 0x94, 0x24, 0xfe, 0x79, 0xb0, 0x88, 0x1c, 0x99, 0x4e, 0x80, 0x5a, 0x7e,
+ 0x24, 0xd1, 0x24, 0x79, 0x7f, 0x17, 0x39, 0xac, 0x1d, 0xd7, 0x76, 0x38,
+ 0x41, 0xe7, 0xa7, 0x93, 0x2a, 0x83, 0xad, 0x5c, 0xb1, 0x05, 0xf1, 0x8e,
+ 0x03, 0x38, 0x24, 0x1b, 0x20, 0x64, 0x67, 0xa9, 0x5c, 0x60, 0x34, 0x6d,
+ 0x20, 0xbc, 0xe0, 0x94, 0x7e, 0xab, 0x4b, 0x8e, 0x33, 0xf2, 0xb1, 0xe9,
+ 0x70, 0x29, 0xba, 0x16, 0xc0, 0xcd, 0xc4, 0xeb, 0xe3, 0x2d, 0xa0, 0xfe,
+ 0x00, 0x31, 0x33, 0x93, 0xed, 0x53, 0x0b, 0x45, 0x84, 0x26, 0xab, 0x76,
+ 0x7e, 0x0b, 0xb2, 0x47, 0x61, 0x7e, 0xc8, 0xca, 0x24, 0xf8, 0x0c, 0x85,
+ 0x59, 0xb4, 0xf8, 0x4b, 0x8b, 0x02, 0x7e, 0x13, 0xbd, 0xc8, 0x6f, 0x90,
+ 0x99, 0x84, 0xfc, 0xe4, 0x8a, 0xe7, 0x5d, 0x2c, 0x52, 0xc1, 0xdd, 0x48,
+ 0xdc, 0x79, 0x52, 0x74, 0xc3, 0xff, 0xc0, 0xcd, 0x33, 0x27, 0x18, 0x89,
+ 0x6f, 0xc4, 0xfc, 0x1f, 0x2a, 0x46, 0x8c, 0x66, 0x1d, 0x86, 0x8f, 0x04,
+ 0x51, 0x03, 0xa4, 0x2b, 0x0a, 0x3c, 0x84, 0x8b, 0x98, 0xf2, 0xee, 0x2e,
+ 0x2f, 0x53, 0x11, 0xeb, 0x24, 0x06, 0x17, 0x27, 0x83, 0x1e, 0x6a, 0x5c,
+ 0x41, 0x04, 0xcb, 0x2f, 0x46, 0x61, 0x18, 0x54, 0x42, 0xee, 0x37, 0x23,
+ 0xa2, 0x03, 0x98, 0x4f, 0x07, 0x1a, 0xa1, 0xd7, 0x2c, 0x76, 0xd2, 0x95,
+ 0xa4, 0x10, 0x5f, 0xc8, 0xc5, 0x73, 0xca, 0x07, 0x2d, 0x6d, 0x1e, 0xb3,
+ 0x80, 0xc4, 0xa3, 0x67, 0xde, 0xde, 0xef, 0x54, 0xb8, 0x84, 0xfc, 0x02,
+ 0xb9, 0xc5, 0xd1, 0xad, 0xd9, 0x0f, 0xc4, 0xa7, 0xe7, 0x1f, 0x2e, 0xea,
+ 0xaa, 0x34, 0x2f, 0x51, 0x2b, 0x06, 0x35, 0xae, 0x9e, 0xa3, 0x62, 0xf0,
+ 0x09, 0x7b, 0x74, 0x3e, 0x90, 0x7e, 0x3c, 0x21, 0x60, 0xc2, 0x90, 0x73,
+ 0x89, 0x05, 0x9c, 0x83, 0xd9, 0x40, 0xfb, 0x8f, 0x76, 0x1e, 0xa1, 0xcc,
+ 0x04, 0x2f, 0x2e, 0x66, 0x23, 0x83, 0xd9, 0x2c, 0x49, 0xbf, 0x14, 0xbc,
+ 0x00, 0xed, 0x4e, 0xee, 0x7c, 0x58, 0x3f, 0x5c, 0x13, 0x06, 0x24, 0x9c,
+ 0xa9, 0xbc, 0xa5, 0xde, 0x9e, 0x99, 0xf2, 0x65, 0xf2, 0x8e, 0x09, 0xeb,
+ 0xb5, 0x8c, 0xd9, 0xb7, 0x6a, 0xd8, 0x05, 0x2b, 0x94, 0xbb, 0x63, 0xdc,
+ 0x5b, 0x60, 0xb9, 0x4a, 0x5d, 0x2f, 0x5e, 0x1f, 0x3e, 0xc3, 0xde, 0x7d,
+ 0x99, 0x51, 0x28, 0x09, 0x23, 0x62, 0xf3, 0x25, 0xd2, 0x95, 0x43, 0x9a,
+ 0x38, 0x46, 0x39, 0x35, 0xa2, 0x4e, 0xf1, 0xfa, 0x7d, 0x74, 0x6b, 0x0d,
+ 0x3b, 0x5e, 0xbd, 0x6c, 0xec, 0x57, 0x59, 0x30, 0x2c, 0x58, 0x23, 0xa2,
+ 0x22, 0xb7, 0xa3, 0xa6, 0x48, 0x31, 0x3b, 0x62, 0x7e, 0x35, 0x14, 0xad,
+ 0xe0, 0xcc, 0xc0, 0x1d, 0x66, 0xb4, 0x89, 0xe3, 0xc0, 0x5d, 0x78, 0x7c,
+ 0x7b, 0xbb, 0xc5, 0x8b, 0xcb, 0x94, 0x2b, 0xcc, 0x24, 0x1e, 0xfb, 0xc0,
+ 0xd9, 0xe4, 0x36, 0x5a, 0x1e, 0xaa, 0x55, 0xbf, 0x51, 0x3f, 0xb6, 0x03,
+ 0xad, 0xde, 0xfa, 0xfa, 0x7e, 0x0c, 0x5c, 0xbc, 0xc7, 0xa1, 0x71, 0xae,
+ 0x27, 0x5c, 0xf0, 0x0d, 0xef, 0xba, 0x2f, 0x9e, 0xee, 0x36, 0xfd, 0x67,
+ 0xd8, 0x01, 0x0a, 0x21, 0x20, 0xcf, 0x05, 0x52, 0x1b, 0x5e, 0x3a, 0x36,
+ 0x77, 0x55, 0x01, 0x59, 0xd5, 0x41, 0xaf, 0x30, 0x7d, 0x8c, 0x75, 0x8e,
+ 0x54, 0xbf, 0x3f, 0x41, 0xc4, 0xe6, 0x37, 0x27, 0xcf, 0xdf, 0xf6, 0x4f,
+ 0x9e, 0x21, 0x69, 0x24, 0xa1, 0x3c, 0x4c, 0xa2, 0x45, 0xe6, 0x01, 0x55,
+ 0xce, 0xa6, 0x5e, 0x33, 0x54, 0x57, 0x6e, 0xa1, 0xb3, 0xc6, 0xfa, 0x99,
+ 0x8a, 0x2e, 0xa1, 0xeb, 0xbb, 0x4d, 0x90, 0x69, 0x38, 0x4c, 0x1b, 0xf3,
+ 0xf4, 0x3d, 0xf8, 0x8d, 0x3d, 0x7f, 0x48, 0xbc, 0x67, 0xa3, 0x8f, 0x07,
+ 0xed, 0x7b, 0x6d, 0x90, 0x4a, 0x0b, 0x0f, 0xd8, 0xf6, 0x5a, 0x72, 0x94,
+ 0x43, 0x8b, 0xcb, 0x6a, 0xb6, 0x39, 0x99, 0x54, 0xd1, 0xa1, 0xe4, 0x0a,
+ 0x36, 0xed, 0x57, 0xaf, 0x8c, 0xe2, 0x0b, 0x32, 0x61, 0x3a, 0x17, 0x64,
+ 0xfb, 0x29, 0x30, 0x4b, 0x0e, 0xb7, 0x43, 0x75, 0x55, 0x6f, 0x69, 0x8a,
+ 0xea, 0x54, 0xb9, 0x83, 0xec, 0xce, 0x61, 0x8a, 0x40, 0xbe, 0xcd, 0x01,
+ 0x14, 0x7c, 0x5f, 0xab, 0x62, 0xd9, 0x24, 0x97, 0xcd, 0xac, 0x6a, 0x04,
+ 0xa6, 0x7a, 0xbb, 0x44, 0xd7, 0x0d, 0x56, 0x32, 0x45, 0x19, 0x8d, 0x06,
+ 0x93, 0x4c, 0x2e, 0x73, 0xb8, 0xd6, 0xaf, 0xa6, 0x06, 0x8c, 0x9f, 0xcb,
+ 0x49, 0x95, 0x9c, 0x00, 0x5a, 0x97, 0x76, 0x83, 0x6a, 0x31, 0x65, 0x84,
+ 0xa5, 0x02, 0xd7, 0x3a, 0x76, 0xd9, 0x37, 0x2d, 0x38, 0x1b, 0xb9, 0xfa,
+ 0x52, 0xf5, 0x84, 0xd6, 0x83, 0x97, 0xd0, 0xd3, 0x63, 0x7f, 0x4b, 0x8b,
+ 0xbc, 0x19, 0x10, 0xa3, 0x8e, 0x06, 0xbd, 0x2a, 0xdd, 0xb1, 0xb7, 0xb9,
+ 0x5c, 0xed, 0x2e, 0x7d, 0x46, 0x8c, 0x18, 0x67, 0x14, 0x8f, 0x3f, 0x84,
+ 0x50, 0x7d, 0x02, 0x9c, 0x26, 0xb7, 0x1c, 0xcd, 0xd2, 0x46, 0x83, 0x0c,
+ 0x24, 0x95, 0xaa, 0x79, 0xa4, 0x60, 0xcb, 0x13, 0xd9, 0x79, 0x6c, 0x5a,
+ 0x06, 0xa3, 0x8d, 0xd8, 0xcc, 0x6f, 0x96, 0x84, 0xd1, 0x37, 0xe9, 0xa7,
+ 0x92, 0x50, 0x0d, 0x63, 0x59, 0x0c, 0x0a, 0x6f, 0x4b, 0xf0, 0x6a, 0x46,
+ 0x17, 0xd7, 0x26, 0x62, 0xa6, 0xc9, 0xc0, 0xb6, 0xf0, 0x63, 0xb2, 0x89,
+ 0x24, 0x0a, 0xa5, 0x48, 0xdd, 0x07, 0x42, 0x8b, 0x59, 0x36, 0x2b, 0xf0,
+ 0x00, 0xa8, 0xcb, 0x8f, 0xe3, 0x19, 0x29, 0x7b, 0x91, 0x10, 0xc1, 0xb3,
+ 0xa1, 0x8a, 0x3a, 0x63, 0x63, 0xb3, 0x28, 0xf0, 0xe5, 0xa6, 0x59, 0x91,
+ 0x64, 0x41, 0x6d, 0x28, 0xe5, 0x16, 0xba, 0x6e, 0xe6, 0xb7, 0x19, 0x3a,
+ 0x95, 0x05, 0x20, 0x77, 0x2a, 0x08, 0x96, 0xc8, 0xd9, 0x02, 0x78, 0x85,
+ 0x82, 0x1d, 0x22, 0xa9, 0xc4, 0x28, 0xce, 0x31, 0xc2, 0x33, 0x4d, 0x0c,
+ 0xcf, 0xa1, 0xa4, 0xb1, 0x9b, 0x11, 0xd3, 0x4e, 0x40, 0x43, 0x59, 0x8e,
+ 0x70, 0x74, 0xb9, 0x07, 0x4f, 0x3e, 0x65, 0x9b, 0x2e, 0xd7, 0xce, 0x93,
+ 0x11, 0x6d, 0x94, 0x16, 0x53, 0x20, 0xc3, 0xc0, 0x3e, 0xf2, 0x5a, 0x4d,
+ 0x29, 0xda, 0x4c, 0x77, 0xb7, 0x87, 0xa4, 0x50, 0x2d, 0x89, 0x39, 0x85,
+ 0xeb, 0x86, 0x0e, 0x4c, 0xc5, 0x92, 0xae, 0xda, 0x74, 0xe4, 0xf4, 0xb6,
+ 0x65, 0xce, 0xd6, 0x29, 0xa8, 0x5e, 0xb1, 0xcd, 0x8b, 0x48, 0xf8, 0xa4,
+ 0x35, 0x6a, 0x1b, 0x43, 0xd9, 0xdf, 0x31, 0xa7, 0x64, 0x77, 0xe7, 0xa3,
+ 0x1c, 0x94, 0xe8, 0x70, 0xb6, 0x98, 0x7e, 0xe3, 0x2f, 0x83, 0xcf, 0x38,
+ 0xe9, 0x7c, 0x08, 0xea, 0x8c, 0xf5, 0xff, 0x31, 0xdd, 0x93, 0xb2, 0x23,
+ 0x10, 0xd4, 0xed, 0xfc, 0xd9, 0x4d, 0x3d, 0x97, 0x93, 0x77, 0x55, 0x4f,
+ 0x7f, 0xa7, 0x4b, 0x54, 0xce, 0xdf, 0x25, 0xeb, 0xe1, 0x8b, 0x79, 0xcf,
+ 0x9b, 0x93, 0x72, 0x49, 0x63, 0x9d, 0x87, 0xee, 0x77, 0x24, 0x3f, 0x56,
+ 0xbc, 0x92, 0x78, 0x0d, 0xcb, 0x2e, 0x6b, 0xc0, 0x01, 0xed, 0x63, 0xd5,
+ 0x96, 0xad, 0x4f, 0x9c, 0xdc, 0x4c, 0x59, 0xe6, 0x2c, 0x76, 0x7a, 0xae,
+ 0x45, 0x79, 0x20, 0x40, 0x03, 0x40, 0x40, 0x5d, 0x85, 0x44, 0x07, 0xc1,
+ 0xd2, 0xb7, 0x33, 0x3a, 0x7a, 0x48, 0x6e, 0xab, 0x49, 0x3d, 0xda, 0xf9,
+ 0xb2, 0x1b, 0x3d, 0xda, 0xfb, 0xaa, 0x8b, 0xf0, 0x49, 0xf8, 0xcf, 0x1e,
+ 0xfe, 0xb3, 0x8f, 0x8f, 0x3c, 0x06, 0x75, 0x61, 0x89, 0x98, 0x1c, 0x4e,
+ 0x37, 0x17, 0xec, 0x0a, 0xbc, 0x41, 0x06, 0xf9, 0xc2, 0x91, 0x98, 0x13,
+ 0x67, 0xc1, 0x35, 0x56, 0x97, 0x19, 0x19, 0xc1, 0x45, 0xe4, 0x33, 0x3f,
+ 0xab, 0x8e, 0xd2, 0xeb, 0x45, 0x4d, 0xb1, 0xc9, 0x19, 0xf0, 0xb3, 0xba,
+ 0x02, 0xa2, 0xc2, 0xc5, 0xd6, 0xb5, 0xd4, 0x06, 0x61, 0x89, 0x17, 0x1c,
+ 0xe2, 0xec, 0x63, 0xa7, 0x27, 0x19, 0x27, 0xd5, 0x09, 0x2a, 0x03, 0xc2,
+ 0x06, 0x64, 0xca, 0x7f, 0x4a, 0x24, 0x5c, 0x36, 0x2c, 0x6b, 0xc9, 0x77,
+ 0xea, 0xd3, 0x54, 0xdd, 0x0b, 0xec, 0xcf, 0x84, 0xec, 0x3a, 0x5a, 0x04,
+ 0x87, 0xd0, 0x89, 0x9c, 0xb0, 0x7c, 0x3e, 0xc9, 0xec, 0xc2, 0x90, 0x98,
+ 0xaa, 0xda, 0xcd, 0x12, 0x72, 0xfc, 0x9b, 0x04, 0x10, 0xb1, 0x66, 0xa7,
+ 0xb7, 0xb0, 0xf6, 0x5c, 0xe5, 0x32, 0x32, 0xb7, 0xa7, 0xbd, 0xf5, 0x7b,
+ 0x4e, 0x60, 0x6c, 0xc0, 0x5e, 0x58, 0x3b, 0xa2, 0xb0, 0x0d, 0xcc, 0xcf,
+ 0x88, 0x1f, 0xe7, 0x95, 0x5c, 0xa6, 0x06, 0xa8, 0x80, 0x0d, 0xa9, 0x61,
+ 0xf6, 0xd3, 0x27, 0x85, 0x99, 0xf6, 0xf5, 0x69, 0xef, 0xc9, 0x13, 0x53,
+ 0x98, 0x82, 0x51, 0xa4, 0x10, 0x2b, 0xe4, 0xce, 0x64, 0xd3, 0xa5, 0x62,
+ 0xb4, 0x8b, 0x8f, 0xd0, 0x8a, 0x7f, 0x10, 0x85, 0x2c, 0x9c, 0xa2, 0x2f,
+ 0x49, 0x2a, 0x32, 0xdc, 0x11, 0x54, 0xeb, 0x8b, 0xe2, 0xcc, 0x52, 0x42,
+ 0xc4, 0x87, 0xc1, 0xbe, 0x9f, 0xe5, 0x37, 0x1a, 0x55, 0x29, 0x81, 0x63,
+ 0x0a, 0x25, 0x12, 0x42, 0x25, 0x58, 0x22, 0x4e, 0x7c, 0x3e, 0x48, 0x1c,
+ 0xea, 0xfd, 0xe9, 0x43, 0xf8, 0xa1, 0xbd, 0x49, 0x1c, 0xc6, 0x58, 0x26,
+ 0xe5, 0x24, 0xc6, 0xb2, 0xb2, 0xbf, 0x65, 0xa3, 0xe8, 0x30, 0xa3, 0xf2,
+ 0xa7, 0xd5, 0xdd, 0x37, 0xc1, 0xe2, 0x95, 0x78, 0xfc, 0xe0, 0x49, 0xa0,
+ 0x93, 0xdf, 0xd8, 0x0c, 0xa2, 0x8f, 0x47, 0x9b, 0xd2, 0xc2, 0x56, 0x57,
+ 0xc3, 0x3b, 0xfb, 0x47, 0xfd, 0xd3, 0xe8, 0xfc, 0xf4, 0xe8, 0xe5, 0x6b,
+ 0x78, 0x27, 0xf6, 0x1d, 0x89, 0xa6, 0x88, 0x6d, 0x97, 0x03, 0xfc, 0xeb,
+ 0x2a, 0x53, 0xa3, 0xce, 0xad, 0xe9, 0x87, 0x3b, 0xf2, 0xab, 0x48, 0x8e,
+ 0x48, 0xd4, 0xa8, 0x21, 0x73, 0xc6, 0x0b, 0xcd, 0xef, 0x6d, 0x2f, 0x34,
+ 0x68, 0x0d, 0xbe, 0xb5, 0x1a, 0x83, 0x2e, 0x3e, 0x16, 0x6f, 0x1d, 0x90,
+ 0x14, 0x1a, 0x70, 0x78, 0x68, 0xfe, 0x6c, 0x70, 0xed, 0x4c, 0x22, 0x2d,
+ 0x8e, 0x10, 0x46, 0xc4, 0xf6, 0x02, 0xa0, 0x43, 0xa7, 0x59, 0x2a, 0xf7,
+ 0x6b, 0xf0, 0xb3, 0xb4, 0x70, 0x6c, 0x30, 0xef, 0x17, 0x98, 0x1d, 0xee,
+ 0x2b, 0x82, 0x4e, 0xc9, 0x32, 0x21, 0x5f, 0x69, 0x60, 0x29, 0x0a, 0xfc,
+ 0xb9, 0x7a, 0xd3, 0x70, 0xb2, 0x1b, 0xa5, 0xe7, 0xee, 0x18, 0xe4, 0xb7,
+ 0x5d, 0x5b, 0xbd, 0x88, 0xd0, 0x94, 0x4d, 0x36, 0xd7, 0x25, 0x70, 0x4f,
+ 0x2a, 0xfc, 0xc9, 0x2d, 0x41, 0xa3, 0x5d, 0x03, 0xee, 0x57, 0x5e, 0x25,
+ 0x3e, 0xd0, 0xe3, 0x14, 0x14, 0x0e, 0x68, 0xd0, 0x0d, 0xb1, 0x69, 0x91,
+ 0x2c, 0x6a, 0x94, 0xf5, 0xb9, 0xca, 0x7c, 0xd7, 0x06, 0x41, 0x03, 0x99,
+ 0x26, 0x6b, 0x84, 0x32, 0x60, 0xb4, 0xdb, 0x2c, 0xd6, 0xa8, 0x2f, 0x57,
+ 0x15, 0x44, 0x8e, 0xe5, 0x9d, 0xa3, 0xac, 0x29, 0xda, 0x9e, 0xcc, 0x58,
+ 0xf9, 0x95, 0x8c, 0x7f, 0x0b, 0x3d, 0x37, 0xe3, 0x03, 0x52, 0xa7, 0xf3,
+ 0xa5, 0x26, 0x18, 0xe9, 0x60, 0x2d, 0x14, 0x8b, 0x26, 0x29, 0xf8, 0x3a,
+ 0xb8, 0xb4, 0xfa, 0xa0, 0x65, 0x85, 0xc1, 0xac, 0xb7, 0x9a, 0xee, 0x66,
+ 0xd4, 0x16, 0x73, 0xbf, 0x61, 0x65, 0xc1, 0x23, 0x00, 0xe2, 0x3e, 0x47,
+ 0xd7, 0x07, 0x6b, 0xd1, 0xbb, 0x76, 0x8f, 0x7a, 0xa1, 0x44, 0x89, 0xcd,
+ 0xd2, 0x13, 0x8c, 0x5a, 0x03, 0x35, 0x43, 0x90, 0xa2, 0xe7, 0xaf, 0x4f,
+ 0xbe, 0x3f, 0x6b, 0x8f, 0x9b, 0xe1, 0xde, 0x67, 0xa9, 0x96, 0xdd, 0xf6,
+ 0x07, 0xc3, 0x15, 0x70, 0x11, 0xa1, 0x99, 0x3d, 0xa8, 0xa1, 0x3a, 0xa7,
+ 0xf4, 0xc4, 0xb6, 0xe4, 0xd0, 0x07, 0x53, 0x6e, 0xe8, 0x1e, 0xa9, 0xb5,
+ 0x7b, 0xdf, 0xf3, 0xf1, 0xf1, 0x0f, 0x88, 0x3b, 0x0a, 0x77, 0xe4, 0x6b,
+ 0xde, 0x30, 0x76, 0xd1, 0xdc, 0xea, 0x84, 0x6e, 0xeb, 0xb5, 0x1d, 0x7f,
+ 0x54, 0x8f, 0x4b, 0xef, 0x53, 0xa5, 0xb9, 0xab, 0xfc, 0xa6, 0x3d, 0x45,
+ 0x82, 0x78, 0x1e, 0x13, 0x6e, 0x49, 0x4f, 0x63, 0x56, 0x0f, 0x07, 0x49,
+ 0x3a, 0xc2, 0x30, 0xb6, 0x61, 0x13, 0x28, 0x60, 0xfd, 0xca, 0xe4, 0x32,
+ 0x50, 0x2c, 0x34, 0xe3, 0x6a, 0x2e, 0xcb, 0xcb, 0x83, 0xa0, 0x46, 0x37,
+ 0xc9, 0x07, 0xb0, 0x13, 0x5c, 0xa6, 0x5d, 0x8c, 0xbe, 0x1a, 0xf1, 0x58,
+ 0x43, 0x35, 0xd5, 0x9c, 0xdc, 0x00, 0x00, 0x1f, 0x08, 0x6f, 0xf1, 0x41,
+ 0x97, 0x96, 0xe8, 0xb6, 0x5a, 0x7e, 0xc4, 0xcd, 0x02, 0xdc, 0xfb, 0x94,
+ 0x7b, 0x2e, 0xb0, 0x16, 0x5b, 0x9b, 0x6d, 0x7a, 0x6d, 0x02, 0xb1, 0x83,
+ 0xd2, 0x45, 0x5f, 0x97, 0x34, 0xa8, 0x66, 0xdb, 0x25, 0x95, 0x91, 0x9b,
+ 0xa6, 0x55, 0x0d, 0x59, 0xc3, 0xd9, 0x4a, 0x4f, 0x3e, 0xa4, 0xae, 0xa0,
+ 0xdb, 0x7f, 0x2c, 0x32, 0x82, 0xb4, 0x02, 0xe5, 0x40, 0x3d, 0x93, 0xb4,
+ 0xcd, 0xda, 0x68, 0x44, 0x8d, 0xd2, 0xad, 0x65, 0x34, 0x19, 0x6f, 0x61,
+ 0x90, 0x0e, 0x50, 0x72, 0x7e, 0x45, 0xb4, 0x12, 0x1d, 0x93, 0x3e, 0x31,
+ 0x5d, 0x20, 0xfe, 0xdb, 0xcb, 0x4a, 0xab, 0xfd, 0x10, 0x6a, 0x82, 0xa4,
+ 0xd7, 0x2a, 0x7c, 0x31, 0x01, 0xfa, 0x95, 0xef, 0x7d, 0xab, 0x40, 0x37,
+ 0x9a, 0xe7, 0x15, 0xcb, 0xd1, 0x58, 0x35, 0xed, 0x3a, 0x35, 0xd2, 0x0b,
+ 0x8c, 0x06, 0xa4, 0xfe, 0x64, 0xb2, 0x5d, 0x56, 0x23, 0xd4, 0x56, 0x16,
+ 0xb3, 0x09, 0x0e, 0x13, 0x5b, 0x52, 0x87, 0x92, 0xc7, 0x99, 0x43, 0x85,
+ 0x66, 0xa3, 0xfa, 0xf2, 0x7b, 0x72, 0x52, 0x4d, 0xf5, 0x57, 0x29, 0x5f,
+ 0x57, 0xc5, 0x43, 0xf7, 0xc5, 0x35, 0x42, 0x91, 0x84, 0xa7, 0x49, 0x2b,
+ 0x58, 0x3b, 0x25, 0xe5, 0x72, 0xda, 0xe4, 0xed, 0xb8, 0x17, 0x5d, 0xae,
+ 0x71, 0xfd, 0x50, 0xab, 0x6b, 0x92, 0xe4, 0x9a, 0x56, 0xfd, 0x6b, 0x24,
+ 0x31, 0x60, 0x68, 0x83, 0xbc, 0x24, 0xc0, 0x1d, 0xd8, 0x14, 0x98, 0xb7,
+ 0xb0, 0xa9, 0x65, 0xb4, 0xc9, 0xa5, 0x2f, 0x1f, 0xad, 0x2c, 0xa4, 0x5a,
+ 0x0f, 0xf3, 0xa2, 0x62, 0xe6, 0x8f, 0x56, 0x56, 0x50, 0xe5, 0x37, 0xfc,
+ 0x4a, 0x48, 0x2b, 0x6a, 0xa8, 0x42, 0x87, 0xc6, 0x68, 0x2a, 0x25, 0xd0,
+ 0x41, 0x68, 0xbb, 0x9b, 0xa7, 0x4b, 0xaa, 0x65, 0x06, 0xa2, 0x81, 0x2c,
+ 0x70, 0x89, 0x2d, 0xd5, 0x67, 0x83, 0xec, 0x8c, 0x1c, 0x1e, 0x2a, 0x48,
+ 0x1d, 0x2c, 0x43, 0x29, 0xc0, 0x21, 0x5c, 0x49, 0x11, 0xaf, 0x64, 0x74,
+ 0xe7, 0xdf, 0x46, 0x5a, 0xab, 0x5d, 0x46, 0xda, 0x15, 0x2c, 0x4c, 0x53,
+ 0x55, 0x3d, 0x14, 0x64, 0x88, 0x9f, 0x77, 0xb9, 0x0e, 0xbb, 0xad, 0x36,
+ 0xbf, 0x56, 0x1d, 0xf6, 0x46, 0x30, 0xbe, 0xa9, 0xeb, 0x8d, 0xe1, 0x1e,
+ 0x06, 0x0b, 0x4a, 0x39, 0xb3, 0x5b, 0x83, 0x94, 0x53, 0x5c, 0xef, 0x02,
+ 0xfe, 0x65, 0x60, 0x14, 0x0b, 0x29, 0x8e, 0x38, 0x9c, 0x80, 0xe2, 0x1d,
+ 0x08, 0xa6, 0x69, 0xdc, 0x1c, 0xe5, 0x02, 0x4d, 0x44, 0x93, 0x05, 0xf6,
+ 0x65, 0x7c, 0xc3, 0x5c, 0xc7, 0xdb, 0xa0, 0xac, 0x08, 0x7d, 0xf1, 0xb2,
+ 0x85, 0x5d, 0x35, 0xbc, 0xa2, 0xac, 0xea, 0x27, 0x76, 0x3d, 0x9a, 0xe5,
+ 0x92, 0x5b, 0xb4, 0x6b, 0xf6, 0x58, 0x74, 0x9d, 0xc2, 0xad, 0xb5, 0x48,
+ 0x9f, 0x2a, 0x77, 0x06, 0x43, 0x74, 0x2b, 0x3b, 0x98, 0x84, 0x2a, 0x9b,
+ 0x9b, 0xd4, 0x4f, 0xb7, 0x9e, 0xb2, 0xbd, 0x95, 0x15, 0x33, 0x1c, 0xff,
+ 0xe9, 0x1b, 0xf2, 0x9f, 0x71, 0xe4, 0x49, 0x73, 0x49, 0x23, 0xce, 0x13,
+ 0xe4, 0xa4, 0x42, 0x32, 0xd7, 0x48, 0x5c, 0x4f, 0xa9, 0x3c, 0xb4, 0x36,
+ 0x1c, 0x35, 0xd6, 0xe8, 0x43, 0xcd, 0xa0, 0x6e, 0x2d, 0x92, 0x4a, 0x2f,
+ 0x6d, 0xd5, 0xc2, 0xed, 0x81, 0xbf, 0xb9, 0x23, 0x0a, 0x4b, 0x62, 0xbc,
+ 0x0f, 0xeb, 0xc9, 0x60, 0xd1, 0xc7, 0xab, 0xd3, 0x28, 0xfd, 0x23, 0x7d,
+ 0xe3, 0xb9, 0x3c, 0x78, 0xb4, 0xf3, 0xd5, 0x93, 0x87, 0x54, 0x86, 0x7e,
+ 0x94, 0x78, 0x05, 0x7b, 0xf9, 0x8f, 0x58, 0x9b, 0xf6, 0xb9, 0x5b, 0xf2,
+ 0x20, 0xf6, 0x96, 0xdc, 0x8f, 0xbf, 0xb5, 0x40, 0x48, 0x2f, 0xe3, 0x6f,
+ 0x5c, 0xfa, 0xbc, 0x7c, 0x5f, 0xd6, 0x4a, 0xed, 0xa2, 0xc9, 0xb5, 0x25,
+ 0xaa, 0xcd, 0xc6, 0x86, 0x06, 0x45, 0x6d, 0xe0, 0x4e, 0x86, 0xc8, 0x4d,
+ 0x0d, 0x69, 0x4e, 0x9f, 0x25, 0x16, 0x25, 0x1c, 0x4a, 0x19, 0x14, 0xb2,
+ 0x05, 0xcb, 0x9e, 0xee, 0xc3, 0x9d, 0x92, 0x07, 0xb1, 0x27, 0x85, 0x89,
+ 0xb8, 0x3f, 0x73, 0x52, 0x1f, 0xca, 0xbf, 0x9b, 0x3d, 0x25, 0xeb, 0xb2,
+ 0xa7, 0xe4, 0x33, 0xf1, 0xa7, 0x87, 0x32, 0xa8, 0x20, 0x7f, 0x7a, 0x10,
+ 0x7b, 0xfa, 0x34, 0xfc, 0xc9, 0x39, 0xaa, 0x9f, 0xa9, 0x8e, 0xac, 0x76,
+ 0xff, 0xe1, 0x0c, 0x6a, 0x6d, 0xfe, 0xf4, 0x98, 0x0b, 0xdc, 0x37, 0x89,
+ 0xd9, 0x4b, 0x4d, 0x46, 0xab, 0x16, 0x36, 0xb0, 0x8d, 0xf2, 0x0c, 0xa5,
+ 0xd9, 0x35, 0x4c, 0x88, 0x37, 0xce, 0xfd, 0x11, 0xce, 0x09, 0xc9, 0x95,
+ 0xc8, 0x1e, 0x2b, 0x71, 0x98, 0xfa, 0x64, 0x4b, 0x5b, 0xf6, 0x9c, 0xe0,
+ 0x0a, 0x83, 0x6b, 0x63, 0x38, 0x7b, 0xcc, 0x49, 0xcd, 0x9c, 0x2e, 0x41,
+ 0xe0, 0x9e, 0x67, 0xc4, 0xd5, 0x80, 0xc5, 0x60, 0x5d, 0x98, 0xef, 0xfb,
+ 0xfd, 0xf8, 0xe8, 0xfc, 0x65, 0xb4, 0xc2, 0x58, 0x8a, 0xaf, 0x38, 0x63,
+ 0xcc, 0x56, 0x09, 0xed, 0xce, 0x12, 0x7e, 0x82, 0x72, 0xf3, 0xb5, 0xe6,
+ 0xcd, 0xc6, 0x7e, 0x30, 0x95, 0x3c, 0x5e, 0x96, 0x40, 0x5c, 0x5f, 0x42,
+ 0xd0, 0xa9, 0x9b, 0xb4, 0x71, 0x54, 0x46, 0x35, 0x2c, 0x23, 0x5d, 0x59,
+ 0x35, 0x50, 0x90, 0xc5, 0x88, 0xf8, 0x13, 0x17, 0x96, 0xe1, 0xf2, 0x7c,
+ 0x78, 0x69, 0xd1, 0x03, 0x9e, 0x42, 0x8d, 0x10, 0xc8, 0x54, 0xbc, 0x74,
+ 0xf7, 0xab, 0x27, 0xbb, 0xc0, 0x63, 0xee, 0x38, 0x34, 0x55, 0x5e, 0x7e,
+ 0xd4, 0xdb, 0xdf, 0x7e, 0xd4, 0x7b, 0x84, 0x57, 0x9a, 0xa4, 0xd2, 0x50,
+ 0x96, 0x84, 0x34, 0x1f, 0x0e, 0xf4, 0x64, 0x6e, 0xf5, 0xfa, 0xe4, 0x38,
+ 0x62, 0x2c, 0x9c, 0x94, 0x2a, 0x03, 0xd5, 0xcd, 0xbd, 0x0e, 0x48, 0x9f,
+ 0xd0, 0x21, 0xf3, 0x6e, 0xcf, 0x23, 0xe3, 0x2d, 0x87, 0x9a, 0xc3, 0xc8,
+ 0xd6, 0x3b, 0x33, 0x03, 0xc1, 0xab, 0x81, 0x2d, 0x63, 0xb2, 0x2e, 0x38,
+ 0x46, 0x1f, 0x9d, 0xd7, 0x59, 0x12, 0x67, 0xc1, 0x96, 0xc7, 0x0a, 0xf9,
+ 0x43, 0xf8, 0xf8, 0xb1, 0x42, 0x5e, 0x1f, 0x0f, 0xa4, 0x55, 0x67, 0x90,
+ 0x1f, 0x93, 0x60, 0x5b, 0xe9, 0x53, 0x4d, 0x90, 0x2d, 0x46, 0x4c, 0x1b,
+ 0xc6, 0xe2, 0xd9, 0x2a, 0xe5, 0x3a, 0x55, 0x77, 0x00, 0x7a, 0xa4, 0x87,
+ 0x53, 0x63, 0x56, 0x1c, 0xff, 0x63, 0x34, 0xeb, 0xad, 0x6b, 0x13, 0xcd,
+ 0xaa, 0xa5, 0xa6, 0x4f, 0xb3, 0x20, 0xcc, 0xff, 0xc4, 0xe0, 0xd9, 0x36,
+ 0x23, 0x36, 0x16, 0x7a, 0xa5, 0xa4, 0xf1, 0x08, 0x20, 0x43, 0x66, 0x53,
+ 0xa2, 0xd3, 0x90, 0x69, 0x7d, 0x59, 0xe3, 0x01, 0x57, 0x88, 0xed, 0x6b,
+ 0xbb, 0x48, 0x93, 0x89, 0xbc, 0x28, 0xd6, 0x57, 0x52, 0x27, 0xbd, 0x2f,
+ 0x71, 0xf9, 0x28, 0x7f, 0xc6, 0x87, 0x8e, 0x90, 0x58, 0x17, 0x67, 0x0c,
+ 0xc6, 0xae, 0x37, 0x4d, 0x2a, 0x76, 0xd0, 0x62, 0x4d, 0xfb, 0xd9, 0x30,
+ 0x9b, 0xc3, 0xe5, 0xba, 0xc4, 0x7a, 0x1b, 0x5c, 0x94, 0x25, 0x17, 0xb4,
+ 0x05, 0x73, 0xf0, 0x26, 0x59, 0x7d, 0x84, 0xe0, 0x89, 0xf0, 0x78, 0xd8,
+ 0x58, 0xfd, 0xef, 0xa0, 0xf4, 0xe0, 0x0d, 0x2d, 0x06, 0x08, 0x2d, 0x82,
+ 0xa1, 0xac, 0x78, 0xc9, 0xd5, 0x2c, 0xd9, 0xd2, 0xcd, 0xa8, 0x8a, 0xc0,
+ 0xbd, 0xdc, 0xd2, 0x18, 0x96, 0xaf, 0xb3, 0xf7, 0xaf, 0x1e, 0xaf, 0xa6,
+ 0x40, 0x96, 0x8d, 0x23, 0x53, 0x49, 0x00, 0x7d, 0xcd, 0x36, 0x88, 0x4e,
+ 0x9b, 0x95, 0x92, 0x2d, 0x5b, 0xcd, 0xab, 0x3b, 0x24, 0x8e, 0x54, 0xb9,
+ 0x5c, 0xe3, 0x2b, 0x65, 0x85, 0x07, 0x5d, 0xdf, 0x22, 0x2d, 0x04, 0xee,
+ 0xef, 0x3a, 0xe2, 0xe6, 0x9a, 0x51, 0xb7, 0xb5, 0xd6, 0x3f, 0x88, 0xdc,
+ 0xfe, 0xdd, 0x77, 0xbf, 0xf6, 0xb2, 0x52, 0x75, 0xad, 0x65, 0xac, 0x62,
+ 0x3c, 0x93, 0x4b, 0x47, 0xd1, 0x26, 0xa5, 0x34, 0x19, 0x90, 0x70, 0xfc,
+ 0x48, 0x4d, 0x65, 0xbe, 0xed, 0xcb, 0x68, 0x98, 0x5b, 0x2b, 0x8d, 0x7a,
+ 0x46, 0xc9, 0x8d, 0x18, 0x89, 0x8d, 0xd4, 0x5c, 0x4f, 0xac, 0x70, 0x94,
+ 0xde, 0x7f, 0xb7, 0xce, 0xfa, 0xf8, 0xea, 0x7f, 0x91, 0xce, 0xfa, 0x10,
+ 0xa5, 0x95, 0x09, 0x31, 0x0e, 0x61, 0x4c, 0xf3, 0x72, 0xb6, 0xab, 0xaf,
+ 0xb4, 0x36, 0xff, 0x57, 0x7d, 0xfd, 0xf8, 0xea, 0xab, 0x73, 0x6c, 0x5b,
+ 0x82, 0x0c, 0xff, 0x1d, 0x31, 0x86, 0xcd, 0xa1, 0xf0, 0xb0, 0x85, 0x41,
+ 0x1d, 0x3c, 0xc5, 0x62, 0x29, 0x0f, 0xe1, 0x5a, 0xae, 0x36, 0xfb, 0x28,
+ 0xf1, 0x59, 0xd6, 0x43, 0x8c, 0x6c, 0xca, 0xa6, 0x62, 0x41, 0xe1, 0x69,
+ 0x58, 0xbb, 0x04, 0xcb, 0x32, 0x08, 0xda, 0x37, 0xb9, 0x73, 0x61, 0xbf,
+ 0x39, 0x79, 0x76, 0x19, 0xa3, 0xaa, 0x59, 0xe3, 0x9a, 0x46, 0xff, 0x65,
+ 0x6c, 0xea, 0x93, 0x1a, 0xfe, 0x1f, 0xff, 0xff, 0xb6, 0xe1, 0xff, 0xf1,
+ 0xba, 0x86, 0xff, 0xc7, 0xff, 0xd7, 0xf0, 0xff, 0xf1, 0x38, 0x93, 0xbb,
+ 0x6b, 0x9b, 0x98, 0xc9, 0x88, 0xa9, 0xa6, 0xf0, 0x53, 0x0f, 0xf1, 0x96,
+ 0x55, 0x0c, 0x10, 0x11, 0x98, 0xa7, 0xfa, 0xf2, 0xfc, 0x6f, 0x4f, 0xba,
+ 0x54, 0x68, 0xaf, 0xef, 0xd7, 0x9c, 0x3c, 0x7d, 0x76, 0x74, 0xbe, 0x94,
+ 0x01, 0x46, 0x9f, 0xd5, 0x7e, 0xf7, 0xf8, 0x63, 0xf1, 0x3a, 0xcb, 0x3c,
+ 0xdb, 0x98, 0xde, 0xdf, 0xc9, 0xcc, 0x37, 0x4f, 0xd3, 0x11, 0x17, 0x1f,
+ 0x8a, 0x0e, 0xe9, 0x8f, 0xf6, 0xc8, 0x6b, 0xa9, 0xe0, 0x56, 0x62, 0xd4,
+ 0x68, 0xe1, 0x05, 0xd4, 0xd3, 0xcb, 0x20, 0xb3, 0xcf, 0xa4, 0xb4, 0xaa,
+ 0x54, 0xb3, 0x8a, 0xbd, 0xdc, 0x93, 0xd1, 0x96, 0x20, 0x45, 0x71, 0xdf,
+ 0x44, 0xb2, 0x5a, 0xc1, 0x0b, 0x46, 0x71, 0x89, 0x75, 0xe7, 0x93, 0x01,
+ 0x15, 0x4c, 0xeb, 0xb9, 0xcf, 0x30, 0x4a, 0x45, 0xf8, 0x1c, 0x3a, 0x8f,
+ 0x11, 0x84, 0x6a, 0x89, 0x71, 0xe9, 0x54, 0xdf, 0x8c, 0xb6, 0xaa, 0x45,
+ 0x39, 0x74, 0xe6, 0xfe, 0xf9, 0x32, 0x4e, 0xdc, 0x51, 0xec, 0xef, 0xec,
+ 0xd4, 0x27, 0xb3, 0x6e, 0x48, 0xfd, 0x5d, 0xb7, 0xf6, 0x7e, 0x37, 0x50,
+ 0x58, 0x6a, 0xda, 0x75, 0xb3, 0x15, 0x2c, 0x39, 0x34, 0x5e, 0x6d, 0xcd,
+ 0x52, 0xa9, 0xd3, 0x43, 0xb1, 0x98, 0xd5, 0x29, 0xc2, 0x9d, 0x4e, 0x8d,
+ 0x10, 0x30, 0x9e, 0x7b, 0xb4, 0x28, 0x42, 0x56, 0xdd, 0xc4, 0xdd, 0x66,
+ 0xce, 0xc9, 0xe8, 0xd6, 0xd3, 0x5f, 0x33, 0x87, 0x24, 0xf0, 0xb0, 0xda,
+ 0xe7, 0x9b, 0xcd, 0x95, 0x0e, 0x4e, 0xaf, 0x63, 0xb7, 0x71, 0x46, 0xa5,
+ 0x9b, 0xb5, 0xab, 0x11, 0x1f, 0x16, 0xd8, 0xec, 0xef, 0x7e, 0xd2, 0xa5,
+ 0xf3, 0xe6, 0x72, 0xf8, 0x87, 0x7c, 0x56, 0x15, 0xf9, 0xa4, 0x74, 0x92,
+ 0xcd, 0xe9, 0x2c, 0xe4, 0xd0, 0x2e, 0x07, 0x93, 0x60, 0x70, 0xe2, 0x16,
+ 0x49, 0x09, 0x2d, 0x88, 0x6d, 0x09, 0x97, 0x33, 0xa4, 0xe5, 0xb4, 0x0c,
+ 0x37, 0xad, 0x86, 0xa2, 0xcb, 0x70, 0x3e, 0x36, 0xe2, 0x3c, 0xc0, 0xe5,
+ 0x51, 0x70, 0x50, 0x3c, 0xdc, 0x5a, 0x5d, 0x46, 0x17, 0xf1, 0x74, 0x21,
+ 0x07, 0x85, 0x41, 0x72, 0x4c, 0x5a, 0xe0, 0xde, 0x9c, 0xc3, 0xa0, 0x07,
+ 0x6d, 0xd9, 0x59, 0xf8, 0x5f, 0x73, 0x18, 0x3c, 0x06, 0xc7, 0x9c, 0xd0,
+ 0x1e, 0x88, 0x9a, 0x04, 0x88, 0x41, 0x8f, 0x68, 0x8e, 0x8b, 0x07, 0xa9,
+ 0x6f, 0xfd, 0x71, 0x77, 0xba, 0xaa, 0xb9, 0x35, 0xcc, 0xd5, 0x93, 0x14,
+ 0x9c, 0x59, 0x8d, 0xb4, 0xbe, 0x28, 0x30, 0x0c, 0x7a, 0x3c, 0x49, 0x6e,
+ 0x04, 0x42, 0xb0, 0x39, 0xc6, 0xfe, 0xe9, 0x3e, 0x8d, 0xe6, 0xe2, 0xb4,
+ 0xbf, 0xdb, 0xdb, 0x31, 0xe2, 0x42, 0x49, 0xb1, 0xef, 0x84, 0xe9, 0xfd,
+ 0xdd, 0xc9, 0x51, 0xff, 0xa2, 0x17, 0x99, 0x9d, 0xaf, 0x05, 0x41, 0x07,
+ 0x22, 0xd4, 0x85, 0xe0, 0xb1, 0x1c, 0xfb, 0x24, 0xb9, 0x83, 0x23, 0xa3,
+ 0x58, 0xe1, 0x38, 0x38, 0x1e, 0x9b, 0xb6, 0x8e, 0xa6, 0xc6, 0x84, 0x81,
+ 0xd3, 0xaa, 0xb4, 0xc8, 0xe7, 0xcd, 0x23, 0x09, 0x1b, 0x2e, 0x60, 0x0b,
+ 0x06, 0xe6, 0x81, 0x8e, 0x07, 0xa5, 0x6a, 0xe7, 0x13, 0x0c, 0xdc, 0xc7,
+ 0x6e, 0xea, 0xa6, 0xf0, 0x25, 0xb5, 0x5a, 0xdc, 0xf1, 0x4f, 0x10, 0xeb,
+ 0x7d, 0x56, 0x9a, 0xb1, 0xea, 0x62, 0x71, 0xd4, 0xb5, 0x01, 0x7a, 0x0c,
+ 0x40, 0x6e, 0x50, 0xd9, 0x32, 0x09, 0xf3, 0xd2, 0xb8, 0xe6, 0x61, 0x45,
+ 0xb5, 0x11, 0x92, 0x15, 0xb8, 0xc2, 0x8d, 0xbd, 0xfd, 0xb8, 0x69, 0xd1,
+ 0x8d, 0xc6, 0xd7, 0xa6, 0xf8, 0xc6, 0xd8, 0xd6, 0xbb, 0xeb, 0x25, 0x7e,
+ 0xb3, 0xd1, 0x06, 0xd1, 0xf9, 0x7b, 0xa4, 0xfe, 0x6c, 0x46, 0x0b, 0xec,
+ 0x53, 0xfa, 0xa2, 0xca, 0xe3, 0xe1, 0x04, 0x13, 0x8b, 0x62, 0xe0, 0x25,
+ 0x55, 0xc0, 0x2e, 0x18, 0x4d, 0xb2, 0x81, 0x12, 0x79, 0xbd, 0x70, 0x0d,
+ 0xa1, 0x34, 0xf2, 0x6d, 0xc2, 0xd0, 0x6b, 0x11, 0xb7, 0x04, 0x3f, 0xa1,
+ 0x29, 0xd0, 0x57, 0x7c, 0x5d, 0xa7, 0x12, 0x7b, 0x6f, 0xdd, 0xd0, 0xd6,
+ 0x65, 0xa3, 0xa2, 0xad, 0xf4, 0x3a, 0xb8, 0x73, 0x62, 0xfa, 0x4d, 0xda,
+ 0x74, 0x08, 0x3d, 0x15, 0x0f, 0x82, 0x5b, 0xb4, 0x59, 0x82, 0x3b, 0xfb,
+ 0x68, 0x43, 0x9f, 0xa5, 0x13, 0x94, 0x39, 0xd1, 0x4a, 0x4f, 0xc8, 0x6b,
+ 0x5a, 0x65, 0x07, 0xe9, 0x0d, 0x66, 0xe5, 0x55, 0x6e, 0x2d, 0x92, 0xe2,
+ 0x6e, 0xab, 0x07, 0x24, 0x93, 0x51, 0xee, 0x36, 0xe6, 0x93, 0x3f, 0x85,
+ 0x43, 0xc9, 0x38, 0xef, 0x49, 0xbd, 0x58, 0x0c, 0xa1, 0x79, 0x66, 0x1c,
+ 0xe6, 0x27, 0x0b, 0x14, 0x92, 0x48, 0x74, 0x1c, 0x3d, 0x91, 0xf4, 0xdd,
+ 0x72, 0x07, 0x89, 0x99, 0x31, 0xa9, 0x3c, 0xb2, 0x66, 0xb4, 0x46, 0x48,
+ 0xca, 0x1e, 0x8c, 0x27, 0xcd, 0xaf, 0xb4, 0x8b, 0xdc, 0x30, 0x56, 0x2a,
+ 0x48, 0xe9, 0x59, 0xbf, 0xd6, 0x54, 0x59, 0x51, 0x35, 0x8c, 0xca, 0x4b,
+ 0xde, 0x12, 0x20, 0x39, 0x74, 0xae, 0x65, 0xd7, 0xc9, 0xf0, 0x2e, 0x82,
+ 0xe9, 0x4c, 0xc4, 0xe1, 0x86, 0x3b, 0x6a, 0xaa, 0x32, 0x2d, 0x37, 0x7a,
+ 0x06, 0x88, 0x68, 0xc5, 0xb9, 0x7a, 0x80, 0x3b, 0x29, 0xd0, 0xc9, 0x83,
+ 0xce, 0x57, 0x73, 0xa0, 0x0f, 0x3e, 0x64, 0xcd, 0xc1, 0xd4, 0x40, 0x08,
+ 0x9e, 0x36, 0xcc, 0xa0, 0xf0, 0x02, 0xe5, 0xcf, 0x23, 0x88, 0xad, 0x07,
+ 0x70, 0x29, 0x04, 0xb2, 0xb5, 0xe4, 0x6a, 0xd1, 0x58, 0x51, 0x77, 0x5b,
+ 0xb1, 0xb5, 0x61, 0x10, 0x4f, 0x38, 0x1a, 0x5e, 0xa5, 0x20, 0xe2, 0xf7,
+ 0x1e, 0xc2, 0x78, 0x9b, 0x27, 0xc2, 0x65, 0xc3, 0x1f, 0xca, 0x78, 0xcd,
+ 0x12, 0xac, 0xf4, 0x37, 0x3e, 0x80, 0xf1, 0x9a, 0xc6, 0x1f, 0x42, 0x16,
+ 0x76, 0x64, 0x6b, 0x82, 0x5b, 0x15, 0x13, 0x46, 0xce, 0x71, 0x23, 0xe5,
+ 0x1f, 0xf9, 0x9b, 0x0f, 0xa7, 0x7c, 0x14, 0x40, 0x89, 0x65, 0xc4, 0x54,
+ 0x02, 0x67, 0x25, 0x34, 0x53, 0xd4, 0x48, 0xb7, 0xa2, 0x37, 0xc0, 0x12,
+ 0x40, 0x4c, 0xc4, 0xbd, 0xd9, 0x06, 0xa9, 0x40, 0x54, 0x24, 0xae, 0x79,
+ 0x23, 0x4e, 0x97, 0xdc, 0xf7, 0x25, 0x72, 0x08, 0x73, 0x95, 0x96, 0xde,
+ 0xa3, 0x14, 0x40, 0xdf, 0x52, 0x50, 0xce, 0x70, 0x15, 0x5f, 0x2c, 0xc1,
+ 0xbe, 0x57, 0xd9, 0x4e, 0x80, 0x72, 0x47, 0x13, 0x9e, 0x38, 0x8e, 0x5d,
+ 0xec, 0x27, 0x82, 0x10, 0x88, 0x68, 0xf6, 0x98, 0x27, 0x82, 0xf1, 0xda,
+ 0x54, 0x3a, 0xd9, 0x07, 0x95, 0xb1, 0x2c, 0x9b, 0x9c, 0x3f, 0x34, 0xc6,
+ 0xb3, 0x79, 0x3a, 0xa3, 0xc6, 0x30, 0xd5, 0x31, 0x95, 0xd4, 0xcf, 0x22,
+ 0xfd, 0x95, 0xbd, 0xe2, 0x72, 0x2f, 0x5c, 0xa6, 0x33, 0x50, 0x0e, 0x9a,
+ 0x7e, 0x9d, 0xc9, 0x28, 0x99, 0x9b, 0xd7, 0x60, 0xd2, 0x88, 0xb9, 0x9d,
+ 0x0d, 0x81, 0x60, 0x70, 0x19, 0x29, 0x45, 0x98, 0x56, 0x76, 0xb4, 0x74,
+ 0x5a, 0xc8, 0xe7, 0x31, 0x55, 0x38, 0x45, 0x44, 0x7b, 0x23, 0x84, 0xc5,
+ 0xf1, 0xb8, 0x9a, 0x9b, 0xbd, 0x5c, 0xc9, 0x10, 0xf1, 0xa1, 0x7b, 0xd5,
+ 0xc7, 0x8a, 0xd6, 0xcb, 0x0a, 0x68, 0xeb, 0xff, 0x1e, 0x34, 0x4e, 0x43,
+ 0xf2, 0x70, 0x61, 0x97, 0x59, 0x0f, 0xca, 0xc9, 0x3d, 0xe4, 0x07, 0x3e,
+ 0x37, 0x20, 0x6e, 0x94, 0x15, 0x22, 0x30, 0xfb, 0xa4, 0xe4, 0x30, 0xb8,
+ 0x25, 0x1c, 0x2e, 0xbb, 0x9c, 0xe1, 0x2d, 0xb5, 0x16, 0x83, 0x93, 0xcc,
+ 0x50, 0xc4, 0xea, 0x12, 0x58, 0x8d, 0xd1, 0x82, 0x72, 0x5c, 0xa7, 0x19,
+ 0xc5, 0x48, 0x6f, 0xe7, 0xe3, 0x31, 0xa1, 0x80, 0x03, 0xfb, 0xac, 0x8a,
+ 0x6c, 0xb0, 0x08, 0x04, 0x64, 0xcc, 0xf3, 0x0c, 0xab, 0x65, 0x28, 0xf2,
+ 0x1f, 0xf7, 0x69, 0xfb, 0x60, 0xc8, 0xe5, 0xd5, 0xac, 0xcd, 0x5f, 0x85,
+ 0x68, 0xd9, 0xf6, 0x37, 0xc5, 0xec, 0xf1, 0xfd, 0x6e, 0x40, 0xbf, 0x97,
+ 0x87, 0x11, 0x82, 0x37, 0xd6, 0x07, 0x71, 0xbd, 0x10, 0x71, 0xd4, 0x6e,
+ 0xc1, 0x1d, 0x8f, 0x11, 0x2e, 0x63, 0x7b, 0x3f, 0x24, 0x05, 0xc2, 0x70,
+ 0x1e, 0x18, 0xf5, 0x56, 0x41, 0x77, 0x90, 0x3b, 0x24, 0x24, 0xdd, 0xf8,
+ 0x70, 0x79, 0x43, 0xaa, 0x14, 0xa6, 0x60, 0xf3, 0x16, 0x87, 0x57, 0x70,
+ 0xd1, 0x2d, 0xe1, 0x2b, 0x32, 0xb4, 0xe4, 0x01, 0xe1, 0x6b, 0x01, 0x89,
+ 0x6d, 0x31, 0xbf, 0x2c, 0x92, 0x91, 0x60, 0x35, 0xf2, 0xc5, 0x98, 0xd6,
+ 0x98, 0x6e, 0x93, 0x6f, 0x10, 0x98, 0x27, 0xc9, 0xbe, 0xca, 0xad, 0x95,
+ 0x92, 0x9c, 0xb7, 0x80, 0xa3, 0x03, 0x4b, 0x64, 0x8b, 0x29, 0xca, 0xc8,
+ 0xb3, 0x7c, 0x16, 0x73, 0xdb, 0x9e, 0x48, 0x76, 0x2f, 0x9e, 0x2d, 0x5c,
+ 0xd3, 0x30, 0x69, 0xb3, 0x37, 0x3e, 0x4e, 0x94, 0xf0, 0x2c, 0x31, 0x49,
+ 0xa8, 0x01, 0xd0, 0x70, 0x03, 0xac, 0x52, 0x60, 0xc0, 0x77, 0x27, 0x30,
+ 0xca, 0x09, 0xe1, 0xf4, 0xa7, 0xb3, 0x61, 0x71, 0x17, 0x16, 0xb6, 0xef,
+ 0xc5, 0x42, 0x3f, 0xea, 0xcd, 0x20, 0x1c, 0x3f, 0x78, 0x2d, 0x08, 0xdb,
+ 0x70, 0xaf, 0x8f, 0xd5, 0x37, 0x83, 0x7f, 0x9a, 0x19, 0xa8, 0x10, 0xd7,
+ 0x56, 0x10, 0x4b, 0x0c, 0x66, 0x1a, 0xa1, 0xcf, 0x13, 0x4a, 0x60, 0x7d,
+ 0x4f, 0x15, 0xd3, 0x04, 0x63, 0xae, 0xfc, 0x75, 0x62, 0x06, 0x62, 0xec,
+ 0xd1, 0x84, 0xd6, 0xf6, 0x61, 0xb7, 0x0e, 0xc5, 0x50, 0x20, 0x88, 0x98,
+ 0x3a, 0x4b, 0x02, 0xe5, 0x06, 0xc9, 0x65, 0x51, 0xb9, 0x80, 0xce, 0xc6,
+ 0xc2, 0x34, 0x48, 0x05, 0x43, 0x50, 0xca, 0xef, 0x8d, 0x17, 0x15, 0x52,
+ 0x76, 0x1b, 0x94, 0x6f, 0x93, 0xbd, 0xad, 0x57, 0x89, 0x7d, 0x65, 0x21,
+ 0x76, 0x9c, 0xcf, 0xfa, 0x7c, 0x0b, 0x58, 0xf5, 0x7c, 0x7f, 0x8d, 0xdc,
+ 0x55, 0x21, 0xf2, 0x6e, 0x83, 0x45, 0xc9, 0x19, 0x18, 0x66, 0xf3, 0xab,
+ 0xd4, 0x45, 0x2e, 0x8b, 0xf7, 0xba, 0xfc, 0xd6, 0xf5, 0x9e, 0x77, 0x81,
+ 0xf5, 0x4f, 0xeb, 0xc2, 0xb9, 0xfa, 0xa6, 0x60, 0xab, 0x40, 0x12, 0x56,
+ 0x78, 0x5f, 0xcb, 0x08, 0xae, 0xf7, 0xba, 0x92, 0xb9, 0x95, 0x14, 0xe1,
+ 0xe0, 0x55, 0xc1, 0x07, 0xad, 0x29, 0x98, 0xc8, 0xa2, 0x8a, 0xc5, 0x50,
+ 0x4f, 0x90, 0x90, 0x76, 0x8f, 0x1b, 0x8c, 0xa8, 0xd2, 0xd8, 0x28, 0xf5,
+ 0x0e, 0x8a, 0xc3, 0x25, 0xcd, 0x14, 0x09, 0xd3, 0x07, 0x43, 0x20, 0x9f,
+ 0xec, 0x3e, 0x7d, 0xb2, 0xb5, 0x4a, 0x58, 0x81, 0xc6, 0x3f, 0x41, 0xa8,
+ 0x29, 0xb5, 0xbb, 0xde, 0xbd, 0x82, 0x4f, 0x63, 0x29, 0x15, 0xde, 0x21,
+ 0xfc, 0x6b, 0xaf, 0xe7, 0xee, 0x4b, 0xa4, 0xdc, 0xa7, 0xb4, 0x70, 0xcf,
+ 0x1e, 0x44, 0xc3, 0x6c, 0x84, 0x47, 0x88, 0x16, 0x59, 0xcd, 0x16, 0x78,
+ 0xb6, 0x06, 0x8b, 0x6c, 0x42, 0x90, 0x12, 0xca, 0x3c, 0x89, 0x71, 0x36,
+ 0x98, 0xd6, 0xd4, 0x8f, 0xe5, 0x6d, 0x38, 0x13, 0xa9, 0x0c, 0xe2, 0xbe,
+ 0x8e, 0x88, 0x2d, 0x77, 0xf1, 0x2e, 0xc1, 0xfe, 0x54, 0x93, 0xf2, 0x7a,
+ 0x57, 0xeb, 0xce, 0xf1, 0x5f, 0xbd, 0xdd, 0x00, 0xf4, 0xb8, 0x7e, 0xb7,
+ 0xe7, 0xd0, 0x9e, 0x6d, 0xf1, 0xc3, 0x69, 0x6f, 0x7f, 0x05, 0xed, 0xad,
+ 0x4b, 0x7a, 0xfb, 0x11, 0x43, 0x6a, 0xaf, 0x4b, 0x7b, 0x4f, 0x1f, 0x3f,
+ 0xf9, 0x72, 0x35, 0xed, 0xed, 0x7f, 0x22, 0xda, 0xdb, 0xbf, 0x2f, 0xed,
+ 0x99, 0x82, 0x82, 0x4a, 0x7d, 0x0d, 0xf2, 0x73, 0x36, 0xdb, 0x50, 0x9f,
+ 0x62, 0x33, 0xb4, 0xd3, 0xde, 0xda, 0xa4, 0xd7, 0x4e, 0x7b, 0x0e, 0xf1,
+ 0x91, 0x00, 0xe1, 0x1e, 0x08, 0x25, 0x3f, 0xa5, 0x3e, 0x97, 0xbe, 0xee,
+ 0x4b, 0x7b, 0x9a, 0x5f, 0x79, 0x88, 0x32, 0xdd, 0x37, 0x1e, 0xf4, 0xb2,
+ 0xe0, 0xa9, 0x22, 0xe4, 0x0e, 0x82, 0xc7, 0xb2, 0x6c, 0x24, 0xaf, 0x78,
+ 0x90, 0xf9, 0x52, 0x58, 0x8e, 0x44, 0x2d, 0xb2, 0x58, 0x07, 0xbc, 0xd3,
+ 0xb6, 0xb0, 0x28, 0xb9, 0x30, 0xe6, 0x13, 0xbc, 0x1c, 0x36, 0xe2, 0x0d,
+ 0x0d, 0x6c, 0x50, 0x49, 0xcd, 0x81, 0xaa, 0xe5, 0xb4, 0xdc, 0xcf, 0x9f,
+ 0xfb, 0xcd, 0xee, 0x11, 0x9e, 0xfb, 0xe7, 0x4b, 0x3e, 0xe3, 0xfe, 0x05,
+ 0x4d, 0xb8, 0xba, 0xad, 0x1e, 0x9e, 0x5d, 0xcb, 0x34, 0xe1, 0xa4, 0x74,
+ 0xd7, 0xc9, 0xe2, 0x0e, 0x04, 0x38, 0xa9, 0xa9, 0x19, 0x84, 0xc9, 0x10,
+ 0x53, 0x83, 0x31, 0x09, 0xeb, 0x0a, 0x0e, 0xb0, 0x02, 0xe2, 0x18, 0x44,
+ 0xce, 0x88, 0xda, 0x10, 0x3d, 0x0d, 0xf7, 0x13, 0x8f, 0x06, 0x3a, 0xf9,
+ 0x83, 0x95, 0x38, 0xcb, 0x66, 0x3a, 0x76, 0x4f, 0x22, 0x39, 0x51, 0x64,
+ 0x70, 0x07, 0x43, 0xc7, 0xa0, 0x04, 0x79, 0x62, 0xc8, 0x60, 0x43, 0xd3,
+ 0x40, 0x65, 0xe3, 0xff, 0x2c, 0x9c, 0x80, 0xda, 0xe8, 0x3f, 0x7a, 0x5c,
+ 0xa8, 0xdb, 0xfa, 0xda, 0xbc, 0xb2, 0x36, 0xb4, 0xf8, 0xe5, 0x7a, 0xc4,
+ 0xf4, 0xb2, 0xab, 0xf5, 0xa3, 0x88, 0x92, 0x5c, 0xda, 0xaa, 0x83, 0xaf,
+ 0x34, 0xf1, 0x42, 0x80, 0x13, 0x52, 0x0a, 0xb7, 0xfa, 0x25, 0x85, 0x02,
+ 0x82, 0x50, 0x62, 0x62, 0x76, 0xad, 0x16, 0x64, 0xce, 0xd7, 0x50, 0x96,
+ 0x84, 0x3c, 0x6c, 0x08, 0xc7, 0x7a, 0x72, 0x6c, 0x6a, 0x86, 0xd1, 0x25,
+ 0x8e, 0x18, 0x81, 0x0c, 0x1e, 0x1d, 0x46, 0x8a, 0xe6, 0x50, 0x15, 0xfb,
+ 0xa6, 0x40, 0xbc, 0xc8, 0x10, 0x02, 0x9c, 0x39, 0x95, 0x4a, 0x5c, 0xfe,
+ 0xf1, 0x15, 0xf4, 0x56, 0xd9, 0x8b, 0xd1, 0x62, 0x3a, 0x97, 0x99, 0x48,
+ 0x49, 0x0d, 0x81, 0x1b, 0x66, 0x28, 0xb1, 0xa4, 0x70, 0xa2, 0x79, 0xae,
+ 0xf2, 0x1b, 0x3f, 0x59, 0x9b, 0x03, 0x85, 0xf4, 0x34, 0x88, 0x35, 0x5f,
+ 0x61, 0xc3, 0x5f, 0x56, 0xf5, 0x02, 0x9a, 0x1c, 0x62, 0x3a, 0x4a, 0x07,
+ 0x0b, 0x44, 0x26, 0x0a, 0x6a, 0x6b, 0x16, 0xc2, 0xd8, 0x1e, 0x79, 0x1a,
+ 0x18, 0xd6, 0xa6, 0x4e, 0xbb, 0x0c, 0x00, 0x77, 0x87, 0xa2, 0x42, 0x95,
+ 0x81, 0xe6, 0x30, 0x5c, 0x11, 0xdd, 0xdc, 0xb2, 0x69, 0x1f, 0xdb, 0xd0,
+ 0xd1, 0xd2, 0xcd, 0xda, 0x94, 0xdd, 0x36, 0x5c, 0xbb, 0x2f, 0xf1, 0xad,
+ 0x10, 0xc3, 0x5a, 0x44, 0xff, 0xac, 0x5b, 0xdf, 0x6b, 0xf8, 0x33, 0xeb,
+ 0x3a, 0xad, 0xd2, 0x51, 0x98, 0x77, 0xeb, 0x74, 0xdb, 0x3c, 0xcf, 0x6e,
+ 0xd0, 0x74, 0xc3, 0x60, 0x5c, 0x0d, 0xe7, 0xf1, 0x18, 0xae, 0x8f, 0x7c,
+ 0xee, 0xa1, 0x66, 0x0b, 0x3c, 0x91, 0x70, 0x9f, 0x8b, 0xe3, 0xf3, 0xe8,
+ 0x39, 0xde, 0x33, 0xa8, 0x1b, 0x47, 0x9b, 0x20, 0x74, 0x3d, 0x7d, 0xb4,
+ 0xbb, 0xbf, 0xb5, 0x5c, 0x9d, 0x73, 0x5b, 0x6f, 0xa9, 0xf2, 0xfb, 0x70,
+ 0x43, 0xbc, 0xdb, 0xf8, 0xba, 0xfb, 0x55, 0x1b, 0xd8, 0x7a, 0x8a, 0xc3,
+ 0x18, 0x7e, 0xa6, 0x31, 0x49, 0xbc, 0x75, 0x53, 0xfc, 0x57, 0xfe, 0xca,
+ 0xce, 0xf2, 0x10, 0xf0, 0xde, 0xc5, 0xa2, 0x98, 0x69, 0xc9, 0x6f, 0x58,
+ 0xd6, 0x77, 0xaf, 0xcf, 0x9e, 0x9d, 0x9c, 0x1e, 0xfd, 0xdd, 0x58, 0x96,
+ 0xb0, 0x33, 0xad, 0x38, 0xf5, 0x2e, 0x4d, 0xca, 0xbb, 0x77, 0x70, 0xb7,
+ 0xc3, 0x97, 0x9b, 0xfb, 0x5b, 0x54, 0x6e, 0xd0, 0x03, 0xe0, 0xbf, 0x4c,
+ 0x6b, 0x35, 0x20, 0x05, 0x05, 0xd1, 0xa9, 0x8c, 0x18, 0x8e, 0x03, 0x44,
+ 0x72, 0xd8, 0xe9, 0x81, 0x84, 0x27, 0xe8, 0x38, 0x18, 0x01, 0xe5, 0xfa,
+ 0x6e, 0x9c, 0x32, 0x13, 0x48, 0x66, 0x77, 0xb6, 0xa0, 0x9f, 0x57, 0x51,
+ 0x80, 0x4d, 0xdf, 0xe8, 0x17, 0xe5, 0x9b, 0x12, 0xd1, 0x15, 0xc7, 0x63,
+ 0xad, 0xd7, 0x24, 0xe8, 0xfa, 0x04, 0x67, 0x4e, 0xb8, 0x8b, 0x4b, 0x8f,
+ 0xbe, 0xb3, 0x70, 0xed, 0x85, 0xa1, 0x1f, 0x7c, 0x81, 0x39, 0xad, 0x3f,
+ 0x84, 0x68, 0x74, 0x60, 0x6b, 0xd1, 0xcc, 0xeb, 0x2e, 0xf7, 0x3d, 0x58,
+ 0x8c, 0x6b, 0x35, 0x8d, 0xe3, 0x8a, 0xa4, 0xe9, 0x74, 0x32, 0x4b, 0x2b,
+ 0xc1, 0x11, 0x8b, 0x0e, 0xe1, 0xe7, 0xd7, 0x20, 0xc6, 0x79, 0x95, 0xce,
+ 0x92, 0x52, 0x37, 0xc6, 0x91, 0x5d, 0xf0, 0x4d, 0xc3, 0xcc, 0x7b, 0x5a,
+ 0x5b, 0x26, 0x1d, 0x99, 0x27, 0xe1, 0x1e, 0x38, 0xf0, 0xc4, 0x93, 0x8b,
+ 0xbf, 0x9f, 0x9f, 0x7c, 0x7d, 0x88, 0x92, 0xcf, 0x37, 0x88, 0x21, 0x5a,
+ 0xd6, 0x04, 0x21, 0x02, 0x0c, 0xf1, 0x96, 0xe6, 0xc7, 0x67, 0x2f, 0xfb,
+ 0xe7, 0xa7, 0x67, 0xc7, 0x5f, 0x1f, 0xfe, 0x88, 0x16, 0x6e, 0x10, 0xa4,
+ 0xef, 0x9c, 0x77, 0xcd, 0x67, 0x91, 0x96, 0x52, 0xf4, 0x8b, 0x78, 0x9e,
+ 0xfc, 0xf0, 0xee, 0xe4, 0xf5, 0xdf, 0xbe, 0x3e, 0xbc, 0x4e, 0x8a, 0x2e,
+ 0xce, 0x8f, 0xdf, 0x46, 0x34, 0xa6, 0xd9, 0x75, 0x56, 0xe4, 0x33, 0x0c,
+ 0xe9, 0x00, 0xf9, 0xb5, 0xc8, 0x70, 0xe7, 0x02, 0xd5, 0x68, 0xea, 0xcb,
+ 0xf4, 0xc9, 0x6a, 0xd2, 0x54, 0xb2, 0x3c, 0xd7, 0xd5, 0xee, 0xce, 0x8e,
+ 0xac, 0xf0, 0xbd, 0x0d, 0x41, 0x7f, 0xe9, 0x72, 0xf8, 0xd3, 0x38, 0xbb,
+ 0xec, 0x39, 0x9c, 0x00, 0xed, 0x6a, 0x83, 0xc9, 0xfb, 0x32, 0xfb, 0x2d,
+ 0x8d, 0x0e, 0x49, 0x44, 0xf7, 0xaa, 0xda, 0x5e, 0x70, 0x1d, 0x47, 0xd8,
+ 0x4d, 0xfc, 0x2d, 0xfa, 0xee, 0xf4, 0x2f, 0xfd, 0x97, 0xff, 0x7d, 0x62,
+ 0x62, 0x50, 0xa7, 0x0b, 0x2c, 0x5f, 0x96, 0x46, 0xdf, 0x3c, 0xde, 0xdd,
+ 0xdb, 0x12, 0xa9, 0x41, 0xaa, 0xc9, 0x0c, 0x26, 0x18, 0xec, 0xdc, 0x30,
+ 0x68, 0x62, 0x4f, 0xa4, 0x38, 0x36, 0x6b, 0x41, 0xd9, 0x9a, 0xb8, 0x1a,
+ 0x30, 0x46, 0x80, 0x8c, 0x04, 0x66, 0x04, 0xdf, 0x02, 0x17, 0x41, 0xa8,
+ 0x42, 0x2f, 0x30, 0x97, 0x06, 0xa5, 0xf1, 0x11, 0x4e, 0x29, 0x0a, 0x18,
+ 0x8e, 0x84, 0xdb, 0x2d, 0x0d, 0xbf, 0xe2, 0x40, 0xd7, 0xda, 0x3a, 0x7c,
+ 0x2e, 0xcc, 0xbf, 0xda, 0x20, 0x76, 0x77, 0xf6, 0x1e, 0x45, 0x95, 0x5f,
+ 0xbf, 0x10, 0xd5, 0xc6, 0x25, 0x57, 0x00, 0xb5, 0x01, 0xe7, 0xd9, 0x2b,
+ 0xf8, 0xea, 0x7d, 0x15, 0xde, 0x66, 0x27, 0x43, 0x9d, 0xb0, 0x98, 0x73,
+ 0x2a, 0xbc, 0xc3, 0x8b, 0xac, 0x07, 0x57, 0x2b, 0x0d, 0x2e, 0x57, 0x2e,
+ 0xa6, 0xb8, 0x86, 0x44, 0xf4, 0x14, 0x52, 0xe5, 0x04, 0x4c, 0x4d, 0xd2,
+ 0x4b, 0x8c, 0xb2, 0x90, 0x4d, 0x2b, 0x6d, 0xf9, 0xea, 0x00, 0x20, 0x76,
+ 0x94, 0x0c, 0xd1, 0x0a, 0x4c, 0x55, 0x89, 0x18, 0xe0, 0x91, 0xeb, 0xbf,
+ 0x02, 0x3f, 0x37, 0xd1, 0x56, 0xb5, 0xd1, 0x49, 0xe9, 0x8d, 0xf6, 0x0a,
+ 0x45, 0x2a, 0x38, 0xfb, 0x9b, 0xae, 0xe6, 0x9e, 0xa5, 0x37, 0x40, 0x7d,
+ 0x11, 0xef, 0xe5, 0xdb, 0x5c, 0xe3, 0x06, 0x68, 0xdb, 0xbd, 0x35, 0x08,
+ 0xc8, 0x19, 0x9c, 0x90, 0xcf, 0xee, 0x57, 0x7b, 0xbd, 0xdd, 0x27, 0x5f,
+ 0x62, 0xd1, 0xaa, 0xed, 0x55, 0xa4, 0x23, 0xcb, 0x51, 0x17, 0x1f, 0xbe,
+ 0xac, 0x89, 0x0f, 0xbf, 0xd1, 0xcd, 0x00, 0xd3, 0x8d, 0x29, 0x82, 0xf5,
+ 0x10, 0x7f, 0x0d, 0x96, 0xc2, 0xa6, 0x80, 0x73, 0xf6, 0xe3, 0x53, 0x68,
+ 0x0f, 0x9b, 0x3c, 0x68, 0xb3, 0x0d, 0x8e, 0xe7, 0x34, 0x1f, 0xb1, 0x82,
+ 0x89, 0xb5, 0x9a, 0x4d, 0x08, 0x75, 0xf3, 0x54, 0x39, 0x00, 0xe5, 0xa4,
+ 0xaa, 0xc2, 0xb3, 0x24, 0xb5, 0x23, 0x54, 0x6e, 0x4b, 0x7b, 0xa6, 0x36,
+ 0x41, 0x20, 0x82, 0x48, 0x50, 0xc9, 0x31, 0x1b, 0xf3, 0x10, 0xdb, 0x42,
+ 0x29, 0x01, 0x45, 0x64, 0x58, 0xb4, 0x6f, 0x94, 0x7d, 0x27, 0x6e, 0xc1,
+ 0xe6, 0x11, 0xc7, 0x0f, 0x21, 0x3f, 0x2a, 0xfd, 0x62, 0xaa, 0x8c, 0xcb,
+ 0xd7, 0xc8, 0xc7, 0x45, 0x85, 0x82, 0x48, 0x1f, 0xef, 0x2d, 0x18, 0x67,
+ 0xa9, 0x76, 0x1d, 0x04, 0x61, 0x27, 0xa7, 0x06, 0xba, 0xc0, 0x70, 0x45,
+ 0x82, 0xe9, 0x5e, 0x9c, 0x42, 0x40, 0x68, 0xce, 0x70, 0x06, 0x2f, 0x25,
+ 0xd9, 0x8f, 0x67, 0x27, 0x8e, 0x59, 0x1a, 0xd4, 0xe6, 0x14, 0x27, 0xb3,
+ 0xc5, 0x28, 0xae, 0x41, 0xd3, 0x95, 0x31, 0x43, 0xd5, 0x64, 0x37, 0x68,
+ 0x11, 0xdf, 0x47, 0xb9, 0x0d, 0x6e, 0x23, 0x12, 0xd4, 0xd8, 0xfb, 0xcb,
+ 0xcd, 0x3a, 0x2b, 0xe2, 0x21, 0x3d, 0x57, 0x41, 0x00, 0xc2, 0x3e, 0x4a,
+ 0x9d, 0x8a, 0x3e, 0xe7, 0xae, 0xa8, 0xd6, 0x78, 0x18, 0x61, 0x1d, 0xfb,
+ 0xcd, 0x78, 0xcb, 0x14, 0x55, 0x24, 0xb8, 0x69, 0x26, 0x0d, 0x3f, 0xa9,
+ 0x06, 0x9e, 0xcf, 0x87, 0x8b, 0x29, 0x17, 0x26, 0x4d, 0x68, 0xe1, 0x38,
+ 0xce, 0x52, 0x29, 0x44, 0x68, 0x02, 0x3b, 0xdb, 0xe6, 0xc0, 0x6e, 0x65,
+ 0xfc, 0x94, 0xbc, 0xe8, 0x15, 0x0f, 0x6e, 0x34, 0x36, 0x4b, 0x6f, 0xdc,
+ 0xc6, 0xac, 0xa1, 0xc3, 0x34, 0xd8, 0x76, 0x53, 0x18, 0xc2, 0xbf, 0x7f,
+ 0x36, 0xd8, 0x83, 0x6f, 0x8a, 0xb6, 0x8a, 0xb8, 0xbf, 0x45, 0x9d, 0x1f,
+ 0xa0, 0xcf, 0x9d, 0x5d, 0xd8, 0xd4, 0x79, 0xb4, 0xb7, 0xb3, 0xb7, 0x1b,
+ 0xed, 0xee, 0x1d, 0xec, 0x7e, 0x79, 0xb0, 0xb3, 0xb3, 0x46, 0x8d, 0x5c,
+ 0x68, 0x25, 0xfe, 0x28, 0xcd, 0xd0, 0xb9, 0x5e, 0x4f, 0x55, 0x01, 0x2a,
+ 0xba, 0x8c, 0xa9, 0x8e, 0x99, 0xba, 0xa2, 0xde, 0x74, 0x09, 0xef, 0x79,
+ 0x9a, 0x57, 0xa9, 0x07, 0xf6, 0x5c, 0x4d, 0x4a, 0x0c, 0xd0, 0x8f, 0x0e,
+ 0xff, 0x76, 0xf2, 0xa6, 0xff, 0xf2, 0xec, 0xf5, 0x37, 0x41, 0xf7, 0x80,
+ 0x7c, 0x89, 0x84, 0x00, 0xb2, 0x95, 0xad, 0x4c, 0x60, 0x7d, 0xa8, 0xe8,
+ 0x98, 0x56, 0x67, 0x1f, 0xd7, 0xf4, 0xce, 0x66, 0xf8, 0x88, 0x5f, 0x00,
+ 0x3b, 0x9d, 0x57, 0x8c, 0x3d, 0xae, 0xae, 0x5a, 0xda, 0x6d, 0x32, 0x64,
+ 0x92, 0x8b, 0x95, 0xcc, 0xc7, 0x3b, 0x5d, 0xfd, 0x6d, 0xd7, 0xfc, 0xb6,
+ 0xe7, 0xf3, 0x07, 0xfe, 0x62, 0x3f, 0x44, 0x50, 0x4d, 0x6f, 0x6a, 0xc9,
+ 0x55, 0x29, 0xf0, 0xc8, 0xa0, 0xa2, 0x04, 0xe3, 0xed, 0xd6, 0xf4, 0x1e,
+ 0x47, 0xc9, 0x68, 0x89, 0x1e, 0x64, 0xf9, 0x8b, 0x55, 0xf0, 0x32, 0xfa,
+ 0xeb, 0xdb, 0x97, 0xc7, 0x31, 0x07, 0x01, 0x10, 0x4b, 0xde, 0x86, 0xf3,
+ 0x6e, 0xc2, 0xf1, 0xbd, 0x01, 0x85, 0x93, 0xce, 0x9d, 0x6c, 0xbf, 0xc5,
+ 0x9c, 0x11, 0xec, 0x51, 0x86, 0xe5, 0xe2, 0x7d, 0xee, 0x8a, 0x36, 0x9b,
+ 0xc3, 0x38, 0xee, 0xda, 0x8b, 0xf0, 0xf0, 0x35, 0x59, 0xc0, 0x9a, 0xcf,
+ 0xed, 0x86, 0x9e, 0xdb, 0xf5, 0x9f, 0xdb, 0x0b, 0x3d, 0xb7, 0xe7, 0x3f,
+ 0xb7, 0x1f, 0x7a, 0xce, 0xd9, 0x00, 0x39, 0xca, 0x42, 0x55, 0x6b, 0xd4,
+ 0x8e, 0x08, 0xc3, 0xa2, 0xd7, 0x8f, 0xb0, 0x7f, 0x76, 0xf5, 0x7a, 0x96,
+ 0xfe, 0x70, 0x1e, 0xcb, 0x4e, 0x97, 0xf7, 0xf8, 0xbe, 0x75, 0x58, 0x2c,
+ 0x3d, 0x66, 0xee, 0x65, 0xae, 0x04, 0x6a, 0xdc, 0x20, 0x5d, 0xa7, 0x11,
+ 0xd7, 0x07, 0xb2, 0xdf, 0xab, 0xad, 0x85, 0x83, 0x56, 0xe6, 0xf9, 0x18,
+ 0xd7, 0xf3, 0xec, 0xa8, 0x04, 0xa1, 0xcd, 0x05, 0x2c, 0x3c, 0x93, 0x72,
+ 0x77, 0x5f, 0x5d, 0xd0, 0xd1, 0xa1, 0xfc, 0xb2, 0xc8, 0x2a, 0x2e, 0xf1,
+ 0xee, 0x6b, 0x22, 0xa7, 0x7d, 0xb7, 0x04, 0x3a, 0x9b, 0x13, 0xf9, 0xad,
+ 0x88, 0x5e, 0x2b, 0x6d, 0x01, 0xf4, 0xe6, 0xd1, 0xf2, 0x8b, 0xfe, 0x62,
+ 0xa2, 0xbb, 0x41, 0xff, 0x85, 0x69, 0x22, 0x29, 0xd3, 0x72, 0x5c, 0x5c,
+ 0x71, 0xff, 0x78, 0xf3, 0xeb, 0xe0, 0xa4, 0x79, 0x52, 0x76, 0x24, 0x05,
+ 0xd1, 0xcf, 0xf1, 0xcd, 0x46, 0xfa, 0x3c, 0xc6, 0xba, 0x24, 0x23, 0x24,
+ 0x3f, 0xe8, 0x5a, 0x1a, 0xae, 0x8d, 0xd4, 0x58, 0x44, 0x04, 0x4c, 0xdd,
+ 0x93, 0x56, 0xdf, 0xbe, 0x39, 0xf5, 0xb4, 0x63, 0xb3, 0xf9, 0xb8, 0xf2,
+ 0xbd, 0x32, 0xdd, 0x86, 0x6b, 0xad, 0xdc, 0xa6, 0xc0, 0x16, 0xe9, 0xf6,
+ 0xaa, 0x9a, 0x4e, 0x56, 0x16, 0xfa, 0x44, 0x02, 0xc3, 0x48, 0x97, 0xc9,
+ 0x9d, 0x18, 0x6e, 0x29, 0x6c, 0xdc, 0x96, 0x0b, 0xc9, 0x9c, 0x1d, 0xf5,
+ 0x51, 0xa2, 0xd1, 0xc8, 0x86, 0xe1, 0xb2, 0x78, 0x40, 0x77, 0x51, 0x08,
+ 0x23, 0xc9, 0xcd, 0x14, 0x86, 0x63, 0xeb, 0x2e, 0xe7, 0x30, 0xd9, 0x98,
+ 0x1a, 0x7c, 0x41, 0xc2, 0x4e, 0x02, 0xa5, 0x1e, 0xa8, 0x72, 0x35, 0xe8,
+ 0x80, 0xa5, 0x14, 0x0d, 0x09, 0x2d, 0x58, 0xe9, 0xc6, 0xe0, 0xa6, 0x36,
+ 0x72, 0x21, 0x28, 0xe4, 0x87, 0x3d, 0x56, 0x75, 0x72, 0xfb, 0x6c, 0x5a,
+ 0x5e, 0x6d, 0x14, 0x30, 0xd5, 0x77, 0x47, 0x27, 0xfd, 0x77, 0xbb, 0x7b,
+ 0x5f, 0xbe, 0xfb, 0xfe, 0xf8, 0xd5, 0xbb, 0xfe, 0x8b, 0xa3, 0xbd, 0xc7,
+ 0xeb, 0x22, 0x50, 0x68, 0x63, 0x12, 0xd2, 0xb1, 0x00, 0xb5, 0xaa, 0x5c,
+ 0xea, 0x77, 0x80, 0x31, 0x60, 0xcc, 0x3c, 0xe1, 0xaf, 0x1e, 0xe2, 0xbf,
+ 0xdf, 0xf8, 0xe5, 0x5b, 0xf8, 0x40, 0x78, 0x40, 0x20, 0x68, 0x81, 0x41,
+ 0x14, 0x62, 0x26, 0x20, 0x5e, 0xab, 0x46, 0xda, 0x41, 0x4b, 0x7e, 0x02,
+ 0x91, 0x5e, 0xa7, 0xff, 0xe6, 0xbc, 0xd3, 0x95, 0x58, 0x5e, 0xe8, 0x20,
+ 0x86, 0xbf, 0x23, 0xb2, 0xd9, 0x46, 0xd1, 0xe3, 0x9d, 0xc7, 0x8f, 0xb6,
+ 0x7a, 0x0e, 0x77, 0x26, 0xc8, 0xff, 0x40, 0x34, 0x36, 0x7d, 0x69, 0xa0,
+ 0x4a, 0x88, 0xe4, 0x9c, 0x12, 0x0a, 0xe8, 0xbf, 0xa9, 0xcd, 0x90, 0x33,
+ 0x84, 0xba, 0x9c, 0x91, 0xdb, 0xae, 0x18, 0xca, 0xed, 0x47, 0x3c, 0x84,
+ 0x86, 0x59, 0x77, 0x81, 0x60, 0xd6, 0x90, 0x64, 0x58, 0x48, 0xd0, 0x93,
+ 0x70, 0xc3, 0x60, 0x60, 0x8b, 0xb2, 0x47, 0x9a, 0x34, 0x9f, 0x26, 0xa9,
+ 0x0a, 0x62, 0x26, 0x2d, 0x0b, 0xd6, 0x8d, 0x84, 0x91, 0xa9, 0x5b, 0xbd,
+ 0xe5, 0xbc, 0xc1, 0x82, 0x7d, 0x3f, 0x5b, 0xe0, 0x9e, 0x50, 0x3b, 0xda,
+ 0x8c, 0xb4, 0xd2, 0x4a, 0xf1, 0xee, 0x2a, 0x7c, 0xa6, 0x7c, 0x4e, 0x77,
+ 0x14, 0x38, 0xe4, 0xf5, 0x88, 0x5b, 0xe8, 0xa0, 0x41, 0xbe, 0x66, 0xf7,
+ 0x0f, 0x59, 0x2d, 0x0b, 0x12, 0xb0, 0x25, 0x11, 0x24, 0x37, 0x32, 0x2f,
+ 0x71, 0xfd, 0xd3, 0x94, 0x68, 0xbb, 0x41, 0xda, 0xd3, 0x14, 0x84, 0xae,
+ 0x51, 0x3b, 0xbe, 0xb1, 0xea, 0xe9, 0xce, 0x74, 0x7a, 0x1a, 0xa4, 0x2e,
+ 0xb1, 0x10, 0x96, 0x6a, 0x69, 0xf0, 0xe8, 0x41, 0x4d, 0x97, 0xfb, 0xeb,
+ 0x03, 0xc9, 0xda, 0x7a, 0x0f, 0xb5, 0xed, 0xa8, 0x99, 0xd5, 0x67, 0xdd,
+ 0x51, 0x33, 0x8a, 0xf9, 0xcd, 0xc8, 0x99, 0x37, 0x57, 0xe9, 0xf8, 0x08,
+ 0x1b, 0x4c, 0x0d, 0x05, 0xd1, 0xc7, 0x68, 0x6b, 0x15, 0xb1, 0xe8, 0xdf,
+ 0xb1, 0xb5, 0x22, 0x00, 0x35, 0xb9, 0x0e, 0xc5, 0xcb, 0x78, 0xcc, 0xe4,
+ 0xe3, 0x6e, 0xb8, 0xb3, 0x16, 0x9f, 0x29, 0x07, 0xff, 0x63, 0x6f, 0xb5,
+ 0x36, 0xd6, 0xd8, 0x6e, 0x14, 0x56, 0x83, 0xe2, 0xde, 0x73, 0x04, 0xa8,
+ 0xaa, 0x63, 0x66, 0x3a, 0x3a, 0x07, 0xe9, 0x18, 0x2a, 0x83, 0x48, 0xe5,
+ 0xc9, 0x25, 0x60, 0x99, 0x14, 0xce, 0xcc, 0x3a, 0x26, 0xb5, 0x22, 0x66,
+ 0xe3, 0x2f, 0x02, 0xc5, 0x50, 0x31, 0x76, 0x43, 0x7b, 0x41, 0xf1, 0x69,
+ 0x6c, 0x40, 0xc1, 0x1a, 0xd1, 0xaa, 0x6a, 0x5a, 0x90, 0xca, 0x36, 0x98,
+ 0x74, 0xd8, 0x68, 0xee, 0x1d, 0x5e, 0x1a, 0xef, 0x64, 0x9b, 0x77, 0x34,
+ 0x84, 0xd5, 0xe4, 0xcd, 0x61, 0x23, 0xa0, 0xb0, 0x61, 0x0c, 0x59, 0x89,
+ 0xb8, 0xfc, 0x4e, 0xa5, 0x9d, 0x3c, 0x64, 0x0c, 0xc3, 0x76, 0xe0, 0x7a,
+ 0xc1, 0x1c, 0x3d, 0x8d, 0x0c, 0x51, 0xe9, 0x3d, 0xab, 0x17, 0xe7, 0x45,
+ 0x72, 0x48, 0x8c, 0x1a, 0x2c, 0xcb, 0xe6, 0x97, 0x0c, 0x5e, 0xe5, 0xf4,
+ 0xe2, 0xdd, 0xf9, 0x04, 0x01, 0x6a, 0xda, 0xf2, 0xda, 0x44, 0xc4, 0x6a,
+ 0x8b, 0x5b, 0x88, 0xc5, 0xd7, 0x2c, 0x02, 0xa1, 0x5f, 0xf7, 0xa4, 0xa8,
+ 0xdd, 0xff, 0x5d, 0x14, 0xb5, 0xfb, 0xbf, 0x94, 0xa2, 0x76, 0x3f, 0x19,
+ 0x45, 0xed, 0x3e, 0x8c, 0xa2, 0xac, 0x5a, 0x8c, 0x53, 0xbf, 0x07, 0x7d,
+ 0xed, 0x3d, 0x8c, 0xbe, 0xf6, 0xfe, 0x77, 0xd1, 0xd7, 0xde, 0xff, 0x52,
+ 0xfa, 0xda, 0xfb, 0x64, 0xf4, 0xb5, 0xf7, 0x6f, 0xa2, 0xaf, 0xfd, 0x87,
+ 0xd1, 0xd7, 0xfe, 0x27, 0xa0, 0xaf, 0x71, 0x28, 0x9d, 0x72, 0x95, 0xb5,
+ 0xd2, 0xc4, 0x69, 0x7d, 0x7c, 0x53, 0xe5, 0x6b, 0x93, 0xa3, 0xa2, 0xc6,
+ 0x02, 0x05, 0x08, 0x73, 0x13, 0x66, 0xd0, 0x89, 0x83, 0xdf, 0x8b, 0xe9,
+ 0xa1, 0xec, 0xad, 0x24, 0x9a, 0xfd, 0x4f, 0x46, 0x34, 0xfb, 0x0f, 0x22,
+ 0x9a, 0xbd, 0x25, 0x44, 0xd3, 0xa8, 0xea, 0x6d, 0x2d, 0x7c, 0xe1, 0xe0,
+ 0x79, 0x0f, 0x7b, 0x3c, 0xc1, 0x5c, 0x27, 0x14, 0x1b, 0xeb, 0xe4, 0x73,
+ 0x2b, 0x54, 0xa3, 0xb6, 0xb1, 0xa0, 0x7e, 0xcb, 0xba, 0x6c, 0x12, 0x29,
+ 0xed, 0xb0, 0xb1, 0xc0, 0xc2, 0x14, 0x40, 0xdb, 0x5c, 0x96, 0xd5, 0x17,
+ 0xd6, 0x9a, 0x41, 0xaf, 0xd9, 0x25, 0x16, 0x7c, 0x5f, 0xb5, 0x33, 0x9f,
+ 0x6a, 0x5f, 0x3e, 0x4a, 0x6e, 0x86, 0x13, 0x7a, 0xfe, 0x1f, 0x92, 0x9b,
+ 0x61, 0x6e, 0xc2, 0x5a, 0xb8, 0x7b, 0xc3, 0xf0, 0xeb, 0x32, 0x9c, 0x22,
+ 0x4e, 0x81, 0xa3, 0xe3, 0x8a, 0x87, 0x5c, 0xb9, 0xae, 0x17, 0x17, 0xbd,
+ 0x36, 0xe8, 0xdb, 0x43, 0xeb, 0xbf, 0x9c, 0xcf, 0xf8, 0x44, 0xde, 0xb5,
+ 0x61, 0xa4, 0x7c, 0x92, 0xfd, 0x3a, 0xb6, 0xb9, 0x72, 0x12, 0x53, 0xb8,
+ 0x55, 0x2b, 0xa0, 0x09, 0xac, 0x43, 0x57, 0x40, 0x17, 0xb4, 0x1b, 0x5b,
+ 0xd1, 0x8a, 0x6a, 0x5d, 0x7b, 0xf5, 0x4e, 0x87, 0x29, 0xd7, 0x20, 0xce,
+ 0x96, 0xc7, 0x1e, 0x3b, 0x13, 0xfc, 0x14, 0xa1, 0x5b, 0xb6, 0xf5, 0xb5,
+ 0xa9, 0xd0, 0x19, 0xd8, 0x9a, 0x66, 0x3f, 0xb3, 0x11, 0xf5, 0x9d, 0x4c,
+ 0x86, 0x69, 0x9c, 0x94, 0xc3, 0x2c, 0x0b, 0x3b, 0x84, 0x35, 0x68, 0x3d,
+ 0xa1, 0x84, 0xc3, 0x88, 0x9e, 0x8f, 0x30, 0x8e, 0x13, 0xf7, 0x06, 0x39,
+ 0x26, 0x5e, 0xed, 0x54, 0x4f, 0x18, 0x37, 0x02, 0x18, 0xfb, 0x65, 0xae,
+ 0x71, 0x38, 0x58, 0xf3, 0xd4, 0x4b, 0x3d, 0x05, 0xf6, 0x4d, 0xdf, 0xa7,
+ 0xe5, 0xb0, 0xc8, 0xe6, 0x84, 0x2f, 0x92, 0xcd, 0x30, 0x87, 0x4f, 0x10,
+ 0x4d, 0x24, 0x22, 0x8c, 0xfd, 0xb5, 0x12, 0x7b, 0x1c, 0x31, 0x5c, 0x00,
+ 0x0a, 0x03, 0x8d, 0xe6, 0x3a, 0x71, 0x07, 0x9d, 0xe3, 0xf8, 0x3d, 0xe9,
+ 0xf7, 0xf0, 0x36, 0x48, 0x1d, 0xa9, 0x13, 0x02, 0x1c, 0x69, 0x55, 0xdc,
+ 0x65, 0xe9, 0x10, 0x08, 0x8d, 0x96, 0x4d, 0xb3, 0x49, 0x52, 0xc8, 0x71,
+ 0xe0, 0x48, 0x5f, 0x34, 0x0e, 0x02, 0xcf, 0xc3, 0xb8, 0x94, 0x5c, 0x8a,
+ 0xa5, 0x5d, 0xa5, 0xb7, 0x8c, 0xbb, 0x4f, 0xb3, 0x9d, 0xf9, 0x19, 0x98,
+ 0x57, 0x8a, 0x4a, 0x7f, 0xd4, 0x3f, 0x7e, 0xf9, 0xb2, 0x86, 0xd1, 0x8f,
+ 0xab, 0x46, 0x11, 0xc9, 0x5c, 0xc9, 0xaf, 0x9c, 0xc2, 0xf2, 0xa1, 0xc9,
+ 0x52, 0x67, 0x19, 0x88, 0x3d, 0x98, 0x02, 0xbb, 0xa3, 0x78, 0x29, 0xe0,
+ 0xbc, 0x19, 0x57, 0xc5, 0x2e, 0xd0, 0x55, 0x40, 0x66, 0x8c, 0x19, 0x0c,
+ 0x33, 0xc3, 0xda, 0xdd, 0x57, 0x8b, 0x69, 0x32, 0x2b, 0xff, 0x43, 0x32,
+ 0x3d, 0x5c, 0x8a, 0xfa, 0x8c, 0x36, 0x27, 0x67, 0x14, 0x93, 0xfc, 0x72,
+ 0x9d, 0x8c, 0x8f, 0xd6, 0x94, 0x0f, 0x6e, 0x34, 0xc0, 0x63, 0x0d, 0x4f,
+ 0x0d, 0x50, 0xbb, 0xc3, 0x63, 0xe9, 0xe8, 0xf8, 0x21, 0xff, 0xde, 0x69,
+ 0x0c, 0xc0, 0xb2, 0x9d, 0x17, 0x24, 0x33, 0x97, 0x52, 0xaf, 0x1c, 0x83,
+ 0xcf, 0xa7, 0xe4, 0xac, 0xc4, 0x7d, 0x92, 0x43, 0x09, 0xbb, 0xa6, 0xc3,
+ 0xa5, 0x70, 0x41, 0xbd, 0x52, 0x02, 0x19, 0xdb, 0x12, 0xe4, 0xf8, 0x1f,
+ 0x56, 0x18, 0xd2, 0xce, 0xfe, 0xa3, 0x17, 0x86, 0xb4, 0x4d, 0x3f, 0x8c,
+ 0x90, 0x04, 0x17, 0xd4, 0xa5, 0x2a, 0x39, 0xb5, 0x6b, 0x8a, 0x69, 0xf7,
+ 0xa4, 0x81, 0xff, 0xad, 0xbc, 0x98, 0x22, 0x95, 0x0c, 0x37, 0xbe, 0x07,
+ 0x3b, 0x26, 0x05, 0xaf, 0xf3, 0x7b, 0xe4, 0xe2, 0x9e, 0xa5, 0xf5, 0x5e,
+ 0x3c, 0x3d, 0x2d, 0x8a, 0xff, 0x24, 0xc6, 0xf7, 0xd9, 0x2a, 0xa6, 0x73,
+ 0xef, 0x6b, 0xb2, 0x3a, 0x97, 0x2a, 0x85, 0xac, 0x1d, 0x4e, 0xc7, 0xe7,
+ 0xa5, 0x8d, 0xdd, 0x79, 0xa1, 0xf3, 0x2e, 0xb3, 0x6b, 0x63, 0x9e, 0xdc,
+ 0x89, 0x4b, 0xee, 0x08, 0xa4, 0x1c, 0x4b, 0x89, 0xc7, 0x43, 0x44, 0x3f,
+ 0xfe, 0x26, 0x2c, 0x51, 0x1e, 0xb3, 0x2a, 0x19, 0x29, 0x16, 0x2e, 0x69,
+ 0x8e, 0x6f, 0x03, 0x38, 0xf1, 0x9a, 0x09, 0x09, 0x3b, 0x46, 0x52, 0x65,
+ 0x20, 0x99, 0x72, 0x96, 0x56, 0x68, 0x4f, 0x0f, 0x6f, 0xa3, 0x3b, 0xa0,
+ 0xcf, 0x77, 0x7f, 0xb9, 0xa3, 0xe0, 0x1f, 0x31, 0x2e, 0xce, 0x9a, 0x1b,
+ 0x9b, 0x0c, 0x4a, 0x5c, 0xf6, 0xca, 0x6d, 0xae, 0x1e, 0xac, 0x59, 0x47,
+ 0x1b, 0xb9, 0xa0, 0x62, 0xf2, 0xf3, 0x49, 0x9e, 0x8c, 0x62, 0x0a, 0xd3,
+ 0x0a, 0xb2, 0x21, 0x0e, 0x11, 0xb0, 0x38, 0x9d, 0xcd, 0xfa, 0x03, 0x84,
+ 0x66, 0x2d, 0xe1, 0x9b, 0xb9, 0x00, 0xc4, 0x90, 0xda, 0xf7, 0xf6, 0xcd,
+ 0x69, 0x2f, 0x98, 0xde, 0x5a, 0x88, 0xdb, 0x95, 0x5f, 0x22, 0x99, 0x29,
+ 0x6b, 0x86, 0xda, 0xc1, 0xcb, 0x5d, 0x27, 0x0a, 0x3c, 0x99, 0xe3, 0x85,
+ 0x18, 0xd0, 0x97, 0x9c, 0xde, 0xb9, 0x1e, 0xf3, 0xeb, 0xb3, 0x8b, 0x13,
+ 0xbe, 0x0a, 0xd1, 0x76, 0x44, 0x31, 0x19, 0x0c, 0xbb, 0x87, 0xe2, 0xd3,
+ 0x04, 0x19, 0xe0, 0xb6, 0x26, 0xb1, 0x04, 0xea, 0x96, 0x70, 0x26, 0x6f,
+ 0xce, 0x31, 0xe7, 0x58, 0x7d, 0x65, 0x42, 0xb0, 0x8e, 0x4c, 0xe7, 0x54,
+ 0x5f, 0x57, 0xf3, 0x9a, 0xeb, 0x93, 0x60, 0x06, 0xe8, 0xe9, 0xaf, 0x4e,
+ 0x18, 0xfb, 0x55, 0x36, 0x7b, 0x6f, 0xc6, 0x55, 0x30, 0x31, 0xd9, 0xde,
+ 0x34, 0xd7, 0xd7, 0x59, 0xbe, 0xb1, 0xaf, 0xd0, 0x28, 0x83, 0x5c, 0x94,
+ 0xa9, 0xe8, 0xd1, 0xd4, 0xf6, 0x14, 0xc1, 0xc7, 0x27, 0xd9, 0xfb, 0x74,
+ 0x72, 0x27, 0x50, 0x95, 0xe4, 0x81, 0xa6, 0x8d, 0x8d, 0x30, 0x20, 0x5a,
+ 0xeb, 0x74, 0x34, 0x79, 0x2e, 0x2c, 0x48, 0x0d, 0x2c, 0x55, 0x02, 0x3e,
+ 0x14, 0xfd, 0x7a, 0xb3, 0xbf, 0x25, 0x5a, 0x3b, 0x1f, 0x80, 0xf3, 0xb7,
+ 0x17, 0x26, 0x43, 0x61, 0x99, 0x0f, 0xa9, 0x05, 0x0a, 0xde, 0x2e, 0x14,
+ 0xde, 0x1d, 0x9b, 0x09, 0xe2, 0x9d, 0x5c, 0x4e, 0x52, 0x0a, 0xfe, 0xdc,
+ 0x52, 0xbb, 0x03, 0xf0, 0x78, 0xa0, 0x05, 0xe7, 0x54, 0x7b, 0xe1, 0x9a,
+ 0x7c, 0x3f, 0xe9, 0xc5, 0x14, 0x1d, 0x4d, 0x28, 0x8e, 0xb6, 0x4a, 0x31,
+ 0xe0, 0xa0, 0xd9, 0x4f, 0xcf, 0xed, 0x87, 0xa1, 0x72, 0xb7, 0x9a, 0x32,
+ 0x77, 0x72, 0x57, 0xbf, 0x16, 0x9c, 0xbe, 0x71, 0x9c, 0x5a, 0xe7, 0x45,
+ 0x46, 0x86, 0x94, 0x4a, 0xe0, 0x34, 0x94, 0xbf, 0xe0, 0x33, 0x1c, 0xaa,
+ 0x32, 0xc5, 0x20, 0x36, 0x68, 0x3b, 0x8d, 0x48, 0x80, 0x27, 0x6d, 0x5e,
+ 0xd0, 0x52, 0xe4, 0x4e, 0x23, 0x7d, 0x55, 0x67, 0x8b, 0xf1, 0xc9, 0xf8,
+ 0xcc, 0xc2, 0x0b, 0x8e, 0xc0, 0x2d, 0x0c, 0x2c, 0xe9, 0xdf, 0x1b, 0xe8,
+ 0xeb, 0x68, 0x69, 0xab, 0x1f, 0x65, 0xbd, 0xdc, 0xf0, 0x20, 0x69, 0x1c,
+ 0x11, 0x99, 0xe8, 0x68, 0xfb, 0x9a, 0xbd, 0x80, 0xfc, 0xd8, 0x8b, 0x4e,
+ 0xf0, 0x71, 0x9f, 0x29, 0xfc, 0x91, 0x9a, 0x98, 0x27, 0x59, 0x61, 0x16,
+ 0x09, 0xc3, 0xab, 0x12, 0x0e, 0x01, 0xa2, 0x07, 0x03, 0x59, 0xf4, 0xf0,
+ 0x1d, 0x55, 0x26, 0xea, 0xf1, 0x19, 0x20, 0x0e, 0x65, 0xc0, 0x19, 0x3b,
+ 0x78, 0x47, 0x0f, 0x60, 0xc6, 0x1d, 0x55, 0x96, 0x6a, 0x5d, 0x7a, 0x90,
+ 0xf5, 0x97, 0x64, 0x92, 0xee, 0x92, 0xd5, 0x88, 0x83, 0x7c, 0xe4, 0x78,
+ 0xe3, 0x1a, 0x08, 0x9d, 0x1b, 0x19, 0x12, 0x5b, 0x50, 0x70, 0x22, 0xda,
+ 0x78, 0x3f, 0x78, 0xaa, 0x1e, 0x2e, 0x44, 0x50, 0xf0, 0xf8, 0xa9, 0x8e,
+ 0x8a, 0x53, 0xb2, 0x1d, 0x6b, 0xa1, 0x70, 0x27, 0x64, 0x68, 0x5f, 0x04,
+ 0xcb, 0xb8, 0xd3, 0x10, 0xd4, 0x64, 0x3a, 0x63, 0xc4, 0x26, 0xde, 0xef,
+ 0x03, 0xe7, 0x2c, 0x72, 0x04, 0x71, 0xb2, 0xac, 0x84, 0x0a, 0xcb, 0x28,
+ 0x18, 0xf1, 0xf2, 0x78, 0x7f, 0x6f, 0x2f, 0x62, 0xe9, 0x8c, 0x71, 0x9c,
+ 0x39, 0x90, 0x1d, 0xcb, 0xf2, 0xa4, 0x09, 0x21, 0xd3, 0xf0, 0xdd, 0x36,
+ 0xc4, 0x42, 0xd7, 0x1c, 0x1f, 0x05, 0x8b, 0xd9, 0x92, 0x34, 0x8e, 0x3b,
+ 0x02, 0xd7, 0x26, 0xdc, 0x4f, 0xf9, 0xe8, 0xce, 0xb6, 0x0a, 0xe4, 0x50,
+ 0x20, 0x07, 0x02, 0xbe, 0x21, 0x08, 0x42, 0x91, 0x84, 0xd5, 0x94, 0x41,
+ 0x45, 0x42, 0x91, 0x98, 0xf9, 0x36, 0x18, 0x52, 0x41, 0x35, 0xa4, 0xb3,
+ 0x19, 0xfd, 0x8a, 0xf5, 0xe7, 0x17, 0x05, 0xb2, 0x46, 0x4a, 0x66, 0x9a,
+ 0xdd, 0x45, 0x37, 0x81, 0x64, 0xb5, 0x3a, 0x71, 0x7d, 0x78, 0x3e, 0x54,
+ 0x5b, 0x18, 0xf4, 0x45, 0x7b, 0xe4, 0x71, 0xcb, 0xf3, 0x9d, 0x6c, 0x7a,
+ 0xf9, 0xd3, 0x6e, 0xbc, 0xbb, 0xb3, 0xb3, 0xf3, 0x4b, 0x6f, 0x8e, 0xc4,
+ 0xc9, 0x29, 0x12, 0xf0, 0x6f, 0xaf, 0x96, 0x47, 0xd5, 0x72, 0x87, 0x3b,
+ 0xd3, 0xea, 0xfc, 0x13, 0x7f, 0xec, 0x76, 0xf1, 0xdf, 0xbd, 0x7f, 0x75,
+ 0xd6, 0xbb, 0xc7, 0xbf, 0xc7, 0x13, 0x88, 0x51, 0xfd, 0x24, 0x49, 0x99,
+ 0xf4, 0xf1, 0x9a, 0x18, 0x05, 0x3d, 0x1e, 0xc2, 0x3f, 0x5e, 0xf8, 0x83,
+ 0x16, 0xd8, 0x49, 0x98, 0xce, 0xb9, 0x1a, 0x63, 0x5a, 0x0d, 0xaf, 0x7c,
+ 0xc1, 0x0e, 0x2e, 0x0d, 0xd8, 0x77, 0xc4, 0xa0, 0x92, 0xf8, 0x3e, 0x38,
+ 0x50, 0xcd, 0xfd, 0x56, 0xcf, 0x8b, 0x34, 0x0b, 0x4d, 0x6e, 0x96, 0x5b,
+ 0xba, 0x35, 0x98, 0x2e, 0xc6, 0x6c, 0xb8, 0x25, 0x78, 0x99, 0x39, 0x35,
+ 0x8e, 0x03, 0xfb, 0x63, 0xbc, 0x39, 0x3c, 0x95, 0xc3, 0xab, 0x74, 0x2a,
+ 0x1c, 0x7a, 0x53, 0x93, 0xaf, 0x3b, 0xb8, 0x44, 0xb0, 0x42, 0x9d, 0xc0,
+ 0x2d, 0xda, 0x19, 0xeb, 0x57, 0x30, 0x93, 0x2d, 0x29, 0x9e, 0x60, 0x6e,
+ 0x56, 0xca, 0x17, 0x48, 0xa2, 0xcb, 0x05, 0xda, 0x03, 0x07, 0x89, 0x5c,
+ 0x61, 0x5a, 0x52, 0x24, 0x2c, 0x81, 0x20, 0x17, 0x4e, 0x0b, 0xba, 0x37,
+ 0xcb, 0xc5, 0x20, 0x16, 0x99, 0x92, 0x46, 0x44, 0x19, 0x1a, 0x68, 0xf7,
+ 0x7b, 0xf6, 0xf2, 0xf8, 0x82, 0xeb, 0x22, 0xc0, 0xbf, 0x88, 0xc6, 0x06,
+ 0x3f, 0x10, 0x5c, 0xab, 0x09, 0x7a, 0x4e, 0x18, 0x6d, 0x94, 0x7d, 0x44,
+ 0xc7, 0x5e, 0xca, 0xce, 0x10, 0x8b, 0x32, 0xe9, 0xea, 0xae, 0x6c, 0xd8,
+ 0x8d, 0x72, 0x3c, 0x23, 0x37, 0x59, 0x99, 0x86, 0x70, 0x1e, 0x6a, 0x62,
+ 0xa4, 0xa9, 0x7c, 0xf1, 0xe8, 0x71, 0x6f, 0x87, 0xa7, 0x88, 0x6b, 0x28,
+ 0xa7, 0x46, 0x10, 0x4f, 0xc9, 0x9b, 0xa1, 0xe1, 0x91, 0x49, 0x38, 0x6c,
+ 0xdb, 0x0c, 0xa5, 0x1b, 0x21, 0xf6, 0x0c, 0xa5, 0x5d, 0x57, 0x79, 0xac,
+ 0xdf, 0x3a, 0x69, 0xb8, 0xc1, 0xc2, 0x4d, 0x8a, 0x8d, 0x26, 0xd5, 0xe6,
+ 0x44, 0x1c, 0xe7, 0x8d, 0x15, 0x0c, 0x12, 0x2e, 0xd9, 0xc4, 0xbc, 0x5c,
+ 0xee, 0x38, 0x46, 0x79, 0xf3, 0xce, 0xbf, 0xc4, 0xf1, 0xd3, 0x6a, 0xb7,
+ 0x25, 0x33, 0x19, 0x50, 0xd6, 0xb3, 0x99, 0x02, 0x12, 0x77, 0x49, 0x52,
+ 0xcc, 0x86, 0x0b, 0xb4, 0xdb, 0x21, 0xd9, 0x61, 0xe5, 0x10, 0x0a, 0xc7,
+ 0x2f, 0x4b, 0xdc, 0x2f, 0x5c, 0x14, 0xc2, 0x1b, 0x80, 0xc1, 0x36, 0xaf,
+ 0x51, 0x84, 0x96, 0x63, 0x0d, 0x50, 0x94, 0x01, 0xfb, 0x9e, 0x30, 0x3e,
+ 0x11, 0x93, 0x90, 0xf9, 0xdf, 0xc1, 0xfd, 0x3f, 0xed, 0x45, 0xdf, 0xa5,
+ 0x37, 0x49, 0x91, 0xfe, 0x57, 0x80, 0x7f, 0x01, 0xe5, 0x7d, 0xb2, 0x3c,
+ 0x4e, 0x6a, 0x7d, 0x2d, 0x76, 0x61, 0xf4, 0x54, 0xe6, 0x17, 0xb5, 0x5c,
+ 0x4e, 0xc3, 0x31, 0xbe, 0xa3, 0x5b, 0xbd, 0x14, 0x8d, 0x2c, 0x04, 0xb3,
+ 0x2a, 0x08, 0x83, 0x92, 0x3d, 0xcf, 0xe6, 0x4c, 0x15, 0xfa, 0x7b, 0xe8,
+ 0x57, 0xe4, 0x93, 0x40, 0x3b, 0x8f, 0xb3, 0xd7, 0x20, 0xb6, 0xd4, 0x5b,
+ 0x6c, 0x2a, 0x1b, 0xe7, 0xa0, 0x93, 0x27, 0x44, 0x29, 0x6c, 0x9d, 0x22,
+ 0xab, 0x96, 0x38, 0x88, 0x3a, 0x7f, 0xc2, 0x58, 0xaa, 0xaf, 0x8f, 0x3a,
+ 0xbd, 0x7a, 0x1c, 0xb2, 0x07, 0xd9, 0xb6, 0xc0, 0x7d, 0xa2, 0x9b, 0xb3,
+ 0x6e, 0x4e, 0x90, 0xdb, 0x12, 0x6f, 0x67, 0x9c, 0x3e, 0x89, 0x5e, 0x48,
+ 0xc9, 0x37, 0xd9, 0x6c, 0x7f, 0x4f, 0xf6, 0x71, 0x89, 0x5b, 0xcf, 0x5d,
+ 0x91, 0x8f, 0x6e, 0x82, 0x32, 0x2d, 0xaf, 0xa9, 0x0a, 0x7e, 0xe7, 0xc3,
+ 0x8f, 0x6e, 0xbf, 0x39, 0x39, 0x7a, 0xf6, 0xea, 0x64, 0x05, 0xd8, 0xa4,
+ 0xe8, 0xdd, 0xb8, 0x4c, 0x9e, 0xda, 0x7d, 0x24, 0xbb, 0x5f, 0xc4, 0xc9,
+ 0x25, 0xae, 0x60, 0x30, 0x74, 0x4e, 0x34, 0x6f, 0xbd, 0x42, 0x48, 0xe0,
+ 0xc1, 0x57, 0x8e, 0xe8, 0x15, 0x8e, 0xa4, 0x34, 0x39, 0x9f, 0x6e, 0x51,
+ 0x1a, 0x75, 0x0b, 0xfb, 0x6c, 0x43, 0x04, 0x83, 0xc1, 0x24, 0x99, 0xbd,
+ 0x37, 0x58, 0x1d, 0xdc, 0x52, 0x17, 0xf1, 0x25, 0xb9, 0x06, 0x80, 0xfd,
+ 0x50, 0xf2, 0x40, 0x43, 0x52, 0xdb, 0x3f, 0x16, 0xa8, 0x13, 0x4d, 0x93,
+ 0xe2, 0xbd, 0xa2, 0x8f, 0x08, 0x88, 0x88, 0x4b, 0x8b, 0xa6, 0x34, 0x05,
+ 0xcb, 0x32, 0xb1, 0x02, 0x8d, 0x04, 0xd2, 0x6e, 0xae, 0x4c, 0xe1, 0x1f,
+ 0x83, 0x46, 0xd2, 0xc2, 0x8a, 0xd0, 0xbd, 0x8d, 0xb2, 0x26, 0xde, 0x66,
+ 0x94, 0xf7, 0x3d, 0x9d, 0x57, 0x77, 0x46, 0x28, 0x25, 0xfb, 0x47, 0x73,
+ 0x7d, 0x37, 0x3b, 0x9d, 0x2d, 0x4a, 0xe9, 0x0b, 0x68, 0x49, 0x8c, 0x31,
+ 0x28, 0xde, 0x05, 0x9e, 0x41, 0x8e, 0x3b, 0x8d, 0x0a, 0x0c, 0x67, 0xea,
+ 0xb1, 0x0e, 0x48, 0x1e, 0x35, 0x13, 0x39, 0x4f, 0x95, 0x91, 0x48, 0x32,
+ 0x6b, 0x2a, 0x5d, 0xb8, 0xb6, 0x91, 0x82, 0x6c, 0x98, 0xaa, 0x4c, 0x29,
+ 0x21, 0x16, 0x38, 0x42, 0x30, 0xdc, 0xe1, 0x68, 0x31, 0xda, 0xec, 0x44,
+ 0x9d, 0xad, 0x96, 0x60, 0x42, 0x67, 0x02, 0xf5, 0xac, 0x97, 0x7f, 0x63,
+ 0x04, 0xfc, 0x51, 0xd4, 0x61, 0x7a, 0xdb, 0xd9, 0x79, 0xba, 0xa6, 0xd8,
+ 0xf4, 0xa2, 0x6b, 0x37, 0x9c, 0xcf, 0x82, 0xbb, 0xbd, 0xce, 0x69, 0x58,
+ 0xe8, 0x6e, 0x81, 0x08, 0x05, 0xff, 0x1e, 0x68, 0xd4, 0x61, 0x9b, 0x30,
+ 0x55, 0x49, 0xc1, 0xec, 0xc8, 0xd4, 0x07, 0x32, 0x41, 0x8f, 0xa2, 0xb4,
+ 0x22, 0xd3, 0x11, 0xf5, 0xce, 0x06, 0x97, 0x86, 0xe2, 0xdc, 0x7b, 0xd1,
+ 0x99, 0x29, 0xe0, 0x85, 0x4c, 0xbb, 0x2a, 0x86, 0x32, 0x56, 0xfa, 0x5d,
+ 0x92, 0x73, 0x93, 0x49, 0x2b, 0x11, 0xa2, 0xe3, 0x6a, 0x8e, 0xb9, 0x19,
+ 0xa6, 0x94, 0xa2, 0x95, 0xda, 0x71, 0x78, 0xae, 0xcd, 0x04, 0xa6, 0x0f,
+ 0xa4, 0xca, 0x85, 0x04, 0x3c, 0xec, 0x8d, 0x66, 0xa0, 0xa5, 0x31, 0xf6,
+ 0xb4, 0xcd, 0xb5, 0x94, 0x50, 0xfa, 0x09, 0xd0, 0xd5, 0x62, 0xee, 0xa8,
+ 0x94, 0x5c, 0xf1, 0x0a, 0xa8, 0x78, 0x92, 0xcf, 0xba, 0x5e, 0x71, 0x5a,
+ 0x0c, 0x5e, 0x17, 0x0f, 0x18, 0xe5, 0xb8, 0x4e, 0xe7, 0x39, 0xc8, 0x30,
+ 0x83, 0x49, 0x6a, 0x02, 0x0d, 0xf8, 0x4d, 0xe5, 0x0e, 0xb6, 0x73, 0x3c,
+ 0xc8, 0xde, 0xa9, 0xb5, 0xd8, 0x20, 0x34, 0x54, 0xb3, 0x11, 0x40, 0xf4,
+ 0x5d, 0x06, 0xf6, 0xf4, 0xa6, 0x04, 0x12, 0x84, 0x5c, 0x05, 0x22, 0xbd,
+ 0x64, 0x1c, 0x5f, 0x5b, 0xba, 0x6b, 0x75, 0x05, 0x5b, 0xe2, 0x5a, 0xbf,
+ 0xa5, 0xe0, 0x30, 0x1c, 0xf2, 0xe6, 0x36, 0xd2, 0xa1, 0xe7, 0x83, 0x8a,
+ 0x2b, 0x8c, 0x52, 0x04, 0x25, 0x04, 0x61, 0xfa, 0xaf, 0x45, 0x38, 0x40,
+ 0x25, 0x29, 0x9d, 0xb1, 0xe9, 0x32, 0xd7, 0xca, 0xd9, 0xd1, 0xb0, 0xf0,
+ 0x12, 0x7a, 0x47, 0x48, 0x2c, 0x40, 0xc0, 0xdc, 0xa2, 0x2c, 0xce, 0x1d,
+ 0x26, 0xf5, 0xb2, 0x30, 0x82, 0x79, 0xcb, 0x70, 0x93, 0x92, 0xc8, 0x48,
+ 0x8b, 0x53, 0xda, 0x95, 0x2f, 0x7d, 0x7c, 0x53, 0x9e, 0xa9, 0xad, 0x51,
+ 0x29, 0x87, 0x51, 0x30, 0x4f, 0x49, 0x3c, 0xba, 0xce, 0x78, 0xfd, 0x39,
+ 0xcd, 0x22, 0x81, 0x6b, 0x93, 0xa6, 0xc4, 0x29, 0xd1, 0x9e, 0xcf, 0x20,
+ 0x4d, 0x18, 0xe4, 0x10, 0xc5, 0x74, 0x44, 0xc4, 0xcf, 0xc8, 0x6f, 0xc0,
+ 0x97, 0xf1, 0x95, 0x56, 0x47, 0x28, 0x52, 0xcc, 0x46, 0x46, 0xe4, 0x54,
+ 0x9a, 0x45, 0xa2, 0x18, 0x77, 0x5e, 0x70, 0x16, 0x1b, 0x56, 0x0a, 0xe3,
+ 0x7e, 0x45, 0x02, 0x9b, 0x21, 0x77, 0x61, 0x49, 0x0a, 0x61, 0x17, 0xb1,
+ 0x47, 0xbe, 0xcf, 0x3d, 0x49, 0xaa, 0x17, 0x84, 0xbe, 0x62, 0x21, 0x23,
+ 0xfa, 0x4b, 0x5a, 0x0c, 0xd2, 0x22, 0x87, 0x79, 0xff, 0xed, 0xb1, 0xa6,
+ 0x15, 0x6b, 0x29, 0x0b, 0xd6, 0x0a, 0xe4, 0x84, 0xe2, 0x31, 0xe2, 0xa1,
+ 0x7b, 0xb1, 0x2b, 0x8c, 0x4d, 0x84, 0x6b, 0xab, 0x6f, 0xba, 0x9a, 0x41,
+ 0x93, 0x42, 0xbb, 0x64, 0x0b, 0x02, 0xea, 0x43, 0xbe, 0x3c, 0x0e, 0x5e,
+ 0x31, 0x06, 0x98, 0x98, 0x02, 0x37, 0x48, 0xe4, 0x24, 0x20, 0xdf, 0x28,
+ 0x1f, 0x54, 0x09, 0xcd, 0xcf, 0x0c, 0xfb, 0x22, 0x63, 0x73, 0xed, 0x4b,
+ 0xc5, 0x9e, 0xf1, 0x01, 0x0f, 0x4c, 0x96, 0x0a, 0x8e, 0x25, 0x43, 0xb2,
+ 0x69, 0xc6, 0xb2, 0xa3, 0x36, 0x57, 0x5e, 0xa1, 0x42, 0x84, 0x66, 0x2d,
+ 0xb2, 0xef, 0x85, 0x0d, 0x16, 0xb4, 0x66, 0xaf, 0x2f, 0x4e, 0x5f, 0x75,
+ 0x1b, 0xa7, 0x4e, 0x04, 0x5b, 0xa7, 0xbc, 0xac, 0x72, 0x1c, 0x21, 0x29,
+ 0xdf, 0x79, 0x51, 0x44, 0xb2, 0x1c, 0x26, 0xd8, 0x8b, 0xdc, 0xdf, 0xb4,
+ 0x72, 0x5d, 0xc9, 0x87, 0x29, 0x04, 0xc9, 0x50, 0x4d, 0x7e, 0xbc, 0xac,
+ 0xbe, 0x25, 0x0a, 0x69, 0xb0, 0xa4, 0xad, 0x27, 0x2b, 0x29, 0xdc, 0x30,
+ 0xc0, 0x6b, 0xa4, 0x8a, 0x02, 0x5d, 0x01, 0x4b, 0xea, 0x35, 0xda, 0x5e,
+ 0x79, 0x2a, 0xc8, 0x5d, 0xd2, 0x8c, 0x0e, 0xce, 0xb3, 0xfc, 0x66, 0x16,
+ 0x9f, 0x22, 0x76, 0x73, 0x74, 0x9a, 0x5f, 0xe2, 0x01, 0x7a, 0x1d, 0x36,
+ 0xd8, 0xbe, 0x3d, 0x7f, 0x1d, 0x6d, 0xa2, 0xd8, 0x83, 0xf5, 0x4d, 0xa4,
+ 0x5e, 0x36, 0x3e, 0xba, 0x25, 0x46, 0x93, 0x92, 0x45, 0x61, 0x19, 0x4d,
+ 0x37, 0x3a, 0xf9, 0xf1, 0xe8, 0xd5, 0xf9, 0xe9, 0xc9, 0xcf, 0x9c, 0xd7,
+ 0xe1, 0x4d, 0x07, 0x3f, 0xfe, 0xd6, 0xb9, 0xbd, 0x28, 0x04, 0x06, 0x43,
+ 0xe4, 0x60, 0x24, 0xc1, 0xc2, 0xa2, 0xb8, 0xf5, 0xcc, 0x15, 0x6d, 0x19,
+ 0x96, 0xf3, 0x97, 0xb1, 0x56, 0x7f, 0x26, 0x86, 0x35, 0xc8, 0x66, 0x68,
+ 0xf0, 0x21, 0x10, 0x55, 0x2c, 0xcb, 0x08, 0x03, 0x23, 0xf2, 0xf7, 0x2a,
+ 0xb5, 0xe8, 0x71, 0xe8, 0x46, 0xaf, 0x35, 0x95, 0xb1, 0x4b, 0x9b, 0x8e,
+ 0x47, 0xf0, 0x59, 0x76, 0x49, 0x21, 0x3b, 0x8d, 0x14, 0x2e, 0x31, 0x04,
+ 0x20, 0x1d, 0x34, 0xe9, 0x19, 0xab, 0xdc, 0x68, 0x88, 0x58, 0x99, 0x4e,
+ 0xd8, 0x3d, 0xd3, 0x7a, 0x35, 0x32, 0x87, 0xa4, 0x5d, 0x24, 0xa8, 0x9c,
+ 0xe6, 0xe8, 0x14, 0x3a, 0x07, 0x75, 0x57, 0xde, 0x40, 0xb1, 0x0e, 0x30,
+ 0x85, 0xf0, 0xa5, 0x20, 0x79, 0x1b, 0x86, 0xeb, 0x1f, 0x44, 0x9d, 0x78,
+ 0x11, 0x1d, 0x74, 0x96, 0x48, 0x30, 0x9f, 0xcb, 0x25, 0x47, 0xfb, 0x56,
+ 0x1c, 0x94, 0x29, 0x30, 0xf9, 0x35, 0x3d, 0x72, 0xb3, 0x6e, 0x5d, 0x18,
+ 0x08, 0xab, 0x70, 0xae, 0x93, 0xad, 0xd1, 0xd4, 0x2b, 0xba, 0x5f, 0x69,
+ 0x1c, 0xea, 0x85, 0x1b, 0x2d, 0x0a, 0xb5, 0x6f, 0x1a, 0x0f, 0x00, 0xfb,
+ 0x71, 0x81, 0x01, 0x09, 0xef, 0x27, 0x5c, 0xbc, 0x4b, 0xdf, 0x86, 0x4d,
+ 0x94, 0x05, 0x37, 0x0f, 0x07, 0xf3, 0x81, 0xde, 0xb6, 0x01, 0x64, 0xc4,
+ 0xce, 0x65, 0xbc, 0x7c, 0x3a, 0x14, 0xa3, 0x26, 0x16, 0x96, 0x7c, 0x04,
+ 0xea, 0xdb, 0x11, 0x47, 0x20, 0x10, 0xb8, 0x98, 0xdf, 0x1c, 0x6d, 0xe2,
+ 0xc6, 0x37, 0x1b, 0x12, 0xf4, 0xd7, 0x11, 0x19, 0x0d, 0xef, 0x90, 0x0e,
+ 0x6b, 0x74, 0x98, 0x35, 0x8f, 0xa3, 0x07, 0x16, 0xb2, 0x71, 0xb8, 0x11,
+ 0xc9, 0x83, 0xfa, 0x64, 0xf3, 0xc6, 0xa4, 0xf7, 0x24, 0xb8, 0x4b, 0x61,
+ 0xcd, 0x35, 0x98, 0x99, 0x01, 0x1c, 0xe0, 0x36, 0x87, 0x7b, 0x15, 0xb9,
+ 0xc8, 0x0c, 0x4f, 0xed, 0x84, 0xea, 0x73, 0x4a, 0xf0, 0x58, 0x12, 0xb0,
+ 0x7d, 0x9b, 0x91, 0xcb, 0x58, 0xff, 0xa0, 0x63, 0x4d, 0x46, 0xa3, 0x8c,
+ 0x25, 0x32, 0x72, 0x95, 0x5b, 0xc2, 0x82, 0x3e, 0x29, 0xcf, 0xb6, 0xe5,
+ 0x08, 0x73, 0xd2, 0x2c, 0x5a, 0xcf, 0x48, 0x43, 0x0a, 0xa2, 0x15, 0xba,
+ 0x70, 0x78, 0x1c, 0xf8, 0xe3, 0xd3, 0x21, 0x6f, 0x1f, 0x9d, 0x4c, 0xcd,
+ 0x9f, 0x9d, 0xe4, 0x39, 0xba, 0x1d, 0x70, 0x07, 0xdb, 0x7a, 0x57, 0x5f,
+ 0x93, 0xb5, 0xf7, 0xf1, 0xf5, 0x6f, 0xdc, 0xe1, 0xa4, 0xca, 0xe0, 0x93,
+ 0x22, 0xa2, 0x88, 0xe9, 0xa7, 0xdb, 0x02, 0x5d, 0x6c, 0x2a, 0x05, 0x98,
+ 0xc8, 0x93, 0x46, 0xdc, 0x8f, 0xa0, 0x88, 0x7c, 0x76, 0xc7, 0xbc, 0x14,
+ 0xb5, 0x27, 0x98, 0x56, 0x03, 0x25, 0x42, 0xa4, 0x21, 0xae, 0xbc, 0x7f,
+ 0x2c, 0xb2, 0x74, 0x79, 0x54, 0x8a, 0x9e, 0x9f, 0x75, 0xd0, 0xdc, 0xfd,
+ 0xdc, 0xf1, 0xa6, 0x35, 0xc0, 0x0b, 0xfc, 0xb8, 0x9f, 0x2d, 0x48, 0x07,
+ 0xb3, 0x16, 0x37, 0x71, 0x71, 0x16, 0xeb, 0x56, 0x5f, 0xc1, 0x50, 0x0e,
+ 0x62, 0x26, 0xfb, 0x59, 0xb4, 0x36, 0x76, 0xa5, 0xc5, 0x99, 0xff, 0x37,
+ 0x61, 0x48, 0x01, 0x20, 0x98, 0x67, 0x12, 0x71, 0xe4, 0x06, 0x98, 0x08,
+ 0xbe, 0x1f, 0xbb, 0x83, 0x44, 0xed, 0xd7, 0x08, 0x57, 0x0d, 0x02, 0xce,
+ 0xc8, 0x59, 0xeb, 0xd9, 0x6c, 0x2e, 0x1c, 0x3d, 0x83, 0x63, 0x9d, 0x4c,
+ 0x64, 0x38, 0x39, 0xfc, 0x30, 0x3c, 0x46, 0x9b, 0xc0, 0xbc, 0x7c, 0x62,
+ 0x25, 0xda, 0xb6, 0x7f, 0x2b, 0xb3, 0x30, 0xbd, 0x8f, 0x49, 0x6b, 0x70,
+ 0xec, 0xef, 0x24, 0xfd, 0x00, 0xdd, 0x5a, 0xd0, 0xf8, 0x7b, 0xcd, 0xf8,
+ 0xc3, 0x96, 0xd3, 0xdb, 0x74, 0xb8, 0xa8, 0x82, 0xc8, 0x6e, 0x17, 0x57,
+ 0x5a, 0x87, 0x95, 0x87, 0xb4, 0x49, 0x3c, 0x44, 0x6a, 0xff, 0x75, 0xce,
+ 0xb5, 0x44, 0xe1, 0x41, 0x67, 0x4b, 0xa2, 0x04, 0x29, 0x64, 0xc7, 0xd6,
+ 0x2e, 0xf4, 0x4e, 0x3a, 0x46, 0x5c, 0xcb, 0x90, 0x8b, 0x94, 0xfd, 0x64,
+ 0x36, 0xdc, 0x37, 0xd8, 0x3d, 0x9c, 0xf0, 0x22, 0xd8, 0xfb, 0x73, 0xf6,
+ 0x10, 0x39, 0x9d, 0xcb, 0xe1, 0x1a, 0xaa, 0xf3, 0xa8, 0xf4, 0xb8, 0xa0,
+ 0xd7, 0x73, 0x4e, 0xa0, 0x7f, 0xd1, 0xd1, 0x35, 0xb0, 0x06, 0xb2, 0x72,
+ 0xe9, 0xab, 0xba, 0xf8, 0x1e, 0x04, 0x41, 0x32, 0xa9, 0xe2, 0xf2, 0x7a,
+ 0x18, 0x86, 0x08, 0x11, 0x8c, 0x3f, 0x53, 0xfb, 0xe3, 0x08, 0x1e, 0xee,
+ 0x5f, 0x0f, 0x0f, 0xd4, 0x0a, 0xe2, 0x5c, 0xdb, 0xde, 0x64, 0x8f, 0xca,
+ 0xbb, 0xd9, 0xf0, 0xea, 0xd9, 0xeb, 0x7e, 0xb8, 0x69, 0xa2, 0x71, 0x1a,
+ 0x3e, 0x59, 0x0a, 0x13, 0x7a, 0x1a, 0xe4, 0x0b, 0xac, 0x56, 0xcd, 0x8e,
+ 0x79, 0x29, 0x34, 0x8e, 0xe5, 0xbe, 0x8e, 0x9c, 0x6f, 0xc3, 0xcd, 0xd5,
+ 0x5f, 0x31, 0xc6, 0x76, 0xf4, 0xb1, 0x32, 0x23, 0x14, 0xa1, 0x92, 0x40,
+ 0x24, 0xe2, 0x04, 0x57, 0x24, 0x68, 0xe9, 0x36, 0x3b, 0x8b, 0x2e, 0xe0,
+ 0x74, 0xa4, 0x2d, 0x16, 0x4e, 0xc6, 0x81, 0x57, 0x5b, 0x2f, 0xaf, 0x26,
+ 0x59, 0x6d, 0xa9, 0x2c, 0x70, 0xb4, 0x7c, 0xa9, 0x81, 0xbd, 0x44, 0xeb,
+ 0xd8, 0x9a, 0x78, 0xea, 0xbd, 0xc6, 0x8e, 0xaf, 0x92, 0xe2, 0x38, 0x9f,
+ 0x5d, 0x87, 0x47, 0xd5, 0x08, 0x2c, 0x67, 0xc3, 0x9b, 0xd3, 0xef, 0x10,
+ 0xde, 0x4e, 0x86, 0x15, 0x15, 0xa3, 0xa5, 0x7a, 0xd6, 0x9a, 0x3c, 0x14,
+ 0x6e, 0x6e, 0x13, 0xc3, 0x0f, 0xa2, 0x93, 0xef, 0x8e, 0x9f, 0xbd, 0x3c,
+ 0xde, 0x6a, 0x8e, 0xe4, 0x19, 0xe3, 0xef, 0xb2, 0x8d, 0x97, 0x6f, 0x6a,
+ 0xde, 0x28, 0x43, 0x76, 0xce, 0x20, 0xe8, 0x61, 0xe1, 0x5b, 0x2c, 0xf6,
+ 0xb6, 0x74, 0x39, 0x45, 0x04, 0xaf, 0xb4, 0x28, 0xf2, 0x82, 0xf8, 0xd3,
+ 0x7b, 0x0d, 0x84, 0x9b, 0xa6, 0x53, 0x8c, 0xa8, 0x30, 0xc2, 0x0d, 0x97,
+ 0x84, 0x25, 0xb1, 0x9d, 0x3a, 0x8f, 0xc3, 0xcd, 0x8d, 0x50, 0x3b, 0x40,
+ 0x51, 0x89, 0xf3, 0xf8, 0x3d, 0xbb, 0xff, 0x65, 0x99, 0x60, 0x6d, 0x1e,
+ 0x62, 0x45, 0x34, 0xdc, 0x18, 0xb5, 0xbf, 0xfe, 0x51, 0xff, 0xb4, 0x29,
+ 0x43, 0x1b, 0xde, 0x04, 0xb7, 0x05, 0x6a, 0xcc, 0x8c, 0x7c, 0x19, 0xee,
+ 0xd5, 0x94, 0xa9, 0x39, 0x7e, 0x73, 0xf4, 0x0a, 0xc8, 0x8c, 0xc3, 0x37,
+ 0xfc, 0xc0, 0x7f, 0x5a, 0x1a, 0xf8, 0x98, 0x46, 0xe1, 0x6d, 0xf5, 0xf7,
+ 0xfd, 0x7e, 0x7c, 0x74, 0xfe, 0x32, 0xdc, 0x85, 0x7c, 0x29, 0x65, 0xdc,
+ 0xd9, 0xa3, 0xed, 0xb5, 0xf0, 0xa2, 0x7f, 0xd1, 0xd7, 0x1f, 0x3a, 0x26,
+ 0x3a, 0x91, 0x69, 0x59, 0x83, 0x3c, 0xd7, 0xc7, 0x81, 0xe6, 0xf6, 0xf8,
+ 0xc7, 0xf6, 0x9e, 0x79, 0xc1, 0x00, 0xad, 0xe9, 0xfa, 0xf4, 0x02, 0xaf,
+ 0xed, 0xcb, 0x6b, 0xfb, 0xcb, 0x5e, 0x0b, 0xbc, 0xd7, 0x8f, 0x43, 0x85,
+ 0xe5, 0x3d, 0x0e, 0x90, 0x05, 0x52, 0x25, 0x96, 0x95, 0x4c, 0x7f, 0xf9,
+ 0xec, 0x75, 0xbd, 0x01, 0x13, 0xa4, 0x80, 0xdf, 0xc4, 0x0a, 0xd3, 0x26,
+ 0x42, 0xa0, 0xa3, 0x5e, 0x06, 0x0c, 0xc5, 0xe7, 0xd7, 0x4f, 0x9c, 0xd8,
+ 0x0c, 0xdc, 0x48, 0xfa, 0xc8, 0x28, 0x31, 0xde, 0x1b, 0xaa, 0xfc, 0x87,
+ 0x27, 0x65, 0x4c, 0x03, 0x7f, 0x7b, 0xec, 0x91, 0xd8, 0xb2, 0xbd, 0x3c,
+ 0x4d, 0x8a, 0xcb, 0x34, 0x10, 0x47, 0xe1, 0xad, 0x95, 0x99, 0xaa, 0x0d,
+ 0xee, 0x82, 0xdb, 0x73, 0x82, 0xaf, 0x73, 0x14, 0x45, 0x57, 0x82, 0x29,
+ 0xe8, 0xa3, 0xa2, 0x8d, 0xbd, 0xc1, 0x5c, 0xf7, 0xbe, 0xff, 0xce, 0x1b,
+ 0x06, 0x50, 0xeb, 0x6f, 0xc8, 0xbb, 0x0d, 0x03, 0x1b, 0xa5, 0x2e, 0xef,
+ 0xda, 0xbc, 0xce, 0x92, 0xe8, 0xf2, 0xb7, 0x6c, 0x4e, 0xe0, 0x6c, 0x98,
+ 0x91, 0xb6, 0x45, 0x77, 0xb7, 0xc9, 0x5b, 0x08, 0x77, 0xc7, 0x03, 0x32,
+ 0x8c, 0x6f, 0xf9, 0x4a, 0xbc, 0x42, 0x21, 0xae, 0xdf, 0x3f, 0xbd, 0xf7,
+ 0x42, 0x18, 0xa9, 0xaf, 0x9e, 0x18, 0xd6, 0xcc, 0x2f, 0x43, 0x15, 0x5a,
+ 0x7e, 0xac, 0xb3, 0x31, 0xf8, 0xc2, 0xbb, 0x1f, 0xbe, 0x0b, 0x8f, 0x86,
+ 0x5a, 0x1b, 0xa5, 0x88, 0x7f, 0x29, 0xd1, 0x5a, 0xe8, 0xc7, 0x02, 0x5d,
+ 0x7f, 0x04, 0x37, 0xe4, 0x64, 0x2e, 0xc5, 0xe4, 0x5b, 0xdb, 0x3e, 0xc7,
+ 0x6a, 0xad, 0xfc, 0x03, 0x9f, 0xbb, 0x52, 0x3e, 0x7e, 0xbe, 0x18, 0x4c,
+ 0x60, 0xed, 0xfb, 0x8b, 0xf1, 0x38, 0xbb, 0x8d, 0x4e, 0x33, 0xa9, 0x77,
+ 0x2b, 0x1a, 0x96, 0x66, 0x21, 0x65, 0xe5, 0x92, 0x5b, 0x82, 0x33, 0x60,
+ 0xe8, 0x84, 0xd6, 0xd0, 0x4a, 0x2c, 0xf6, 0x26, 0x4b, 0x76, 0x9d, 0x39,
+ 0xf7, 0x55, 0x2e, 0xc6, 0x71, 0xdb, 0xe6, 0xdd, 0xa6, 0xa5, 0xaf, 0xbc,
+ 0xf7, 0xcf, 0x5f, 0x9f, 0x7c, 0x7f, 0xa6, 0x3f, 0xd6, 0x59, 0xd1, 0x3e,
+ 0xcf, 0x1a, 0x7f, 0x98, 0xe4, 0x56, 0x20, 0x22, 0x84, 0xe3, 0xc5, 0xcb,
+ 0xdf, 0x16, 0x8a, 0x26, 0xdb, 0xb5, 0x36, 0xd3, 0x65, 0xc8, 0x77, 0x3f,
+ 0x08, 0xd9, 0x65, 0x37, 0x5d, 0xf4, 0x77, 0xc2, 0xbf, 0xe8, 0xde, 0xef,
+ 0xd3, 0x9a, 0x81, 0x70, 0x1d, 0xc2, 0xa4, 0xee, 0x03, 0x6f, 0x95, 0x1f,
+ 0x4b, 0xc7, 0x2a, 0xa0, 0x2c, 0x2d, 0xd2, 0x11, 0x21, 0xdd, 0xf4, 0xb9,
+ 0x3c, 0xcc, 0x1b, 0x0e, 0x00, 0x3c, 0x17, 0x53, 0xca, 0xd6, 0xb2, 0x25,
+ 0x69, 0x59, 0x68, 0xd8, 0xf9, 0x60, 0x69, 0x4a, 0xbc, 0x28, 0x5f, 0xd1,
+ 0x05, 0x19, 0x7e, 0x91, 0xaf, 0x6a, 0xb9, 0x42, 0xcd, 0xb5, 0xba, 0x74,
+ 0x5e, 0x6f, 0x67, 0x19, 0x7a, 0xf9, 0x5a, 0x80, 0xe1, 0xf8, 0x4b, 0xc3,
+ 0x8a, 0x73, 0xe3, 0xce, 0x0f, 0xb5, 0x73, 0xdb, 0xa7, 0x98, 0xd5, 0xb2,
+ 0xb5, 0xad, 0x5b, 0x89, 0x8e, 0x2d, 0xeb, 0x97, 0x54, 0x8b, 0xd8, 0xf8,
+ 0x5b, 0x59, 0x8d, 0x56, 0x71, 0x20, 0x7c, 0x66, 0x4b, 0x12, 0xa2, 0x6d,
+ 0xee, 0x1a, 0xb3, 0x99, 0xf0, 0x30, 0x56, 0xf1, 0x9e, 0x9a, 0x83, 0xd9,
+ 0x20, 0x04, 0xde, 0x0b, 0x44, 0x3e, 0x54, 0x1f, 0x2c, 0xa0, 0x4a, 0xd6,
+ 0x73, 0x9c, 0x3d, 0x1d, 0xd2, 0x2a, 0x8f, 0xa4, 0x99, 0xf9, 0x00, 0x70,
+ 0x57, 0xec, 0x29, 0x9b, 0xcc, 0x59, 0xbd, 0x7b, 0x85, 0x7f, 0x4e, 0x93,
+ 0xd9, 0xc2, 0xf5, 0x3b, 0xc5, 0x37, 0xf8, 0x29, 0x55, 0xb3, 0xc1, 0x70,
+ 0x8e, 0xe8, 0x90, 0xf5, 0xb8, 0x6f, 0x02, 0x96, 0x27, 0xee, 0x50, 0x91,
+ 0xb4, 0x5d, 0x8d, 0x8f, 0x2c, 0x0f, 0xe4, 0xa9, 0x4f, 0xc6, 0x28, 0x4a,
+ 0x26, 0xc6, 0xd7, 0x39, 0xe2, 0x3b, 0xc7, 0xcf, 0xfd, 0x2d, 0x7a, 0xaa,
+ 0xee, 0x51, 0x2b, 0x91, 0x98, 0x8d, 0xc5, 0xfb, 0x4c, 0xa9, 0xa3, 0x58,
+ 0x6e, 0x2e, 0x9f, 0x91, 0xfd, 0x9c, 0x0b, 0xe3, 0xb0, 0xf7, 0x1f, 0x78,
+ 0xcb, 0x28, 0x64, 0x79, 0xc2, 0x40, 0xb4, 0xd9, 0x62, 0x3a, 0x40, 0x17,
+ 0xef, 0xd8, 0x20, 0x75, 0x97, 0xec, 0x40, 0x92, 0x5e, 0x7c, 0xab, 0x77,
+ 0x12, 0x00, 0x0a, 0x9d, 0xc0, 0x62, 0x10, 0xf8, 0x5f, 0x87, 0xc7, 0x83,
+ 0x58, 0x55, 0x28, 0x55, 0xaa, 0xd7, 0x95, 0xf2, 0x16, 0xd4, 0xdc, 0xc0,
+ 0x0a, 0xae, 0xb4, 0xcf, 0x6e, 0x91, 0x40, 0xca, 0x83, 0x28, 0x6c, 0xdf,
+ 0x6a, 0xfa, 0x43, 0x47, 0x83, 0x27, 0x6b, 0xd6, 0x56, 0xd3, 0x9c, 0x59,
+ 0x95, 0x00, 0xda, 0x35, 0xc7, 0x92, 0x52, 0xc2, 0x3c, 0xee, 0x1a, 0x34,
+ 0x1a, 0x77, 0x82, 0x6a, 0xa3, 0x5d, 0x83, 0x48, 0x05, 0xbc, 0xba, 0x65,
+ 0x4a, 0x7b, 0x51, 0x3f, 0x6e, 0xb9, 0x18, 0x94, 0x55, 0x56, 0x2d, 0x7c,
+ 0x76, 0x23, 0xc1, 0x33, 0x6c, 0x4a, 0xcd, 0xc5, 0x6f, 0x63, 0x01, 0xbc,
+ 0xc9, 0x10, 0x85, 0xf9, 0x7a, 0x55, 0x97, 0x16, 0x94, 0x53, 0x4f, 0x06,
+ 0x8c, 0xc0, 0x3b, 0xc9, 0x6f, 0xbc, 0x82, 0x0f, 0xa8, 0x21, 0xdb, 0xd1,
+ 0xd5, 0xb1, 0xbb, 0xa0, 0x81, 0xdf, 0xff, 0x53, 0xbf, 0x7c, 0x87, 0x8b,
+ 0xf5, 0x2f, 0x5d, 0x2c, 0x19, 0x76, 0xe2, 0xb9, 0x4c, 0xc8, 0xf8, 0xf7,
+ 0x7b, 0x5a, 0x94, 0x5f, 0x31, 0x12, 0x9c, 0x57, 0x06, 0xcb, 0xe1, 0x50,
+ 0x73, 0xbf, 0xef, 0x19, 0x69, 0x4d, 0x9b, 0x40, 0xf0, 0x57, 0x36, 0x31,
+ 0x0c, 0xee, 0x3c, 0xfb, 0x13, 0xd2, 0xe0, 0xcf, 0xb3, 0x2e, 0xd2, 0x71,
+ 0x52, 0xc0, 0x40, 0x2e, 0xc9, 0xf5, 0x85, 0x65, 0x11, 0x68, 0x1b, 0x7f,
+ 0x2e, 0xa4, 0xe2, 0x4a, 0x95, 0x0c, 0xc4, 0xdf, 0xce, 0x9f, 0x87, 0xd5,
+ 0x77, 0x93, 0x63, 0xa3, 0xeb, 0x5c, 0xab, 0xe6, 0x04, 0x2d, 0x25, 0xc5,
+ 0xc8, 0xd8, 0x0a, 0x07, 0x5a, 0x1a, 0x81, 0x49, 0xb5, 0xb9, 0xf7, 0x54,
+ 0xbe, 0x40, 0xca, 0xa6, 0xe8, 0xab, 0xa4, 0x1b, 0xd9, 0x30, 0x9c, 0xdf,
+ 0xff, 0x93, 0xf3, 0x67, 0xfe, 0xe5, 0x7b, 0x48, 0x79, 0x1c, 0x35, 0x53,
+ 0xa5, 0xd8, 0xef, 0x89, 0xe8, 0x28, 0x4e, 0x8e, 0x0c, 0xae, 0xb3, 0x2a,
+ 0x32, 0xb8, 0xbc, 0x64, 0x77, 0x0d, 0xe5, 0x5c, 0xfc, 0x9e, 0xdb, 0xf8,
+ 0x27, 0x6f, 0x91, 0x86, 0x8c, 0xb1, 0x56, 0x9d, 0x49, 0xfe, 0x00, 0x1a,
+ 0x64, 0xa9, 0x1e, 0x9a, 0x7a, 0x14, 0x39, 0x1a, 0x6c, 0x1c, 0x50, 0xa3,
+ 0xc5, 0x3e, 0xb0, 0xe9, 0x3a, 0x97, 0x4c, 0x2c, 0x3f, 0xb9, 0x09, 0xb6,
+ 0xf8, 0x2c, 0x9b, 0x70, 0x8a, 0x19, 0xe2, 0x4e, 0x30, 0xf9, 0xf8, 0x49,
+ 0x7a, 0x5c, 0x8c, 0x1b, 0x76, 0x9f, 0xe8, 0x9e, 0x98, 0xb9, 0x93, 0x24,
+ 0xd2, 0x15, 0x4d, 0x4b, 0x82, 0xb6, 0x19, 0x68, 0x59, 0xfa, 0xba, 0xb9,
+ 0x42, 0x66, 0xd8, 0x5c, 0x79, 0xda, 0x66, 0x60, 0x07, 0xd3, 0x29, 0xfa,
+ 0x49, 0x4d, 0xb2, 0x85, 0x94, 0x8f, 0xfb, 0xb2, 0x86, 0xdd, 0xa0, 0xa2,
+ 0xde, 0xd9, 0xc5, 0xc9, 0x01, 0x0d, 0xf9, 0xf7, 0x71, 0x79, 0x37, 0x1d,
+ 0xe4, 0x13, 0xe1, 0x72, 0x48, 0xeb, 0x40, 0xb0, 0xfa, 0x19, 0x9f, 0x49,
+ 0x8a, 0x66, 0x8a, 0x9d, 0x6a, 0x03, 0xbe, 0x93, 0x9d, 0x16, 0x98, 0xcc,
+ 0x4b, 0xf9, 0x90, 0xf1, 0x1b, 0x11, 0x04, 0x02, 0x56, 0xf3, 0xf7, 0x91,
+ 0x22, 0xf0, 0x03, 0x17, 0x26, 0x0f, 0xd2, 0x8d, 0x75, 0xff, 0x89, 0x81,
+ 0x38, 0x18, 0xa7, 0x10, 0xa2, 0x57, 0xe7, 0x60, 0x1a, 0x9b, 0x50, 0xa8,
+ 0x4e, 0x83, 0x6c, 0xc0, 0x3b, 0xc2, 0x74, 0xe3, 0x57, 0x8f, 0xf9, 0xa3,
+ 0xf8, 0x02, 0x3f, 0x92, 0x90, 0x6f, 0x25, 0x24, 0xe4, 0x06, 0x8a, 0x3a,
+ 0xd2, 0x0d, 0x40, 0x71, 0x46, 0xa1, 0xfc, 0x11, 0xd4, 0x8c, 0x81, 0xb1,
+ 0x7b, 0xe3, 0x24, 0x9a, 0x9f, 0x96, 0x97, 0xce, 0xb0, 0xf9, 0x18, 0x4c,
+ 0x31, 0x4c, 0xfa, 0x32, 0xed, 0x45, 0x9b, 0x6e, 0xf5, 0xdd, 0xc7, 0xbd,
+ 0x1d, 0xcf, 0x5a, 0x91, 0xde, 0xc2, 0x59, 0xa2, 0x28, 0x7e, 0xd3, 0x04,
+ 0x5c, 0x1f, 0x58, 0x2f, 0x15, 0xb6, 0xc6, 0x7c, 0x29, 0x93, 0xb0, 0x11,
+ 0x72, 0x9b, 0x4d, 0x48, 0xd3, 0xf0, 0xff, 0x5a, 0x3a, 0x55, 0xfe, 0xff,
+ 0x8e, 0x25, 0x01, 0x38, 0x11, 0xcb, 0x9b, 0xa1, 0x38, 0x0d, 0x90, 0x28,
+ 0xa6, 0x89, 0x64, 0x8a, 0x70, 0x6a, 0x88, 0xe1, 0xbc, 0x5a, 0x87, 0x8e,
+ 0x32, 0x99, 0x81, 0x2b, 0xf4, 0x56, 0x35, 0x87, 0x07, 0x33, 0x13, 0x08,
+ 0x43, 0x09, 0xb3, 0x47, 0x47, 0x51, 0x36, 0x36, 0x6a, 0x75, 0x85, 0x18,
+ 0x32, 0xa8, 0x95, 0x60, 0xcb, 0x2b, 0xf6, 0x28, 0xd7, 0x18, 0x00, 0x63,
+ 0x49, 0x6d, 0x84, 0x7d, 0x16, 0x36, 0x4a, 0x34, 0x40, 0x82, 0x51, 0x28,
+ 0x72, 0x26, 0x7a, 0x49, 0x7e, 0x28, 0x66, 0x46, 0x0b, 0xf6, 0x63, 0xe1,
+ 0x41, 0xcb, 0xa7, 0xe8, 0x10, 0xad, 0x32, 0xeb, 0x2e, 0x5c, 0x31, 0x3a,
+ 0x33, 0x14, 0x66, 0x18, 0x6e, 0x20, 0xaa, 0x47, 0x4f, 0xe3, 0x6a, 0xfe,
+ 0x0e, 0xe8, 0xb2, 0xb8, 0x7b, 0x47, 0xf9, 0x58, 0x17, 0x8e, 0xeb, 0x9d,
+ 0x3e, 0xa0, 0xc5, 0x61, 0xb4, 0xe3, 0xc5, 0x1c, 0x87, 0x43, 0xe7, 0x6b,
+ 0x92, 0xb3, 0xe5, 0x29, 0x9f, 0xad, 0x5c, 0x27, 0x27, 0xe1, 0xc7, 0xa9,
+ 0x55, 0xf1, 0x45, 0x90, 0x07, 0xbe, 0xfb, 0xb5, 0x44, 0x51, 0x12, 0xee,
+ 0xc9, 0xe8, 0xcf, 0xfd, 0xb3, 0xd7, 0x51, 0x3e, 0xc0, 0x82, 0xef, 0x22,
+ 0xe5, 0xc0, 0xe9, 0x27, 0x06, 0xde, 0xac, 0xd5, 0x15, 0x12, 0x15, 0xfc,
+ 0x23, 0xa5, 0xdc, 0xdd, 0xd2, 0xf3, 0xdf, 0xf0, 0x4e, 0x67, 0x26, 0x6a,
+ 0xe1, 0x8f, 0x49, 0x2a, 0x2a, 0x56, 0x6c, 0x57, 0x91, 0xdc, 0x95, 0x5d,
+ 0x29, 0x66, 0xac, 0x58, 0xbb, 0x09, 0xfb, 0x6e, 0x8c, 0x14, 0x6c, 0xaa,
+ 0xd9, 0xe1, 0x69, 0x5e, 0xde, 0x9c, 0xc8, 0x66, 0xe6, 0x55, 0x12, 0x36,
+ 0x7c, 0xf5, 0x21, 0x70, 0x40, 0xe4, 0x42, 0x20, 0x6b, 0x8d, 0x9d, 0x44,
+ 0x86, 0xfb, 0x73, 0x93, 0x16, 0x38, 0xa6, 0x2e, 0x85, 0xee, 0xdc, 0xe3,
+ 0xd8, 0x72, 0x94, 0x07, 0xe6, 0xdd, 0xce, 0xe7, 0x69, 0x02, 0x8b, 0x84,
+ 0x7e, 0x30, 0xbd, 0x3b, 0x6e, 0x32, 0xcc, 0x73, 0x39, 0xb9, 0x45, 0x60,
+ 0x70, 0x0e, 0xa5, 0x5e, 0xac, 0x58, 0x22, 0xac, 0x3b, 0x94, 0x60, 0xbf,
+ 0x4e, 0x41, 0xb5, 0xf4, 0x8e, 0x16, 0xfb, 0xb2, 0xc8, 0x17, 0x73, 0x8e,
+ 0x61, 0x77, 0xe2, 0xab, 0x56, 0x8c, 0xce, 0x70, 0x7d, 0xc5, 0xd0, 0x40,
+ 0x19, 0x51, 0x83, 0x02, 0x39, 0x0f, 0x88, 0x65, 0x34, 0xb6, 0xe9, 0xad,
+ 0x18, 0x5d, 0xc9, 0xf8, 0x4f, 0xb2, 0x77, 0x44, 0x6a, 0x20, 0xee, 0x04,
+ 0x72, 0x39, 0xd0, 0x2f, 0xf5, 0xce, 0xf2, 0xca, 0x3a, 0xab, 0x34, 0x84,
+ 0x48, 0x0f, 0xd0, 0x90, 0xb8, 0x80, 0x33, 0xc6, 0x7c, 0x66, 0xb3, 0xd5,
+ 0xe7, 0x94, 0x3c, 0xf5, 0x36, 0xb4, 0x48, 0x33, 0xd2, 0x38, 0x12, 0x19,
+ 0xf3, 0x10, 0x0c, 0xb1, 0xb6, 0x8c, 0x8b, 0x53, 0x48, 0x9b, 0xe3, 0x6a,
+ 0x1f, 0x8e, 0xf6, 0xb8, 0x6a, 0x79, 0x78, 0x5a, 0x9b, 0x12, 0xeb, 0x44,
+ 0x76, 0xc5, 0x2d, 0xe6, 0x79, 0xc4, 0x0e, 0x1a, 0xf5, 0xf6, 0xc2, 0xa3,
+ 0x33, 0x8a, 0x21, 0x8b, 0x82, 0xf8, 0x99, 0x83, 0x27, 0xcf, 0x1b, 0x88,
+ 0xe3, 0x8b, 0xcc, 0x85, 0xa0, 0x88, 0xcc, 0x2b, 0x58, 0xb9, 0x7b, 0xbf,
+ 0x3d, 0xde, 0x09, 0x5c, 0x35, 0xca, 0x44, 0x54, 0xe6, 0x0e, 0xf3, 0x12,
+ 0x7b, 0xc5, 0xbf, 0x4f, 0x03, 0xc8, 0x01, 0x94, 0x76, 0xf9, 0x2e, 0x9b,
+ 0xbb, 0xe2, 0xec, 0xcb, 0xf3, 0x08, 0x1d, 0xe6, 0x84, 0xcb, 0x22, 0xd7,
+ 0x23, 0x67, 0x67, 0x62, 0xc0, 0xb0, 0x7c, 0x40, 0xdc, 0x7b, 0xe5, 0x0a,
+ 0x0f, 0x19, 0x80, 0x9a, 0x5c, 0x2e, 0x0e, 0xa8, 0x54, 0xac, 0xbc, 0x40,
+ 0x3d, 0x30, 0x68, 0x5f, 0x7d, 0x14, 0x88, 0xe2, 0x89, 0x7c, 0xc3, 0x6c,
+ 0xcb, 0x0c, 0xc8, 0x86, 0x60, 0x66, 0xc0, 0xc3, 0x8d, 0xe8, 0x43, 0xab,
+ 0x32, 0x3a, 0xe3, 0x76, 0x06, 0xb6, 0x62, 0x06, 0xb6, 0xb2, 0xfd, 0x17,
+ 0x5e, 0x00, 0x21, 0xe1, 0x8d, 0xd6, 0x18, 0x15, 0xee, 0xbe, 0x7c, 0xae,
+ 0x81, 0x70, 0x8d, 0x5e, 0x99, 0xb9, 0xaf, 0x5e, 0x3a, 0x09, 0x1b, 0xae,
+ 0x49, 0x39, 0x7b, 0x01, 0x2a, 0x80, 0xe9, 0xe9, 0x09, 0x29, 0x51, 0x24,
+ 0xe5, 0xd9, 0xe2, 0x74, 0x41, 0x01, 0x8a, 0xcc, 0x37, 0x54, 0x28, 0x52,
+ 0x46, 0xe3, 0x5e, 0x11, 0x2b, 0x46, 0x11, 0x3a, 0x94, 0xd8, 0xa3, 0xd1,
+ 0x2e, 0xcc, 0xa1, 0x94, 0x35, 0xf6, 0x6e, 0x2d, 0x7f, 0x05, 0x56, 0x5c,
+ 0x3a, 0xaa, 0x95, 0x6c, 0x62, 0x00, 0x59, 0x42, 0xe9, 0x1e, 0x08, 0x62,
+ 0x45, 0xbc, 0xaf, 0x90, 0x0a, 0xbd, 0xa0, 0x28, 0x18, 0x6c, 0xb0, 0xd5,
+ 0x57, 0x22, 0x96, 0x7c, 0x5c, 0x94, 0xea, 0x71, 0x7e, 0xd9, 0x27, 0xc1,
+ 0x9d, 0x52, 0xab, 0x24, 0xa4, 0xd8, 0x1c, 0xb6, 0xfb, 0x48, 0x7d, 0xfb,
+ 0x2d, 0x9b, 0xa0, 0x63, 0x2b, 0xcd, 0x26, 0xd0, 0x72, 0xe8, 0x87, 0xcc,
+ 0xa8, 0x50, 0xe4, 0x1d, 0xe7, 0x98, 0x50, 0x6a, 0x89, 0xe3, 0x9e, 0xa4,
+ 0xd0, 0xec, 0x13, 0x48, 0x97, 0x04, 0x62, 0x87, 0xfc, 0x28, 0xe4, 0x4e,
+ 0xa5, 0x72, 0x95, 0xca, 0x28, 0x1f, 0x63, 0x46, 0xa1, 0xc6, 0x57, 0xf9,
+ 0x0d, 0x61, 0xe4, 0x47, 0xab, 0x79, 0xb6, 0xb2, 0xe4, 0x48, 0x14, 0x63,
+ 0xda, 0x05, 0x4e, 0x98, 0xfd, 0x2d, 0x2d, 0x72, 0x11, 0xd0, 0xa3, 0x0f,
+ 0x94, 0x96, 0x89, 0xe5, 0xbe, 0x2b, 0xcb, 0x09, 0xb2, 0xd1, 0x6c, 0x7c,
+ 0x07, 0x8b, 0x58, 0xb6, 0xd6, 0xa6, 0x68, 0xcc, 0x14, 0xd3, 0x9d, 0x64,
+ 0xae, 0x8e, 0x5f, 0x68, 0xa3, 0x24, 0x23, 0xf2, 0x3c, 0x45, 0x05, 0x32,
+ 0x2d, 0xaa, 0x6c, 0x9c, 0xad, 0xe2, 0x51, 0x28, 0x79, 0x53, 0xf7, 0x36,
+ 0x76, 0x4e, 0xee, 0x14, 0xa3, 0xd8, 0xf4, 0xa2, 0x1d, 0xb1, 0xb4, 0xaf,
+ 0x5c, 0xb8, 0x5a, 0x4b, 0xd8, 0x88, 0x0d, 0x17, 0xad, 0x9f, 0xe6, 0xc7,
+ 0xa1, 0xd3, 0xac, 0xf4, 0xf2, 0x8e, 0x64, 0x7f, 0x8e, 0xf1, 0x94, 0x24,
+ 0x6e, 0x73, 0x32, 0xb0, 0x51, 0x3a, 0xce, 0xaa, 0x48, 0x83, 0x20, 0xac,
+ 0x65, 0xef, 0x56, 0x8a, 0xa9, 0x42, 0x7d, 0x91, 0x43, 0x99, 0xd1, 0x26,
+ 0x6e, 0xe4, 0x8d, 0x94, 0x9f, 0x9d, 0x26, 0xb7, 0x31, 0x7d, 0x57, 0x46,
+ 0x6d, 0xce, 0x04, 0x87, 0x01, 0x6e, 0x49, 0x22, 0x91, 0xaa, 0x94, 0x6c,
+ 0x02, 0x41, 0x42, 0x13, 0xfc, 0xaf, 0x21, 0x06, 0xa9, 0x48, 0x0e, 0x63,
+ 0xb2, 0xea, 0xe4, 0x4b, 0xf9, 0xed, 0x1b, 0x0a, 0x47, 0x26, 0x23, 0xdc,
+ 0x25, 0x15, 0x7f, 0xca, 0x7b, 0xfe, 0x3a, 0x61, 0xcd, 0x81, 0x1a, 0xf1,
+ 0x47, 0x6f, 0xf8, 0xb3, 0x03, 0x23, 0x2f, 0x99, 0x88, 0x55, 0x55, 0x32,
+ 0xd7, 0xa0, 0xd6, 0x27, 0xc1, 0xcd, 0x41, 0xf1, 0xde, 0x5c, 0x96, 0x17,
+ 0x56, 0xe2, 0x87, 0x1b, 0xb3, 0x71, 0x61, 0xba, 0xa6, 0x16, 0x3c, 0x7b,
+ 0xeb, 0xdc, 0x34, 0xf6, 0x7e, 0x94, 0xeb, 0x91, 0x6e, 0xc7, 0xbc, 0x08,
+ 0xdf, 0x7f, 0x32, 0x2a, 0xbd, 0x00, 0x2f, 0x58, 0x23, 0xa7, 0x61, 0x7d,
+ 0xda, 0xfb, 0x4f, 0x59, 0xbd, 0x08, 0x8e, 0x9f, 0x42, 0x68, 0x34, 0x5c,
+ 0x68, 0x13, 0x2d, 0x99, 0x54, 0x10, 0x0e, 0x9d, 0x55, 0x33, 0x93, 0x68,
+ 0x4a, 0x7d, 0x07, 0x12, 0x61, 0x24, 0x35, 0xb5, 0x46, 0x1f, 0x44, 0x83,
+ 0xf2, 0xc5, 0x26, 0xd6, 0xa8, 0x63, 0x03, 0xfe, 0x10, 0xe1, 0xbc, 0x46,
+ 0xc6, 0xc5, 0xb4, 0x75, 0x8f, 0x4b, 0x05, 0x67, 0xe2, 0x8a, 0x73, 0x9c,
+ 0xe2, 0xb9, 0xf2, 0x70, 0x63, 0xcd, 0xb5, 0x77, 0x23, 0x18, 0x3e, 0xe5,
+ 0xb9, 0x73, 0xe4, 0x4f, 0x5e, 0x61, 0x24, 0xdd, 0x14, 0x96, 0x85, 0xb8,
+ 0x19, 0xd7, 0x32, 0x14, 0xa9, 0x91, 0xac, 0x41, 0xfa, 0xfc, 0x4a, 0x79,
+ 0xd1, 0xad, 0xc9, 0x48, 0xc5, 0xee, 0x64, 0xc7, 0x31, 0x53, 0x7c, 0x9b,
+ 0xeb, 0x2b, 0xea, 0x2e, 0xdc, 0xf3, 0xe6, 0x2f, 0xd0, 0xc3, 0x46, 0xc1,
+ 0x65, 0x8c, 0x5b, 0xd7, 0x52, 0x9a, 0x98, 0xa6, 0xa5, 0x09, 0x5a, 0xcb,
+ 0xa6, 0xa5, 0x78, 0x6a, 0x66, 0x46, 0xd4, 0xe4, 0x8a, 0x71, 0xb4, 0xf6,
+ 0x68, 0x04, 0x05, 0xde, 0x5d, 0xee, 0x32, 0xbc, 0x94, 0xb4, 0x92, 0x8e,
+ 0x79, 0x7c, 0x79, 0x8f, 0x2e, 0xb3, 0x0d, 0x77, 0x2d, 0x48, 0x05, 0x2d,
+ 0x93, 0x95, 0x9e, 0x6b, 0xbb, 0xa8, 0xb8, 0x01, 0xff, 0xb1, 0x7b, 0x08,
+ 0x17, 0xe6, 0xc8, 0xd2, 0x26, 0x4e, 0x2b, 0xc1, 0x88, 0xeb, 0x4b, 0xbb,
+ 0x5d, 0xfc, 0x8c, 0x63, 0x9a, 0x82, 0x0b, 0xb1, 0x5c, 0x14, 0x1c, 0xe6,
+ 0xb9, 0x5a, 0x08, 0x53, 0x87, 0x91, 0x69, 0x0f, 0xeb, 0x78, 0xe2, 0x3a,
+ 0xcd, 0x29, 0x34, 0x09, 0xe3, 0xef, 0x5a, 0x46, 0x65, 0x56, 0x9b, 0xf6,
+ 0x59, 0x87, 0xa5, 0x70, 0x11, 0x1f, 0x69, 0x54, 0xdc, 0xda, 0x7d, 0xc6,
+ 0xf4, 0xa1, 0xc2, 0x4a, 0x53, 0x3c, 0x21, 0xf9, 0xc3, 0x88, 0x0d, 0xf7,
+ 0xb0, 0xa0, 0xad, 0x92, 0x4f, 0x6a, 0x22, 0xc8, 0x6a, 0x46, 0xe6, 0xc8,
+ 0x27, 0x5f, 0xf8, 0x9e, 0x28, 0xa0, 0x20, 0xf3, 0xe7, 0x73, 0x4e, 0x6a,
+ 0x44, 0xd3, 0x43, 0x9e, 0x21, 0xad, 0xcf, 0xba, 0x62, 0x12, 0xb4, 0xee,
+ 0xc5, 0x9a, 0x2f, 0x64, 0x79, 0xe7, 0x2d, 0x8e, 0x12, 0x12, 0x2c, 0xeb,
+ 0xdc, 0xf4, 0x49, 0x48, 0xe6, 0x16, 0x87, 0x64, 0x6d, 0x70, 0x3c, 0xba,
+ 0x25, 0xc3, 0x53, 0xd0, 0x96, 0x87, 0x0e, 0x4e, 0xeb, 0xd3, 0x9b, 0x93,
+ 0xca, 0x62, 0xce, 0x68, 0x95, 0x08, 0x4f, 0xd9, 0xf9, 0xdd, 0x88, 0xbc,
+ 0x3f, 0x36, 0xc1, 0x9d, 0x54, 0x44, 0x92, 0xca, 0xa4, 0x6c, 0x35, 0x46,
+ 0xaa, 0xb0, 0x8b, 0x75, 0x85, 0xe5, 0x82, 0x1e, 0xd7, 0x3c, 0x5e, 0x46,
+ 0x53, 0x8b, 0x56, 0x2f, 0x19, 0x5e, 0x78, 0xef, 0x92, 0xf9, 0x5c, 0x2e,
+ 0xf5, 0xd5, 0x94, 0xcb, 0x35, 0x17, 0x11, 0xa5, 0x8b, 0x0e, 0x03, 0x97,
+ 0xb7, 0xac, 0xf2, 0xfc, 0xbd, 0x4d, 0x70, 0x25, 0x1d, 0x0d, 0xe1, 0x6e,
+ 0x57, 0x52, 0xee, 0x24, 0x52, 0xfa, 0xdf, 0xee, 0xf7, 0x5f, 0x6c, 0xa7,
+ 0xd5, 0x50, 0xa5, 0x8b, 0x6d, 0x9b, 0xee, 0x64, 0x2c, 0xa9, 0x2b, 0x9a,
+ 0x23, 0xf9, 0x06, 0x71, 0x21, 0x88, 0x86, 0x8d, 0x37, 0xba, 0x17, 0x9c,
+ 0x72, 0xdd, 0x82, 0xf4, 0x91, 0x27, 0x25, 0x55, 0xd4, 0x75, 0x2e, 0x0d,
+ 0x5b, 0x30, 0x0d, 0x11, 0x05, 0x6c, 0xb6, 0x2e, 0xad, 0x3e, 0x8e, 0x2b,
+ 0xa6, 0x82, 0x36, 0x50, 0xcc, 0x1c, 0x58, 0xcc, 0xff, 0xed, 0xbb, 0x47,
+ 0xde, 0x35, 0x34, 0xb1, 0x73, 0xfc, 0x2b, 0x79, 0xd2, 0x56, 0x0f, 0x78,
+ 0x8e, 0x86, 0x3f, 0x96, 0xe2, 0x56, 0x8f, 0xf8, 0xfe, 0x43, 0xbe, 0xf7,
+ 0x88, 0x19, 0xcf, 0x4c, 0xe5, 0x48, 0x1c, 0x30, 0x39, 0x90, 0x25, 0xd4,
+ 0x89, 0x0e, 0xdf, 0x20, 0xbd, 0xf4, 0x43, 0x1c, 0x83, 0x37, 0xb3, 0x06,
+ 0x84, 0x26, 0x94, 0x95, 0x9b, 0xc6, 0xa6, 0x5d, 0xc9, 0x6e, 0x2c, 0x25,
+ 0x11, 0xf2, 0x32, 0x5f, 0x39, 0xba, 0x44, 0xaa, 0xf7, 0x22, 0x2f, 0x77,
+ 0xfc, 0xe3, 0x43, 0xa5, 0x1f, 0x07, 0x23, 0x03, 0x48, 0x67, 0x55, 0x73,
+ 0x28, 0xb9, 0x32, 0xa2, 0xcb, 0x35, 0x86, 0x26, 0xb7, 0xec, 0x85, 0xd1,
+ 0xb0, 0x56, 0x91, 0x07, 0xc6, 0x2b, 0x4f, 0x26, 0x46, 0x23, 0x5b, 0x79,
+ 0x8f, 0xc0, 0x1d, 0x34, 0xd7, 0xe5, 0x41, 0xba, 0x20, 0x32, 0x61, 0x32,
+ 0xed, 0xea, 0xc1, 0xe8, 0x46, 0xf7, 0x26, 0x05, 0xca, 0x5b, 0xb2, 0x16,
+ 0x08, 0x5b, 0xe4, 0x97, 0xac, 0xe8, 0x54, 0x23, 0x1e, 0xbf, 0x4c, 0x86,
+ 0xaa, 0x64, 0xaf, 0x1a, 0x1d, 0x99, 0x91, 0x7a, 0x8d, 0x45, 0xb0, 0x98,
+ 0xbf, 0x46, 0x0a, 0xe0, 0x3c, 0x81, 0x7b, 0xdd, 0xc1, 0x88, 0x2c, 0x8a,
+ 0xeb, 0x64, 0xdc, 0x19, 0xce, 0x62, 0x95, 0xe1, 0xe5, 0xa7, 0x71, 0x7c,
+ 0xe6, 0xc3, 0x80, 0xa9, 0x17, 0x28, 0x9f, 0xda, 0x93, 0x50, 0x3b, 0x08,
+ 0xd1, 0x1a, 0x72, 0xa5, 0x41, 0xfb, 0xb0, 0x39, 0x1c, 0x8d, 0x03, 0xcf,
+ 0x51, 0x14, 0x93, 0x32, 0x5f, 0x2d, 0x88, 0xd1, 0x7a, 0xd2, 0x8c, 0x38,
+ 0xd1, 0x16, 0xf3, 0x89, 0x38, 0x0c, 0x02, 0xf4, 0x33, 0x3c, 0x06, 0x95,
+ 0x12, 0xc0, 0x6a, 0xb3, 0x3e, 0xec, 0x48, 0x78, 0x03, 0x44, 0x47, 0xa8,
+ 0xab, 0x0c, 0xfe, 0x2a, 0x2b, 0x32, 0x20, 0xe7, 0xa3, 0x50, 0xd6, 0xdd,
+ 0x7d, 0x48, 0x02, 0x35, 0xd6, 0xc0, 0xc9, 0x63, 0x4b, 0x4e, 0x6d, 0x67,
+ 0x0d, 0x8c, 0x0a, 0xa9, 0xc4, 0x29, 0x45, 0x7c, 0xdc, 0xc3, 0xa1, 0x0d,
+ 0x2d, 0x81, 0x82, 0xed, 0xb5, 0x94, 0xcd, 0x46, 0xe9, 0x6d, 0x4d, 0xcd,
+ 0xcf, 0x6c, 0x24, 0x70, 0x37, 0xda, 0x89, 0xe9, 0x81, 0x95, 0xba, 0xc7,
+ 0xb3, 0x34, 0x26, 0xdc, 0x34, 0x14, 0x49, 0xa0, 0x59, 0x2c, 0x84, 0x7b,
+ 0x95, 0xe8, 0xb1, 0x2b, 0x39, 0x6f, 0xda, 0xe9, 0x68, 0xd5, 0xa1, 0xa3,
+ 0x28, 0xa4, 0x22, 0x03, 0xce, 0x1a, 0x69, 0xb3, 0x84, 0x23, 0x79, 0x9f,
+ 0x59, 0x5a, 0xe7, 0x79, 0xfb, 0x7a, 0xd1, 0x72, 0xdb, 0x3c, 0x7d, 0xb2,
+ 0x6b, 0xa0, 0x08, 0xbc, 0x62, 0xa7, 0xc4, 0x1d, 0xae, 0x25, 0x49, 0x18,
+ 0xa1, 0x16, 0x1d, 0xe2, 0x1a, 0xa2, 0x25, 0xf6, 0x31, 0x35, 0xa8, 0x1d,
+ 0x2c, 0x6f, 0xae, 0x4d, 0x9f, 0x22, 0x48, 0x52, 0x2b, 0x76, 0x2e, 0x49,
+ 0x65, 0x65, 0xa2, 0xfe, 0x74, 0x90, 0xa4, 0x37, 0xd1, 0xc6, 0xef, 0xff,
+ 0x69, 0x4c, 0x25, 0xff, 0xfa, 0x79, 0xb6, 0xb1, 0x5e, 0x16, 0x9a, 0x0f,
+ 0x09, 0x1b, 0x04, 0x32, 0xbb, 0x4d, 0x80, 0xb3, 0x05, 0xd3, 0xfa, 0xcb,
+ 0xe4, 0x9a, 0x13, 0x4e, 0x15, 0x2e, 0x5d, 0x63, 0x0a, 0xea, 0x65, 0x44,
+ 0xaa, 0x5a, 0xe5, 0x8a, 0xb2, 0x0a, 0x60, 0x18, 0x80, 0xbe, 0x84, 0x51,
+ 0x82, 0x74, 0xa3, 0x4f, 0xd3, 0x2a, 0x21, 0x85, 0x18, 0x3e, 0xa0, 0xf4,
+ 0x8c, 0x91, 0x46, 0x7b, 0xa2, 0xb7, 0xa0, 0x2a, 0x32, 0x90, 0xb4, 0x29,
+ 0x4d, 0xc8, 0x56, 0xb1, 0x0c, 0xa4, 0x64, 0x0a, 0xf2, 0x15, 0xf5, 0x66,
+ 0xec, 0xf1, 0xb7, 0xa3, 0xcb, 0x1e, 0x53, 0x6e, 0x8f, 0xd2, 0xce, 0xb4,
+ 0x35, 0x9c, 0x7d, 0x97, 0x78, 0x3e, 0x5a, 0x08, 0x42, 0xcd, 0x49, 0xc0,
+ 0x4c, 0xa4, 0xa5, 0x18, 0xeb, 0xed, 0x4e, 0x89, 0x05, 0x51, 0x2c, 0x8d,
+ 0x69, 0xb3, 0x67, 0xaa, 0xae, 0x84, 0x62, 0x0a, 0x0d, 0x0a, 0x84, 0x49,
+ 0xb3, 0xd4, 0x68, 0x59, 0x33, 0x65, 0x3b, 0x57, 0x8c, 0x66, 0xbb, 0x49,
+ 0x8a, 0x19, 0xc7, 0xf9, 0x36, 0x53, 0x19, 0xcb, 0x72, 0x11, 0x0a, 0x36,
+ 0x77, 0x12, 0x26, 0x69, 0x07, 0x97, 0xa6, 0x4b, 0xda, 0xe8, 0xd6, 0xfb,
+ 0x27, 0x4c, 0x52, 0xab, 0xeb, 0xa6, 0x4b, 0xf2, 0x50, 0x62, 0x26, 0x03,
+ 0x54, 0xf6, 0xd7, 0xa2, 0xd8, 0x66, 0x8d, 0xf1, 0xae, 0x17, 0x03, 0x1b,
+ 0x02, 0xf2, 0x7e, 0xfe, 0xf2, 0xf4, 0xc4, 0xa4, 0xa5, 0xfd, 0xbf, 0xdb,
+ 0x3d, 0x1c, 0x4a, 0x31, 0xf4, 0x12, 0xa0, 0x18, 0x66, 0xcd, 0xc1, 0xcc,
+ 0x53, 0x1c, 0x36, 0xfd, 0xa8, 0x06, 0xc0, 0x76, 0xf2, 0xfa, 0x6f, 0x2f,
+ 0xdf, 0x9c, 0xbd, 0x7e, 0x75, 0xf2, 0xfa, 0xe2, 0x0b, 0x37, 0x92, 0xc9,
+ 0xc6, 0x80, 0x39, 0xc1, 0x58, 0x5e, 0xec, 0xaa, 0x06, 0x38, 0x48, 0xd4,
+ 0x45, 0x11, 0xc1, 0xe6, 0xcb, 0x5f, 0x3d, 0xb7, 0x39, 0xe7, 0x21, 0x75,
+ 0x3c, 0xe3, 0xbe, 0xcd, 0xd1, 0xcc, 0x3b, 0xc2, 0x60, 0x82, 0x1e, 0xbb,
+ 0xaa, 0x49, 0x05, 0xa1, 0x08, 0x35, 0x3c, 0x33, 0x18, 0xe4, 0x40, 0xd9,
+ 0x9c, 0xa5, 0x13, 0xa4, 0xac, 0x91, 0x43, 0xd6, 0x6b, 0x5c, 0x1b, 0x84,
+ 0xdd, 0xc8, 0xb7, 0x0c, 0xd6, 0x81, 0x9a, 0x6c, 0x68, 0x36, 0x5a, 0xe6,
+ 0x89, 0x24, 0x59, 0xea, 0x96, 0x30, 0x2f, 0xf5, 0x26, 0x61, 0x42, 0x72,
+ 0xee, 0x10, 0xb7, 0xe6, 0x2f, 0x3f, 0xdf, 0x8c, 0xe3, 0x71, 0x66, 0xf0,
+ 0x93, 0xda, 0x6a, 0x81, 0x22, 0x7e, 0x39, 0x44, 0x0d, 0xeb, 0x9b, 0x9f,
+ 0x0e, 0xf0, 0x58, 0xfc, 0xe2, 0x17, 0x91, 0x2c, 0x9d, 0x21, 0x88, 0x68,
+ 0xe1, 0x60, 0xfd, 0xe0, 0x41, 0x36, 0x4b, 0x49, 0x5e, 0xa4, 0x77, 0xe7,
+ 0x6f, 0xce, 0x7e, 0xfc, 0xfb, 0x47, 0xee, 0xc2, 0x89, 0xdf, 0xff, 0x09,
+ 0x13, 0xd7, 0xb4, 0xf1, 0x5f, 0x3e, 0x7a, 0x6f, 0xf5, 0xe6, 0xbb, 0x12,
+ 0x52, 0x48, 0x57, 0x4c, 0x40, 0x8b, 0x60, 0x4c, 0x43, 0x46, 0x31, 0xb5,
+ 0x19, 0xad, 0x91, 0x63, 0x4d, 0x33, 0x09, 0x35, 0x24, 0xc9, 0x95, 0x75,
+ 0xe2, 0x4c, 0x7c, 0x40, 0xd6, 0x1e, 0x83, 0xcb, 0xd9, 0x8c, 0x8b, 0xae,
+ 0x20, 0x2e, 0x22, 0xa4, 0x62, 0x97, 0x61, 0x17, 0x29, 0x8f, 0xcf, 0x2c,
+ 0xc8, 0xd1, 0xe9, 0xe9, 0x47, 0x5d, 0x05, 0xb8, 0xd8, 0xb1, 0xc6, 0x8b,
+ 0xb6, 0x15, 0x1b, 0xbd, 0x4a, 0x9e, 0x5e, 0x51, 0xcc, 0xf3, 0xf5, 0x99,
+ 0x8c, 0xe6, 0x90, 0x54, 0xba, 0xb8, 0x4c, 0x41, 0x11, 0xa3, 0x08, 0x1f,
+ 0x2d, 0x16, 0x8e, 0x03, 0x2b, 0xb7, 0x39, 0x81, 0xac, 0xfc, 0xc6, 0x8b,
+ 0x2c, 0xc7, 0x7b, 0x5c, 0x9e, 0x92, 0x80, 0x25, 0x5a, 0x4d, 0xc1, 0xd8,
+ 0xa1, 0xa4, 0xfd, 0xdc, 0xa0, 0xa1, 0x63, 0x48, 0x3b, 0xa7, 0xb3, 0xe1,
+ 0x35, 0x00, 0x03, 0xf1, 0x51, 0x64, 0x11, 0x15, 0x0d, 0x2e, 0x81, 0x22,
+ 0x2b, 0xdf, 0x13, 0x9e, 0x01, 0x1e, 0x4f, 0x52, 0x04, 0x14, 0xdf, 0x12,
+ 0x15, 0x35, 0x1a, 0x93, 0x00, 0xff, 0x5a, 0x88, 0x9b, 0xac, 0x0c, 0x8d,
+ 0x0e, 0x85, 0xa5, 0x84, 0x45, 0x28, 0x74, 0x63, 0xb0, 0x87, 0x29, 0xa9,
+ 0x01, 0xae, 0x48, 0xcd, 0x75, 0x8e, 0xcd, 0x2f, 0x0d, 0x04, 0x67, 0x1c,
+ 0x40, 0xb1, 0xee, 0x4a, 0xca, 0x2c, 0x3d, 0xc0, 0x5d, 0x57, 0x65, 0x3a,
+ 0x19, 0x87, 0x31, 0x04, 0x82, 0xac, 0x42, 0xd0, 0x2f, 0x4b, 0xc5, 0x05,
+ 0x50, 0x6a, 0xc5, 0xcd, 0x4a, 0x09, 0x22, 0x1a, 0x7d, 0x93, 0xbe, 0x69,
+ 0x58, 0x08, 0xd1, 0x89, 0x4c, 0xac, 0x71, 0x0e, 0xc6, 0xd5, 0x86, 0x4e,
+ 0x75, 0x4b, 0xbf, 0x66, 0xfd, 0x8c, 0x20, 0x60, 0x9b, 0x53, 0x51, 0x58,
+ 0x17, 0x09, 0xba, 0x8c, 0x6f, 0x99, 0xe1, 0x00, 0x25, 0xf2, 0xf6, 0xb8,
+ 0xd0, 0x2f, 0xfa, 0xcd, 0x7d, 0x9a, 0xb3, 0xa8, 0x96, 0x34, 0xab, 0x0a,
+ 0xf3, 0xef, 0x2a, 0x71, 0x45, 0xf1, 0xfb, 0x84, 0x76, 0x8d, 0xa7, 0xcb,
+ 0x19, 0x66, 0xec, 0xd7, 0x3f, 0xaa, 0x6a, 0x43, 0xe0, 0x7b, 0xf2, 0x3e,
+ 0x83, 0x44, 0x3f, 0x57, 0x1c, 0x8a, 0x33, 0xae, 0x3d, 0x6d, 0x86, 0x49,
+ 0xaa, 0x18, 0x0f, 0x92, 0x85, 0x6e, 0x45, 0xed, 0x4f, 0x5b, 0xd2, 0x2e,
+ 0x39, 0xdc, 0x46, 0xa9, 0x9e, 0xc9, 0x5e, 0xe8, 0xbe, 0x86, 0xe8, 0xa7,
+ 0x00, 0x19, 0xd6, 0x43, 0x48, 0x3e, 0x53, 0x0f, 0x45, 0x8b, 0xf2, 0x76,
+ 0x04, 0xe1, 0x83, 0x92, 0x2e, 0x4d, 0x3a, 0x98, 0x9c, 0x20, 0x02, 0xb6,
+ 0x19, 0x28, 0xbe, 0x97, 0x71, 0x81, 0xc3, 0x35, 0x37, 0xc9, 0xcb, 0x50,
+ 0x15, 0xb3, 0x01, 0x26, 0x3f, 0x01, 0xc7, 0x68, 0x49, 0xf3, 0xb4, 0x03,
+ 0x52, 0x17, 0xae, 0x04, 0x4b, 0xa2, 0x51, 0x00, 0x31, 0xb3, 0x88, 0xed,
+ 0x51, 0x9a, 0x08, 0x06, 0x43, 0xe6, 0x8c, 0xc6, 0x15, 0x30, 0x20, 0x73,
+ 0xc4, 0x2d, 0x9e, 0x2c, 0x2d, 0x1d, 0x5e, 0xa4, 0x92, 0x95, 0x21, 0xb6,
+ 0x9e, 0x44, 0x59, 0x31, 0xde, 0x81, 0x07, 0x51, 0xd4, 0x39, 0x38, 0xd8,
+ 0xed, 0x98, 0x50, 0xfa, 0x26, 0x81, 0x13, 0x10, 0x4f, 0x89, 0x0f, 0xed,
+ 0xe0, 0x63, 0x9c, 0x37, 0x90, 0xa2, 0xcf, 0x96, 0xb8, 0x08, 0xf5, 0xe4,
+ 0xb0, 0xd1, 0xf3, 0xf3, 0x67, 0x47, 0x17, 0x47, 0xd1, 0x21, 0x50, 0xd5,
+ 0x37, 0x3e, 0x70, 0x9a, 0xc5, 0x5e, 0x6d, 0xf8, 0xeb, 0x15, 0x2c, 0x9e,
+ 0xdc, 0xff, 0x55, 0x71, 0x27, 0x36, 0xe5, 0x71, 0x26, 0xc0, 0x0e, 0x57,
+ 0xb9, 0x07, 0x4d, 0x66, 0xc0, 0xee, 0x7b, 0x8a, 0x0f, 0x3c, 0x2f, 0xb2,
+ 0x29, 0x22, 0x19, 0xe1, 0xc3, 0xb6, 0x69, 0x9c, 0x2e, 0x32, 0xa7, 0xc5,
+ 0xac, 0xc6, 0x61, 0x8f, 0xcf, 0x4e, 0xdf, 0xbe, 0x7a, 0xdd, 0x8f, 0x0e,
+ 0x11, 0xb8, 0x97, 0x8c, 0x39, 0x37, 0xd9, 0xc8, 0xaf, 0x1f, 0xc1, 0xfc,
+ 0xb0, 0xdb, 0xa8, 0x26, 0x60, 0xb5, 0x5c, 0x93, 0xd7, 0x5e, 0xd6, 0xb4,
+ 0xa3, 0x36, 0x78, 0x2b, 0xd3, 0x19, 0xf7, 0xa6, 0xf1, 0x0e, 0xd8, 0x7a,
+ 0x22, 0xc0, 0xf3, 0xa8, 0x6e, 0x02, 0x91, 0x5f, 0x22, 0x0d, 0xc4, 0x83,
+ 0xa4, 0x90, 0xfc, 0xcb, 0x9b, 0x59, 0x00, 0x7a, 0x98, 0x64, 0x71, 0x1c,
+ 0x9e, 0x53, 0x18, 0x80, 0x6b, 0x0d, 0x80, 0x10, 0xb8, 0x60, 0x6c, 0x3a,
+ 0xa4, 0x4b, 0x29, 0x90, 0x46, 0x3c, 0xf6, 0xa6, 0x56, 0xb9, 0xe7, 0x18,
+ 0xce, 0xd7, 0xbb, 0xe3, 0xa3, 0x77, 0xdf, 0xbd, 0x7d, 0xfd, 0xec, 0xf4,
+ 0x24, 0x5c, 0xb1, 0x41, 0xd7, 0xa0, 0x36, 0x41, 0x91, 0xa3, 0x40, 0xe2,
+ 0x4c, 0x50, 0x23, 0x62, 0x7d, 0xb1, 0xd1, 0xee, 0x8b, 0xb3, 0x57, 0x27,
+ 0x41, 0x52, 0xd0, 0x16, 0xc5, 0xc7, 0xc8, 0xf6, 0x20, 0xb3, 0x63, 0x34,
+ 0x19, 0xb8, 0x19, 0x86, 0xef, 0x4b, 0x5d, 0x1f, 0xa6, 0x08, 0x8e, 0x1c,
+ 0xc9, 0x3c, 0x00, 0x8e, 0x0c, 0xc3, 0x47, 0x68, 0xd7, 0x1b, 0x54, 0x61,
+ 0xd6, 0x27, 0x23, 0x61, 0xb9, 0xca, 0x66, 0x0b, 0xc6, 0x72, 0xa7, 0xd6,
+ 0xa3, 0x1f, 0x9f, 0x7d, 0xff, 0xee, 0xf8, 0xec, 0x75, 0xf3, 0xb8, 0x3e,
+ 0x7f, 0xf9, 0x3d, 0x0d, 0xbd, 0x31, 0x9b, 0x7e, 0xff, 0xf4, 0xdd, 0x77,
+ 0x47, 0xc7, 0x7f, 0x39, 0x79, 0xfd, 0x2c, 0x3a, 0x74, 0x12, 0x7a, 0x03,
+ 0x93, 0x5b, 0x85, 0x86, 0xd0, 0xd1, 0x4c, 0xe2, 0x8e, 0x05, 0xa1, 0x17,
+ 0x47, 0x6d, 0xd6, 0xbc, 0x7c, 0x39, 0x5b, 0xd6, 0x20, 0x04, 0xb8, 0xcd,
+ 0x10, 0x64, 0x01, 0x25, 0x4c, 0x63, 0x7c, 0x8a, 0x33, 0x24, 0xd1, 0x69,
+ 0x97, 0xe1, 0x64, 0xd9, 0xd5, 0x16, 0x79, 0x3f, 0x35, 0x3e, 0x83, 0xd6,
+ 0x64, 0x9a, 0x00, 0x41, 0x3b, 0xf6, 0x61, 0xed, 0x3c, 0x52, 0x19, 0xe8,
+ 0xc6, 0x00, 0x6b, 0x93, 0xd1, 0xfa, 0x3a, 0x7f, 0x4f, 0xd0, 0x7f, 0x8a,
+ 0x2c, 0x4d, 0xcd, 0x86, 0x60, 0x4b, 0x04, 0xef, 0x30, 0xb1, 0xb3, 0x76,
+ 0xcf, 0x86, 0x05, 0xe9, 0x66, 0xd1, 0xb0, 0x4a, 0xee, 0x2c, 0x48, 0x6b,
+ 0x18, 0xad, 0x3a, 0x9c, 0xe7, 0x6b, 0x86, 0x2b, 0xf7, 0xc4, 0x26, 0xce,
+ 0x3b, 0x76, 0xe6, 0xbd, 0x75, 0x00, 0x0b, 0x93, 0x14, 0x65, 0x39, 0xe9,
+ 0x46, 0x97, 0xb3, 0x45, 0x35, 0x01, 0xbe, 0x75, 0x59, 0xbe, 0xcf, 0xbc,
+ 0x8c, 0x19, 0x60, 0x06, 0x23, 0xfa, 0x76, 0x56, 0xc2, 0x3f, 0xf9, 0x1c,
+ 0x1a, 0xc0, 0x77, 0x8a, 0x45, 0x49, 0x9f, 0x96, 0xc0, 0x24, 0x66, 0xb3,
+ 0x94, 0xb0, 0xb2, 0x31, 0x21, 0x97, 0xed, 0xf5, 0xb8, 0x8b, 0x70, 0xa6,
+ 0xf2, 0x89, 0x97, 0xdd, 0x0c, 0x2f, 0x9b, 0x01, 0x2f, 0x3b, 0x42, 0x4c,
+ 0xda, 0xe2, 0x6c, 0xc4, 0xff, 0xe8, 0x60, 0x36, 0xd9, 0xa6, 0x53, 0x15,
+ 0x84, 0xb9, 0x2b, 0x2f, 0x71, 0x93, 0x93, 0x90, 0xa1, 0xb3, 0x17, 0x9d,
+ 0x22, 0xee, 0x86, 0x24, 0x1d, 0x18, 0x60, 0x28, 0x8e, 0x97, 0x10, 0xa5,
+ 0x53, 0x54, 0xd2, 0x9e, 0x73, 0xc4, 0x7d, 0x48, 0x1c, 0x39, 0x59, 0x7a,
+ 0x92, 0xd8, 0xc0, 0xc5, 0x98, 0xb3, 0xa4, 0x09, 0x9a, 0xf9, 0xfd, 0xf5,
+ 0xf4, 0xec, 0xfb, 0x67, 0x2f, 0xdf, 0xd0, 0x14, 0x9d, 0xda, 0x25, 0xa1,
+ 0xd9, 0x86, 0x0e, 0x55, 0x1d, 0xfa, 0xa1, 0x6b, 0x60, 0xcb, 0xab, 0x86,
+ 0x98, 0xd7, 0xc4, 0xef, 0x76, 0xf4, 0xc3, 0x44, 0xc2, 0x74, 0x9d, 0x65,
+ 0xaa, 0x53, 0x18, 0x72, 0xe3, 0xd1, 0x02, 0x63, 0xe1, 0xff, 0x31, 0xc9,
+ 0x2f, 0xcb, 0x40, 0x74, 0x26, 0x9f, 0x5c, 0xd3, 0x40, 0xd7, 0x80, 0x48,
+ 0xb2, 0xf9, 0x84, 0xe9, 0x0b, 0xff, 0x1d, 0x49, 0xe2, 0x2a, 0xaf, 0x27,
+ 0x82, 0x7c, 0x86, 0xbc, 0xe3, 0x4e, 0x08, 0x56, 0x36, 0x8a, 0x36, 0x81,
+ 0xfe, 0xaf, 0xd2, 0xdb, 0xad, 0x5e, 0xf4, 0x8c, 0xae, 0xdc, 0xd4, 0x29,
+ 0xf6, 0x59, 0xa6, 0x8a, 0x60, 0xf0, 0xff, 0x2d, 0xee, 0xda, 0x7a, 0xdb,
+ 0x56, 0x8e, 0xf0, 0xbb, 0x7e, 0x05, 0x11, 0x14, 0x68, 0x0e, 0xe0, 0xab,
+ 0x2c, 0xc9, 0x52, 0x1e, 0x1a, 0x38, 0xb6, 0x4e, 0x6c, 0x9c, 0x24, 0x36,
+ 0x44, 0x25, 0x4e, 0x81, 0x02, 0x05, 0x6d, 0xd1, 0x32, 0x1b, 0x99, 0xf2,
+ 0xa1, 0xa4, 0x63, 0x3b, 0xbf, 0xbe, 0x3b, 0xf3, 0xcd, 0xec, 0x0e, 0xb9,
+ 0x54, 0xda, 0x93, 0x3e, 0xf4, 0xc5, 0xb0, 0x69, 0x72, 0x97, 0xbb, 0x9c,
+ 0x9d, 0xfb, 0x7c, 0xa3, 0xd1, 0xdc, 0xdb, 0x58, 0x50, 0x3a, 0xbb, 0x81,
+ 0xf8, 0x3e, 0x83, 0x2e, 0xec, 0x25, 0xd7, 0x04, 0x55, 0x8a, 0xcd, 0xbb,
+ 0x71, 0x02, 0x81, 0x5b, 0xe1, 0xb6, 0x40, 0x13, 0xa4, 0xe7, 0xe3, 0x0f,
+ 0x1f, 0x18, 0x01, 0x6b, 0x06, 0x6c, 0xd6, 0x2f, 0x1f, 0xd3, 0xa4, 0xce,
+ 0x8d, 0xdd, 0xde, 0xcd, 0x72, 0xc6, 0x21, 0x2d, 0xee, 0x3c, 0x34, 0xf7,
+ 0xd9, 0xe9, 0x07, 0x52, 0xc5, 0x33, 0x42, 0x75, 0x2b, 0x9e, 0x5f, 0x45,
+ 0xfd, 0x0d, 0x73, 0x8b, 0xa8, 0x4a, 0x1c, 0xf5, 0x74, 0x3c, 0x99, 0xfe,
+ 0x53, 0x29, 0xe0, 0xcf, 0x4a, 0x1e, 0xae, 0x99, 0x69, 0x48, 0x1e, 0x3f,
+ 0x28, 0xb9, 0x52, 0xda, 0x9b, 0x42, 0xfd, 0x8c, 0x40, 0x73, 0xc3, 0xfe,
+ 0x36, 0xfe, 0xbb, 0xa3, 0x56, 0x0c, 0xeb, 0x9b, 0xc2, 0xfc, 0xad, 0x1d,
+ 0x33, 0x0d, 0x5e, 0x87, 0x6d, 0xb6, 0x46, 0x28, 0x68, 0x12, 0xa4, 0x4b,
+ 0x29, 0xb2, 0x8a, 0xd5, 0x39, 0xf6, 0xdd, 0x49, 0xb7, 0x64, 0x42, 0x02,
+ 0x14, 0x60, 0x57, 0x92, 0x78, 0x81, 0x4c, 0x24, 0xbd, 0x99, 0x0a, 0x83,
+ 0xb9, 0x48, 0xea, 0x9e, 0xc1, 0xea, 0x98, 0xdf, 0xc6, 0x96, 0x1c, 0x40,
+ 0x70, 0x00, 0xec, 0x46, 0x76, 0x5d, 0xb6, 0x78, 0xf9, 0x0e, 0x85, 0x90,
+ 0x66, 0x71, 0xac, 0xe9, 0x8e, 0xcc, 0x54, 0x37, 0x20, 0x61, 0x9c, 0x21,
+ 0x20, 0x82, 0x8f, 0x5b, 0xe6, 0x91, 0xe9, 0x05, 0xe8, 0x7b, 0x1e, 0x02,
+ 0x14, 0x41, 0xd8, 0x08, 0xda, 0x82, 0xe1, 0x9a, 0x3a, 0xd3, 0x3a, 0xf5,
+ 0xe8, 0x9b, 0xb8, 0xc7, 0x9f, 0x02, 0xe5, 0xa1, 0x94, 0x79, 0x11, 0x77,
+ 0xa7, 0x79, 0xa2, 0x61, 0x2c, 0x58, 0xc6, 0x9b, 0xe4, 0xd2, 0xb1, 0x53,
+ 0xb7, 0xf9, 0x0c, 0xc0, 0x45, 0x3a, 0x91, 0x63, 0xa3, 0xef, 0x96, 0xa4,
+ 0x07, 0xf3, 0xc5, 0xe4, 0x7d, 0xb9, 0xe1, 0x5e, 0xd0, 0xc9, 0xa7, 0x34,
+ 0x6d, 0xc1, 0x1d, 0x24, 0xfe, 0xea, 0x6e, 0x34, 0x1e, 0xa3, 0x74, 0x3c,
+ 0x71, 0x06, 0x0e, 0xbe, 0xe2, 0xff, 0x43, 0x4b, 0x65, 0x2d, 0x6c, 0x47,
+ 0x95, 0xd5, 0x9d, 0x30, 0x3a, 0x6b, 0xaa, 0x28, 0xbb, 0x84, 0xae, 0x9a,
+ 0xc4, 0x0a, 0x5f, 0x43, 0xd9, 0xd3, 0x16, 0x09, 0x7c, 0x0e, 0x5e, 0xfd,
+ 0xc5, 0xac, 0xed, 0x1f, 0x27, 0x8f, 0x28, 0x0a, 0x22, 0x2e, 0x72, 0x46,
+ 0x10, 0x87, 0x61, 0x0b, 0x9a, 0xcc, 0x79, 0x9b, 0x78, 0x09, 0x0c, 0xde,
+ 0x37, 0xbc, 0x86, 0x2a, 0xdc, 0xd8, 0x13, 0x56, 0xa6, 0x74, 0x5b, 0x44,
+ 0x6c, 0xc4, 0x38, 0xac, 0x64, 0xdc, 0xd7, 0x45, 0x88, 0x36, 0xfb, 0x80,
+ 0xa7, 0xc3, 0xfd, 0x9c, 0x5e, 0x3a, 0xad, 0xdc, 0xfd, 0x32, 0xfe, 0xf5,
+ 0xe2, 0x6b, 0xf0, 0x82, 0x4e, 0x83, 0x8b, 0x05, 0x65, 0xfb, 0x51, 0x8b,
+ 0x25, 0x81, 0xe7, 0x35, 0x8e, 0x1b, 0x96, 0x35, 0xc5, 0x33, 0x92, 0x5a,
+ 0x00, 0x07, 0xea, 0x01, 0x10, 0xea, 0x7a, 0xf6, 0xf3, 0x4b, 0x80, 0xf5,
+ 0x08, 0x5b, 0x44, 0xcb, 0xb7, 0xfe, 0x1b, 0x56, 0xc2, 0xad, 0xd3, 0x69,
+ 0xdd, 0x7c, 0x29, 0xb7, 0x40, 0xb1, 0xb7, 0xe4, 0x02, 0x39, 0xcb, 0x3b,
+ 0x46, 0x4f, 0x87, 0x4d, 0x96, 0x99, 0x36, 0x40, 0x4e, 0x69, 0xdb, 0x31,
+ 0x03, 0x29, 0x37, 0x5a, 0xbb, 0x83, 0xb7, 0x06, 0x43, 0xd2, 0x9c, 0xeb,
+ 0x86, 0xd1, 0xcb, 0x58, 0x71, 0x7e, 0x98, 0xfa, 0x22, 0x64, 0xe5, 0x62,
+ 0x3d, 0x72, 0xae, 0x2b, 0x45, 0x92, 0x56, 0x6f, 0x6a, 0x2e, 0x4c, 0xb7,
+ 0x45, 0xad, 0x98, 0x9f, 0x00, 0xcc, 0x63, 0x0f, 0x7a, 0x73, 0x76, 0x9e,
+ 0x55, 0xbf, 0x20, 0xdc, 0x5b, 0x9a, 0xde, 0xda, 0x52, 0x02, 0x46, 0x9b,
+ 0x2f, 0xc7, 0xa5, 0xee, 0x3c, 0x5d, 0xfd, 0x60, 0xea, 0x78, 0xe5, 0x11,
+ 0xcc, 0x12, 0xe1, 0x75, 0xac, 0x7a, 0x3f, 0x1a, 0x83, 0x1c, 0xdb, 0xbf,
+ 0x6f, 0x0a, 0xc7, 0xbe, 0x73, 0x24, 0x42, 0xee, 0xee, 0xe2, 0xa1, 0xc6,
+ 0x18, 0xd9, 0x4f, 0x0d, 0x92, 0xd5, 0x47, 0xe9, 0xff, 0xcc, 0x20, 0xfd,
+ 0xc6, 0x18, 0xf7, 0x3f, 0x35, 0xc8, 0xae, 0xba, 0xba, 0x3a, 0x9d, 0xf1,
+ 0xd7, 0x8b, 0xa9, 0x33, 0x68, 0xcf, 0x6a, 0x67, 0xa6, 0x12, 0x8e, 0x42,
+ 0x6a, 0x74, 0xe9, 0x28, 0xcf, 0x3d, 0x3a, 0x2b, 0xee, 0x58, 0x01, 0x5b,
+ 0x4b, 0xd9, 0x04, 0x85, 0xe2, 0x56, 0x0a, 0x9e, 0x58, 0x54, 0x68, 0xdf,
+ 0x44, 0x09, 0xd3, 0x1c, 0x8b, 0x31, 0x08, 0xc0, 0xa6, 0xe2, 0x79, 0x15,
+ 0x50, 0x33, 0x50, 0xbb, 0x88, 0x16, 0xe3, 0x7e, 0xc4, 0x12, 0x08, 0xa7,
+ 0x0c, 0x8d, 0xb7, 0x56, 0x7f, 0x53, 0xc1, 0xe0, 0xc8, 0x9e, 0x99, 0x31,
+ 0x07, 0xa1, 0x38, 0x08, 0x37, 0x6e, 0x00, 0x30, 0x22, 0x5b, 0x68, 0x33,
+ 0x90, 0x6d, 0xa0, 0xd5, 0x03, 0x11, 0xbe, 0x48, 0x0e, 0x54, 0x2c, 0x8f,
+ 0xd0, 0x83, 0x2e, 0xe0, 0x7f, 0xd4, 0xe0, 0xb0, 0xb3, 0x5b, 0xb7, 0x14,
+ 0x6d, 0xa0, 0x15, 0x9b, 0x05, 0x04, 0x30, 0x5a, 0x6d, 0x9a, 0x39, 0x12,
+ 0x87, 0x22, 0x20, 0xca, 0xda, 0xd1, 0xe2, 0x43, 0x25, 0x12, 0x8c, 0x14,
+ 0xcf, 0x99, 0x22, 0x42, 0x6a, 0x50, 0x6a, 0x55, 0x03, 0x22, 0x8c, 0x14,
+ 0x6b, 0x3f, 0x84, 0x9f, 0xa7, 0x2b, 0x56, 0x66, 0x56, 0x2c, 0xa0, 0xae,
+ 0x4b, 0x05, 0x70, 0xf1, 0xdd, 0xa8, 0x1b, 0x47, 0xde, 0x97, 0xed, 0xb6,
+ 0x7a, 0xc1, 0x69, 0xe7, 0x33, 0x1c, 0xc1, 0xd5, 0x4b, 0xb9, 0xce, 0x9e,
+ 0x59, 0x11, 0x26, 0xb6, 0x22, 0x2d, 0xb7, 0xc2, 0x93, 0x3d, 0xad, 0xc3,
+ 0xf3, 0x8d, 0xbd, 0x88, 0x37, 0x69, 0x78, 0x53, 0xc3, 0xd7, 0x21, 0xb1,
+ 0x41, 0x21, 0x9f, 0x45, 0x27, 0x2d, 0x2a, 0x86, 0x16, 0xdc, 0xed, 0xb4,
+ 0x14, 0xff, 0xf8, 0x49, 0x15, 0x3f, 0x7a, 0x89, 0x54, 0xa6, 0xfc, 0x99,
+ 0x64, 0x4d, 0xc1, 0xa9, 0xfc, 0xda, 0x43, 0x88, 0x34, 0x54, 0xde, 0x2f,
+ 0xe9, 0x9b, 0xdb, 0xf0, 0xd7, 0x59, 0x30, 0x55, 0x55, 0x89, 0x66, 0x4b,
+ 0xde, 0x40, 0xb4, 0x9d, 0x70, 0xfb, 0x76, 0x93, 0x11, 0x74, 0x3d, 0x43,
+ 0xba, 0x66, 0x25, 0x9c, 0x17, 0xfa, 0x05, 0xda, 0xe1, 0x26, 0xc3, 0x26,
+ 0xf4, 0xc5, 0x6e, 0xf7, 0xde, 0x6e, 0x01, 0x4b, 0xb4, 0xbc, 0x0c, 0xae,
+ 0x3b, 0x09, 0x0b, 0x91, 0xc3, 0xf0, 0xd6, 0xdf, 0xcd, 0x29, 0x28, 0xf1,
+ 0x26, 0xac, 0x1a, 0x49, 0x4d, 0x03, 0x3b, 0x0b, 0x1e, 0xd4, 0x79, 0xd0,
+ 0x2b, 0x2a, 0x4c, 0x63, 0xf3, 0xf0, 0xc2, 0x3c, 0x37, 0xf9, 0x7f, 0x31,
+ 0xcb, 0x71, 0x93, 0x5e, 0x4c, 0x8a, 0x1f, 0x4f, 0xe3, 0xef, 0x1c, 0x4a,
+ 0xc0, 0x3b, 0x27, 0x1c, 0x4f, 0x89, 0x47, 0x54, 0xf9, 0xe3, 0x42, 0x16,
+ 0x2c, 0x57, 0x38, 0x03, 0x9d, 0x83, 0xd6, 0x70, 0xb4, 0xf8, 0xb7, 0x71,
+ 0xb6, 0xbc, 0x8d, 0xad, 0x8d, 0x64, 0x5e, 0x27, 0x01, 0xe0, 0x98, 0xa5,
+ 0xe6, 0x02, 0x85, 0x27, 0x43, 0x0c, 0x86, 0x4b, 0x54, 0xa1, 0xee, 0x84,
+ 0xe2, 0xd2, 0xff, 0xad, 0x4f, 0xc4, 0x40, 0x85, 0x70, 0xab, 0x1b, 0xaf,
+ 0x01, 0xed, 0xd8, 0xa6, 0x02, 0x0e, 0x70, 0xb0, 0xc1, 0x18, 0x77, 0x26,
+ 0x2b, 0xa5, 0xcb, 0x52, 0x45, 0x65, 0x77, 0x7b, 0xc9, 0xc7, 0x65, 0x54,
+ 0xb9, 0xbc, 0xbc, 0x5b, 0x0b, 0xc2, 0x38, 0xd5, 0xf5, 0x62, 0x7b, 0x9c,
+ 0xb5, 0x3d, 0x17, 0x1d, 0xdb, 0xf4, 0xdf, 0x24, 0xca, 0xf7, 0x01, 0x6c,
+ 0xc7, 0x6f, 0xd8, 0x57, 0x5c, 0xb6, 0xbc, 0x5d, 0xb3, 0x66, 0xfe, 0xf0,
+ 0xc0, 0xef, 0x03, 0x2f, 0x8b, 0x8a, 0xb2, 0xf9, 0x5b, 0x38, 0x63, 0x8a,
+ 0xbb, 0x2e, 0x3e, 0x65, 0xcc, 0xc9, 0xbc, 0xa5, 0x1c, 0x22, 0x41, 0xfa,
+ 0xa5, 0x48, 0x9b, 0x8d, 0xbd, 0xdf, 0x5c, 0x53, 0x95, 0x21, 0xc1, 0x04,
+ 0xc5, 0xfa, 0x00, 0x92, 0x12, 0xb9, 0xb9, 0xc3, 0x01, 0x52, 0xcf, 0xa8,
+ 0x91, 0x25, 0xcd, 0x90, 0x29, 0x54, 0x29, 0xbe, 0x25, 0xee, 0x4f, 0x5d,
+ 0xb5, 0x8c, 0xfd, 0x18, 0x7a, 0x23, 0x98, 0xf5, 0x1c, 0xfa, 0xf5, 0x3c,
+ 0x31, 0xa5, 0x5c, 0x9d, 0xa4, 0xa9, 0xd2, 0xc9, 0x69, 0x0b, 0x49, 0xa8,
+ 0x17, 0x79, 0xf1, 0xe2, 0x1b, 0x26, 0xc5, 0x3c, 0x55, 0x06, 0x69, 0x94,
+ 0x2b, 0x1c, 0x82, 0xd9, 0x9d, 0x01, 0x3d, 0xbc, 0x7d, 0xb9, 0x4f, 0xb5,
+ 0x4d, 0x04, 0x94, 0x78, 0xa3, 0xd9, 0x41, 0xbb, 0x81, 0x8c, 0x3c, 0x65,
+ 0xda, 0x66, 0x06, 0xe8, 0xd5, 0xfc, 0x2d, 0x72, 0x78, 0x3a, 0x8e, 0x44,
+ 0x8c, 0xcc, 0xbc, 0xc8, 0x51, 0xbc, 0xe8, 0x2f, 0x58, 0xd4, 0xce, 0xff,
+ 0xb4, 0xe8, 0x2f, 0x2d, 0x8b, 0xee, 0x35, 0xe6, 0xea, 0x76, 0x8f, 0x05,
+ 0x03, 0xa9, 0xb6, 0xc1, 0xe0, 0x18, 0x98, 0x0d, 0x2b, 0x76, 0x37, 0xee,
+ 0x6a, 0xf3, 0xf5, 0xc8, 0x13, 0x1f, 0x4e, 0xaf, 0x99, 0xaa, 0xef, 0xa7,
+ 0xba, 0xcd, 0x4a, 0x1a, 0x8f, 0xd4, 0x37, 0x30, 0x9f, 0x98, 0xf9, 0x69,
+ 0x80, 0x8c, 0x82, 0x1e, 0x4f, 0x54, 0xd5, 0xb6, 0xa5, 0x12, 0x45, 0x5f,
+ 0xc3, 0xcc, 0x33, 0xf0, 0xb1, 0xe9, 0xfd, 0xae, 0xe6, 0xc6, 0x9f, 0x30,
+ 0x93, 0x5e, 0xe4, 0x0f, 0x4c, 0x9a, 0xf0, 0x05, 0x04, 0xed, 0x18, 0x98,
+ 0x9e, 0x77, 0x55, 0xc6, 0x2d, 0xc5, 0x17, 0xd9, 0x4b, 0x4b, 0x4f, 0x27,
+ 0xc9, 0x9a, 0xa2, 0xe8, 0x10, 0x77, 0x00, 0x9d, 0xe7, 0x25, 0x45, 0x41,
+ 0x58, 0x25, 0x11, 0xbf, 0x24, 0x79, 0x36, 0x39, 0x65, 0xfe, 0xce, 0xa7,
+ 0x2c, 0xc9, 0xac, 0x11, 0xbe, 0x38, 0x65, 0x40, 0xac, 0x9b, 0x08, 0x2d,
+ 0xed, 0xbd, 0xe8, 0x0e, 0x8f, 0xc3, 0xbe, 0xf9, 0x6d, 0x22, 0x9b, 0x1d,
+ 0xcd, 0x10, 0xec, 0xe6, 0x09, 0x3b, 0x31, 0x89, 0xa0, 0x5a, 0x71, 0x1d,
+ 0xd1, 0xa5, 0x3c, 0x1c, 0x66, 0x01, 0x43, 0xbe, 0x22, 0x6e, 0x27, 0x5d,
+ 0x85, 0xf7, 0x9c, 0x81, 0x49, 0x0a, 0x0a, 0xda, 0x14, 0x4b, 0x98, 0x11,
+ 0x56, 0x7b, 0x16, 0xd2, 0xe5, 0xea, 0xa4, 0x3b, 0x6a, 0x79, 0x57, 0x2d,
+ 0x5f, 0xd9, 0x17, 0x46, 0x1b, 0x7a, 0xcd, 0x68, 0x4e, 0x53, 0x9e, 0x4c,
+ 0xc6, 0xd3, 0x09, 0x27, 0x7d, 0x13, 0x0b, 0x88, 0x6c, 0xed, 0xac, 0xfa,
+ 0xc5, 0x77, 0x43, 0x11, 0x7e, 0x16, 0x54, 0x94, 0xc0, 0x22, 0xd0, 0x28,
+ 0xcb, 0x7f, 0x71, 0xfc, 0xa9, 0xcf, 0xf9, 0xa2, 0x5c, 0x6c, 0x79, 0xc8,
+ 0x07, 0xad, 0xb7, 0xf0, 0xea, 0x76, 0x43, 0x45, 0xd3, 0x23, 0x7d, 0x13,
+ 0x10, 0xa5, 0x20, 0x31, 0xec, 0x49, 0x75, 0x8a, 0xa2, 0xf7, 0x90, 0xce,
+ 0xa3, 0x8a, 0x06, 0x0a, 0xf5, 0x96, 0x55, 0x9b, 0x34, 0xf6, 0xf5, 0xc0,
+ 0xa2, 0x1b, 0x68, 0x2d, 0xb0, 0xe9, 0xd8, 0x85, 0x22, 0x77, 0xc3, 0x43,
+ 0xd1, 0x17, 0xb7, 0x77, 0x70, 0x10, 0x17, 0xf9, 0x67, 0x37, 0x8e, 0xad,
+ 0x8a, 0xa2, 0x27, 0x28, 0x5c, 0x40, 0xe6, 0xe1, 0xef, 0xc5, 0xaa, 0xee,
+ 0x8a, 0xec, 0x9e, 0xdd, 0x5d, 0xda, 0xad, 0xd8, 0xb8, 0xe9, 0x82, 0xc3,
+ 0x5c, 0x33, 0x24, 0x98, 0xec, 0x57, 0x83, 0xb1, 0x00, 0x2e, 0x0c, 0x05,
+ 0x54, 0xc1, 0xf1, 0xc8, 0x0e, 0x3c, 0xc9, 0xb0, 0x8a, 0xde, 0x2a, 0xe2,
+ 0xde, 0xdd, 0x70, 0xe2, 0x2d, 0x1b, 0x49, 0xa7, 0x97, 0x13, 0x21, 0xb0,
+ 0x58, 0x3a, 0x73, 0xbd, 0x03, 0xdd, 0xe0, 0x15, 0xe7, 0x9d, 0x96, 0x06,
+ 0x15, 0x7c, 0x52, 0x68, 0x5c, 0xdf, 0x7e, 0xd6, 0xcc, 0x8a, 0xf3, 0x3f,
+ 0x21, 0xe0, 0x38, 0x59, 0xdb, 0x17, 0x01, 0xc5, 0xd4, 0x86, 0xc4, 0x7a,
+ 0x2a, 0xcd, 0x43, 0x38, 0x64, 0x97, 0x38, 0xbd, 0x00, 0x81, 0x24, 0x1a,
+ 0x12, 0x38, 0x48, 0x6a, 0x68, 0x2c, 0x0e, 0x0a, 0x2d, 0xa2, 0x8b, 0xe8,
+ 0x10, 0x07, 0xe8, 0x32, 0xf4, 0x9c, 0x06, 0x7f, 0x97, 0x45, 0x7a, 0x83,
+ 0x9c, 0x2e, 0x73, 0x4a, 0x15, 0x7a, 0x32, 0x4b, 0x55, 0x52, 0x86, 0xec,
+ 0x82, 0xdb, 0xdd, 0x48, 0x7c, 0x58, 0xdb, 0xc0, 0xda, 0x2c, 0x41, 0xfd,
+ 0x36, 0x32, 0xff, 0xea, 0x72, 0x32, 0x4d, 0xbc, 0xc8, 0xe7, 0x99, 0xf9,
+ 0x52, 0xe3, 0xf0, 0x10, 0x14, 0x00, 0x7b, 0x6f, 0x02, 0xee, 0x4e, 0x94,
+ 0xe2, 0x21, 0xa6, 0xc2, 0xba, 0x31, 0xc4, 0x0e, 0x47, 0xed, 0x66, 0x4b,
+ 0xb8, 0x50, 0x03, 0xa3, 0x11, 0x2f, 0x32, 0x4b, 0x99, 0x6d, 0xed, 0x8f,
+ 0x02, 0xb0, 0xf4, 0xd1, 0x61, 0x0b, 0x9f, 0x20, 0x71, 0x30, 0x19, 0xa7,
+ 0x53, 0xec, 0x18, 0xfd, 0x16, 0xbd, 0x37, 0x70, 0x6b, 0xe5, 0x62, 0x64,
+ 0xbf, 0x78, 0xca, 0xa0, 0xf2, 0x31, 0xf2, 0x60, 0xd3, 0xf8, 0x1e, 0xe0,
+ 0xd7, 0xec, 0xd8, 0x91, 0xa9, 0x5a, 0x64, 0x8e, 0x29, 0x74, 0xc2, 0x87,
+ 0x9b, 0x2f, 0xbc, 0x92, 0x49, 0x5e, 0x39, 0xb5, 0x4c, 0x0e, 0xc4, 0xb2,
+ 0xfa, 0x66, 0x86, 0xe8, 0x19, 0x36, 0x41, 0x62, 0x4a, 0x46, 0xb8, 0x00,
+ 0x66, 0xf2, 0x82, 0x2f, 0xee, 0x2a, 0xad, 0xb0, 0xac, 0x00, 0x55, 0xe0,
+ 0xbe, 0x30, 0x4e, 0xdf, 0x07, 0x79, 0x54, 0x53, 0x30, 0xef, 0x42, 0x97,
+ 0xb5, 0xd0, 0x87, 0xb5, 0xb6, 0x06, 0xcd, 0x1d, 0x81, 0xd4, 0xdf, 0x65,
+ 0xb3, 0x50, 0x73, 0x88, 0xb5, 0xd7, 0xa4, 0x82, 0x44, 0x13, 0x59, 0x47,
+ 0xcb, 0xaa, 0x45, 0x41, 0xd9, 0x2b, 0x37, 0xb0, 0x1a, 0xe9, 0xb1, 0xb6,
+ 0xc6, 0xdb, 0x66, 0x0e, 0x11, 0x3f, 0xe4, 0x84, 0xbc, 0x35, 0x62, 0xda,
+ 0x4d, 0x85, 0x33, 0x1c, 0x94, 0x7d, 0x8a, 0x26, 0x79, 0x21, 0xb1, 0x97,
+ 0x5c, 0x51, 0x00, 0x99, 0xf5, 0xa6, 0xd5, 0xdb, 0x30, 0x1c, 0x8e, 0x09,
+ 0xa5, 0x35, 0xa9, 0x1a, 0x40, 0x40, 0xbf, 0x7b, 0xb8, 0xc2, 0x98, 0xbf,
+ 0xc1, 0x64, 0x8e, 0xd6, 0x3b, 0x0a, 0x0f, 0xaf, 0xdc, 0x52, 0x6e, 0xef,
+ 0xa3, 0x5b, 0x7a, 0x42, 0x59, 0x9b, 0x12, 0x5a, 0xa5, 0xe7, 0xcc, 0x74,
+ 0x9a, 0xe9, 0x7b, 0xb0, 0xd1, 0xc8, 0x23, 0xdc, 0xe9, 0x3d, 0x35, 0x0e,
+ 0x6e, 0x86, 0x82, 0x28, 0x38, 0x91, 0xad, 0xa2, 0xbe, 0x27, 0xee, 0xcc,
+ 0x90, 0x22, 0xe7, 0xc6, 0x2a, 0x89, 0xcf, 0x7a, 0xaf, 0x65, 0x2d, 0x1f,
+ 0x9a, 0xf7, 0xd6, 0xb7, 0x9f, 0x89, 0x40, 0xf8, 0xea, 0x49, 0x7a, 0x3d,
+ 0xd0, 0xa2, 0xa7, 0x1b, 0x2f, 0xbd, 0x6a, 0x6f, 0x27, 0x15, 0xd7, 0xe2,
+ 0x3c, 0xbc, 0xc9, 0xb8, 0x7d, 0x43, 0xe6, 0x84, 0xbb, 0x55, 0xfe, 0x7b,
+ 0xfd, 0x30, 0xd4, 0x1d, 0x41, 0xf3, 0xf9, 0xb1, 0x02, 0xf7, 0x71, 0x8c,
+ 0x47, 0xba, 0xd9, 0x14, 0xfe, 0xb6, 0x9a, 0x8a, 0xf7, 0x1f, 0xfa, 0x01,
+ 0xf5, 0x8e, 0xc5, 0x26, 0x26, 0xa3, 0xb8, 0x7c, 0x09, 0x98, 0x08, 0x7b,
+ 0xc8, 0x5d, 0x86, 0x07, 0x8f, 0x26, 0xf0, 0xff, 0x11, 0x27, 0xf0, 0xbd,
+ 0x78, 0x88, 0x1e, 0xb2, 0xe7, 0x48, 0xc0, 0x3f, 0x6c, 0x1e, 0xa4, 0x1a,
+ 0xd8, 0xcc, 0x34, 0x14, 0x17, 0x07, 0xca, 0xd7, 0xb5, 0x9b, 0x4b, 0xe0,
+ 0xa3, 0x4b, 0x6f, 0x4a, 0x87, 0xaa, 0x8a, 0x19, 0xd7, 0x86, 0xfa, 0x4a,
+ 0xe2, 0xb8, 0xad, 0x33, 0xf5, 0x68, 0x02, 0x30, 0x07, 0xd4, 0x5d, 0xf5,
+ 0x35, 0x2c, 0x15, 0xb5, 0x53, 0x7c, 0x0e, 0x72, 0x1f, 0xfe, 0xb5, 0xbd,
+ 0x9d, 0x46, 0x95, 0xff, 0x8b, 0x15, 0xc9, 0x3d, 0x88, 0x1b, 0xe0, 0xa0,
+ 0x61, 0x95, 0x84, 0x29, 0x1b, 0x18, 0x5e, 0x6f, 0x24, 0xbe, 0x32, 0xf1,
+ 0x8f, 0x50, 0xf2, 0x76, 0x49, 0x6d, 0xcb, 0x1b, 0x39, 0x9b, 0xfd, 0x6e,
+ 0xf0, 0x9a, 0x8a, 0x5c, 0x2c, 0xf4, 0xc4, 0x91, 0x7e, 0xef, 0xf6, 0x9c,
+ 0x90, 0x45, 0xe7, 0x3b, 0x92, 0x71, 0xa6, 0xed, 0xc5, 0x7c, 0xc3, 0x1a,
+ 0x68, 0x19, 0x6d, 0xd0, 0x80, 0x66, 0x92, 0xa3, 0xc0, 0x74, 0xaa, 0x97,
+ 0x47, 0x0e, 0xb4, 0xcc, 0x49, 0x95, 0x6f, 0x39, 0x04, 0x7d, 0x30, 0xba,
+ 0x53, 0x1c, 0x55, 0x52, 0x3b, 0xe3, 0xc7, 0x58, 0xa3, 0x6e, 0x44, 0xaf,
+ 0xfb, 0x7d, 0xeb, 0x09, 0xa0, 0xc6, 0xa9, 0x12, 0x97, 0xe1, 0x38, 0x0c,
+ 0xe9, 0x15, 0xe6, 0xde, 0x81, 0xbf, 0x97, 0x13, 0x41, 0x4a, 0xe9, 0x70,
+ 0xf4, 0x83, 0x27, 0x86, 0x9a, 0x8c, 0x0d, 0x9d, 0x5e, 0x03, 0x35, 0xd0,
+ 0x52, 0x4c, 0x99, 0xb0, 0xd7, 0xeb, 0xfa, 0xa3, 0x86, 0x97, 0x85, 0xa4,
+ 0x4d, 0xa0, 0x26, 0x5e, 0x54, 0xf1, 0x78, 0x6f, 0xcf, 0xd3, 0x00, 0x82,
+ 0xf5, 0x8a, 0x2a, 0x8f, 0x6b, 0xa5, 0xc7, 0xca, 0xb7, 0x72, 0x8b, 0x4e,
+ 0xad, 0xc7, 0x13, 0xe4, 0x7a, 0x7a, 0xb2, 0x0d, 0x4b, 0x85, 0x09, 0xd4,
+ 0x4c, 0x72, 0x28, 0x64, 0xee, 0x96, 0xbc, 0x9c, 0x97, 0xc5, 0x77, 0xc5,
+ 0x07, 0x26, 0xa9, 0xca, 0x4d, 0x64, 0x6b, 0xca, 0xcd, 0xe0, 0x48, 0xe8,
+ 0xe8, 0xb9, 0xa0, 0x43, 0xc3, 0xda, 0x38, 0x97, 0xbd, 0x53, 0x76, 0x72,
+ 0x5e, 0x43, 0x82, 0x1e, 0xf4, 0x44, 0x0f, 0x52, 0x65, 0x95, 0xa4, 0x21,
+ 0xad, 0x73, 0xc1, 0xcd, 0xe0, 0x9a, 0x8c, 0x73, 0x20, 0x92, 0x48, 0xbe,
+ 0x14, 0xbb, 0xd8, 0x48, 0xfb, 0x13, 0x9e, 0x49, 0x20, 0x9d, 0x55, 0xfe,
+ 0x84, 0xf0, 0x51, 0x16, 0xab, 0x3f, 0x83, 0xc1, 0x16, 0x4f, 0xe1, 0x0a,
+ 0x62, 0x6c, 0xcc, 0xa4, 0x62, 0xee, 0x3f, 0xf6, 0x84, 0x6e, 0xba, 0x0a,
+ 0x6a, 0x0b, 0xb5, 0x1d, 0xdb, 0x29, 0x51, 0xd9, 0xb3, 0x78, 0x34, 0x40,
+ 0xe1, 0x33, 0x04, 0x22, 0x9b, 0xae, 0x7c, 0x3f, 0xfd, 0x62, 0x39, 0x4f,
+ 0x6c, 0x3b, 0x85, 0x01, 0x28, 0xe6, 0x57, 0x0e, 0x64, 0x06, 0x6d, 0xbd,
+ 0x4c, 0xa6, 0x6d, 0xd8, 0x83, 0x83, 0x91, 0x7c, 0x7a, 0x95, 0x60, 0xde,
+ 0x7c, 0xdc, 0xf6, 0xc4, 0xf1, 0x81, 0x55, 0x20, 0x67, 0x94, 0x7b, 0x0a,
+ 0x7c, 0xd4, 0xad, 0x0f, 0xe0, 0xc3, 0x5f, 0x2c, 0x08, 0xf6, 0x7e, 0x81,
+ 0x7b, 0x42, 0xbb, 0xb2, 0x70, 0x5b, 0xb7, 0xc6, 0x06, 0xa7, 0x56, 0xa5,
+ 0x49, 0x2e, 0xce, 0xcc, 0x8d, 0x47, 0x61, 0x81, 0xd9, 0x82, 0xe4, 0xf3,
+ 0x0b, 0x5c, 0x47, 0xab, 0xe4, 0x35, 0x3d, 0x65, 0x10, 0x3f, 0x8e, 0x41,
+ 0x19, 0x9f, 0x96, 0x88, 0x7f, 0xf2, 0xfe, 0x47, 0xf7, 0x1c, 0xd7, 0x4e,
+ 0x98, 0x6a, 0xce, 0x5a, 0x8e, 0x2f, 0xf4, 0x9d, 0xbc, 0xa6, 0x70, 0xde,
+ 0x5b, 0x75, 0xa1, 0x55, 0xd4, 0xcb, 0x6b, 0xf5, 0xd6, 0x0e, 0x33, 0xb4,
+ 0x35, 0xfd, 0x70, 0x9e, 0xf9, 0xd4, 0x0a, 0x6f, 0x7f, 0x93, 0x19, 0x55,
+ 0xf7, 0x77, 0x99, 0x11, 0xf0, 0x29, 0x9c, 0xc0, 0xdd, 0x94, 0xe1, 0xbc,
+ 0xc2, 0x4e, 0x12, 0xf0, 0xbf, 0x99, 0x6d, 0xf9, 0x96, 0xa6, 0xe7, 0xea,
+ 0xae, 0x31, 0xde, 0xc6, 0x83, 0x06, 0x75, 0xae, 0xee, 0x37, 0x30, 0x4c,
+ 0xfd, 0x8a, 0xda, 0x60, 0x5b, 0x86, 0xdd, 0x06, 0xd3, 0x60, 0x0d, 0xeb,
+ 0xd4, 0xbd, 0x2d, 0x2c, 0x57, 0x26, 0x0e, 0x04, 0xd4, 0x9e, 0xaa, 0x25,
+ 0xdc, 0x6a, 0xe4, 0x39, 0x09, 0x03, 0x88, 0x74, 0xa7, 0x5a, 0x92, 0x4a,
+ 0x32, 0xb9, 0x9a, 0x27, 0x67, 0xd8, 0xf3, 0x5b, 0x44, 0x1f, 0xf7, 0xca,
+ 0x99, 0xc2, 0x5b, 0x8d, 0xdd, 0x21, 0x0e, 0xe9, 0xc7, 0x62, 0x85, 0x10,
+ 0x9d, 0x23, 0xb5, 0xc9, 0x34, 0xbd, 0x4a, 0x4e, 0xd3, 0xfc, 0x77, 0xc9,
+ 0xf4, 0x33, 0xbc, 0x65, 0x38, 0x68, 0xbf, 0x3b, 0x15, 0x6f, 0xd6, 0x05,
+ 0x77, 0x60, 0x75, 0xfb, 0x59, 0x7b, 0xe8, 0x58, 0x08, 0x4e, 0x5d, 0xdd,
+ 0x70, 0xfa, 0xd0, 0xab, 0x31, 0xb7, 0x59, 0xd4, 0xbe, 0xce, 0x70, 0x18,
+ 0x14, 0xf9, 0xfb, 0x4d, 0xf9, 0xcd, 0xab, 0x48, 0xd2, 0x4e, 0x49, 0x3f,
+ 0x95, 0x79, 0x62, 0xa4, 0xc4, 0x67, 0x7c, 0x7f, 0xbe, 0x78, 0x42, 0xb2,
+ 0x17, 0xd5, 0xdd, 0x26, 0x61, 0x46, 0xc7, 0xc1, 0x6a, 0xb5, 0x38, 0xa3,
+ 0x03, 0x2f, 0xc0, 0xa4, 0xf1, 0xc2, 0x37, 0x4e, 0xf3, 0x14, 0x0a, 0xd2,
+ 0x64, 0xed, 0xc7, 0xa2, 0x24, 0xab, 0x3b, 0xdc, 0x62, 0x46, 0x90, 0xd3,
+ 0x57, 0xfe, 0xe1, 0x58, 0x94, 0xb0, 0x7f, 0xc3, 0xe1, 0x81, 0x7f, 0x66,
+ 0x6e, 0x07, 0x21, 0xa4, 0x14, 0xf5, 0x7b, 0x10, 0xe2, 0x2b, 0x4a, 0xf5,
+ 0x31, 0x35, 0x1c, 0x47, 0xfe, 0xa1, 0x23, 0xa5, 0x5c, 0xea, 0x41, 0xd3,
+ 0xa6, 0xcf, 0x21, 0x3f, 0x82, 0x05, 0x37, 0x03, 0x6b, 0x8b, 0x76, 0x19,
+ 0x46, 0xe8, 0xe9, 0x08, 0x8d, 0x36, 0x08, 0x7e, 0x30, 0xef, 0xd5, 0xc8,
+ 0x22, 0xd3, 0x62, 0xd4, 0xd7, 0xe0, 0x8a, 0xf2, 0x2e, 0xa0, 0x2a, 0x7a,
+ 0xe7, 0x97, 0xf5, 0x7e, 0xed, 0x1f, 0xc9, 0xdb, 0x47, 0x8e, 0xae, 0x66,
+ 0x2f, 0xa0, 0x3f, 0xe7, 0xf6, 0x82, 0xa7, 0x0b, 0x1e, 0x0e, 0x7e, 0xbf,
+ 0x08, 0x11, 0xf0, 0x07, 0x9e, 0xaf, 0x11, 0xe8, 0x97, 0xd3, 0x7e, 0x2c,
+ 0xb5, 0xa8, 0x62, 0x2b, 0x19, 0xf2, 0x70, 0xa1, 0x21, 0xd0, 0xce, 0x4d,
+ 0x84, 0x58, 0x57, 0x77, 0xef, 0xc6, 0xc2, 0x2e, 0x12, 0xc0, 0xd4, 0xf0,
+ 0xec, 0x45, 0x87, 0xe0, 0xb1, 0x0b, 0x5f, 0x1b, 0x81, 0xb0, 0xb4, 0xb7,
+ 0x23, 0x65, 0x67, 0x5a, 0x4c, 0xc8, 0xaf, 0x5f, 0x71, 0xb4, 0x7c, 0x23,
+ 0x26, 0x89, 0x08, 0x32, 0xc5, 0x4a, 0xb0, 0x11, 0xba, 0x19, 0x7d, 0x2c,
+ 0x0e, 0x6d, 0x55, 0xf9, 0x22, 0xa7, 0x5e, 0x8c, 0x30, 0xed, 0x98, 0xcb,
+ 0xb5, 0x25, 0x5f, 0xbb, 0xdd, 0x44, 0x3c, 0x9c, 0x92, 0x2d, 0xd9, 0x97,
+ 0x8b, 0x2e, 0xc1, 0xf0, 0xed, 0xb9, 0x37, 0x78, 0xf7, 0xf9, 0x7d, 0x6a,
+ 0x63, 0xff, 0xdc, 0x1b, 0x3b, 0x7f, 0x26, 0x77, 0x02, 0x60, 0x50, 0x49,
+ 0x2f, 0xf7, 0x5f, 0x40, 0x7d, 0x4c, 0xd2, 0x63, 0x72, 0xb5, 0xb9, 0x79,
+ 0xa0, 0x88, 0x79, 0x89, 0xfa, 0xb6, 0x86, 0x4f, 0xd5, 0x3d, 0x44, 0xfa,
+ 0xec, 0x5f, 0x29, 0x7c, 0x38, 0x47, 0x0f, 0x0c, 0x4a, 0x1d, 0x2e, 0x93,
+ 0xf7, 0xc5, 0xfa, 0x7c, 0x73, 0xf3, 0xc6, 0x47, 0xc5, 0xe7, 0x6e, 0xcc,
+ 0xcd, 0x0d, 0x25, 0xc2, 0xef, 0xd3, 0xc0, 0xf8, 0xc1, 0x23, 0xae, 0x3a,
+ 0x9d, 0x93, 0xcf, 0xd3, 0xf3, 0xcb, 0x49, 0x9a, 0xec, 0x13, 0x1c, 0xe8,
+ 0x74, 0x72, 0xf1, 0xee, 0xf3, 0xd4, 0xfd, 0xa9, 0x73, 0x9c, 0x65, 0x65,
+ 0xe1, 0xd4, 0x8f, 0x74, 0x9d, 0x97, 0x8e, 0x5b, 0xcd, 0x75, 0xf3, 0xd1,
+ 0x14, 0xd7, 0x51, 0xf9, 0xb2, 0x52, 0xc4, 0x77, 0xca, 0x0e, 0x5a, 0x0a,
+ 0xc7, 0x91, 0x2e, 0x15, 0x25, 0x4a, 0xf7, 0x96, 0xc1, 0x5d, 0x51, 0x34,
+ 0x70, 0x4c, 0xb5, 0xfa, 0x24, 0x99, 0x9e, 0x9f, 0x7c, 0xfa, 0x2d, 0xd5,
+ 0xbc, 0x8d, 0xeb, 0xeb, 0xeb, 0x66, 0x64, 0x9f, 0x4d, 0x87, 0x55, 0xde,
+ 0xe9, 0xa4, 0xe3, 0x71, 0x72, 0xf2, 0x21, 0xbd, 0xd4, 0x1b, 0xee, 0xd6,
+ 0x8f, 0xaf, 0x0f, 0x7f, 0x71, 0x1a, 0xf6, 0x3c, 0x5f, 0xbb, 0x5f, 0x3a,
+ 0x9d, 0x7f, 0x03, 0x79, 0x3a, 0x77, 0xa4, 0x90, 0xdd, 0x03, 0x00,
+};
+#define BUF_SIZE 0x10000
+static voidpf zalloc_func(voidpf opaque, unsigned int items, unsigned int size)
+{
+ (void) opaque;
+ /* not a typo, keep it calloc() */
+ return (voidpf) calloc(items, size);
+}
+static void zfree_func(voidpf opaque, voidpf ptr)
+{
+ (void) opaque;
+ free(ptr);
+}
+/* Decompress and send to stdout a gzip-compressed buffer */
+void hugehelp(void)
+{
+ unsigned char* buf;
+ int status,headerlen;
+ z_stream z;
+
+ /* Make sure no gzip options are set */
+ if (hugehelpgz[3] & 0xfe)
+ return;
+
+ headerlen = 10;
+ memset(&z, 0, sizeof(z_stream));
+ z.zalloc = (alloc_func)zalloc_func;
+ z.zfree = (free_func)zfree_func;
+ z.avail_in = (unsigned int)(sizeof(hugehelpgz) - headerlen);
+ z.next_in = (unsigned char *)hugehelpgz + headerlen;
+
+ if (inflateInit2(&z, -MAX_WBITS) != Z_OK)
+ return;
+
+ buf = malloc(BUF_SIZE);
+ if (buf) {
+ while(1) {
+ z.avail_out = BUF_SIZE;
+ z.next_out = buf;
+ status = inflate(&z, Z_SYNC_FLUSH);
+ if (status == Z_OK || status == Z_STREAM_END) {
+ fwrite(buf, BUF_SIZE - z.avail_out, 1, stdout);
+ if (status == Z_STREAM_END)
+ break;
+ }
+ else
+ break; /* Error */
+ }
+ free(buf);
+ }
+ inflateEnd(&z);
+}
+#endif /* USE_MANUAL */
+#endif /* HAVE_LIBZ */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_hugehelp.h b/ap/lib/libcurl/curl-7.86.0/src/tool_hugehelp.h
new file mode 100755
index 0000000..d5880ac
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_hugehelp.h
@@ -0,0 +1,35 @@
+#ifndef HEADER_CURL_TOOL_HUGEHELP_H
+#define HEADER_CURL_TOOL_HUGEHELP_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#ifdef USE_MANUAL
+void hugehelp(void);
+#else
+/* do nothing if not there */
+#define hugehelp()
+#endif
+
+#endif /* HEADER_CURL_TOOL_HUGEHELP_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_libinfo.c b/ap/lib/libcurl/curl-7.86.0/src/tool_libinfo.c
new file mode 100755
index 0000000..801fd57
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_libinfo.c
@@ -0,0 +1,124 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#include "strcase.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_libinfo.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+/* global variable definitions, for libcurl run-time info */
+
+static const char *no_protos = NULL;
+
+curl_version_info_data *curlinfo = NULL;
+const char * const *built_in_protos = &no_protos;
+
+size_t proto_count = 0;
+
+const char *proto_file = NULL;
+const char *proto_ftp = NULL;
+const char *proto_ftps = NULL;
+const char *proto_http = NULL;
+const char *proto_https = NULL;
+const char *proto_rtsp = NULL;
+const char *proto_scp = NULL;
+const char *proto_sftp = NULL;
+const char *proto_tftp = NULL;
+
+static struct proto_name_tokenp {
+ const char *proto_name;
+ const char **proto_tokenp;
+} const possibly_built_in[] = {
+ { "file", &proto_file },
+ { "ftp", &proto_ftp },
+ { "ftps", &proto_ftps },
+ { "http", &proto_http },
+ { "https", &proto_https },
+ { "rtsp", &proto_rtsp },
+ { "scp", &proto_scp },
+ { "sftp", &proto_sftp },
+ { "tftp", &proto_tftp },
+ { NULL, NULL }
+};
+
+/*
+ * libcurl_info_init: retrieves run-time information about libcurl,
+ * setting a global pointer 'curlinfo' to libcurl's run-time info
+ * struct, count protocols and flag those we are interested in.
+ */
+
+CURLcode get_libcurl_info(void)
+{
+ CURLcode result = CURLE_OK;
+
+ /* Pointer to libcurl's run-time version information */
+ curlinfo = curl_version_info(CURLVERSION_NOW);
+ if(!curlinfo)
+ return CURLE_FAILED_INIT;
+
+ if(curlinfo->protocols) {
+ const char *const *builtin;
+ const struct proto_name_tokenp *p;
+
+ built_in_protos = curlinfo->protocols;
+
+ for(builtin = built_in_protos; !result && *builtin; builtin++) {
+ /* Identify protocols we are interested in. */
+ for(p = possibly_built_in; p->proto_name; p++)
+ if(curl_strequal(p->proto_name, *builtin)) {
+ *p->proto_tokenp = *builtin;
+ break;
+ }
+ }
+ proto_count = builtin - built_in_protos;
+ }
+
+ return CURLE_OK;
+}
+
+/* Tokenize a protocol name.
+ * Return the address of the protocol name listed by the library, or NULL if
+ * not found.
+ * Although this may seem useless, this always returns the same address for
+ * a given protocol and thus allows comparing pointers rather than strings.
+ * In addition, the returned pointer is not deallocated until the program ends.
+ */
+
+const char *proto_token(const char *proto)
+{
+ const char * const *builtin;
+
+ if(!proto)
+ return NULL;
+ for(builtin = built_in_protos; *builtin; builtin++)
+ if(curl_strequal(*builtin, proto))
+ break;
+ return *builtin;
+}
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_libinfo.h b/ap/lib/libcurl/curl-7.86.0/src/tool_libinfo.h
new file mode 100755
index 0000000..40e5aff
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_libinfo.h
@@ -0,0 +1,48 @@
+#ifndef HEADER_CURL_TOOL_LIBINFO_H
+#define HEADER_CURL_TOOL_LIBINFO_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+/* global variable declarations, for libcurl run-time info */
+
+
+extern curl_version_info_data *curlinfo;
+extern const char * const *built_in_protos;
+extern size_t proto_count;
+
+extern const char *proto_file;
+extern const char *proto_ftp;
+extern const char *proto_ftps;
+extern const char *proto_http;
+extern const char *proto_https;
+extern const char *proto_rtsp;
+extern const char *proto_scp;
+extern const char *proto_sftp;
+extern const char *proto_tftp;
+
+CURLcode get_libcurl_info(void);
+const char *proto_token(const char *proto);
+
+#endif /* HEADER_CURL_TOOL_LIBINFO_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_listhelp.c b/ap/lib/libcurl/curl-7.86.0/src/tool_listhelp.c
new file mode 100755
index 0000000..6a2d10f
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_listhelp.c
@@ -0,0 +1,781 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+#include "tool_help.h"
+
+/*
+ * DO NOT edit tool_listhelp.c manually.
+ * This source file is generated with the following command:
+
+ cd $srcroot/docs/cmdline-opts
+ ./gen.pl listhelp *.d > $srcroot/src/tool_listhelp.c
+ */
+
+const struct helptxt helptext[] = {
+ {" --abstract-unix-socket <path>",
+ "Connect via abstract Unix domain socket",
+ CURLHELP_CONNECTION},
+ {" --alt-svc <file name>",
+ "Enable alt-svc with this cache file",
+ CURLHELP_HTTP},
+ {" --anyauth",
+ "Pick any authentication method",
+ CURLHELP_HTTP | CURLHELP_PROXY | CURLHELP_AUTH},
+ {"-a, --append",
+ "Append to target file when uploading",
+ CURLHELP_FTP | CURLHELP_SFTP},
+ {" --aws-sigv4 <provider1[:provider2[:region[:service]]]>",
+ "Use AWS V4 signature authentication",
+ CURLHELP_AUTH | CURLHELP_HTTP},
+ {" --basic",
+ "Use HTTP Basic Authentication",
+ CURLHELP_AUTH},
+ {" --cacert <file>",
+ "CA certificate to verify peer against",
+ CURLHELP_TLS},
+ {" --capath <dir>",
+ "CA directory to verify peer against",
+ CURLHELP_TLS},
+ {"-E, --cert <certificate[:password]>",
+ "Client certificate file and password",
+ CURLHELP_TLS},
+ {" --cert-status",
+ "Verify the status of the server cert via OCSP-staple",
+ CURLHELP_TLS},
+ {" --cert-type <type>",
+ "Certificate type (DER/PEM/ENG/P12)",
+ CURLHELP_TLS},
+ {" --ciphers <list of ciphers>",
+ "SSL ciphers to use",
+ CURLHELP_TLS},
+ {" --compressed",
+ "Request compressed response",
+ CURLHELP_HTTP},
+ {" --compressed-ssh",
+ "Enable SSH compression",
+ CURLHELP_SCP | CURLHELP_SSH},
+ {"-K, --config <file>",
+ "Read config from a file",
+ CURLHELP_CURL},
+ {" --connect-timeout <fractional seconds>",
+ "Maximum time allowed for connection",
+ CURLHELP_CONNECTION},
+ {" --connect-to <HOST1:PORT1:HOST2:PORT2>",
+ "Connect to host",
+ CURLHELP_CONNECTION},
+ {"-C, --continue-at <offset>",
+ "Resumed transfer offset",
+ CURLHELP_CONNECTION},
+ {"-b, --cookie <data|filename>",
+ "Send cookies from string/file",
+ CURLHELP_HTTP},
+ {"-c, --cookie-jar <filename>",
+ "Write cookies to <filename> after operation",
+ CURLHELP_HTTP},
+ {" --create-dirs",
+ "Create necessary local directory hierarchy",
+ CURLHELP_CURL},
+ {" --create-file-mode <mode>",
+ "File mode for created files",
+ CURLHELP_SFTP | CURLHELP_SCP | CURLHELP_FILE | CURLHELP_UPLOAD},
+ {" --crlf",
+ "Convert LF to CRLF in upload",
+ CURLHELP_FTP | CURLHELP_SMTP},
+ {" --crlfile <file>",
+ "Use this CRL list",
+ CURLHELP_TLS},
+ {" --curves <algorithm list>",
+ "(EC) TLS key exchange algorithm(s) to request",
+ CURLHELP_TLS},
+ {"-d, --data <data>",
+ "HTTP POST data",
+ CURLHELP_IMPORTANT | CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD},
+ {" --data-ascii <data>",
+ "HTTP POST ASCII data",
+ CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD},
+ {" --data-binary <data>",
+ "HTTP POST binary data",
+ CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD},
+ {" --data-raw <data>",
+ "HTTP POST data, '@' allowed",
+ CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD},
+ {" --data-urlencode <data>",
+ "HTTP POST data URL encoded",
+ CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD},
+ {" --delegation <LEVEL>",
+ "GSS-API delegation permission",
+ CURLHELP_AUTH},
+ {" --digest",
+ "Use HTTP Digest Authentication",
+ CURLHELP_PROXY | CURLHELP_AUTH | CURLHELP_HTTP},
+ {"-q, --disable",
+ "Disable .curlrc",
+ CURLHELP_CURL},
+ {" --disable-eprt",
+ "Inhibit using EPRT or LPRT",
+ CURLHELP_FTP},
+ {" --disable-epsv",
+ "Inhibit using EPSV",
+ CURLHELP_FTP},
+ {" --disallow-username-in-url",
+ "Disallow username in URL",
+ CURLHELP_CURL | CURLHELP_HTTP},
+ {" --dns-interface <interface>",
+ "Interface to use for DNS requests",
+ CURLHELP_DNS},
+ {" --dns-ipv4-addr <address>",
+ "IPv4 address to use for DNS requests",
+ CURLHELP_DNS},
+ {" --dns-ipv6-addr <address>",
+ "IPv6 address to use for DNS requests",
+ CURLHELP_DNS},
+ {" --dns-servers <addresses>",
+ "DNS server addrs to use",
+ CURLHELP_DNS},
+ {" --doh-cert-status",
+ "Verify the status of the DoH server cert via OCSP-staple",
+ CURLHELP_DNS | CURLHELP_TLS},
+ {" --doh-insecure",
+ "Allow insecure DoH server connections",
+ CURLHELP_DNS | CURLHELP_TLS},
+ {" --doh-url <URL>",
+ "Resolve host names over DoH",
+ CURLHELP_DNS},
+ {"-D, --dump-header <filename>",
+ "Write the received headers to <filename>",
+ CURLHELP_HTTP | CURLHELP_FTP},
+ {" --egd-file <file>",
+ "EGD socket path for random data",
+ CURLHELP_TLS},
+ {" --engine <name>",
+ "Crypto engine to use",
+ CURLHELP_TLS},
+ {" --etag-compare <file>",
+ "Pass an ETag from a file as a custom header",
+ CURLHELP_HTTP},
+ {" --etag-save <file>",
+ "Parse ETag from a request and save it to a file",
+ CURLHELP_HTTP},
+ {" --expect100-timeout <seconds>",
+ "How long to wait for 100-continue",
+ CURLHELP_HTTP},
+ {"-f, --fail",
+ "Fail fast with no output on HTTP errors",
+ CURLHELP_IMPORTANT | CURLHELP_HTTP},
+ {" --fail-early",
+ "Fail on first transfer error, do not continue",
+ CURLHELP_CURL},
+ {" --fail-with-body",
+ "Fail on HTTP errors but save the body",
+ CURLHELP_HTTP | CURLHELP_OUTPUT},
+ {" --false-start",
+ "Enable TLS False Start",
+ CURLHELP_TLS},
+ {"-F, --form <name=content>",
+ "Specify multipart MIME data",
+ CURLHELP_HTTP | CURLHELP_UPLOAD},
+ {" --form-escape",
+ "Escape multipart form field/file names using backslash",
+ CURLHELP_HTTP | CURLHELP_UPLOAD},
+ {" --form-string <name=string>",
+ "Specify multipart MIME data",
+ CURLHELP_HTTP | CURLHELP_UPLOAD},
+ {" --ftp-account <data>",
+ "Account data string",
+ CURLHELP_FTP | CURLHELP_AUTH},
+ {" --ftp-alternative-to-user <command>",
+ "String to replace USER [name]",
+ CURLHELP_FTP},
+ {" --ftp-create-dirs",
+ "Create the remote dirs if not present",
+ CURLHELP_FTP | CURLHELP_SFTP | CURLHELP_CURL},
+ {" --ftp-method <method>",
+ "Control CWD usage",
+ CURLHELP_FTP},
+ {" --ftp-pasv",
+ "Use PASV/EPSV instead of PORT",
+ CURLHELP_FTP},
+ {"-P, --ftp-port <address>",
+ "Use PORT instead of PASV",
+ CURLHELP_FTP},
+ {" --ftp-pret",
+ "Send PRET before PASV",
+ CURLHELP_FTP},
+ {" --ftp-skip-pasv-ip",
+ "Skip the IP address for PASV",
+ CURLHELP_FTP},
+ {" --ftp-ssl-ccc",
+ "Send CCC after authenticating",
+ CURLHELP_FTP | CURLHELP_TLS},
+ {" --ftp-ssl-ccc-mode <active/passive>",
+ "Set CCC mode",
+ CURLHELP_FTP | CURLHELP_TLS},
+ {" --ftp-ssl-control",
+ "Require SSL/TLS for FTP login, clear for transfer",
+ CURLHELP_FTP | CURLHELP_TLS},
+ {"-G, --get",
+ "Put the post data in the URL and use GET",
+ CURLHELP_HTTP | CURLHELP_UPLOAD},
+ {"-g, --globoff",
+ "Disable URL sequences and ranges using {} and []",
+ CURLHELP_CURL},
+ {" --happy-eyeballs-timeout-ms <milliseconds>",
+ "Time for IPv6 before trying IPv4",
+ CURLHELP_CONNECTION},
+ {" --haproxy-protocol",
+ "Send HAProxy PROXY protocol v1 header",
+ CURLHELP_HTTP | CURLHELP_PROXY},
+ {"-I, --head",
+ "Show document info only",
+ CURLHELP_HTTP | CURLHELP_FTP | CURLHELP_FILE},
+ {"-H, --header <header/@file>",
+ "Pass custom header(s) to server",
+ CURLHELP_HTTP | CURLHELP_IMAP | CURLHELP_SMTP},
+ {"-h, --help <category>",
+ "Get help for commands",
+ CURLHELP_IMPORTANT | CURLHELP_CURL},
+ {" --hostpubmd5 <md5>",
+ "Acceptable MD5 hash of the host public key",
+ CURLHELP_SFTP | CURLHELP_SCP},
+ {" --hostpubsha256 <sha256>",
+ "Acceptable SHA256 hash of the host public key",
+ CURLHELP_SFTP | CURLHELP_SCP},
+ {" --hsts <file name>",
+ "Enable HSTS with this cache file",
+ CURLHELP_HTTP},
+ {" --http0.9",
+ "Allow HTTP 0.9 responses",
+ CURLHELP_HTTP},
+ {"-0, --http1.0",
+ "Use HTTP 1.0",
+ CURLHELP_HTTP},
+ {" --http1.1",
+ "Use HTTP 1.1",
+ CURLHELP_HTTP},
+ {" --http2",
+ "Use HTTP 2",
+ CURLHELP_HTTP},
+ {" --http2-prior-knowledge",
+ "Use HTTP 2 without HTTP/1.1 Upgrade",
+ CURLHELP_HTTP},
+ {" --http3",
+ "Use HTTP v3",
+ CURLHELP_HTTP},
+ {" --ignore-content-length",
+ "Ignore the size of the remote resource",
+ CURLHELP_HTTP | CURLHELP_FTP},
+ {"-i, --include",
+ "Include protocol response headers in the output",
+ CURLHELP_IMPORTANT | CURLHELP_VERBOSE},
+ {"-k, --insecure",
+ "Allow insecure server connections",
+ CURLHELP_TLS | CURLHELP_SFTP | CURLHELP_SCP},
+ {" --interface <name>",
+ "Use network INTERFACE (or address)",
+ CURLHELP_CONNECTION},
+ {"-4, --ipv4",
+ "Resolve names to IPv4 addresses",
+ CURLHELP_CONNECTION | CURLHELP_DNS},
+ {"-6, --ipv6",
+ "Resolve names to IPv6 addresses",
+ CURLHELP_CONNECTION | CURLHELP_DNS},
+ {" --json <data>",
+ "HTTP POST JSON",
+ CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD},
+ {"-j, --junk-session-cookies",
+ "Ignore session cookies read from file",
+ CURLHELP_HTTP},
+ {" --keepalive-time <seconds>",
+ "Interval time for keepalive probes",
+ CURLHELP_CONNECTION},
+ {" --key <key>",
+ "Private key file name",
+ CURLHELP_TLS | CURLHELP_SSH},
+ {" --key-type <type>",
+ "Private key file type (DER/PEM/ENG)",
+ CURLHELP_TLS},
+ {" --krb <level>",
+ "Enable Kerberos with security <level>",
+ CURLHELP_FTP},
+ {" --libcurl <file>",
+ "Dump libcurl equivalent code of this command line",
+ CURLHELP_CURL},
+ {" --limit-rate <speed>",
+ "Limit transfer speed to RATE",
+ CURLHELP_CONNECTION},
+ {"-l, --list-only",
+ "List only mode",
+ CURLHELP_FTP | CURLHELP_POP3},
+ {" --local-port <num/range>",
+ "Force use of RANGE for local port numbers",
+ CURLHELP_CONNECTION},
+ {"-L, --location",
+ "Follow redirects",
+ CURLHELP_HTTP},
+ {" --location-trusted",
+ "Like --location, and send auth to other hosts",
+ CURLHELP_HTTP | CURLHELP_AUTH},
+ {" --login-options <options>",
+ "Server login options",
+ CURLHELP_IMAP | CURLHELP_POP3 | CURLHELP_SMTP | CURLHELP_AUTH},
+ {" --mail-auth <address>",
+ "Originator address of the original email",
+ CURLHELP_SMTP},
+ {" --mail-from <address>",
+ "Mail from this address",
+ CURLHELP_SMTP},
+ {" --mail-rcpt <address>",
+ "Mail to this address",
+ CURLHELP_SMTP},
+ {" --mail-rcpt-allowfails",
+ "Allow RCPT TO command to fail for some recipients",
+ CURLHELP_SMTP},
+ {"-M, --manual",
+ "Display the full manual",
+ CURLHELP_CURL},
+ {" --max-filesize <bytes>",
+ "Maximum file size to download",
+ CURLHELP_CONNECTION},
+ {" --max-redirs <num>",
+ "Maximum number of redirects allowed",
+ CURLHELP_HTTP},
+ {"-m, --max-time <fractional seconds>",
+ "Maximum time allowed for transfer",
+ CURLHELP_CONNECTION},
+ {" --metalink",
+ "Process given URLs as metalink XML file",
+ CURLHELP_MISC},
+ {" --negotiate",
+ "Use HTTP Negotiate (SPNEGO) authentication",
+ CURLHELP_AUTH | CURLHELP_HTTP},
+ {"-n, --netrc",
+ "Must read .netrc for user name and password",
+ CURLHELP_CURL},
+ {" --netrc-file <filename>",
+ "Specify FILE for netrc",
+ CURLHELP_CURL},
+ {" --netrc-optional",
+ "Use either .netrc or URL",
+ CURLHELP_CURL},
+ {"-:, --next",
+ "Make next URL use its separate set of options",
+ CURLHELP_CURL},
+ {" --no-alpn",
+ "Disable the ALPN TLS extension",
+ CURLHELP_TLS | CURLHELP_HTTP},
+ {"-N, --no-buffer",
+ "Disable buffering of the output stream",
+ CURLHELP_CURL},
+ {" --no-clobber",
+ "Do not overwrite files that already exist",
+ CURLHELP_CURL | CURLHELP_OUTPUT},
+ {" --no-keepalive",
+ "Disable TCP keepalive on the connection",
+ CURLHELP_CONNECTION},
+ {" --no-npn",
+ "Disable the NPN TLS extension",
+ CURLHELP_TLS | CURLHELP_HTTP},
+ {" --no-progress-meter",
+ "Do not show the progress meter",
+ CURLHELP_VERBOSE},
+ {" --no-sessionid",
+ "Disable SSL session-ID reusing",
+ CURLHELP_TLS},
+ {" --noproxy <no-proxy-list>",
+ "List of hosts which do not use proxy",
+ CURLHELP_PROXY},
+ {" --ntlm",
+ "Use HTTP NTLM authentication",
+ CURLHELP_AUTH | CURLHELP_HTTP},
+ {" --ntlm-wb",
+ "Use HTTP NTLM authentication with winbind",
+ CURLHELP_AUTH | CURLHELP_HTTP},
+ {" --oauth2-bearer <token>",
+ "OAuth 2 Bearer Token",
+ CURLHELP_AUTH},
+ {"-o, --output <file>",
+ "Write to file instead of stdout",
+ CURLHELP_IMPORTANT | CURLHELP_CURL},
+ {" --output-dir <dir>",
+ "Directory to save files in",
+ CURLHELP_CURL},
+ {"-Z, --parallel",
+ "Perform transfers in parallel",
+ CURLHELP_CONNECTION | CURLHELP_CURL},
+ {" --parallel-immediate",
+ "Do not wait for multiplexing (with --parallel)",
+ CURLHELP_CONNECTION | CURLHELP_CURL},
+ {" --parallel-max <num>",
+ "Maximum concurrency for parallel transfers",
+ CURLHELP_CONNECTION | CURLHELP_CURL},
+ {" --pass <phrase>",
+ "Pass phrase for the private key",
+ CURLHELP_SSH | CURLHELP_TLS | CURLHELP_AUTH},
+ {" --path-as-is",
+ "Do not squash .. sequences in URL path",
+ CURLHELP_CURL},
+ {" --pinnedpubkey <hashes>",
+ "FILE/HASHES Public key to verify peer against",
+ CURLHELP_TLS},
+ {" --post301",
+ "Do not switch to GET after following a 301",
+ CURLHELP_HTTP | CURLHELP_POST},
+ {" --post302",
+ "Do not switch to GET after following a 302",
+ CURLHELP_HTTP | CURLHELP_POST},
+ {" --post303",
+ "Do not switch to GET after following a 303",
+ CURLHELP_HTTP | CURLHELP_POST},
+ {" --preproxy [protocol://]host[:port]",
+ "Use this proxy first",
+ CURLHELP_PROXY},
+ {"-#, --progress-bar",
+ "Display transfer progress as a bar",
+ CURLHELP_VERBOSE},
+ {" --proto <protocols>",
+ "Enable/disable PROTOCOLS",
+ CURLHELP_CONNECTION | CURLHELP_CURL},
+ {" --proto-default <protocol>",
+ "Use PROTOCOL for any URL missing a scheme",
+ CURLHELP_CONNECTION | CURLHELP_CURL},
+ {" --proto-redir <protocols>",
+ "Enable/disable PROTOCOLS on redirect",
+ CURLHELP_CONNECTION | CURLHELP_CURL},
+ {"-x, --proxy [protocol://]host[:port]",
+ "Use this proxy",
+ CURLHELP_PROXY},
+ {" --proxy-anyauth",
+ "Pick any proxy authentication method",
+ CURLHELP_PROXY | CURLHELP_AUTH},
+ {" --proxy-basic",
+ "Use Basic authentication on the proxy",
+ CURLHELP_PROXY | CURLHELP_AUTH},
+ {" --proxy-cacert <file>",
+ "CA certificate to verify peer against for proxy",
+ CURLHELP_PROXY | CURLHELP_TLS},
+ {" --proxy-capath <dir>",
+ "CA directory to verify peer against for proxy",
+ CURLHELP_PROXY | CURLHELP_TLS},
+ {" --proxy-cert <cert[:passwd]>",
+ "Set client certificate for proxy",
+ CURLHELP_PROXY | CURLHELP_TLS},
+ {" --proxy-cert-type <type>",
+ "Client certificate type for HTTPS proxy",
+ CURLHELP_PROXY | CURLHELP_TLS},
+ {" --proxy-ciphers <list>",
+ "SSL ciphers to use for proxy",
+ CURLHELP_PROXY | CURLHELP_TLS},
+ {" --proxy-crlfile <file>",
+ "Set a CRL list for proxy",
+ CURLHELP_PROXY | CURLHELP_TLS},
+ {" --proxy-digest",
+ "Use Digest authentication on the proxy",
+ CURLHELP_PROXY | CURLHELP_TLS},
+ {" --proxy-header <header/@file>",
+ "Pass custom header(s) to proxy",
+ CURLHELP_PROXY},
+ {" --proxy-insecure",
+ "Do HTTPS proxy connections without verifying the proxy",
+ CURLHELP_PROXY | CURLHELP_TLS},
+ {" --proxy-key <key>",
+ "Private key for HTTPS proxy",
+ CURLHELP_PROXY | CURLHELP_TLS},
+ {" --proxy-key-type <type>",
+ "Private key file type for proxy",
+ CURLHELP_PROXY | CURLHELP_TLS},
+ {" --proxy-negotiate",
+ "Use HTTP Negotiate (SPNEGO) authentication on the proxy",
+ CURLHELP_PROXY | CURLHELP_AUTH},
+ {" --proxy-ntlm",
+ "Use NTLM authentication on the proxy",
+ CURLHELP_PROXY | CURLHELP_AUTH},
+ {" --proxy-pass <phrase>",
+ "Pass phrase for the private key for HTTPS proxy",
+ CURLHELP_PROXY | CURLHELP_TLS | CURLHELP_AUTH},
+ {" --proxy-pinnedpubkey <hashes>",
+ "FILE/HASHES public key to verify proxy with",
+ CURLHELP_PROXY | CURLHELP_TLS},
+ {" --proxy-service-name <name>",
+ "SPNEGO proxy service name",
+ CURLHELP_PROXY | CURLHELP_TLS},
+ {" --proxy-ssl-allow-beast",
+ "Allow security flaw for interop for HTTPS proxy",
+ CURLHELP_PROXY | CURLHELP_TLS},
+ {" --proxy-ssl-auto-client-cert",
+ "Use auto client certificate for proxy (Schannel)",
+ CURLHELP_PROXY | CURLHELP_TLS},
+ {" --proxy-tls13-ciphers <ciphersuite list>",
+ "TLS 1.3 proxy cipher suites",
+ CURLHELP_PROXY | CURLHELP_TLS},
+ {" --proxy-tlsauthtype <type>",
+ "TLS authentication type for HTTPS proxy",
+ CURLHELP_PROXY | CURLHELP_TLS | CURLHELP_AUTH},
+ {" --proxy-tlspassword <string>",
+ "TLS password for HTTPS proxy",
+ CURLHELP_PROXY | CURLHELP_TLS | CURLHELP_AUTH},
+ {" --proxy-tlsuser <name>",
+ "TLS username for HTTPS proxy",
+ CURLHELP_PROXY | CURLHELP_TLS | CURLHELP_AUTH},
+ {" --proxy-tlsv1",
+ "Use TLSv1 for HTTPS proxy",
+ CURLHELP_PROXY | CURLHELP_TLS | CURLHELP_AUTH},
+ {"-U, --proxy-user <user:password>",
+ "Proxy user and password",
+ CURLHELP_PROXY | CURLHELP_AUTH},
+ {" --proxy1.0 <host[:port]>",
+ "Use HTTP/1.0 proxy on given port",
+ CURLHELP_PROXY},
+ {"-p, --proxytunnel",
+ "Operate through an HTTP proxy tunnel (using CONNECT)",
+ CURLHELP_PROXY},
+ {" --pubkey <key>",
+ "SSH Public key file name",
+ CURLHELP_SFTP | CURLHELP_SCP | CURLHELP_AUTH},
+ {"-Q, --quote <command>",
+ "Send command(s) to server before transfer",
+ CURLHELP_FTP | CURLHELP_SFTP},
+ {" --random-file <file>",
+ "File for reading random data from",
+ CURLHELP_MISC},
+ {"-r, --range <range>",
+ "Retrieve only the bytes within RANGE",
+ CURLHELP_HTTP | CURLHELP_FTP | CURLHELP_SFTP | CURLHELP_FILE},
+ {" --rate <max request rate>",
+ "Request rate for serial transfers",
+ CURLHELP_CONNECTION},
+ {" --raw",
+ "Do HTTP \"raw\"; no transfer decoding",
+ CURLHELP_HTTP},
+ {"-e, --referer <URL>",
+ "Referrer URL",
+ CURLHELP_HTTP},
+ {"-J, --remote-header-name",
+ "Use the header-provided filename",
+ CURLHELP_OUTPUT},
+ {"-O, --remote-name",
+ "Write output to a file named as the remote file",
+ CURLHELP_IMPORTANT | CURLHELP_OUTPUT},
+ {" --remote-name-all",
+ "Use the remote file name for all URLs",
+ CURLHELP_OUTPUT},
+ {"-R, --remote-time",
+ "Set the remote file's time on the local output",
+ CURLHELP_OUTPUT},
+ {" --remove-on-error",
+ "Remove output file on errors",
+ CURLHELP_CURL},
+ {"-X, --request <method>",
+ "Specify request method to use",
+ CURLHELP_CONNECTION},
+ {" --request-target <path>",
+ "Specify the target for this request",
+ CURLHELP_HTTP},
+ {" --resolve <[+]host:port:addr[,addr]...>",
+ "Resolve the host+port to this address",
+ CURLHELP_CONNECTION | CURLHELP_DNS},
+ {" --retry <num>",
+ "Retry request if transient problems occur",
+ CURLHELP_CURL},
+ {" --retry-all-errors",
+ "Retry all errors (use with --retry)",
+ CURLHELP_CURL},
+ {" --retry-connrefused",
+ "Retry on connection refused (use with --retry)",
+ CURLHELP_CURL},
+ {" --retry-delay <seconds>",
+ "Wait time between retries",
+ CURLHELP_CURL},
+ {" --retry-max-time <seconds>",
+ "Retry only within this period",
+ CURLHELP_CURL},
+ {" --sasl-authzid <identity>",
+ "Identity for SASL PLAIN authentication",
+ CURLHELP_AUTH},
+ {" --sasl-ir",
+ "Enable initial response in SASL authentication",
+ CURLHELP_AUTH},
+ {" --service-name <name>",
+ "SPNEGO service name",
+ CURLHELP_MISC},
+ {"-S, --show-error",
+ "Show error even when -s is used",
+ CURLHELP_CURL},
+ {"-s, --silent",
+ "Silent mode",
+ CURLHELP_IMPORTANT | CURLHELP_VERBOSE},
+ {" --socks4 <host[:port]>",
+ "SOCKS4 proxy on given host + port",
+ CURLHELP_PROXY},
+ {" --socks4a <host[:port]>",
+ "SOCKS4a proxy on given host + port",
+ CURLHELP_PROXY},
+ {" --socks5 <host[:port]>",
+ "SOCKS5 proxy on given host + port",
+ CURLHELP_PROXY},
+ {" --socks5-basic",
+ "Enable username/password auth for SOCKS5 proxies",
+ CURLHELP_PROXY | CURLHELP_AUTH},
+ {" --socks5-gssapi",
+ "Enable GSS-API auth for SOCKS5 proxies",
+ CURLHELP_PROXY | CURLHELP_AUTH},
+ {" --socks5-gssapi-nec",
+ "Compatibility with NEC SOCKS5 server",
+ CURLHELP_PROXY | CURLHELP_AUTH},
+ {" --socks5-gssapi-service <name>",
+ "SOCKS5 proxy service name for GSS-API",
+ CURLHELP_PROXY | CURLHELP_AUTH},
+ {" --socks5-hostname <host[:port]>",
+ "SOCKS5 proxy, pass host name to proxy",
+ CURLHELP_PROXY},
+ {"-Y, --speed-limit <speed>",
+ "Stop transfers slower than this",
+ CURLHELP_CONNECTION},
+ {"-y, --speed-time <seconds>",
+ "Trigger 'speed-limit' abort after this time",
+ CURLHELP_CONNECTION},
+ {" --ssl",
+ "Try SSL/TLS",
+ CURLHELP_TLS},
+ {" --ssl-allow-beast",
+ "Allow security flaw to improve interop",
+ CURLHELP_TLS},
+ {" --ssl-auto-client-cert",
+ "Use auto client certificate (Schannel)",
+ CURLHELP_TLS},
+ {" --ssl-no-revoke",
+ "Disable cert revocation checks (Schannel)",
+ CURLHELP_TLS},
+ {" --ssl-reqd",
+ "Require SSL/TLS",
+ CURLHELP_TLS},
+ {" --ssl-revoke-best-effort",
+ "Ignore missing/offline cert CRL dist points",
+ CURLHELP_TLS},
+ {"-2, --sslv2",
+ "Use SSLv2",
+ CURLHELP_TLS},
+ {"-3, --sslv3",
+ "Use SSLv3",
+ CURLHELP_TLS},
+ {" --stderr <file>",
+ "Where to redirect stderr",
+ CURLHELP_VERBOSE},
+ {" --styled-output",
+ "Enable styled output for HTTP headers",
+ CURLHELP_VERBOSE},
+ {" --suppress-connect-headers",
+ "Suppress proxy CONNECT response headers",
+ CURLHELP_PROXY},
+ {" --tcp-fastopen",
+ "Use TCP Fast Open",
+ CURLHELP_CONNECTION},
+ {" --tcp-nodelay",
+ "Use the TCP_NODELAY option",
+ CURLHELP_CONNECTION},
+ {"-t, --telnet-option <opt=val>",
+ "Set telnet option",
+ CURLHELP_TELNET},
+ {" --tftp-blksize <value>",
+ "Set TFTP BLKSIZE option",
+ CURLHELP_TFTP},
+ {" --tftp-no-options",
+ "Do not send any TFTP options",
+ CURLHELP_TFTP},
+ {"-z, --time-cond <time>",
+ "Transfer based on a time condition",
+ CURLHELP_HTTP | CURLHELP_FTP},
+ {" --tls-max <VERSION>",
+ "Set maximum allowed TLS version",
+ CURLHELP_TLS},
+ {" --tls13-ciphers <ciphersuite list>",
+ "TLS 1.3 cipher suites to use",
+ CURLHELP_TLS},
+ {" --tlsauthtype <type>",
+ "TLS authentication type",
+ CURLHELP_TLS | CURLHELP_AUTH},
+ {" --tlspassword <string>",
+ "TLS password",
+ CURLHELP_TLS | CURLHELP_AUTH},
+ {" --tlsuser <name>",
+ "TLS user name",
+ CURLHELP_TLS | CURLHELP_AUTH},
+ {"-1, --tlsv1",
+ "Use TLSv1.0 or greater",
+ CURLHELP_TLS},
+ {" --tlsv1.0",
+ "Use TLSv1.0 or greater",
+ CURLHELP_TLS},
+ {" --tlsv1.1",
+ "Use TLSv1.1 or greater",
+ CURLHELP_TLS},
+ {" --tlsv1.2",
+ "Use TLSv1.2 or greater",
+ CURLHELP_TLS},
+ {" --tlsv1.3",
+ "Use TLSv1.3 or greater",
+ CURLHELP_TLS},
+ {" --tr-encoding",
+ "Request compressed transfer encoding",
+ CURLHELP_HTTP},
+ {" --trace <file>",
+ "Write a debug trace to FILE",
+ CURLHELP_VERBOSE},
+ {" --trace-ascii <file>",
+ "Like --trace, but without hex output",
+ CURLHELP_VERBOSE},
+ {" --trace-time",
+ "Add time stamps to trace/verbose output",
+ CURLHELP_VERBOSE},
+ {" --unix-socket <path>",
+ "Connect through this Unix domain socket",
+ CURLHELP_CONNECTION},
+ {"-T, --upload-file <file>",
+ "Transfer local FILE to destination",
+ CURLHELP_IMPORTANT | CURLHELP_UPLOAD},
+ {" --url <url>",
+ "URL to work with",
+ CURLHELP_CURL},
+ {"-B, --use-ascii",
+ "Use ASCII/text transfer",
+ CURLHELP_MISC},
+ {"-u, --user <user:password>",
+ "Server user and password",
+ CURLHELP_IMPORTANT | CURLHELP_AUTH},
+ {"-A, --user-agent <name>",
+ "Send User-Agent <name> to server",
+ CURLHELP_IMPORTANT | CURLHELP_HTTP},
+ {"-v, --verbose",
+ "Make the operation more talkative",
+ CURLHELP_IMPORTANT | CURLHELP_VERBOSE},
+ {"-V, --version",
+ "Show version number and quit",
+ CURLHELP_IMPORTANT | CURLHELP_CURL},
+ {"-w, --write-out <format>",
+ "Use output FORMAT after completion",
+ CURLHELP_VERBOSE},
+ {" --xattr",
+ "Store metadata in extended file attributes",
+ CURLHELP_MISC},
+ { NULL, NULL, CURLHELP_HIDDEN }
+};
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_main.c b/ap/lib/libcurl/curl-7.86.0/src/tool_main.c
new file mode 100755
index 0000000..434979d
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_main.c
@@ -0,0 +1,307 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#include <sys/stat.h>
+
+#ifdef WIN32
+#include <tchar.h>
+#endif
+
+#ifdef HAVE_SIGNAL_H
+#include <signal.h>
+#endif
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
+#ifdef USE_NSS
+#include <nspr.h>
+#include <plarenas.h>
+#endif
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_doswin.h"
+#include "tool_msgs.h"
+#include "tool_operate.h"
+#include "tool_panykey.h"
+#include "tool_vms.h"
+#include "tool_main.h"
+#include "tool_libinfo.h"
+
+/*
+ * This is low-level hard-hacking memory leak tracking and similar. Using
+ * the library level code from this client-side is ugly, but we do this
+ * anyway for convenience.
+ */
+#include "memdebug.h" /* keep this as LAST include */
+
+#ifdef __VMS
+/*
+ * vms_show is a global variable, used in main() as parameter for
+ * function vms_special_exit() to allow proper curl tool exiting.
+ * Its value may be set in other tool_*.c source files thanks to
+ * forward declaration present in tool_vms.h
+ */
+int vms_show = 0;
+#endif
+
+#ifdef __MINGW32__
+/*
+ * There seems to be no way to escape "*" in command-line arguments with MinGW
+ * when command-line argument globbing is enabled under the MSYS shell, so turn
+ * it off.
+ */
+int _CRT_glob = 0;
+#endif /* __MINGW32__ */
+
+/* if we build a static library for unit tests, there is no main() function */
+#ifndef UNITTESTS
+
+#if defined(HAVE_PIPE) && defined(HAVE_FCNTL)
+/*
+ * Ensure that file descriptors 0, 1 and 2 (stdin, stdout, stderr) are
+ * open before starting to run. Otherwise, the first three network
+ * sockets opened by curl could be used for input sources, downloaded data
+ * or error logs as they will effectively be stdin, stdout and/or stderr.
+ *
+ * fcntl's F_GETFD instruction returns -1 if the file descriptor is closed,
+ * otherwise it returns "the file descriptor flags (which typically can only
+ * be FD_CLOEXEC, which is not set here).
+ */
+static int main_checkfds(void)
+{
+ int fd[2];
+ while((fcntl(STDIN_FILENO, F_GETFD) == -1) ||
+ (fcntl(STDOUT_FILENO, F_GETFD) == -1) ||
+ (fcntl(STDERR_FILENO, F_GETFD) == -1))
+ if(pipe(fd))
+ return 1;
+ return 0;
+}
+#else
+#define main_checkfds() 0
+#endif
+
+#ifdef CURLDEBUG
+static void memory_tracking_init(void)
+{
+ char *env;
+ /* if CURL_MEMDEBUG is set, this starts memory tracking message logging */
+ env = curlx_getenv("CURL_MEMDEBUG");
+ if(env) {
+ /* use the value as file name */
+ char fname[CURL_MT_LOGFNAME_BUFSIZE];
+ if(strlen(env) >= CURL_MT_LOGFNAME_BUFSIZE)
+ env[CURL_MT_LOGFNAME_BUFSIZE-1] = '\0';
+ strcpy(fname, env);
+ curl_free(env);
+ curl_dbg_memdebug(fname);
+ /* this weird stuff here is to make curl_free() get called before
+ curl_dbg_memdebug() as otherwise memory tracking will log a free()
+ without an alloc! */
+ }
+ /* if CURL_MEMLIMIT is set, this enables fail-on-alloc-number-N feature */
+ env = curlx_getenv("CURL_MEMLIMIT");
+ if(env) {
+ char *endptr;
+ long num = strtol(env, &endptr, 10);
+ if((endptr != env) && (endptr == env + strlen(env)) && (num > 0))
+ curl_dbg_memlimit(num);
+ curl_free(env);
+ }
+}
+#else
+# define memory_tracking_init() Curl_nop_stmt
+#endif
+
+/*
+ * This is the main global constructor for the app. Call this before
+ * _any_ libcurl usage. If this fails, *NO* libcurl functions may be
+ * used, or havoc may be the result.
+ */
+static CURLcode main_init(struct GlobalConfig *config)
+{
+ CURLcode result = CURLE_OK;
+
+#if defined(__DJGPP__) || defined(__GO32__)
+ /* stop stat() wasting time */
+ _djstat_flags |= _STAT_INODE | _STAT_EXEC_MAGIC | _STAT_DIRSIZE;
+#endif
+
+ /* Initialise the global config */
+ config->showerror = -1; /* Will show errors */
+ config->errors = stderr; /* Default errors to stderr */
+ config->styled_output = TRUE; /* enable detection */
+ config->parallel_max = PARALLEL_DEFAULT;
+
+ /* Allocate the initial operate config */
+ config->first = config->last = malloc(sizeof(struct OperationConfig));
+ if(config->first) {
+ /* Perform the libcurl initialization */
+ result = curl_global_init(CURL_GLOBAL_DEFAULT);
+ if(!result) {
+ /* Get information about libcurl */
+ result = get_libcurl_info();
+
+ if(!result) {
+ /* Initialise the config */
+ config_init(config->first);
+ config->first->global = config;
+ }
+ else {
+ errorf(config, "error retrieving curl library information\n");
+ free(config->first);
+ }
+ }
+ else {
+ errorf(config, "error initializing curl library\n");
+ free(config->first);
+ }
+ }
+ else {
+ errorf(config, "error initializing curl\n");
+ result = CURLE_FAILED_INIT;
+ }
+
+ return result;
+}
+
+static void free_globalconfig(struct GlobalConfig *config)
+{
+ Curl_safefree(config->trace_dump);
+
+ if(config->errors_fopened && config->errors)
+ fclose(config->errors);
+ config->errors = NULL;
+
+ if(config->trace_fopened && config->trace_stream)
+ fclose(config->trace_stream);
+ config->trace_stream = NULL;
+
+ Curl_safefree(config->libcurl);
+}
+
+/*
+ * This is the main global destructor for the app. Call this after
+ * _all_ libcurl usage is done.
+ */
+static void main_free(struct GlobalConfig *config)
+{
+ /* Cleanup the easy handle */
+ /* Main cleanup */
+ curl_global_cleanup();
+#ifdef USE_NSS
+ if(PR_Initialized()) {
+ /* prevent valgrind from reporting still reachable mem from NSPR arenas */
+ PL_ArenaFinish();
+ /* prevent valgrind from reporting possibly lost memory (fd cache, ...) */
+ PR_Cleanup();
+ }
+#endif
+ free_globalconfig(config);
+
+ /* Free the config structures */
+ config_free(config->last);
+ config->first = NULL;
+ config->last = NULL;
+}
+
+/*
+** curl tool main function.
+*/
+#ifdef _UNICODE
+int wmain(int argc, wchar_t *argv[])
+#else
+int main(int argc, char *argv[])
+#endif
+{
+ CURLcode result = CURLE_OK;
+ struct GlobalConfig global;
+ memset(&global, 0, sizeof(global));
+
+#ifdef WIN32
+ /* Undocumented diagnostic option to list the full paths of all loaded
+ modules. This is purposely pre-init. */
+ if(argc == 2 && !_tcscmp(argv[1], _T("--dump-module-paths"))) {
+ struct curl_slist *item, *head = GetLoadedModulePaths();
+ for(item = head; item; item = item->next)
+ printf("%s\n", item->data);
+ curl_slist_free_all(head);
+ return head ? 0 : 1;
+ }
+ /* win32_init must be called before other init routines. */
+ result = win32_init();
+ if(result) {
+ fprintf(stderr, "curl: (%d) Windows-specific init failed.\n", result);
+ return result;
+ }
+#endif
+
+ if(main_checkfds()) {
+ fprintf(stderr, "curl: out of file descriptors\n");
+ return CURLE_FAILED_INIT;
+ }
+
+#if defined(HAVE_SIGNAL) && defined(SIGPIPE)
+ (void)signal(SIGPIPE, SIG_IGN);
+#endif
+
+ /* Initialize memory tracking */
+ memory_tracking_init();
+
+ /* Initialize the curl library - do not call any libcurl functions before
+ this point */
+ result = main_init(&global);
+ if(!result) {
+ /* Start our curl operation */
+ result = operate(&global, argc, argv);
+
+ /* Perform the main cleanup */
+ main_free(&global);
+ }
+
+#ifdef WIN32
+ /* Flush buffers of all streams opened in write or update mode */
+ fflush(NULL);
+#endif
+
+#ifdef __NOVELL_LIBC__
+ if(!getenv("_IN_NETWARE_BASH_"))
+ tool_pressanykey();
+#endif
+
+#ifdef __VMS
+ vms_special_exit(result, vms_show);
+#else
+ return (int)result;
+#endif
+}
+
+#endif /* ndef UNITTESTS */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_main.h b/ap/lib/libcurl/curl-7.86.0/src/tool_main.h
new file mode 100755
index 0000000..a1fd107
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_main.h
@@ -0,0 +1,48 @@
+#ifndef HEADER_CURL_TOOL_MAIN_H
+#define HEADER_CURL_TOOL_MAIN_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#define DEFAULT_MAXREDIRS 50L
+
+#define RETRY_SLEEP_DEFAULT 1000L /* ms */
+#define RETRY_SLEEP_MAX 600000L /* ms == 10 minutes */
+
+#define MAX_PARALLEL 300 /* conservative */
+#define PARALLEL_DEFAULT 50
+
+#ifndef STDIN_FILENO
+# define STDIN_FILENO fileno(stdin)
+#endif
+
+#ifndef STDOUT_FILENO
+# define STDOUT_FILENO fileno(stdout)
+#endif
+
+#ifndef STDERR_FILENO
+# define STDERR_FILENO fileno(stderr)
+#endif
+
+#endif /* HEADER_CURL_TOOL_MAIN_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_msgs.c b/ap/lib/libcurl/curl-7.86.0/src/tool_msgs.c
new file mode 100755
index 0000000..a880a66
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_msgs.c
@@ -0,0 +1,141 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_msgs.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+#define WARN_PREFIX "Warning: "
+#define NOTE_PREFIX "Note: "
+#define ERROR_PREFIX "curl: "
+
+static void voutf(struct GlobalConfig *config,
+ const char *prefix,
+ const char *fmt,
+ va_list ap)
+{
+ size_t width = (79 - strlen(prefix));
+ if(!config->mute) {
+ size_t len;
+ char *ptr;
+ char *print_buffer;
+
+ print_buffer = curlx_mvaprintf(fmt, ap);
+ if(!print_buffer)
+ return;
+ len = strlen(print_buffer);
+
+ ptr = print_buffer;
+ while(len > 0) {
+ fputs(prefix, config->errors);
+
+ if(len > width) {
+ size_t cut = width-1;
+
+ while(!ISBLANK(ptr[cut]) && cut) {
+ cut--;
+ }
+ if(0 == cut)
+ /* not a single cutting position was found, just cut it at the
+ max text width then! */
+ cut = width-1;
+
+ (void)fwrite(ptr, cut + 1, 1, config->errors);
+ fputs("\n", config->errors);
+ ptr += cut + 1; /* skip the space too */
+ len -= cut + 1;
+ }
+ else {
+ fputs(ptr, config->errors);
+ len = 0;
+ }
+ }
+ curl_free(print_buffer);
+ }
+}
+
+/*
+ * Emit 'note' formatted message on configured 'errors' stream, if verbose was
+ * selected.
+ */
+void notef(struct GlobalConfig *config, const char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ if(config->tracetype)
+ voutf(config, NOTE_PREFIX, fmt, ap);
+ va_end(ap);
+}
+
+/*
+ * Emit warning formatted message on configured 'errors' stream unless
+ * mute (--silent) was selected.
+ */
+
+void warnf(struct GlobalConfig *config, const char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ voutf(config, WARN_PREFIX, fmt, ap);
+ va_end(ap);
+}
+/*
+ * Emit help formatted message on given stream. This is for errors with or
+ * related to command line arguments.
+ */
+void helpf(FILE *errors, const char *fmt, ...)
+{
+ if(fmt) {
+ va_list ap;
+ va_start(ap, fmt);
+ fputs("curl: ", errors); /* prefix it */
+ vfprintf(errors, fmt, ap);
+ va_end(ap);
+ }
+ fprintf(errors, "curl: try 'curl --help' "
+#ifdef USE_MANUAL
+ "or 'curl --manual' "
+#endif
+ "for more information\n");
+}
+
+/*
+ * Emit error message on error stream if not muted. When errors are not tied
+ * to command line arguments, use helpf() for such errors.
+ */
+void errorf(struct GlobalConfig *config, const char *fmt, ...)
+{
+ if(!config->mute) {
+ va_list ap;
+ va_start(ap, fmt);
+ voutf(config, ERROR_PREFIX, fmt, ap);
+ va_end(ap);
+ }
+}
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_msgs.h b/ap/lib/libcurl/curl-7.86.0/src/tool_msgs.h
new file mode 100755
index 0000000..e35884e
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_msgs.h
@@ -0,0 +1,33 @@
+#ifndef HEADER_CURL_TOOL_MSGS_H
+#define HEADER_CURL_TOOL_MSGS_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+void warnf(struct GlobalConfig *config, const char *fmt, ...);
+void notef(struct GlobalConfig *config, const char *fmt, ...);
+void helpf(FILE *errors, const char *fmt, ...);
+void errorf(struct GlobalConfig *config, const char *fmt, ...);
+
+#endif /* HEADER_CURL_TOOL_MSGS_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_operate.c b/ap/lib/libcurl/curl-7.86.0/src/tool_operate.c
new file mode 100755
index 0000000..43c1c5e
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_operate.c
@@ -0,0 +1,2723 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#ifdef HAVE_FCNTL_H
+# include <fcntl.h>
+#endif
+
+#ifdef HAVE_LOCALE_H
+# include <locale.h>
+#endif
+
+#ifdef HAVE_SYS_SELECT_H
+# include <sys/select.h>
+#elif defined(HAVE_UNISTD_H)
+# include <unistd.h>
+#endif
+
+#ifdef __VMS
+# include <fabdef.h>
+#endif
+
+#ifdef __AMIGA__
+# include <proto/dos.h>
+#endif
+
+#include "strcase.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_binmode.h"
+#include "tool_cfgable.h"
+#include "tool_cb_dbg.h"
+#include "tool_cb_hdr.h"
+#include "tool_cb_prg.h"
+#include "tool_cb_rea.h"
+#include "tool_cb_see.h"
+#include "tool_cb_wrt.h"
+#include "tool_dirhie.h"
+#include "tool_doswin.h"
+#include "tool_easysrc.h"
+#include "tool_filetime.h"
+#include "tool_getparam.h"
+#include "tool_helpers.h"
+#include "tool_findfile.h"
+#include "tool_libinfo.h"
+#include "tool_main.h"
+#include "tool_msgs.h"
+#include "tool_operate.h"
+#include "tool_operhlp.h"
+#include "tool_paramhlp.h"
+#include "tool_parsecfg.h"
+#include "tool_setopt.h"
+#include "tool_sleep.h"
+#include "tool_urlglob.h"
+#include "tool_util.h"
+#include "tool_writeout.h"
+#include "tool_xattr.h"
+#include "tool_vms.h"
+#include "tool_help.h"
+#include "tool_hugehelp.h"
+#include "tool_progress.h"
+#include "dynbuf.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+#ifdef CURLDEBUG
+/* libcurl's debug builds provide an extra function */
+CURLcode curl_easy_perform_ev(CURL *easy);
+#endif
+
+#ifndef O_BINARY
+/* since O_BINARY as used in bitmasks, setting it to zero makes it usable in
+ source code but yet it doesn't ruin anything */
+# define O_BINARY 0
+#endif
+
+#define CURL_CA_CERT_ERRORMSG \
+ "More details here: https://curl.se/docs/sslcerts.html\n\n" \
+ "curl failed to verify the legitimacy of the server and therefore " \
+ "could not\nestablish a secure connection to it. To learn more about " \
+ "this situation and\nhow to fix it, please visit the web page mentioned " \
+ "above.\n"
+
+static CURLcode single_transfer(struct GlobalConfig *global,
+ struct OperationConfig *config,
+ CURLSH *share,
+ bool capath_from_env,
+ bool *added);
+static CURLcode create_transfer(struct GlobalConfig *global,
+ CURLSH *share,
+ bool *added);
+
+static bool is_fatal_error(CURLcode code)
+{
+ switch(code) {
+ case CURLE_FAILED_INIT:
+ case CURLE_OUT_OF_MEMORY:
+ case CURLE_UNKNOWN_OPTION:
+ case CURLE_FUNCTION_NOT_FOUND:
+ case CURLE_BAD_FUNCTION_ARGUMENT:
+ /* critical error */
+ return TRUE;
+ default:
+ break;
+ }
+
+ /* no error or not critical */
+ return FALSE;
+}
+
+/*
+ * Check if a given string is a PKCS#11 URI
+ */
+static bool is_pkcs11_uri(const char *string)
+{
+ if(curl_strnequal(string, "pkcs11:", 7)) {
+ return TRUE;
+ }
+ else {
+ return FALSE;
+ }
+}
+
+#ifdef __VMS
+/*
+ * get_vms_file_size does what it takes to get the real size of the file
+ *
+ * For fixed files, find out the size of the EOF block and adjust.
+ *
+ * For all others, have to read the entire file in, discarding the contents.
+ * Most posted text files will be small, and binary files like zlib archives
+ * and CD/DVD images should be either a STREAM_LF format or a fixed format.
+ *
+ */
+static curl_off_t vms_realfilesize(const char *name,
+ const struct_stat *stat_buf)
+{
+ char buffer[8192];
+ curl_off_t count;
+ int ret_stat;
+ FILE * file;
+
+ /* !checksrc! disable FOPENMODE 1 */
+ file = fopen(name, "r"); /* VMS */
+ if(!file) {
+ return 0;
+ }
+ count = 0;
+ ret_stat = 1;
+ while(ret_stat > 0) {
+ ret_stat = fread(buffer, 1, sizeof(buffer), file);
+ if(ret_stat)
+ count += ret_stat;
+ }
+ fclose(file);
+
+ return count;
+}
+
+/*
+ *
+ * VmsSpecialSize checks to see if the stat st_size can be trusted and
+ * if not to call a routine to get the correct size.
+ *
+ */
+static curl_off_t VmsSpecialSize(const char *name,
+ const struct_stat *stat_buf)
+{
+ switch(stat_buf->st_fab_rfm) {
+ case FAB$C_VAR:
+ case FAB$C_VFC:
+ return vms_realfilesize(name, stat_buf);
+ break;
+ default:
+ return stat_buf->st_size;
+ }
+}
+#endif /* __VMS */
+
+#define BUFFER_SIZE (100*1024)
+
+struct per_transfer *transfers; /* first node */
+static struct per_transfer *transfersl; /* last node */
+static long all_pers;
+
+/* add_per_transfer creates a new 'per_transfer' node in the linked
+ list of transfers */
+static CURLcode add_per_transfer(struct per_transfer **per)
+{
+ struct per_transfer *p;
+ p = calloc(sizeof(struct per_transfer), 1);
+ if(!p)
+ return CURLE_OUT_OF_MEMORY;
+ if(!transfers)
+ /* first entry */
+ transfersl = transfers = p;
+ else {
+ /* make the last node point to the new node */
+ transfersl->next = p;
+ /* make the new node point back to the formerly last node */
+ p->prev = transfersl;
+ /* move the last node pointer to the new entry */
+ transfersl = p;
+ }
+ *per = p;
+ all_xfers++; /* count total number of transfers added */
+ all_pers++;
+
+ return CURLE_OK;
+}
+
+/* Remove the specified transfer from the list (and free it), return the next
+ in line */
+static struct per_transfer *del_per_transfer(struct per_transfer *per)
+{
+ struct per_transfer *n;
+ struct per_transfer *p;
+ DEBUGASSERT(transfers);
+ DEBUGASSERT(transfersl);
+ DEBUGASSERT(per);
+
+ n = per->next;
+ p = per->prev;
+
+ if(p)
+ p->next = n;
+ else
+ transfers = n;
+
+ if(n)
+ n->prev = p;
+ else
+ transfersl = p;
+
+ free(per);
+ all_pers--;
+
+ return n;
+}
+
+static CURLcode pre_transfer(struct GlobalConfig *global,
+ struct per_transfer *per)
+{
+ curl_off_t uploadfilesize = -1;
+ struct_stat fileinfo;
+ CURLcode result = CURLE_OK;
+
+ if(per->uploadfile && !stdin_upload(per->uploadfile)) {
+ /* VMS Note:
+ *
+ * Reading binary from files can be a problem... Only FIXED, VAR
+ * etc WITHOUT implied CC will work. Others need a \n appended to
+ * a line
+ *
+ * - Stat gives a size but this is UNRELIABLE in VMS. E.g.
+ * a fixed file with implied CC needs to have a byte added for every
+ * record processed, this can be derived from Filesize & recordsize
+ * for VARiable record files the records need to be counted! for
+ * every record add 1 for linefeed and subtract 2 for the record
+ * header for VARIABLE header files only the bare record data needs
+ * to be considered with one appended if implied CC
+ */
+#ifdef __VMS
+ /* Calculate the real upload size for VMS */
+ per->infd = -1;
+ if(stat(per->uploadfile, &fileinfo) == 0) {
+ fileinfo.st_size = VmsSpecialSize(uploadfile, &fileinfo);
+ switch(fileinfo.st_fab_rfm) {
+ case FAB$C_VAR:
+ case FAB$C_VFC:
+ case FAB$C_STMCR:
+ per->infd = open(per->uploadfile, O_RDONLY | O_BINARY);
+ break;
+ default:
+ per->infd = open(per->uploadfile, O_RDONLY | O_BINARY,
+ "rfm=stmlf", "ctx=stm");
+ }
+ }
+ if(per->infd == -1)
+#else
+ per->infd = open(per->uploadfile, O_RDONLY | O_BINARY);
+ if((per->infd == -1) || fstat(per->infd, &fileinfo))
+#endif
+ {
+ helpf(global->errors, "Can't open '%s'!\n", per->uploadfile);
+ if(per->infd != -1) {
+ close(per->infd);
+ per->infd = STDIN_FILENO;
+ }
+ return CURLE_READ_ERROR;
+ }
+ per->infdopen = TRUE;
+
+ /* we ignore file size for char/block devices, sockets, etc. */
+ if(S_ISREG(fileinfo.st_mode))
+ uploadfilesize = fileinfo.st_size;
+
+ if(uploadfilesize != -1) {
+ struct OperationConfig *config = per->config; /* for the macro below */
+#ifdef CURL_DISABLE_LIBCURL_OPTION
+ (void)config;
+#endif
+ my_setopt(per->curl, CURLOPT_INFILESIZE_LARGE, uploadfilesize);
+ }
+ per->input.fd = per->infd;
+ }
+ return result;
+}
+
+#ifdef __AMIGA__
+static void AmigaSetComment(struct per_transfer *per,
+ CURLcode result)
+{
+ struct OutStruct *outs = &per->outs;
+ if(!result && outs->s_isreg && outs->filename) {
+ /* Set the url (up to 80 chars) as comment for the file */
+ if(strlen(per->this_url) > 78)
+ per->this_url[79] = '\0';
+ SetComment(outs->filename, per->this_url);
+ }
+}
+#else
+#define AmigaSetComment(x,y) Curl_nop_stmt
+#endif
+
+/* When doing serial transfers, we use a single fixed error area */
+static char global_errorbuffer[CURL_ERROR_SIZE];
+
+void single_transfer_cleanup(struct OperationConfig *config)
+{
+ if(config) {
+ struct State *state = &config->state;
+ if(state->urls) {
+ /* Free list of remaining URLs */
+ glob_cleanup(state->urls);
+ state->urls = NULL;
+ }
+ Curl_safefree(state->outfiles);
+ Curl_safefree(state->httpgetfields);
+ Curl_safefree(state->uploadfile);
+ if(state->inglob) {
+ /* Free list of globbed upload files */
+ glob_cleanup(state->inglob);
+ state->inglob = NULL;
+ }
+ }
+}
+
+/*
+ * Call this after a transfer has completed.
+ */
+static CURLcode post_per_transfer(struct GlobalConfig *global,
+ struct per_transfer *per,
+ CURLcode result,
+ bool *retryp,
+ long *delay) /* milliseconds! */
+{
+ struct OutStruct *outs = &per->outs;
+ CURL *curl = per->curl;
+ struct OperationConfig *config = per->config;
+
+ if(!curl || !config)
+ return result;
+
+ *retryp = FALSE;
+ *delay = 0; /* for no retry, keep it zero */
+
+ if(per->infdopen)
+ close(per->infd);
+
+#ifdef __VMS
+ if(is_vms_shell()) {
+ /* VMS DCL shell behavior */
+ if(!global->showerror)
+ vms_show = VMSSTS_HIDE;
+ }
+ else
+#endif
+ if(!config->synthetic_error && result && global->showerror) {
+ const char *msg = per->errorbuffer;
+ fprintf(global->errors, "curl: (%d) %s\n", result,
+ (msg && msg[0]) ? msg : curl_easy_strerror(result));
+ if(result == CURLE_PEER_FAILED_VERIFICATION)
+ fputs(CURL_CA_CERT_ERRORMSG, global->errors);
+ }
+ else if(config->failwithbody) {
+ /* if HTTP response >= 400, return error */
+ long code = 0;
+ curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &code);
+ if(code >= 400) {
+ if(global->showerror)
+ fprintf(global->errors,
+ "curl: (%d) The requested URL returned error: %ld\n",
+ CURLE_HTTP_RETURNED_ERROR, code);
+ result = CURLE_HTTP_RETURNED_ERROR;
+ }
+ }
+ /* Set file extended attributes */
+ if(!result && config->xattr && outs->fopened && outs->stream) {
+ int rc = fwrite_xattr(curl, per->this_url, fileno(outs->stream));
+ if(rc)
+ warnf(config->global, "Error setting extended attributes on '%s': %s\n",
+ outs->filename, strerror(errno));
+ }
+
+ if(!result && !outs->stream && !outs->bytes) {
+ /* we have received no data despite the transfer was successful
+ ==> force creation of an empty output file (if an output file
+ was specified) */
+ long cond_unmet = 0L;
+ /* do not create (or even overwrite) the file in case we get no
+ data because of unmet condition */
+ curl_easy_getinfo(curl, CURLINFO_CONDITION_UNMET, &cond_unmet);
+ if(!cond_unmet && !tool_create_output_file(outs, config))
+ result = CURLE_WRITE_ERROR;
+ }
+
+ if(!outs->s_isreg && outs->stream) {
+ /* Dump standard stream buffered data */
+ int rc = fflush(outs->stream);
+ if(!result && rc) {
+ /* something went wrong in the writing process */
+ result = CURLE_WRITE_ERROR;
+ if(global->showerror)
+ fprintf(global->errors, "curl: (%d) Failed writing body\n", result);
+ }
+ }
+
+ /* if retry-max-time is non-zero, make sure we haven't exceeded the
+ time */
+ if(per->retry_numretries &&
+ (!config->retry_maxtime ||
+ (tvdiff(tvnow(), per->retrystart) <
+ config->retry_maxtime*1000L)) ) {
+ enum {
+ RETRY_NO,
+ RETRY_ALL_ERRORS,
+ RETRY_TIMEOUT,
+ RETRY_CONNREFUSED,
+ RETRY_HTTP,
+ RETRY_FTP,
+ RETRY_LAST /* not used */
+ } retry = RETRY_NO;
+ long response = 0;
+ if((CURLE_OPERATION_TIMEDOUT == result) ||
+ (CURLE_COULDNT_RESOLVE_HOST == result) ||
+ (CURLE_COULDNT_RESOLVE_PROXY == result) ||
+ (CURLE_FTP_ACCEPT_TIMEOUT == result))
+ /* retry timeout always */
+ retry = RETRY_TIMEOUT;
+ else if(config->retry_connrefused &&
+ (CURLE_COULDNT_CONNECT == result)) {
+ long oserrno = 0;
+ curl_easy_getinfo(curl, CURLINFO_OS_ERRNO, &oserrno);
+ if(ECONNREFUSED == oserrno)
+ retry = RETRY_CONNREFUSED;
+ }
+ else if((CURLE_OK == result) ||
+ ((config->failonerror || config->failwithbody) &&
+ (CURLE_HTTP_RETURNED_ERROR == result))) {
+ /* If it returned OK. _or_ failonerror was enabled and it
+ returned due to such an error, check for HTTP transient
+ errors to retry on. */
+ const char *scheme;
+ curl_easy_getinfo(curl, CURLINFO_SCHEME, &scheme);
+ scheme = proto_token(scheme);
+ if(scheme == proto_http || scheme == proto_https) {
+ /* This was HTTP(S) */
+ curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
+
+ switch(response) {
+ case 408: /* Request Timeout */
+ case 429: /* Too Many Requests (RFC6585) */
+ case 500: /* Internal Server Error */
+ case 502: /* Bad Gateway */
+ case 503: /* Service Unavailable */
+ case 504: /* Gateway Timeout */
+ retry = RETRY_HTTP;
+ /*
+ * At this point, we have already written data to the output
+ * file (or terminal). If we write to a file, we must rewind
+ * or close/re-open the file so that the next attempt starts
+ * over from the beginning.
+ *
+ * TODO: similar action for the upload case. We might need
+ * to start over reading from a previous point if we have
+ * uploaded something when this was returned.
+ */
+ break;
+ }
+ }
+ } /* if CURLE_OK */
+ else if(result) {
+ const char *scheme;
+
+ curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
+ curl_easy_getinfo(curl, CURLINFO_SCHEME, &scheme);
+ scheme = proto_token(scheme);
+
+ if((scheme == proto_ftp || scheme == proto_ftps) && response / 100 == 4)
+ /*
+ * This is typically when the FTP server only allows a certain
+ * amount of users and we are not one of them. All 4xx codes
+ * are transient.
+ */
+ retry = RETRY_FTP;
+ }
+
+ if(result && !retry && config->retry_all_errors)
+ retry = RETRY_ALL_ERRORS;
+
+ if(retry) {
+ long sleeptime = 0;
+ curl_off_t retry_after = 0;
+ static const char * const m[]={
+ NULL,
+ "(retrying all errors)",
+ ": timeout",
+ ": connection refused",
+ ": HTTP error",
+ ": FTP error"
+ };
+
+ sleeptime = per->retry_sleep;
+ if(RETRY_HTTP == retry) {
+ curl_easy_getinfo(curl, CURLINFO_RETRY_AFTER, &retry_after);
+ if(retry_after) {
+ /* store in a 'long', make sure it doesn't overflow */
+ if(retry_after > LONG_MAX/1000)
+ sleeptime = LONG_MAX;
+ else
+ sleeptime = (long)retry_after * 1000; /* milliseconds */
+
+ /* if adding retry_after seconds to the process would exceed the
+ maximum time allowed for retrying, then exit the retries right
+ away */
+ if(config->retry_maxtime) {
+ curl_off_t seconds = tvdiff(tvnow(), per->retrystart)/1000;
+
+ if((CURL_OFF_T_MAX - retry_after < seconds) ||
+ (seconds + retry_after > config->retry_maxtime)) {
+ warnf(config->global, "The Retry-After: time would "
+ "make this command line exceed the maximum allowed time "
+ "for retries.");
+ goto noretry;
+ }
+ }
+ }
+ }
+ warnf(config->global, "Problem %s. "
+ "Will retry in %ld seconds. "
+ "%ld retries left.\n",
+ m[retry], sleeptime/1000L, per->retry_numretries);
+
+ per->retry_numretries--;
+ if(!config->retry_delay) {
+ per->retry_sleep *= 2;
+ if(per->retry_sleep > RETRY_SLEEP_MAX)
+ per->retry_sleep = RETRY_SLEEP_MAX;
+ }
+ if(outs->bytes && outs->filename && outs->stream) {
+ int rc;
+ /* We have written data to an output file, we truncate file
+ */
+ if(!global->mute)
+ fprintf(global->errors, "Throwing away %"
+ CURL_FORMAT_CURL_OFF_T " bytes\n",
+ outs->bytes);
+ fflush(outs->stream);
+ /* truncate file at the position where we started appending */
+#ifdef HAVE_FTRUNCATE
+ if(ftruncate(fileno(outs->stream), outs->init)) {
+ /* when truncate fails, we can't just append as then we'll
+ create something strange, bail out */
+ if(global->showerror)
+ fprintf(global->errors,
+ "curl: (23) Failed to truncate file\n");
+ return CURLE_WRITE_ERROR;
+ }
+ /* now seek to the end of the file, the position where we
+ just truncated the file in a large file-safe way */
+ rc = fseek(outs->stream, 0, SEEK_END);
+#else
+ /* ftruncate is not available, so just reposition the file
+ to the location we would have truncated it. This won't
+ work properly with large files on 32-bit systems, but
+ most of those will have ftruncate. */
+ rc = fseek(outs->stream, (long)outs->init, SEEK_SET);
+#endif
+ if(rc) {
+ if(global->showerror)
+ fprintf(global->errors,
+ "curl: (23) Failed seeking to end of file\n");
+ return CURLE_WRITE_ERROR;
+ }
+ outs->bytes = 0; /* clear for next round */
+ }
+ *retryp = TRUE;
+ *delay = sleeptime;
+ return CURLE_OK;
+ }
+ } /* if retry_numretries */
+ noretry:
+
+ if((global->progressmode == CURL_PROGRESS_BAR) &&
+ per->progressbar.calls)
+ /* if the custom progress bar has been displayed, we output a
+ newline here */
+ fputs("\n", per->progressbar.out);
+
+ /* Close the outs file */
+ if(outs->fopened && outs->stream) {
+ int rc = fclose(outs->stream);
+ if(!result && rc) {
+ /* something went wrong in the writing process */
+ result = CURLE_WRITE_ERROR;
+ if(global->showerror)
+ fprintf(global->errors, "curl: (%d) Failed writing body\n", result);
+ }
+ if(result && config->rm_partial) {
+ notef(global, "Removing output file: %s\n", outs->filename);
+ unlink(outs->filename);
+ }
+ }
+
+ AmigaSetComment(per, result);
+
+ /* File time can only be set _after_ the file has been closed */
+ if(!result && config->remote_time && outs->s_isreg && outs->filename) {
+ /* Ask libcurl if we got a remote file time */
+ curl_off_t filetime = -1;
+ curl_easy_getinfo(curl, CURLINFO_FILETIME_T, &filetime);
+ setfiletime(filetime, outs->filename, global);
+ }
+
+ /* Write the --write-out data before cleanup but after result is final */
+ if(config->writeout)
+ ourWriteOut(config->writeout, per, result);
+
+ /* Close function-local opened file descriptors */
+ if(per->heads.fopened && per->heads.stream)
+ fclose(per->heads.stream);
+
+ if(per->heads.alloc_filename)
+ Curl_safefree(per->heads.filename);
+
+ if(per->etag_save.fopened && per->etag_save.stream)
+ fclose(per->etag_save.stream);
+
+ if(per->etag_save.alloc_filename)
+ Curl_safefree(per->etag_save.filename);
+
+ curl_easy_cleanup(per->curl);
+ if(outs->alloc_filename)
+ free(outs->filename);
+ free(per->this_url);
+ free(per->outfile);
+ free(per->uploadfile);
+ if(global->parallel)
+ free(per->errorbuffer);
+
+ return result;
+}
+
+/*
+ * Return the protocol token for the scheme used in the given URL
+ */
+static const char *url_proto(char *url)
+{
+ CURLU *uh = curl_url();
+ const char *proto = NULL;
+
+ if(uh) {
+ if(url) {
+ if(!curl_url_set(uh, CURLUPART_URL, url,
+ CURLU_GUESS_SCHEME | CURLU_NON_SUPPORT_SCHEME)) {
+ char *schemep = NULL;
+ if(!curl_url_get(uh, CURLUPART_SCHEME, &schemep,
+ CURLU_DEFAULT_SCHEME) &&
+ schemep) {
+ proto = proto_token(schemep);
+ curl_free(schemep);
+ }
+ }
+ }
+ curl_url_cleanup(uh);
+ }
+ return proto? proto: "???"; /* Never match if not found. */
+}
+
+/* create the next (singular) transfer */
+static CURLcode single_transfer(struct GlobalConfig *global,
+ struct OperationConfig *config,
+ CURLSH *share,
+ bool capath_from_env,
+ bool *added)
+{
+ CURLcode result = CURLE_OK;
+ struct getout *urlnode;
+ bool orig_noprogress = global->noprogress;
+ bool orig_isatty = global->isatty;
+ struct State *state = &config->state;
+ char *httpgetfields = state->httpgetfields;
+ *added = FALSE; /* not yet */
+
+ if(config->postfields) {
+ if(config->use_httpget) {
+ if(!httpgetfields) {
+ /* Use the postfields data for a http get */
+ httpgetfields = state->httpgetfields = strdup(config->postfields);
+ Curl_safefree(config->postfields);
+ if(!httpgetfields) {
+ errorf(global, "out of memory\n");
+ result = CURLE_OUT_OF_MEMORY;
+ }
+ else if(SetHTTPrequest(config,
+ (config->no_body?HTTPREQ_HEAD:HTTPREQ_GET),
+ &config->httpreq)) {
+ result = CURLE_FAILED_INIT;
+ }
+ }
+ }
+ else {
+ if(SetHTTPrequest(config, HTTPREQ_SIMPLEPOST, &config->httpreq))
+ result = CURLE_FAILED_INIT;
+ }
+ if(result) {
+ single_transfer_cleanup(config);
+ return result;
+ }
+ }
+ if(!state->urlnode) {
+ /* first time caller, setup things */
+ state->urlnode = config->url_list;
+ state->infilenum = 1;
+ }
+
+ while(config->state.urlnode) {
+ static bool warn_more_options = FALSE;
+ char *infiles; /* might be a glob pattern */
+ struct URLGlob *inglob = state->inglob;
+ urlnode = config->state.urlnode;
+
+ /* urlnode->url is the full URL (it might be NULL) */
+
+ if(!urlnode->url) {
+ /* This node has no URL. Free node data without destroying the
+ node itself nor modifying next pointer and continue to next */
+ Curl_safefree(urlnode->outfile);
+ Curl_safefree(urlnode->infile);
+ urlnode->flags = 0;
+ config->state.urlnode = urlnode->next;
+ state->up = 0;
+ if(!warn_more_options) {
+ /* only show this once */
+ warnf(config->global, "Got more output options than URLs\n");
+ warn_more_options = TRUE;
+ }
+ continue; /* next URL please */
+ }
+
+ /* save outfile pattern before expansion */
+ if(urlnode->outfile && !state->outfiles) {
+ state->outfiles = strdup(urlnode->outfile);
+ if(!state->outfiles) {
+ errorf(global, "out of memory\n");
+ result = CURLE_OUT_OF_MEMORY;
+ break;
+ }
+ }
+
+ infiles = urlnode->infile;
+
+ if(!config->globoff && infiles && !inglob) {
+ /* Unless explicitly shut off */
+ result = glob_url(&inglob, infiles, &state->infilenum,
+ global->showerror?global->errors:NULL);
+ if(result)
+ break;
+ config->state.inglob = inglob;
+ }
+
+ {
+ unsigned long urlnum;
+
+ if(!state->up && !infiles)
+ Curl_nop_stmt;
+ else {
+ if(!state->uploadfile) {
+ if(inglob) {
+ result = glob_next_url(&state->uploadfile, inglob);
+ if(result == CURLE_OUT_OF_MEMORY)
+ errorf(global, "out of memory\n");
+ }
+ else if(!state->up) {
+ state->uploadfile = strdup(infiles);
+ if(!state->uploadfile) {
+ errorf(global, "out of memory\n");
+ result = CURLE_OUT_OF_MEMORY;
+ }
+ }
+ }
+ if(result)
+ break;
+ }
+
+ if(!state->urlnum) {
+ if(!config->globoff) {
+ /* Unless explicitly shut off, we expand '{...}' and '[...]'
+ expressions and return total number of URLs in pattern set */
+ result = glob_url(&state->urls, urlnode->url, &state->urlnum,
+ global->showerror?global->errors:NULL);
+ if(result)
+ break;
+ urlnum = state->urlnum;
+ }
+ else
+ urlnum = 1; /* without globbing, this is a single URL */
+ }
+ else
+ urlnum = state->urlnum;
+
+ if(state->up < state->infilenum) {
+ struct per_transfer *per = NULL;
+ struct OutStruct *outs;
+ struct InStruct *input;
+ struct OutStruct *heads;
+ struct OutStruct *etag_save;
+ struct HdrCbData *hdrcbdata = NULL;
+ struct OutStruct etag_first;
+ const char *use_proto;
+ CURL *curl;
+
+ /* --etag-save */
+ memset(&etag_first, 0, sizeof(etag_first));
+ etag_save = &etag_first;
+ etag_save->stream = stdout;
+
+ /* --etag-compare */
+ if(config->etag_compare_file) {
+ char *etag_from_file = NULL;
+ char *header = NULL;
+ ParameterError pe;
+
+ /* open file for reading: */
+ FILE *file = fopen(config->etag_compare_file, FOPEN_READTEXT);
+ if(!file && !config->etag_save_file) {
+ errorf(global,
+ "Failed to open %s\n", config->etag_compare_file);
+ result = CURLE_READ_ERROR;
+ break;
+ }
+
+ if((PARAM_OK == file2string(&etag_from_file, file)) &&
+ etag_from_file) {
+ header = aprintf("If-None-Match: %s", etag_from_file);
+ Curl_safefree(etag_from_file);
+ }
+ else
+ header = aprintf("If-None-Match: \"\"");
+
+ if(!header) {
+ if(file)
+ fclose(file);
+ errorf(global,
+ "Failed to allocate memory for custom etag header\n");
+ result = CURLE_OUT_OF_MEMORY;
+ break;
+ }
+
+ /* add Etag from file to list of custom headers */
+ pe = add2list(&config->headers, header);
+ Curl_safefree(header);
+
+ if(file)
+ fclose(file);
+ if(pe != PARAM_OK) {
+ result = CURLE_OUT_OF_MEMORY;
+ break;
+ }
+ }
+
+ if(config->etag_save_file) {
+ /* open file for output: */
+ if(strcmp(config->etag_save_file, "-")) {
+ FILE *newfile = fopen(config->etag_save_file, "wb");
+ if(!newfile) {
+ warnf(global, "Failed creating file for saving etags: \"%s\". "
+ "Skip this transfer\n", config->etag_save_file);
+ Curl_safefree(state->outfiles);
+ glob_cleanup(state->urls);
+ return CURLE_OK;
+ }
+ else {
+ etag_save->filename = config->etag_save_file;
+ etag_save->s_isreg = TRUE;
+ etag_save->fopened = TRUE;
+ etag_save->stream = newfile;
+ }
+ }
+ else {
+ /* always use binary mode for protocol header output */
+ set_binmode(etag_save->stream);
+ }
+ }
+
+ curl = curl_easy_init();
+ if(curl)
+ result = add_per_transfer(&per);
+ else
+ result = CURLE_OUT_OF_MEMORY;
+ if(result) {
+ curl_easy_cleanup(curl);
+ if(etag_save->fopened)
+ fclose(etag_save->stream);
+ break;
+ }
+ per->etag_save = etag_first; /* copy the whole struct */
+ if(state->uploadfile) {
+ per->uploadfile = strdup(state->uploadfile);
+ if(!per->uploadfile) {
+ curl_easy_cleanup(curl);
+ result = CURLE_OUT_OF_MEMORY;
+ break;
+ }
+ if(SetHTTPrequest(config, HTTPREQ_PUT, &config->httpreq)) {
+ Curl_safefree(per->uploadfile);
+ curl_easy_cleanup(curl);
+ result = CURLE_FAILED_INIT;
+ break;
+ }
+ }
+ *added = TRUE;
+ per->config = config;
+ per->curl = curl;
+ per->urlnum = urlnode->num;
+
+ /* default headers output stream is stdout */
+ heads = &per->heads;
+ heads->stream = stdout;
+
+ /* Single header file for all URLs */
+ if(config->headerfile) {
+ /* open file for output: */
+ if(strcmp(config->headerfile, "-")) {
+ FILE *newfile;
+ newfile = fopen(config->headerfile, per->prev == NULL?"wb":"ab");
+ if(!newfile) {
+ warnf(global, "Failed to open %s\n", config->headerfile);
+ result = CURLE_WRITE_ERROR;
+ break;
+ }
+ else {
+ heads->filename = config->headerfile;
+ heads->s_isreg = TRUE;
+ heads->fopened = TRUE;
+ heads->stream = newfile;
+ }
+ }
+ else {
+ /* always use binary mode for protocol header output */
+ set_binmode(heads->stream);
+ }
+ }
+
+ hdrcbdata = &per->hdrcbdata;
+
+ outs = &per->outs;
+ input = &per->input;
+
+ per->outfile = NULL;
+ per->infdopen = FALSE;
+ per->infd = STDIN_FILENO;
+
+ /* default output stream is stdout */
+ outs->stream = stdout;
+
+ if(state->urls) {
+ result = glob_next_url(&per->this_url, state->urls);
+ if(result)
+ break;
+ }
+ else if(!state->li) {
+ per->this_url = strdup(urlnode->url);
+ if(!per->this_url) {
+ result = CURLE_OUT_OF_MEMORY;
+ break;
+ }
+ }
+ else
+ per->this_url = NULL;
+ if(!per->this_url)
+ break;
+
+ if(state->outfiles) {
+ per->outfile = strdup(state->outfiles);
+ if(!per->outfile) {
+ result = CURLE_OUT_OF_MEMORY;
+ break;
+ }
+ }
+
+ if(((urlnode->flags&GETOUT_USEREMOTE) ||
+ (per->outfile && strcmp("-", per->outfile)))) {
+
+ /*
+ * We have specified a file name to store the result in, or we have
+ * decided we want to use the remote file name.
+ */
+
+ if(!per->outfile) {
+ /* extract the file name from the URL */
+ result = get_url_file_name(&per->outfile, per->this_url);
+ if(result) {
+ errorf(global, "Failed to extract a sensible file name"
+ " from the URL to use for storage!\n");
+ break;
+ }
+ if(!*per->outfile && !config->content_disposition) {
+ errorf(global, "Remote file name has no length!\n");
+ result = CURLE_WRITE_ERROR;
+ break;
+ }
+ }
+ else if(state->urls) {
+ /* fill '#1' ... '#9' terms from URL pattern */
+ char *storefile = per->outfile;
+ result = glob_match_url(&per->outfile, storefile, state->urls);
+ Curl_safefree(storefile);
+ if(result) {
+ /* bad globbing */
+ warnf(global, "bad output glob!\n");
+ break;
+ }
+ if(!*per->outfile) {
+ warnf(global, "output glob produces empty string!\n");
+ result = CURLE_WRITE_ERROR;
+ break;
+ }
+ }
+
+ if(config->output_dir && *config->output_dir) {
+ char *d = aprintf("%s/%s", config->output_dir, per->outfile);
+ if(!d) {
+ result = CURLE_WRITE_ERROR;
+ break;
+ }
+ free(per->outfile);
+ per->outfile = d;
+ }
+ /* Create the directory hierarchy, if not pre-existent to a multiple
+ file output call */
+
+ if(config->create_dirs) {
+ result = create_dir_hierarchy(per->outfile, global->errors);
+ /* create_dir_hierarchy shows error upon CURLE_WRITE_ERROR */
+ if(result)
+ break;
+ }
+
+ if((urlnode->flags & GETOUT_USEREMOTE)
+ && config->content_disposition) {
+ /* Our header callback MIGHT set the filename */
+ DEBUGASSERT(!outs->filename);
+ }
+
+ if(config->resume_from_current) {
+ /* We're told to continue from where we are now. Get the size
+ of the file as it is now and open it for append instead */
+ struct_stat fileinfo;
+ /* VMS -- Danger, the filesize is only valid for stream files */
+ if(0 == stat(per->outfile, &fileinfo))
+ /* set offset to current file size: */
+ config->resume_from = fileinfo.st_size;
+ else
+ /* let offset be 0 */
+ config->resume_from = 0;
+ }
+
+ if(config->resume_from) {
+#ifdef __VMS
+ /* open file for output, forcing VMS output format into stream
+ mode which is needed for stat() call above to always work. */
+ FILE *file = fopen(outfile, "ab",
+ "ctx=stm", "rfm=stmlf", "rat=cr", "mrs=0");
+#else
+ /* open file for output: */
+ FILE *file = fopen(per->outfile, "ab");
+#endif
+ if(!file) {
+ errorf(global, "Can't open '%s'!\n", per->outfile);
+ result = CURLE_WRITE_ERROR;
+ break;
+ }
+ outs->fopened = TRUE;
+ outs->stream = file;
+ outs->init = config->resume_from;
+ }
+ else {
+ outs->stream = NULL; /* open when needed */
+ }
+ outs->filename = per->outfile;
+ outs->s_isreg = TRUE;
+ }
+
+ if(per->uploadfile && !stdin_upload(per->uploadfile)) {
+ /*
+ * We have specified a file to upload and it isn't "-".
+ */
+ result = add_file_name_to_url(per->curl, &per->this_url,
+ per->uploadfile);
+ if(result)
+ break;
+ }
+ else if(per->uploadfile && stdin_upload(per->uploadfile)) {
+ /* count to see if there are more than one auth bit set
+ in the authtype field */
+ int authbits = 0;
+ int bitcheck = 0;
+ while(bitcheck < 32) {
+ if(config->authtype & (1UL << bitcheck++)) {
+ authbits++;
+ if(authbits > 1) {
+ /* more than one, we're done! */
+ break;
+ }
+ }
+ }
+
+ /*
+ * If the user has also selected --anyauth or --proxy-anyauth
+ * we should warn them.
+ */
+ if(config->proxyanyauth || (authbits>1)) {
+ warnf(global,
+ "Using --anyauth or --proxy-anyauth with upload from stdin"
+ " involves a big risk of it not working. Use a temporary"
+ " file or a fixed auth type instead!\n");
+ }
+
+ DEBUGASSERT(per->infdopen == FALSE);
+ DEBUGASSERT(per->infd == STDIN_FILENO);
+
+ set_binmode(stdin);
+ if(!strcmp(per->uploadfile, ".")) {
+ if(curlx_nonblock((curl_socket_t)per->infd, TRUE) < 0)
+ warnf(global,
+ "fcntl failed on fd=%d: %s\n", per->infd, strerror(errno));
+ }
+ }
+
+ if(per->uploadfile && config->resume_from_current)
+ config->resume_from = -1; /* -1 will then force get-it-yourself */
+
+ if(output_expected(per->this_url, per->uploadfile) && outs->stream &&
+ isatty(fileno(outs->stream)))
+ /* we send the output to a tty, therefore we switch off the progress
+ meter */
+ per->noprogress = global->noprogress = global->isatty = TRUE;
+ else {
+ /* progress meter is per download, so restore config
+ values */
+ per->noprogress = global->noprogress = orig_noprogress;
+ global->isatty = orig_isatty;
+ }
+
+ if(httpgetfields) {
+ CURLU *uh = curl_url();
+ if(uh) {
+ char *updated;
+ if(curl_url_set(uh, CURLUPART_URL, per->this_url,
+ CURLU_GUESS_SCHEME) ||
+ curl_url_set(uh, CURLUPART_QUERY, httpgetfields,
+ CURLU_APPENDQUERY) ||
+ curl_url_get(uh, CURLUPART_URL, &updated, CURLU_GUESS_SCHEME)) {
+ curl_url_cleanup(uh);
+ result = CURLE_OUT_OF_MEMORY;
+ break;
+ }
+ Curl_safefree(per->this_url); /* free previous URL */
+ per->this_url = updated; /* use our new URL instead! */
+ curl_url_cleanup(uh);
+ }
+ }
+
+ if(!global->errors)
+ global->errors = stderr;
+
+ if((!per->outfile || !strcmp(per->outfile, "-")) &&
+ !config->use_ascii) {
+ /* We get the output to stdout and we have not got the ASCII/text
+ flag, then set stdout to be binary */
+ set_binmode(stdout);
+ }
+
+ /* explicitly passed to stdout means okaying binary gunk */
+ config->terminal_binary_ok =
+ (per->outfile && !strcmp(per->outfile, "-"));
+
+ /* Avoid having this setopt added to the --libcurl source output. */
+ result = curl_easy_setopt(curl, CURLOPT_SHARE, share);
+ if(result)
+ break;
+
+ use_proto = url_proto(per->this_url);
+
+ if(!config->tcp_nodelay)
+ my_setopt(curl, CURLOPT_TCP_NODELAY, 0L);
+
+ if(config->tcp_fastopen)
+ my_setopt(curl, CURLOPT_TCP_FASTOPEN, 1L);
+
+ /* where to store */
+ my_setopt(curl, CURLOPT_WRITEDATA, per);
+ my_setopt(curl, CURLOPT_INTERLEAVEDATA, per);
+
+ /* what call to write */
+ my_setopt(curl, CURLOPT_WRITEFUNCTION, tool_write_cb);
+
+ /* for uploads */
+ input->config = config;
+ /* Note that if CURLOPT_READFUNCTION is fread (the default), then
+ * lib/telnet.c will Curl_poll() on the input file descriptor
+ * rather than calling the READFUNCTION at regular intervals.
+ * The circumstances in which it is preferable to enable this
+ * behavior, by omitting to set the READFUNCTION & READDATA options,
+ * have not been determined.
+ */
+ my_setopt(curl, CURLOPT_READDATA, input);
+ /* what call to read */
+ my_setopt(curl, CURLOPT_READFUNCTION, tool_read_cb);
+
+ /* in 7.18.0, the CURLOPT_SEEKFUNCTION/DATA pair is taking over what
+ CURLOPT_IOCTLFUNCTION/DATA pair previously provided for seeking */
+ my_setopt(curl, CURLOPT_SEEKDATA, input);
+ my_setopt(curl, CURLOPT_SEEKFUNCTION, tool_seek_cb);
+
+ if(config->recvpersecond &&
+ (config->recvpersecond < BUFFER_SIZE))
+ /* use a smaller sized buffer for better sleeps */
+ my_setopt(curl, CURLOPT_BUFFERSIZE, (long)config->recvpersecond);
+ else
+ my_setopt(curl, CURLOPT_BUFFERSIZE, (long)BUFFER_SIZE);
+
+ my_setopt_str(curl, CURLOPT_URL, per->this_url);
+ my_setopt(curl, CURLOPT_NOPROGRESS, global->noprogress?1L:0L);
+ if(config->no_body)
+ my_setopt(curl, CURLOPT_NOBODY, 1L);
+
+ if(config->oauth_bearer)
+ my_setopt_str(curl, CURLOPT_XOAUTH2_BEARER, config->oauth_bearer);
+
+ my_setopt_str(curl, CURLOPT_PROXY, config->proxy);
+
+ if(config->proxy && result) {
+ errorf(global, "proxy support is disabled in this libcurl\n");
+ config->synthetic_error = TRUE;
+ result = CURLE_NOT_BUILT_IN;
+ break;
+ }
+
+ /* new in libcurl 7.5 */
+ if(config->proxy)
+ my_setopt_enum(curl, CURLOPT_PROXYTYPE, config->proxyver);
+
+ my_setopt_str(curl, CURLOPT_PROXYUSERPWD, config->proxyuserpwd);
+
+ /* new in libcurl 7.3 */
+ my_setopt(curl, CURLOPT_HTTPPROXYTUNNEL, config->proxytunnel?1L:0L);
+
+ /* new in libcurl 7.52.0 */
+ if(config->preproxy)
+ my_setopt_str(curl, CURLOPT_PRE_PROXY, config->preproxy);
+
+ /* new in libcurl 7.10.6 */
+ if(config->proxyanyauth)
+ my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
+ (long)CURLAUTH_ANY);
+ else if(config->proxynegotiate)
+ my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
+ (long)CURLAUTH_GSSNEGOTIATE);
+ else if(config->proxyntlm)
+ my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
+ (long)CURLAUTH_NTLM);
+ else if(config->proxydigest)
+ my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
+ (long)CURLAUTH_DIGEST);
+ else if(config->proxybasic)
+ my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
+ (long)CURLAUTH_BASIC);
+
+ /* new in libcurl 7.19.4 */
+ my_setopt_str(curl, CURLOPT_NOPROXY, config->noproxy);
+
+ my_setopt(curl, CURLOPT_SUPPRESS_CONNECT_HEADERS,
+ config->suppress_connect_headers?1L:0L);
+
+ my_setopt(curl, CURLOPT_FAILONERROR, config->failonerror?1L:0L);
+ my_setopt(curl, CURLOPT_REQUEST_TARGET, config->request_target);
+ my_setopt(curl, CURLOPT_UPLOAD, per->uploadfile?1L:0L);
+ my_setopt(curl, CURLOPT_DIRLISTONLY, config->dirlistonly?1L:0L);
+ my_setopt(curl, CURLOPT_APPEND, config->ftp_append?1L:0L);
+
+ if(config->netrc_opt)
+ my_setopt_enum(curl, CURLOPT_NETRC, (long)CURL_NETRC_OPTIONAL);
+ else if(config->netrc || config->netrc_file)
+ my_setopt_enum(curl, CURLOPT_NETRC, (long)CURL_NETRC_REQUIRED);
+ else
+ my_setopt_enum(curl, CURLOPT_NETRC, (long)CURL_NETRC_IGNORED);
+
+ if(config->netrc_file)
+ my_setopt_str(curl, CURLOPT_NETRC_FILE, config->netrc_file);
+
+ my_setopt(curl, CURLOPT_TRANSFERTEXT, config->use_ascii?1L:0L);
+ if(config->login_options)
+ my_setopt_str(curl, CURLOPT_LOGIN_OPTIONS, config->login_options);
+ my_setopt_str(curl, CURLOPT_USERPWD, config->userpwd);
+ my_setopt_str(curl, CURLOPT_RANGE, config->range);
+ if(!global->parallel) {
+ per->errorbuffer = global_errorbuffer;
+ my_setopt(curl, CURLOPT_ERRORBUFFER, global_errorbuffer);
+ }
+ my_setopt(curl, CURLOPT_TIMEOUT_MS, (long)(config->timeout * 1000));
+
+ switch(config->httpreq) {
+ case HTTPREQ_SIMPLEPOST:
+ my_setopt_str(curl, CURLOPT_POSTFIELDS,
+ config->postfields);
+ my_setopt(curl, CURLOPT_POSTFIELDSIZE_LARGE,
+ config->postfieldsize);
+ break;
+ case HTTPREQ_MIMEPOST:
+ /* free previous remainders */
+ curl_mime_free(config->mimepost);
+ config->mimepost = NULL;
+ result = tool2curlmime(curl, config->mimeroot, &config->mimepost);
+ if(result)
+ break;
+ my_setopt_mimepost(curl, CURLOPT_MIMEPOST, config->mimepost);
+ break;
+ default:
+ break;
+ }
+ if(result)
+ break;
+
+ /* new in libcurl 7.81.0 */
+ if(config->mime_options)
+ my_setopt(curl, CURLOPT_MIME_OPTIONS, config->mime_options);
+
+ /* new in libcurl 7.10.6 (default is Basic) */
+ if(config->authtype)
+ my_setopt_bitmask(curl, CURLOPT_HTTPAUTH, (long)config->authtype);
+
+ my_setopt_slist(curl, CURLOPT_HTTPHEADER, config->headers);
+
+ if(proto_http || proto_rtsp) {
+ my_setopt_str(curl, CURLOPT_REFERER, config->referer);
+ my_setopt_str(curl, CURLOPT_USERAGENT, config->useragent);
+ }
+
+ if(proto_http) {
+ long postRedir = 0;
+
+ my_setopt(curl, CURLOPT_FOLLOWLOCATION,
+ config->followlocation?1L:0L);
+ my_setopt(curl, CURLOPT_UNRESTRICTED_AUTH,
+ config->unrestricted_auth?1L:0L);
+
+ my_setopt(curl, CURLOPT_AUTOREFERER, config->autoreferer?1L:0L);
+
+ /* new in libcurl 7.36.0 */
+ if(config->proxyheaders) {
+ my_setopt_slist(curl, CURLOPT_PROXYHEADER, config->proxyheaders);
+ my_setopt(curl, CURLOPT_HEADEROPT, CURLHEADER_SEPARATE);
+ }
+
+ /* new in libcurl 7.5 */
+ my_setopt(curl, CURLOPT_MAXREDIRS, config->maxredirs);
+
+ if(config->httpversion)
+ my_setopt_enum(curl, CURLOPT_HTTP_VERSION, config->httpversion);
+ else if(curlinfo->features & CURL_VERSION_HTTP2) {
+ my_setopt_enum(curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2TLS);
+ }
+
+ /* curl 7.19.1 (the 301 version existed in 7.18.2),
+ 303 was added in 7.26.0 */
+ if(config->post301)
+ postRedir |= CURL_REDIR_POST_301;
+ if(config->post302)
+ postRedir |= CURL_REDIR_POST_302;
+ if(config->post303)
+ postRedir |= CURL_REDIR_POST_303;
+ my_setopt(curl, CURLOPT_POSTREDIR, postRedir);
+
+ /* new in libcurl 7.21.6 */
+ if(config->encoding)
+ my_setopt_str(curl, CURLOPT_ACCEPT_ENCODING, "");
+
+ /* new in libcurl 7.21.6 */
+ if(config->tr_encoding)
+ my_setopt(curl, CURLOPT_TRANSFER_ENCODING, 1L);
+ /* new in libcurl 7.64.0 */
+ my_setopt(curl, CURLOPT_HTTP09_ALLOWED,
+ config->http09_allowed ? 1L : 0L);
+ if(result) {
+ errorf(global, "HTTP/0.9 is not supported in this build!\n");
+ return result;
+ }
+
+ } /* (proto_http) */
+
+ if(proto_ftp)
+ my_setopt_str(curl, CURLOPT_FTPPORT, config->ftpport);
+ my_setopt(curl, CURLOPT_LOW_SPEED_LIMIT,
+ config->low_speed_limit);
+ my_setopt(curl, CURLOPT_LOW_SPEED_TIME, config->low_speed_time);
+ my_setopt(curl, CURLOPT_MAX_SEND_SPEED_LARGE,
+ config->sendpersecond);
+ my_setopt(curl, CURLOPT_MAX_RECV_SPEED_LARGE,
+ config->recvpersecond);
+
+ if(config->use_resume)
+ my_setopt(curl, CURLOPT_RESUME_FROM_LARGE, config->resume_from);
+ else
+ my_setopt(curl, CURLOPT_RESUME_FROM_LARGE, CURL_OFF_T_C(0));
+
+ my_setopt_str(curl, CURLOPT_KEYPASSWD, config->key_passwd);
+ my_setopt_str(curl, CURLOPT_PROXY_KEYPASSWD, config->proxy_key_passwd);
+
+ if(use_proto == proto_scp || use_proto == proto_sftp) {
+
+ /* SSH and SSL private key uses same command-line option */
+ /* new in libcurl 7.16.1 */
+ my_setopt_str(curl, CURLOPT_SSH_PRIVATE_KEYFILE, config->key);
+ /* new in libcurl 7.16.1 */
+ my_setopt_str(curl, CURLOPT_SSH_PUBLIC_KEYFILE, config->pubkey);
+
+ /* new in libcurl 7.17.1: SSH host key md5 checking allows us
+ to fail if we are not talking to who we think we should */
+ my_setopt_str(curl, CURLOPT_SSH_HOST_PUBLIC_KEY_MD5,
+ config->hostpubmd5);
+
+ /* new in libcurl 7.80.0: SSH host key sha256 checking allows us
+ to fail if we are not talking to who we think we should */
+ my_setopt_str(curl, CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256,
+ config->hostpubsha256);
+
+ /* new in libcurl 7.56.0 */
+ if(config->ssh_compression)
+ my_setopt(curl, CURLOPT_SSH_COMPRESSION, 1L);
+ }
+
+ if(config->cacert)
+ my_setopt_str(curl, CURLOPT_CAINFO, config->cacert);
+ if(config->proxy_cacert)
+ my_setopt_str(curl, CURLOPT_PROXY_CAINFO, config->proxy_cacert);
+
+ if(config->capath) {
+ result = res_setopt_str(curl, CURLOPT_CAPATH, config->capath);
+ if(result == CURLE_NOT_BUILT_IN) {
+ warnf(global, "ignoring %s, not supported by libcurl\n",
+ capath_from_env?
+ "SSL_CERT_DIR environment variable":"--capath");
+ }
+ else if(result)
+ break;
+ }
+ /* For the time being if --proxy-capath is not set then we use the
+ --capath value for it, if any. See #1257 */
+ if(config->proxy_capath || config->capath) {
+ result = res_setopt_str(curl, CURLOPT_PROXY_CAPATH,
+ (config->proxy_capath ?
+ config->proxy_capath :
+ config->capath));
+ if(result == CURLE_NOT_BUILT_IN) {
+ if(config->proxy_capath) {
+ warnf(global,
+ "ignoring --proxy-capath, not supported by libcurl\n");
+ }
+ }
+ else if(result)
+ break;
+ }
+
+ if(config->crlfile)
+ my_setopt_str(curl, CURLOPT_CRLFILE, config->crlfile);
+ if(config->proxy_crlfile)
+ my_setopt_str(curl, CURLOPT_PROXY_CRLFILE, config->proxy_crlfile);
+ else if(config->crlfile) /* CURLOPT_PROXY_CRLFILE default is crlfile */
+ my_setopt_str(curl, CURLOPT_PROXY_CRLFILE, config->crlfile);
+
+ if(config->pinnedpubkey)
+ my_setopt_str(curl, CURLOPT_PINNEDPUBLICKEY, config->pinnedpubkey);
+
+ if(config->ssl_ec_curves)
+ my_setopt_str(curl, CURLOPT_SSL_EC_CURVES, config->ssl_ec_curves);
+
+ if(curlinfo->features & CURL_VERSION_SSL) {
+ /* Check if config->cert is a PKCS#11 URI and set the
+ * config->cert_type if necessary */
+ if(config->cert) {
+ if(!config->cert_type) {
+ if(is_pkcs11_uri(config->cert)) {
+ config->cert_type = strdup("ENG");
+ }
+ }
+ }
+
+ /* Check if config->key is a PKCS#11 URI and set the
+ * config->key_type if necessary */
+ if(config->key) {
+ if(!config->key_type) {
+ if(is_pkcs11_uri(config->key)) {
+ config->key_type = strdup("ENG");
+ }
+ }
+ }
+
+ /* Check if config->proxy_cert is a PKCS#11 URI and set the
+ * config->proxy_type if necessary */
+ if(config->proxy_cert) {
+ if(!config->proxy_cert_type) {
+ if(is_pkcs11_uri(config->proxy_cert)) {
+ config->proxy_cert_type = strdup("ENG");
+ }
+ }
+ }
+
+ /* Check if config->proxy_key is a PKCS#11 URI and set the
+ * config->proxy_key_type if necessary */
+ if(config->proxy_key) {
+ if(!config->proxy_key_type) {
+ if(is_pkcs11_uri(config->proxy_key)) {
+ config->proxy_key_type = strdup("ENG");
+ }
+ }
+ }
+
+ /* In debug build of curl tool, using
+ * --cert loadmem=<filename>:<password> --cert-type p12
+ * must do the same thing as classic:
+ * --cert <filename>:<password> --cert-type p12
+ * but is designed to test blob */
+#if defined(CURLDEBUG) || defined(DEBUGBUILD)
+ if(config->cert && (strlen(config->cert) > 8) &&
+ (memcmp(config->cert, "loadmem=",8) == 0)) {
+ FILE *fInCert = fopen(config->cert + 8, "rb");
+ void *certdata = NULL;
+ long filesize = 0;
+ bool continue_reading = fInCert != NULL;
+ if(continue_reading)
+ continue_reading = fseek(fInCert, 0, SEEK_END) == 0;
+ if(continue_reading)
+ filesize = ftell(fInCert);
+ if(filesize < 0)
+ continue_reading = FALSE;
+ if(continue_reading)
+ continue_reading = fseek(fInCert, 0, SEEK_SET) == 0;
+ if(continue_reading)
+ certdata = malloc(((size_t)filesize) + 1);
+ if((!certdata) ||
+ ((int)fread(certdata, (size_t)filesize, 1, fInCert) != 1))
+ continue_reading = FALSE;
+ if(fInCert)
+ fclose(fInCert);
+ if((filesize > 0) && continue_reading) {
+ struct curl_blob structblob;
+ structblob.data = certdata;
+ structblob.len = (size_t)filesize;
+ structblob.flags = CURL_BLOB_COPY;
+ my_setopt_str(curl, CURLOPT_SSLCERT_BLOB, &structblob);
+ /* if test run well, we are sure we don't reuse
+ * original mem pointer */
+ memset(certdata, 0, (size_t)filesize);
+ }
+ free(certdata);
+ }
+ else
+#endif
+ my_setopt_str(curl, CURLOPT_SSLCERT, config->cert);
+ my_setopt_str(curl, CURLOPT_PROXY_SSLCERT, config->proxy_cert);
+ my_setopt_str(curl, CURLOPT_SSLCERTTYPE, config->cert_type);
+ my_setopt_str(curl, CURLOPT_PROXY_SSLCERTTYPE,
+ config->proxy_cert_type);
+
+
+#if defined(CURLDEBUG) || defined(DEBUGBUILD)
+ if(config->key && (strlen(config->key) > 8) &&
+ (memcmp(config->key, "loadmem=",8) == 0)) {
+ FILE *fInCert = fopen(config->key + 8, "rb");
+ void *certdata = NULL;
+ long filesize = 0;
+ bool continue_reading = fInCert != NULL;
+ if(continue_reading)
+ continue_reading = fseek(fInCert, 0, SEEK_END) == 0;
+ if(continue_reading)
+ filesize = ftell(fInCert);
+ if(filesize < 0)
+ continue_reading = FALSE;
+ if(continue_reading)
+ continue_reading = fseek(fInCert, 0, SEEK_SET) == 0;
+ if(continue_reading)
+ certdata = malloc(((size_t)filesize) + 1);
+ if((!certdata) ||
+ ((int)fread(certdata, (size_t)filesize, 1, fInCert) != 1))
+ continue_reading = FALSE;
+ if(fInCert)
+ fclose(fInCert);
+ if((filesize > 0) && continue_reading) {
+ struct curl_blob structblob;
+ structblob.data = certdata;
+ structblob.len = (size_t)filesize;
+ structblob.flags = CURL_BLOB_COPY;
+ my_setopt_str(curl, CURLOPT_SSLKEY_BLOB, &structblob);
+ /* if test run well, we are sure we don't reuse
+ * original mem pointer */
+ memset(certdata, 0, (size_t)filesize);
+ }
+ free(certdata);
+ }
+ else
+#endif
+ my_setopt_str(curl, CURLOPT_SSLKEY, config->key);
+ my_setopt_str(curl, CURLOPT_PROXY_SSLKEY, config->proxy_key);
+ my_setopt_str(curl, CURLOPT_SSLKEYTYPE, config->key_type);
+ my_setopt_str(curl, CURLOPT_PROXY_SSLKEYTYPE,
+ config->proxy_key_type);
+ my_setopt_str(curl, CURLOPT_AWS_SIGV4,
+ config->aws_sigv4);
+
+ if(config->insecure_ok) {
+ my_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
+ my_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
+ }
+ else {
+ my_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);
+ /* libcurl default is strict verifyhost -> 2L */
+ /* my_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2L); */
+ }
+
+ if(config->doh_insecure_ok) {
+ my_setopt(curl, CURLOPT_DOH_SSL_VERIFYPEER, 0L);
+ my_setopt(curl, CURLOPT_DOH_SSL_VERIFYHOST, 0L);
+ }
+
+ if(config->proxy_insecure_ok) {
+ my_setopt(curl, CURLOPT_PROXY_SSL_VERIFYPEER, 0L);
+ my_setopt(curl, CURLOPT_PROXY_SSL_VERIFYHOST, 0L);
+ }
+ else {
+ my_setopt(curl, CURLOPT_PROXY_SSL_VERIFYPEER, 1L);
+ }
+
+ if(config->verifystatus)
+ my_setopt(curl, CURLOPT_SSL_VERIFYSTATUS, 1L);
+
+ if(config->doh_verifystatus)
+ my_setopt(curl, CURLOPT_DOH_SSL_VERIFYSTATUS, 1L);
+
+ if(config->falsestart)
+ my_setopt(curl, CURLOPT_SSL_FALSESTART, 1L);
+
+ my_setopt_enum(curl, CURLOPT_SSLVERSION,
+ config->ssl_version | config->ssl_version_max);
+ if(config->proxy)
+ my_setopt_enum(curl, CURLOPT_PROXY_SSLVERSION,
+ config->proxy_ssl_version);
+
+ {
+ long mask =
+ (config->ssl_allow_beast ?
+ CURLSSLOPT_ALLOW_BEAST : 0) |
+ (config->ssl_no_revoke ?
+ CURLSSLOPT_NO_REVOKE : 0) |
+ (config->ssl_revoke_best_effort ?
+ CURLSSLOPT_REVOKE_BEST_EFFORT : 0) |
+ (config->native_ca_store ?
+ CURLSSLOPT_NATIVE_CA : 0) |
+ (config->ssl_auto_client_cert ?
+ CURLSSLOPT_AUTO_CLIENT_CERT : 0);
+
+ if(mask)
+ my_setopt_bitmask(curl, CURLOPT_SSL_OPTIONS, mask);
+ }
+
+ {
+ long mask =
+ (config->proxy_ssl_allow_beast ?
+ CURLSSLOPT_ALLOW_BEAST : 0) |
+ (config->proxy_ssl_auto_client_cert ?
+ CURLSSLOPT_AUTO_CLIENT_CERT : 0);
+
+ if(mask)
+ my_setopt_bitmask(curl, CURLOPT_PROXY_SSL_OPTIONS, mask);
+ }
+ }
+
+ if(config->path_as_is)
+ my_setopt(curl, CURLOPT_PATH_AS_IS, 1L);
+
+ if((use_proto == proto_scp || use_proto == proto_sftp) &&
+ !config->insecure_ok) {
+ char *known = findfile(".ssh/known_hosts", FALSE);
+ if(known) {
+ /* new in curl 7.19.6 */
+ result = res_setopt_str(curl, CURLOPT_SSH_KNOWNHOSTS, known);
+ curl_free(known);
+ if(result == CURLE_UNKNOWN_OPTION)
+ /* libssh2 version older than 1.1.1 */
+ result = CURLE_OK;
+ if(result)
+ break;
+ }
+ else
+ warnf(global, "Couldn't find a known_hosts file!");
+ }
+
+ if(config->no_body || config->remote_time) {
+ /* no body or use remote time */
+ my_setopt(curl, CURLOPT_FILETIME, 1L);
+ }
+
+ my_setopt(curl, CURLOPT_CRLF, config->crlf?1L:0L);
+ my_setopt_slist(curl, CURLOPT_QUOTE, config->quote);
+ my_setopt_slist(curl, CURLOPT_POSTQUOTE, config->postquote);
+ my_setopt_slist(curl, CURLOPT_PREQUOTE, config->prequote);
+
+ if(config->cookies) {
+ struct curlx_dynbuf cookies;
+ struct curl_slist *cl;
+
+ /* The maximum size needs to match MAX_NAME in cookie.h */
+#define MAX_COOKIE_LINE 4096
+ curlx_dyn_init(&cookies, MAX_COOKIE_LINE);
+ for(cl = config->cookies; cl; cl = cl->next) {
+ if(cl == config->cookies)
+ result = curlx_dyn_addf(&cookies, "%s", cl->data);
+ else
+ result = curlx_dyn_addf(&cookies, ";%s", cl->data);
+
+ if(result) {
+ warnf(global,
+ "skipped provided cookie, the cookie header "
+ "would go over %u bytes\n", MAX_COOKIE_LINE);
+ break;
+ }
+ }
+
+ my_setopt_str(curl, CURLOPT_COOKIE, curlx_dyn_ptr(&cookies));
+ curlx_dyn_free(&cookies);
+ }
+
+ if(config->cookiefiles) {
+ struct curl_slist *cfl;
+
+ for(cfl = config->cookiefiles; cfl; cfl = cfl->next)
+ my_setopt_str(curl, CURLOPT_COOKIEFILE, cfl->data);
+ }
+
+ /* new in libcurl 7.9 */
+ if(config->cookiejar)
+ my_setopt_str(curl, CURLOPT_COOKIEJAR, config->cookiejar);
+
+ /* new in libcurl 7.9.7 */
+ my_setopt(curl, CURLOPT_COOKIESESSION, config->cookiesession?1L:0L);
+
+ my_setopt_enum(curl, CURLOPT_TIMECONDITION, (long)config->timecond);
+ my_setopt(curl, CURLOPT_TIMEVALUE_LARGE, config->condtime);
+ my_setopt_str(curl, CURLOPT_CUSTOMREQUEST, config->customrequest);
+ customrequest_helper(config, config->httpreq, config->customrequest);
+ my_setopt(curl, CURLOPT_STDERR, global->errors);
+
+ /* three new ones in libcurl 7.3: */
+ my_setopt_str(curl, CURLOPT_INTERFACE, config->iface);
+ my_setopt_str(curl, CURLOPT_KRBLEVEL, config->krblevel);
+ progressbarinit(&per->progressbar, config);
+
+ if((global->progressmode == CURL_PROGRESS_BAR) &&
+ !global->noprogress && !global->mute) {
+ /* we want the alternative style, then we have to implement it
+ ourselves! */
+ my_setopt(curl, CURLOPT_XFERINFOFUNCTION, tool_progress_cb);
+ my_setopt(curl, CURLOPT_XFERINFODATA, per);
+ }
+ else if(per->uploadfile && !strcmp(per->uploadfile, ".")) {
+ /* when reading from stdin in non-blocking mode, we use the progress
+ function to unpause a busy read */
+ my_setopt(curl, CURLOPT_NOPROGRESS, 0L);
+ my_setopt(curl, CURLOPT_XFERINFOFUNCTION, tool_readbusy_cb);
+ my_setopt(curl, CURLOPT_XFERINFODATA, per);
+ }
+
+ /* new in libcurl 7.24.0: */
+ if(config->dns_servers)
+ my_setopt_str(curl, CURLOPT_DNS_SERVERS, config->dns_servers);
+
+ /* new in libcurl 7.33.0: */
+ if(config->dns_interface)
+ my_setopt_str(curl, CURLOPT_DNS_INTERFACE, config->dns_interface);
+ if(config->dns_ipv4_addr)
+ my_setopt_str(curl, CURLOPT_DNS_LOCAL_IP4, config->dns_ipv4_addr);
+ if(config->dns_ipv6_addr)
+ my_setopt_str(curl, CURLOPT_DNS_LOCAL_IP6, config->dns_ipv6_addr);
+
+ /* new in libcurl 7.6.2: */
+ my_setopt_slist(curl, CURLOPT_TELNETOPTIONS, config->telnet_options);
+
+ /* new in libcurl 7.7: */
+ my_setopt(curl, CURLOPT_CONNECTTIMEOUT_MS,
+ (long)(config->connecttimeout * 1000));
+
+ if(config->doh_url)
+ my_setopt_str(curl, CURLOPT_DOH_URL, config->doh_url);
+
+ if(config->cipher_list)
+ my_setopt_str(curl, CURLOPT_SSL_CIPHER_LIST, config->cipher_list);
+
+ if(config->proxy_cipher_list)
+ my_setopt_str(curl, CURLOPT_PROXY_SSL_CIPHER_LIST,
+ config->proxy_cipher_list);
+
+ if(config->cipher13_list)
+ my_setopt_str(curl, CURLOPT_TLS13_CIPHERS, config->cipher13_list);
+
+ if(config->proxy_cipher13_list)
+ my_setopt_str(curl, CURLOPT_PROXY_TLS13_CIPHERS,
+ config->proxy_cipher13_list);
+
+ /* new in libcurl 7.9.2: */
+ if(config->disable_epsv)
+ /* disable it */
+ my_setopt(curl, CURLOPT_FTP_USE_EPSV, 0L);
+
+ /* new in libcurl 7.10.5 */
+ if(config->disable_eprt)
+ /* disable it */
+ my_setopt(curl, CURLOPT_FTP_USE_EPRT, 0L);
+
+ if(global->tracetype != TRACE_NONE) {
+ my_setopt(curl, CURLOPT_DEBUGFUNCTION, tool_debug_cb);
+ my_setopt(curl, CURLOPT_DEBUGDATA, config);
+ my_setopt(curl, CURLOPT_VERBOSE, 1L);
+ }
+
+ /* new in curl 7.9.3 */
+ if(config->engine) {
+ result = res_setopt_str(curl, CURLOPT_SSLENGINE, config->engine);
+ if(result)
+ break;
+ }
+
+ /* new in curl 7.10.7, extended in 7.19.4. Modified to use
+ CREATE_DIR_RETRY in 7.49.0 */
+ my_setopt(curl, CURLOPT_FTP_CREATE_MISSING_DIRS,
+ (long)(config->ftp_create_dirs?
+ CURLFTP_CREATE_DIR_RETRY:
+ CURLFTP_CREATE_DIR_NONE));
+
+ /* new in curl 7.10.8 */
+ if(config->max_filesize)
+ my_setopt(curl, CURLOPT_MAXFILESIZE_LARGE,
+ config->max_filesize);
+
+ my_setopt(curl, CURLOPT_IPRESOLVE, config->ip_version);
+
+ /* new in curl 7.15.5 */
+ if(config->ftp_ssl_reqd)
+ my_setopt_enum(curl, CURLOPT_USE_SSL, (long)CURLUSESSL_ALL);
+
+ /* new in curl 7.11.0 */
+ else if(config->ftp_ssl)
+ my_setopt_enum(curl, CURLOPT_USE_SSL, (long)CURLUSESSL_TRY);
+
+ /* new in curl 7.16.0 */
+ else if(config->ftp_ssl_control)
+ my_setopt_enum(curl, CURLOPT_USE_SSL, (long)CURLUSESSL_CONTROL);
+
+ /* new in curl 7.16.1 */
+ if(config->ftp_ssl_ccc)
+ my_setopt_enum(curl, CURLOPT_FTP_SSL_CCC,
+ (long)config->ftp_ssl_ccc_mode);
+
+ /* new in curl 7.19.4 */
+ if(config->socks5_gssapi_nec)
+ my_setopt_str(curl, CURLOPT_SOCKS5_GSSAPI_NEC,
+ config->socks5_gssapi_nec);
+
+ /* new in curl 7.55.0 */
+ if(config->socks5_auth)
+ my_setopt_bitmask(curl, CURLOPT_SOCKS5_AUTH,
+ (long)config->socks5_auth);
+
+ /* new in curl 7.43.0 */
+ if(config->proxy_service_name)
+ my_setopt_str(curl, CURLOPT_PROXY_SERVICE_NAME,
+ config->proxy_service_name);
+
+ /* new in curl 7.43.0 */
+ if(config->service_name)
+ my_setopt_str(curl, CURLOPT_SERVICE_NAME,
+ config->service_name);
+
+ /* curl 7.13.0 */
+ my_setopt_str(curl, CURLOPT_FTP_ACCOUNT, config->ftp_account);
+ my_setopt(curl, CURLOPT_IGNORE_CONTENT_LENGTH, config->ignorecl?1L:0L);
+
+ /* curl 7.14.2 */
+ my_setopt(curl, CURLOPT_FTP_SKIP_PASV_IP, config->ftp_skip_ip?1L:0L);
+
+ /* curl 7.15.1 */
+ if(proto_ftp)
+ my_setopt(curl, CURLOPT_FTP_FILEMETHOD,
+ (long)config->ftp_filemethod);
+
+ /* curl 7.15.2 */
+ if(config->localport) {
+ my_setopt(curl, CURLOPT_LOCALPORT, config->localport);
+ my_setopt_str(curl, CURLOPT_LOCALPORTRANGE, config->localportrange);
+ }
+
+ /* curl 7.15.5 */
+ my_setopt_str(curl, CURLOPT_FTP_ALTERNATIVE_TO_USER,
+ config->ftp_alternative_to_user);
+
+ /* curl 7.16.0 */
+ if(config->disable_sessionid)
+ /* disable it */
+ my_setopt(curl, CURLOPT_SSL_SESSIONID_CACHE, 0L);
+
+ /* curl 7.16.2 */
+ if(config->raw) {
+ my_setopt(curl, CURLOPT_HTTP_CONTENT_DECODING, 0L);
+ my_setopt(curl, CURLOPT_HTTP_TRANSFER_DECODING, 0L);
+ }
+
+ /* curl 7.17.1 */
+ if(!config->nokeepalive) {
+ my_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L);
+ if(config->alivetime) {
+ my_setopt(curl, CURLOPT_TCP_KEEPIDLE, config->alivetime);
+ my_setopt(curl, CURLOPT_TCP_KEEPINTVL, config->alivetime);
+ }
+ }
+ else
+ my_setopt(curl, CURLOPT_TCP_KEEPALIVE, 0L);
+
+ /* curl 7.20.0 */
+ if(config->tftp_blksize && proto_tftp)
+ my_setopt(curl, CURLOPT_TFTP_BLKSIZE, config->tftp_blksize);
+
+ if(config->mail_from)
+ my_setopt_str(curl, CURLOPT_MAIL_FROM, config->mail_from);
+
+ if(config->mail_rcpt)
+ my_setopt_slist(curl, CURLOPT_MAIL_RCPT, config->mail_rcpt);
+
+ /* curl 7.69.x */
+ my_setopt(curl, CURLOPT_MAIL_RCPT_ALLLOWFAILS,
+ config->mail_rcpt_allowfails ? 1L : 0L);
+
+ /* curl 7.20.x */
+ if(config->ftp_pret)
+ my_setopt(curl, CURLOPT_FTP_USE_PRET, 1L);
+
+ if(config->create_file_mode)
+ my_setopt(curl, CURLOPT_NEW_FILE_PERMS, config->create_file_mode);
+
+ if(config->proto_present)
+ my_setopt_str(curl, CURLOPT_PROTOCOLS_STR, config->proto_str);
+ if(config->proto_redir_present)
+ my_setopt_str(curl, CURLOPT_REDIR_PROTOCOLS_STR,
+ config->proto_redir_str);
+
+ if(config->content_disposition
+ && (urlnode->flags & GETOUT_USEREMOTE))
+ hdrcbdata->honor_cd_filename = TRUE;
+ else
+ hdrcbdata->honor_cd_filename = FALSE;
+
+ hdrcbdata->outs = outs;
+ hdrcbdata->heads = heads;
+ hdrcbdata->etag_save = etag_save;
+ hdrcbdata->global = global;
+ hdrcbdata->config = config;
+
+ my_setopt(curl, CURLOPT_HEADERFUNCTION, tool_header_cb);
+ my_setopt(curl, CURLOPT_HEADERDATA, per);
+
+ if(config->resolve)
+ /* new in 7.21.3 */
+ my_setopt_slist(curl, CURLOPT_RESOLVE, config->resolve);
+
+ if(config->connect_to)
+ /* new in 7.49.0 */
+ my_setopt_slist(curl, CURLOPT_CONNECT_TO, config->connect_to);
+
+ /* new in 7.21.4 */
+ if(curlinfo->features & CURL_VERSION_TLSAUTH_SRP) {
+ if(config->tls_username)
+ my_setopt_str(curl, CURLOPT_TLSAUTH_USERNAME,
+ config->tls_username);
+ if(config->tls_password)
+ my_setopt_str(curl, CURLOPT_TLSAUTH_PASSWORD,
+ config->tls_password);
+ if(config->tls_authtype)
+ my_setopt_str(curl, CURLOPT_TLSAUTH_TYPE,
+ config->tls_authtype);
+ if(config->proxy_tls_username)
+ my_setopt_str(curl, CURLOPT_PROXY_TLSAUTH_USERNAME,
+ config->proxy_tls_username);
+ if(config->proxy_tls_password)
+ my_setopt_str(curl, CURLOPT_PROXY_TLSAUTH_PASSWORD,
+ config->proxy_tls_password);
+ if(config->proxy_tls_authtype)
+ my_setopt_str(curl, CURLOPT_PROXY_TLSAUTH_TYPE,
+ config->proxy_tls_authtype);
+ }
+
+ /* new in 7.22.0 */
+ if(config->gssapi_delegation)
+ my_setopt_str(curl, CURLOPT_GSSAPI_DELEGATION,
+ config->gssapi_delegation);
+
+ if(config->mail_auth)
+ my_setopt_str(curl, CURLOPT_MAIL_AUTH, config->mail_auth);
+
+ /* new in 7.66.0 */
+ if(config->sasl_authzid)
+ my_setopt_str(curl, CURLOPT_SASL_AUTHZID, config->sasl_authzid);
+
+ /* new in 7.31.0 */
+ if(config->sasl_ir)
+ my_setopt(curl, CURLOPT_SASL_IR, 1L);
+
+ if(config->noalpn) {
+ my_setopt(curl, CURLOPT_SSL_ENABLE_ALPN, 0L);
+ }
+
+ /* new in 7.40.0, abstract support added in 7.53.0 */
+ if(config->unix_socket_path) {
+ if(config->abstract_unix_socket) {
+ my_setopt_str(curl, CURLOPT_ABSTRACT_UNIX_SOCKET,
+ config->unix_socket_path);
+ }
+ else {
+ my_setopt_str(curl, CURLOPT_UNIX_SOCKET_PATH,
+ config->unix_socket_path);
+ }
+ }
+
+ /* new in 7.45.0 */
+ if(config->proto_default)
+ my_setopt_str(curl, CURLOPT_DEFAULT_PROTOCOL, config->proto_default);
+
+ /* new in 7.47.0 */
+ if(config->expect100timeout > 0)
+ my_setopt_str(curl, CURLOPT_EXPECT_100_TIMEOUT_MS,
+ (long)(config->expect100timeout*1000));
+
+ /* new in 7.48.0 */
+ if(config->tftp_no_options && proto_tftp)
+ my_setopt(curl, CURLOPT_TFTP_NO_OPTIONS, 1L);
+
+ /* new in 7.59.0 */
+ if(config->happy_eyeballs_timeout_ms != CURL_HET_DEFAULT)
+ my_setopt(curl, CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS,
+ config->happy_eyeballs_timeout_ms);
+
+ /* new in 7.60.0 */
+ if(config->haproxy_protocol)
+ my_setopt(curl, CURLOPT_HAPROXYPROTOCOL, 1L);
+
+ if(config->disallow_username_in_url)
+ my_setopt(curl, CURLOPT_DISALLOW_USERNAME_IN_URL, 1L);
+
+ if(config->altsvc)
+ my_setopt_str(curl, CURLOPT_ALTSVC, config->altsvc);
+
+ if(config->hsts)
+ my_setopt_str(curl, CURLOPT_HSTS, config->hsts);
+
+ /* initialize retry vars for loop below */
+ per->retry_sleep_default = (config->retry_delay) ?
+ config->retry_delay*1000L : RETRY_SLEEP_DEFAULT; /* ms */
+ per->retry_numretries = config->req_retry;
+ per->retry_sleep = per->retry_sleep_default; /* ms */
+ per->retrystart = tvnow();
+
+ state->li++;
+ /* Here's looping around each globbed URL */
+ if(state->li >= urlnum) {
+ state->li = 0;
+ state->urlnum = 0; /* forced reglob of URLs */
+ glob_cleanup(state->urls);
+ state->urls = NULL;
+ state->up++;
+ Curl_safefree(state->uploadfile); /* clear it to get the next */
+ }
+ }
+ else {
+ /* Free this URL node data without destroying the
+ node itself nor modifying next pointer. */
+ Curl_safefree(urlnode->outfile);
+ Curl_safefree(urlnode->infile);
+ urlnode->flags = 0;
+ glob_cleanup(state->urls);
+ state->urls = NULL;
+ state->urlnum = 0;
+
+ Curl_safefree(state->outfiles);
+ Curl_safefree(state->uploadfile);
+ if(state->inglob) {
+ /* Free list of globbed upload files */
+ glob_cleanup(state->inglob);
+ state->inglob = NULL;
+ }
+ config->state.urlnode = urlnode->next;
+ state->up = 0;
+ continue;
+ }
+ }
+ break;
+ }
+ Curl_safefree(state->outfiles);
+
+ if(!*added || result) {
+ *added = FALSE;
+ single_transfer_cleanup(config);
+ }
+ return result;
+}
+
+static long all_added; /* number of easy handles currently added */
+
+/*
+ * add_parallel_transfers() sets 'morep' to TRUE if there are more transfers
+ * to add even after this call returns. sets 'addedp' to TRUE if one or more
+ * transfers were added.
+ */
+static CURLcode add_parallel_transfers(struct GlobalConfig *global,
+ CURLM *multi,
+ CURLSH *share,
+ bool *morep,
+ bool *addedp)
+{
+ struct per_transfer *per;
+ CURLcode result = CURLE_OK;
+ CURLMcode mcode;
+ bool sleeping = FALSE;
+ char *errorbuf;
+ *addedp = FALSE;
+ *morep = FALSE;
+ if(all_pers < (global->parallel_max*2)) {
+ result = create_transfer(global, share, addedp);
+ if(result)
+ return result;
+ }
+ for(per = transfers; per && (all_added < global->parallel_max);
+ per = per->next) {
+ bool getadded = FALSE;
+ if(per->added)
+ /* already added */
+ continue;
+ if(per->startat && (time(NULL) < per->startat)) {
+ /* this is still delaying */
+ sleeping = TRUE;
+ continue;
+ }
+ per->added = TRUE;
+
+ result = pre_transfer(global, per);
+ if(result)
+ return result;
+
+ errorbuf = malloc(CURL_ERROR_SIZE);
+ if(!errorbuf)
+ return CURLE_OUT_OF_MEMORY;
+
+ /* parallel connect means that we don't set PIPEWAIT since pipewait
+ will make libcurl prefer multiplexing */
+ (void)curl_easy_setopt(per->curl, CURLOPT_PIPEWAIT,
+ global->parallel_connect ? 0L : 1L);
+ (void)curl_easy_setopt(per->curl, CURLOPT_PRIVATE, per);
+ (void)curl_easy_setopt(per->curl, CURLOPT_XFERINFOFUNCTION, xferinfo_cb);
+ (void)curl_easy_setopt(per->curl, CURLOPT_XFERINFODATA, per);
+ (void)curl_easy_setopt(per->curl, CURLOPT_NOPROGRESS, 0L);
+
+ mcode = curl_multi_add_handle(multi, per->curl);
+ if(mcode) {
+ DEBUGASSERT(mcode == CURLM_OUT_OF_MEMORY);
+ result = CURLE_OUT_OF_MEMORY;
+ }
+
+ if(!result)
+ result = create_transfer(global, share, &getadded);
+ if(result) {
+ free(errorbuf);
+ return result;
+ }
+ errorbuf[0] = 0;
+ (void)curl_easy_setopt(per->curl, CURLOPT_ERRORBUFFER, errorbuf);
+ per->errorbuffer = errorbuf;
+ per->added = TRUE;
+ all_added++;
+ *addedp = TRUE;
+ }
+ *morep = (per || sleeping) ? TRUE : FALSE;
+ return CURLE_OK;
+}
+
+static CURLcode parallel_transfers(struct GlobalConfig *global,
+ CURLSH *share)
+{
+ CURLM *multi;
+ CURLMcode mcode = CURLM_OK;
+ CURLcode result = CURLE_OK;
+ int still_running = 1;
+ struct timeval start = tvnow();
+ bool more_transfers;
+ bool added_transfers;
+ /* wrapitup is set TRUE after a critical error occurs to end all transfers */
+ bool wrapitup = FALSE;
+ /* wrapitup_processed is set TRUE after the per transfer abort flag is set */
+ bool wrapitup_processed = FALSE;
+ time_t tick = time(NULL);
+
+ multi = curl_multi_init();
+ if(!multi)
+ return CURLE_OUT_OF_MEMORY;
+
+ result = add_parallel_transfers(global, multi, share,
+ &more_transfers, &added_transfers);
+ if(result) {
+ curl_multi_cleanup(multi);
+ return result;
+ }
+
+ while(!mcode && (still_running || more_transfers)) {
+ /* If stopping prematurely (eg due to a --fail-early condition) then signal
+ that any transfers in the multi should abort (via progress callback). */
+ if(wrapitup) {
+ if(!still_running)
+ break;
+ if(!wrapitup_processed) {
+ struct per_transfer *per;
+ for(per = transfers; per; per = per->next) {
+ if(per->added)
+ per->abort = TRUE;
+ }
+ wrapitup_processed = TRUE;
+ }
+ }
+
+ mcode = curl_multi_poll(multi, NULL, 0, 1000, NULL);
+ if(!mcode)
+ mcode = curl_multi_perform(multi, &still_running);
+
+ progress_meter(global, &start, FALSE);
+
+ if(!mcode) {
+ int rc;
+ CURLMsg *msg;
+ bool checkmore = FALSE;
+ do {
+ msg = curl_multi_info_read(multi, &rc);
+ if(msg) {
+ bool retry;
+ long delay;
+ struct per_transfer *ended;
+ CURL *easy = msg->easy_handle;
+ CURLcode tres = msg->data.result;
+ curl_easy_getinfo(easy, CURLINFO_PRIVATE, (void *)&ended);
+ curl_multi_remove_handle(multi, easy);
+
+ if(ended->abort && tres == CURLE_ABORTED_BY_CALLBACK) {
+ msnprintf(ended->errorbuffer, CURL_ERROR_SIZE,
+ "Transfer aborted due to critical error "
+ "in another transfer");
+ }
+ tres = post_per_transfer(global, ended, tres, &retry, &delay);
+ progress_finalize(ended); /* before it goes away */
+ all_added--; /* one fewer added */
+ checkmore = TRUE;
+ if(retry) {
+ ended->added = FALSE; /* add it again */
+ /* we delay retries in full integer seconds only */
+ ended->startat = delay ? time(NULL) + delay/1000 : 0;
+ }
+ else {
+ /* result receives this transfer's error unless the transfer was
+ marked for abort due to a critical error in another transfer */
+ if(tres && (!ended->abort || !result))
+ result = tres;
+ if(is_fatal_error(result) || (result && global->fail_early))
+ wrapitup = TRUE;
+ (void)del_per_transfer(ended);
+ }
+ }
+ } while(msg);
+ if(wrapitup) {
+ if(still_running)
+ continue;
+ else
+ break;
+ }
+ if(!checkmore) {
+ time_t tock = time(NULL);
+ if(tick != tock) {
+ checkmore = TRUE;
+ tick = tock;
+ }
+ }
+ if(checkmore) {
+ /* one or more transfers completed, add more! */
+ CURLcode tres = add_parallel_transfers(global, multi, share,
+ &more_transfers,
+ &added_transfers);
+ if(tres)
+ result = tres;
+ if(added_transfers)
+ /* we added new ones, make sure the loop doesn't exit yet */
+ still_running = 1;
+ }
+ if(is_fatal_error(result) || (result && global->fail_early))
+ wrapitup = TRUE;
+ }
+ }
+
+ (void)progress_meter(global, &start, TRUE);
+
+ /* Make sure to return some kind of error if there was a multi problem */
+ if(mcode) {
+ result = (mcode == CURLM_OUT_OF_MEMORY) ? CURLE_OUT_OF_MEMORY :
+ /* The other multi errors should never happen, so return
+ something suitably generic */
+ CURLE_BAD_FUNCTION_ARGUMENT;
+ }
+
+ curl_multi_cleanup(multi);
+
+ return result;
+}
+
+static CURLcode serial_transfers(struct GlobalConfig *global,
+ CURLSH *share)
+{
+ CURLcode returncode = CURLE_OK;
+ CURLcode result = CURLE_OK;
+ struct per_transfer *per;
+ bool added = FALSE;
+
+ result = create_transfer(global, share, &added);
+ if(result)
+ return result;
+ if(!added) {
+ errorf(global, "no transfer performed\n");
+ return CURLE_READ_ERROR;
+ }
+ for(per = transfers; per;) {
+ bool retry;
+ long delay_ms;
+ bool bailout = FALSE;
+ struct timeval start;
+ result = pre_transfer(global, per);
+ if(result)
+ break;
+
+ if(global->libcurl) {
+ result = easysrc_perform();
+ if(result)
+ break;
+ }
+
+ start = tvnow();
+#ifdef CURLDEBUG
+ if(global->test_event_based)
+ result = curl_easy_perform_ev(per->curl);
+ else
+#endif
+ result = curl_easy_perform(per->curl);
+
+ returncode = post_per_transfer(global, per, result, &retry, &delay_ms);
+ if(retry) {
+ tool_go_sleep(delay_ms);
+ continue;
+ }
+
+ /* Bail out upon critical errors or --fail-early */
+ if(is_fatal_error(returncode) || (returncode && global->fail_early))
+ bailout = TRUE;
+ else {
+ /* setup the next one just before we delete this */
+ result = create_transfer(global, share, &added);
+ if(result)
+ bailout = TRUE;
+ }
+
+ per = del_per_transfer(per);
+
+ if(bailout)
+ break;
+
+ if(per && global->ms_per_transfer) {
+ /* how long time did the most recent transfer take in number of
+ milliseconds */
+ long milli = tvdiff(tvnow(), start);
+ if(milli < global->ms_per_transfer) {
+ notef(global, "Transfer took %ld ms, waits %ldms as set by --rate\n",
+ milli, global->ms_per_transfer - milli);
+ /* The transfer took less time than wanted. Wait a little. */
+ tool_go_sleep(global->ms_per_transfer - milli);
+ }
+ }
+ }
+ if(returncode)
+ /* returncode errors have priority */
+ result = returncode;
+
+ if(result)
+ single_transfer_cleanup(global->current);
+
+ return result;
+}
+
+/* setup a transfer for the given config */
+static CURLcode transfer_per_config(struct GlobalConfig *global,
+ struct OperationConfig *config,
+ CURLSH *share,
+ bool *added)
+{
+ CURLcode result = CURLE_OK;
+ bool capath_from_env;
+ *added = FALSE;
+
+ /* Check we have a url */
+ if(!config->url_list || !config->url_list->url) {
+ helpf(global->errors, "no URL specified!\n");
+ return CURLE_FAILED_INIT;
+ }
+
+ /* On WIN32 we can't set the path to curl-ca-bundle.crt
+ * at compile time. So we look here for the file in two ways:
+ * 1: look at the environment variable CURL_CA_BUNDLE for a path
+ * 2: if #1 isn't found, use the windows API function SearchPath()
+ * to find it along the app's path (includes app's dir and CWD)
+ *
+ * We support the environment variable thing for non-Windows platforms
+ * too. Just for the sake of it.
+ */
+ capath_from_env = false;
+ if(!config->cacert &&
+ !config->capath &&
+ (!config->insecure_ok || (config->doh_url && !config->doh_insecure_ok))) {
+ CURL *curltls = curl_easy_init();
+ struct curl_tlssessioninfo *tls_backend_info = NULL;
+
+ /* With the addition of CAINFO support for Schannel, this search could find
+ * a certificate bundle that was previously ignored. To maintain backward
+ * compatibility, only perform this search if not using Schannel.
+ */
+ result = curl_easy_getinfo(curltls, CURLINFO_TLS_SSL_PTR,
+ &tls_backend_info);
+ if(result) {
+ curl_easy_cleanup(curltls);
+ return result;
+ }
+
+ /* Set the CA cert locations specified in the environment. For Windows if
+ * no environment-specified filename is found then check for CA bundle
+ * default filename curl-ca-bundle.crt in the user's PATH.
+ *
+ * If Schannel is the selected SSL backend then these locations are
+ * ignored. We allow setting CA location for schannel only when explicitly
+ * specified by the user via CURLOPT_CAINFO / --cacert.
+ */
+ if(tls_backend_info->backend != CURLSSLBACKEND_SCHANNEL) {
+ char *env;
+ env = curlx_getenv("CURL_CA_BUNDLE");
+ if(env) {
+ config->cacert = strdup(env);
+ if(!config->cacert) {
+ curl_free(env);
+ curl_easy_cleanup(curltls);
+ errorf(global, "out of memory\n");
+ return CURLE_OUT_OF_MEMORY;
+ }
+ }
+ else {
+ env = curlx_getenv("SSL_CERT_DIR");
+ if(env) {
+ config->capath = strdup(env);
+ if(!config->capath) {
+ curl_free(env);
+ curl_easy_cleanup(curltls);
+ helpf(global->errors, "out of memory\n");
+ return CURLE_OUT_OF_MEMORY;
+ }
+ capath_from_env = true;
+ }
+ else {
+ env = curlx_getenv("SSL_CERT_FILE");
+ if(env) {
+ config->cacert = strdup(env);
+ if(!config->cacert) {
+ curl_free(env);
+ curl_easy_cleanup(curltls);
+ errorf(global, "out of memory\n");
+ return CURLE_OUT_OF_MEMORY;
+ }
+ }
+ }
+ }
+
+ if(env)
+ curl_free(env);
+#ifdef WIN32
+ else {
+ result = FindWin32CACert(config, tls_backend_info->backend,
+ TEXT("curl-ca-bundle.crt"));
+ }
+#endif
+ }
+ curl_easy_cleanup(curltls);
+ }
+
+ if(!result)
+ result = single_transfer(global, config, share, capath_from_env, added);
+
+ return result;
+}
+
+/*
+ * 'create_transfer' gets the details and sets up a new transfer if 'added'
+ * returns TRUE.
+ */
+static CURLcode create_transfer(struct GlobalConfig *global,
+ CURLSH *share,
+ bool *added)
+{
+ CURLcode result = CURLE_OK;
+ *added = FALSE;
+ while(global->current) {
+ result = transfer_per_config(global, global->current, share, added);
+ if(!result && !*added) {
+ /* when one set is drained, continue to next */
+ global->current = global->current->next;
+ continue;
+ }
+ break;
+ }
+ return result;
+}
+
+static CURLcode run_all_transfers(struct GlobalConfig *global,
+ CURLSH *share,
+ CURLcode result)
+{
+ /* Save the values of noprogress and isatty to restore them later on */
+ bool orig_noprogress = global->noprogress;
+ bool orig_isatty = global->isatty;
+ struct per_transfer *per;
+
+ /* Time to actually do the transfers */
+ if(!result) {
+ if(global->parallel)
+ result = parallel_transfers(global, share);
+ else
+ result = serial_transfers(global, share);
+ }
+
+ /* cleanup if there are any left */
+ for(per = transfers; per;) {
+ bool retry;
+ long delay;
+ CURLcode result2 = post_per_transfer(global, per, result, &retry, &delay);
+ if(!result)
+ /* don't overwrite the original error */
+ result = result2;
+
+ /* Free list of given URLs */
+ clean_getout(per->config);
+
+ per = del_per_transfer(per);
+ }
+
+ /* Reset the global config variables */
+ global->noprogress = orig_noprogress;
+ global->isatty = orig_isatty;
+
+
+ return result;
+}
+
+CURLcode operate(struct GlobalConfig *global, int argc, argv_item_t argv[])
+{
+ CURLcode result = CURLE_OK;
+ char *first_arg = argc > 1 ? curlx_convert_tchar_to_UTF8(argv[1]) : NULL;
+
+ /* Setup proper locale from environment */
+#ifdef HAVE_SETLOCALE
+ setlocale(LC_ALL, "");
+#endif
+
+ /* Parse .curlrc if necessary */
+ if((argc == 1) ||
+ (first_arg && strncmp(first_arg, "-q", 2) &&
+ !curl_strequal(first_arg, "--disable"))) {
+ parseconfig(NULL, global); /* ignore possible failure */
+
+ /* If we had no arguments then make sure a url was specified in .curlrc */
+ if((argc < 2) && (!global->first->url_list)) {
+ helpf(global->errors, NULL);
+ result = CURLE_FAILED_INIT;
+ }
+ }
+
+ curlx_unicodefree(first_arg);
+
+ if(!result) {
+ /* Parse the command line arguments */
+ ParameterError res = parse_args(global, argc, argv);
+ if(res) {
+ result = CURLE_OK;
+
+ /* Check if we were asked for the help */
+ if(res == PARAM_HELP_REQUESTED)
+ tool_help(global->help_category);
+ /* Check if we were asked for the manual */
+ else if(res == PARAM_MANUAL_REQUESTED)
+ hugehelp();
+ /* Check if we were asked for the version information */
+ else if(res == PARAM_VERSION_INFO_REQUESTED)
+ tool_version_info();
+ /* Check if we were asked to list the SSL engines */
+ else if(res == PARAM_ENGINES_REQUESTED)
+ tool_list_engines();
+ else if(res == PARAM_LIBCURL_UNSUPPORTED_PROTOCOL)
+ result = CURLE_UNSUPPORTED_PROTOCOL;
+ else if(res == PARAM_READ_ERROR)
+ result = CURLE_READ_ERROR;
+ else
+ result = CURLE_FAILED_INIT;
+ }
+ else {
+ if(global->libcurl) {
+ /* Initialise the libcurl source output */
+ result = easysrc_init();
+ }
+
+ /* Perform the main operations */
+ if(!result) {
+ size_t count = 0;
+ struct OperationConfig *operation = global->first;
+ CURLSH *share = curl_share_init();
+ if(!share) {
+ if(global->libcurl) {
+ /* Cleanup the libcurl source output */
+ easysrc_cleanup();
+ }
+ return CURLE_OUT_OF_MEMORY;
+ }
+
+ curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);
+ curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS);
+ curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_SSL_SESSION);
+ curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT);
+ curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_PSL);
+
+ /* Get the required arguments for each operation */
+ do {
+ result = get_args(operation, count++);
+
+ operation = operation->next;
+ } while(!result && operation);
+
+ /* Set the current operation pointer */
+ global->current = global->first;
+
+ /* now run! */
+ result = run_all_transfers(global, share, result);
+
+ curl_share_cleanup(share);
+ if(global->libcurl) {
+ /* Cleanup the libcurl source output */
+ easysrc_cleanup();
+
+ /* Dump the libcurl code if previously enabled */
+ dumpeasysrc(global);
+ }
+ }
+ else
+ errorf(global, "out of memory\n");
+ }
+ }
+
+ return result;
+}
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_operate.h b/ap/lib/libcurl/curl-7.86.0/src/tool_operate.h
new file mode 100755
index 0000000..c714da1
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_operate.h
@@ -0,0 +1,83 @@
+#ifndef HEADER_CURL_TOOL_OPERATE_H
+#define HEADER_CURL_TOOL_OPERATE_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+#include "tool_cb_hdr.h"
+#include "tool_cb_prg.h"
+#include "tool_sdecls.h"
+
+struct per_transfer {
+ /* double linked */
+ struct per_transfer *next;
+ struct per_transfer *prev;
+ struct OperationConfig *config; /* for this transfer */
+ CURL *curl;
+ long retry_numretries;
+ long retry_sleep_default;
+ long retry_sleep;
+ struct timeval retrystart;
+ char *this_url;
+ unsigned int urlnum; /* the index of the given URL */
+ char *outfile;
+ bool infdopen; /* TRUE if infd needs closing */
+ int infd;
+ bool noprogress;
+ struct ProgressData progressbar;
+ struct OutStruct outs;
+ struct OutStruct heads;
+ struct OutStruct etag_save;
+ struct InStruct input;
+ struct HdrCbData hdrcbdata;
+ long num_headers;
+ bool was_last_header_empty;
+
+ bool added; /* set TRUE when added to the multi handle */
+ time_t startat; /* when doing parallel transfers, this is a retry transfer
+ that has been set to sleep until this time before it
+ should get started (again) */
+ bool abort; /* when doing parallel transfers and this is TRUE then a critical
+ error (eg --fail-early) has occurred in another transfer and
+ this transfer will be aborted in the progress callback */
+
+ /* for parallel progress bar */
+ curl_off_t dltotal;
+ curl_off_t dlnow;
+ curl_off_t ultotal;
+ curl_off_t ulnow;
+ bool dltotal_added; /* if the total has been added from this */
+ bool ultotal_added;
+
+ /* NULL or malloced */
+ char *uploadfile;
+ char *errorbuffer; /* alloced and assigned while this is used for a
+ transfer */
+};
+
+CURLcode operate(struct GlobalConfig *config, int argc, argv_item_t argv[]);
+void single_transfer_cleanup(struct OperationConfig *config);
+
+extern struct per_transfer *transfers; /* first node */
+
+#endif /* HEADER_CURL_TOOL_OPERATE_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_operhlp.c b/ap/lib/libcurl/curl-7.86.0/src/tool_operhlp.c
new file mode 100755
index 0000000..eb58772
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_operhlp.c
@@ -0,0 +1,215 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+#include "tool_operate.h"
+
+#include "strcase.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_doswin.h"
+#include "tool_operhlp.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+void clean_getout(struct OperationConfig *config)
+{
+ if(config) {
+ struct getout *next;
+ struct getout *node = config->url_list;
+
+ while(node) {
+ next = node->next;
+ Curl_safefree(node->url);
+ Curl_safefree(node->outfile);
+ Curl_safefree(node->infile);
+ Curl_safefree(node);
+ node = next;
+ }
+ config->url_list = NULL;
+ }
+ single_transfer_cleanup(config);
+}
+
+bool output_expected(const char *url, const char *uploadfile)
+{
+ if(!uploadfile)
+ return TRUE; /* download */
+ if(checkprefix("http://", url) || checkprefix("https://", url))
+ return TRUE; /* HTTP(S) upload */
+
+ return FALSE; /* non-HTTP upload, probably no output should be expected */
+}
+
+bool stdin_upload(const char *uploadfile)
+{
+ return (!strcmp(uploadfile, "-") ||
+ !strcmp(uploadfile, ".")) ? TRUE : FALSE;
+}
+
+/*
+ * Adds the file name to the URL if it doesn't already have one.
+ * url will be freed before return if the returned pointer is different
+ */
+CURLcode add_file_name_to_url(CURL *curl, char **inurlp, const char *filename)
+{
+ CURLcode result = CURLE_OUT_OF_MEMORY;
+ CURLU *uh = curl_url();
+ char *path = NULL;
+ if(uh) {
+ char *ptr;
+ if(curl_url_set(uh, CURLUPART_URL, *inurlp,
+ CURLU_GUESS_SCHEME|CURLU_NON_SUPPORT_SCHEME))
+ goto fail;
+ if(curl_url_get(uh, CURLUPART_PATH, &path, 0))
+ goto fail;
+
+ ptr = strrchr(path, '/');
+ if(!ptr || !*++ptr) {
+ /* The URL path has no file name part, add the local file name. In order
+ to be able to do so, we have to create a new URL in another buffer.*/
+
+ /* We only want the part of the local path that is on the right
+ side of the rightmost slash and backslash. */
+ const char *filep = strrchr(filename, '/');
+ char *file2 = strrchr(filep?filep:filename, '\\');
+ char *encfile;
+
+ if(file2)
+ filep = file2 + 1;
+ else if(filep)
+ filep++;
+ else
+ filep = filename;
+
+ /* URL encode the file name */
+ encfile = curl_easy_escape(curl, filep, 0 /* use strlen */);
+ if(encfile) {
+ char *newpath;
+ char *newurl;
+ CURLUcode uerr;
+ if(ptr)
+ /* there is a trailing slash on the path */
+ newpath = aprintf("%s%s", path, encfile);
+ else
+ /* there is no trailing slash on the path */
+ newpath = aprintf("%s/%s", path, encfile);
+
+ curl_free(encfile);
+
+ if(!newpath)
+ goto fail;
+ uerr = curl_url_set(uh, CURLUPART_PATH, newpath, 0);
+ free(newpath);
+ if(uerr)
+ goto fail;
+ if(curl_url_get(uh, CURLUPART_URL, &newurl, CURLU_DEFAULT_SCHEME))
+ goto fail;
+ free(*inurlp);
+ *inurlp = newurl;
+ result = CURLE_OK;
+ }
+ }
+ else
+ /* nothing to do */
+ result = CURLE_OK;
+ }
+ fail:
+ curl_url_cleanup(uh);
+ curl_free(path);
+ return result;
+}
+
+/* Extracts the name portion of the URL.
+ * Returns a pointer to a heap-allocated string or NULL if
+ * no name part, at location indicated by first argument.
+ */
+CURLcode get_url_file_name(char **filename, const char *url)
+{
+ const char *pc, *pc2;
+ CURLU *uh = curl_url();
+ char *path = NULL;
+
+ if(!uh)
+ return CURLE_OUT_OF_MEMORY;
+
+ *filename = NULL;
+
+ if(!curl_url_set(uh, CURLUPART_URL, url, CURLU_GUESS_SCHEME) &&
+ !curl_url_get(uh, CURLUPART_PATH, &path, 0)) {
+ curl_url_cleanup(uh);
+
+ pc = strrchr(path, '/');
+ pc2 = strrchr(pc ? pc + 1 : path, '\\');
+ if(pc2)
+ pc = pc2;
+
+ if(pc)
+ /* duplicate the string beyond the slash */
+ pc++;
+ else
+ /* no slash => empty string */
+ pc = "";
+
+ *filename = strdup(pc);
+ curl_free(path);
+ if(!*filename)
+ return CURLE_OUT_OF_MEMORY;
+
+#if defined(MSDOS) || defined(WIN32)
+ {
+ char *sanitized;
+ SANITIZEcode sc = sanitize_file_name(&sanitized, *filename, 0);
+ Curl_safefree(*filename);
+ if(sc)
+ return CURLE_URL_MALFORMAT;
+ *filename = sanitized;
+ }
+#endif /* MSDOS || WIN32 */
+
+ /* in case we built debug enabled, we allow an environment variable
+ * named CURL_TESTDIR to prefix the given file name to put it into a
+ * specific directory
+ */
+#ifdef DEBUGBUILD
+ {
+ char *tdir = curlx_getenv("CURL_TESTDIR");
+ if(tdir) {
+ char *alt = aprintf("%s/%s", tdir, *filename);
+ Curl_safefree(*filename);
+ *filename = alt;
+ curl_free(tdir);
+ if(!*filename)
+ return CURLE_OUT_OF_MEMORY;
+ }
+ }
+#endif
+ return CURLE_OK;
+ }
+ curl_url_cleanup(uh);
+ return CURLE_URL_MALFORMAT;
+}
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_operhlp.h b/ap/lib/libcurl/curl-7.86.0/src/tool_operhlp.h
new file mode 100755
index 0000000..8018d1a
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_operhlp.h
@@ -0,0 +1,40 @@
+#ifndef HEADER_CURL_TOOL_OPERHLP_H
+#define HEADER_CURL_TOOL_OPERHLP_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+struct OperationConfig;
+
+void clean_getout(struct OperationConfig *config);
+
+bool output_expected(const char *url, const char *uploadfile);
+
+bool stdin_upload(const char *uploadfile);
+
+CURLcode add_file_name_to_url(CURL *curl, char **inurlp, const char *filename);
+
+CURLcode get_url_file_name(char **filename, const char *url);
+
+#endif /* HEADER_CURL_TOOL_OPERHLP_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_panykey.c b/ap/lib/libcurl/curl-7.86.0/src/tool_panykey.c
new file mode 100755
index 0000000..81feaba
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_panykey.c
@@ -0,0 +1,47 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#if defined(NETWARE)
+
+#ifdef NETWARE
+# ifdef __NOVELL_LIBC__
+# include <screen.h>
+# else
+# include <nwconio.h>
+# endif
+#endif
+
+#include "tool_panykey.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+void tool_pressanykey(void)
+{
+#if defined(NETWARE)
+ pressanykey();
+#endif
+}
+
+#endif /* NETWARE */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_panykey.h b/ap/lib/libcurl/curl-7.86.0/src/tool_panykey.h
new file mode 100755
index 0000000..c5cc322
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_panykey.h
@@ -0,0 +1,34 @@
+#ifndef HEADER_CURL_TOOL_PANYKEY_H
+#define HEADER_CURL_TOOL_PANYKEY_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#if defined(NETWARE)
+void tool_pressanykey(void);
+#else
+#define tool_pressanykey() Curl_nop_stmt
+#endif
+
+#endif /* HEADER_CURL_TOOL_PANYKEY_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_paramhlp.c b/ap/lib/libcurl/curl-7.86.0/src/tool_paramhlp.c
new file mode 100755
index 0000000..05afb8d
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_paramhlp.c
@@ -0,0 +1,705 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#include "strcase.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_getparam.h"
+#include "tool_getpass.h"
+#include "tool_msgs.h"
+#include "tool_paramhlp.h"
+#include "tool_libinfo.h"
+#include "tool_util.h"
+#include "tool_version.h"
+#include "dynbuf.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+struct getout *new_getout(struct OperationConfig *config)
+{
+ struct getout *node = calloc(1, sizeof(struct getout));
+ struct getout *last = config->url_last;
+ if(node) {
+ static int outnum = 0;
+
+ /* append this new node last in the list */
+ if(last)
+ last->next = node;
+ else
+ config->url_list = node; /* first node */
+
+ /* move the last pointer */
+ config->url_last = node;
+
+ node->flags = config->default_node_flags;
+ node->num = outnum++;
+ }
+ return node;
+}
+
+#define MAX_FILE2STRING (256*1024*1024) /* big enough ? */
+
+ParameterError file2string(char **bufp, FILE *file)
+{
+ struct curlx_dynbuf dyn;
+ DEBUGASSERT(MAX_FILE2STRING < INT_MAX); /* needs to fit in an int later */
+ curlx_dyn_init(&dyn, MAX_FILE2STRING);
+ if(file) {
+ char buffer[256];
+
+ while(fgets(buffer, sizeof(buffer), file)) {
+ char *ptr = strchr(buffer, '\r');
+ if(ptr)
+ *ptr = '\0';
+ ptr = strchr(buffer, '\n');
+ if(ptr)
+ *ptr = '\0';
+ if(curlx_dyn_add(&dyn, buffer))
+ return PARAM_NO_MEM;
+ }
+ }
+ *bufp = curlx_dyn_ptr(&dyn);
+ return PARAM_OK;
+}
+
+#define MAX_FILE2MEMORY (1024*1024*1024) /* big enough ? */
+
+ParameterError file2memory(char **bufp, size_t *size, FILE *file)
+{
+ if(file) {
+ size_t nread;
+ struct curlx_dynbuf dyn;
+ /* The size needs to fit in an int later */
+ DEBUGASSERT(MAX_FILE2MEMORY < INT_MAX);
+ curlx_dyn_init(&dyn, MAX_FILE2MEMORY);
+ do {
+ char buffer[4096];
+ nread = fread(buffer, 1, sizeof(buffer), file);
+ if(ferror(file)) {
+ curlx_dyn_free(&dyn);
+ *size = 0;
+ *bufp = NULL;
+ return PARAM_READ_ERROR;
+ }
+ if(nread)
+ if(curlx_dyn_addn(&dyn, buffer, nread))
+ return PARAM_NO_MEM;
+ } while(!feof(file));
+ *size = curlx_dyn_len(&dyn);
+ *bufp = curlx_dyn_ptr(&dyn);
+ }
+ else {
+ *size = 0;
+ *bufp = NULL;
+ }
+ return PARAM_OK;
+}
+
+/*
+ * Parse the string and write the long in the given address. Return PARAM_OK
+ * on success, otherwise a parameter specific error enum.
+ *
+ * Since this function gets called with the 'nextarg' pointer from within the
+ * getparameter a lot, we must check it for NULL before accessing the str
+ * data.
+ */
+static ParameterError getnum(long *val, const char *str, int base)
+{
+ if(str) {
+ char *endptr = NULL;
+ long num;
+ errno = 0;
+ num = strtol(str, &endptr, base);
+ if(errno == ERANGE)
+ return PARAM_NUMBER_TOO_LARGE;
+ if((endptr != str) && (endptr == str + strlen(str))) {
+ *val = num;
+ return PARAM_OK; /* Ok */
+ }
+ }
+ return PARAM_BAD_NUMERIC; /* badness */
+}
+
+ParameterError str2num(long *val, const char *str)
+{
+ return getnum(val, str, 10);
+}
+
+ParameterError oct2nummax(long *val, const char *str, long max)
+{
+ ParameterError result = getnum(val, str, 8);
+ if(result != PARAM_OK)
+ return result;
+ else if(*val > max)
+ return PARAM_NUMBER_TOO_LARGE;
+ else if(*val < 0)
+ return PARAM_NEGATIVE_NUMERIC;
+
+ return PARAM_OK;
+}
+
+/*
+ * Parse the string and write the long in the given address. Return PARAM_OK
+ * on success, otherwise a parameter error enum. ONLY ACCEPTS POSITIVE NUMBERS!
+ *
+ * Since this function gets called with the 'nextarg' pointer from within the
+ * getparameter a lot, we must check it for NULL before accessing the str
+ * data.
+ */
+
+ParameterError str2unum(long *val, const char *str)
+{
+ ParameterError result = getnum(val, str, 10);
+ if(result != PARAM_OK)
+ return result;
+ if(*val < 0)
+ return PARAM_NEGATIVE_NUMERIC;
+
+ return PARAM_OK;
+}
+
+/*
+ * Parse the string and write the long in the given address if it is below the
+ * maximum allowed value. Return PARAM_OK on success, otherwise a parameter
+ * error enum. ONLY ACCEPTS POSITIVE NUMBERS!
+ *
+ * Since this function gets called with the 'nextarg' pointer from within the
+ * getparameter a lot, we must check it for NULL before accessing the str
+ * data.
+ */
+
+ParameterError str2unummax(long *val, const char *str, long max)
+{
+ ParameterError result = str2unum(val, str);
+ if(result != PARAM_OK)
+ return result;
+ if(*val > max)
+ return PARAM_NUMBER_TOO_LARGE;
+
+ return PARAM_OK;
+}
+
+
+/*
+ * Parse the string and write the double in the given address. Return PARAM_OK
+ * on success, otherwise a parameter specific error enum.
+ *
+ * The 'max' argument is the maximum value allowed, as the numbers are often
+ * multiplied when later used.
+ *
+ * Since this function gets called with the 'nextarg' pointer from within the
+ * getparameter a lot, we must check it for NULL before accessing the str
+ * data.
+ */
+
+static ParameterError str2double(double *val, const char *str, double max)
+{
+ if(str) {
+ char *endptr;
+ double num;
+ errno = 0;
+ num = strtod(str, &endptr);
+ if(errno == ERANGE)
+ return PARAM_NUMBER_TOO_LARGE;
+ if(num > max) {
+ /* too large */
+ return PARAM_NUMBER_TOO_LARGE;
+ }
+ if((endptr != str) && (endptr == str + strlen(str))) {
+ *val = num;
+ return PARAM_OK; /* Ok */
+ }
+ }
+ return PARAM_BAD_NUMERIC; /* badness */
+}
+
+/*
+ * Parse the string and write the double in the given address. Return PARAM_OK
+ * on success, otherwise a parameter error enum. ONLY ACCEPTS POSITIVE NUMBERS!
+ *
+ * The 'max' argument is the maximum value allowed, as the numbers are often
+ * multiplied when later used.
+ *
+ * Since this function gets called with the 'nextarg' pointer from within the
+ * getparameter a lot, we must check it for NULL before accessing the str
+ * data.
+ */
+
+ParameterError str2udouble(double *valp, const char *str, double max)
+{
+ double value;
+ ParameterError result = str2double(&value, str, max);
+ if(result != PARAM_OK)
+ return result;
+ if(value < 0)
+ return PARAM_NEGATIVE_NUMERIC;
+
+ *valp = value;
+ return PARAM_OK;
+}
+
+/*
+ * Implement protocol sets in null-terminated array of protocol name pointers.
+ */
+
+/* Return index of prototype token in set, card(set) if not found.
+ Can be called with proto == NULL to get card(set). */
+static size_t protoset_index(const char * const *protoset, const char *proto)
+{
+ const char * const *p = protoset;
+
+ DEBUGASSERT(proto == proto_token(proto)); /* Ensure it is tokenized. */
+
+ for(; *p; p++)
+ if(proto == *p)
+ break;
+ return p - protoset;
+}
+
+/* Include protocol token in set. */
+static void protoset_set(const char **protoset, const char *proto)
+{
+ if(proto) {
+ size_t n = protoset_index(protoset, proto);
+
+ if(!protoset[n]) {
+ DEBUGASSERT(n < proto_count);
+ protoset[n] = proto;
+ protoset[n + 1] = NULL;
+ }
+ }
+}
+
+/* Exclude protocol token from set. */
+static void protoset_clear(const char **protoset, const char *proto)
+{
+ if(proto) {
+ size_t n = protoset_index(protoset, proto);
+
+ if(protoset[n]) {
+ size_t m = protoset_index(protoset, NULL) - 1;
+
+ protoset[n] = protoset[m];
+ protoset[m] = NULL;
+ }
+ }
+}
+
+/*
+ * Parse the string and provide an allocated libcurl compatible protocol
+ * string output. Return non-zero on failure, zero on success.
+ *
+ * The string is a list of protocols
+ *
+ * Since this function gets called with the 'nextarg' pointer from within the
+ * getparameter a lot, we must check it for NULL before accessing the str
+ * data.
+ */
+
+#define MAX_PROTOSTRING (64*11) /* Enough room for 64 10-chars proto names. */
+
+ParameterError proto2num(struct OperationConfig *config,
+ const char * const *val, char **ostr, const char *str)
+{
+ char *buffer;
+ const char *sep = ",";
+ char *token;
+ const char **protoset;
+ struct curlx_dynbuf obuf;
+ size_t proto;
+ CURLcode result;
+
+ curlx_dyn_init(&obuf, MAX_PROTOSTRING);
+
+ if(!str)
+ return PARAM_OPTION_AMBIGUOUS;
+
+ buffer = strdup(str); /* because strtok corrupts it */
+ if(!buffer)
+ return PARAM_NO_MEM;
+
+ protoset = malloc((proto_count + 1) * sizeof(*protoset));
+ if(!protoset) {
+ free(buffer);
+ return PARAM_NO_MEM;
+ }
+
+ /* Preset protocol set with default values. */
+ protoset[0] = NULL;
+ for(; *val; val++) {
+ const char *p = proto_token(*val);
+
+ if(p)
+ protoset_set(protoset, p);
+ }
+
+ /* Allow strtok() here since this isn't used threaded */
+ /* !checksrc! disable BANNEDFUNC 2 */
+ for(token = strtok(buffer, sep);
+ token;
+ token = strtok(NULL, sep)) {
+ enum e_action { allow, deny, set } action = allow;
+
+ /* Process token modifiers */
+ while(!ISALNUM(*token)) { /* may be NULL if token is all modifiers */
+ switch (*token++) {
+ case '=':
+ action = set;
+ break;
+ case '-':
+ action = deny;
+ break;
+ case '+':
+ action = allow;
+ break;
+ default: /* Includes case of terminating NULL */
+ free(buffer);
+ free((char *) protoset);
+ return PARAM_BAD_USE;
+ }
+ }
+
+ if(curl_strequal(token, "all")) {
+ switch(action) {
+ case deny:
+ protoset[0] = NULL;
+ break;
+ case allow:
+ case set:
+ memcpy((char *) protoset,
+ built_in_protos, (proto_count + 1) * sizeof(*protoset));
+ break;
+ }
+ }
+ else {
+ const char *p = proto_token(token);
+
+ if(p)
+ switch(action) {
+ case deny:
+ protoset_clear(protoset, p);
+ break;
+ case set:
+ protoset[0] = NULL;
+ /* FALLTHROUGH */
+ case allow:
+ protoset_set(protoset, p);
+ break;
+ }
+ else { /* unknown protocol */
+ /* If they have specified only this protocol, we say treat it as
+ if no protocols are allowed */
+ if(action == set)
+ protoset[0] = NULL;
+ warnf(config->global, "unrecognized protocol '%s'\n", token);
+ }
+ }
+ }
+ free(buffer);
+
+ /* We need the protocols in alphabetic order for CI tests requirements. */
+ qsort((char *) protoset, protoset_index(protoset, NULL), sizeof(*protoset),
+ struplocompare4sort);
+
+ result = curlx_dyn_addn(&obuf, "", 0);
+ for(proto = 0; protoset[proto] && !result; proto++)
+ result = curlx_dyn_addf(&obuf, "%s,", protoset[proto]);
+ free((char *) protoset);
+ curlx_dyn_setlen(&obuf, curlx_dyn_len(&obuf) - 1);
+ *ostr = curlx_dyn_ptr(&obuf);
+
+ return *ostr ? PARAM_OK : PARAM_NO_MEM;
+}
+
+/**
+ * Check if the given string is a protocol supported by libcurl
+ *
+ * @param str the protocol name
+ * @return PARAM_OK protocol supported
+ * @return PARAM_LIBCURL_UNSUPPORTED_PROTOCOL protocol not supported
+ * @return PARAM_REQUIRES_PARAMETER missing parameter
+ */
+ParameterError check_protocol(const char *str)
+{
+ if(!str)
+ return PARAM_REQUIRES_PARAMETER;
+
+ if(proto_token(str))
+ return PARAM_OK;
+ return PARAM_LIBCURL_UNSUPPORTED_PROTOCOL;
+}
+
+/**
+ * Parses the given string looking for an offset (which may be a
+ * larger-than-integer value). The offset CANNOT be negative!
+ *
+ * @param val the offset to populate
+ * @param str the buffer containing the offset
+ * @return PARAM_OK if successful, a parameter specific error enum if failure.
+ */
+ParameterError str2offset(curl_off_t *val, const char *str)
+{
+ char *endptr;
+ if(str[0] == '-')
+ /* offsets aren't negative, this indicates weird input */
+ return PARAM_NEGATIVE_NUMERIC;
+
+#if(SIZEOF_CURL_OFF_T > SIZEOF_LONG)
+ {
+ CURLofft offt = curlx_strtoofft(str, &endptr, 0, val);
+ if(CURL_OFFT_FLOW == offt)
+ return PARAM_NUMBER_TOO_LARGE;
+ else if(CURL_OFFT_INVAL == offt)
+ return PARAM_BAD_NUMERIC;
+ }
+#else
+ errno = 0;
+ *val = strtol(str, &endptr, 0);
+ if((*val == LONG_MIN || *val == LONG_MAX) && errno == ERANGE)
+ return PARAM_NUMBER_TOO_LARGE;
+#endif
+ if((endptr != str) && (endptr == str + strlen(str)))
+ return PARAM_OK;
+
+ return PARAM_BAD_NUMERIC;
+}
+
+#define MAX_USERPWDLENGTH (100*1024)
+static CURLcode checkpasswd(const char *kind, /* for what purpose */
+ const size_t i, /* operation index */
+ const bool last, /* TRUE if last operation */
+ char **userpwd) /* pointer to allocated string */
+{
+ char *psep;
+ char *osep;
+
+ if(!*userpwd)
+ return CURLE_OK;
+
+ /* Attempt to find the password separator */
+ psep = strchr(*userpwd, ':');
+
+ /* Attempt to find the options separator */
+ osep = strchr(*userpwd, ';');
+
+ if(!psep && **userpwd != ';') {
+ /* no password present, prompt for one */
+ char passwd[2048] = "";
+ char prompt[256];
+ struct curlx_dynbuf dyn;
+
+ curlx_dyn_init(&dyn, MAX_USERPWDLENGTH);
+ if(osep)
+ *osep = '\0';
+
+ /* build a nice-looking prompt */
+ if(!i && last)
+ curlx_msnprintf(prompt, sizeof(prompt),
+ "Enter %s password for user '%s':",
+ kind, *userpwd);
+ else
+ curlx_msnprintf(prompt, sizeof(prompt),
+ "Enter %s password for user '%s' on URL #%zu:",
+ kind, *userpwd, i + 1);
+
+ /* get password */
+ getpass_r(prompt, passwd, sizeof(passwd));
+ if(osep)
+ *osep = ';';
+
+ if(curlx_dyn_addf(&dyn, "%s:%s", *userpwd, passwd))
+ return CURLE_OUT_OF_MEMORY;
+
+ /* return the new string */
+ free(*userpwd);
+ *userpwd = curlx_dyn_ptr(&dyn);
+ }
+
+ return CURLE_OK;
+}
+
+ParameterError add2list(struct curl_slist **list, const char *ptr)
+{
+ struct curl_slist *newlist = curl_slist_append(*list, ptr);
+ if(newlist)
+ *list = newlist;
+ else
+ return PARAM_NO_MEM;
+
+ return PARAM_OK;
+}
+
+int ftpfilemethod(struct OperationConfig *config, const char *str)
+{
+ if(curl_strequal("singlecwd", str))
+ return CURLFTPMETHOD_SINGLECWD;
+ if(curl_strequal("nocwd", str))
+ return CURLFTPMETHOD_NOCWD;
+ if(curl_strequal("multicwd", str))
+ return CURLFTPMETHOD_MULTICWD;
+
+ warnf(config->global, "unrecognized ftp file method '%s', using default\n",
+ str);
+
+ return CURLFTPMETHOD_MULTICWD;
+}
+
+int ftpcccmethod(struct OperationConfig *config, const char *str)
+{
+ if(curl_strequal("passive", str))
+ return CURLFTPSSL_CCC_PASSIVE;
+ if(curl_strequal("active", str))
+ return CURLFTPSSL_CCC_ACTIVE;
+
+ warnf(config->global, "unrecognized ftp CCC method '%s', using default\n",
+ str);
+
+ return CURLFTPSSL_CCC_PASSIVE;
+}
+
+long delegation(struct OperationConfig *config, const char *str)
+{
+ if(curl_strequal("none", str))
+ return CURLGSSAPI_DELEGATION_NONE;
+ if(curl_strequal("policy", str))
+ return CURLGSSAPI_DELEGATION_POLICY_FLAG;
+ if(curl_strequal("always", str))
+ return CURLGSSAPI_DELEGATION_FLAG;
+
+ warnf(config->global, "unrecognized delegation method '%s', using none\n",
+ str);
+
+ return CURLGSSAPI_DELEGATION_NONE;
+}
+
+/*
+ * my_useragent: returns allocated string with default user agent
+ */
+static char *my_useragent(void)
+{
+ return strdup(CURL_NAME "/" CURL_VERSION);
+}
+
+#define isheadersep(x) ((((x)==':') || ((x)==';')))
+
+/*
+ * inlist() returns true if the given 'checkfor' header is present in the
+ * header list.
+ */
+static bool inlist(const struct curl_slist *head,
+ const char *checkfor)
+{
+ size_t thislen = strlen(checkfor);
+ DEBUGASSERT(thislen);
+ DEBUGASSERT(checkfor[thislen-1] != ':');
+
+ for(; head; head = head->next) {
+ if(curl_strnequal(head->data, checkfor, thislen) &&
+ isheadersep(head->data[thislen]) )
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+CURLcode get_args(struct OperationConfig *config, const size_t i)
+{
+ CURLcode result = CURLE_OK;
+ bool last = (config->next ? FALSE : TRUE);
+
+ if(config->jsoned) {
+ ParameterError err = PARAM_OK;
+ /* --json also implies json Content-Type: and Accept: headers - if
+ they are not set with -H */
+ if(!inlist(config->headers, "Content-Type"))
+ err = add2list(&config->headers, "Content-Type: application/json");
+ if(!err && !inlist(config->headers, "Accept"))
+ err = add2list(&config->headers, "Accept: application/json");
+ if(err)
+ return CURLE_OUT_OF_MEMORY;
+ }
+
+ /* Check we have a password for the given host user */
+ if(config->userpwd && !config->oauth_bearer) {
+ result = checkpasswd("host", i, last, &config->userpwd);
+ if(result)
+ return result;
+ }
+
+ /* Check we have a password for the given proxy user */
+ if(config->proxyuserpwd) {
+ result = checkpasswd("proxy", i, last, &config->proxyuserpwd);
+ if(result)
+ return result;
+ }
+
+ /* Check we have a user agent */
+ if(!config->useragent) {
+ config->useragent = my_useragent();
+ if(!config->useragent) {
+ errorf(config->global, "out of memory\n");
+ result = CURLE_OUT_OF_MEMORY;
+ }
+ }
+
+ return result;
+}
+
+/*
+ * Parse the string and modify ssl_version in the val argument. Return PARAM_OK
+ * on success, otherwise a parameter error enum. ONLY ACCEPTS POSITIVE NUMBERS!
+ *
+ * Since this function gets called with the 'nextarg' pointer from within the
+ * getparameter a lot, we must check it for NULL before accessing the str
+ * data.
+ */
+
+ParameterError str2tls_max(long *val, const char *str)
+{
+ static struct s_tls_max {
+ const char *tls_max_str;
+ long tls_max;
+ } const tls_max_array[] = {
+ { "default", CURL_SSLVERSION_MAX_DEFAULT },
+ { "1.0", CURL_SSLVERSION_MAX_TLSv1_0 },
+ { "1.1", CURL_SSLVERSION_MAX_TLSv1_1 },
+ { "1.2", CURL_SSLVERSION_MAX_TLSv1_2 },
+ { "1.3", CURL_SSLVERSION_MAX_TLSv1_3 }
+ };
+ size_t i = 0;
+ if(!str)
+ return PARAM_REQUIRES_PARAMETER;
+ for(i = 0; i < sizeof(tls_max_array)/sizeof(tls_max_array[0]); i++) {
+ if(!strcmp(str, tls_max_array[i].tls_max_str)) {
+ *val = tls_max_array[i].tls_max;
+ return PARAM_OK;
+ }
+ }
+ return PARAM_BAD_USE;
+}
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_paramhlp.h b/ap/lib/libcurl/curl-7.86.0/src/tool_paramhlp.h
new file mode 100755
index 0000000..7d68583
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_paramhlp.h
@@ -0,0 +1,61 @@
+#ifndef HEADER_CURL_TOOL_PARAMHLP_H
+#define HEADER_CURL_TOOL_PARAMHLP_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+#include "tool_libinfo.h"
+
+struct getout *new_getout(struct OperationConfig *config);
+
+ParameterError file2string(char **bufp, FILE *file);
+
+ParameterError file2memory(char **bufp, size_t *size, FILE *file);
+
+ParameterError str2num(long *val, const char *str);
+ParameterError str2unum(long *val, const char *str);
+ParameterError oct2nummax(long *val, const char *str, long max);
+ParameterError str2unummax(long *val, const char *str, long max);
+ParameterError str2udouble(double *val, const char *str, double max);
+
+ParameterError proto2num(struct OperationConfig *config,
+ const char * const *val, char **obuf,
+ const char *str);
+
+ParameterError check_protocol(const char *str);
+
+ParameterError str2offset(curl_off_t *val, const char *str);
+
+CURLcode get_args(struct OperationConfig *config, const size_t i);
+
+ParameterError add2list(struct curl_slist **list, const char *ptr);
+
+int ftpfilemethod(struct OperationConfig *config, const char *str);
+
+int ftpcccmethod(struct OperationConfig *config, const char *str);
+
+long delegation(struct OperationConfig *config, const char *str);
+
+ParameterError str2tls_max(long *val, const char *str);
+
+#endif /* HEADER_CURL_TOOL_PARAMHLP_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_parsecfg.c b/ap/lib/libcurl/curl-7.86.0/src/tool_parsecfg.c
new file mode 100755
index 0000000..a166757
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_parsecfg.c
@@ -0,0 +1,351 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_getparam.h"
+#include "tool_helpers.h"
+#include "tool_findfile.h"
+#include "tool_msgs.h"
+#include "tool_parsecfg.h"
+#include "dynbuf.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+/* only acknowledge colon or equals as separators if the option was not
+ specified with an initial dash! */
+#define ISSEP(x,dash) (!dash && (((x) == '=') || ((x) == ':')))
+
+static const char *unslashquote(const char *line, char *param);
+
+#define MAX_CONFIG_LINE_LENGTH (100*1024)
+static bool my_get_line(FILE *fp, struct curlx_dynbuf *, bool *error);
+
+#ifdef WIN32
+static FILE *execpath(const char *filename, char **pathp)
+{
+ static char filebuffer[512];
+ /* Get the filename of our executable. GetModuleFileName is already declared
+ * via inclusions done in setup header file. We assume that we are using
+ * the ASCII version here.
+ */
+ unsigned long len = GetModuleFileNameA(0, filebuffer, sizeof(filebuffer));
+ if(len > 0 && len < sizeof(filebuffer)) {
+ /* We got a valid filename - get the directory part */
+ char *lastdirchar = strrchr(filebuffer, '\\');
+ if(lastdirchar) {
+ size_t remaining;
+ *lastdirchar = 0;
+ /* If we have enough space, build the RC filename */
+ remaining = sizeof(filebuffer) - strlen(filebuffer);
+ if(strlen(filename) < remaining - 1) {
+ FILE *f;
+ msnprintf(lastdirchar, remaining, "%s%s", DIR_CHAR, filename);
+ *pathp = filebuffer;
+ f = fopen(filebuffer, FOPEN_READTEXT);
+ return f;
+ }
+ }
+ }
+
+ return NULL;
+}
+#endif
+
+
+/* return 0 on everything-is-fine, and non-zero otherwise */
+int parseconfig(const char *filename, struct GlobalConfig *global)
+{
+ FILE *file = NULL;
+ bool usedarg = FALSE;
+ int rc = 0;
+ struct OperationConfig *operation = global->last;
+ char *pathalloc = NULL;
+
+ if(!filename) {
+ /* NULL means load .curlrc from homedir! */
+ char *curlrc = findfile(".curlrc", CURLRC_DOTSCORE);
+ if(curlrc) {
+ file = fopen(curlrc, FOPEN_READTEXT);
+ if(!file) {
+ free(curlrc);
+ return 1;
+ }
+ filename = pathalloc = curlrc;
+ }
+#ifdef WIN32 /* Windows */
+ else {
+ char *fullp;
+ /* check for .curlrc then _curlrc in the dir of the executable */
+ file = execpath(".curlrc", &fullp);
+ if(!file)
+ file = execpath("_curlrc", &fullp);
+ if(file)
+ /* this is the filename we read from */
+ filename = fullp;
+ }
+#endif
+ }
+ else {
+ if(strcmp(filename, "-"))
+ file = fopen(filename, FOPEN_READTEXT);
+ else
+ file = stdin;
+ }
+
+ if(file) {
+ char *line;
+ char *option;
+ char *param;
+ int lineno = 0;
+ bool dashed_option;
+ struct curlx_dynbuf buf;
+ bool fileerror;
+ curlx_dyn_init(&buf, MAX_CONFIG_LINE_LENGTH);
+ DEBUGASSERT(filename);
+
+ while(my_get_line(file, &buf, &fileerror)) {
+ int res;
+ bool alloced_param = FALSE;
+ lineno++;
+ line = curlx_dyn_ptr(&buf);
+ if(!line) {
+ rc = 1; /* out of memory */
+ break;
+ }
+
+ /* line with # in the first non-blank column is a comment! */
+ while(*line && ISSPACE(*line))
+ line++;
+
+ switch(*line) {
+ case '#':
+ case '/':
+ case '\r':
+ case '\n':
+ case '*':
+ case '\0':
+ curlx_dyn_reset(&buf);
+ continue;
+ }
+
+ /* the option keywords starts here */
+ option = line;
+
+ /* the option starts with a dash? */
+ dashed_option = option[0]=='-'?TRUE:FALSE;
+
+ while(*line && !ISSPACE(*line) && !ISSEP(*line, dashed_option))
+ line++;
+ /* ... and has ended here */
+
+ if(*line)
+ *line++ = '\0'; /* null-terminate, we have a local copy of the data */
+
+#ifdef DEBUG_CONFIG
+ fprintf(stderr, "GOT: %s\n", option);
+#endif
+
+ /* pass spaces and separator(s) */
+ while(*line && (ISSPACE(*line) || ISSEP(*line, dashed_option)))
+ line++;
+
+ /* the parameter starts here (unless quoted) */
+ if(*line == '\"') {
+ /* quoted parameter, do the quote dance */
+ line++;
+ param = malloc(strlen(line) + 1); /* parameter */
+ if(!param) {
+ /* out of memory */
+ rc = 1;
+ break;
+ }
+ alloced_param = TRUE;
+ (void)unslashquote(line, param);
+ }
+ else {
+ param = line; /* parameter starts here */
+ while(*line && !ISSPACE(*line))
+ line++;
+
+ if(*line) {
+ *line = '\0'; /* null-terminate */
+
+ /* to detect mistakes better, see if there's data following */
+ line++;
+ /* pass all spaces */
+ while(*line && ISSPACE(*line))
+ line++;
+
+ switch(*line) {
+ case '\0':
+ case '\r':
+ case '\n':
+ case '#': /* comment */
+ break;
+ default:
+ warnf(operation->global, "%s:%d: warning: '%s' uses unquoted "
+ "whitespace in the line that may cause side-effects!\n",
+ filename, lineno, option);
+ }
+ }
+ if(!*param)
+ /* do this so getparameter can check for required parameters.
+ Otherwise it always thinks there's a parameter. */
+ param = NULL;
+ }
+
+#ifdef DEBUG_CONFIG
+ fprintf(stderr, "PARAM: \"%s\"\n",(param ? param : "(null)"));
+#endif
+ res = getparameter(option, param, &usedarg, global, operation);
+ operation = global->last;
+
+ if(!res && param && *param && !usedarg)
+ /* we passed in a parameter that wasn't used! */
+ res = PARAM_GOT_EXTRA_PARAMETER;
+
+ if(res == PARAM_NEXT_OPERATION) {
+ if(operation->url_list && operation->url_list->url) {
+ /* Allocate the next config */
+ operation->next = malloc(sizeof(struct OperationConfig));
+ if(operation->next) {
+ /* Initialise the newly created config */
+ config_init(operation->next);
+
+ /* Set the global config pointer */
+ operation->next->global = global;
+
+ /* Update the last operation pointer */
+ global->last = operation->next;
+
+ /* Move onto the new config */
+ operation->next->prev = operation;
+ operation = operation->next;
+ }
+ else
+ res = PARAM_NO_MEM;
+ }
+ }
+
+ if(res != PARAM_OK && res != PARAM_NEXT_OPERATION) {
+ /* the help request isn't really an error */
+ if(!strcmp(filename, "-")) {
+ filename = "<stdin>";
+ }
+ if(res != PARAM_HELP_REQUESTED &&
+ res != PARAM_MANUAL_REQUESTED &&
+ res != PARAM_VERSION_INFO_REQUESTED &&
+ res != PARAM_ENGINES_REQUESTED) {
+ const char *reason = param2text(res);
+ warnf(operation->global, "%s:%d: warning: '%s' %s\n",
+ filename, lineno, option, reason);
+ }
+ }
+
+ if(alloced_param)
+ Curl_safefree(param);
+
+ curlx_dyn_reset(&buf);
+ }
+ curlx_dyn_free(&buf);
+ if(file != stdin)
+ fclose(file);
+ if(fileerror)
+ rc = 1;
+ }
+ else
+ rc = 1; /* couldn't open the file */
+
+ free(pathalloc);
+ return rc;
+}
+
+/*
+ * Copies the string from line to the buffer at param, unquoting
+ * backslash-quoted characters and NUL-terminating the output string.
+ * Stops at the first non-backslash-quoted double quote character or the
+ * end of the input string. param must be at least as long as the input
+ * string. Returns the pointer after the last handled input character.
+ */
+static const char *unslashquote(const char *line, char *param)
+{
+ while(*line && (*line != '\"')) {
+ if(*line == '\\') {
+ char out;
+ line++;
+
+ /* default is to output the letter after the backslash */
+ switch(out = *line) {
+ case '\0':
+ continue; /* this'll break out of the loop */
+ case 't':
+ out = '\t';
+ break;
+ case 'n':
+ out = '\n';
+ break;
+ case 'r':
+ out = '\r';
+ break;
+ case 'v':
+ out = '\v';
+ break;
+ }
+ *param++ = out;
+ line++;
+ }
+ else
+ *param++ = *line++;
+ }
+ *param = '\0'; /* always null-terminate */
+ return line;
+}
+
+/*
+ * Reads a line from the given file, ensuring is NUL terminated.
+ */
+static bool my_get_line(FILE *fp, struct curlx_dynbuf *db,
+ bool *error)
+{
+ char buf[4096];
+ *error = FALSE;
+ do {
+ /* fgets() returns s on success, and NULL on error or when end of file
+ occurs while no characters have been read. */
+ if(!fgets(buf, sizeof(buf), fp))
+ /* only if there's data in the line, return TRUE */
+ return curlx_dyn_len(db) ? TRUE : FALSE;
+ if(curlx_dyn_add(db, buf)) {
+ *error = TRUE; /* error */
+ return FALSE; /* stop reading */
+ }
+ } while(!strchr(buf, '\n'));
+
+ return TRUE; /* continue */
+}
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_parsecfg.h b/ap/lib/libcurl/curl-7.86.0/src/tool_parsecfg.h
new file mode 100755
index 0000000..90af619
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_parsecfg.h
@@ -0,0 +1,30 @@
+#ifndef HEADER_CURL_TOOL_PARSECFG_H
+#define HEADER_CURL_TOOL_PARSECFG_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+int parseconfig(const char *filename, struct GlobalConfig *config);
+
+#endif /* HEADER_CURL_TOOL_PARSECFG_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_progress.c b/ap/lib/libcurl/curl-7.86.0/src/tool_progress.c
new file mode 100755
index 0000000..266177b
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_progress.c
@@ -0,0 +1,331 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+#include "tool_operate.h"
+#include "tool_progress.h"
+#include "tool_util.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+/* The point of this function would be to return a string of the input data,
+ but never longer than 5 columns (+ one zero byte).
+ Add suffix k, M, G when suitable... */
+static char *max5data(curl_off_t bytes, char *max5)
+{
+#define ONE_KILOBYTE CURL_OFF_T_C(1024)
+#define ONE_MEGABYTE (CURL_OFF_T_C(1024) * ONE_KILOBYTE)
+#define ONE_GIGABYTE (CURL_OFF_T_C(1024) * ONE_MEGABYTE)
+#define ONE_TERABYTE (CURL_OFF_T_C(1024) * ONE_GIGABYTE)
+#define ONE_PETABYTE (CURL_OFF_T_C(1024) * ONE_TERABYTE)
+
+ if(bytes < CURL_OFF_T_C(100000))
+ msnprintf(max5, 6, "%5" CURL_FORMAT_CURL_OFF_T, bytes);
+
+ else if(bytes < CURL_OFF_T_C(10000) * ONE_KILOBYTE)
+ msnprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "k", bytes/ONE_KILOBYTE);
+
+ else if(bytes < CURL_OFF_T_C(100) * ONE_MEGABYTE)
+ /* 'XX.XM' is good as long as we're less than 100 megs */
+ msnprintf(max5, 6, "%2" CURL_FORMAT_CURL_OFF_T ".%0"
+ CURL_FORMAT_CURL_OFF_T "M", bytes/ONE_MEGABYTE,
+ (bytes%ONE_MEGABYTE) / (ONE_MEGABYTE/CURL_OFF_T_C(10)) );
+
+#if (SIZEOF_CURL_OFF_T > 4)
+
+ else if(bytes < CURL_OFF_T_C(10000) * ONE_MEGABYTE)
+ /* 'XXXXM' is good until we're at 10000MB or above */
+ msnprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "M", bytes/ONE_MEGABYTE);
+
+ else if(bytes < CURL_OFF_T_C(100) * ONE_GIGABYTE)
+ /* 10000 MB - 100 GB, we show it as XX.XG */
+ msnprintf(max5, 6, "%2" CURL_FORMAT_CURL_OFF_T ".%0"
+ CURL_FORMAT_CURL_OFF_T "G", bytes/ONE_GIGABYTE,
+ (bytes%ONE_GIGABYTE) / (ONE_GIGABYTE/CURL_OFF_T_C(10)) );
+
+ else if(bytes < CURL_OFF_T_C(10000) * ONE_GIGABYTE)
+ /* up to 10000GB, display without decimal: XXXXG */
+ msnprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "G", bytes/ONE_GIGABYTE);
+
+ else if(bytes < CURL_OFF_T_C(10000) * ONE_TERABYTE)
+ /* up to 10000TB, display without decimal: XXXXT */
+ msnprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "T", bytes/ONE_TERABYTE);
+
+ else
+ /* up to 10000PB, display without decimal: XXXXP */
+ msnprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "P", bytes/ONE_PETABYTE);
+
+ /* 16384 petabytes (16 exabytes) is the maximum a 64 bit unsigned number
+ can hold, but our data type is signed so 8192PB will be the maximum. */
+
+#else
+
+ else
+ msnprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "M", bytes/ONE_MEGABYTE);
+
+#endif
+
+ return max5;
+}
+
+int xferinfo_cb(void *clientp,
+ curl_off_t dltotal,
+ curl_off_t dlnow,
+ curl_off_t ultotal,
+ curl_off_t ulnow)
+{
+ struct per_transfer *per = clientp;
+ struct OperationConfig *config = per->config;
+ per->dltotal = dltotal;
+ per->dlnow = dlnow;
+ per->ultotal = ultotal;
+ per->ulnow = ulnow;
+
+ if(per->abort)
+ return 1;
+
+ if(config->readbusy) {
+ config->readbusy = FALSE;
+ curl_easy_pause(per->curl, CURLPAUSE_CONT);
+ }
+
+ return 0;
+}
+
+/* Provide a string that is 2 + 1 + 2 + 1 + 2 = 8 letters long (plus the zero
+ byte) */
+static void time2str(char *r, curl_off_t seconds)
+{
+ curl_off_t h;
+ if(seconds <= 0) {
+ strcpy(r, "--:--:--");
+ return;
+ }
+ h = seconds / CURL_OFF_T_C(3600);
+ if(h <= CURL_OFF_T_C(99)) {
+ curl_off_t m = (seconds - (h*CURL_OFF_T_C(3600))) / CURL_OFF_T_C(60);
+ curl_off_t s = (seconds - (h*CURL_OFF_T_C(3600))) - (m*CURL_OFF_T_C(60));
+ msnprintf(r, 9, "%2" CURL_FORMAT_CURL_OFF_T ":%02" CURL_FORMAT_CURL_OFF_T
+ ":%02" CURL_FORMAT_CURL_OFF_T, h, m, s);
+ }
+ else {
+ /* this equals to more than 99 hours, switch to a more suitable output
+ format to fit within the limits. */
+ curl_off_t d = seconds / CURL_OFF_T_C(86400);
+ h = (seconds - (d*CURL_OFF_T_C(86400))) / CURL_OFF_T_C(3600);
+ if(d <= CURL_OFF_T_C(999))
+ msnprintf(r, 9, "%3" CURL_FORMAT_CURL_OFF_T
+ "d %02" CURL_FORMAT_CURL_OFF_T "h", d, h);
+ else
+ msnprintf(r, 9, "%7" CURL_FORMAT_CURL_OFF_T "d", d);
+ }
+}
+
+static curl_off_t all_dltotal = 0;
+static curl_off_t all_ultotal = 0;
+static curl_off_t all_dlalready = 0;
+static curl_off_t all_ulalready = 0;
+
+curl_off_t all_xfers = 0; /* current total */
+
+struct speedcount {
+ curl_off_t dl;
+ curl_off_t ul;
+ struct timeval stamp;
+};
+#define SPEEDCNT 10
+static unsigned int speedindex;
+static bool indexwrapped;
+static struct speedcount speedstore[SPEEDCNT];
+
+/*
+ |DL% UL% Dled Uled Xfers Live Total Current Left Speed
+ | 6 -- 9.9G 0 2 2 0:00:40 0:00:02 0:00:37 4087M
+*/
+bool progress_meter(struct GlobalConfig *global,
+ struct timeval *start,
+ bool final)
+{
+ static struct timeval stamp;
+ static bool header = FALSE;
+ struct timeval now;
+ long diff;
+
+ if(global->noprogress)
+ return FALSE;
+
+ now = tvnow();
+ diff = tvdiff(now, stamp);
+
+ if(!header) {
+ header = TRUE;
+ fputs("DL% UL% Dled Uled Xfers Live "
+ "Total Current Left Speed\n",
+ global->errors);
+ }
+ if(final || (diff > 500)) {
+ char time_left[10];
+ char time_total[10];
+ char time_spent[10];
+ char buffer[3][6];
+ curl_off_t spent = tvdiff(now, *start)/1000;
+ char dlpercen[4]="--";
+ char ulpercen[4]="--";
+ struct per_transfer *per;
+ curl_off_t all_dlnow = 0;
+ curl_off_t all_ulnow = 0;
+ bool dlknown = TRUE;
+ bool ulknown = TRUE;
+ curl_off_t all_running = 0; /* in progress */
+ curl_off_t speed = 0;
+ unsigned int i;
+ stamp = now;
+
+ /* first add the amounts of the already completed transfers */
+ all_dlnow += all_dlalready;
+ all_ulnow += all_ulalready;
+
+ for(per = transfers; per; per = per->next) {
+ all_dlnow += per->dlnow;
+ all_ulnow += per->ulnow;
+ if(!per->dltotal)
+ dlknown = FALSE;
+ else if(!per->dltotal_added) {
+ /* only add this amount once */
+ all_dltotal += per->dltotal;
+ per->dltotal_added = TRUE;
+ }
+ if(!per->ultotal)
+ ulknown = FALSE;
+ else if(!per->ultotal_added) {
+ /* only add this amount once */
+ all_ultotal += per->ultotal;
+ per->ultotal_added = TRUE;
+ }
+ if(per->added)
+ all_running++;
+ }
+ if(dlknown && all_dltotal)
+ /* TODO: handle integer overflow */
+ msnprintf(dlpercen, sizeof(dlpercen), "%3" CURL_FORMAT_CURL_OFF_T,
+ all_dlnow * 100 / all_dltotal);
+ if(ulknown && all_ultotal)
+ /* TODO: handle integer overflow */
+ msnprintf(ulpercen, sizeof(ulpercen), "%3" CURL_FORMAT_CURL_OFF_T,
+ all_ulnow * 100 / all_ultotal);
+
+ /* get the transfer speed, the higher of the two */
+
+ i = speedindex;
+ speedstore[i].dl = all_dlnow;
+ speedstore[i].ul = all_ulnow;
+ speedstore[i].stamp = now;
+ if(++speedindex >= SPEEDCNT) {
+ indexwrapped = TRUE;
+ speedindex = 0;
+ }
+
+ {
+ long deltams;
+ curl_off_t dl;
+ curl_off_t ul;
+ curl_off_t dls;
+ curl_off_t uls;
+ if(indexwrapped) {
+ /* 'speedindex' is the oldest stored data */
+ deltams = tvdiff(now, speedstore[speedindex].stamp);
+ dl = all_dlnow - speedstore[speedindex].dl;
+ ul = all_ulnow - speedstore[speedindex].ul;
+ }
+ else {
+ /* since the beginning */
+ deltams = tvdiff(now, *start);
+ dl = all_dlnow;
+ ul = all_ulnow;
+ }
+ if(!deltams) /* no division by zero please */
+ deltams++;
+ dls = (curl_off_t)((double)dl / ((double)deltams/1000.0));
+ uls = (curl_off_t)((double)ul / ((double)deltams/1000.0));
+ speed = dls > uls ? dls : uls;
+ }
+
+
+ if(dlknown && speed) {
+ curl_off_t est = all_dltotal / speed;
+ curl_off_t left = (all_dltotal - all_dlnow) / speed;
+ time2str(time_left, left);
+ time2str(time_total, est);
+ }
+ else {
+ time2str(time_left, 0);
+ time2str(time_total, 0);
+ }
+ time2str(time_spent, spent);
+
+ fprintf(global->errors,
+ "\r"
+ "%-3s " /* percent downloaded */
+ "%-3s " /* percent uploaded */
+ "%s " /* Dled */
+ "%s " /* Uled */
+ "%5" CURL_FORMAT_CURL_OFF_T " " /* Xfers */
+ "%5" CURL_FORMAT_CURL_OFF_T " " /* Live */
+ " %s " /* Total time */
+ "%s " /* Current time */
+ "%s " /* Time left */
+ "%s " /* Speed */
+ "%5s" /* final newline */,
+
+ dlpercen, /* 3 letters */
+ ulpercen, /* 3 letters */
+ max5data(all_dlnow, buffer[0]),
+ max5data(all_ulnow, buffer[1]),
+ all_xfers,
+ all_running,
+ time_total,
+ time_spent,
+ time_left,
+ max5data(speed, buffer[2]), /* speed */
+ final ? "\n" :"");
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void progress_finalize(struct per_transfer *per)
+{
+ /* get the numbers before this transfer goes away */
+ all_dlalready += per->dlnow;
+ all_ulalready += per->ulnow;
+ if(!per->dltotal_added) {
+ all_dltotal += per->dltotal;
+ per->dltotal_added = TRUE;
+ }
+ if(!per->ultotal_added) {
+ all_ultotal += per->ultotal;
+ per->ultotal_added = TRUE;
+ }
+}
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_progress.h b/ap/lib/libcurl/curl-7.86.0/src/tool_progress.h
new file mode 100755
index 0000000..5f68474
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_progress.h
@@ -0,0 +1,41 @@
+#ifndef HEADER_CURL_TOOL_PROGRESS_H
+#define HEADER_CURL_TOOL_PROGRESS_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+int xferinfo_cb(void *clientp,
+ curl_off_t dltotal,
+ curl_off_t dlnow,
+ curl_off_t ultotal,
+ curl_off_t ulnow);
+
+bool progress_meter(struct GlobalConfig *global,
+ struct timeval *start,
+ bool final);
+void progress_finalize(struct per_transfer *per);
+
+extern curl_off_t all_xfers; /* total number */
+
+#endif /* HEADER_CURL_TOOL_PROGRESS_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_sdecls.h b/ap/lib/libcurl/curl-7.86.0/src/tool_sdecls.h
new file mode 100755
index 0000000..70e44d4
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_sdecls.h
@@ -0,0 +1,144 @@
+#ifndef HEADER_CURL_TOOL_SDECLS_H
+#define HEADER_CURL_TOOL_SDECLS_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+/*
+ * OutStruct variables keep track of information relative to curl's
+ * output writing, which may take place to a standard stream or a file.
+ *
+ * 'filename' member is either a pointer to a file name string or NULL
+ * when dealing with a standard stream.
+ *
+ * 'alloc_filename' member is TRUE when string pointed by 'filename' has been
+ * dynamically allocated and 'belongs' to this OutStruct, otherwise FALSE.
+ *
+ * 'is_cd_filename' member is TRUE when string pointed by 'filename' has been
+ * set using a server-specified Content-Disposition filename, otherwise FALSE.
+ *
+ * 's_isreg' member is TRUE when output goes to a regular file, this also
+ * implies that output is 'seekable' and 'appendable' and also that member
+ * 'filename' points to file name's string. For any standard stream member
+ * 's_isreg' will be FALSE.
+ *
+ * 'fopened' member is TRUE when output goes to a regular file and it
+ * has been fopen'ed, requiring it to be closed later on. In any other
+ * case this is FALSE.
+ *
+ * 'stream' member is a pointer to a stream controlling object as returned
+ * from a 'fopen' call or a standard stream.
+ *
+ * 'config' member is a pointer to associated 'OperationConfig' struct.
+ *
+ * 'bytes' member represents amount written so far.
+ *
+ * 'init' member holds original file size or offset at which truncation is
+ * taking place. Always zero unless appending to a non-empty regular file.
+ *
+ */
+
+struct OutStruct {
+ char *filename;
+ bool alloc_filename;
+ bool is_cd_filename;
+ bool s_isreg;
+ bool fopened;
+ FILE *stream;
+ curl_off_t bytes;
+ curl_off_t init;
+};
+
+
+/*
+ * InStruct variables keep track of information relative to curl's
+ * input reading, which may take place from stdin or from some file.
+ *
+ * 'fd' member is either 'stdin' file descriptor number STDIN_FILENO
+ * or a file descriptor as returned from an 'open' call for some file.
+ *
+ * 'config' member is a pointer to associated 'OperationConfig' struct.
+ */
+
+struct InStruct {
+ int fd;
+ struct OperationConfig *config;
+};
+
+
+/*
+ * A linked list of these 'getout' nodes contain URL's to fetch,
+ * as well as information relative to where URL contents should
+ * be stored or which file should be uploaded.
+ */
+
+struct getout {
+ struct getout *next; /* next one */
+ char *url; /* the URL we deal with */
+ char *outfile; /* where to store the output */
+ char *infile; /* file to upload, if GETOUT_UPLOAD is set */
+ int flags; /* options - composed of GETOUT_* bits */
+ int num; /* which URL number in an invocation */
+};
+
+#define GETOUT_OUTFILE (1<<0) /* set when outfile is deemed done */
+#define GETOUT_URL (1<<1) /* set when URL is deemed done */
+#define GETOUT_USEREMOTE (1<<2) /* use remote file name locally */
+#define GETOUT_UPLOAD (1<<3) /* if set, -T has been used */
+#define GETOUT_NOUPLOAD (1<<4) /* if set, -T "" has been used */
+
+/*
+ * 'trace' enumeration represents curl's output look'n feel possibilities.
+ */
+
+typedef enum {
+ TRACE_NONE, /* no trace/verbose output at all */
+ TRACE_BIN, /* tcpdump inspired look */
+ TRACE_ASCII, /* like *BIN but without the hex output */
+ TRACE_PLAIN /* -v/--verbose type */
+} trace;
+
+
+/*
+ * 'HttpReq' enumeration represents HTTP request types.
+ */
+
+typedef enum {
+ HTTPREQ_UNSPEC, /* first in list */
+ HTTPREQ_GET,
+ HTTPREQ_HEAD,
+ HTTPREQ_MIMEPOST,
+ HTTPREQ_SIMPLEPOST,
+ HTTPREQ_PUT
+} HttpReq;
+
+
+/*
+ * Complete struct declarations which have OperationConfig struct members,
+ * just in case this header is directly included in some source file.
+ */
+
+#include "tool_cfgable.h"
+
+#endif /* HEADER_CURL_TOOL_SDECLS_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_setopt.c b/ap/lib/libcurl/curl-7.86.0/src/tool_setopt.c
new file mode 100755
index 0000000..3db2fe3
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_setopt.c
@@ -0,0 +1,716 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#ifndef CURL_DISABLE_LIBCURL_OPTION
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_easysrc.h"
+#include "tool_setopt.h"
+#include "tool_msgs.h"
+#include "dynbuf.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+/* Lookup tables for converting setopt values back to symbols */
+/* For enums, values may be in any order. */
+/* For bit masks, put combinations first, then single bits, */
+/* and finally any "NONE" value. */
+
+#define NV(e) {#e, e}
+#define NV1(e, v) {#e, (v)}
+#define NVEND {NULL, 0} /* sentinel to mark end of list */
+
+const struct NameValue setopt_nv_CURLPROXY[] = {
+ NV(CURLPROXY_HTTP),
+ NV(CURLPROXY_HTTP_1_0),
+ NV(CURLPROXY_HTTPS),
+ NV(CURLPROXY_SOCKS4),
+ NV(CURLPROXY_SOCKS5),
+ NV(CURLPROXY_SOCKS4A),
+ NV(CURLPROXY_SOCKS5_HOSTNAME),
+ NVEND,
+};
+
+const struct NameValue setopt_nv_CURL_SOCKS_PROXY[] = {
+ NV(CURLPROXY_SOCKS4),
+ NV(CURLPROXY_SOCKS5),
+ NV(CURLPROXY_SOCKS4A),
+ NV(CURLPROXY_SOCKS5_HOSTNAME),
+ NVEND,
+};
+
+const struct NameValueUnsigned setopt_nv_CURLHSTS[] = {
+ NV(CURLHSTS_ENABLE),
+ NVEND,
+};
+
+const struct NameValueUnsigned setopt_nv_CURLAUTH[] = {
+ NV(CURLAUTH_ANY), /* combination */
+ NV(CURLAUTH_ANYSAFE), /* combination */
+ NV(CURLAUTH_BASIC),
+ NV(CURLAUTH_DIGEST),
+ NV(CURLAUTH_GSSNEGOTIATE),
+ NV(CURLAUTH_NTLM),
+ NV(CURLAUTH_DIGEST_IE),
+ NV(CURLAUTH_NTLM_WB),
+ NV(CURLAUTH_ONLY),
+ NV(CURLAUTH_NONE),
+ NVEND,
+};
+
+const struct NameValue setopt_nv_CURL_HTTP_VERSION[] = {
+ NV(CURL_HTTP_VERSION_NONE),
+ NV(CURL_HTTP_VERSION_1_0),
+ NV(CURL_HTTP_VERSION_1_1),
+ NV(CURL_HTTP_VERSION_2_0),
+ NV(CURL_HTTP_VERSION_2TLS),
+ NV(CURL_HTTP_VERSION_3),
+ NVEND,
+};
+
+const struct NameValue setopt_nv_CURL_SSLVERSION[] = {
+ NV(CURL_SSLVERSION_DEFAULT),
+ NV(CURL_SSLVERSION_TLSv1),
+ NV(CURL_SSLVERSION_SSLv2),
+ NV(CURL_SSLVERSION_SSLv3),
+ NV(CURL_SSLVERSION_TLSv1_0),
+ NV(CURL_SSLVERSION_TLSv1_1),
+ NV(CURL_SSLVERSION_TLSv1_2),
+ NV(CURL_SSLVERSION_TLSv1_3),
+ NVEND,
+};
+
+const struct NameValue setopt_nv_CURL_TIMECOND[] = {
+ NV(CURL_TIMECOND_IFMODSINCE),
+ NV(CURL_TIMECOND_IFUNMODSINCE),
+ NV(CURL_TIMECOND_LASTMOD),
+ NV(CURL_TIMECOND_NONE),
+ NVEND,
+};
+
+const struct NameValue setopt_nv_CURLFTPSSL_CCC[] = {
+ NV(CURLFTPSSL_CCC_NONE),
+ NV(CURLFTPSSL_CCC_PASSIVE),
+ NV(CURLFTPSSL_CCC_ACTIVE),
+ NVEND,
+};
+
+const struct NameValue setopt_nv_CURLUSESSL[] = {
+ NV(CURLUSESSL_NONE),
+ NV(CURLUSESSL_TRY),
+ NV(CURLUSESSL_CONTROL),
+ NV(CURLUSESSL_ALL),
+ NVEND,
+};
+
+const struct NameValueUnsigned setopt_nv_CURLSSLOPT[] = {
+ NV(CURLSSLOPT_ALLOW_BEAST),
+ NV(CURLSSLOPT_NO_REVOKE),
+ NV(CURLSSLOPT_NO_PARTIALCHAIN),
+ NV(CURLSSLOPT_REVOKE_BEST_EFFORT),
+ NV(CURLSSLOPT_NATIVE_CA),
+ NV(CURLSSLOPT_AUTO_CLIENT_CERT),
+ NVEND,
+};
+
+const struct NameValue setopt_nv_CURL_NETRC[] = {
+ NV(CURL_NETRC_IGNORED),
+ NV(CURL_NETRC_OPTIONAL),
+ NV(CURL_NETRC_REQUIRED),
+ NVEND,
+};
+
+/* These options have non-zero default values. */
+static const struct NameValue setopt_nv_CURLNONZERODEFAULTS[] = {
+ NV1(CURLOPT_SSL_VERIFYPEER, 1),
+ NV1(CURLOPT_SSL_VERIFYHOST, 1),
+ NV1(CURLOPT_SSL_ENABLE_NPN, 1),
+ NV1(CURLOPT_SSL_ENABLE_ALPN, 1),
+ NV1(CURLOPT_TCP_NODELAY, 1),
+ NV1(CURLOPT_PROXY_SSL_VERIFYPEER, 1),
+ NV1(CURLOPT_PROXY_SSL_VERIFYHOST, 1),
+ NV1(CURLOPT_SOCKS5_AUTH, 1),
+ NVEND
+};
+
+/* Format and add code; jump to nomem on malloc error */
+#define ADD(args) do { \
+ ret = easysrc_add args; \
+ if(ret) \
+ goto nomem; \
+} while(0)
+#define ADDF(args) do { \
+ ret = easysrc_addf args; \
+ if(ret) \
+ goto nomem; \
+} while(0)
+#define NULL_CHECK(p) do { \
+ if(!p) { \
+ ret = CURLE_OUT_OF_MEMORY; \
+ goto nomem; \
+ } \
+} while(0)
+
+#define DECL0(s) ADD((&easysrc_decl, s))
+#define DECL1(f,a) ADDF((&easysrc_decl, f,a))
+
+#define DATA0(s) ADD((&easysrc_data, s))
+#define DATA1(f,a) ADDF((&easysrc_data, f,a))
+#define DATA2(f,a,b) ADDF((&easysrc_data, f,a,b))
+#define DATA3(f,a,b,c) ADDF((&easysrc_data, f,a,b,c))
+
+#define CODE0(s) ADD((&easysrc_code, s))
+#define CODE1(f,a) ADDF((&easysrc_code, f,a))
+#define CODE2(f,a,b) ADDF((&easysrc_code, f,a,b))
+#define CODE3(f,a,b,c) ADDF((&easysrc_code, f,a,b,c))
+
+#define CLEAN0(s) ADD((&easysrc_clean, s))
+#define CLEAN1(f,a) ADDF((&easysrc_clean, f,a))
+
+#define REM0(s) ADD((&easysrc_toohard, s))
+#define REM1(f,a) ADDF((&easysrc_toohard, f,a))
+#define REM3(f,a,b,c) ADDF((&easysrc_toohard, f,a,b,c))
+
+/* Escape string to C string syntax. Return NULL if out of memory.
+ * Is this correct for those wacky EBCDIC guys? */
+
+#define MAX_STRING_LENGTH_OUTPUT 2000
+#define ZERO_TERMINATED -1
+
+static char *c_escape(const char *str, curl_off_t len)
+{
+ const char *s;
+ unsigned int cutoff = 0;
+ CURLcode result;
+ struct curlx_dynbuf escaped;
+
+ curlx_dyn_init(&escaped, 4 * MAX_STRING_LENGTH_OUTPUT + 3);
+
+ if(len == ZERO_TERMINATED)
+ len = strlen(str);
+
+ if(len > MAX_STRING_LENGTH_OUTPUT) {
+ /* cap ridiculously long strings */
+ len = MAX_STRING_LENGTH_OUTPUT;
+ cutoff = 3;
+ }
+
+ result = curlx_dyn_addn(&escaped, STRCONST(""));
+ for(s = str; !result && len; s++, len--) {
+ /* escape question marks as well, to prevent generating accidental
+ trigraphs */
+ static const char from[] = "\t\r\n?\"\\";
+ static const char to[] = "\\t\\r\\n\\?\\\"\\\\";
+ const char *p = strchr(from, *s);
+
+ if(!p && ISPRINT(*s))
+ continue;
+
+ result = curlx_dyn_addn(&escaped, str, s - str);
+ str = s + 1;
+
+ if(!result) {
+ if(p && *p)
+ result = curlx_dyn_addn(&escaped, to + 2 * (p - from), 2);
+ else {
+ const char *format = "\\x%02x";
+
+ if(len > 1 && ISXDIGIT(s[1])) {
+ /* Octal escape to avoid >2 digit hex. */
+ format = "\\%03o";
+ }
+
+ result = curlx_dyn_addf(&escaped, format,
+ (unsigned int) *(unsigned char *) s);
+ }
+ }
+ }
+
+ if(!result)
+ result = curlx_dyn_addn(&escaped, str, s - str);
+
+ if(!result)
+ (void) !curlx_dyn_addn(&escaped, "...", cutoff);
+
+ return curlx_dyn_ptr(&escaped);
+}
+
+/* setopt wrapper for enum types */
+CURLcode tool_setopt_enum(CURL *curl, struct GlobalConfig *config,
+ const char *name, CURLoption tag,
+ const struct NameValue *nvlist, long lval)
+{
+ CURLcode ret = CURLE_OK;
+ bool skip = FALSE;
+
+ ret = curl_easy_setopt(curl, tag, lval);
+ if(!lval)
+ skip = TRUE;
+
+ if(config->libcurl && !skip && !ret) {
+ /* we only use this for real if --libcurl was used */
+ const struct NameValue *nv = NULL;
+ for(nv = nvlist; nv->name; nv++) {
+ if(nv->value == lval)
+ break; /* found it */
+ }
+ if(!nv->name) {
+ /* If no definition was found, output an explicit value.
+ * This could happen if new values are defined and used
+ * but the NameValue list is not updated. */
+ CODE2("curl_easy_setopt(hnd, %s, %ldL);", name, lval);
+ }
+ else {
+ CODE2("curl_easy_setopt(hnd, %s, (long)%s);", name, nv->name);
+ }
+ }
+
+#ifdef DEBUGBUILD
+ if(ret)
+ warnf(config, "option %s returned error (%d)\n", name, (int)ret);
+#endif
+ nomem:
+ return ret;
+}
+
+/* setopt wrapper for flags */
+CURLcode tool_setopt_flags(CURL *curl, struct GlobalConfig *config,
+ const char *name, CURLoption tag,
+ const struct NameValue *nvlist, long lval)
+{
+ CURLcode ret = CURLE_OK;
+ bool skip = FALSE;
+
+ ret = curl_easy_setopt(curl, tag, lval);
+ if(!lval)
+ skip = TRUE;
+
+ if(config->libcurl && !skip && !ret) {
+ /* we only use this for real if --libcurl was used */
+ char preamble[80]; /* should accommodate any symbol name */
+ long rest = lval; /* bits not handled yet */
+ const struct NameValue *nv = NULL;
+ msnprintf(preamble, sizeof(preamble),
+ "curl_easy_setopt(hnd, %s, ", name);
+ for(nv = nvlist; nv->name; nv++) {
+ if((nv->value & ~ rest) == 0) {
+ /* all value flags contained in rest */
+ rest &= ~ nv->value; /* remove bits handled here */
+ CODE3("%s(long)%s%s",
+ preamble, nv->name, rest ? " |" : ");");
+ if(!rest)
+ break; /* handled them all */
+ /* replace with all spaces for continuation line */
+ msnprintf(preamble, sizeof(preamble), "%*s", strlen(preamble), "");
+ }
+ }
+ /* If any bits have no definition, output an explicit value.
+ * This could happen if new bits are defined and used
+ * but the NameValue list is not updated. */
+ if(rest)
+ CODE2("%s%ldL);", preamble, rest);
+ }
+
+ nomem:
+ return ret;
+}
+
+/* setopt wrapper for bitmasks */
+CURLcode tool_setopt_bitmask(CURL *curl, struct GlobalConfig *config,
+ const char *name, CURLoption tag,
+ const struct NameValueUnsigned *nvlist,
+ long lval)
+{
+ CURLcode ret = CURLE_OK;
+ bool skip = FALSE;
+
+ ret = curl_easy_setopt(curl, tag, lval);
+ if(!lval)
+ skip = TRUE;
+
+ if(config->libcurl && !skip && !ret) {
+ /* we only use this for real if --libcurl was used */
+ char preamble[80];
+ unsigned long rest = (unsigned long)lval;
+ const struct NameValueUnsigned *nv = NULL;
+ msnprintf(preamble, sizeof(preamble),
+ "curl_easy_setopt(hnd, %s, ", name);
+ for(nv = nvlist; nv->name; nv++) {
+ if((nv->value & ~ rest) == 0) {
+ /* all value flags contained in rest */
+ rest &= ~ nv->value; /* remove bits handled here */
+ CODE3("%s(long)%s%s",
+ preamble, nv->name, rest ? " |" : ");");
+ if(!rest)
+ break; /* handled them all */
+ /* replace with all spaces for continuation line */
+ msnprintf(preamble, sizeof(preamble), "%*s", strlen(preamble), "");
+ }
+ }
+ /* If any bits have no definition, output an explicit value.
+ * This could happen if new bits are defined and used
+ * but the NameValue list is not updated. */
+ if(rest)
+ CODE2("%s%luUL);", preamble, rest);
+ }
+
+ nomem:
+ return ret;
+}
+
+/* Generate code for a struct curl_slist. */
+static CURLcode libcurl_generate_slist(struct curl_slist *slist, int *slistno)
+{
+ CURLcode ret = CURLE_OK;
+ char *escaped = NULL;
+
+ /* May need several slist variables, so invent name */
+ *slistno = ++easysrc_slist_count;
+
+ DECL1("struct curl_slist *slist%d;", *slistno);
+ DATA1("slist%d = NULL;", *slistno);
+ CLEAN1("curl_slist_free_all(slist%d);", *slistno);
+ CLEAN1("slist%d = NULL;", *slistno);
+ for(; slist; slist = slist->next) {
+ Curl_safefree(escaped);
+ escaped = c_escape(slist->data, ZERO_TERMINATED);
+ if(!escaped)
+ return CURLE_OUT_OF_MEMORY;
+ DATA3("slist%d = curl_slist_append(slist%d, \"%s\");",
+ *slistno, *slistno, escaped);
+ }
+
+ nomem:
+ Curl_safefree(escaped);
+ return ret;
+}
+
+static CURLcode libcurl_generate_mime(CURL *curl,
+ struct GlobalConfig *config,
+ struct tool_mime *toolmime,
+ int *mimeno); /* Forward. */
+
+/* Wrapper to generate source code for a mime part. */
+static CURLcode libcurl_generate_mime_part(CURL *curl,
+ struct GlobalConfig *config,
+ struct tool_mime *part,
+ int mimeno)
+{
+ CURLcode ret = CURLE_OK;
+ int submimeno = 0;
+ char *escaped = NULL;
+ const char *data = NULL;
+ const char *filename = part->filename;
+
+ /* Parts are linked in reverse order. */
+ if(part->prev) {
+ ret = libcurl_generate_mime_part(curl, config, part->prev, mimeno);
+ if(ret)
+ return ret;
+ }
+
+ /* Create the part. */
+ CODE2("part%d = curl_mime_addpart(mime%d);", mimeno, mimeno);
+
+ switch(part->kind) {
+ case TOOLMIME_PARTS:
+ ret = libcurl_generate_mime(curl, config, part, &submimeno);
+ if(!ret) {
+ CODE2("curl_mime_subparts(part%d, mime%d);", mimeno, submimeno);
+ CODE1("mime%d = NULL;", submimeno); /* Avoid freeing in CLEAN. */
+ }
+ break;
+
+ case TOOLMIME_DATA:
+ data = part->data;
+ if(!ret) {
+ Curl_safefree(escaped);
+ escaped = c_escape(data, ZERO_TERMINATED);
+ NULL_CHECK(escaped);
+ CODE2("curl_mime_data(part%d, \"%s\", CURL_ZERO_TERMINATED);",
+ mimeno, escaped);
+ }
+ break;
+
+ case TOOLMIME_FILE:
+ case TOOLMIME_FILEDATA:
+ escaped = c_escape(part->data, ZERO_TERMINATED);
+ NULL_CHECK(escaped);
+ CODE2("curl_mime_filedata(part%d, \"%s\");", mimeno, escaped);
+ if(part->kind == TOOLMIME_FILEDATA && !filename) {
+ CODE1("curl_mime_filename(part%d, NULL);", mimeno);
+ }
+ break;
+
+ case TOOLMIME_STDIN:
+ if(!filename)
+ filename = "-";
+ /* FALLTHROUGH */
+ case TOOLMIME_STDINDATA:
+ /* Can only be reading stdin in the current context. */
+ CODE1("curl_mime_data_cb(part%d, -1, (curl_read_callback) fread, \\",
+ mimeno);
+ CODE0(" (curl_seek_callback) fseek, NULL, stdin);");
+ break;
+ default:
+ /* Other cases not possible in this context. */
+ break;
+ }
+
+ if(!ret && part->encoder) {
+ Curl_safefree(escaped);
+ escaped = c_escape(part->encoder, ZERO_TERMINATED);
+ NULL_CHECK(escaped);
+ CODE2("curl_mime_encoder(part%d, \"%s\");", mimeno, escaped);
+ }
+
+ if(!ret && filename) {
+ Curl_safefree(escaped);
+ escaped = c_escape(filename, ZERO_TERMINATED);
+ NULL_CHECK(escaped);
+ CODE2("curl_mime_filename(part%d, \"%s\");", mimeno, escaped);
+ }
+
+ if(!ret && part->name) {
+ Curl_safefree(escaped);
+ escaped = c_escape(part->name, ZERO_TERMINATED);
+ NULL_CHECK(escaped);
+ CODE2("curl_mime_name(part%d, \"%s\");", mimeno, escaped);
+ }
+
+ if(!ret && part->type) {
+ Curl_safefree(escaped);
+ escaped = c_escape(part->type, ZERO_TERMINATED);
+ NULL_CHECK(escaped);
+ CODE2("curl_mime_type(part%d, \"%s\");", mimeno, escaped);
+ }
+
+ if(!ret && part->headers) {
+ int slistno;
+
+ ret = libcurl_generate_slist(part->headers, &slistno);
+ if(!ret) {
+ CODE2("curl_mime_headers(part%d, slist%d, 1);", mimeno, slistno);
+ CODE1("slist%d = NULL;", slistno); /* Prevent CLEANing. */
+ }
+ }
+
+nomem:
+ Curl_safefree(escaped);
+ return ret;
+}
+
+/* Wrapper to generate source code for a mime structure. */
+static CURLcode libcurl_generate_mime(CURL *curl,
+ struct GlobalConfig *config,
+ struct tool_mime *toolmime,
+ int *mimeno)
+{
+ CURLcode ret = CURLE_OK;
+
+ /* May need several mime variables, so invent name. */
+ *mimeno = ++easysrc_mime_count;
+ DECL1("curl_mime *mime%d;", *mimeno);
+ DATA1("mime%d = NULL;", *mimeno);
+ CODE1("mime%d = curl_mime_init(hnd);", *mimeno);
+ CLEAN1("curl_mime_free(mime%d);", *mimeno);
+ CLEAN1("mime%d = NULL;", *mimeno);
+
+ if(toolmime->subparts) {
+ DECL1("curl_mimepart *part%d;", *mimeno);
+ ret = libcurl_generate_mime_part(curl, config,
+ toolmime->subparts, *mimeno);
+ }
+
+nomem:
+ return ret;
+}
+
+/* setopt wrapper for CURLOPT_MIMEPOST */
+CURLcode tool_setopt_mimepost(CURL *curl, struct GlobalConfig *config,
+ const char *name, CURLoption tag,
+ curl_mime *mimepost)
+{
+ CURLcode ret = curl_easy_setopt(curl, tag, mimepost);
+ int mimeno = 0;
+
+ if(!ret && config->libcurl) {
+ ret = libcurl_generate_mime(curl, config,
+ config->current->mimeroot, &mimeno);
+
+ if(!ret)
+ CODE2("curl_easy_setopt(hnd, %s, mime%d);", name, mimeno);
+ }
+
+nomem:
+ return ret;
+}
+
+/* setopt wrapper for curl_slist options */
+CURLcode tool_setopt_slist(CURL *curl, struct GlobalConfig *config,
+ const char *name, CURLoption tag,
+ struct curl_slist *list)
+{
+ CURLcode ret = CURLE_OK;
+
+ ret = curl_easy_setopt(curl, tag, list);
+
+ if(config->libcurl && list && !ret) {
+ int i;
+
+ ret = libcurl_generate_slist(list, &i);
+ if(!ret)
+ CODE2("curl_easy_setopt(hnd, %s, slist%d);", name, i);
+ }
+
+ nomem:
+ return ret;
+}
+
+/* generic setopt wrapper for all other options.
+ * Some type information is encoded in the tag value. */
+CURLcode tool_setopt(CURL *curl, bool str, struct GlobalConfig *global,
+ struct OperationConfig *config,
+ const char *name, CURLoption tag, ...)
+{
+ va_list arg;
+ char buf[256];
+ const char *value = NULL;
+ bool remark = FALSE;
+ bool skip = FALSE;
+ bool escape = FALSE;
+ char *escaped = NULL;
+ CURLcode ret = CURLE_OK;
+
+ va_start(arg, tag);
+
+ if(tag < CURLOPTTYPE_OBJECTPOINT) {
+ /* Value is expected to be a long */
+ long lval = va_arg(arg, long);
+ long defval = 0L;
+ const struct NameValue *nv = NULL;
+ for(nv = setopt_nv_CURLNONZERODEFAULTS; nv->name; nv++) {
+ if(!strcmp(name, nv->name)) {
+ defval = nv->value;
+ break; /* found it */
+ }
+ }
+
+ msnprintf(buf, sizeof(buf), "%ldL", lval);
+ value = buf;
+ ret = curl_easy_setopt(curl, tag, lval);
+ if(lval == defval)
+ skip = TRUE;
+ }
+ else if(tag < CURLOPTTYPE_OFF_T) {
+ /* Value is some sort of object pointer */
+ void *pval = va_arg(arg, void *);
+
+ /* function pointers are never printable */
+ if(tag >= CURLOPTTYPE_FUNCTIONPOINT) {
+ if(pval) {
+ value = "function pointer";
+ remark = TRUE;
+ }
+ else
+ skip = TRUE;
+ }
+
+ else if(pval && str) {
+ value = (char *)pval;
+ escape = TRUE;
+ }
+ else if(pval) {
+ value = "object pointer";
+ remark = TRUE;
+ }
+ else
+ skip = TRUE;
+
+ ret = curl_easy_setopt(curl, tag, pval);
+
+ }
+ else if(tag < CURLOPTTYPE_BLOB) {
+ /* Value is expected to be curl_off_t */
+ curl_off_t oval = va_arg(arg, curl_off_t);
+ msnprintf(buf, sizeof(buf),
+ "(curl_off_t)%" CURL_FORMAT_CURL_OFF_T, oval);
+ value = buf;
+ ret = curl_easy_setopt(curl, tag, oval);
+
+ if(!oval)
+ skip = TRUE;
+ }
+ else {
+ /* Value is a blob */
+ void *pblob = va_arg(arg, void *);
+
+ /* blobs are never printable */
+ if(pblob) {
+ value = "blob pointer";
+ remark = TRUE;
+ }
+ else
+ skip = TRUE;
+
+ ret = curl_easy_setopt(curl, tag, pblob);
+ }
+
+ va_end(arg);
+
+ if(global->libcurl && !skip && !ret) {
+ /* we only use this for real if --libcurl was used */
+
+ if(remark)
+ REM3("%s was set to a%s %s", name, (*value == 'o' ? "n" : ""), value);
+ else {
+ if(escape) {
+ curl_off_t len = ZERO_TERMINATED;
+ if(tag == CURLOPT_POSTFIELDS)
+ len = config->postfieldsize;
+ escaped = c_escape(value, len);
+ NULL_CHECK(escaped);
+ CODE2("curl_easy_setopt(hnd, %s, \"%s\");", name, escaped);
+ }
+ else
+ CODE2("curl_easy_setopt(hnd, %s, %s);", name, value);
+ }
+ }
+
+ nomem:
+ Curl_safefree(escaped);
+ return ret;
+}
+
+#else /* CURL_DISABLE_LIBCURL_OPTION */
+
+#include "tool_cfgable.h"
+#include "tool_setopt.h"
+
+#endif /* CURL_DISABLE_LIBCURL_OPTION */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_setopt.h b/ap/lib/libcurl/curl-7.86.0/src/tool_setopt.h
new file mode 100755
index 0000000..bc5afe9
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_setopt.h
@@ -0,0 +1,156 @@
+#ifndef HEADER_CURL_TOOL_SETOPT_H
+#define HEADER_CURL_TOOL_SETOPT_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#include "tool_formparse.h"
+
+/*
+ * Macros used in operate()
+ */
+
+#define SETOPT_CHECK(v,opt) do { \
+ result = (v); \
+ } while(0)
+
+#ifndef CURL_DISABLE_LIBCURL_OPTION
+
+/* Associate symbolic names with option values */
+struct NameValue {
+ const char *name;
+ long value;
+};
+
+struct NameValueUnsigned {
+ const char *name;
+ unsigned long value;
+};
+
+extern const struct NameValue setopt_nv_CURLPROXY[];
+extern const struct NameValue setopt_nv_CURL_SOCKS_PROXY[];
+extern const struct NameValue setopt_nv_CURL_HTTP_VERSION[];
+extern const struct NameValue setopt_nv_CURL_SSLVERSION[];
+extern const struct NameValue setopt_nv_CURL_TIMECOND[];
+extern const struct NameValue setopt_nv_CURLFTPSSL_CCC[];
+extern const struct NameValue setopt_nv_CURLUSESSL[];
+extern const struct NameValueUnsigned setopt_nv_CURLSSLOPT[];
+extern const struct NameValue setopt_nv_CURL_NETRC[];
+extern const struct NameValueUnsigned setopt_nv_CURLAUTH[];
+extern const struct NameValueUnsigned setopt_nv_CURLHSTS[];
+
+/* Map options to NameValue sets */
+#define setopt_nv_CURLOPT_HSTS_CTRL setopt_nv_CURLHSTS
+#define setopt_nv_CURLOPT_HTTP_VERSION setopt_nv_CURL_HTTP_VERSION
+#define setopt_nv_CURLOPT_HTTPAUTH setopt_nv_CURLAUTH
+#define setopt_nv_CURLOPT_SSLVERSION setopt_nv_CURL_SSLVERSION
+#define setopt_nv_CURLOPT_PROXY_SSLVERSION setopt_nv_CURL_SSLVERSION
+#define setopt_nv_CURLOPT_TIMECONDITION setopt_nv_CURL_TIMECOND
+#define setopt_nv_CURLOPT_FTP_SSL_CCC setopt_nv_CURLFTPSSL_CCC
+#define setopt_nv_CURLOPT_USE_SSL setopt_nv_CURLUSESSL
+#define setopt_nv_CURLOPT_SSL_OPTIONS setopt_nv_CURLSSLOPT
+#define setopt_nv_CURLOPT_PROXY_SSL_OPTIONS setopt_nv_CURLSSLOPT
+#define setopt_nv_CURLOPT_NETRC setopt_nv_CURL_NETRC
+#define setopt_nv_CURLOPT_PROXYTYPE setopt_nv_CURLPROXY
+#define setopt_nv_CURLOPT_PROXYAUTH setopt_nv_CURLAUTH
+#define setopt_nv_CURLOPT_SOCKS5_AUTH setopt_nv_CURLAUTH
+
+/* Intercept setopt calls for --libcurl */
+
+CURLcode tool_setopt_enum(CURL *curl, struct GlobalConfig *config,
+ const char *name, CURLoption tag,
+ const struct NameValue *nv, long lval);
+CURLcode tool_setopt_flags(CURL *curl, struct GlobalConfig *config,
+ const char *name, CURLoption tag,
+ const struct NameValue *nv, long lval);
+CURLcode tool_setopt_bitmask(CURL *curl, struct GlobalConfig *config,
+ const char *name, CURLoption tag,
+ const struct NameValueUnsigned *nv, long lval);
+CURLcode tool_setopt_mimepost(CURL *curl, struct GlobalConfig *config,
+ const char *name, CURLoption tag,
+ curl_mime *mimepost);
+CURLcode tool_setopt_slist(CURL *curl, struct GlobalConfig *config,
+ const char *name, CURLoption tag,
+ struct curl_slist *list);
+CURLcode tool_setopt(CURL *curl, bool str, struct GlobalConfig *global,
+ struct OperationConfig *config,
+ const char *name, CURLoption tag, ...);
+
+#define my_setopt(x,y,z) \
+ SETOPT_CHECK(tool_setopt(x, FALSE, global, config, #y, y, z), y)
+
+#define my_setopt_str(x,y,z) \
+ SETOPT_CHECK(tool_setopt(x, TRUE, global, config, #y, y, z), y)
+
+#define my_setopt_enum(x,y,z) \
+ SETOPT_CHECK(tool_setopt_enum(x, global, #y, y, setopt_nv_ ## y, z), y)
+
+#define my_setopt_flags(x,y,z) \
+ SETOPT_CHECK(tool_setopt_flags(x, global, #y, y, setopt_nv_ ## y, z), y)
+
+#define my_setopt_bitmask(x,y,z) \
+ SETOPT_CHECK(tool_setopt_bitmask(x, global, #y, y, setopt_nv_ ## y, z), y)
+
+#define my_setopt_mimepost(x,y,z) \
+ SETOPT_CHECK(tool_setopt_mimepost(x, global, #y, y, z), y)
+
+#define my_setopt_slist(x,y,z) \
+ SETOPT_CHECK(tool_setopt_slist(x, global, #y, y, z), y)
+
+#define res_setopt(x,y,z) tool_setopt(x, FALSE, global, config, #y, y, z)
+
+#define res_setopt_str(x,y,z) tool_setopt(x, TRUE, global, config, #y, y, z)
+
+#else /* CURL_DISABLE_LIBCURL_OPTION */
+
+/* No --libcurl, so pass options directly to library */
+
+#define my_setopt(x,y,z) \
+ SETOPT_CHECK(curl_easy_setopt(x, y, z), y)
+
+#define my_setopt_str(x,y,z) \
+ SETOPT_CHECK(curl_easy_setopt(x, y, z), y)
+
+#define my_setopt_enum(x,y,z) \
+ SETOPT_CHECK(curl_easy_setopt(x, y, z), y)
+
+#define my_setopt_flags(x,y,z) \
+ SETOPT_CHECK(curl_easy_setopt(x, y, z), y)
+
+#define my_setopt_bitmask(x,y,z) \
+ SETOPT_CHECK(curl_easy_setopt(x, y, z), y)
+
+#define my_setopt_mimepost(x,y,z) \
+ SETOPT_CHECK(curl_easy_setopt(x, y, z), y)
+
+#define my_setopt_slist(x,y,z) \
+ SETOPT_CHECK(curl_easy_setopt(x, y, z), y)
+
+#define res_setopt(x,y,z) curl_easy_setopt(x,y,z)
+
+#define res_setopt_str(x,y,z) curl_easy_setopt(x,y,z)
+
+#endif /* CURL_DISABLE_LIBCURL_OPTION */
+
+#endif /* HEADER_CURL_TOOL_SETOPT_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_setup.h b/ap/lib/libcurl/curl-7.86.0/src/tool_setup.h
new file mode 100755
index 0000000..16fa00e
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_setup.h
@@ -0,0 +1,67 @@
+#ifndef HEADER_CURL_TOOL_SETUP_H
+#define HEADER_CURL_TOOL_SETUP_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+
+#define CURL_NO_OLDIES
+
+/*
+ * curl_setup.h may define preprocessor macros such as _FILE_OFFSET_BITS and
+ * _LARGE_FILES in order to support files larger than 2 GB. On platforms
+ * where this happens it is mandatory that these macros are defined before
+ * any system header file is included, otherwise file handling function
+ * prototypes will be misdeclared and curl tool may not build properly;
+ * therefore we must include curl_setup.h before curl.h when building curl.
+ */
+
+#include "curl_setup.h" /* from the lib directory */
+
+/*
+ * curl tool certainly uses libcurl's external interface.
+ */
+
+#include <curl/curl.h> /* external interface */
+
+/*
+ * Platform specific stuff.
+ */
+
+#if defined(macintosh) && defined(__MRC__)
+# define main(x,y) curl_main(x,y)
+#endif
+
+#ifndef OS
+# define OS "unknown"
+#endif
+
+#ifndef UNPRINTABLE_CHAR
+ /* define what to use for unprintable characters */
+# define UNPRINTABLE_CHAR '.'
+#endif
+
+#ifndef HAVE_STRDUP
+# include "tool_strdup.h"
+#endif
+
+#endif /* HEADER_CURL_TOOL_SETUP_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_sleep.c b/ap/lib/libcurl/curl-7.86.0/src/tool_sleep.c
new file mode 100755
index 0000000..c52425f
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_sleep.c
@@ -0,0 +1,61 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#ifdef HAVE_SYS_SELECT_H
+# include <sys/select.h>
+#elif defined(HAVE_UNISTD_H)
+# include <unistd.h>
+#endif
+
+#ifdef HAVE_POLL_H
+# include <poll.h>
+#elif defined(HAVE_SYS_POLL_H)
+# include <sys/poll.h>
+#endif
+
+#ifdef MSDOS
+# include <dos.h>
+#endif
+
+#include "tool_sleep.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+void tool_go_sleep(long ms)
+{
+#if defined(MSDOS)
+ delay(ms);
+#elif defined(WIN32)
+ Sleep(ms);
+#elif defined(HAVE_POLL_FINE)
+ (void)poll((void *)0, 0, (int)ms);
+#else
+ struct timeval timeout;
+ timeout.tv_sec = ms / 1000L;
+ ms = ms % 1000L;
+ timeout.tv_usec = (int)ms * 1000;
+ select(0, NULL, NULL, NULL, &timeout);
+#endif
+}
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_sleep.h b/ap/lib/libcurl/curl-7.86.0/src/tool_sleep.h
new file mode 100755
index 0000000..d84b467
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_sleep.h
@@ -0,0 +1,30 @@
+#ifndef HEADER_CURL_TOOL_SLEEP_H
+#define HEADER_CURL_TOOL_SLEEP_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+void tool_go_sleep(long ms);
+
+#endif /* HEADER_CURL_TOOL_SLEEP_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_strdup.c b/ap/lib/libcurl/curl-7.86.0/src/tool_strdup.c
new file mode 100755
index 0000000..402f1c9
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_strdup.c
@@ -0,0 +1,44 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_strdup.h"
+
+#ifndef HAVE_STRDUP
+char *strdup(const char *str)
+{
+ size_t len;
+ char *newstr;
+
+ if(!str)
+ return (char *)NULL;
+
+ len = strlen(str) + 1;
+
+ newstr = malloc(len);
+ if(!newstr)
+ return (char *)NULL;
+
+ memcpy(newstr, str, len);
+ return newstr;
+}
+#endif
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_strdup.h b/ap/lib/libcurl/curl-7.86.0/src/tool_strdup.h
new file mode 100755
index 0000000..c31c046
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_strdup.h
@@ -0,0 +1,32 @@
+#ifndef HEADER_TOOL_STRDUP_H
+#define HEADER_TOOL_STRDUP_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#ifndef HAVE_STRDUP
+extern char *strdup(const char *str);
+#endif
+
+#endif /* HEADER_TOOL_STRDUP_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_urlglob.c b/ap/lib/libcurl/curl-7.86.0/src/tool_urlglob.c
new file mode 100755
index 0000000..fae8b13
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_urlglob.c
@@ -0,0 +1,710 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+#include "tool_cfgable.h"
+#include "tool_doswin.h"
+#include "tool_urlglob.h"
+#include "tool_vms.h"
+#include "dynbuf.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+#define GLOBERROR(string, column, code) \
+ glob->error = string, glob->pos = column, code
+
+static CURLcode glob_fixed(struct URLGlob *glob, char *fixed, size_t len)
+{
+ struct URLPattern *pat = &glob->pattern[glob->size];
+ pat->type = UPTSet;
+ pat->content.Set.size = 1;
+ pat->content.Set.ptr_s = 0;
+ pat->globindex = -1;
+
+ pat->content.Set.elements = malloc(sizeof(char *));
+
+ if(!pat->content.Set.elements)
+ return GLOBERROR("out of memory", 0, CURLE_OUT_OF_MEMORY);
+
+ pat->content.Set.elements[0] = malloc(len + 1);
+ if(!pat->content.Set.elements[0])
+ return GLOBERROR("out of memory", 0, CURLE_OUT_OF_MEMORY);
+
+ memcpy(pat->content.Set.elements[0], fixed, len);
+ pat->content.Set.elements[0][len] = 0;
+
+ return CURLE_OK;
+}
+
+/* multiply
+ *
+ * Multiplies and checks for overflow.
+ */
+static int multiply(unsigned long *amount, long with)
+{
+ unsigned long sum = *amount * with;
+ if(!with) {
+ *amount = 0;
+ return 0;
+ }
+ if(sum/with != *amount)
+ return 1; /* didn't fit, bail out */
+ *amount = sum;
+ return 0;
+}
+
+static CURLcode glob_set(struct URLGlob *glob, char **patternp,
+ size_t *posp, unsigned long *amount,
+ int globindex)
+{
+ /* processes a set expression with the point behind the opening '{'
+ ','-separated elements are collected until the next closing '}'
+ */
+ struct URLPattern *pat;
+ bool done = FALSE;
+ char *buf = glob->glob_buffer;
+ char *pattern = *patternp;
+ char *opattern = pattern;
+ size_t opos = *posp-1;
+
+ pat = &glob->pattern[glob->size];
+ /* patterns 0,1,2,... correspond to size=1,3,5,... */
+ pat->type = UPTSet;
+ pat->content.Set.size = 0;
+ pat->content.Set.ptr_s = 0;
+ pat->content.Set.elements = NULL;
+ pat->globindex = globindex;
+
+ while(!done) {
+ switch (*pattern) {
+ case '\0': /* URL ended while set was still open */
+ return GLOBERROR("unmatched brace", opos, CURLE_URL_MALFORMAT);
+
+ case '{':
+ case '[': /* no nested expressions at this time */
+ return GLOBERROR("nested brace", *posp, CURLE_URL_MALFORMAT);
+
+ case '}': /* set element completed */
+ if(opattern == pattern)
+ return GLOBERROR("empty string within braces", *posp,
+ CURLE_URL_MALFORMAT);
+
+ /* add 1 to size since it'll be incremented below */
+ if(multiply(amount, pat->content.Set.size + 1))
+ return GLOBERROR("range overflow", 0, CURLE_URL_MALFORMAT);
+
+ /* FALLTHROUGH */
+ case ',':
+
+ *buf = '\0';
+ if(pat->content.Set.elements) {
+ char **new_arr = realloc(pat->content.Set.elements,
+ (pat->content.Set.size + 1) * sizeof(char *));
+ if(!new_arr)
+ return GLOBERROR("out of memory", 0, CURLE_OUT_OF_MEMORY);
+
+ pat->content.Set.elements = new_arr;
+ }
+ else
+ pat->content.Set.elements = malloc(sizeof(char *));
+
+ if(!pat->content.Set.elements)
+ return GLOBERROR("out of memory", 0, CURLE_OUT_OF_MEMORY);
+
+ pat->content.Set.elements[pat->content.Set.size] =
+ strdup(glob->glob_buffer);
+ if(!pat->content.Set.elements[pat->content.Set.size])
+ return GLOBERROR("out of memory", 0, CURLE_OUT_OF_MEMORY);
+ ++pat->content.Set.size;
+
+ if(*pattern == '}') {
+ pattern++; /* pass the closing brace */
+ done = TRUE;
+ continue;
+ }
+
+ buf = glob->glob_buffer;
+ ++pattern;
+ ++(*posp);
+ break;
+
+ case ']': /* illegal closing bracket */
+ return GLOBERROR("unexpected close bracket", *posp, CURLE_URL_MALFORMAT);
+
+ case '\\': /* escaped character, skip '\' */
+ if(pattern[1]) {
+ ++pattern;
+ ++(*posp);
+ }
+ /* FALLTHROUGH */
+ default:
+ *buf++ = *pattern++; /* copy character to set element */
+ ++(*posp);
+ }
+ }
+
+ *patternp = pattern; /* return with the new position */
+ return CURLE_OK;
+}
+
+static CURLcode glob_range(struct URLGlob *glob, char **patternp,
+ size_t *posp, unsigned long *amount,
+ int globindex)
+{
+ /* processes a range expression with the point behind the opening '['
+ - char range: e.g. "a-z]", "B-Q]"
+ - num range: e.g. "0-9]", "17-2000]"
+ - num range with leading zeros: e.g. "001-999]"
+ expression is checked for well-formedness and collected until the next ']'
+ */
+ struct URLPattern *pat;
+ int rc;
+ char *pattern = *patternp;
+ char *c;
+
+ pat = &glob->pattern[glob->size];
+ pat->globindex = globindex;
+
+ if(ISALPHA(*pattern)) {
+ /* character range detected */
+ char min_c;
+ char max_c;
+ char end_c;
+ unsigned long step = 1;
+
+ pat->type = UPTCharRange;
+
+ rc = sscanf(pattern, "%c-%c%c", &min_c, &max_c, &end_c);
+
+ if(rc == 3) {
+ if(end_c == ':') {
+ char *endp;
+ errno = 0;
+ step = strtoul(&pattern[4], &endp, 10);
+ if(errno || &pattern[4] == endp || *endp != ']')
+ step = 0;
+ else
+ pattern = endp + 1;
+ }
+ else if(end_c != ']')
+ /* then this is wrong */
+ rc = 0;
+ else
+ /* end_c == ']' */
+ pattern += 4;
+ }
+
+ *posp += (pattern - *patternp);
+
+ if(rc != 3 || !step || step > (unsigned)INT_MAX ||
+ (min_c == max_c && step != 1) ||
+ (min_c != max_c && (min_c > max_c || step > (unsigned)(max_c - min_c) ||
+ (max_c - min_c) > ('z' - 'a'))))
+ /* the pattern is not well-formed */
+ return GLOBERROR("bad range", *posp, CURLE_URL_MALFORMAT);
+
+ /* if there was a ":[num]" thing, use that as step or else use 1 */
+ pat->content.CharRange.step = (int)step;
+ pat->content.CharRange.ptr_c = pat->content.CharRange.min_c = min_c;
+ pat->content.CharRange.max_c = max_c;
+
+ if(multiply(amount, ((pat->content.CharRange.max_c -
+ pat->content.CharRange.min_c) /
+ pat->content.CharRange.step + 1)))
+ return GLOBERROR("range overflow", *posp, CURLE_URL_MALFORMAT);
+ }
+ else if(ISDIGIT(*pattern)) {
+ /* numeric range detected */
+ unsigned long min_n;
+ unsigned long max_n = 0;
+ unsigned long step_n = 0;
+ char *endp;
+
+ pat->type = UPTNumRange;
+ pat->content.NumRange.padlength = 0;
+
+ if(*pattern == '0') {
+ /* leading zero specified, count them! */
+ c = pattern;
+ while(ISDIGIT(*c)) {
+ c++;
+ ++pat->content.NumRange.padlength; /* padding length is set for all
+ instances of this pattern */
+ }
+ }
+
+ errno = 0;
+ min_n = strtoul(pattern, &endp, 10);
+ if(errno || (endp == pattern))
+ endp = NULL;
+ else {
+ if(*endp != '-')
+ endp = NULL;
+ else {
+ pattern = endp + 1;
+ while(*pattern && ISBLANK(*pattern))
+ pattern++;
+ if(!ISDIGIT(*pattern)) {
+ endp = NULL;
+ goto fail;
+ }
+ errno = 0;
+ max_n = strtoul(pattern, &endp, 10);
+ if(errno)
+ /* overflow */
+ endp = NULL;
+ else if(*endp == ':') {
+ pattern = endp + 1;
+ errno = 0;
+ step_n = strtoul(pattern, &endp, 10);
+ if(errno)
+ /* over/underflow situation */
+ endp = NULL;
+ }
+ else
+ step_n = 1;
+ if(endp && (*endp == ']')) {
+ pattern = endp + 1;
+ }
+ else
+ endp = NULL;
+ }
+ }
+
+ fail:
+ *posp += (pattern - *patternp);
+
+ if(!endp || !step_n ||
+ (min_n == max_n && step_n != 1) ||
+ (min_n != max_n && (min_n > max_n || step_n > (max_n - min_n))))
+ /* the pattern is not well-formed */
+ return GLOBERROR("bad range", *posp, CURLE_URL_MALFORMAT);
+
+ /* typecasting to ints are fine here since we make sure above that we
+ are within 31 bits */
+ pat->content.NumRange.ptr_n = pat->content.NumRange.min_n = min_n;
+ pat->content.NumRange.max_n = max_n;
+ pat->content.NumRange.step = step_n;
+
+ if(multiply(amount, ((pat->content.NumRange.max_n -
+ pat->content.NumRange.min_n) /
+ pat->content.NumRange.step + 1)))
+ return GLOBERROR("range overflow", *posp, CURLE_URL_MALFORMAT);
+ }
+ else
+ return GLOBERROR("bad range specification", *posp, CURLE_URL_MALFORMAT);
+
+ *patternp = pattern;
+ return CURLE_OK;
+}
+
+#define MAX_IP6LEN 128
+
+static bool peek_ipv6(const char *str, size_t *skip)
+{
+ /*
+ * Scan for a potential IPv6 literal.
+ * - Valid globs contain a hyphen and <= 1 colon.
+ * - IPv6 literals contain no hyphens and >= 2 colons.
+ */
+ char hostname[MAX_IP6LEN];
+ CURLU *u;
+ char *endbr = strchr(str, ']');
+ size_t hlen;
+ CURLUcode rc;
+ if(!endbr)
+ return FALSE;
+
+ hlen = endbr - str + 1;
+ if(hlen >= MAX_IP6LEN)
+ return FALSE;
+
+ u = curl_url();
+ if(!u)
+ return FALSE;
+
+ memcpy(hostname, str, hlen);
+ hostname[hlen] = 0;
+
+ /* ask to "guess scheme" as then it works without a https:// prefix */
+ rc = curl_url_set(u, CURLUPART_URL, hostname, CURLU_GUESS_SCHEME);
+
+ curl_url_cleanup(u);
+ if(!rc)
+ *skip = hlen;
+ return rc ? FALSE : TRUE;
+}
+
+static CURLcode glob_parse(struct URLGlob *glob, char *pattern,
+ size_t pos, unsigned long *amount)
+{
+ /* processes a literal string component of a URL
+ special characters '{' and '[' branch to set/range processing functions
+ */
+ CURLcode res = CURLE_OK;
+ int globindex = 0; /* count "actual" globs */
+
+ *amount = 1;
+
+ while(*pattern && !res) {
+ char *buf = glob->glob_buffer;
+ size_t sublen = 0;
+ while(*pattern && *pattern != '{') {
+ if(*pattern == '[') {
+ /* skip over IPv6 literals and [] */
+ size_t skip = 0;
+ if(!peek_ipv6(pattern, &skip) && (pattern[1] == ']'))
+ skip = 2;
+ if(skip) {
+ memcpy(buf, pattern, skip);
+ buf += skip;
+ pattern += skip;
+ sublen += skip;
+ continue;
+ }
+ break;
+ }
+ if(*pattern == '}' || *pattern == ']')
+ return GLOBERROR("unmatched close brace/bracket", pos,
+ CURLE_URL_MALFORMAT);
+
+ /* only allow \ to escape known "special letters" */
+ if(*pattern == '\\' &&
+ (*(pattern + 1) == '{' || *(pattern + 1) == '[' ||
+ *(pattern + 1) == '}' || *(pattern + 1) == ']') ) {
+
+ /* escape character, skip '\' */
+ ++pattern;
+ ++pos;
+ }
+ *buf++ = *pattern++; /* copy character to literal */
+ ++pos;
+ sublen++;
+ }
+ if(sublen) {
+ /* we got a literal string, add it as a single-item list */
+ *buf = '\0';
+ res = glob_fixed(glob, glob->glob_buffer, sublen);
+ }
+ else {
+ switch (*pattern) {
+ case '\0': /* done */
+ break;
+
+ case '{':
+ /* process set pattern */
+ pattern++;
+ pos++;
+ res = glob_set(glob, &pattern, &pos, amount, globindex++);
+ break;
+
+ case '[':
+ /* process range pattern */
+ pattern++;
+ pos++;
+ res = glob_range(glob, &pattern, &pos, amount, globindex++);
+ break;
+ }
+ }
+
+ if(++glob->size >= GLOB_PATTERN_NUM)
+ return GLOBERROR("too many globs", pos, CURLE_URL_MALFORMAT);
+ }
+ return res;
+}
+
+CURLcode glob_url(struct URLGlob **glob, char *url, unsigned long *urlnum,
+ FILE *error)
+{
+ /*
+ * We can deal with any-size, just make a buffer with the same length
+ * as the specified URL!
+ */
+ struct URLGlob *glob_expand;
+ unsigned long amount = 0;
+ char *glob_buffer;
+ CURLcode res;
+
+ *glob = NULL;
+
+ glob_buffer = malloc(strlen(url) + 1);
+ if(!glob_buffer)
+ return CURLE_OUT_OF_MEMORY;
+ glob_buffer[0] = 0;
+
+ glob_expand = calloc(1, sizeof(struct URLGlob));
+ if(!glob_expand) {
+ Curl_safefree(glob_buffer);
+ return CURLE_OUT_OF_MEMORY;
+ }
+ glob_expand->urllen = strlen(url);
+ glob_expand->glob_buffer = glob_buffer;
+
+ res = glob_parse(glob_expand, url, 1, &amount);
+ if(!res)
+ *urlnum = amount;
+ else {
+ if(error && glob_expand->error) {
+ char text[512];
+ const char *t;
+ if(glob_expand->pos) {
+ msnprintf(text, sizeof(text), "%s in URL position %zu:\n%s\n%*s^",
+ glob_expand->error,
+ glob_expand->pos, url, (int)glob_expand->pos - 1, " ");
+ t = text;
+ }
+ else
+ t = glob_expand->error;
+
+ /* send error description to the error-stream */
+ fprintf(error, "curl: (%d) %s\n", res, t);
+ }
+ /* it failed, we cleanup */
+ glob_cleanup(glob_expand);
+ *urlnum = 1;
+ return res;
+ }
+
+ *glob = glob_expand;
+ return CURLE_OK;
+}
+
+void glob_cleanup(struct URLGlob *glob)
+{
+ size_t i;
+ int elem;
+
+ if(!glob)
+ return;
+
+ for(i = 0; i < glob->size; i++) {
+ if((glob->pattern[i].type == UPTSet) &&
+ (glob->pattern[i].content.Set.elements)) {
+ for(elem = glob->pattern[i].content.Set.size - 1;
+ elem >= 0;
+ --elem) {
+ Curl_safefree(glob->pattern[i].content.Set.elements[elem]);
+ }
+ Curl_safefree(glob->pattern[i].content.Set.elements);
+ }
+ }
+ Curl_safefree(glob->glob_buffer);
+ Curl_safefree(glob);
+}
+
+CURLcode glob_next_url(char **globbed, struct URLGlob *glob)
+{
+ struct URLPattern *pat;
+ size_t i;
+ size_t len;
+ size_t buflen = glob->urllen + 1;
+ char *buf = glob->glob_buffer;
+
+ *globbed = NULL;
+
+ if(!glob->beenhere)
+ glob->beenhere = 1;
+ else {
+ bool carry = TRUE;
+
+ /* implement a counter over the index ranges of all patterns, starting
+ with the rightmost pattern */
+ for(i = 0; carry && (i < glob->size); i++) {
+ carry = FALSE;
+ pat = &glob->pattern[glob->size - 1 - i];
+ switch(pat->type) {
+ case UPTSet:
+ if((pat->content.Set.elements) &&
+ (++pat->content.Set.ptr_s == pat->content.Set.size)) {
+ pat->content.Set.ptr_s = 0;
+ carry = TRUE;
+ }
+ break;
+ case UPTCharRange:
+ pat->content.CharRange.ptr_c =
+ (char)(pat->content.CharRange.step +
+ (int)((unsigned char)pat->content.CharRange.ptr_c));
+ if(pat->content.CharRange.ptr_c > pat->content.CharRange.max_c) {
+ pat->content.CharRange.ptr_c = pat->content.CharRange.min_c;
+ carry = TRUE;
+ }
+ break;
+ case UPTNumRange:
+ pat->content.NumRange.ptr_n += pat->content.NumRange.step;
+ if(pat->content.NumRange.ptr_n > pat->content.NumRange.max_n) {
+ pat->content.NumRange.ptr_n = pat->content.NumRange.min_n;
+ carry = TRUE;
+ }
+ break;
+ default:
+ printf("internal error: invalid pattern type (%d)\n", (int)pat->type);
+ return CURLE_FAILED_INIT;
+ }
+ }
+ if(carry) { /* first pattern ptr has run into overflow, done! */
+ return CURLE_OK;
+ }
+ }
+
+ for(i = 0; i < glob->size; ++i) {
+ pat = &glob->pattern[i];
+ switch(pat->type) {
+ case UPTSet:
+ if(pat->content.Set.elements) {
+ msnprintf(buf, buflen, "%s",
+ pat->content.Set.elements[pat->content.Set.ptr_s]);
+ len = strlen(buf);
+ buf += len;
+ buflen -= len;
+ }
+ break;
+ case UPTCharRange:
+ if(buflen) {
+ *buf++ = pat->content.CharRange.ptr_c;
+ *buf = '\0';
+ buflen--;
+ }
+ break;
+ case UPTNumRange:
+ msnprintf(buf, buflen, "%0*lu",
+ pat->content.NumRange.padlength,
+ pat->content.NumRange.ptr_n);
+ len = strlen(buf);
+ buf += len;
+ buflen -= len;
+ break;
+ default:
+ printf("internal error: invalid pattern type (%d)\n", (int)pat->type);
+ return CURLE_FAILED_INIT;
+ }
+ }
+
+ *globbed = strdup(glob->glob_buffer);
+ if(!*globbed)
+ return CURLE_OUT_OF_MEMORY;
+
+ return CURLE_OK;
+}
+
+#define MAX_OUTPUT_GLOB_LENGTH (10*1024)
+
+CURLcode glob_match_url(char **result, char *filename, struct URLGlob *glob)
+{
+ char numbuf[18];
+ char *appendthis = (char *)"";
+ size_t appendlen = 0;
+ struct curlx_dynbuf dyn;
+
+ *result = NULL;
+
+ /* We cannot use the glob_buffer for storage since the filename may be
+ * longer than the URL we use.
+ */
+ curlx_dyn_init(&dyn, MAX_OUTPUT_GLOB_LENGTH);
+
+ while(*filename) {
+ if(*filename == '#' && ISDIGIT(filename[1])) {
+ char *ptr = filename;
+ unsigned long num = strtoul(&filename[1], &filename, 10);
+ struct URLPattern *pat = NULL;
+
+ if(num && (num < glob->size)) {
+ unsigned long i;
+ num--; /* make it zero based */
+ /* find the correct glob entry */
+ for(i = 0; i<glob->size; i++) {
+ if(glob->pattern[i].globindex == (int)num) {
+ pat = &glob->pattern[i];
+ break;
+ }
+ }
+ }
+
+ if(pat) {
+ switch(pat->type) {
+ case UPTSet:
+ if(pat->content.Set.elements) {
+ appendthis = pat->content.Set.elements[pat->content.Set.ptr_s];
+ appendlen =
+ strlen(pat->content.Set.elements[pat->content.Set.ptr_s]);
+ }
+ break;
+ case UPTCharRange:
+ numbuf[0] = pat->content.CharRange.ptr_c;
+ numbuf[1] = 0;
+ appendthis = numbuf;
+ appendlen = 1;
+ break;
+ case UPTNumRange:
+ msnprintf(numbuf, sizeof(numbuf), "%0*lu",
+ pat->content.NumRange.padlength,
+ pat->content.NumRange.ptr_n);
+ appendthis = numbuf;
+ appendlen = strlen(numbuf);
+ break;
+ default:
+ fprintf(stderr, "internal error: invalid pattern type (%d)\n",
+ (int)pat->type);
+ curlx_dyn_free(&dyn);
+ return CURLE_FAILED_INIT;
+ }
+ }
+ else {
+ /* #[num] out of range, use the #[num] in the output */
+ filename = ptr;
+ appendthis = filename++;
+ appendlen = 1;
+ }
+ }
+ else {
+ appendthis = filename++;
+ appendlen = 1;
+ }
+ if(curlx_dyn_addn(&dyn, appendthis, appendlen))
+ return CURLE_OUT_OF_MEMORY;
+ }
+
+ if(curlx_dyn_addn(&dyn, "", 0))
+ return CURLE_OUT_OF_MEMORY;
+
+#if defined(MSDOS) || defined(WIN32)
+ {
+ char *sanitized;
+ SANITIZEcode sc = sanitize_file_name(&sanitized, curlx_dyn_ptr(&dyn),
+ (SANITIZE_ALLOW_PATH |
+ SANITIZE_ALLOW_RESERVED));
+ curlx_dyn_free(&dyn);
+ if(sc)
+ return CURLE_URL_MALFORMAT;
+ *result = sanitized;
+ return CURLE_OK;
+ }
+#else
+ *result = curlx_dyn_ptr(&dyn);
+ return CURLE_OK;
+#endif /* MSDOS || WIN32 */
+}
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_urlglob.h b/ap/lib/libcurl/curl-7.86.0/src/tool_urlglob.h
new file mode 100755
index 0000000..80c1537
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_urlglob.h
@@ -0,0 +1,78 @@
+#ifndef HEADER_CURL_TOOL_URLGLOB_H
+#define HEADER_CURL_TOOL_URLGLOB_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+typedef enum {
+ UPTSet = 1,
+ UPTCharRange,
+ UPTNumRange
+} URLPatternType;
+
+struct URLPattern {
+ URLPatternType type;
+ int globindex; /* the number of this particular glob or -1 if not used
+ within {} or [] */
+ union {
+ struct {
+ char **elements;
+ int size;
+ int ptr_s;
+ } Set;
+ struct {
+ char min_c;
+ char max_c;
+ char ptr_c;
+ int step;
+ } CharRange;
+ struct {
+ unsigned long min_n;
+ unsigned long max_n;
+ int padlength;
+ unsigned long ptr_n;
+ unsigned long step;
+ } NumRange;
+ } content;
+};
+
+/* the total number of globs supported */
+#define GLOB_PATTERN_NUM 100
+
+struct URLGlob {
+ struct URLPattern pattern[GLOB_PATTERN_NUM];
+ size_t size;
+ size_t urllen;
+ char *glob_buffer;
+ char beenhere;
+ const char *error; /* error message */
+ size_t pos; /* column position of error or 0 */
+};
+
+CURLcode glob_url(struct URLGlob**, char *, unsigned long *, FILE *);
+CURLcode glob_next_url(char **, struct URLGlob *);
+CURLcode glob_match_url(char **, char *, struct URLGlob *);
+void glob_cleanup(struct URLGlob *glob);
+
+#endif /* HEADER_CURL_TOOL_URLGLOB_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_util.c b/ap/lib/libcurl/curl-7.86.0/src/tool_util.c
new file mode 100755
index 0000000..fb4829f
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_util.c
@@ -0,0 +1,165 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#if defined(HAVE_STRCASECMP) && defined(HAVE_STRINGS_H)
+#include <strings.h>
+#endif
+
+#include "tool_util.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+#if defined(WIN32) && !defined(MSDOS)
+
+/* set in win32_init() */
+extern LARGE_INTEGER tool_freq;
+extern bool tool_isVistaOrGreater;
+
+/* In case of bug fix this function has a counterpart in timeval.c */
+struct timeval tvnow(void)
+{
+ struct timeval now;
+ if(tool_isVistaOrGreater) { /* QPC timer might have issues pre-Vista */
+ LARGE_INTEGER count;
+ QueryPerformanceCounter(&count);
+ now.tv_sec = (long)(count.QuadPart / tool_freq.QuadPart);
+ now.tv_usec = (long)((count.QuadPart % tool_freq.QuadPart) * 1000000 /
+ tool_freq.QuadPart);
+ }
+ else {
+ /* Disable /analyze warning that GetTickCount64 is preferred */
+#if defined(_MSC_VER)
+#pragma warning(push)
+#pragma warning(disable:28159)
+#endif
+ DWORD milliseconds = GetTickCount();
+#if defined(_MSC_VER)
+#pragma warning(pop)
+#endif
+
+ now.tv_sec = (long)(milliseconds / 1000);
+ now.tv_usec = (long)((milliseconds % 1000) * 1000);
+ }
+ return now;
+}
+
+#elif defined(HAVE_CLOCK_GETTIME_MONOTONIC)
+
+struct timeval tvnow(void)
+{
+ /*
+ ** clock_gettime() is granted to be increased monotonically when the
+ ** monotonic clock is queried. Time starting point is unspecified, it
+ ** could be the system start-up time, the Epoch, or something else,
+ ** in any case the time starting point does not change once that the
+ ** system has started up.
+ */
+ struct timeval now;
+ struct timespec tsnow;
+ if(0 == clock_gettime(CLOCK_MONOTONIC, &tsnow)) {
+ now.tv_sec = tsnow.tv_sec;
+ now.tv_usec = (int)(tsnow.tv_nsec / 1000);
+ }
+ /*
+ ** Even when the configure process has truly detected monotonic clock
+ ** availability, it might happen that it is not actually available at
+ ** run-time. When this occurs simply fallback to other time source.
+ */
+#ifdef HAVE_GETTIMEOFDAY
+ else
+ (void)gettimeofday(&now, NULL);
+#else
+ else {
+ now.tv_sec = time(NULL);
+ now.tv_usec = 0;
+ }
+#endif
+ return now;
+}
+
+#elif defined(HAVE_GETTIMEOFDAY)
+
+struct timeval tvnow(void)
+{
+ /*
+ ** gettimeofday() is not granted to be increased monotonically, due to
+ ** clock drifting and external source time synchronization it can jump
+ ** forward or backward in time.
+ */
+ struct timeval now;
+ (void)gettimeofday(&now, NULL);
+ return now;
+}
+
+#else
+
+struct timeval tvnow(void)
+{
+ /*
+ ** time() returns the value of time in seconds since the Epoch.
+ */
+ struct timeval now;
+ now.tv_sec = time(NULL);
+ now.tv_usec = 0;
+ return now;
+}
+
+#endif
+
+/*
+ * Make sure that the first argument is the more recent time, as otherwise
+ * we'll get a weird negative time-diff back...
+ *
+ * Returns: the time difference in number of milliseconds.
+ */
+long tvdiff(struct timeval newer, struct timeval older)
+{
+ return (long)(newer.tv_sec-older.tv_sec)*1000+
+ (long)(newer.tv_usec-older.tv_usec)/1000;
+}
+
+/* Case insensitive compare. Accept NULL pointers. */
+int struplocompare(const char *p1, const char *p2)
+{
+ if(!p1)
+ return p2? -1: 0;
+ if(!p2)
+ return 1;
+#ifdef HAVE_STRCASECMP
+ return strcasecmp(p1, p2);
+#elif defined(HAVE_STRCMPI)
+ return strcmpi(p1, p2);
+#elif defined(HAVE_STRICMP)
+ return stricmp(p1, p2);
+#else
+ return strcmp(p1, p2);
+#endif
+}
+
+/* Indirect version to use as qsort callback. */
+int struplocompare4sort(const void *p1, const void *p2)
+{
+ return struplocompare(* (char * const *) p1, * (char * const *) p2);
+}
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_util.h b/ap/lib/libcurl/curl-7.86.0/src/tool_util.h
new file mode 100755
index 0000000..72b355e
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_util.h
@@ -0,0 +1,42 @@
+#ifndef HEADER_CURL_TOOL_UTIL_H
+#define HEADER_CURL_TOOL_UTIL_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+struct timeval tvnow(void);
+
+/*
+ * Make sure that the first argument (t1) is the more recent time and t2 is
+ * the older time, as otherwise you get a weird negative time-diff back...
+ *
+ * Returns: the time difference in number of milliseconds.
+ */
+long tvdiff(struct timeval t1, struct timeval t2);
+
+/* Case insensitive comparison support. */
+int struplocompare(const char *p1, const char *p2);
+int struplocompare4sort(const void *p1, const void *p2);
+
+#endif /* HEADER_CURL_TOOL_UTIL_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_version.h b/ap/lib/libcurl/curl-7.86.0/src/tool_version.h
new file mode 100755
index 0000000..0bbb9a5
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_version.h
@@ -0,0 +1,36 @@
+#ifndef HEADER_CURL_TOOL_VERSION_H
+#define HEADER_CURL_TOOL_VERSION_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include <curl/curlver.h>
+
+#define CURL_NAME "curl"
+#define CURL_COPYRIGHT LIBCURL_COPYRIGHT
+#define CURL_VERSION "7.86.0"
+#define CURL_VERSION_MAJOR LIBCURL_VERSION_MAJOR
+#define CURL_VERSION_MINOR LIBCURL_VERSION_MINOR
+#define CURL_VERSION_PATCH LIBCURL_VERSION_PATCH
+#define CURL_ID CURL_NAME " " CURL_VERSION " (" OS ") "
+
+#endif /* HEADER_CURL_TOOL_VERSION_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_vms.c b/ap/lib/libcurl/curl-7.86.0/src/tool_vms.c
new file mode 100755
index 0000000..7d45d5f
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_vms.c
@@ -0,0 +1,220 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#ifdef __VMS
+
+#if defined(__DECC) && !defined(__VAX) && \
+ defined(__CRTL_VER) && (__CRTL_VER >= 70301000)
+#include <unixlib.h>
+#endif
+
+#define ENABLE_CURLX_PRINTF
+#include "curlx.h"
+
+#include "curlmsg_vms.h"
+#include "tool_vms.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+void decc$__posix_exit(int __status);
+void decc$exit(int __status);
+
+static int vms_shell = -1;
+
+/* VMS has a DCL shell and also has Unix shells ported to it.
+ * When curl is running under a Unix shell, we want it to be as much
+ * like Unix as possible.
+ */
+int is_vms_shell(void)
+{
+ char *shell;
+
+ /* Have we checked the shell yet? */
+ if(vms_shell >= 0)
+ return vms_shell;
+
+ shell = getenv("SHELL");
+
+ /* No shell, means DCL */
+ if(!shell) {
+ vms_shell = 1;
+ return 1;
+ }
+
+ /* Have to make sure some one did not set shell to DCL */
+ if(strcmp(shell, "DCL") == 0) {
+ vms_shell = 1;
+ return 1;
+ }
+
+ vms_shell = 0;
+ return 0;
+}
+
+/*
+ * VMS has two exit() routines. When running under a Unix style shell, then
+ * Unix style and the __posix_exit() routine is used.
+ *
+ * When running under the DCL shell, then the VMS encoded codes and decc$exit()
+ * is used.
+ *
+ * We can not use exit() or return a code from main() because the actual
+ * routine called depends on both the compiler version, compile options, and
+ * feature macro settings, and one of the exit routines is hidden at compile
+ * time.
+ *
+ * Since we want Curl to work properly under the VMS DCL shell and Unix
+ * shells under VMS, this routine should compile correctly regardless of
+ * the settings.
+ */
+
+void vms_special_exit(int code, int vms_show)
+{
+ int vms_code;
+
+ /* The Posix exit mode is only available after VMS 7.0 */
+#if __CRTL_VER >= 70000000
+ if(is_vms_shell() == 0) {
+ decc$__posix_exit(code);
+ }
+#endif
+
+ if(code > CURL_LAST) { /* If CURL_LAST exceeded then */
+ vms_code = CURL_LAST; /* curlmsg.h is out of sync. */
+ }
+ else {
+ vms_code = vms_cond[code] | vms_show;
+ }
+ decc$exit(vms_code);
+}
+
+#if defined(__DECC) && !defined(__VAX) && \
+ defined(__CRTL_VER) && (__CRTL_VER >= 70301000)
+
+/*
+ * 2004-09-19 SMS.
+ *
+ * decc_init()
+ *
+ * On non-VAX systems, use LIB$INITIALIZE to set a collection of C
+ * RTL features without using the DECC$* logical name method, nor
+ * requiring the user to define the corresponding logical names.
+ */
+
+/* Structure to hold a DECC$* feature name and its desired value. */
+struct decc_feat_t {
+ char *name;
+ int value;
+};
+
+/* Array of DECC$* feature names and their desired values. */
+static const struct decc_feat_t decc_feat_array[] = {
+ /* Preserve command-line case with SET PROCESS/PARSE_STYLE=EXTENDED */
+ { "DECC$ARGV_PARSE_STYLE", 1 },
+ /* Preserve case for file names on ODS5 disks. */
+ { "DECC$EFS_CASE_PRESERVE", 1 },
+ /* Enable multiple dots (and most characters) in ODS5 file names,
+ while preserving VMS-ness of ";version". */
+ { "DECC$EFS_CHARSET", 1 },
+ /* List terminator. */
+ { (char *)NULL, 0 }
+};
+
+/* Flag to sense if decc_init() was called. */
+static int decc_init_done = -1;
+
+/* LIB$INITIALIZE initialization function. */
+static void decc_init(void)
+{
+ int feat_index;
+ int feat_value;
+ int feat_value_max;
+ int feat_value_min;
+ int i;
+ int sts;
+
+ /* Set the global flag to indicate that LIB$INITIALIZE worked. */
+ decc_init_done = 1;
+
+ /* Loop through all items in the decc_feat_array[]. */
+ for(i = 0; decc_feat_array[i].name != NULL; i++) {
+
+ /* Get the feature index. */
+ feat_index = decc$feature_get_index(decc_feat_array[i].name);
+
+ if(feat_index >= 0) {
+ /* Valid item. Collect its properties. */
+ feat_value = decc$feature_get_value(feat_index, 1);
+ feat_value_min = decc$feature_get_value(feat_index, 2);
+ feat_value_max = decc$feature_get_value(feat_index, 3);
+
+ if((decc_feat_array[i].value >= feat_value_min) &&
+ (decc_feat_array[i].value <= feat_value_max)) {
+ /* Valid value. Set it if necessary. */
+ if(feat_value != decc_feat_array[i].value) {
+ sts = decc$feature_set_value(feat_index, 1,
+ decc_feat_array[i].value);
+ }
+ }
+ else {
+ /* Invalid DECC feature value. */
+ printf(" INVALID DECC FEATURE VALUE, %d: %d <= %s <= %d.\n",
+ feat_value,
+ feat_value_min, decc_feat_array[i].name, feat_value_max);
+ }
+ }
+ else {
+ /* Invalid DECC feature name. */
+ printf(" UNKNOWN DECC FEATURE: %s.\n", decc_feat_array[i].name);
+ }
+
+ }
+}
+
+/* Get "decc_init()" into a valid, loaded LIB$INITIALIZE PSECT. */
+
+#pragma nostandard
+
+/* Establish the LIB$INITIALIZE PSECTs, with proper alignment and
+ other attributes. Note that "nopic" is significant only on VAX. */
+#pragma extern_model save
+#pragma extern_model strict_refdef "LIB$INITIALIZ" 2, nopic, nowrt
+const int spare[8] = {0};
+#pragma extern_model strict_refdef "LIB$INITIALIZE" 2, nopic, nowrt
+void (*const x_decc_init)() = decc_init;
+#pragma extern_model restore
+
+/* Fake reference to ensure loading the LIB$INITIALIZE PSECT. */
+#pragma extern_model save
+int LIB$INITIALIZE(void);
+#pragma extern_model strict_refdef
+int dmy_lib$initialize = (int) LIB$INITIALIZE;
+#pragma extern_model restore
+
+#pragma standard
+
+#endif /* __DECC && !__VAX && __CRTL_VER && __CRTL_VER >= 70301000 */
+
+#endif /* __VMS */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_vms.h b/ap/lib/libcurl/curl-7.86.0/src/tool_vms.h
new file mode 100755
index 0000000..949206d
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_vms.h
@@ -0,0 +1,48 @@
+#ifndef HEADER_CURL_TOOL_VMS_H
+#define HEADER_CURL_TOOL_VMS_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#ifdef __VMS
+
+/*
+ * Forward-declaration of global variable vms_show defined
+ * in tool_main.c, used in main() as parameter for function
+ * vms_special_exit() to allow proper curl tool exiting.
+ */
+extern int vms_show;
+
+int is_vms_shell(void);
+void vms_special_exit(int code, int vms_show);
+
+#undef exit
+#define exit(__code) vms_special_exit((__code), (0))
+
+#define VMS_STS(c,f,e,s) (((c&0xF)<<28)|((f&0xFFF)<<16)|((e&0x1FFF)<3)|(s&7))
+#define VMSSTS_HIDE VMS_STS(1,0,0,0)
+
+#endif /* __VMS */
+
+#endif /* HEADER_CURL_TOOL_VMS_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_writeout.c b/ap/lib/libcurl/curl-7.86.0/src/tool_writeout.c
new file mode 100755
index 0000000..2789ee2
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_writeout.c
@@ -0,0 +1,439 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+#include "tool_cfgable.h"
+#include "tool_writeout.h"
+#include "tool_writeout_json.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+static int writeTime(FILE *stream, const struct writeoutvar *wovar,
+ struct per_transfer *per, CURLcode per_result,
+ bool use_json);
+
+static int writeString(FILE *stream, const struct writeoutvar *wovar,
+ struct per_transfer *per, CURLcode per_result,
+ bool use_json);
+
+static int writeLong(FILE *stream, const struct writeoutvar *wovar,
+ struct per_transfer *per, CURLcode per_result,
+ bool use_json);
+
+static int writeOffset(FILE *stream, const struct writeoutvar *wovar,
+ struct per_transfer *per, CURLcode per_result,
+ bool use_json);
+
+struct httpmap {
+ const char *str;
+ int num;
+};
+
+static const struct httpmap http_version[] = {
+ { "0", CURL_HTTP_VERSION_NONE},
+ { "1", CURL_HTTP_VERSION_1_0},
+ { "1.1", CURL_HTTP_VERSION_1_1},
+ { "2", CURL_HTTP_VERSION_2},
+ { "3", CURL_HTTP_VERSION_3},
+ { NULL, 0} /* end of list */
+};
+
+/* The designated write function should be the same as the CURLINFO return type
+ with exceptions special cased in the respective function. For example,
+ http_version uses CURLINFO_HTTP_VERSION which returns the version as a long,
+ however it is output as a string and therefore is handled in writeString.
+
+ Yes: "http_version": "1.1"
+ No: "http_version": 1.1
+
+ Variable names should be in alphabetical order.
+ */
+static const struct writeoutvar variables[] = {
+ {"content_type", VAR_CONTENT_TYPE, CURLINFO_CONTENT_TYPE, writeString},
+ {"errormsg", VAR_ERRORMSG, CURLINFO_NONE, writeString},
+ {"exitcode", VAR_EXITCODE, CURLINFO_NONE, writeLong},
+ {"filename_effective", VAR_EFFECTIVE_FILENAME, CURLINFO_NONE, writeString},
+ {"ftp_entry_path", VAR_FTP_ENTRY_PATH, CURLINFO_FTP_ENTRY_PATH, writeString},
+ {"header_json", VAR_HEADER_JSON, CURLINFO_NONE, NULL},
+ {"http_code", VAR_HTTP_CODE, CURLINFO_RESPONSE_CODE, writeLong},
+ {"http_connect", VAR_HTTP_CODE_PROXY, CURLINFO_HTTP_CONNECTCODE, writeLong},
+ {"http_version", VAR_HTTP_VERSION, CURLINFO_HTTP_VERSION, writeString},
+ {"json", VAR_JSON, CURLINFO_NONE, NULL},
+ {"local_ip", VAR_LOCAL_IP, CURLINFO_LOCAL_IP, writeString},
+ {"local_port", VAR_LOCAL_PORT, CURLINFO_LOCAL_PORT, writeLong},
+ {"method", VAR_EFFECTIVE_METHOD, CURLINFO_EFFECTIVE_METHOD, writeString},
+ {"num_connects", VAR_NUM_CONNECTS, CURLINFO_NUM_CONNECTS, writeLong},
+ {"num_headers", VAR_NUM_HEADERS, CURLINFO_NONE, writeLong},
+ {"num_redirects", VAR_REDIRECT_COUNT, CURLINFO_REDIRECT_COUNT, writeLong},
+ {"onerror", VAR_ONERROR, CURLINFO_NONE, NULL},
+ {"proxy_ssl_verify_result", VAR_PROXY_SSL_VERIFY_RESULT,
+ CURLINFO_PROXY_SSL_VERIFYRESULT, writeLong},
+ {"redirect_url", VAR_REDIRECT_URL, CURLINFO_REDIRECT_URL, writeString},
+ {"referer", VAR_REFERER, CURLINFO_REFERER, writeString},
+ {"remote_ip", VAR_PRIMARY_IP, CURLINFO_PRIMARY_IP, writeString},
+ {"remote_port", VAR_PRIMARY_PORT, CURLINFO_PRIMARY_PORT, writeLong},
+ {"response_code", VAR_HTTP_CODE, CURLINFO_RESPONSE_CODE, writeLong},
+ {"scheme", VAR_SCHEME, CURLINFO_SCHEME, writeString},
+ {"size_download", VAR_SIZE_DOWNLOAD, CURLINFO_SIZE_DOWNLOAD_T, writeOffset},
+ {"size_header", VAR_HEADER_SIZE, CURLINFO_HEADER_SIZE, writeLong},
+ {"size_request", VAR_REQUEST_SIZE, CURLINFO_REQUEST_SIZE, writeLong},
+ {"size_upload", VAR_SIZE_UPLOAD, CURLINFO_SIZE_UPLOAD_T, writeOffset},
+ {"speed_download", VAR_SPEED_DOWNLOAD, CURLINFO_SPEED_DOWNLOAD_T,
+ writeOffset},
+ {"speed_upload", VAR_SPEED_UPLOAD, CURLINFO_SPEED_UPLOAD_T, writeOffset},
+ {"ssl_verify_result", VAR_SSL_VERIFY_RESULT, CURLINFO_SSL_VERIFYRESULT,
+ writeLong},
+ {"stderr", VAR_STDERR, CURLINFO_NONE, NULL},
+ {"stdout", VAR_STDOUT, CURLINFO_NONE, NULL},
+ {"time_appconnect", VAR_APPCONNECT_TIME, CURLINFO_APPCONNECT_TIME_T,
+ writeTime},
+ {"time_connect", VAR_CONNECT_TIME, CURLINFO_CONNECT_TIME_T, writeTime},
+ {"time_namelookup", VAR_NAMELOOKUP_TIME, CURLINFO_NAMELOOKUP_TIME_T,
+ writeTime},
+ {"time_pretransfer", VAR_PRETRANSFER_TIME, CURLINFO_PRETRANSFER_TIME_T,
+ writeTime},
+ {"time_redirect", VAR_REDIRECT_TIME, CURLINFO_REDIRECT_TIME_T, writeTime},
+ {"time_starttransfer", VAR_STARTTRANSFER_TIME, CURLINFO_STARTTRANSFER_TIME_T,
+ writeTime},
+ {"time_total", VAR_TOTAL_TIME, CURLINFO_TOTAL_TIME_T, writeTime},
+ {"url", VAR_INPUT_URL, CURLINFO_NONE, writeString},
+ {"url_effective", VAR_EFFECTIVE_URL, CURLINFO_EFFECTIVE_URL, writeString},
+ {"urlnum", VAR_URLNUM, CURLINFO_NONE, writeLong},
+ {NULL, VAR_NONE, CURLINFO_NONE, NULL}
+};
+
+static int writeTime(FILE *stream, const struct writeoutvar *wovar,
+ struct per_transfer *per, CURLcode per_result,
+ bool use_json)
+{
+ bool valid = false;
+ curl_off_t us = 0;
+
+ (void)per;
+ (void)per_result;
+ DEBUGASSERT(wovar->writefunc == writeTime);
+
+ if(wovar->ci) {
+ if(!curl_easy_getinfo(per->curl, wovar->ci, &us))
+ valid = true;
+ }
+ else {
+ DEBUGASSERT(0);
+ }
+
+ if(valid) {
+ curl_off_t secs = us / 1000000;
+ us %= 1000000;
+
+ if(use_json)
+ fprintf(stream, "\"%s\":", wovar->name);
+
+ fprintf(stream, "%" CURL_FORMAT_CURL_OFF_TU
+ ".%06" CURL_FORMAT_CURL_OFF_TU, secs, us);
+ }
+ else {
+ if(use_json)
+ fprintf(stream, "\"%s\":null", wovar->name);
+ }
+
+ return 1; /* return 1 if anything was written */
+}
+
+static int writeString(FILE *stream, const struct writeoutvar *wovar,
+ struct per_transfer *per, CURLcode per_result,
+ bool use_json)
+{
+ bool valid = false;
+ const char *strinfo = NULL;
+
+ DEBUGASSERT(wovar->writefunc == writeString);
+
+ if(wovar->ci) {
+ if(wovar->ci == CURLINFO_HTTP_VERSION) {
+ long version = 0;
+ if(!curl_easy_getinfo(per->curl, CURLINFO_HTTP_VERSION, &version)) {
+ const struct httpmap *m = &http_version[0];
+ while(m->str) {
+ if(m->num == version) {
+ strinfo = m->str;
+ valid = true;
+ break;
+ }
+ m++;
+ }
+ }
+ }
+ else {
+ if(!curl_easy_getinfo(per->curl, wovar->ci, &strinfo) && strinfo)
+ valid = true;
+ }
+ }
+ else {
+ switch(wovar->id) {
+ case VAR_ERRORMSG:
+ if(per_result) {
+ strinfo = (per->errorbuffer && per->errorbuffer[0]) ?
+ per->errorbuffer : curl_easy_strerror(per_result);
+ valid = true;
+ }
+ break;
+ case VAR_EFFECTIVE_FILENAME:
+ if(per->outs.filename) {
+ strinfo = per->outs.filename;
+ valid = true;
+ }
+ break;
+ case VAR_INPUT_URL:
+ if(per->this_url) {
+ strinfo = per->this_url;
+ valid = true;
+ }
+ break;
+ default:
+ DEBUGASSERT(0);
+ break;
+ }
+ }
+
+ if(valid) {
+ DEBUGASSERT(strinfo);
+ if(use_json) {
+ fprintf(stream, "\"%s\":", wovar->name);
+ jsonWriteString(stream, strinfo, FALSE);
+ }
+ else
+ fputs(strinfo, stream);
+ }
+ else {
+ if(use_json)
+ fprintf(stream, "\"%s\":null", wovar->name);
+ }
+
+ return 1; /* return 1 if anything was written */
+}
+
+static int writeLong(FILE *stream, const struct writeoutvar *wovar,
+ struct per_transfer *per, CURLcode per_result,
+ bool use_json)
+{
+ bool valid = false;
+ long longinfo = 0;
+
+ DEBUGASSERT(wovar->writefunc == writeLong);
+
+ if(wovar->ci) {
+ if(!curl_easy_getinfo(per->curl, wovar->ci, &longinfo))
+ valid = true;
+ }
+ else {
+ switch(wovar->id) {
+ case VAR_NUM_HEADERS:
+ longinfo = per->num_headers;
+ valid = true;
+ break;
+ case VAR_EXITCODE:
+ longinfo = per_result;
+ valid = true;
+ break;
+ case VAR_URLNUM:
+ if(per->urlnum <= INT_MAX) {
+ longinfo = (long)per->urlnum;
+ valid = true;
+ }
+ break;
+ default:
+ DEBUGASSERT(0);
+ break;
+ }
+ }
+
+ if(valid) {
+ if(use_json)
+ fprintf(stream, "\"%s\":%ld", wovar->name, longinfo);
+ else {
+ if(wovar->id == VAR_HTTP_CODE || wovar->id == VAR_HTTP_CODE_PROXY)
+ fprintf(stream, "%03ld", longinfo);
+ else
+ fprintf(stream, "%ld", longinfo);
+ }
+ }
+ else {
+ if(use_json)
+ fprintf(stream, "\"%s\":null", wovar->name);
+ }
+
+ return 1; /* return 1 if anything was written */
+}
+
+static int writeOffset(FILE *stream, const struct writeoutvar *wovar,
+ struct per_transfer *per, CURLcode per_result,
+ bool use_json)
+{
+ bool valid = false;
+ curl_off_t offinfo = 0;
+
+ (void)per;
+ (void)per_result;
+ DEBUGASSERT(wovar->writefunc == writeOffset);
+
+ if(wovar->ci) {
+ if(!curl_easy_getinfo(per->curl, wovar->ci, &offinfo))
+ valid = true;
+ }
+ else {
+ DEBUGASSERT(0);
+ }
+
+ if(valid) {
+ if(use_json)
+ fprintf(stream, "\"%s\":", wovar->name);
+
+ fprintf(stream, "%" CURL_FORMAT_CURL_OFF_T, offinfo);
+ }
+ else {
+ if(use_json)
+ fprintf(stream, "\"%s\":null", wovar->name);
+ }
+
+ return 1; /* return 1 if anything was written */
+}
+
+void ourWriteOut(const char *writeinfo, struct per_transfer *per,
+ CURLcode per_result)
+{
+ FILE *stream = stdout;
+ const char *ptr = writeinfo;
+ bool done = FALSE;
+
+ while(ptr && *ptr && !done) {
+ if('%' == *ptr && ptr[1]) {
+ if('%' == ptr[1]) {
+ /* an escaped %-letter */
+ fputc('%', stream);
+ ptr += 2;
+ }
+ else {
+ /* this is meant as a variable to output */
+ char *end;
+ size_t vlen;
+ if('{' == ptr[1]) {
+ int i;
+ bool match = FALSE;
+ end = strchr(ptr, '}');
+ ptr += 2; /* pass the % and the { */
+ if(!end) {
+ fputs("%{", stream);
+ continue;
+ }
+ vlen = end - ptr;
+ for(i = 0; variables[i].name; i++) {
+ if((strlen(variables[i].name) == vlen) &&
+ curl_strnequal(ptr, variables[i].name, vlen)) {
+ match = TRUE;
+ switch(variables[i].id) {
+ case VAR_ONERROR:
+ if(per_result == CURLE_OK)
+ /* this isn't error so skip the rest */
+ done = TRUE;
+ break;
+ case VAR_STDOUT:
+ stream = stdout;
+ break;
+ case VAR_STDERR:
+ stream = stderr;
+ break;
+ case VAR_JSON:
+ ourWriteOutJSON(stream, variables, per, per_result);
+ break;
+ case VAR_HEADER_JSON:
+ headerJSON(stream, per);
+ break;
+ default:
+ (void)variables[i].writefunc(stream, &variables[i],
+ per, per_result, false);
+ break;
+ }
+ break;
+ }
+ }
+ if(!match) {
+ fprintf(stderr, "curl: unknown --write-out variable: '%.*s'\n",
+ (int)vlen, ptr);
+ }
+ ptr = end + 1; /* pass the end */
+ }
+ else if(!strncmp("header{", &ptr[1], 7)) {
+ ptr += 8;
+ end = strchr(ptr, '}');
+ if(end) {
+ char hname[256]; /* holds the longest header field name */
+ struct curl_header *header;
+ vlen = end - ptr;
+ if(vlen < sizeof(hname)) {
+ memcpy(hname, ptr, vlen);
+ hname[vlen] = 0;
+ if(CURLHE_OK == curl_easy_header(per->curl, hname, 0,
+ CURLH_HEADER, -1, &header))
+ fputs(header->value, stream);
+ }
+ ptr = end + 1;
+ }
+ else
+ fputs("%header{", stream);
+ }
+ else {
+ /* illegal syntax, then just output the characters that are used */
+ fputc('%', stream);
+ fputc(ptr[1], stream);
+ ptr += 2;
+ }
+ }
+ }
+ else if('\\' == *ptr && ptr[1]) {
+ switch(ptr[1]) {
+ case 'r':
+ fputc('\r', stream);
+ break;
+ case 'n':
+ fputc('\n', stream);
+ break;
+ case 't':
+ fputc('\t', stream);
+ break;
+ default:
+ /* unknown, just output this */
+ fputc(*ptr, stream);
+ fputc(ptr[1], stream);
+ break;
+ }
+ ptr += 2;
+ }
+ else {
+ fputc(*ptr, stream);
+ ptr++;
+ }
+ }
+}
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_writeout.h b/ap/lib/libcurl/curl-7.86.0/src/tool_writeout.h
new file mode 100755
index 0000000..c7cdb97
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_writeout.h
@@ -0,0 +1,88 @@
+#ifndef HEADER_CURL_TOOL_WRITEOUT_H
+#define HEADER_CURL_TOOL_WRITEOUT_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+#include "tool_operate.h"
+
+typedef enum {
+ VAR_NONE, /* must be the first */
+ VAR_APPCONNECT_TIME,
+ VAR_CONNECT_TIME,
+ VAR_CONTENT_TYPE,
+ VAR_EFFECTIVE_FILENAME,
+ VAR_EFFECTIVE_METHOD,
+ VAR_EFFECTIVE_URL,
+ VAR_ERRORMSG,
+ VAR_EXITCODE,
+ VAR_FTP_ENTRY_PATH,
+ VAR_HEADER_JSON,
+ VAR_HEADER_SIZE,
+ VAR_HTTP_CODE,
+ VAR_HTTP_CODE_PROXY,
+ VAR_HTTP_VERSION,
+ VAR_INPUT_URL,
+ VAR_JSON,
+ VAR_LOCAL_IP,
+ VAR_LOCAL_PORT,
+ VAR_NAMELOOKUP_TIME,
+ VAR_NUM_CONNECTS,
+ VAR_NUM_HEADERS,
+ VAR_ONERROR,
+ VAR_PRETRANSFER_TIME,
+ VAR_PRIMARY_IP,
+ VAR_PRIMARY_PORT,
+ VAR_PROXY_SSL_VERIFY_RESULT,
+ VAR_REDIRECT_COUNT,
+ VAR_REDIRECT_TIME,
+ VAR_REDIRECT_URL,
+ VAR_REFERER,
+ VAR_REQUEST_SIZE,
+ VAR_SCHEME,
+ VAR_SIZE_DOWNLOAD,
+ VAR_SIZE_UPLOAD,
+ VAR_SPEED_DOWNLOAD,
+ VAR_SPEED_UPLOAD,
+ VAR_SSL_VERIFY_RESULT,
+ VAR_STARTTRANSFER_TIME,
+ VAR_STDERR,
+ VAR_STDOUT,
+ VAR_TOTAL_TIME,
+ VAR_URLNUM,
+ VAR_NUM_OF_VARS /* must be the last */
+} writeoutid;
+
+struct writeoutvar {
+ const char *name;
+ writeoutid id;
+ CURLINFO ci;
+ int (*writefunc)(FILE *stream, const struct writeoutvar *wovar,
+ struct per_transfer *per, CURLcode per_result,
+ bool use_json);
+};
+
+void ourWriteOut(const char *writeinfo, struct per_transfer *per,
+ CURLcode per_result);
+
+#endif /* HEADER_CURL_TOOL_WRITEOUT_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_writeout_json.c b/ap/lib/libcurl/curl-7.86.0/src/tool_writeout_json.c
new file mode 100755
index 0000000..a36d60c
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_writeout_json.c
@@ -0,0 +1,145 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#define ENABLE_CURLX_PRINTF
+
+/* use our own printf() functions */
+#include "curlx.h"
+#include "tool_cfgable.h"
+#include "tool_writeout_json.h"
+#include "tool_writeout.h"
+
+void jsonWriteString(FILE *stream, const char *in, bool lowercase)
+{
+ const char *i = in;
+ const char *in_end = in + strlen(in);
+
+ fputc('\"', stream);
+ for(; i < in_end; i++) {
+ switch(*i) {
+ case '\\':
+ fputs("\\\\", stream);
+ break;
+ case '\"':
+ fputs("\\\"", stream);
+ break;
+ case '\b':
+ fputs("\\b", stream);
+ break;
+ case '\f':
+ fputs("\\f", stream);
+ break;
+ case '\n':
+ fputs("\\n", stream);
+ break;
+ case '\r':
+ fputs("\\r", stream);
+ break;
+ case '\t':
+ fputs("\\t", stream);
+ break;
+ default:
+ if (*i < 32) {
+ fprintf(stream, "u%04x", *i);
+ }
+ else {
+ char out = *i;
+ if(lowercase && (out >= 'A' && out <= 'Z'))
+ /* do not use tolower() since that's locale specific */
+ out |= ('a' - 'A');
+ fputc(out, stream);
+ }
+ break;
+ }
+ }
+ fputc('\"', stream);
+}
+
+void ourWriteOutJSON(FILE *stream, const struct writeoutvar mappings[],
+ struct per_transfer *per, CURLcode per_result)
+{
+ int i;
+
+ fputs("{", stream);
+
+ for(i = 0; mappings[i].name != NULL; i++) {
+ if(mappings[i].writefunc &&
+ mappings[i].writefunc(stream, &mappings[i], per, per_result, true))
+ fputs(",", stream);
+ }
+
+ /* The variables are sorted in alphabetical order but as a special case
+ curl_version (which is not actually a --write-out variable) is last. */
+ fprintf(stream, "\"curl_version\":");
+ jsonWriteString(stream, curl_version(), FALSE);
+ fprintf(stream, "}");
+}
+
+#ifdef _MSC_VER
+/* warning C4706: assignment within conditional expression */
+#pragma warning(disable:4706)
+#endif
+
+void headerJSON(FILE *stream, struct per_transfer *per)
+{
+ struct curl_header *header;
+ struct curl_header *prev = NULL;
+
+ fputc('{', stream);
+ while((header = curl_easy_nextheader(per->curl, CURLH_HEADER, -1,
+ prev))) {
+ if(prev)
+ fputs(",\n", stream);
+ jsonWriteString(stream, header->name, TRUE);
+ fputc(':', stream);
+ prev = header;
+ if(header->amount > 1) {
+ if(!header->index) {
+ /* act on the 0-index entry and pull the others in, then output in a
+ JSON list */
+ size_t a = header->amount;
+ size_t i = 0;
+ char *name = header->name;
+ fputc('[', stream);
+ do {
+ jsonWriteString(stream, header->value, FALSE);
+ if(++i >= a)
+ break;
+ fputc(',', stream);
+ if(curl_easy_header(per->curl, name, i, CURLH_HEADER,
+ -1, &header))
+ break;
+ } while(1);
+ }
+ fputc(']', stream);
+ }
+ else {
+ fputc('[', stream);
+ jsonWriteString(stream, header->value, FALSE);
+ fputc(']', stream);
+ }
+ }
+ fputs("\n}", stream);
+}
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_writeout_json.h b/ap/lib/libcurl/curl-7.86.0/src/tool_writeout_json.h
new file mode 100755
index 0000000..d846605
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_writeout_json.h
@@ -0,0 +1,34 @@
+#ifndef HEADER_CURL_TOOL_WRITEOUT_JSON_H
+#define HEADER_CURL_TOOL_WRITEOUT_JSON_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+#include "tool_writeout.h"
+
+void ourWriteOutJSON(FILE *stream, const struct writeoutvar mappings[],
+ struct per_transfer *per, CURLcode per_result);
+void headerJSON(FILE *stream, struct per_transfer *per);
+void jsonWriteString(FILE *stream, const char *in, bool lowercase);
+
+#endif /* HEADER_CURL_TOOL_WRITEOUT_H */
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_xattr.c b/ap/lib/libcurl/curl-7.86.0/src/tool_xattr.c
new file mode 100755
index 0000000..bd05749
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_xattr.c
@@ -0,0 +1,136 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+#include "tool_xattr.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+#ifdef USE_XATTR
+
+/* mapping table of curl metadata to extended attribute names */
+static const struct xattr_mapping {
+ const char *attr; /* name of the xattr */
+ CURLINFO info;
+} mappings[] = {
+ /* mappings proposed by
+ * https://freedesktop.org/wiki/CommonExtendedAttributes/
+ */
+ { "user.xdg.referrer.url", CURLINFO_REFERER },
+ { "user.mime_type", CURLINFO_CONTENT_TYPE },
+ { NULL, CURLINFO_NONE } /* last element, abort here */
+};
+
+/* returns a new URL that needs to be freed */
+/* @unittest: 1621 */
+#ifdef UNITTESTS
+char *stripcredentials(const char *url);
+#else
+static
+#endif
+char *stripcredentials(const char *url)
+{
+ CURLU *u;
+ CURLUcode uc;
+ char *nurl;
+ u = curl_url();
+ if(u) {
+ uc = curl_url_set(u, CURLUPART_URL, url, 0);
+ if(uc)
+ goto error;
+
+ uc = curl_url_set(u, CURLUPART_USER, NULL, 0);
+ if(uc)
+ goto error;
+
+ uc = curl_url_set(u, CURLUPART_PASSWORD, NULL, 0);
+ if(uc)
+ goto error;
+
+ uc = curl_url_get(u, CURLUPART_URL, &nurl, 0);
+ if(uc)
+ goto error;
+
+ curl_url_cleanup(u);
+
+ return nurl;
+ }
+ error:
+ curl_url_cleanup(u);
+ return NULL;
+}
+
+static int xattr(int fd,
+ const char *attr, /* name of the xattr */
+ const char *value)
+{
+ int err = 0;
+ if(value) {
+#ifdef DEBUGBUILD
+ if(getenv("CURL_FAKE_XATTR")) {
+ printf("%s => %s\n", attr, value);
+ }
+ return 0;
+#endif
+#ifdef HAVE_FSETXATTR_6
+ err = fsetxattr(fd, attr, value, strlen(value), 0, 0);
+#elif defined(HAVE_FSETXATTR_5)
+ err = fsetxattr(fd, attr, value, strlen(value), 0);
+#elif defined(__FreeBSD_version) || defined(__MidnightBSD_version)
+ {
+ ssize_t rc = extattr_set_fd(fd, EXTATTR_NAMESPACE_USER,
+ attr, value, strlen(value));
+ /* FreeBSD's extattr_set_fd returns the length of the extended
+ attribute */
+ err = (rc < 0 ? -1 : 0);
+ }
+#endif
+ }
+ return err;
+}
+/* store metadata from the curl request alongside the downloaded
+ * file using extended attributes
+ */
+int fwrite_xattr(CURL *curl, const char *url, int fd)
+{
+ int i = 0;
+ int err = 0;
+
+ /* loop through all xattr-curlinfo pairs and abort on a set error */
+ while(!err && mappings[i].attr) {
+ char *value = NULL;
+ CURLcode result = curl_easy_getinfo(curl, mappings[i].info, &value);
+ if(!result && value)
+ err = xattr(fd, mappings[i].attr, value);
+ i++;
+ }
+ if(!err) {
+ char *nurl = stripcredentials(url);
+ if(!nurl)
+ return 1;
+ err = xattr(fd, "user.xdg.origin.url", nurl);
+ curl_free(nurl);
+ }
+ return err;
+}
+#endif
diff --git a/ap/lib/libcurl/curl-7.86.0/src/tool_xattr.h b/ap/lib/libcurl/curl-7.86.0/src/tool_xattr.h
new file mode 100755
index 0000000..e85d4cd
--- /dev/null
+++ b/ap/lib/libcurl/curl-7.86.0/src/tool_xattr.h
@@ -0,0 +1,45 @@
+#ifndef HEADER_CURL_TOOL_XATTR_H
+#define HEADER_CURL_TOOL_XATTR_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * SPDX-License-Identifier: curl
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#ifdef HAVE_FSETXATTR
+# include <sys/xattr.h> /* header from libc, not from libattr */
+# define USE_XATTR
+#elif (defined(__FreeBSD_version) && (__FreeBSD_version > 500000)) || \
+ defined(__MidnightBSD_version)
+# include <sys/types.h>
+# include <sys/extattr.h>
+# define USE_XATTR
+#endif
+
+#ifdef USE_XATTR
+int fwrite_xattr(CURL *curl, const char *url, int fd);
+
+#else
+#define fwrite_xattr(a,b,c) 0
+#endif
+
+#endif /* HEADER_CURL_TOOL_XATTR_H */